/*
  ovum studio - reqlist validator v1.2

  by david benjamin and jason ayers - 2002-2006
*/

function isEmail(s) {
    return s.match(/.+@.+(\..+)+/);
}

function isLogin(s) {
    return s.match(/^[-A-Za-z0-9_]+$/);
}

function aOrAn(s) {
    switch(s.toLowerCase().charAt(0)) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return 'an';
        default:
            return 'a';
    }
}

function validateForm(formObj) {
    var imageError = "/store/images/bullet-arrow3.gif";
    var imageBlank = "/store/images/bullet-blank.gif";

    var firstError = null;
    var errorText  = "";

    var reqList = formObj.reqlist.value.split(":");

    for (var i = 0; i < reqList.length; i++) {
        var reqMatch = reqList[i].match(/(.*)\['(.*)',([^0-9]*)(.*)\]/);

        var reqName   = reqMatch[1];
        var reqLabel  = reqMatch[2];
        var reqType   = reqMatch[3];
        var reqLength = reqMatch[4];

        var reqFormElement = formObj[reqName];
        var errorImage     = document[reqName + "Label"];

        if (reqFormElement.value == "") {
            errorText += "You must enter " + aOrAn(reqLabel) + " " + reqLabel + "\n";
        } else if (reqFormElement.value.length < reqLength) {
            errorText += reqLabel + " must be at least " + reqLength + " characters\n";
        } else if (reqType == 'e' && !isEmail(reqFormElement.value)) {
            errorText += "You must enter a valid email address\n";
        } else if (reqType == 'l' && !isLogin(reqFormElement.value)) {
            errorText += "Your login name must not contain any spaces or special characters\n";
        } else {
            errorImage.src = imageBlank;
            continue;
        }

        errorImage.src = imageError;

        if (!firstError) {
            firstError = reqFormElement;
        }
    }

    if (formObj.password1) {
        if (formObj.password1.value != formObj.password2.value) {
            errorText += "You must enter two matching passwords\n";
            firstError = firstError ? firstError: formObj.password2;
            formObj.password1Label.src = imageError;
            formObj.password1.value = "";
            formObj.password2Label.src = imageError;
            formObj.password2.value = "";
        }
    }

    if (errorText) {
        alert("Before you can send this form: \n\n" + errorText);
        firstError.focus();
        return false;
    } else {
        return true;
    }
}
