﻿function validate2(theForm) {
    var returnFlag = true;
    var arrReqFields = getElementsByClassName(theForm, "*", "required");
    for (i = 0; i < arrReqFields.length; i++) {
        if (arrReqFields[i].value == "") {
            returnFlag = false;
            if (arrReqFields[i].className.search("warning") == -1) arrReqFields[i].className += " warning";
        } else {
            arrReqFields[i].className = arrReqFields[i].className.replace(" warning", "");
        }
    }
    var arrEmailFields = getElementsByClassName(theForm, "*", "email");
    for (i = 0; i < arrEmailFields.length; i++) {
        if (arrEmailFields[i].value != "" && !validEmail(arrEmailFields[i].value)) {
            returnFlag = false;
            if (arrEmailFields[i].className.search("warning") == -1) arrEmailFields[i].className += " warning";
        } else {
            if (!(arrEmailFields[i].className.search("required") > -1 && arrEmailFields[i].value == "") || (arrEmailFields[i].className.search("required") > -1 && arrEmailFields[i].value != "")) {
                arrEmailFields[i].className = arrEmailFields[i].className.replace(" warning", "");
            }        
        }
    }
    var arrPhoneFields = getElementsByClassName(theForm, "*", "phone");
    for (i = 0; i < arrPhoneFields.length; i++) {
        if (arrPhoneFields[i].value != "" && !validPhone(arrPhoneFields[i].value)) {
            returnFlag = false;
            if (arrPhoneFields[i].className.search("warning") == -1) arrPhoneFields[i].className += " warning";
        } 
        else {
            if (!(arrPhoneFields[i].className.search("required") > -1 && arrPhoneFields[i].value == "") || (arrPhoneFields[i].className.search("required") > -1 && arrPhoneFields[i].value != "")) {
                arrPhoneFields[i].className = arrPhoneFields[i].className.replace(" warning", "");
            }
        }
    }
    return returnFlag;
}

function getElementsByClassName(oElm, strTagName, strClassName) {
    var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i = 0; i < arrElements.length; i++) {
        oElement = arrElements[i];
        if (oRegExp.test(oElement.className)) {
            arrReturnElements.push(oElement);
        }
    }
    return arrReturnElements;
}
function validEmail(strEmailAddress) {
    var returnFlag = true;

    var reEmail = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/;
    if (!reEmail.test(strEmailAddress)) {
        returnFlag = false;
    }

    return returnFlag;
}
function validPhone(strPhone) {
    var returnFlag = true;

    if (strPhone != "") {
        var rePhone = /^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$/;
        if (!rePhone.test(strPhone)) {
            returnFlag = false;
        }
    }

    return returnFlag;
}
