function Check()
{
   Index=0
   for (e=0;e<document.forms[0].length;e++)
   {
	if (document.forms[0].elements[e].type=="text" || document.forms[0].elements[e].type=="textarea" || document.forms[0].elements[e].type=="file" || document.forms[0].elements[e].type=="password")
	{
		CoChr=0;
		CoNum=0;
		AllChr=1;
		AllNum=1;
		AllNumW=1;
		Str=document.forms[0].elements[e].value;
		Cond1=Flags[Index].substr(0,1);
		Cond2=Flags[Index].substr(2);
		if (Cond1=="E" && Str=="" ) return ErrorMsg(e,"You Must enter this field!");
		for (t=0;t<Str.length;t++)
		{
			chr=Str.charCodeAt(t);
			if (chr>47 && chr<58 ) {AllChr=0;CoNum=1;}
			if (chr>64 && chr<91 ) {AllNum=0;AllNumW=0;CoChr=1;}
			if (chr>96 && chr<123) {AllNum=0;AllNumW=0;CoChr=1;}
			if (!(chr>47 && chr<58 ) && !(chr>64 && chr<91 ) && !(chr>96 && chr<123) ) AllNum=0;
			if (!(chr>47 && chr<58 ) && !(chr>64 && chr<91 ) && !(chr>96 && chr<123) && !(chr==45 || chr==40 || chr==41)) AllNumW=0;
			if (chr==39) return ErrorMsg(e,"Invalid Character Detected!");
		}
		if (Cond2=="Email" && ! IsEmail(Str) && Str!="") return ErrorMsg(e,"Wrong Email format!");
		if (Cond2=="Date" && ! IsDate(Str) && Str!="") return ErrorMsg(e,"Wrong Date format!");
		if (Cond2=="AllChr"  && AllChr ==0) return ErrorMsg(e,"This field contain only text!");
		if (Cond2=="AllNum"  && AllNum ==0) return ErrorMsg(e,"no text allowed in this field!");
		if (Cond2=="AllNumW" && AllNumW==0) return ErrorMsg(e,"no text allowed in this field!");
		Index++;
	}
	else
	{
		if (document.forms[0].elements[e].type=="radio" || document.forms[0].elements[e].type=="select-one" || document.forms[0].elements[e].type=="select-multiple"|| document.forms[0].elements[e].type=="checkbox")
		{
			Cond1=Flags[Index].substr(0,1);
			if (Cond1=="E" && document.forms[0].elements[e].value=="" )
			{
			 alert(" Checking Fields Error! \n \n You Must enter this field! \n Please correct your entry ...");
			 document.forms[0].elements[e].focus();
			 return false;
			}
			Index++;
		}
	}
   }
   return true;
}



function ErrorMsg(e,Msg)
{
 alert(" Checking Fields Error! \n \n "+Msg+"\n Please correct your entry ...");
 document.forms[0].elements[e].select();
 document.forms[0].elements[e].focus();
 return false;
}



function IsEmail(Str)
{
CountDotSign=0;
CountAtSign=0;
CorrectArrange=0;
AtAt=Str.indexOf("@");
if (AtAt==-1) return false;
if (Str.charAt(Str.length-1)==".") return false;
if (Str.charAt(0)=="." || Str.charAt(0)=="@") return false;
FlagRased=0;
for (t=0;t<Str.length;t++)
{
	chr=Str.charAt(t);
	if (chr==" " || chr=="/" || chr=="\\" || chr=="?" ) return false;
	if ((chr=="." || chr=="@") && FlagRased==1) return false;
	FlagRased=0;
	if (chr==".") {FlagRased=1;}
	if (chr=="@") {FlagRased=1;}
}
for (t=AtAt;t<Str.length;t++)
{
	chr=Str.charAt(t);
	if (chr==".") CountDotSign++;
	if (chr=="@") CountAtSign++;
}
if (CountDotSign==1 && CountAtSign==1) return true; 
return false;
}

function IsDate(Str)
{
MArray=new Array (31,29,31,30,31,30,31,31,30,31,30,31);
CDate= new Array(3);
TmpBuffer="";
CurrentPos=0;
for (t=0;t<Str.length;t++)
{
	chr=Str.charAt(t);
	if (chr=="/" || chr=="-" || chr=="\\" ||  chr=="," )
	{
		if (CurrentPos<4)
		{
			CDate[CurrentPos]=TmpBuffer;
			TmpBuffer="";
			CurrentPos++;
		}
		else
	                return false;
	}
	else	TmpBuffer+=chr;
}
if (CurrentPos!=2) return false;
CDate[CurrentPos]=TmpBuffer;
Day  =parseInt(CDate[0],10);
Month=parseInt(CDate[1],10);
Year =parseInt(CDate[2],10);

if (Year<1900 || Year>2500          ) return false;
if (Month<1   || Month>12           ) return false;
if (Day<1     || Day>MArray[Month-1]) return false;

return true;
}

