function isEmailAddr(email) {
    var result = false;
    var theStr = new String(email);
    var index = theStr.indexOf("@");
    if (index > 0) {
        var pindex = theStr.indexOf(".",index);
        if ((pindex > index+1) && (theStr.length > pindex+1)) {
            result = true;
        }
    }
    return result;
}

function validRequired(formField,fieldLabel) {
    var result = true;
    if (formField.value == "") {
        alert('Please enter a value for the "' + fieldLabel +'" field.');
        if(formField.type != "hidden") {
            formField.focus();
        }
        result = false;
    }
    return result;
}

function allDigits(str) {
    return inValidCharSet(str,".0123456789");
}

function allInteger(str) {
    return inValidCharSet(str,"0123456789");
}


function inValidCharSet(str,charset) {
    var result = true;
//  Note: doesn't use regular expressions to avoid early Mac browser bugs
    for (var i=0;i<str.length;i++) {
        if (charset.indexOf(str.substr(i,1))<0) {
            result = false;
            break;
        }
    }    
    return result;
}

function validEmail(formField,fieldLabel,required) {
    var result = true;
        if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }
    if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) ) {
        alert("Please enter a complete email address in the form: yourname@yourdomain.com");
        formField.focus();
        result = false;
    }
  return result;
}

function validNum(formField,fieldLabel,required) {
    var result = true;

    if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }
    if (result) {
        if (!allDigits(formField.value)) {
            alert('Please enter a number for the "' + fieldLabel +'" field.');
            formField.focus();      
            result = false;
        }
    } 
    return result;
}


function validInt(formField,fieldLabel,required) {
    var result = true;

    if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }
    if (result) {
//        var num = parseInt(formField.value);
//        if (isNaN(num))
        if (!allInteger(formField.value)) {
            alert('Please enter an integer for the "' + fieldLabel +'" field.');
            formField.focus();
            result = false;
        }
    }
    return result;
}


function validDate(formField,fieldLabel,required) {
    var result = true;

    if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }
    if (result) {
        var elems = formField.value.split("/");
        result = (elems.length == 3); // should be three components
        
        if (result) {
            var month = parseInt(elems[0]);
            var day = parseInt(elems[1]);
            var year = parseInt(elems[2]);
            result = allDigits(elems[0]) && (month > 0) && (month < 13) && 
            	     allDigits(elems[1]) && (day > 0) && (day < 32) &&
                     allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
        }
        if (!result) {
            alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
            formField.focus();
        }
    } 
    return result;
}

