/////////////////////////////////////////////////////////////////////////////////
//
//		Mark fields in the form you want to verify by giving them an 
//		id of vf# plus any combination of the following letters:
//		m - mandatory field
//		e - correct email address format
//		n - numerals only
//
//		eg. <input type="text" name="Phone" id="mn" value=""> - id="mn" means field
//		must be filled in and must contain only numbers.
//
/////////////////////////////////////////////////////////////////////////////////
function verifyform(frm,a,disp) {
// note: when disp is true the class of the field will NOT be changed
var frm = document.getElementById(frm);
var error = "";
var chkFlds = ["input","select","textarea","checkbox"];
// loop thru field types - chkFlds
for (var j=0; j < chkFlds.length; j++) {
	// get all the fields for the current type into array
	var frmObjs = frm.getElementsByTagName(chkFlds[j]);
	// loop thru type array
	for (var i=0; i < frmObjs.length; i++) {
		var type = frmObjs[i].type;
			// if not resetting, get value and id from current object
			var fldVal = frmObjs[i].value;
			var fldVfy = frmObjs[i].id;
			var thiserror = 0;
         var fieldname=frmObjs[i].name;
         if (fieldname == "howfind"){ fieldname = "How did you find us?"; }
         fieldname = fieldname.slice(0,1).toUpperCase()+fieldname.slice(1);
			if (fldVfy.indexOf("vf#")!=-1 && frmObjs[i].disabled !== true) {
		// if reset action called, reset current field
		if (a == "reset") {
			if (!(type == "button") && !(type == "hidden")) {
				if(!disp){ frmObjs[i].className = "form_input"; }
				frmObjs[i].value="";
				}
			} else {
			// Check for empty mandatory fields - m
			if (fldVal == "" && fldVfy.indexOf("m")!=-1) {
				if(!disp){ frmObjs[i].className = "form_input_error"; }
				error += "   Missing field: "+fieldname+'\n';
				thiserror = 1;
				}
			// check for unticked checkbox - m
			if (type == "checkbox" && fldVfy.indexOf("m")!=-1 && frmObjs[i].checked !== true) {
				if(!disp){ frmObjs[i].className = "form_input_error"; }
				error += "   Unticked checkbox: "+fieldname+'\n';
				thiserror = 1;
				}
			// Check for non numeral - n
			var numerror = 0;
			var numerals = "0123456789. \r\n";
			if (fldVal !== "" && fldVfy.indexOf("n")!=-1) {
				for (k=0; k<fldVal.length; k++) {
					var ch = fldVal.charAt(k);
					var x = numerals.indexOf(ch);
					if (x == -1) {
						numerror = 1;
						} 
					}
				if (numerror == 1) {
					if(!disp){ frmObjs[i].className = "form_input_error"; }
					error += "   Numbers only: "+fieldname+'\n';
					thiserror = 1;
					}
				}

			// Check for non alpha - a
			var alphaerror = 0;
			var numerals = "0123456789. ";
			if (fldVal !== "" && fldVfy.indexOf("a")!=-1) {
				for (k=0; k<fldVal.length; k++) {
					var ch = fldVal.charAt(k);
					var x = numerals.indexOf(ch);
					if (x !== -1) {
						alphaerror = 1;
						} 
					}
				if (alphaerror == 1) {
					if(!disp){ frmObjs[i].className = "form_input_error"; }
					error += "   Numbers not allowed: "+fieldname+'\n';
					thiserror = 1;
					}
				}


			// Check for incorrect email address - e
			if (fldVal !== "" && fldVfy.indexOf("e")!=-1) {
				var at =  fldVal.indexOf("@");
				var dot = fldVal.indexOf(".");
				var len = fldVal.length;
				if (at==-1 || dot==-1 || len < 5) {
					if(!disp){ frmObjs[i].className = "form_input_error"; }
					error += "   Invalid Email Address: "+fieldname+'\n';
					thiserror = 1;
					}
				}
			// If field ok, set colour to normal
				if (thiserror!=1) {
					if(!disp){ frmObjs[i].className = "form_input"; }
					}
			}
			}
			}
		}
// If errors, give error alert, otherwise, submit the form
		if (a == "verify") {
			if (!error == "") {
				error = "Please correct the following errors:    "+'\n\n'+error;
				alert(error);
				return false;
				} else {
				return true;
				}
		}
}