var new_fieldname = ""
function validateForm(form)
{
	//If you would like to use this script please do not remove the next 4 lines
	//script_name = "Form Validator ver 2.0"
	//action =  "Checks Required, Integer and Date (Added Numeric, Email, Money)"
	//copyright = "(c) 1998 - Art Lubin / Artswork"
	//email = "perflunk@aol.com"
	//additional = "modified 2004, Eric Cross"
	var x = form.elements.length
	var message = ""
	var more_message = ""
	var showmsg = "no"
	x = x - 1
	for (var i = 0; i <= x; i++) {
		var messenger = form.elements[i].name
		messenger = messenger.substring(0, 2)
		var fieldname = form.elements[i].name
		fieldname = fieldname.substring(2)
		{
			if (messenger == "r_") { //Required Check
				more_message = r_check(form,x,fieldname,i)
			}
			else if (messenger == "i_") { //Integer Check
				more_message = i_check(form,x,fieldname,i)
			}
			else if (messenger == "d_") { //Date Check
				more_message = d_check(form,x,fieldname,i)
			}
			else if (messenger == "n_") { //Numeric Check
				more_message = n_check(form,x,fieldname,i)
			}
			else if (messenger == "e_") { //Email Check
				more_message = e_check(form,x,fieldname,i)
			}			
			else if (messenger == "m_") { //Money Check
				more_message = m_check(form,x,fieldname,i)
			}			
			if (more_message != "") {
				if (message == "") {
					message = more_message
					more_message=""
				}
				else {
			        message = message + "\n" + more_message
					more_message=""
				}
	        }
			if (message > "") {
				showmsg = "yes"
			}													
		}	
	}
	
	//This code will prevent a submit if data is incorrect
	if (showmsg == "yes") {
		alert("The following form field(s) were incomplete or incorrect:\n\n" + message + "\n\n Please complete or correct the form and submit again.")
		return false;
	}
	else {
		if(form.JSConfirmationText.value != ''){
			var agree=confirm(form.JSConfirmationText.value);
			if (!agree) {
				return false ;
			}
		}
		return true;
	}
		
}
//End Function

//Required Check
function r_check(form,x,fieldname,i) {
	var msg_addition = ""
	new_fieldname = fieldname
	for (var y = 0; y <= x; y++) {
		if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == true) {
			msg_addition = ""
			break
		}
		else if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == false) {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
		}
		else if (form.elements[y].type == "select-one") {
			var l = form.elements[y].selectedIndex
			if (form.elements[y].name == fieldname && form.elements[y].options[l].value != "") {
				msg_addition = ""
				break
			}
			else if (form.elements[y].name == fieldname && form.elements[y].options[l].value == "") {
				msg_addition = form.elements[i].value;
				HilightItem(form.elements[y],'#B60008','#FFFFFF');
			}
		}
		else if (form.elements[y].name == fieldname && form.elements[y].value == "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one") {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
			break
		}
		else if (form.elements[y].name == fieldname && form.elements[y].value != "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one") {
			msg_addition = ""
		}	
	}
	return(msg_addition)
}
			
//Integer Check
function i_check(form,x,fieldname,i) {
	var msg_addition = ""
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname)
		break
	}						
	inputStr = form.elements[y].value.toString()
	if (inputStr == "") {
		//msg_addition = form.elements[i].value
	}
	else {
		var reNumber = /(^-?\d\d*$)/;
		if(!reNumber.test(inputStr)) {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
		}
	}
	return(msg_addition)
}	
	
//Numeric Check
function n_check(form,x,fieldname,i) {
	var msg_addition = ""
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname)
		break
	}						
	inputStr = form.elements[y].value.toString()
	if (inputStr == "") {
		//msg_addition = form.elements[i].value
	}
	else {
		var reNumber = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
		if(!reNumber.test(inputStr)) {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
		}
	}
	return(msg_addition)
}	
	
//Money Check
function m_check(form,x,fieldname,i) {
	var msg_addition = ""
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname)
		break
	}						
	inputStr = form.elements[y].value.toString()
	if (inputStr == "") {
		//msg_addition = form.elements[i].value
	}
	else {
		var reNumber = /^((\$)?[0-9]+|(\$)?[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$/;
		if(!reNumber.test(inputStr)) {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
		}
	}
	return(msg_addition)
}	
	
//Email validation
function e_check(form,x,fieldname,i) {
	var msg_addition = ""
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname)
		break
	}						
	inputStr = form.elements[y].value.toString()
	if (inputStr == "") {
		//msg_addition = form.elements[i].value
	}
	else {
		// Very permissive email validation regex.
		var reNumber = /^[^@]+@[^.]+\..+$/i;
		if(!reNumber.test(inputStr)) {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
		}
	}
	return(msg_addition)
}	

//date must be in MM/DD/YY format OR M/D/YY or a MIX of the two
function d_check(form,x,fieldname,i) {
	var msg_addition = ""	
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname)
		break
	}		
	var inputStr = form.elements[y].value
	if (inputStr == "") {
		//msg_addition = form.elements[i].value
	}
	else {
		var reNumber = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2,4}$/;
		if(!reNumber.test(inputStr)) {
			msg_addition = form.elements[i].value;
			HilightItem(form.elements[y],'#B60008','#FFFFFF');
		}
		else{
			var strSeparator = inputStr.substring(2,3) //find date separator
			var arrayDate = inputStr.split(strSeparator); //split date into month, day, year
			//create a lookup for months not equal to Feb.
			var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
			var intDay = parseInt(arrayDate[1]);
			//check if month value and day value agree
			if(arrayLookup[arrayDate[0]] != null) {
				if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0) {
					return(msg_addition); //found in lookup table, good date
				}
			}
			//check for February
			var intYear = parseInt(arrayDate[2]);
			var intMonth = parseInt(arrayDate[0]);
			if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0) {
				return(msg_addition); //Feb. had valid number of days
			}
		}
		msg_addition = form.elements[i].value;
		HilightItem(form.elements[y],'#B60008','#FFFFFF');
	}
	return(msg_addition)
}
function HilightItem(x,bgColor,FontColor) {
	x.style.backgroundColor = bgColor;
	x.style.color = FontColor;
	x.focus();
}

function UnHilightItem(x) {
	// Don't need to set the colors to return to default.
	if(x.value != '') {
		x.style.backgroundColor = '#FFFFFF';
		x.style.color = '#000000';
	}
}

