$(document).ready(function()
{ 
	$(".savebutton").click(function() 
	{  
		var inputs = $('form:first :input');

		var bSuccess=true;
		
		inputs.each(function() 
		{
			
			if($(this).attr('validate')!=undefined)
			{
				var strValidater=$(this).attr('validate');
				
				
				
				var errMsg=$(this).attr('errMsg');
				if($(this).attr('errMsg')!=undefined)
					errMsg=$(this).attr('errMsg');
				else if($(this).attr('id')!=undefined)
					errMsg=$(this).attr('id');
				else if($(this).attr('name')!=undefined)
					errMsg=$(this).attr('name');
				else
					errMsg="this filed";
				
				
				var strType=$(this).attr('type');
				
				
				
				if(strType=="text" || strType=="password" || strType=="textarea")
				{
					
					//Required field
					if(strValidater.search("required")>=0)
					{
						if($.trim($(this).val()).length <= 0)
						{
							alert(errMsg+" is required.");
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else
							bSuccess=true;
					}
				
				
					//Validate alphabet only
					if(strValidater.search("alphabetonly")>=0 && $(this).val()!="")
					{
						var regexLetter = /[a-zA-z]/;
						if(!regexLetter.test($(this).val()))
						{
							alert(errMsg+" must contain alphabet only");
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else
							bSuccess=true;
					}
				
				
				
					//validate email
					if(strValidater.search("email")>=0 && $(this).val()!="")
					{
						var bResult= /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test($(this).val());	
						
						if(!bResult)
						{
							alert("Invalid email address");
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else
							bSuccess=true;
							
					}
				
				
					//validate equal to
					if(strValidater.search("equalTo")>=0)
					{
						var equalTo=$(this).attr('equalTo');
						if(equalTo==undefined)
						{
							alert('equalTo is not specified');
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else if($('#'+equalTo).val()!=$(this).val() && equalTo!=undefined)
						{
							alert("Invalid "+errMsg);
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else
							bSuccess=true;
					}
				
				
					//validate minlength
					if(strValidater.search("minlength")>=0 && $(this).val()!="")
					{
						var minlength=$(this).attr('minlength');
						if(minlength==undefined)
						{
							alert('minlength is not specified');
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else if($(this).val().length<minlength)
						{
							alert(errMsg+ " should be more than "+minlength+ " characters");
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else
							bSuccess=true;
					}
				
				
					//validate maxlength
					if(strValidater.search("maxlength")>=0 && $(this).val()!="")
					{
						var maxlength=$(this).attr('maxlength');
						if(maxlength==undefined)
						{
							alert('maxlength is not specified');
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else if($(this).val().length>maxlength)
						{
							alert(errMsg+ " should be less than "+maxlength+ " characters");
							bSuccess=false;
							$(this).focus();
							return false;
						}
						else
							bSuccess=true;
					}
					
					//validate digits
					if(strValidater.search("digits")>=0 && $(this).val()!="")
					{
						if(!/^\d+$/.test($(this).val()))
						{
							alert("Invalid "+errMsg);
							bSuccess=false;
							$(this).focus();
							return false;
						}
					}
					




					// Validate date dd/mm/yyyy or dd-mm-yyyy
					if(strValidater.search("dateUK")>=0 && $(this).val()!="")
					{
						var dtSepS="/";
						var dtSepD="-";
						
						var dtSep="";
						
						if($(this).val()!="")
						{
							var strDate=$(this).val();
							bValid=false;
							
							if(strDate.indexOf(dtSepS)==2 && strDate.indexOf(dtSepS,3)==5 && $(this).val().length==10)
							{
								bValid=true;
								dtSep=dtSepS;
							}
							else if(strDate.indexOf(dtSepD)==2 && strDate.indexOf(dtSepD,3)==5 && $(this).val().length==10)
							{
								bValid=true;
								dtSep=dtSepD;
							}
							else
								bValid=false;
							
							
							
							if(bValid)
							{
								bValidDate=false;
								
								
								var strDay="";
								var strMonth="";
								var strYear="";
								
								var pos1=strDate.indexOf(dtSep);
								var pos2=strDate.indexOf(dtSep,3);
								
								var strDay=strDate.substring(0,pos1);
								var strMonth=strDate.substring(3,pos2);
								var strYear=strDate.substring(6,10);
								
								if(!digits(strDay) || !digits(strMonth) || !digits(strYear))
								{
									alert("Invalid "+errMsg);
									$(this).focus();
									bSuccess=false;
									return false;
								}
								
								
								
								if(strMonth<1 || strMonth>12)
								{
									alert("Invalid "+errMsg);
									bSuccess=false;
									$(this).focus();
									return false;
								}
								if(strYear<1900 || strYear>2200)
								{
									alert("Invalid "+errMsg);
									bSuccess=false;
									$(this).focus();
									return false;
								}
								
								
								var iMaxDay=0;
								if(strMonth==1 || strMonth==3 || strMonth==5 || strMonth==7 ||	strMonth==8 || strMonth==10 || strMonth==12)
									iMaxDay=31;
								else if(strMonth==4 || strMonth==6 || strMonth==9 || strMonth==11)
									iMaxDay=30;
								else if(((strYear % 4 == 0) && (strYear % 100 != 0)) || (strYear % 400 == 0))
									iMaxDay=29;
								else
									iMaxDay=28;
									
								
								if(strDay<1 || strDay>iMaxDay)
								{
									alert("Invalid "+errMsg);
									bSuccess=false;
									$(this).focus();
									return false;
								}
								
								bSuccess=true;
							}
							else
							{
								alert("Invalid "+errMsg);
								bSuccess=false;
								$(this).focus();
								return false;
							}
						}
					}
				}
				
				
				
				if(strType=="checkbox")
				{
					if(strValidater.search("required")>=0)
					{
						if(!$(this).is(':checked'))
						{
							if(errMsg==undefined)
								alert("Check box required")
							else
								alert(errMsg);
							bSuccess=false;
							return false;
						}
					}
					else
						bSuccess=true;
				}
				
				if(strType=="select-one")
				{
					
					if(strValidater.search("required")>=0)
					{
						
						if($(this).val()==0 || $(this).val()=="")
						{
							alert("Please select "+errMsg);
							bSuccess=false;
							$(this).focus();
							return false;
						}
				
					}
					else
						bSuccess=true;
						
						
				}
				
				
				
				
			}
		});

		if(bSuccess)
			$("form:first").submit();
	});
}); 





//Validate digit only
digits=function(value) 
{
	return /^\d+$/.test(value);
};









