//Script used for validating forms
//Prefix your required fields like so:
// r_  =>   General required field
// rn_ =>   Required, Numeric only
// e_  =>   Valid Email Address
//
//
// Call using <form name="myFormName" action="whatever.php" method="POST" onSubmit="return validateForm(this);">
// Use the following link if your submiting with something other than a button.  <a href="javascript:submitForm('myFormName');">Submit</a>


var errorColor = "#ffabab";
var normalColor = "#ffffff";
var blinkArray = new Array();

function submitForm(formName) {
    if(validateForm(document[formName])) {
        document[formName].submit();
    }
}

function validateForm(form) {
    var msg = "";
    var errorArray = new Array();
    var errors = false;
    
    //Check for required "r_"
    for(i=0;i<form.elements.length;i++){
	if(form.elements[i].name.match(/^r_(.*)$/)) {
	    if(form.elements[i].value == "") {
	        msg = msg + form.elements[i].name + "\n";
		errorArray[form.elements[i].name] = "Cannot be blank.";
		form.elements[i].style.backgroundColor = errorColor;
		errors = true;
	    } else {
	        form.elements[i].style.backgroundColor = normalColor;
	    }
	}
    }
    //Check for numeric
    for(i=0;i<form.elements.length;i++){
	if(form.elements[i].name.match(/^rn_(.*)$/)) {
	    if(form.elements[i].value == "" || form.elements[i].value.match(/^[^0-9]+$/)) {
	        msg = msg + form.elements[i].name + "\n";
		errorArray[form.elements[i].name] = "Must be a valid number.";
		form.elements[i].style.backgroundColor = errorColor;
		errors = true;
	    } else {
	        form.elements[i].style.backgroundColor = normalColor;
	    }
	}
    }
    
    //Check for emails
    for(i=0;i<form.elements.length;i++){
	if(form.elements[i].name.match(/^e_(.*)$/)) {
	    if(!form.elements[i].value.match(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]*$/)) {
	        msg = msg + form.elements[i].name + "\n";
		errorArray[form.elements[i].name] = "Invalid email address.";
		form.elements[i].style.backgroundColor = errorColor;
		errors = true;
	    } else {
	        form.elements[i].style.backgroundColor = normalColor;
	    }
	}
    }
    
    if(errors) {
        var errorMsg = "";
        //alert("Please fix the following fields:\n\n" + msg);
	for(element in errorArray) {
	    errorMsg = errorMsg + element + ": " + errorArray[element] + "\n";
	}
	//alert("Please fix the following errors:\n\n" + errorMsg);
	alert("Please fix the colored errors.");
	return false;
    } else {
        for(i=0;i<form.elements.length;i++){
	    //Replace "r_"
	    if(form.elements[i].name.match(/^r_(.*)$/)) {
		msg = msg + form.elements[i].name + " changed to " + form.elements[i].name.substr(2) + "\n";
		form.elements[i].name = form.elements[i].name.substr(2);
	    }
	    //Replace "rn_"
	    if(form.elements[i].name.match(/^rn_(.*)$/)) {
		msg = msg + form.elements[i].name + " changed to " + form.elements[i].name.substr(3) + "\n";
		form.elements[i].name = form.elements[i].name.substr(3);
	    }
	    if(form.elements[i].name.match(/^e_(.*)$/)) {
	        msg = msg + form.elements[i].name + " changed to " + form.elements[i].name.substr(2) + "\n";
		form.elements[i].name = form.elements[i].name.substr(2);
	    }
        }
	//alert(msg);
    }
    return true;
}
