	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;
						}
						case 'text255':
						{
							result = checkText255Field(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 'text255':
					{
						result = checkText255Field(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;		var v = String(field.value).replace(/\s/g,"").replace(/\(/g,"").replace(/\)/g,"").replace(/\./g,"").replace(/\*/g,"").replace(/\_/g,"").replace(/\-/g,"").replace(/\,/g,"").replace(/\=/g,"").replace(/\+/g,"");		var v1 = "";		for (var i=0;i<String(v).length;i++)		{			if (!isNaN(parseInt(String(v).charAt(i))))				v1 += String(v).charAt(i);		}				field.value = v1;				if (String(v1).length != 10)		{			if (String(v1).indexOf('01') != 0)			{				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 || ("" + field.value).indexOf(" ")!=-1)
			return invalidErrorMessage;
			
		return "";	}		function checkText255Field(field, required, rejectedvalues, emptyErrorMessage, invalidErrorMessage, rejectedErrorMessage)
	{
		alert(1);
		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 (String(field.value).length > 255)
		{
			if (invalidErrorMessage == null || String(invalidErrorMessage) == 'undefined' || invalidErrorMessage == "")
				invalidErrorMessage = "Max field length is 255 symbols";
			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 "";	}	