﻿// Script to validate form data
// Thanks to: http://www.quirksmode.org/js/forms.html

var W3CDOM = (document.getElementsByTagName && document.createElement);

function validate(myForm,requiredFields) {

	validForm = true; 
	firstError = null;
	errorString = '';
	var emailRegEx = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

	for (var i=0;i<requiredFields.length; i++){
		elementName=requiredFields[i].name;
		elementType=requiredFields[i].type;
		if(!myForm[elementName].value) {
			writeError(myForm[elementName],'This field is required');
		}
		if(elementType == 'email' && emailRegEx.test(myForm[elementName].value) == false){
			writeError(myForm[elementName],'This is not a valid email address');
		}
	}

	if (!W3CDOM) alert(errorString);
	if (firstError) firstError.focus();
	return validForm;
}

function writeError(obj,message) {
	validForm = false;
	if (obj.hasError) return;
	if (W3CDOM) {
		obj.className += ' error';
		obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className ='error';
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		obj.hasError = sp;
	}
	else {
		errorString += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
	if (!firstError) firstError = obj;
}

function removeError(){
	this.className = this.className.substring(0,this.className.lastIndexOf(' '));
	this.parentNode.removeChild(this.hasError); 
	this.hasError = null;
	this.onchange = null;
}
