function validateField(thisEl){
	var fieldType = thisEl.getAttribute('class');
	var blnValid;
	
	switch(fieldType){
		case 'Date':
		  blnValid = validateDate(thisEL);
		  break    
		case 2:
		  blnValid = validateDate(thisEL);
		  break
		default:
		  blnValid = validateDate(thisEL);
	} 
}

function validateDate(fld) {
    var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

	    var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. 30-2-2007 would not be accepted.\nFormay dd/mm/yyyy.';
	    blnOk = (fld.value.match(RegExPattern)) && (fld.value!='');
	    validated(fld, blnOk, errorMessage);
}

function validateEmail(fld) {
    var RegExPattern = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/;
	    var errorMessage = 'Please enter a valid email address.';
	    blnOk = (fld.value.match(RegExPattern)) || (fld.value!='');
	    validated(fld, blnOk, errorMessage);
}

function validateFilled(fld) {
	    var errorMessage = '';
	    blnOk = (fld.value!='');

	    validated(fld, blnOk, errorMessage);
}

function validatePhone(fld) {
	var blnOk = true;
	var RegExPattern = /^((\+|00)\d{1,3}(-| )?){0,1}((\()?\d(\))?(-| )?(\d{1,3})){0,1}(-| )?(\d{3,4})(-| )?(\d{3,4})(( x| ext)\d{1,5}){0,1}$/;
	var errorMessage = 'Please enter a valid phone number.';
	blnOk = RegExPattern.test(fld.value) && (fld.value!='');
	validated(fld, blnOk, errorMessage);
	return blnOk;
}

function validated(fld, blnOk, errorMessage){
	var className = fld.className;

	if (blnOk){
		switch(className){
			case 'formFillMandFail':
				className = 'formFillMand';
				break;
			default:
		}
	}
	else{
		switch(className){
			case 'formFillMand':
				className = 'formFillMandFail';				
				break;
			default:
		}
		if ((errorMessage != '') && (fld.value!='')){
			alert(errorMessage);
			fld.focus();
		}
	}
	fld.className = className;
}

function initValidation(){
	alert("init");
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];

		if (anchor.getAttribute("rel" == "validate")){
			anchor.onclick = function () {validateField(this);}
		}
	}
}
// //
// // addLoadEvent()
// // Adds event to window.onload without overwriting currently assigned onload functions.
// // Function found at Simon Willison's weblog - http://simon.incutio.com/
// //
// function addLoadEvent(func)
// {	
	// var oldonload = window.onload;
	// if (typeof window.onload != 'function'){
		// window.onload = func;
	// } else {
		// window.onload = function(){
		// oldonload();
		// func();
		// }
	// }

// }

addLoadEvent(initValidation);	// run initValidate onLoad
