var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";
var phoneNumberDelimiters = "()- ";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var ZIPCodeDelimeter = "-"
var validZIPCodeChars = digits + ZIPCodeDelimiters
var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9

var decimalPointDelimiter = "."
var mPrefix = "You did not enter a value into the "
var mSuffix = " field. This is a required field. Please enter it now."
var iInteger = "This field must be an integer. Please re-enter it now."
var iSignedFloat = "This field must be an integer (eg. -3) or a float (like 0.2). Please re-enter it now."
var iAlphanumeric = "This field must be an alphanumeric string (no spaces or special characters allowed). Please re-enter it now."
var iStateCode = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."
var iZIPCode = "This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now."
var iPostalCode = "This field must be a 6 alphanumeric Canada Postal Code (like J8Z 1L2). Please reenter it now."
var iUSPhone = "This field must be a 10 digit U.S. phone number (like 415 555 1212). Please reenter it now."
var iWorldPhone = "This field must be a valid international phone number. Please reenter it now."
var iEmail = "This field must be a valid email address (like my_email@hotmail.com). Please reenter it now."
var iDay = "This field must be a day number between 1 and 31.  Please reenter it now."
var iMonth = "This field must be a month number between 1 and 12.  Please reenter it now."
var iYear = "This field must be a 4 digit year number.  Please reenter it now."
var iHour = "This field must be a 2 digit hour number (24h format).  Please reenter it now."
var iMinute = "This field must be a 2 digit minute number.  Please reenter it now."
var iDatePrefix = "The Day, Month, and Year for "
var iDateSuffix = " do not form a valid date.  Please reenter them now."
var pEntryPrompt = "Please enter a "
var sCountry = "Please select a valid country."
var sEmail1 = "Email address seems incorrect (check @ and .'s)"
var sEmail2 = "The username doesn't seem to be valid."
var sEmail3 = "Destination IP address is invalid!"
var sEmail4 = "The domain name doesn't seem to be valid."
var sEmail5 = "The address must end in a three-letter domain, or two letter country."
var sEmail6 = "This address is missing a hostname!"

if( getCookie("lang") == "fr" )
{
    mPrefix = "Vous n'avez rien entré dans le champ "
    mSuffix = ". Ce champ est obligatoire. Veuillez l'entrer maintenant."
    iInteger = "Ce champ doit être un nombre entier. Veuillez le ré-inscrire maintenant."
    iSignedFloat = "Ce champ doit contenir un entier (ex. -3) ou un décimal (comme 0.2). S.V.P. le ré-inscrire maintenant."
    iAlphanumeric = "Ce champ doit être une chaîne alphanumérique (les espaces et les caractères spéciaux ne sont pas permis.) S.V.P. le ré-inscrire maintenant."
    iStateCode = "Ce champ doit être une abbréviation d'état américain à deux caractères (comm CA pour Californie0. S.V.P. la ré-inscrire maintenant."
    iZIPCode = "Ce champ doit être un code ZIP américain à 5 ou 9 caractères (comme 94043). S.V.P. le ré-inscrire maintenant."
    iPostalCode = "Ce champ doit être un code postal canadien à 6 caractères alphanumériques (comme J8Z 1L2). S.V.P. le ré-inscrire maintenant."
    iUSPhone = "Ce champ doit être un numéro de téléphone à 10 chiffres (comme 514 555 1212). S.V.P. le ré-inscrire maintenant."
    iWorldPhone = "Ce champ doit être un numéro de téléphone international valide. S.V.P. le réinscrire maintenant."
    iEmail = "Ce champ doit être une adresse électronique valide (comme mon_courriel@hotmail.com). S.V.P. la ré-inscrire maintenant."
    iDay = "Ce champ doit être un jour entre 1 et 31. S.V.P. le réinscrire maintenant."
    iMonth = "Ce champ doit être un numéro de mois entre 1 et 12. S.V.P. le réinscrire maintenant."
    iYear = "Ce champ doit être une année à 4 chiffres. S.V.P. la réinscrire maintenant."
    iHour = "Ce champ doit être une heure (24h) à 2 chiffres. S.V.P. la réinscrire maintenant."
    iMinute = "Ce champ doit être une minute à 2 chiffres. S.V.P. la réinscrire maintenant."
    iDatePrefix = "Le Jour, Mois et Année pour "
    iDateSuffix = "ne forment pas une date valide. S.V.P. le réinscrire maintenant."
    pEmtryPrompt = "S.V.P. entrer un "
    sCountry = "S.V.P. choisissez un pays."
    sEmail1 = "Le courriel semble incorrecte. (Vérifiez les \"@\" et les \".\")"
    sEmail2 = "Le nom d'usager du courriel ne semble pas valide."
    sEmail3 = "L'adresse IP de destination du courriel n'est pas valide."
    sEmail4 = "Le nom de domaine du courriel ne semble pas valide."
    sEmail5 = "Le courriel doit se terminer avec un domaine de 3 lettres (comme .com, .net, .gov, .edu, etc.) ou un nom de pays à deux lettres (comme .ca, .uk, .ru, etc.)"
    sEmail6 = "Il manque le nom de domaine à ce courriel."
}

