/////////////////////////////////////
// function DateAdd(DateType,Period,MyTmpDate)
// function IsExDateTime(Str)
// function IsDateTime(Str)
// function IsExTime(Str)
// function IsTime(Str)
// function IsExDate(Str)
// function IsDate(Str)
// function IsPhone(Str)
// function IsMail(Str)
// function IsText(Str)
// function IsNumber(Str)
// function ErrorMsg(MyOpject,Msg,Type)
// function Check(MyForm)
// function GoCheckForm(MyForm)
// function GoCheck()
// function GoFill(MyForm)
////////////////////////////////////////////
// simulate dateadd function
function DateAdd(DateType,Period,MyTmpDate)
{
	var millisecond=1;
	var second=millisecond*1000;
	var minute=second*60;
	var hour=minute*60;
	var day=hour*24;
	var year=day*365;

	var newDate;
	var dVal=MyTmpDate.valueOf();
	switch(DateType)
	{
		case "ms": newDate=new Date(dVal+millisecond*Period); break;
		case "s" : newDate=new Date(dVal+second     *Period); break;
		case "mi": newDate=new Date(dVal+minute     *Period); break;
		case "h" : newDate=new Date(dVal+hour       *Period); break;
		case "d" : newDate=new Date(dVal+day        *Period); break;
		case "y" : newDate=new Date(dVal+year       *Period); break;
	}
	return newDate;
}
////////////////////////////////////////////
// If Approval value is available then make 
// it change it's value to be OFF or On
function GoFill(MyForm)
{
  if (Check())
  {
	if (!MyForm.Approve.checked) 
	{
		MyForm.Approve.value="OFF";
		MyForm.Approve.checked=1;
	}
	MyForm.submit();
  }
}
////////////////////////////////////////////
// CHECK THE FORM And Submit it
function GoCheck(ButtonControl)
{
  GoCheckForm(document.forms[0],ButtonControl);
}
////////////////////////////////////////////
// CHECK THE FORM And Submit it
function GoCheckForm(MyForm,ButtonControl)
{
  if (Check(MyForm)) 
	{
		ButtonControl.disabled=true;
		MyForm.submit();
	}
		
}
////////////////////////////////////////////
// CHECK THE FORM
function Check(MyForm)
{
   Index=0
   for (e=0;e<MyForm.length;e++)
   {
	MyObject=MyForm.elements[e];
	if (MyObject.type=="text" || MyObject.type=="textarea" || MyObject.type=="file" || MyObject.type=="password") 
	{
		Str=MyObject.value;
		Cond1=Flags[Index].substr(0,1);
		Cond2=Flags[Index].substr(2);
		if (Cond1=="E" 	     && Str==""                  ) return ErrorMsg(MyObject,"You Must enter this field!\n"               ,1);
		if (Cond2=="Email"   && !IsMail(Str)   && Str!="") return ErrorMsg(MyObject,"Wrong Email format!\n eg: name@domain.com\n",1);
		if (Cond2=="Date"    && !IsDate(Str)   && Str!="") return ErrorMsg(MyObject,"Wrong Date format!\n eg: dd/mm/yyyy\n"      ,1);
		if (Cond2=="ExtDate" && !IsExDate(Str) && Str!="") return ErrorMsg(MyObject,"Wrong Date format!\n eg: >=dd/mm/yyyy\n"    ,1);
		if (Cond2=="Time"    && !IsTime(Str)   && Str!="") return ErrorMsg(MyObject,"Wrong Time format!\n eg: 09:20:30 PM\n"     ,1);
		if (Cond2=="ExtTime" && !IsExTime(Str) && Str!="") return ErrorMsg(MyObject,"Wrong Time format!\n eg: >=09:20:30 PM\n"   ,1);
		if (Cond2=="DateTime"    && !IsDateTime(Str)   && Str!="") return ErrorMsg(MyObject,"Wrong Date / Time format!\n eg: dd/mm/yyyy 09:20:30 PM\n"     ,1);
		if (Cond2=="ExtDateTime" && !IsExDateTime(Str) && Str!="") return ErrorMsg(MyObject,"Wrong Date / Time format!\n eg: >= dd/mm/yyyy 09:20:30 PM\n"   ,1);
		if (Cond2=="AllAChr" && !IsAText(Str)  && Str!="") return ErrorMsg(MyObject,"من فضلك اكتر باللغة العربية هنا!\n"         ,1);
		if (Cond2=="AllChr"  && !IsText(Str)   && Str!="") return ErrorMsg(MyObject,"This field contain only text!\n"            ,1);
		if (Cond2=="AllNum"  && !IsNumber(Str) && Str!="") return ErrorMsg(MyObject,"no text allowed in this field!\n"           ,1);
		if (Cond2=="Phone"   && !IsPhone(Str)  && Str!="") return ErrorMsg(MyObject,"Phone format error!\n eg: (123) 456-678\n"  ,1);
		Index++;
	}
	else
		if (MyObject.type=="select-one" || MyObject.type=="select-multiple")
		{
			Cond1=Flags[Index].substr(0,1);
			if (Cond1=="E" && MyObject.value=="" ) return ErrorMsg(MyObject,"You Must enter this field!"    ,0);
			Index++;
		}
		if (MyObject.type=="radio" || MyObject.type=="checkbox")
		{
			Cond1=Flags[Index].substr(0,1);
			MyParentObject=eval("document."+MyForm.name+"."+MyObject.name);
			if (Cond1=="E" )
			{
				CheckFlag=0;
				for (TmpIndex=0;TmpIndex<MyParentObject.length;TmpIndex++)
                                	if (MyParentObject[TmpIndex].checked) CheckFlag=1;
				if (CheckFlag==0) return ErrorMsg(MyObject,"You Must enter this field!"    ,0);
			}
			TmpFlag=1;
			for (TmpX=e+1;TmpX<MyForm.length;TmpX++)
			{
				if (MyForm.elements[TmpX].type!="undefined")
					if (MyForm.elements[TmpX].name==MyObject.name) 
						{TmpFlag=0;TmpX=MyForm.length;}
			}
			if(TmpFlag==1) Index++;
		}
   }
   return true;
}
////////////////////////////////////////////
// Standerd Error Message
function ErrorMsg(MyOpject,Msg,Type)
{
 alert(" Checking Fields Error! \n \n "+Msg+"\n Please correct your entry ...");
 if (Type==1 && MyObject.style.display != "none") MyOpject.select();
 if (MyObject.style.display != "none") MyOpject.focus();
 return false;
}
////////////////////////////////////////////
// IS ALL NUMBER
function IsNumber(Str)
{
	PointFlag=0;
	if (Str.length==0) return 0;
	for (t=0;t<Str.length;t++)
	{                               
		chr=Str.charCodeAt(t);
		if ((chr<48 || chr>57) && chr!=46 ) return false;
		if (chr==46 && PointFlag==1) return false;
		if (chr==46 ) PointFlag=1;
	}
	return true;
}
///////////////////////////////////////////
// is all text
function IsText(Str)
{
	if (Str.length==0) return 0;
	for (t=0;t<Str.length;t++)
	{
		chr=Str.charCodeAt(t);
		if (!(chr>64 && chr<91 ) && !(chr>96 && chr<123) && !(chr==32	     )) return false;
	}
	return true;
}
///////////////////////////////////////////
// is all arabic text
function IsAText(Str)
{
	if (Str.length==0) return 0;
	for (t=0;t<Str.length;t++)
	{
		chr=Str.charCodeAt(t);
		if ((chr>64 && chr<91 ) || (chr>96 && chr<123)) return false;
	}
	return true;
}
///////////////////////////////////////////
// EMAIL XXX@XXX.XXX
function IsMail(Str)
{
var myEMailIsValid = true;
var myAtSymbolAt = Str.indexOf('@');
var myLastDotAt = Str.lastIndexOf('.');
var mySpaceAt = Str.indexOf(' ');
var myLength = Str.length;

if (myAtSymbolAt < 1 ) {myEMailIsValid = false}
if (myLastDotAt < myAtSymbolAt) {myEMailIsValid = false}
if (myLength - myLastDotAt <= 2)  {myEMailIsValid = false}
if (mySpaceAt != -1)  {myEMailIsValid = false}

return myEMailIsValid

//re=/\w+@\w+\.\w+/
//return re.test(Str);
}
///////////////////////////////////////////
// PHONE (123) 123-1234
function IsPhone(Str)
{
var myPhoneIsValid = true;
Str=Str.replace("(","");
Str=Str.replace(")","");
Str=Str.replace("-","");
Str=Str.replace("-","");
Str=Str.replace(" ","");
if (Str.length>10 || Str.length<6 ) return false;
return IsNumber(Str);

//re=/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/
//return re.test(Str);
}
///////////////////////////////////////////
// Date dd/mm/yyyy
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           || isNaN(Year )) return false;
if (Month<1   || Month>12            || isNaN(Month)) return false;
if (Day<1     || Day>MArray[Month-1] || isNaN(Day  )) return false;

