
// Declare Global Variables

	var formAlertMessage='Please provide valid information for the following:';
	var formSubmit=1;
	var fieldValid=1;

/*
	throwError gets called each time there is an error in the
	validation routines.
*/
function throwError(theField,theMessage) {
	formAlertMessage=formAlertMessage + "\n - " + theMessage;
	formSubmit=0;
	fieldValid=0;
	switchStyle(theField);
}
function throwErrorWo(theField,theMessage) {
	formAlertMessage=formAlertMessage + "\n - " + theMessage;
	formSubmit=0;
	fieldValid=0;
}
function switchStyle(theField) {
	theSwitch=new Function("this.style.backgroundColor='FFFFFF';this.style.color='000000';if(this.type=='text') this.select();")
	theField.style.backgroundColor='FF0000';
	theField.style.color='White';
	theField.onfocus=theSwitch;
}

/*
	formAlert displays the alert message and clears necessary variables to start
	the validation over.
*/

function formAlert() {
	alert(formAlertMessage);
	formAlertMessage='Please provide valid information for the following:';
	formSubmit=1;
}

/*
	formRequired makes sure a field has been completed by the user.   In order
	for this function to work with select boxes the empty value must be set to 0
	in the form.
*/

function formRequired(theField,theMessage) {
	theField.value = theField.value.replace(/\s+$|^\s*/gi, "");
	if(theField.value == '' || theField.value == '-1') {
		throwError(theField,theMessage);
	}
}

// form field must be composed only of numbers and letters.
function formIsAlphaNumeric(theField,theMessage) {
	theField.value = theField.value.replace(/\s+$|^\s*/gi, "");
	isAlphaNum = new RegExp ("[^0-9a-zA-Z \(\)\-\.\/]");
	if (isAlphaNum.test(theField.value)) {
		throwError(theField,theMessage);
	}
}

// form field must be composed only of numbers.
function formIsNumeric(theField,theMessage) {
	theField.value = theField.value.replace(/\s+$|^\s*/gi, "");
	isNum = new RegExp ("[^0-9 \-\.]");
	if (isNum.test(theField.value)) {
		throwError(theField,theMessage);
	}
}

// form field must be a postcode of 4 digits.
function formIsPostcode(theField,theMessage) {
	theField.value = theField.value.replace(/\s+$|^\s*/gi, "");
	var isPostcode=/^\d{4}$/;
	if (!isPostcode.test(theField.value)) {
		throwError(theField,theMessage);
	}
}

// form field must be a phone number.
function formIsPhone(theField,theMessage) {
	theField.value = theField.value.replace(/\s+$|^\s*/gi, "");
	isNum = new RegExp ("[^0-9 \(\)\-\.]");
	var numdigits = 0;
	for (var n=0; n<theField.value.length; n++)
    	if (theField.value.charAt(n)>="0" && theField.value.charAt(n)<="9") numdigits++;
	if (isNum.test(theField.value) || numdigits < 10)
		throwError(theField,theMessage);
}

// form field must be a valid password.
function formIsPassword(theField,theMessage) {
	theField.value = theField.value.replace(/\s+$|^\s*/gi, "");
	isAlphaNum = new RegExp ("[^0-9a-zA-Z \(\)\-\.\/]");
	if (isAlphaNum.test(theField.value) || theField.value.length > 12 || theField.value.length < 6) {
		throwError(theField,theMessage);
	}
}

// re-entered password is same as password
function formReEnter(field1,field2,theMessage) {
	if(field1.value!=field2.value) {
		throwError(field1,theMessage);
		switchStyle(field2);
	}
}

// at least one of the fields must have an entry.
function formAtLeastOne(field1,field2,field3,theMessage) {
	if(field1.value=='' && field2.value=='' && field3.value=='') {
		throwError(field1,theMessage);
		switchStyle(field2);
		switchStyle(field3);
	}
}

// form field must have text with only one @ followed by dot.
function formIsEmail (theField,theMessage) {
	var email = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
 	if(!email.test(theField.value)) {
		throwError(theField,theMessage);
	}
}

// form field must be in dd/mm/yyyy format and valid number of days in month and months in year.
function formIsDate(theField,theMessage) {
	var date = /^\d{1,2}\/\d{1,2}\/\d{4}$/ //Basic check for format validity
	var dayfield=theField.value.split("/")[0]
	var monthfield=theField.value.split("/")[1]
	var yearfield=theField.value.split("/")[2]
	var dayobj = new Date(yearfield, monthfield-1, dayfield)
	if (!date.test(theField.value)||(dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield)){
		throwError(theField,theMessage);
	}
}

// Disable "Enter" key in Form insert onkeypress="return handleEnter(this, event)" into input tag
function handleEnter (field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
		i = (i + 1) % field.form.elements.length;
		field.form.elements[i].focus();
		return false;
	} 
	else
		return true;
}
