	/* SYS7 JavaScript Form Validator - Copyright 2009 - System 7 Technologies LLC*/
	
	window.onload = initValidation; 
	
	var normColor = "#DCC0C0";
	var errorColor = "#FF0000";
	var descSuffix = "Text";
	var ermsg = "";
	var errorCount = 0;
	
	function initValidation() {
		document.getElementById('formSubmit').onclick = validateForm;
	}
	
	function validateForm ( ) {
		
		var feedback = document.getElementById('contactFeedback');	
		feedback.style.display = "block";	
			
		var vArray = new Array();
			
			vArray[0] = new Array("firstName", true, "text");  		// ("ID", required, type [text, num, email, phone)
			vArray[1] = new Array("lastName", true, "text")
			vArray[2] = new Array("emailAddr", true, "email");
			vArray[3] = new Array("phone", false, "phone");
			vArray[4] = new Array("company", false, "text");
			vArray[5] = new Array("comment", true, "text");
		
		document.getElementById('contactFeedback').style.color = errorColor;
		
		var msg = "";
		
		for (var i=0; i<=5; i++) {
		
			// ERROR (coding) Reporting
			//msg += vArray[i][0] + " | " + vArray[i][1] + " | " + vArray[i][2] + "<br />";
//			document.getElementById('jsmsg').innerHTML = msg;
//			document.getElementById('jsmsg').style.color = "#0000FF";
			
			if (vArray[i][1] == true) {			
				
				if (vArray[i][2] == "text") 	{errorCount += checkText(vArray[i][0], true);}
				if (vArray[i][2] == "num") 		{errorCount += checkNumber(vArray[i][0]), true;}
				if (vArray[i][2] == "email") 	{errorCount += checkEmail(vArray[i][0], true);}
				if (vArray[i][2] == "phone") 	{errorCount += checkPhone(vArray[i][0]);}
				
			}						
			
		}
	
		// document.getElementById('error_msg').innerHTML = ermsg;	
		
		if (errorCount == 0) {
			feedback.innerHTML = "Thank you, your message has been successfully sent.";
			return true;} 
		else {
			feedback.innerHTML = getErrorMsg(errorCount);
			return false;}
		
	}


	// FIELD VERIFICATION FUNCTIONS ... they call the basic functions
	
	function checkText(fieldname) {
			
		var thisField = document.getElementById(fieldname).value;
			
		if (!isNaN(thisField)) {			
			makeErVis(fieldname);
			return 1;			 
		} else {		
			resetColor(fieldname);
			return 0;			
		}
	
	}
	
	function checkNumber(fieldname) {
						
		if (checkNum(fieldname)) {			
			makeErVis(fieldname);
			return 1;			 
		} else {
			resetColor(fieldname);
			return 0;			
		}
	
	}
	
	function checkEmail(fieldname) {
		
		emailArray = new Array(fieldname + "1", fieldname + "2");
		emailError = "";
	
		for (var i=0; i<=1; i++) {
			
			emailError += checkChar(emailArray[i], "@");
			emailError += checkChar(emailArray[i], ".");						
			
			if (document.getElementById(emailArray[0]).value != document.getElementById(emailArray[1]).value) {
				emailError += 1;
				makeErVis(emailArray[0]);
				makeErVis(emailArray[1]);
				// ermsg += "emails don't match " + emailArray[i] + "<br />";			
			}	
			
			if (emailError >= 1) {
				makeErVis(emailArray[i]);
				//  ermsg += "FAILING AT CHAR " + emailArray[i] + "<br />";
			}
		
		}
	
		if (emailError >= 1) {return 1;} 
		else {return 0;}		
	}
	
	
	function checkPhone(fieldname) {
			
		var phoneError = "";			
		
		phoneArray = new Array(
			Array(fieldname + "1", 3), 
			Array(fieldname + "2", 3),  
			Array(fieldname + "3", 4)
		);
			
		for (var i=0; i<=2; i++) {
			phoneError += checkEmpty(phoneArray[i][0]);
			phoneError += checkNum(phoneArray[i][0]);
			phoneError += checkLength(phoneArray[i][0], phoneArray[i][1]);
		}
			
		if (phoneError >= 1) {
			makeErVis(fieldname);
			return 1;
			 
		} else {
			resetColor(fieldname);
			return 0;
		}		
						
	}

	
	
	// BASIC FORM CHECKING FUNCTIONS... returns either a 1 (error) or a 0 (no error)
	
	function checkChar(fieldname, char) {
			
		var thisField = document.getElementById(fieldname).value;			
		if (!thisField.match (char)) {ermsg += "char: " + fieldname + "<br />"; return 1;}			 
		else {return 0;}
		
	}
	
	function checkNum(fieldname) {			// ermsg => error message report (T/F)
						
		var thisField = document.getElementById(fieldname).value;			
		if (isNaN(thisField)) {ermsg += "num: " + fieldname + "<br />"; return 1;}			 
		else {return 0;}
		
	}

	function checkEmpty (fieldname) {
			
		var thisField = document.getElementById(fieldname).value;					
		if (thisField.length == 0) {ermsg += "empty: " + fieldname + "<br />"; return 1;} 
		else {return 0;}	
	
	}
	
	function checkLength(fieldname, length) {
			
		var thisField = document.getElementById(fieldname).value;					
		if (thisField.length != length) {ermsg += "length: " + fieldname + "<br />"; return 1;} 
		else {return 0;}	
	
	}


	// DISPLAY FUNCTIONS ... controls what the user sees.

	function getErrorMsg(errorCount) {
	
		if (errorCount > 1) {
			var msg = "There are multiple errors on your form.";
		} else {
			var msg = "There is 1 error on your form.";
		}
		
		return msg;
	}
	
	function makeErVis(fieldname) {
		document.getElementById(fieldname + descSuffix).style.color = errorColor;
	}
	
	function resetColor(fieldname) {
		document.getElementById(fieldname + descSuffix).style.color = normColor;
	}
