// JavaScript Document

	function form_validation(form_object) 
	{  
		var alert_message = "";
		
		var validator_name = "validator";
		
		for ( var i = 0; i < form_object.elements.length ; i++ )
		{
			
			if(form_object.elements[i].name.substr(0,validator_name.length) == validator_name)
			{
			
				if (form_object.elements[i].value != "") {
					var field_data = form_object.elements[i].value.split('|');
					var input_name = field_data[0];
					var field_title = field_data[1];
					var field_type = field_data[2];
					var field_required = field_data[3];
					
					
					if (field_required == "required")
					{
						alert_message += validate_field( form_object, input_name, field_title, field_type );
					}
					else if (field_required == "optional")
					{
						if (eval("!is_empty(form_object." + input_name + ".value)")) 
						{
							alert_message += validate_field( form_object, input_name, field_title, field_type );
						}
					}
				}
			}
		}
		if (alert_message) { 
			alert ("Error: Please confirm that the details provided are valid and required fields are completed.\n" + "\n" + alert_message )
			return false;
		} else { 
			return true;
		}
	}
	
	function is_empty (strValue) {
		return (! strValue.replace (/^(\s*)/, "", strValue));
	}

	function validate_field( form_object, input_name, field_title, field_type )
	{
		return_message = "";
		
		switch (field_type)
		{
			case 'text':
				return_message += check_text(form_object,input_name, field_title);
				break;
			case 'number':
				return_message += check_number(form_object,input_name, field_title);
				break;
			case 'email':
				return_message += check_email(form_object,input_name, field_title);
				break;
		}
		
		return return_message;
	}
	
	function check_text(form_object,input_name,field_title)
	{
		var return_message = "";
		if(eval("is_empty(form_object." + input_name + ".value)"))
		{
			return_message = field_title + "\n";
		}
		return return_message;
	}
	
	function check_number(form_object,input_name,field_title)
	{
		var return_message = "";
		var validchars = "0123456789";
		var field_value = eval("form_object." + input_name + ".value");
		for(var i=0;i<field_value.length;i++)
		{
			if(validchars.search(field_value.charAt(i)) == -1)
			{
				return_message = field_title + "\n";	
			}
		}
		return return_message;
	}
	
	function check_email(form_object,input_name,field_title)
	{
		var return_message = "";
		var field_value = eval("form_object." + input_name + ".value");
		
		//var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var reg = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/
		if(reg.test(field_value) == false) {
			return_message = field_title + "\n";
		}
		
		return return_message;
	}
	
