/*
Copyright 2010
Douglas Green
douglasgreen.com
*/

// Form validation
function validate(fields, emailID) {
	// fields is an array of form IDs
	// emailID is the id of the email field

	var err = false;
	var mssg = "Please correct the following information:\n";
	
	function checkMissing() {
		var missing = "";
		for (fieldIndex in fields) {
			if (document.getElementById(fields[fieldIndex]).value == "" ||
				// check for default values
				document.getElementById(fields[fieldIndex]).value == "email" ||
				document.getElementById(fields[fieldIndex]).value == "subject" ||
				document.getElementById(fields[fieldIndex]).value == "message") {
				err = true;
				missing += "Missing ";
				missing += document.getElementById(fields[fieldIndex]).getAttribute("title");
				missing += "\n";
			}
		}
		mssg += missing;
	}

	function checkEmail() {
		var em = document.getElementById(emailID).value;
		if (
			// check for minimum length
			(em.length >= 7) &&
			// check for an @ sign
			(em.indexOf("@") != -1) &&
			// check for a domain name of at least 2 characters
			((em.indexOf("@") + 2) < em.lastIndexOf(".")) &&
			// check for a domain extension of at least 2 characters
			(em.lastIndexOf(".") < (em.length -2)) 
			) 
		{
			// email passes minimum validation
		} else {
			err = true;
			mssg += "The email address is an invalid format.\n";
		}
	}
	
	function focusField() {
		for (fieldIndex in fields) {
			if (document.getElementById(fields[fieldIndex]).value == "") {
				document.getElementById(fields[fieldIndex]).focus();
				break;
			}
		}
	}
	
	function doValidate() {
		checkMissing();
		checkEmail();
		if (err) {
			window.alert(mssg);
			focusField();
		}
	}
	
	doValidate();
		
	if (err) {
		return false;
	} else {
		return true;
	}
}