function Trim(TRIM_VALUE) {
    if (TRIM_VALUE.length < 1) { return ""; }
    TRIM_VALUE = RTrim(TRIM_VALUE); TRIM_VALUE = LTrim(TRIM_VALUE); if (TRIM_VALUE == "") { return ""; }
    else { return TRIM_VALUE; } 
}
function RTrim(VALUE) {
    var w_space = String.fromCharCode(32); var v_length = VALUE.length; var strTemp = ""; if (v_length < 0) { return ""; }
    var iTemp = v_length - 1; while (iTemp > -1) {
        if (VALUE.charAt(iTemp) == w_space) { }
        else { strTemp = VALUE.substring(0, iTemp + 1); break; }
        iTemp = iTemp - 1;
    }
    return strTemp;
}
function LTrim(VALUE) {
    var w_space = String.fromCharCode(32); if (v_length < 1) { return ""; }
    var v_length = VALUE.length; var strTemp = ""; var iTemp = 0; while (iTemp < v_length) {
        if (VALUE.charAt(iTemp) == w_space) { }
        else { strTemp = VALUE.substring(iTemp, v_length); break; }
        iTemp = iTemp + 1;
    }
    return strTemp;
}
var digits = "0123456789"; var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r"; var decimalPointDelimiter = "."
var phoneNumberDelimiters = "()- "; var validUSPhoneChars = digits + phoneNumberDelimiters; var validWorldPhoneChars = digits + phoneNumberDelimiters + "+"; var SSNDelimiters = "- "; var validSSNChars = digits + SSNDelimiters; var digitsInSocialSecurityNumber = 9; var digitsInUSPhoneNumber = 10; var ZIPCodeDelimiters = "-"; var ZIPCodeDelimeter = "-"
var validZIPCodeChars = digits + ZIPCodeDelimiters
var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9
var creditCardDelimiters = " "
function isOkBag(s, bag) {
    var i; var returnString = ""; for (i = 0; i < s.length; i++)
    { var c = s.charAt(i); if (bag.indexOf(c) == -1) return false; }
    return true;
}
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 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 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 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 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 reformatZIPCode(ZIPString)
{ if (ZIPString.length == 5) return ZIPString; else return (reformat(ZIPString, "", 5, "-", 4)); }
function reformatUSPhone(USPhone)
{ return (reformat(USPhone, "(", 3, ") ", 3, "-", 4)) }
function reformatSSN(SSN)
{ return (reformat(SSN, "", 3, "-", 2, "-", 4)) }
function isLeapYear(argYear) { return ((argYear % 4 == 0) && (argYear % 100 != 0)) || (argYear % 400 == 0) }
function daysInMonth(argMonth, argYear) {
    switch (Number(argMonth)) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; break; case 4: case 6: case 9: case 11: return 30; break; case 2: if (isLeapYear(argYear))
                return 29
            else
                return 28
            break; default: return 0;
    } 
}
function getDateSeparator(argDate) {
    if ((argDate.indexOf('-') > 0) && (argDate.indexOf('/') > 0))
        return ' '
    if (argDate.indexOf('-') > 0)
        return '-'
    else
        if (argDate.indexOf('/') > 0)
        return '/'
    else
        return ' '
}
function getYear(argDate) {
    var dateSep = getDateSeparator(argDate)
    if (dateSep == ' ')
        return 0
    if (argDate.split(dateSep).length == 3)
        return argDate.split(dateSep)[2]
    else
        return 0
}
function getMonth(argDate) {
    var dateSep = getDateSeparator(argDate)
    if (dateSep == ' ')
        return 0
    if (argDate.split(dateSep).length == 3)
        return argDate.split(dateSep)[0]
    else
        return 0
}
function getDay(argDate) {
    var dateSep = getDateSeparator(argDate)
    if (dateSep == ' ')
        return 0
    if (argDate.split(dateSep).length == 3)
        return argDate.split(dateSep)[1]
    else
        return 0
}
function isProperDay(argDay, argMonth, argYear) {
    if ((isWhiteSpace(argDay)) || (argDay == 0))
        return false
    if ((argDay > 0) && (argDay < daysInMonth(argMonth, argYear) + 1))
        return true
    else
        return false
}
function isProperMonth(argMonth) {
    if ((isWhiteSpace(argMonth)) || (argMonth == 0))
        return false
    if ((argMonth > 0) && (argMonth < 13))
        return true
    else
        return false
}
function isProperYear(argYear) {
    if ((isWhiteSpace(argYear)) || (argYear.toString().length > 4) || (argYear.toString().length == 3))
        return false
    switch (argYear.toString().length) {
        case 1: if (argYear >= 0 && argYear < 10)
                return true
            else
                return false
        case 2: if (argYear >= 0 && argYear < 100)
                return true
            else
                return false
        case 4: if (((argYear >= 1900) || (argYear >= 2000)) && ((argYear < 3000) || (argYear < 2000)))
                return true
            else
                return false
        default: return false
    } 
}
function isProperDate(argDate) {
    var tmpDay = getDay(argDate)
    var tmpMon = getMonth(argDate)
    var tmpYear = getYear(argDate)
    return isProperDay(tmpDay, tmpMon, tmpYear) && isProperMonth(tmpMon) && isProperYear(tmpYear)
}
function charOccurences(argString, argChar) {
    var intCt = 0
    for (var intI = 0; intI < argString.length; intI++)
        if (argString.charAt(intI) == argChar)
        intCt++
    return intCt
}
function isProperEmail(argEmail) {
    if (charOccurences(argEmail, '@') + charOccurences(argEmail, '.') < 2)
        return false
    var atPos = argEmail.indexOf('@')
    var dotPos = argEmail.indexOf('.')
    if ((atPos == 0) || (atPos == (argEmail.length - 1)))
        return false
    if ((dotPos == 0) || (dotPos == (argEmail.length - 1)))
        return false
    var checkTLD = 1; var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/; 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 matchArray = argEmail.match(emailPat); if (matchArray == null)
    { return false; }
    var user = matchArray[1]; var domain = matchArray[2]; for (i = 0; i < user.length; i++) {
        if (user.charCodeAt(i) > 127)
        { return false; } 
    }
    for (i = 0; i < domain.length; i++) {
        if (domain.charCodeAt(i) > 127)
        { return false; } 
    }
    if (user.match(userPat) == null)
    { return false; }
    var IPArray = domain.match(ipDomainPat); if (IPArray != null) {
        for (var i = 1; i <= 4; i++) {
            if (IPArray[i] > 255)
            { return false; } 
        }
        return true;
    }
    var atomPat = new RegExp("^" + atom + "$"); var domArr = domain.split("."); var len = domArr.length; for (i = 0; i < len; i++) {
        if (domArr[i].search(atomPat) == -1)
        { return false; } 
    }
    if (checkTLD && domArr[domArr.length - 1].length != 2 && domArr[domArr.length - 1].search(knownDomsPat) == -1)
    { return false; }
    if (len < 2)
    { return false; }
    return true;
}
function isProperNumber(argNumber) {
    var numberValue = Number(argNumber)
    if (isNaN(numberValue))
        return false
    else
        return !isWhiteSpace(argNumber)
}
function isProperAlphabetic(argString) {
    var alphabets = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for (var intI = 0; intI < argString.length; intI++)
        if (alphabets.indexOf(argString.charAt(intI)) == -1)
        return false
    return true
}
function objectValue(argFrm, argElem) {
    var intI
    var objElem = null
    for (intI = 0; intI < argFrm.length; intI++)
        if (argFrm[intI].name == argElem)
        objElem = argFrm[intI]
    switch (objElem.type) {
        case 'text': case 'hidden': case 'password': return objElem.value
            break; case 'select-one': if (objElem.length == 0)
                return ''
            else
                return objElem.options[objElem.selectedIndex].value
            break; case 'radio': for (intI = 0; intI < argFrm.length; intI++)
                if (argFrm[intI].name == argElem)
                if (argFrm[intI].checked)
                return argFrm[intI].value
            return ''
            break;
    } 
}
function objectFocus(argFrm, argElem) {
    var intI
    var objElem = null
    for (intI = 0; intI < argFrm.length; intI++)
        if (argFrm[intI].name == argElem)
        objElem = argFrm[intI]
    objElem.focus();
}
function isProperZip(argZip) {
    if ((argZip.length == 5) || (argZip.length == 9))
        return isProperNumber(argZip)
    if (argZip.length == 10)
        return (isProperNumber(argZip.substr(0, 5)) && isProperNumber(argZip.substr(6, 4)) & (argZip.charAt(5) == '-'))
}
function isProperUSPhone(argPhone) {
    var argPhone2 = stripCharsNotInBag(argPhone, "0123456789")
    return (isOkBag(argPhone, "01234567890 -().") && isInteger(argPhone2) && argPhone2.length == digitsInUSPhoneNumber)
}
function isProperUSSSN(argSSN) {
    var argSSN2 = stripCharsNotInBag(argSSN, "0123456789")
    return (isOkBag(argSSN, "01234567890-") && isInteger(argSSN2) && argSSN2.length == 11)
}
function actionFields(argActions) {
    this.email = (argActions.indexOf('[email]') > -1)
    this.required = (argActions.indexOf('[req]') > -1)
    this.checkDate = (argActions.indexOf('[date]') > -1)
    this.checkZip = (argActions.indexOf('[zip]') > -1)
    this.checkNumber = (argActions.indexOf('[number]') > -1)
    this.checkAlphabetic = (argActions.indexOf('[alpha]') > -1)
    this.checkUSPhone = (argActions.indexOf('[usphone]') > -1)
    this.checkUSSSN = (argActions.indexOf('[usssn]') > -1)
    if (argActions.indexOf('[len=') > -1) {
        this.checkLength = true
        var lenToCheck = ''
        var bolCont = true
        for (var intI = (argActions.indexOf('[len=') + 5); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            lenToCheck += argActions.charAt(intI)
        else
            bolCont = false
        this.lengthToCheck = lenToCheck
    }
    else
        this.checkLength = false
    if (argActions.indexOf('[blankalert=') > -1) {
        this.blankAlert = true
        var alertString = ''
        var bolCont = true
        for (var intI = (argActions.indexOf('[blankalert=') + 12); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            alertString += argActions.charAt(intI)
        else
            bolCont = false
        this.blankAlertMessage = alertString
    }
    else
        this.blankAlert = false
    if (argActions.indexOf('[invalidalert=') > -1) {
        this.invalidAlert = true
        var alertString = ''
        var bolCont = true
        for (var intI = (argActions.indexOf('[invalidalert=') + 14); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            alertString += argActions.charAt(intI)
        else
            bolCont = false
        this.invalidAlertMessage = alertString
    }
    else
        this.invalidAlert = false
    if (argActions.indexOf('[equals=') > -1) {
        this.shouldEqual = true
        var equalsString = ''
        var bolCont = true
        for (var intI = (argActions.indexOf('[equals=') + 8); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            equalsString += argActions.charAt(intI)
        else
            bolCont = false
        this.shouldEqualString = equalsString
    }
    else
        this.shouldEqual = false
}
function validateForm(argForm) {
    var frmElements = argForm.elements
    var elemName
    var elemObj
    submitonce(argForm); for (var intI = 0; intI < frmElements.length; intI++) {
        elemObj = frmElements[intI]
        elemName = elemObj.name
        if ((elemObj.type == 'hidden') && (elemName.length > 5))
            if (elemName.substr(elemName.length - 5).toLowerCase() == '_vldt') {
            var objAction = new actionFields(objectValue(frmElements, elemName))
            var actElem = elemName.substr(0, elemName.length - 5)
            if (objAction.required) {
                if (isWhiteSpace(objectValue(frmElements, actElem))) {
                    alert(objAction.blankAlert ? objAction.blankAlertMessage : actElem + ' cannot be left blank')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                } 
            }
            if ((objectValue(frmElements, actElem) > '') && (!isWhiteSpace(objectValue(frmElements, actElem)))) {
                if (objAction.checkDate)
                    if (!isProperDate(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have an invalid date')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.checkNumber)
                    if (!isProperNumber(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have an invalid number')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.checkZip)
                    if (!isProperZip(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have an invalid zipcode')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.checkAlphabetic)
                    if (!isProperAlphabetic(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.checkUSPhone)
                    if (!isProperUSPhone(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.checkUSSSN)
                    if (!isProperUSSSN(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.email)
                    if (!isProperEmail(objectValue(frmElements, actElem))) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                }
                if (objAction.checkLength)
                    if (objectValue(frmElements, actElem).length < objAction.lengthToCheck) {
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' must be at least ' + objAction.lengthToCheck + ' characters long')
                    objectFocus(frmElements, actElem); submitenabled(argForm); return false
                } 
            } 
        } 
    }
    return true
}
function submitenabled(theform) {
    if (document.all || document.getElementById) {
        for (i = 0; i < theform.length; i++) {
            var tempobj = theform.elements[i]; if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
                tempobj.disabled = false;
        } 
    } 
}
function submitonce(theform) {
    if (document.all || document.getElementById) {
        for (i = 0; i < theform.length; i++) {
            var tempobj = theform.elements[i]; if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
                tempobj.disabled = true;
        } 
    } 
}
function observeWindowLoad(handler) {
    if (window.addEventListener) { window.addEventListener('load', handler, false); }
    else if (document.addEventListener) { document.addEventListener('load', handler, false); }
    else if (window.attachEvent) { window.attachEvent('onload', handler); }
    else {
        if (typeof window.onload == 'function') { var oldload = window.onload; window.onload = function() { oldload(); handler(); } }
        else { window.onload = init; } 
    } 
}