return true;
}
///////////////////////////////////////////
// Allow to add > or >= or <= or < to Date 
function IsExDate(Str)
{
chr=Str.charAt(0);
if (chr==">" || chr=="<")
{
	chr=Str.charAt(1);
	if (chr=="=")
		Str=Str.substr(2,Str.length);
	else
		Str=Str.substr(1,Str.length);
}
return IsDate(Str);
}
////////////////////////////////////////////
// IS Time
function IsTime(Str)                           
{
if (Str.length!=11 && Str.length!=10 && Str.length!=8) return false;
if (Str.charCodeAt(0)<48 || Str.charCodeAt(0)>49) return false;
if (Str.charCodeAt(1)<48 || Str.charCodeAt(1)>57) return false;
if (Str.charCodeAt(3)<48 || Str.charCodeAt(3)>53) return false;
if (Str.charCodeAt(4)<48 || Str.charCodeAt(4)>57) return false;
if (Str.charCodeAt(6)<48 || Str.charCodeAt(6)>53) return false;
if (Str.charCodeAt(7)<48 || Str.charCodeAt(7)>57) return false;
if (Str.charAt(2)!=":" || Str.charAt(5)!=":") return false;
if (Str.length==8) return true;
if (Str.charAt(8)==" ") 
{
	if (Str.charAt(9)!="P" && Str.charAt(9)!="p" && Str.charAt(9)!="A" && Str.charAt(9)!="a") return false;
	if (Str.charAt(10)!="M" && Str.charAt(10)!="m") return false;
}
else
{
	if (Str.charAt(8)!="P" && Str.charAt(8)!="p" && Str.charAt(8)!="A" && Str.charAt(8)!="a") return false;
	if (Str.charAt(9)!="M" && Str.charAt(9)!="m") return false;
}
return true;
}
///////////////////////////////////////////
// Allow to add > or >= or <= or < to Time
function IsExTime(Str)
{
chr=Str.charAt(0);
if (chr==">" || chr=="<")
{
	chr=Str.charAt(1);
	if (chr=="=")
		Str=Str.substr(2,Str.length);
	else
		Str=Str.substr(1,Str.length);
}
return IsTime(Str);
}
////////////////////////////////////////////
// IS Date +Time
function IsDateTime(Str)
{
	MyValues= Str.split(" ") ;
	if (MyValues.length!=3) return false;
	if (!IsDate(MyValues[0]) || !IsTime(MyValues[1] +" "+ MyValues[2]) ) return false;
	return true;
}
///////////////////////////////////////////
// Allow to add > or >= or <= or < to Time
function IsExDateTime(Str)
{
chr=Str.charAt(0);
if (chr==">" || chr=="<")
{
	chr=Str.charAt(1);
	if (chr=="=")
		Str=Str.substr(2,Str.length);
	else
		Str=Str.substr(1,Str.length);
}
return IsDateTime(Str);
}
////////////////////////////////////////////
//get the current HTML or ASP file Name
function GetMyFileName()
{
	var tr = window.location.pathname 
	MyFileName=""
	for (i=tr.length;i>0;i--) 
		if (tr.substring(i,i+1)=="/") 
		{MyFileName=tr.substring(i+1,tr.length);return MyFileName;} 
	return ""
}

