var err=0;
var cnt=0;
var errstring='\nError in ';
function required(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);

		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				if(x.elements[i].value=='')
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
					cnt++;
				}
			}
		}
		}
	}

	function isname(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				p=x.elements[i].value;
				if(isNaN(p))
				{
					if(p=='' || p.length>60)
					{
						errstring=errstring+x.elements[i].id+' ';
						err=1;
						cnt++;
					}
				}
				else
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
					cnt++;
				}
			}
		}
		}
	}

	function isaddress(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				p=x.elements[i].value;
				if(isNaN(p))
				{
					if(p=='' || p.length>200 || p.length<20)
					{
						errstring=errstring+x.elements[i].id+' ';
						err=1;
						cnt++;
					}
				}
				else
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
					cnt++;
				}
			}
		}
		}
	}


	function isnumber(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				if(x.elements[i].value.match("^(\\+|-)?[0-9][0-9]*(\\.[0-9]*)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
			}
		}
		}
	}


	function isposnumber(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				if(x.elements[i].value.match("^[0-9][0-9]*(\\.[0-9]*)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
			}
		}
		}
	}


	function isemail(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{

			if(x.elements[i].value.match("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})")==null)
			{
				errstring=errstring+x.elements[i].id+' ';
				err=1;
			  	cnt++;
			}
			}
		}
		}
	}

	function isipaddress(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				if(x.elements[i].value.match("^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
			}
		}
		}
	}

	function ishostname(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{
			if(x.elements[i].id==param)
			{
				if(x.elements[i].value.match("^http://www\\.([a-zA-Z][a-zA-Z0-9]+)\\.([a-zA-Z])([a-zA-Z0-9]+)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
			}
		}
		}
	}


	function isphonenumber(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{

			if(x.elements[i].id==param)
			{
				p=x.elements[i].value;
				if(x.elements[i].value.match("^[0-9][0-9]*(\\.[0-9]*)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
				else if(p.length>14 || p.length<7)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
					cnt++;
				}
			}
		}
		}
	}

	function ispin(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{

			if(x.elements[i].id==param)
			{
				p=x.elements[i].value;
				if(x.elements[i].value.match("^[0-9][0-9]*(\\.[0-9]*)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
				else if(p.length!=10)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
					cnt++;
				}
			}
		}
		}
	}


	function isupper(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{

			if(x.elements[i].id==param)
			{
				p=x.elements[i].value;
				if(x.elements[i].value.match("^([A-Z]*)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
			}
		}
		}
	}

	function islower(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
		var x=document.getElementById(document.forms[j].id);
		for(var i=0;i<x.length;++i)
		{

			if(x.elements[i].id==param)
			{
				p=x.elements[i].value;
				if(x.elements[i].value.match("^([a-z]*)?$")==null)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
				  	cnt++;
				}
			}
		}
		}
	}


	function isdate(param)
	{
	for(var j=0;j<document.forms.length;++j)
		{
	    	//var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
	 		var x=document.getElementById(document.forms[j].id);
			for(var i=0;i<x.length;++i)
			{
				if(x.elements[i].id==param)
				{
				var flag=0;
		    	var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

			  //check to see if in correct format
			  if ((!x.elements[i].value.match(objRegExp)) || (x.elements[i].value==''))
			 	{
			 		flag=0;
					//doesn't match pattern, bad date
			 	}

			  else{
			    var strSeparator = x.elements[i].value.substring(2,3)
			    var arrayDate = x.elements[i].value.split(strSeparator);
			    //create a lookup for months not equal to Feb.
			    var arrayLookup = { '01' : 31,'03' : 31,
			                        '04' : 30,'05' : 31,
			                        '06' : 30,'07' : 31,
			                        '08' : 31,'09' : 30,
			                        '10' : 31,'11' : 30,'12' : 31}
			    var intDay = parseInt(arrayDate[1],10);

			    //check if month value and day value agree
			    if(arrayLookup[arrayDate[0]] != null) {
			      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
			        {
			         //found in lookup table, good date
			         flag=1;
			    	}
			    }

			    //check for February (bugfix 20050322)
			    //bugfix  for parseInt kevin
			    //bugfix  biss year  O.Jp Voutat
			    var intMonth = parseInt(arrayDate[0],10);
			    if (intMonth == 2) {
			       var intYear = parseInt(arrayDate[2]);
			       if (intDay > 0 && intDay < 29)
			       {
						flag=1;
						//true
			       }
			       else if (intDay == 29) {
			         if ((intYear % 4 == 0) && (intYear % 100 != 0) ||
			             (intYear % 400 == 0)) {
			              // year div by 4 and ((not div by 100) or div by 400) ->ok
			             //return true;
			             flag=1;
			         }
			       }
			    }
			  }
			if(flag==0)
			{
			  //return false; //any other values, bad date
				errstring=errstring+x.elements[i].id+' ';
				err=1;
				cnt++;
				break;
			}


		    	/*	if ((x.elements[i].value.match(RegExPattern)) && (x.elements[i].value!=''))
					{

		    		}
					else
					{
						errstring=errstring+x.elements[i].id+' ';
						err=1;
						cnt++;

		    		}*/
	    		}
	    	}
   		}
	}

	function istodaysdate(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
	   		//var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
	 		var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
	 		var x=document.getElementById(document.forms[j].id);
			for(var i=0;i<x.length;++i)
			{
				if(x.elements[i].id==param)
				{
		    		if ((x.elements[i].value.match(objRegExp)) && (x.elements[i].value!=''))
					{
	               		var strSeparator = x.elements[i].value.substring(2,3)
	               		var date_array = x.elements[i].value.split(strSeparator);
	     				var xday = date_array[1];
	    			  	var xmonth = date_array[0]-1;
	    			  	var xyear=date_array[2];
						var flag=1;

						//alert(year+'-'+month+'-'+day);
						source_date = new Date();
	      				//alert(source_date.getFullYear()+'-'+ source_date.getMonth()+'-'+source_date.getDate())

	     			 	if(xyear != source_date.getFullYear())
					      {
					         flag=0;
					      }
					      else if(xmonth != source_date.getMonth())
					      {
					         flag=0;
					      }
					      else if(xday != source_date.getDate())
					      {
					        flag=0;
					      }
					 }
					 else
					 {
					    flag=0;
					 }
				}
				if(flag==0)
				{
					errstring=errstring+x.elements[i].id+' ';
					err=1;
					cnt++;
					break;
				}

			}
	 	}
	}

	function isvaliddate(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
	   		//var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
	 		var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
	 		var x=document.getElementById(document.forms[j].id);
			for(var i=0;i<x.length;++i)
			{
				if(x.elements[i].id==param)
				{
		    		if ((x.elements[i].value.match(objRegExp)) && (x.elements[i].value!=''))
					{
	               		var strSeparator = x.elements[i].value.substring(2,3)
	               		var date_array = x.elements[i].value.split(strSeparator);
	     				var xday = date_array[1];
	    			  	var xmonth = date_array[0] - 1;
	    			  	var xyear=date_array[2]
	      				source_date = new Date();
	      				var flag=1;
	     			 	if(xyear < source_date.getFullYear())
					      {
					         flag=0
					      }
					      else if(xyear == source_date.getFullYear())
					      {
						      if(xmonth < source_date.getMonth())
						      {
						         flag=0
						      }
						      else if(xmonth == source_date.getMonth())
						      {
								  if(xday < source_date.getDate())
							      {
							        flag=0
							      }
						      }
						  }

					 }
					 else
					 {
					    flag=0
					}

					if(flag==0)
					{
						errstring=errstring+x.elements[i].id+' ';
						err=1;
						cnt++;
						break;
					}
				}


			}
	 	}
	}



	function isssn(param)
	{
		for(var j=0;j<document.forms.length;++j)
		{
			var x=document.getElementById(document.forms[j].id);
			for(var i=0;i<x.length;++i)
			{

				if(x.elements[i].id==param)
				{
					ssn=x.elements[i].value;
					var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);
					var numDashes = ssn.split('-').length - 1;
					if (matchArr == null || numDashes == 1)
					{
						errstring=errstring+x.elements[i].id+' ';
						err=1;
						cnt++;
					}
					else
					if (parseInt(matchArr[1],10)==0)
					{
						aerrstring=errstring+x.elements[i].id+' ';
						err=1;
						cnt++;
					}

			   	}
			}
		}

	}

	function showerror()
	{
		if(err==1)
		{
			str=cnt+ ' Errors in Entries! Check the data entered! or empty fields !!'+errstring+' fields ';
			alert(str);
			//alert(err);
			errstring='\n';
			cnt=0;
			err=0;
			return false;
		}
		err=0;
		cnt=0;
		return true;
	}
