// defines empty fields
function isEmpty (inputStr) {
	if (inputStr == "" || inputStr == null) {
		return true;
	}
	return false;
}

function checkFields() {
	var doc = document.Contact;
	var errorMessage = document.getElementById('error_mssg');
	errorMessage.innerHTML = "";
	messageList = "";
	var elems = doc.elements;
	for (var ii = 0; ii < elems.length; ii++) {
		var fieldLabel = "label_" + elems[ii].name;
		if(elems[ii].className.match('required')) {
			if(isEmpty(elems[ii].value)) {
				messageList += "   - <a href=\"javascript:document.Contact." + elems[ii].name + ".focus();\" class=\"error\" title=\"Click here to change this value\">" + document.getElementById(fieldLabel).innerHTML + "</a> is required, and cannot be left empty.<br />";
				elems[ii].className = "required errorfield";
				document.getElementById(fieldLabel).className = "error";
			} else {
				elems[ii].className = "required";
				document.getElementById(fieldLabel).className = "";
			}
		} else if(!isEmpty(elems[ii].value)) {
		
		  if(elems[ii].className.match('email')) {
		    if (!validEmail(elems[ii].value)) {
		        messageList += "   - <a href=\"javascript:document.Contact." + elems[ii].name + ".focus();document.Contact." + elems[ii].name + ".select();\" class=\"error\" title=\"Click here to change this value\">" + document.getElementById(fieldLabel).innerHTML + "</a> value is not a valid e-mail address.<br />";
				elems[ii].className = "email errorfield";
				document.getElementById(fieldLabel).className = "error";
		    } else {
				elems[ii].className = "email";
				document.getElementById(fieldLabel).className = "";
		    }
		  }
		
		  if(elems[ii].className.match('phone')) {
		    if (!validPhone(elems[ii].value)) {
		        messageList += "   - <a href=\"javascript:document.Contact." + elems[ii].name + ".focus();document.Contact." + elems[ii].name + ".select();\" class=\"error\" title=\"Click here to change this value\">" + document.getElementById(fieldLabel).innerHTML + "</a> value is not a valid phone number.<br />";
				elems[ii].className = "phone errorfield";
		        document.getElementById(fieldLabel).className = "error";
		    } else {
				elems[ii].className = "phone";
				document.getElementById(fieldLabel).className = "";
		    }
		  }
		
		  if(elems[ii].className.match('zipcode')) {
		    if (!validZipcode(elems[ii].value)) {
		        messageList += "   - <a href=\"javascript:document.Contact." + elems[ii].name + ".focus();document.Contact." + elems[ii].name + ".select();\" class=\"error\" title=\"Click here to change this value\">" + document.getElementById(fieldLabel).innerHTML + "</a> value is not a valid zipcode.<br />";
				elems[ii].className = "zipcode errorfield";
		        document.getElementById(fieldLabel).className = "error";
		    } else {
				elems[ii].className = "zipcode";
				document.getElementById(fieldLabel).className = "";
		    }
		  }
		
		}
	}
	
	
	if(messageList != '') {
		errorMessage.innerHTML += "There was a problem with the information submitted:<br />";
		errorMessage.innerHTML += messageList;
		errorMessage.innerHTML += "Please make the necessary corrections, and resubmit the form.";
		Element.show('error_mssg');
		window.scroll(0, 180);
		return false;
	} else {
		Element.hide('error_mssg');
		return true;
	}
}

function validPhone(phone) {
    var re = /^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/;
	if (!re.test(phone)) {
		return false;
	} else {
	   return true;
	}
}

function validZipcode(zipcode) {
    var re = /^[0-9]{5}([- /]?[0-9]{4})?$/;
	if (!re.test(zipcode)) {
		return false;
	} else {
	   return true;
	}
}
// checks for valid email address using reg. exp.
function validEmail(email) {
	var invalidChars = " /:,;"
	var re = /\S+\.(aero|biz|com|coop|edu|gov|int|info|mil|museum|name|net|org|pro|ws|us|ca|mx|ag|ar|aw|bb|bm|br|bs|co|cr|jm|ky|pa|pe|pr|tt|ve|vg|vi|uk|ad|at|be|bg|by|ch|cz|de|dk|ee|es|eu|fi|fr|gi|gr|hr|hu|ie|il|is|it|li|lu|lv|mc|mk|mt|nl|no|pl|pt|ru|se|sk|tr|ua|au|cn|fj|hk|id|in|jp|kr|mo|my|nz|ph|pk|sg|th|tw|tv|cc|cx|fm|nu)\b/i;

	for (var i=0; i<invalidChars.length; i++) {
		badChar = invalidChars.charAt(i)
		if (email.indexOf(badChar,0) > -1) {
			return false;
		}
	}
	atPos = email.indexOf("@",1)
	if (atPos == -1) {
		return false;
	}
	if (email.indexOf("@",atPos+1) > -1) {
		return false;
	}
	periodPos = email.indexOf(".",atPos)
	if (periodPos == -1) {
		return false;
	}
	if (periodPos+3 > email.length)	{
		return false;
	}
	if (!re.test(email)) {
		return false;
	}
	return true;
}