/***************************************************************
# Class Name:  JS - Client side validation
# Date:        March 16, 2007
# Description: This js file handles client side validation.
# Author : Brian Kovach
****************************************************************/
/* *
 * Call Method:
 * 		validate(formname); --> Call validate function and pass the name of the form you would like to validate
 * 		Fields to be validated should be named --> required[name]
 * 		Required start --> <span class=\"img_required\">&nbsp;</span>
 * 		Error Message --> <span class=\"img_error errorMssg none\" id=\"errorMssg\"></span>
 * 
 * Validation Types:
 * 		isEmpty(field);
 * 		isNumeric(field);
 * 		isAlphabet(field);
 * 		isAlphanumeric(field);
 * 		madeSelection(field);  -> For selection boxes
 * 		emailValidator(field);
 * 		radioValidator(field);
 */

var submitState = 0;
var formName;

function validate(formname){
	formName = formname;
	var state = 0;
	var emailstate = 0;
	var wucistate = 0;
	var tmp  = eval("document."+formname);
	var tmp2 = eval("document.getElementById('"+formname+"')");
	for (i=0; i<tmp.length; i++){
		if(tmp.elements[i].tagName != "FIELDSET"){
			if (tmp.elements[i].name.substr(0, 9) == "required["){		
				switch (tmp.elements[i].type){
					case "select-one":
						if (!madeSelection(tmp.elements[i]))state = 1;
						break;
					case "text":
						if (!isEmpty(tmp.elements[i]))state = 1;
						if (tmp.elements[i].name == "required[email]"){
							if (!emailValidator(tmp.elements[i])) emailstate = 1;
						}
 				case "textarea":
 					if (!isEmpty(tmp.elements[i]))state = 1;
 					break;
						break;
					case "password":
						if (!isEmpty(tmp.elements[i]))state = 1;
						break;
				}
			} else if (tmp.elements[i].name == "email" && tmp.elements[i].value != ""){
				if (!emailValidator(tmp.elements[i])) emailstate = 1;
			} else if (tmp.elements[i].name == "wuci" && tmp.elements[i].value != ""){
				if (!wuciValidator(tmp.elements[i])) wucistate = 1;
			}	
		}
	}
	
	if (state == 1){
		//document.getElementById(formname+"_MssgResponse").className = "img_error errorMssg";
		//document.getElementById(formname+"_MssgResponse").innerHTML = "Not all required fields have values, Please Verify!";
		alert('Not all required fields have values, Please Verify.');
		return false;
	} else if (emailstate == 1){
		//document.getElementById(formname+"_MssgResponse").className = "img_error errorMssg";
		//document.getElementById(formname+"_MssgResponse").innerHTML = "Email address is not valid, please verify format! (example@example.com)";
		alert('Email address is not valid, please verify format. (example@example.com)');
		return false;
	} else if (wucistate == 1) {
		//document.getElementById(formname+"_MssgResponse").className = "img_error errorMssg";
		//document.getElementById(formname+"_MssgResponse").innerHTML = "WUCI is not valid, please verify format! (###-##-####)";
		alert('WUCI is not valid, please verify format. (###-##-####)');
	} else {
		return true;
	}
}

function MessageResponse(code, mssg, state){
	//the following will set the className of the response	
	if (code != 0){
		switch (code){
			case 1: //default success message
				//document.getElementById(formName+"_MssgResponse").className = "img_success successMssg";
				//document.getElementById(formName+"_MssgResponse").innerHTML = "Success! Your request has been submited.";
				alert('Success. Your request has been submited.');
				break;
			case 2: //connection to server error
				//document.getElementById(formName+"_MssgResponse").className = "img_error errorMssg";
				//document.getElementById(formName+"_MssgResponse").innerHTML = "Error! Failed to connect to server.";
    alert('Error. Failed to connect to server.');			
			default:
				break;
		}
	} else {
		if (state == "error"){
			//document.getElementById(formName+"_MssgResponse").className = "img_error errorMssg";
		} else {
			//document.getElementById(formName+"_MssgResponse").className = "img_success successMssg";
		}		
		//document.getElementById(formName+"_MssgResponse").innerHTML = mssg;
	}
	submitState = 1;
}

/*The following functions came from http://www.tizag.com/javascriptT/javascriptform.php?*/

/*Empty Validation*/
function isEmpty(field){
	if(field.value != ""){
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names
		return true;
	} else {
		field.className += " error";
		return false;
	}
}

/*Numeric Validation*/
function isNumeric(field){
	var numericExpression = /^[0-9]+$/;
	if(field.value.match(numericExpression)){
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names
		return true;
	}
	else {
		field.className += " error";
		return false;
	}
}

/*Alpha Validation*/
function isAlphabet(field){
	var alphaExp = /^[a-zA-Z]+$/;
	if(field.value.match(alphaExp)){
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names		
		return true;
	}	else {
		field.className += " error";
		return false;
	}
}

/*Alphanumeric Validation*/
function isAlphanumeric(field){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(field.value.match(alphaExp)){
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names		
		return true;
	}	else {
		field.className += " error";
		return false;
	}
}

/*Selection Validation*/
function madeSelection(field){
	if(field.value == ""){
		field.className += " error";	
		return false;
	}	else {
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names
				
		return true;
	}
}

/*Email Validation*/
function emailValidator(field){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(field.value.match(emailExp)){
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names		
		return true;
	}	else {
		field.className += " error";
		return false;
	}
}

/*End functions from http://www.tizag.com/javascriptT/javascriptform.php?*/

function wuciValidator(field){
	var wuci = /^\d{3}-\d{2}-\d{4}$/;
	if(field.value == "###-##-####"){
		field.className += " error";
		return false;
	}
	if(field.value.match(wuci)){
		return true;
	} else {
		var classTmp = field.className; //retrieve the class name
		var tmp = new Array();
		tmp = classTmp.split('error'); //remove the class error
		field.className = tmp[0]; //return remaining class names	
		return false;
	}
}

function radioValidator(field, alertmsg){
	for (i=0; i<field.length;i++){
		if(field[i].checked){
			var classTmp = field.className; //retrieve the class name
			var tmp = new Array();
			tmp = classTmp.split('error'); //remove the class error
			field.className = tmp[0]; //return remaining class names				
			return true;
		}
	}
	field.className += " error";
	return false;
}

//The following is set on the form to listen for the form to be submitted to reset the fields and alert
function resetForm(formname, action){
	var tmp  = eval("document."+formname);
	if (submitState == 1){
		if (action == "yes"){ tmp.reset(); }
		document.getElementById(formname+"_MssgResponse").className = "none";
		submitState = 0;
	}
}

