/***********************************************************************/
//  Really Basic Form Validation
/***********************************************************************/
FormIDsubstring = "MyMembershipID";
function hasClass(myNode, mycssClass) {

    if (myNode.className.indexOf(" ") >= 0) {
        var classes = myNode.className.split(" ");
        for (var j = 0; j < classes.length; j++) {
            if (classes[j] == mycssClass) {
                return true;
            }
        }
    }
    else {
        if (myNode.className == mycssClass) {
            return true;
        }
    }
    return false;
}

function validateForm(myForm, RequiredClass, IDsubstring, startID) {
    var email = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
    var typetext = /[a-zA-Z][a-zA-Z'][a-zA-Z0-9']*/;
    var typepassword = /[a-zA-Z0-9&!$@*]{6,10}/;
    var typephone = /((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/
    var emailfield = /.*Email.*/;
    var phonefield = /.*[Pp]hone.*/;
    var invalid_string = "";
    var form_focus = null;
    var RegExpID = new RegExp(IDsubstring);

    var StartElementID = startID || '';

    var passwordElements = document.getElementsByType("input", "password", StartElementID);
    var InputElements = myForm.getElementsByTagName("input");
    var SelectElements = myForm.getElementsByTagName("select");
    var TextareaElements = myForm.getElementsByTagName("textarea");

    for (var i = 0; i < InputElements.length; i++) {
        var ElementName = InputElements[i].id.substr(InputElements[i].id.search(RegExpID) + IDsubstring.length);
        if (hasClass(InputElements[i], RequiredClass)) {
            if (emailfield.test(ElementName)) {
                if (!email.test(InputElements[i].value)) {
                    invalid_string += "You entered an invalid " + ElementName.replace(/_/g, " ") + "\n";
                    if (form_focus == null)
                        form_focus = InputElements[i];
                }
            }
            else {
                if (phonefield.test(ElementName)) {
                    if (!typephone.test(InputElements[i].value)) {
                        invalid_string += "You entered an invalid " + ElementName.replace(/_/g, " ") + "\n";
                        if (form_focus == null)
                            form_focus = InputElements[i];
                    }
                }
                else {
                    if ((InputElements[i].type == "text") && (!typetext.test(InputElements[i].value))) {
                        invalid_string += "Invalid " + ElementName.replace(/_/g, " ") + " -- text fields must start with 2 letters.\n";
                        if (form_focus == null)
                            form_focus = InputElements[i];
                    }
                    if ((InputElements[i].type == "password") && (!typepassword.test(InputElements[i].value))) {
                        invalid_string += "Invalid " + ElementName.replace(/_/g, " ") + " -- passwords fields must contain 6-10 letters, numbers, or &!$@*\n";
                        if (form_focus == null)
                            form_focus = InputElements[i];
                    }
                }
            }
        }
    }

    for (var j = 0; j < SelectElements.length; j++) {
        if (hasClass(SelectElements[j], RequiredClass)) {
            if (SelectElements[j].selectedIndex == 0) {
                var ElementName = SelectElements[j].id.substr(SelectElements[j].id.search(RegExpID) + IDsubstring.length);
                invalid_string += "You did not select an option for " + ElementName.replace(/_/g, " ") + "\n";
                if (form_focus == null)
                    form_focus = SelectElements[j];
            }
        }
    }

    for (var k = 0; k < passwordElements.length; k++) {
        if (k != 0) {
            if (passwordElements[k].value != passwordElements[k - 1].value) {
                invalid_string += "Password and Confirmation Password were not the same\n";
                if (form_focus == null) {
                    form_focus = passwordElements[k - 1];
                }
                break;
            }
        }
    }

    if (invalid_string != "") {
        alert(invalid_string);
        if (form_focus.focus())
            form_focus.focus();
        return false;
    }
    else {
        myForm.submit();
        //    alert("Form Submitted");
    }
} 

