	function validate(form){
 		var result = '';
		result = checkField(form, '', true, '', 'FirstName', 'Value has not been enterd', '', 'undefined') +
		checkField(form, '', true, '', 'LastName', 'Last Name is a required field.', '', 'undefined') +
		checkField(form, 'email', true, '', 'Email', 'Email address is a required field', 'Email addres is invalid', 'undefined') +
		checkField(form, 'int', true, '', 'HomePhone', 'Home Phone is a required Field.', '', 'undefined') +
		checkField(form, '', true, '', 'Address', 'The address field is a required field.', '', 'undefined') +
		checkField(form, '', true, '', 'City', 'City is a required field', '', 'undefined') +
		checkField(form, 'int', true, '', 'State', 'State is a required field.', '', 'undefined') +
		checkField(form, '', true, '', 'zip', 'Zip code is a required field', '', 'undefined') +
		checkField(form, 'int', true, '', 'CountryId', 'Country is a required field', '', 'undefined') +
		checkField(form, 'null', true, '', 'ChildFirstName', 'Childs First Name is a required field', 'null', 'undefined') +
		checkField(form, 'null', true, '', 'ChildLastName', '', '', 'undefined') +
		checkField(form, 'int', true, '', 'ChildAge', '', 'null', 'undefined');
 		if (result != '') {alert(result); return false;} else {return true};
	}
	function checkCheckboxField(form, dataType, required, rejectedvalues, field, emptyErrorMessage, invalidErrorMessage, rejectedMessage)
	{
		var name = "";
		var switchName = "";
		var result = "";
		for (var el in field)
		{
			switchName = field[el];
			name = el;
		}
		for (var i=0;i<form.elements.length;i++)
			if (form.elements[i].name == name && form.elements[i].checked)
				return "";
	
		if (required) return "   - " + emptyErrorMessage + "\n";	
	}

	function checkRadioField(form, dataType, required, rejectedvalues, field, emptyErrorMessage, invalidErrorMessage, rejectedMessage)
	{
		var name = "";
		var switchName = "";
		var result = "";
		for (var el in field)
		{
			switchName = field[el];
			name = el;
		}
		for (var i=0;i<form.elements.length;i++)
		{

			if (form.elements[i].name == name && form.elements[i].checked)
			{

				if (switchName && ((switchName+"") != "undefined") && switchName != "" && switchName == form.elements[i].value)
				{
					var newField = null;
					eval("newField  = {'" + switchName +"':''}");
					return checkField(form, dataType, required, rejectedvalues, newField, emptyErrorMessage, invalidErrorMessage, rejectedMessage);
				} else {

					switch (dataType)
					{
						case 'int':
						{

							result = checkNumericField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);
							break;
						}
						case 'phone':
						{
							result = checkPhoneField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
							break;
						}
						case 'postcode':
						{
							result = checkPostcodeField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
							break;
						}
						case 'date':
						{
							result = checkDateField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
							break;
						}
						case 'email':
						{
							result = checkEmailField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
							break;
						}
						
						default:
						{
							result = checkStringField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);				
							break;
						}
					}
					result = (result!="") ? "   - " + result + "\n" : "";
					return result;

				
				}
			}
		}
		
		if (required) return "   - " + emptyErrorMessage + "\n";
	
	}
	
	
	
	function checkField(form, dataType, required, rejectedvalues, field, emptyErrorMessage, invalidErrorMessage, rejectedMessage)
	{
		var name = "";
		var switchName = "";
		var result = "";

		name = field;
			

		for (var i=0;i<form.elements.length;i++)
		{
			if (form.elements[i].name == name)
			{               
				switch (dataType)
				{
			
					case 'int':
					{

						result = checkNumericField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);
						break;
					}
					case 'phone':
					{
						result = checkPhoneField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
						break;
					}

					case 'postcode':
					{
						result = checkPostcodeField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
						break;
					}
					
					case 'date':
					{
						result = checkDateField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
						break;
					}
					case 'email':
					{
						result = checkEmailField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);					
						break;
					}
					
					default:
					{
						result = checkStringField(form.elements[i], required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedMessage);				
						break;
					}
				}
			}
		}
		
		return (result == "") ? "" : "   - " + result +"\r";
	}

	function checkReqired(field, required)
	{
		if (!required) return true;
		
		if ((field.value == "" || field.value == 'undefined' || field.value == null))
			return false;
		
		return true;
	}

	function inRejectedValues(val, values)
	{
		if (val)
			for (var i=0; i<values.length; i++)
				if (val == values[i])
					return true;
				
		return false;				
	}
	
	function isValueRejected(value, values)
	{
		if (value && values)
		{
			if (values == null)
				return false;
			
			if (value == "" || value == 'undefined' || value == null)
				return false;
				
			if ((value != "" & value != 'undefined' & value == null) & inRejectedValues('*', values))
				return true;
				
			return inRejectedValues(value, values);
		}
		return false;
			
	}

	function checkNumericField(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{
		if ((field.value == "" || field.value == 'undefined' || field.value == null) & !required) return "";
		
		if (isValueRejected(field.value, rejectedvalues)) return rejectedErrorMessage;
		
		if (!checkReqired(field, required))
			return emptyErrorMessage;

		regexp = /^((([0-9]*)|0)[\.]?[0-9]{0,4})$/;

		if (regexp.exec(field.value) == null)
			return invalidErrorMessage;
			
		return "";			
	}
	
	function checkPhoneField(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{
		if ((field.value == "" || field.value == 'undefined' || field.value == null) & !required) return "";
		
		if (isValueRejected(field.value, rejectedvalues)) return rejectedErrorMessage;
		
		if (!checkReqired(field, required))
			return emptyErrorMessage;

		regexp = /(^\([0-9]+\)\s*[0-9\s]*[0-9]+$)|(^[0-9]+\s*[0-9\s]*[0-9]+$)/
		if (regexp.exec(field.value) == null)
			return invalidErrorMessage;
			
		return "";			
	}

	function checkPostcodeField(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{
		if ((field.value == "" || field.value == 'undefined' || field.value == null) & !required) return "";
		
		if (isValueRejected(field.value, rejectedvalues)) return rejectedErrorMessage;
		
		if (!checkReqired(field, required))
			return emptyErrorMessage;

		if (field.value.length!=4)
			return invalidErrorMessage;		
			
		regexp = /(^\([0-9]+\)\s*[0-9\s]*[0-9]+$)|(^[0-9]+\s*[0-9\s]*[0-9]+$)/
		if (regexp.exec(field.value) == null)
			return invalidErrorMessage;
			
		return "";			
	}

	function checkEmailField(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{
		if ((field.value == "" || field.value == 'undefined' || field.value == null) & !required) return "";
		
		if (isValueRejected(field.value, rejectedvalues)) return rejectedErrorMessage;
		
		if (!checkReqired(field, required))
			return emptyErrorMessage;

		if (("" + field.value).indexOf("@")==-1 || ("" + field.value).indexOf(".")==-1)
			return invalidErrorMessage;
			
		return "";
	}
	
	function checkDateField(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{
		if ((field.value == "" || field.value == 'undefined' || field.value == null) & !required) return "";
		
		if (isValueRejected(field.value, rejectedvalues)) return rejectedErrorMessage;
		
		if (!checkReqired(field, required))
			return emptyErrorMessage;

		regexp = /(\d+)\/(\d+)\/(\d+)$/;
		if (regexp.exec(field.value) == null)
			return invalidErrorMessage;
			
		return "";			
	}
	
	function checkStringField(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{


		if ((field.value == "" || field.value == 'undefined' || field.value == null) & !required) return "";
		
		if (isValueRejected(field.value, rejectedvalues)) return rejectedErrorMessage;

		
		if (!checkReqired(field, required))
			return emptyErrorMessage;

		return "";
	}	