function getCookie (name)
{
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;

    while( i < clen )
    {
        var j = i + alen;
        if( document.cookie.substring(i, j) == arg )
        {
            if( typeof getCookieVal == 'function' )
            {
                return getCookieVal(j);
            }
            else
            {
                return PE.Cookies.Get(j);
            }
			
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if( i == 0 ) break;
    }
    return null;
}

var defaultEmptyOK = false

function makeArray(n)
{
    for( var i = 1; i <= n; i++ )
    {
        this[i] = 0
    }
    return this
}

var daysInMonth = makeArray(12);

daysInMonth[1] = 31;
daysInMonth[2] = 29;
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

var USStateCodeDelimiter = "|";
var USStateCodes = "AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP"

function isEmpty(s)
{
    return ((s == null) || (s.length == 0))
}
function isWhitespace (s)
{
    var i;
    if( isEmpty(s) ) return true;
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( whitespace.indexOf(c) == -1 ) return false;
    }
    return true;
}
function IsValid(objObject, txtType, blnAcceptEmpty, blnAcceptWhiteSpace)
{
    if( txtType == "str" )
    {
        if( !blnAcceptEmpty && isEmpty(objObject.value) )
            return false;
        var charValue;
        if( !blnAcceptWhiteSpace )
        {
            for( var i = 0; i < objObject.value.length; i++ )
            {
                charValue=objObject.value.charAt(i);
                if( charValue == ' ' || charValue == '\t' || charValue == '\'' )
                    return false;
            }
        }
    }
    else if( txtType == "int" )
    {
        if( !blnAcceptEmpty && isEmpty(objObject.value) )
            return false;
        if( isNaN(objObject.value) )
            return false;
    }
    else
    {
        return false;
    }
    return true;
}
function stripCharsInBag (s, bag)
{
    var i;
    var returnString = "";
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( bag.indexOf(c) == -1 ) returnString += c;
    }
    return returnString;
}
function stripCharsNotInBag (s, bag)
{
    var i;
    var returnString = "";
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( bag.indexOf(c) != -1 ) returnString += c;
    }
    return returnString;
}
function stripWhitespace (s)
{
    return stripCharsInBag(s, whitespace)
}
function charInString (c, s)
{
    for( i = 0; i < s.length; i++ )
    {
        if( s.charAt(i) == c ) return true;
    }
    return false
}
function stripInitialWhitespace (s)
{
    var i = 0;
    while( (i < s.length) && charInString(s.charAt(i), whitespace) )
        i++;
    return s.substring(i, s.length);
}
function isLetter (c)
{
    return (((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))
}
function isDigit (c)
{
    return ((c >= "0") && (c <= "9"))
}
function isLetterOrDigit (c)
{
    return (isLetter(c) || isDigit(c))
}
function isInteger (s)
{
    var i;
    if( isEmpty(s) )
        if( isInteger.arguments.length == 1 ) return defaultEmptyOK;
        else return (isInteger.arguments[1] == true);
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( !isDigit(c) ) return false;
    }
    return true;
}
function checkInteger (theField, emptyOK)
{
    if( checkInteger.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isInteger(theField.value, false) )
        return warnInvalid(theField, iInteger);
    else return true;
}
function isSignedInteger (s)
{
    if( isEmpty(s) )
        if( isSignedInteger.arguments.length == 1 ) return defaultEmptyOK;
        else return (isSignedInteger.arguments[1] == true);
    else
    {
        var startPos = 0;
        var secondArg = defaultEmptyOK;
        if( isSignedInteger.arguments.length > 1 )
            secondArg = isSignedInteger.arguments[1];
        if( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
            startPos = 1;
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}
function isPositiveInteger (s)
{
    var secondArg = defaultEmptyOK;
    if( isPositiveInteger.arguments.length > 1 )
        secondArg = isPositiveInteger.arguments[1];
    return (isSignedInteger(s, secondArg)
            && ((isEmpty(s) && secondArg) || (parseInt(s) > 0)));
}
function isNonnegativeInteger (s)
{
    var secondArg = defaultEmptyOK;
    if( isNonnegativeInteger.arguments.length > 1 )
        secondArg = isNonnegativeInteger.arguments[1];
    return (isSignedInteger(s, secondArg)
            && ((isEmpty(s) && secondArg) || (parseInt(s) >= 0)));
}
function isNegativeInteger (s)
{
    var secondArg = defaultEmptyOK;
    if( isNegativeInteger.arguments.length > 1 )
        secondArg = isNegativeInteger.arguments[1];
    return (isSignedInteger(s, secondArg)
            && ((isEmpty(s) && secondArg) || (parseInt(s) < 0)));
}
function isNonpositiveInteger (s)
{
    var secondArg = defaultEmptyOK;
    if( isNonpositiveInteger.arguments.length > 1 )
        secondArg = isNonpositiveInteger.arguments[1];
    return (isSignedInteger(s, secondArg)
            && ((isEmpty(s) && secondArg) || (parseInt(s) <= 0)));
}
function isFloat (s)
{
    var i;
    var seenDecimalPoint = false;
    if( isEmpty(s) )
        if( isFloat.arguments.length == 1 ) return defaultEmptyOK;
        else return (isFloat.arguments[1] == true);
    if( s == decimalPointDelimiter ) return false;
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( (c == decimalPointDelimiter) && !seenDecimalPoint ) seenDecimalPoint = true;
        else if( !isDigit(c) ) return false;
    }
    return true;
}
function isSignedFloat (s)
{
    if( isEmpty(s) )
        if( isSignedFloat.arguments.length == 1 ) return defaultEmptyOK;
        else return (isSignedFloat.arguments[1] == true);
    else
    {
        var startPos = 0;
        var secondArg = defaultEmptyOK;
        if( isSignedFloat.arguments.length > 1 )
            secondArg = isSignedFloat.arguments[1];
        if( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
            startPos = 1;
        return (isFloat(s.substring(startPos, s.length), secondArg))
    }
}
function checkSignedFloat (theField, emptyOK)
{
    if( checkSignedFloat.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isSignedFloat(theField.value, false) )
        return warnInvalid(theField, iSignedFloat);
    else return true;
}
function isAlphabetic (s)
{
    var i;
    if( isEmpty(s) )
        if( isAlphabetic.arguments.length == 1 ) return defaultEmptyOK;
        else return (isAlphabetic.arguments[1] == true);
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( !isLetter(c) )
            return false;
    }
    return true;
}
function isAlphanumeric (s)
{
    var i;
    if( isEmpty(s) )
        if( isAlphanumeric.arguments.length == 1 ) return defaultEmptyOK;
        else return (isAlphanumeric.arguments[1] == true);
    for( i = 0; i < s.length; i++ )
    {
        var c = s.charAt(i);
        if( ! (isLetter(c) || isDigit(c)) )
            return false;
    }
    return true;
}
function checkAlphanumeric (theField, emptyOK)
{
    if( checkAlphanumeric.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isAlphanumeric(theField.value, false) )
        return warnInvalid(theField, iAlphanumeric);
    else return true;
}
function reformat (s)
{
    var arg;
    var sPos = 0;
    var resultString = "";
    for( var i = 1; i < reformat.arguments.length; i++ )
    {
        arg = reformat.arguments[i];
        if( i % 2 == 1 ) resultString += arg;
        else
        {
            resultString += s.substring(sPos, sPos + arg);
            sPos += arg;
        }
    }
    return resultString;
}
function isUSPhoneNumber (s)
{
    if( isEmpty(s) )
        if( isUSPhoneNumber.arguments.length == 1 ) return defaultEmptyOK;
        else return (isUSPhoneNumber.arguments[1] == true);
    return (isInteger(s) && s.length == digitsInUSPhoneNumber)
}
function isInternationalPhoneNumber (s)
{
    if( isEmpty(s) )
        if( isInternationalPhoneNumber.arguments.length == 1 ) return defaultEmptyOK;
        else return (isInternationalPhoneNumber.arguments[1] == true);
    return (isPositiveInteger(s))
}
function isPostalCode (s)
{
    if( isEmpty(s) )
        if( isPostalCode.arguments.length == 1 ) return defaultEmptyOK;
        else return (isPostalCode.arguments[1] == true);
    if( s.length != 6 ) return false;

    return (isLetter(s.charAt(0)) &&
            isDigit(s.charAt(1)) &&
            isLetter(s.charAt(2)) &&
            isDigit(s.charAt(3)) &&
            isLetter(s.charAt(4)) &&
            isDigit(s.charAt(5))
    );
}
function isZIPCode (s)
{
    if( isEmpty(s) )
        if( isZIPCode.arguments.length == 1 ) return defaultEmptyOK;
        else return (isZIPCode.arguments[1] == true);
    return (isInteger(s) &&
            ((s.length == digitsInZIPCode1) ||
             (s.length == digitsInZIPCode2)))
}
function isStateCode(s)
{
    if( isEmpty(s) )
        if( isStateCode.arguments.length == 1 ) return defaultEmptyOK;
        else return (isStateCode.arguments[1] == true);
    return ((USStateCodes.indexOf(s) != -1) &&
            (s.indexOf(USStateCodeDelimiter) == -1))
}
function isEmail (s)
{
    if( isEmpty(s) )
        if( isEmail.arguments.length == 1 ) return defaultEmptyOK;
        else return (isEmail.arguments[1] == true);

    if( isWhitespace(s) ) return false;
    var i = 1;
    var sLength = s.length;
    while( (i < sLength) && (s.charAt(i) != "@") )
    {
        i++
    }
    if( (i >= sLength) || (s.charAt(i) != "@") ) return false;
    else i += 2;
    while( (i < sLength) && (s.charAt(i) != ".") )
    {
        i++
    }
    if( (i >= sLength - 1) || (s.charAt(i) != ".") ) return false;
    else return true;
}
function isYear (s)
{
    if( isEmpty(s) )
        if( isYear.arguments.length == 1 ) return defaultEmptyOK;
        else return (isYear.arguments[1] == true);
    if( !isNonnegativeInteger(s) ) return false;
    return (s.length == 4);
}
function isIntegerInRange (s, a, b)
{
    if( isEmpty(s) )
        if( isIntegerInRange.arguments.length == 1 ) return defaultEmptyOK;
        else return (isIntegerInRange.arguments[1] == true);

    if( !isInteger(s, false) ) return false;
    var num = parseInt(s);
    return ((num >= a) && (num <= b));
}
function isMonth (s)
{
    if( isEmpty(s) )
        if( isMonth.arguments.length == 1 ) return defaultEmptyOK;
        else return (isMonth.arguments[1] == true);
    if( s.length == 2 && s.substring(0, 1) == "0" )
    {
        s = s.substring(1, 2);
    }
    return isIntegerInRange(s, 1, 12);
}
function isDay (s)
{
    if( isEmpty(s) )
        if( isDay.arguments.length == 1 ) return defaultEmptyOK;
        else return (isDay.arguments[1] == true);
    return isIntegerInRange(s, 1, 31);
}
function isHour (s)
{
    if( isEmpty(s) )
        if( isHour.arguments.length == 1 ) return defaultEmptyOK;
        else return (isHour.arguments[1] == true);
    return isIntegerInRange(s, 0, 23);
}
function isMinute (s)
{
    if( isEmpty(s) )
        if( isMinute.arguments.length == 1 ) return defaultEmptyOK;
        else return (isMinute.arguments[1] == true);
    return isIntegerInRange(s, 0, 59);
}
function daysInFebruary (year)
{
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function isDate (year, month, day)
{
    if( ! (isYear(year, false) && isMonth(month, false) && isDay(day, false)) ) return false;
    var intYear = parseInt(year);
    var intMonth = parseInt(month);
    var intDay = parseInt(day);
    if( intDay > daysInMonth[intMonth] ) return false;
    if( (intMonth == 2) && (intDay > daysInFebruary(intYear)) ) return false;
    return true;
}
function prompt (s)
{
    window.status = s
}
function promptEntry (s)
{
    window.status = pEntryPrompt + s
}
function warnEmpty (theField, s)
{
    alert(mPrefix + s + mSuffix)
    theField.focus()
    theField.select()
    return false
}
function warnInvalid (theField, s)
{
    alert(s)
    theField.focus()
    theField.select()
    return false
}
function checkString (theField, s, emptyOK)
{
    if( checkString.arguments.length == 2 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( isWhitespace(theField.value) )
        return warnEmpty(theField, s);
    else return true;
}
function checkStateCode (theField, emptyOK)
{
    if( checkStateCode.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    else
    {
        theField.value = theField.value.toUpperCase();
        if( !isStateCode(theField.value, false) )
            return warnInvalid(theField, iStateCode);
        else return true;
    }
}
function reformatZIPCode (ZIPString)
{
    if( ZIPString.length == 5 ) return ZIPString;
    else return (reformat(ZIPString, "", 5, "-", 4));
}
function checkZIPCode (theField, emptyOK)
{
    if( checkZIPCode.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    else
    {
        var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
        if( !isZIPCode(normalizedZIP, false) )
            return warnInvalid(theField, iZIPCode);
        else
        {
            theField.value = reformatZIPCode(normalizedZIP)
            return true;
        }
    }
}
function reformatPostalCode (ZIPString)
{
    var resultString = "";
    var i;
    for( i = 0; i < ZIPString.length; i++ )
    {
        var c = ZIPString.charAt(i);
        if( isDigit(c) )
            resultString = resultString + c;
        else
            resultString = resultString + c.toUpperCase();
        if( i == 2 )
            resultString = resultString + ' ';
    }
    return resultString;
}
function checkPostalCode (theField, emptyOK)
{
    if( checkPostalCode.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    else
    {
        var normalizedZIP = stripCharsInBag(theField.value, whitespace);
        if( !isPostalCode(normalizedZIP, false) )
            return warnInvalid(theField, iPostalCode);
        else
        {
            theField.value = reformatPostalCode(normalizedZIP)
            return true;
        }
    }
}
function reformatUSPhone (USPhone)
{
    return (reformat(USPhone, "(", 3, ") ", 3, "-", 4))
}
function checkUSPhone (theField, emptyOK)
{
    if( checkUSPhone.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    else
    {
        var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
        if( !isUSPhoneNumber(normalizedPhone, false) )
            return warnInvalid(theField, iUSPhone);
        else
        {
            theField.value = reformatUSPhone(normalizedPhone)
            return true;
        }
    }
}
function checkInternationalPhone (theField, emptyOK)
{
    if( checkInternationalPhone.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    else
    {
        if( !isInternationalPhoneNumber(theField.value, false) )
            return warnInvalid(theField, iWorldPhone);
        else return true;
    }
}
function emailCheck (emailStr)
{
    var emailPat = /^(.+)@(.+)$/
    var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars = "\[^\\s" + specialChars + "\]"
    var quotedUser = "(\"[^\"]*\")"
    var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom = validChars + '+'
    var word = "(" + atom + "|" + quotedUser + ")"
    var userPat = new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$")
    var newDomains = new RegExp("aero|coop|info|museum|name");

    var matchArray = emailStr.match(emailPat)
    if( matchArray == null )
    {
        alert(sEmail1)
        return false
    }
    var user = matchArray[1]
    var domain = matchArray[2]
    if( user.match(userPat) == null )
    {
        alert(sEmail2)
        return false
    }
    var IPArray = domain.match(ipDomainPat)
    if( IPArray != null )
    {
        for( var i = 1;i <= 4;i++ )
        {
            if( IPArray[i] > 255 )
            {
                alert(sEmail3)
                return false
            }
        }
        return true
    }
    var domainArray = domain.match(domainPat)
    if( domainArray == null )
    {
        alert(sEmail4)
        return false
    }
    var atomPat = new RegExp(atom, "g")
    var domArr = domain.match(atomPat)
    var len = domArr.length

    var matchNewDomains = domArr[domArr.length - 1].match(newDomains);
    if( (domArr[domArr.length - 1].length < 2 ||
         domArr[domArr.length - 1].length > 3) &&
         (matchNewDomains == null) )
    {
        alert(sEmail5)
        return false
    }
    if( len < 2 )
    {
        alert(sEmail6)
        return false
    }

    return true;
}

function checkEmail (theField, emptyOK)
{
    if( checkEmail.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    return emailCheck(theField.value);
}
function checkYear (theField, emptyOK)
{
    if( checkYear.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isYear(theField.value, false) )
        return warnInvalid(theField, iYear);
    else return true;
}
function checkMonth (theField, emptyOK)
{
    if( checkMonth.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isMonth(theField.value, false) )
        return warnInvalid(theField, iMonth);
    else return true;
}
function checkDay (theField, emptyOK)
{
    if( checkDay.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isDay(theField.value, false) )
        return warnInvalid(theField, iDay);
    else return true;
}
function checkHour (theField, emptyOK)
{
    if( checkHour.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isHour(theField.value, false) )
        return warnInvalid(theField, iHour);
    else return true;
}
function checkMinute (theField, emptyOK)
{
    if( checkMinute.arguments.length == 1 ) emptyOK = defaultEmptyOK;
    if( (emptyOK == true) && (isEmpty(theField.value)) ) return true;
    if( !isMinute(theField.value, false) )
        return warnInvalid(theField, iMinute);
    else return true;
}
function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
{
    if( checkDate.arguments.length == 4 ) OKtoOmitDay = false;
    if( !isYear(yearField.value) ) return warnInvalid(yearField, iYear);
    if( !isMonth(monthField.value) ) return warnInvalid(monthField, iMonth);
    if( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
    else if( !isDay(dayField.value) )
        return warnInvalid(dayField, iDay);
    if( isDate(yearField.value, monthField.value, dayField.value) )
        return true;
    alert(iDatePrefix + labelString + iDateSuffix)
    return false
}
function checkValidCountry (theField)
{
    if( (theField.value == "M-") || (theField.value == "O-") ) return warnInvalid2(theField, sCountry);
    return true;
}

function warnInvalid2 (theField, s)
{
    alert(s)
    theField.focus()
    return false
}
function getRadioButtonValue (radio)
{
    for( var i = 0; i < radio.length; i++ )
    {
        if( radio[i].checked )
        {
            break
        }
    }
    return radio[i].value
}
function getRadioButtonIndex (radio)
{
    for( var i = 0; i < radio.length; i++ )
    {
        if( radio[i].checked )
        {
            break
        }
    }
    return i--
}
function getSelectBoxIndex (select)
{
    for( var i = 0; i < select.length; i++ )
    {
        if( select.options[i].selected )
        {
            break
        }
    }
    return i--
}

function checkAll(field)
{
    for( i = 0; i < field.length; i++ )
        field[i].checked = true ;
}

function uncheckAll(field)
{
    for( i = 0; i < field.length; i++ )
        field[i].checked = false ;
}

function selectAll(field)
{
    for( i = 0; i < (field.length); i++ )
        field.options[i].selected = true;
}
function unselectAll(field)
{
    for( i = 0; i < (field.length); i++ )
        field.options[i].selected = false;
}
