﻿
function isValidPage1()
{
    var isValid = false;
    isValid = formContainsNoProfanity();
    if (isValid) isValid = isSafeInput();
    return isValid;
}
function isValidPage2()
{
    var isValid = false;
    isValid = formContainsNoProfanity();
    if (isValid) isValid = isSafeInput();
    return isValid;
}


var selectedPrograms = new Array(0,0,0,0);
   
function programSelectionChanged(index,value)
{
    if (value != null && value != '')
    {
        selectedPrograms[index] = 1;
    }
    else
    {
        selectedPrograms[index] = 0;
    }
}
   
function isProgramSelected(sender, args)
{
    for (var i = 0; i < selectedPrograms.length; i++)
    {
        if (selectedPrograms[i] == 1) 
        {
            args.IsValid = true;
            return;
        }
    }
    args.IsValid = false;
}
function isValidFirstName(sender, args)
{
    args.IsValid = isValidProperNoun(args.Value);
}
function isValidLastName(sender, args)
{
    args.IsValid = isValidProperNoun(args.Value);
}
function isValidProperNoun(fieldValue)
{
    var isValid = true;
    fieldValue = fieldValue.toLowerCase();
    if (isValid)
    {
        var searchConsecutiveVowels = /([aeiouy]{4,})/;           
        if (searchConsecutiveVowels.test(fieldValue))
        {
            isValid = false;
        }
    }
    if (isValid)
    {
        var searchConsecutiveConsonants = /([bcdfghjklmnpqrstvwxz]{5,})/;
        if (searchConsecutiveConsonants.test(fieldValue))
        {
            isValid = false;
        }
    }
    if (isValid)
    {
        var searchVowels = /([aeiouy])/;
        if (!searchVowels.test(fieldValue))
        {
            if (fieldValue == 'ng')
            {
                isValid = true;
            }
            else
            {
                isValid = false;
            }
        }
    }
    return isValid;
}
profanityList =
    /fuck|\bass\b|\bfag\b|\bsex\b|\bshit\b|\bsuck\b|bitch|cunt|dildo|faggot|jism|jiz|slut|twat|\bclit\b|\bdamn\b|\brimmer\b|\bscum\b|\btit\b|ahole|anal|anus|arse|asshole|asswipe|bastard|bender|bollock|boner|breast|bugger|bullshit|bumboy|buttock|cock|cocksucker|coon|cracker|crap|cumsucker|cunilingus|douchebag|dyke|erection|excrement|fatass|feces|fellatio|foreskin|gaylord|goddamn|homosexual|honky|intercourse|jackass|jerk|knobcheese|lesbian|lesbo|masturbate|masturbation|minge|minger|munter|nigga|nigger|nipple|orgasm|penile|penis|phallic|phallus|piss|prick|prostitute|pussy|schmuck|scumbag|semen|sexual|sexy|skank|smegma|sperm|splooge|spooge|spunk|taint|testicle|tool|tosser|urinate|urine|vagina|vulva|wanker|whore|chinga\s*tu\s*madre|booty|\bblow\b|hotsex|poop/;

function formContainsNoProfanity() {
        var isClean = true;
        var forms = document.getElementsByTagName('form');
        for (var x = 0; x < forms.length; x++) {
            var inputFields = forms[x].getElementsByTagName('input');
            for (var y = 0; y < inputFields.length; y++) {
                var elementType = inputFields[y].type;
                if (elementType == 'text') {
                    var blah = inputFields[y].value;
                    if (profanityList.test(inputFields[y].value.toLowerCase())) {
                        isClean = false;
                        alert('Profanity is not allowed. Please review your entries. Thank you.');
                        if (inputFields[y].focus) inputFields[y].focus();
                        break;
                    }
                }
            }
            if (!isClean) break;
        }
        return isClean;
    }
function isSafeInput() {
        var isSafe = true;
        $("input:text").each(function() {
            var value = $(this).val();
            var unsafe = /\<|\>/
            if (unsafe.test(value)) {
                alert("Special characters such as '<' and '>' are not allowed.'");
                if (this.focus) this.focus();
                isSafe = false;
            }
            return isSafe;
        });
        return isSafe;
    }