/*
error codes:
0-ok
1-empty field
2-incorrect input

*/
function validate(form, arr, n)
{
err="";

for (i=0; (i<arr.length && i<(n+1)) ;i++)
{
	a=form.elements[arr[i].name];
	arr[i].error=0;
	if (a)
	{
		/* Validate int field */
		if (arr[i].type=='int')
		{
			arr[i].error='0';
			if (isNaN(a.value))
			{
				arr[i].error='2';
			}
			if (a.value.length==0 && arr[i].req)
			{
				arr[i].error='1';
			}

		
		}
		
		if (arr[i].type=='float')
		{
			arr[i].error='0';
			if (isNaN(parseFloat(a.value)))
			{
				arr[i].error='2';
			}
			if (a.value.length==0 && arr[i].req)
			{
				arr[i].error='1';
			}

		
		}
		/* Validate email field */
		if (arr[i].type=='literal')
		{	
			arr[i].error='0';
			var regexp=/[^a-zA-Z0-9\_\-\+\ \(\)]+/
			if(arr[i].req){
				if (a.value.length!=0){
					//alert(arr[i].hname+'='+a.value.match(regexp))
					if (a.value.match(regexp)){
						arr[i].error='2';
						//alert(a.value);
					}
				}
				else{
					arr[i].error='1';
				}
			}
			else{
				if (a.value.length!=0){
					//alert(arr[i].hname+'='+a.value.match(regexp))
					if (a.value.match(regexp)){
						arr[i].error='2';
						//alert(a.value);
					}
				}
			}
		}
		
		if (arr[i].type=='email')
		{	
			arr[i].error='0';
			var regexp=/[a-zA-Z0-9\_\.]+\@[a-zA-Z0-9\_\-]+\.[a-zA-Z0-9\_\.\-]+/
			if (!a.value.match(regexp))
			{
				arr[i].error='2';
			}
			if (a.value.length==0 && arr[i].req)
			{
				//alert(a);
				arr[i].error='1';
			}
		}
		/* Validate date field */
		if (arr[i].type=='date')
		{	
			arr[i].error='0';
			if (a.value.length==0 && arr[i].req)
				arr[i].error='1';
			if (!CheckDate(a))
					arr[i].error='2';
		}
		
		if (arr[i].type=='plus')
		{
			arr[i].error='0';
			if(a.value<1 && arr[i].req)
				arr[i].error='4';
		}
		/* Other type */
		
		if (!arr[i].error)
		{
			arr[i].error='0';
			if (a.value.length==0 && arr[i].req)
			{	
				arr[i].error='1';
				//alert(arr[i].hname);
			}
		}
		/*validate text lenght*/
		if(arr[i].size)	if(a.value.length<arr[i].size) arr[i].error=3;



		if (arr[i].error==1)
		{
			a.focus();
			if(arr[i].message) alert(arr[i].message);
			else alert('Please enter You '+arr[i].hname);
			return false;
			break;

		}
		if (arr[i].error==2)
		{
			a.focus();
			if(arr[i].message) alert(arr[i].message);
			else alert('Check entered data in field: '+arr[i].hname);
			return false;
			break;
		}
		if (arr[i].error==3)
		{
			a.focus();
			if(arr[i].message) alert(arr[i].message);
			else alert(arr[i].hname+' is too short');
			return false;
			break;
		}
		if (arr[i].error==4)
		{
			a.focus();
			if(arr[i].message) alert(arr[i].message);
			else alert(arr[i].hname);
			return false;
			break;
		}
	}
	
	
}

}

function CheckDate(obj)
{
	var days_month=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	value=obj.value;
	myregexp=new RegExp(/[\.\-\/\ \:]/);
	date=value.split(myregexp);
	//alert(date);

	if (parseInt(date[0])<1000)
	{
		// MM/DD/YY[YY] HH:MM:SS
		// Do no allow years other than 2 or 4 letters
		if (date[2].length!=2 && date[2].length!=4) return false;
		// Do not allow single-digit days or months
		if (date[0].length!=2 || date[1].length!=2) return false;
		month=parseInt(date[0]);
		day=parseInt(date[1]);
		year=parseInt(date[2]);
	}
	else
	{
		// YY[YY]/MM/DD HH:MM:SS
		// Do no allow years other than 2 or 4 letters
		if (date[0].length!=2 && date[0].length!=4) return false;
		// Do not allow single-digit days or months
		if (date[1].length!=2 || date[2].length!=2) return false;
		year=parseInt(date[0]);
		month=parseInt(date[1]);
		day=parseInt(date[2]);
	}
	hour=parseInt(date[3]);
	minute=parseInt(date[4]);
	sec=parseInt(date[5]);

	//alert(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+sec);

	if(isNaN(hour)) hour=0;
	if(isNaN(minute)) minute=0;
	if(isNaN(sec)) sec=0;

	if (isNaN(year)||isNaN(month)||isNaN(day)||day<=0||month<=0||month>12||hour>23||minute>59||year==0) {
		return false;
	}
	else
	{
		if(month!=2)
		{
			if(day>days_month[month-1]) return false;
		}
		else if(year%4!=0)
		{
			if(day>28) return false;
		}
		else if(day>29) return false;
	}
	return true;
}