/////////////////////////////////////////////////////////////
///////////////FORM VALIDATION FUNCTIONS/////////////////////
/////////////////////////////////////////////////////////////
//////////////////configuration variables///////////////////////////
//dateFormat : date format (i.e: DD/MM/YYYY)
//entryTypes : DataTypes (i.e: email,number,date)
//ValidDomainExtensions : valid email domains
//ArabicLetter : arabic letters
/////////////////available functions/////////////////////////////////
//validateAction(FormObject)
//ValidateDataType(FormObject)
//ValidateDetails(FormObject)
//ValidateFormItems(FormObject)
//ValidateUsers(FormObject) : validation for add user form
//ValidateModifyUsersForm(FormObject) : validation of modify user form
//ValidateUsersTypes(FormObject)
//ValidateCssManagerForm(FormObject)
//ValidateLawyerForm(FormObject)
//ValidateClientTypeForm(FormObject)
//ValidateCalendarForm(FormObject)
//ValidateConsultations()
//ValidateConsultationReply()
//ValidateCaseForm(FormObject)
//ValidateCaseSearchForm(FormObject)
//ValidationNoteBook(FormObject)
//ValidationNoteBookGroup(FormObject)
//ValidateSectionsForm(FormObject)
//ValidateSendMail(FormObject)
//ValidateMailList(FormObject)
//ValidationAdvertisementForm(FormObject)
//ValidationTemplate(obj,Required,dataType,LengthGreaterThan,LengthLessThan,DoNotContain,[FieldCaption])
//ValidateClientForm(FormObject)
//LoginFormValidation(FormObject)
//check_date(field,format)
//IsDateBeforeToday(datefield1,format)
//isEmpty(obj)
//isFirstSelected(obj)
//isNull(obj)
//isDisabled(obj)
//isNumber(obj)
//isLengthLessThanExpected(obj,leastLength)
//isLengthGreaterThanExpected(obj,MaximumLength)
//contains(obj,stringToSearch)
//ClientResponse(obj,message)
//compareDates(datefield1,datefield2,format)
//check_email(obj)
//GetFormFieldByName(FormObject,FieldName)
//GetTageByName(tagName,ItemName)
//SpecialStringFormat(obj,StringFormat)
//getDay(datefield,format)
//getMonth(datefield,format)
///getYear(datefield,format)
//multipleValidation(FormObject,FieldsIndexes,RequiredArray,ValidationTypeArray,MinimumLengthArray,MaximumLengthArray,RubbishTextArray)
/////////////////////////////////////////////////////////////
var dateFormat = "DD/MM/YYYY";
//dataTypes that should be validated                
var EntryTypes = new Array("emailEntry","numberEntry","dateTimeEntry","selectEntry","checkBox");
//valid email domains
var ValidDomainExtensions = new Array("com" ,"net","gov","org","edu","biz" ,"tv","us"); 
//arabic characters
var ArabicLetter = "ذضصثقفغعهخحجدطكمنتالبيسشئءؤرلاىةوزظألألآآ";
//////////////////////////////////////////////////////
/////////////////////////////////////////////////////
//validate action form
//////////////////////////////////////////////

	
function ValidateِِArabicLawForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"Country");
	alert(obj);
	return false;
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","الدولة")   )
	{
		return false;
	}
	 obj = GetFormFieldByName(FormObject,"Category");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","التصنيف")   )
	{
		return false;
	}
	var obj = GetFormFieldByName(FormObject,"Title");
	if( !ValidationTemplate(obj,true,"text",1,-1,"<>","العنوان ")  )
	{
		return false;
	}
	
	return true;
}
	
function validateAction(FormObject){
	var obj = GetFormFieldByName(FormObject,"ActionName");
	if( !ValidationTemplate(obj,true,"text",1,50,"'? %&@(*-);,<>/\[]+^$#"+ArabicLetter,"ACTION NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ActionFile");
	if( !ValidationTemplate(obj,true,"text",1,50,"()@,?%'*<>"+ArabicLetter,"ACTION FILE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ActionCaption");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'<>","ACTION CAPTION")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ActionClass");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'<>","ACTION CLASS")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ActionOperation");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'<>","ACTION OPERATION")   )
	{
		return false;
	}
	return true;
}
///////////////////////////////////////////////////////////////////////////////
//validate clients (calendar)
/////////////////////////////////////////////////////////////////////////////
function ValidateClientForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"ClientName");
	if( !ValidationTemplate(obj,true,"text",-1,50,"'<>","اسم المستخدم")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientCountry");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'","الدولة  ")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientCity");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'","المدينة")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientAddress");
	if( !ValidationTemplate(obj,false,"text",-1,-1,"'","العنوان")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientTel");
	if( !ValidationTemplate(obj,false,EntryTypes[1],-1,50,"'","رقم الهاتف")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientFax");
	if( !ValidationTemplate(obj,false,EntryTypes[1],-1,50,"'","رقم الفاكس")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientMob");
	if( !ValidationTemplate(obj,false,EntryTypes[1],-1,50,"'","رقم الجوال")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientEmail");
	if( !ValidationTemplate(obj,false,EntryTypes[0],-1,50,"'","البريد الإلكتروني")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientURL");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'","CLIENT URL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ClientNotes");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'","ملاحظات")   )
	{
		return false;
	}

	return true;
}
////////////////////////////////////////////////////////////////////////
//client type validation 
///////////////////////////////////////////////////////////////////////
function ValidateClientTypeForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"ClientTypeName");
	var obj = GetFormFieldByName(FormObject,"TreeItemTextBox");
	if( !ValidationTemplate(obj,true,"text",1,-1,"<>","عنوان الموضوع ")  )
	{
		return false;
	}
	var obj = GetFormFieldByName(FormObject,"Content");
	if( !ValidationTemplate(obj,true,"text",1,-1,""," محتوى الموضوع ")  )
	{
		return false;
	}
	//if( !ValidationTemplate(obj,true,"text",-1,50,"'.+=-*&^%$#@!~|:',./\<.>","CLIENT TYPE NAME")   )
	//{
	//	return false;
	//}
	//obj = GetFormFieldByName(FormObject,"ClientTypeDesc");
	//if( !ValidationTemplate(obj,false,"text",-1,50,"',/\<>","CLIENT TYPE NAME")   )
	//{
	//	return false;
	//}
	return true;
}
//////////////////////////////////////////////////////////////////////////////
//validate calendar form
///////////////////////////////////////////////////////////////////////////
function ValidateCalendarForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"CalendarName") 
	if ( !ValidationTemplate(obj,true,"text",-1,50,"'=+-<>","اسم الميعاد ") )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CalendarPlace") 
	if ( !ValidationTemplate(obj,false,"text",-1,50,"'=+-<\>","المكان ") )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CalendarDate") 
	if ( !ValidationTemplate(obj,true,EntryTypes[2],-1,-1,"'=+-<>","التاريخ ") )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CalenderNotes") 
	if ( !ValidationTemplate(obj,false,"text",-1,4000,"'=+-<\>","الملاحظات") )
	{
		return false;
	}
	return true;
}
///////////////////////////////////////////////////////////////////////////////
//validate case form
//////////////////////////////////////////////////////////////////////////////
function ValidateCaseForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"CaseFilesListBox");
	if (isNull(obj) == false)
	{
		SelectAllListItem(obj);
	}
	obj = GetFormFieldByName(FormObject,"CaseRecievedFilesListBox");
	if (isNull(obj) == false)
	{
		SelectAllListItem(obj);
	}
	obj = GetFormFieldByName(FormObject,"CaseCourtAddress");
	if( !ValidationTemplate(obj,false,"text",-1,50,"',/\<>","CASE COURT ADDRESS")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseCourtName");
	if( !ValidationTemplate(obj,true,"text",-1,50,"',/\*=+-<>","CASE COURT NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseName");
	if( !ValidationTemplate(obj,true,"text",-1,50,"',/\*=+()[]|:.,;'?~@#!$%^&*-<>","CASE NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseFileNumber");
	if( !ValidationTemplate(obj,true,EntryTypes[1],-1,50,"',/\*=+-<>","CASE FILE NUMBER")   )
	{
		return false;
	}
	return true;
}
/////////////////////////////////////////////////////////////////////////////
//validate search form of cases
//////////////////////////////////////////////////////////////////////////////
function ValidateCaseSearchForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"CaseCourtAddress");
	if( !ValidationTemplate(obj,false,"text",-1,50,"',/\<>","CASE COURT ADDRESS")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseCourtName");
	if( !ValidationTemplate(obj,false,"text",-1,50,"',/\*=+-<>","CASE COURT NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseName");
	if( !ValidationTemplate(obj,false,"text",-1,50,"',/\*=+()[]|:.,;'?~@#!$%^&*-<>","CASE NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseFileNumber");
	if( !ValidationTemplate(obj,false,EntryTypes[1],-1,50,"',/\*=+-<>","CASE FILE NUMBER")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"CaseYear");
	if( !ValidationTemplate(obj,false,EntryTypes[1],-1,50,"',/\*=+-<>","CASE YEAR")   )
	{
		return false;
	}
	return true;
}
////////////////////////////////////////////////////////////////////////
//validate lawyers form
///////////////////////////////////////////////////////////////////////
function ValidateLawyerForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"Name");
	if( !ValidationTemplate(obj,true,"text",-1,50,"'.+=-*&^%$#@!~|:',./\<.>","LAWYER NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Tel");
	if( !ValidationTemplate(obj,false,EntryTypes[1],-1,50,"',/\<>","LAWYER TELEPHONE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Email");
	if( !ValidationTemplate(obj,false,EntryTypes[0],-1,50,"',/\<>","LAWYER EMAIL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Address");
	if( !ValidationTemplate(obj,false,"text",-1,50,"',/\<>","LAWYER ADDRESS")   )
	{
		return false;
	}
	return true;
}
/////////////////////////////////////////////////////////////////////
//validate dataTypes form
/////////////////////////////////////////////////////////////////////
function ValidateDataType(FormObject){
	var obj = GetFormFieldByName(FormObject,"DataTypeName");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@/\[]();,<>^$#","DATA TYPE NAME")   )
	{
		return false;
	}
	return true;
}
//////////////////////////////////////////////////////////////////////
//validate details form
//////////////////////////////////////////////////////////////////////
function ValidateDetails(FormObject){
	var obj = GetFormFieldByName(FormObject,"DetailName");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?*<>.&[]()#;,","DETAIL NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"DetailCaption");
	if( !ValidationTemplate(obj,true,"text",1,50,"<>'","DETAIL CAPTION")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"DetailLength");
	if( !ValidationTemplate(obj,false,EntryTypes[1] ,-1,10,"<>'","DETAIL LENGTH")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"DataTypeID");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","DATA TYPE ID")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"FormItemID");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","FORM ITEM ID")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"UsersTypeID");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","USERS TYPE ID")   )
	{
		return false;
	}
	return true;
}
////////////////////////////////////////////////////////////////////////////
//validate form items form
////////////////////////////////////////////////////////////////////////////
function ValidateFormItems(FormObject){
	var obj = GetFormFieldByName(FormObject,"FormItemName");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@();<>[],","FORM ITEM NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"FormItemType");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@();,[]","FORM ITEM TYPE")   )
	{
		return false;
	}
	return true;
}
///////////////////////////////////////////////////////////////////
//validate tables form
///////////////////////////////////////////////////////////////////
function ValidateTables(FormObject){
	var obj = GetFormFieldByName(FormObject,"TableName");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@();,#&<>","TABLE NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"TableCaption");
	if( !ValidationTemplate(obj,false,"text",-1,50,"'?%&@();,<>","TABLE CAPTION")   )
	{
		return false;
	}
	return true;
}
///////////////////////////////////////////////////////////////////////////
//validate treeItem (CMS)
//////////////////////////////////////////////////////////////////////////
function ValidateTreeItem(FormObject){
	var	obj = GetFormFieldByName(FormObject,"TreeItemTitle");
	if (!ValidationTemplate(obj,true,"text",1,50,"'<>[];","TREE ITEM TITLE"))
	{
		return false;
	}  
	obj = GetFormFieldByName(FormObject,"TreeItemOrder");
	if (!ValidationTemplate(obj,false,EntryTypes[1],-1,10,"<>'","TREE ITEM ORDER"))
	{
		return false;
	}  
	return true;
}
////////////////////////////////////////////////////////////////////////////
//validate mailList Entries
////////////////////////////////////////////////////////////////////////////
function ValidateMailList(FormObject){
	var	obj = GetFormFieldByName(FormObject,"MailListName");
	if (!ValidationTemplate(obj,true,"text",1,50,"'<>()*@~!?/\=+-*^%$#","MAIL LIST NAME"))
	{
		return false;
	}  
	obj = GetFormFieldByName(FormObject,"MailListEmail");
	if (!ValidationTemplate(obj,true,EntryTypes[0],-1,50,"<> '","MAIL LIST EMAIL"))
	{
		return false;
	}  
	return true;
}
////////////////////////////////////////////////////////////////////////////
//validate send mail form
function ValidateSendMail(FormObject)
{
	var	obj = GetFormFieldByName(FormObject,"MailListMessageTitle");
	if (!ValidationTemplate(obj,true,"text",1,50,"<>","عنوان الرسالة"))
	{
		return false;
	}  
	var	obj = GetFormFieldByName(FormObject,"SourceEmailTextBox");
	if (!ValidationTemplate(obj,true,EntryTypes[0],1,50,"","بريد الراسل"))
	{
		return false;
	}  
	return true;	
}
///////////////////////////////////////////////////////////////////////////
//users modify form
///////////////////////////////////////////////////////////////////////////
function ValidateModifyUsersForm(FormObject){
	var obj = GetFormFieldByName(FormObject,"Name");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","الاسم")   )
	{
		return false;
	}
	var obj = GetFormFieldByName(FormObject,"username");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","اسم المستخدم")   )
	{
		return false;
	}
	
	obj = GetFormFieldByName(FormObject,"password");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","كلمةالسر")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Confirmpassword");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","تأكيد كلمة المرور")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"EmailAddress");
	if( !ValidationTemplate(obj,true,EntryTypes[0],-1,50,"'<> []=*","البريد الإلكتروني")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"usersTypeID");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","USERS TYPE ID")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"StartDate");
	if( !ValidationTemplate(obj,true,EntryTypes[2],1,-1,"'","START DATE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"EndDate");
	if( !ValidationTemplate(obj,true,EntryTypes[2],1,-1,"'","EXPIRATION DATE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"StartDate");
	var obj2 = GetFormFieldByName(FormObject,"EndDate");
	if ( compareDates(obj,obj2,dateFormat) == 1   )
	{
		ClientResponse( obj , "START DATE connot be greater than EXPIRATION DATE");
		return false;
	}	
	return true;
}
//////////////////////////////////////////////////////////////////////////
//users adding form
//////////////////////////////////////////////////////////////////////////
function ValidateUsers(FormObject){
	var obj = GetFormFieldByName(FormObject,"Name");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","الاسم")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"username");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","اسم المستخدم")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"password");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","كلمةالسر")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Confirmpassword");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","تأكيد كلمة المرور")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"EmailAddress");
	if( !ValidationTemplate(obj,true,EntryTypes[0],-1,50,"'<> []=*","البريد الإلكتروني")   )
	{
		return false;
	}
	var obj = GetFormFieldByName(FormObject,"OccupationID");
	
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","الوظيفة")   )
	{
		return false;
	}
	/*obj = GetFormFieldByName(FormObject,"Country");
	if( !ValidationTemplate(obj,true,"text",5,50,"'<>","الدولة")   )
	{
		return false;
	}*/
	obj = GetFormFieldByName(FormObject,"City");
	if( !ValidationTemplate(obj,true,"text",2,50,"'<>","المدينة")   )
	{
		return false;
	}
	
	
	obj = GetFormFieldByName(FormObject,"usersTypeID");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"","USERS TYPE ID")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"StartDate");
	if( !ValidationTemplate(obj,true,EntryTypes[2],1,-1,"'","START DATE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"StartDate");
	if ( IsDateBeforeToday(obj,dateFormat)   == -1   )
	{
		ClientResponse( obj , "START DATE should be greater than or equal current date");
		return false;
	}	
	obj = GetFormFieldByName(FormObject,"EndDate");
	if( !ValidationTemplate(obj,true,EntryTypes[2],1,-1,"'","EXPIRATION DATE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"StartDate");
	var obj2 = GetFormFieldByName(FormObject,"EndDate");
	if ( compareDates(obj,obj2,dateFormat) == 1   )
	{
		ClientResponse( obj , "START DATE connot be greater than EXPIRATION DATE");
		return false;
	}	
	obj = GetFormFieldByName(FormObject,"EndDate");
	if ( IsDateBeforeToday(obj,dateFormat)   == -1   )
	{
		ClientResponse( obj , "EXPIRATION DATE should be greater than or equal current date");
		return false;
	}	
	return true;
}
/////////////////////////////////////////////////////////////////////////////
//validate users Types form
/////////////////////////////////////////////////////////////////////////////
function ValidateUsersTypes(FormObject){
	var obj = GetFormFieldByName(FormObject,"usersTypeName");
	if( !ValidationTemplate(obj,true,"text",1,50,"?%<>&@()*';,[]=!~","USERS TYPE NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"HeaderUserControl");
	if( !ValidationTemplate(obj,false,"text",1,50,"?%<>&@()*';,[]=!~","HEADER USER CONTROL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"RightLinksUserControl");
	if( !ValidationTemplate(obj,false,"text",1,50,"?%<>&@()*';,[]=!~","RIGHT LINKS USER CONTROL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"FooterUserControl");
	if( !ValidationTemplate(obj,false,"text",1,50,"?%<>&@()*';,[]=!~","FOOTER USER CONTROL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"LeftLinksUserControl");
	if( !ValidationTemplate(obj,false,"text",1,50,"?%<>&@()*';,[]=!~","LEFT LINKS USER CONTROL")   )
	{
		return false;
	}
	return true;
}
/////////////////////////////////////////////////////////////////////////////
//validate login form
/////////////////////////////////////////////////////////////////////////////
function LoginFormValidation(FormObject){
	var obj = GetFormFieldByName(FormObject,"UserNameTextBox");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'*@()><","اسم المستخدم ")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"PasswordTextBox");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'@()<>","كلمةالسر")  )
	{
		return false;
	}
	return true;
}
/////////////////////////////////////////////////////////////////////////////
//////////////validations for consultation module////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//validate Consultations
/////////////////////////////////////////////////////////////////////////////
function ValidateConsultations(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"ConsultationRequester");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'@()[]=.*&#<>","CONSULTATION REQUESTER")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ConsultationEmail");
	if( !ValidationTemplate(obj,true,EntryTypes[0],1,-1,"'( )[]=*&#<>","CONSULTATION EMAIL")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ConsultationTitle");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'*@()><*=[].","CONSULTATION TITLE")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ReplyTitle");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'*@()><*=[].","REPLY TITLE")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ReplyDate");
	if( !ValidationTemplate(obj,false,EntryTypes[2],1,-1,"'*@()><*=[].","REPLY DATE")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Reply");
	if( !ValidationTemplate(obj,false,"text",1,-1,"'","REPLY")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Consultation");
	if( !ValidationTemplate(obj,false,"text",1,-1,"'","CONSULTATION")  )
	{
		return false;
	}
	return true;
}


function ValidateInbox(FormObject)
{
	
	var obj = GetFormFieldByName(FormObject,"ConsultationRequester");

	obj = GetFormFieldByName(FormObject,"Title");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'","موضوع الرسالة")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ToTextBox");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'","المستقبلين")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Content");
	if( !ValidationTemplate(obj,true,"text",1,-1,"","محتوي الرسالة")  )
	{
		return false;
	}
	
	return true;
}
/////////////////////////////////////////////////////////////////////////
function ValidateConsultationReply()
{
	if(document.form1.ReplyTitle.value == "")
	{
		alert("Please enter the Reply Title ...");
		document.form1.ReplyTitle.focus();
		return false;   
	}
}
//////////////////////////////////////////////////////////////////////////////
//advertisemnets
///////////////////////////////////////////////////////////////////////////////
//section form
function ValidateSectionsForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"WidthTextBox");
	if( !ValidationTemplate(obj,true,EntryTypes[1],1,50,"'? %&@(*-);,<>/\[]+^$#"+ArabicLetter,"WIDTH")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"HeightTextBox");
	if( !ValidationTemplate(obj,true,EntryTypes[1],1,50,"'? %&@(*-);,<>/\[]+^$#"+ArabicLetter,"HEIGHT")   )
	{
		return false;
	}
	return true;
}
//advertisments form
function ValidationAdvertisementForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"ImagesURLTextBox");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@*;,<>[]+^$#","IMAGE_URL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"NavigationURLTextBox");
	if( !ValidationTemplate(obj,true,"text",1,50,"'? %&@(*-);,<>[]+^$#","NAVIGATION URL")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"AlternateTextTextBox");
	if( !ValidationTemplate(obj,false,"text",1,50,"'?%&@(*-);,<>/\[]+^$#","ALTERNATE TEXT")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ImpressionTextBox");
	if( !ValidationTemplate(obj,true,EntryTypes[1],1,50,"'? %&@(*-);,<>/\[]+^$#","IMPRESSION")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"KeyWordTextBox");
	if( !ValidationTemplate(obj,false,"text",1,50,"'?%&@*;<>/\[]+^$#","KEYWORD")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"StartDateTextBox");
	if( !ValidationTemplate(obj,true,EntryTypes[2],1,50,"'? %&@(*-);,<>[]+^$#","START DATE")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ExpirationDateTextBox");
	if( !ValidationTemplate(obj,true,EntryTypes[2],1,50,"'? %&@(*-);,<>[]+^$#","EXPIRATION DATE")   )
	{
		return false;
	}
	return true;
}
////////////////////////////////////////////////////////////////////////////////////
function ValidateCssManagerForm(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"NewCssFileInput");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@*;,<>/\[]+^$#","FILE PATH")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"NewCssIDTextBox");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@*;  -()~!{}|=_,<>/\[]+^$#","DESIGN NAME")   )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"NewCssCaptionTextBox");
	if( !ValidationTemplate(obj,true,"text",1,50,"'?%&@*;-()~!{}|=_,<>/\[]+^$#","DESIGN CAPTION")   )
	{
		return false;
	}
	return true;
}
/////////////////////////////////////////////////////////////////////////////////
////////////////////////NOTE BOOK validations////////////////////////////////////
//validate note book entries
function ValidationNoteBook(FormObject)
{
//alert("validation");
	var obj = GetFormFieldByName(FormObject,"Name");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'<>","الاسم ")  )
	{
		return false;
	}
	var obj = GetFormFieldByName(FormObject,"TreeItemTextBox");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'<>","عنوان الاستشارة ")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"EmailAddressTextbox1");
	if( !ValidationTemplate(obj,false,EntryTypes[0],1,-1,"'( )[]=*&#<>","بريدك  الالكتروني")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Email1");
	if( !ValidationTemplate(obj,false,EntryTypes[0],1,-1,"'( )[]=*&#<>","بريد الكتروني#1")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Email2");
	if( !ValidationTemplate(obj,false,EntryTypes[0],1,-1,"'( )[]=*&#<>","بريد الكتروني#2")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Email3");
	if( !ValidationTemplate(obj,false,EntryTypes[0],1,-1,"'( )[]=*&#<>","بريد الكتروني#3")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Tel1");
	if( !ValidationTemplate(obj,false,EntryTypes[1],1,-1,"'( )[]=*&#<>","هاتف #1")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Tel2");
	if( !ValidationTemplate(obj,false,EntryTypes[1],1,-1,"'( )[]=*&#<>","هاتف#2")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Tel3");
	if( !ValidationTemplate(obj,false,EntryTypes[1],1,-1,"'( )[]=*&#<>","هاتف #3")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Address");
	if( !ValidationTemplate(obj,false,"text",1,-1,"'<>","العنوان")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"GroupID");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"'<>","المجموعة")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"LawfulCountry");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"'<>","دولة النزاع")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"ConsultationTypeDropDownList");
	if( !ValidationTemplate(obj,true,EntryTypes[3],1,-1,"'<>","نوع الاستشارة")  )
	{
		return false;
	}
	obj = GetFormFieldByName(FormObject,"Content");
	if( !ValidationTemplate(obj,true,"text",1,-1,"","محتوي الرسالة")  )
	{
		return false;
	}
	return true;
}
//////////////////////////////////////////////////////////////////////////////
//validate notebook groups
function ValidationNoteBookGroup(FormObject)
{
	var obj = GetFormFieldByName(FormObject,"Name");
	if( !ValidationTemplate(obj,true,"text",1,-1,"'@()[]=.*&#<>","الاسم")  )
	{
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////////
//////////////////general function used for validation///////////////////////////
/////////////////////////////////////////////////////////////////////////////////
//check date
//parameters:
//field : (object) reference to form field 
//format: (string) date format (i.e: dd/mm/yyyy)
//return:
//true : if field is a valid date
//false : if field is a valid date
function check_date(field,format){
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var day;
	var month;
	var year;
	var leap = 0;
	var i;
	var pos;
	if (isNull(field))
	{
		return true;
	} 
	DateValue = DateField.value;
   /* if there are letters then date is invalid*/
   for (i = 0; i < DateValue.length; i++) 
   {
	  if ( isNaN( DateValue.substr(i,1) ) && DateValue.substr(i,1)!="/"  ) 
	  {
	     return false;
	  }
   }
	var DatePortions = DateValue.split("/");
	if (DatePortions.length != 3)
		return false;
	//if date format is (MM/DD/YYYY) then the first portion
	//is month otherwise it will be the day
	if (format.toLowerCase() == "mm/dd/yyyy")
	{
		month = DatePortions[0];
	}
	else
	{
		day = DatePortions[0];
    }
	//if date format is (MM/DD/YYYY) then the second portion
	//is day otherwise it will be the month
	if (format.toLowerCase() == "mm/dd/yyyy")
	{		
		day = DatePortions[1];
	}
	else
	{
		month = DatePortions[1];
    }
    //year = DateValue;
    year = DatePortions[2];
	//now after we got the day , month and year we should check them
   if ((month < 1) || (month > 12)) 
   {
	     return false;
   }
   if ((day < 1) || (day > 31)) 
   {
	     return false;
   }
   if (year == 0) 
   {
	     return false;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) 
   {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) 
   {
	     return false;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) 
   {
	     return false;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) 
   {
	     return false;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) 
   {
	     return false;
   }
   return true;	
}
////////////////////////////////////////////////////////////////////////////////////////
//check if obj is empty
//parameter:
//obj: (object) reference to form field
//return:
//true : if obj value is empty
//false: if obj value is not empty
function isEmpty(obj)
{
		if(obj.value == "")
		{
			return true;
		}//end if
		return false;
}
//////////////////////////////////////////////////////
//check if form field first choise is selected (dropDownList)
//parameter:
//obj : (object) form field object
//return :
//true : if first choise selected
function isFirstSelected(obj){
	if(obj.selectedIndex==0)
	{
		return true;
	}
	return false;
}
/////////////////////////////////////////////////
//check if form object is null
//parameters:
//obj: (object) form field
//return:
//true : if field is null
function isNull(obj){
	if (!obj)
	{
		return true;
	}
	return false;
}
//////////////////////////////////////////////////////
//check if form field is disabled
//parameters:
//obj : (object)form field
//return :
//true : if disabled
function isDisabled(obj){
	if (isNull(obj))
	{
		return true;
	}
	if (obj.disabled)
	{
		return true;
	}
	return false;
}
//////////////////////////////////////////////////////
//check is form filed value is a number
//parameter:
//obj : (object) form field
//return :
//true: if form field is a number
function isNumber(obj){
		if(isNaN(obj.value))
		{
			return false;
		}
		return true;
}
////////////////////////////////////////////////////
//check if field value length less than specific length
//parameters:
//obj: (object) form field 
//leastLength : (int) value length
//return:
//true: if field value is less than "leastLength" 
function isLengthLessThanExpected(obj,leastLength){
		if(obj.value.length < leastLength )
		{
			return true;
		}//end if
		return false;
}
//////////////////////////////////////////////////
//check if field value length greater than specific length
//parameters:
//obj: (object) form field 
//MaximumLength : (int) value length
//return:
//true: if field value is greater than "leastLength" 
function isLengthGreaterThanExpected(obj,MaximumLength){
		if(obj.value.length > MaximumLength )
		{
			return true;
		}//end if
		return false;
}
//////////////////////////////////////////////////////////////////////////////////
//check if form field value contains specific value , (don't match letter cases)
//parameters: 
//obj : (object) form field
//stringToSearch : (string) string to search for
//return :
//true : if "stringToSearch" found in field value
function contains(obj,stringToSearch){
		if( obj.value.toUpperCase().indexOf(stringToSearch.toUpperCase()) != -1  )
		{
			return true;
		}//end if
		return false;
}
//////////////////////////////////////////////////////////////////////////////////
//this function should get a reference to a form field 
//when a form Field name contains parameter "FieldName"  
//(i.e:not exact name of form field)
//parameter:
//FormObject: (object) reference to form
//FieldName : (string) field name to search for
function GetFormFieldByName(FormObject,FieldName){
		var i = 0;
		while (FormObject.item(i) != null)
		{
			//if a field with name contains field name return this field
			if( FormObject.item(i).name.toUpperCase().indexOf(FieldName.toUpperCase()) != -1  )
			{
				return FormObject.item(i);
			}//end if
			i++;
		}
		return null;
}
////////////////////////////////////////////////////////////////
function GetTagByName(tagName,ItemName){
		var i = 0;
		while (document.all.tags(tagName).item(i) != null)
		{
			//if a field with name contains field name return this field
			if( document.all.tags(tagName).item(i).id.toUpperCase().indexOf(ItemName.toUpperCase()) != -1  )
			{
				return document.all.tags(tagName).item(i);
			}//end if
			i++;
		}
		return null;
}
//////////////////////////////////////////////////////////////////////////////////
//this function should validate a form field
//against a special format
//parameters:
//obj: (object) form field reference
//StringFormat : (string) the string format
//     examples:
//		email validation	
//		/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi
//return:
//true : if field value match the format
//false: if field value doesn't math the format
function SpecialStringFormat(obj,StringFormat){
	var ValidFormat = obj.value.match(StringFormat);
	if (ValidFormat)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//////////////////////////////////////////////////////////////////////////////////
//this function should check if a form field is a valid email address
//parameter:
//obj : (object) form field
//return :
//true: if field has valid email value
function check_email(obj){
	//email address cannot have spaces
	if (obj.value.indexOf(" ") != -1)
	{
		return false;
	}
	//check for existence of '@'
	var EmailPortions = obj.value.split("@");
	if (EmailPortions.length != 2)
	{
		return false;
	}
	//the email with format '@dfgh.djfh' is invalid
	if (EmailPortions[0] == "")
	{
		return false;
	}
	//the email with format 'sdfhg@' is invalid
	if (EmailPortions[1] == ""){
		return false;
	}
	//check for existence of '.'
	EmailPortions = EmailPortions[1].split(".");
	if (EmailPortions.length < 2)
	{
		return false;
	}
	//the email with format 'sdf@.com' is invalid
	if(EmailPortions[0] == "")
	{
		return false;
	}
	//check for domain extensions (i.e: .net,.com,.gov)
	var validDomain = false;
	for (i=0;i<ValidDomainExtensions.length;i++)
	{
		if(EmailPortions[1].toLowerCase() == ValidDomainExtensions[i].toLowerCase())
		{
			validDomain = true;
			break; 
		}//end of if
	}//end of for
	if (!validDomain)
	{
		return false;
	}//if domain is not valid return false
	return true;
}
///////////////////////////////////////////////////////////////////////////////////
//this function should check if a date is less than current day
//and return integer value :
//return 1 if datefield1 > currentday
//return 0 if datefield1 == currentday
//return -1 if datefield1 < currentday
function IsDateBeforeToday(datefield1,format){
	var result = 0;
	var flag = 0;
	var Today = new Date();
	if (isNull(datefield1))
	{
		return false;
	}   
	if (check_date (datefield1,format))
	{
		///////////////////////check year///////////////////////////////////
		if (flag == 0)
		{
			if ( getYear(datefield1,format) > Today.getFullYear()  )
			{
				result = 1;
				flag = 1;
				
			}
		} //if (flag == 0)
		if (flag == 0)
		{
			if ( getYear(datefield1,format) < Today.getFullYear()  )
			{
					result = -1;
					flag=1;
			}
		}//if (flag == 0)		
		///////////////////////check month///////////////////////////////////
		if (flag == 0)
		{
			if ( getMonth(datefield1,format) > Today.getMonth()+1  )
			{
					result = 1;
					flag=1;
			}
		}//if (flag == 0)		
		if (flag == 0)
		{
			if ( getMonth(datefield1,format) < Today.getMonth()+1  )
			{
					result = -1;
					flag=1;
			}
		}//if (flag == 0)		
		///////////////////////check day///////////////////////////////////
		if (flag == 0)
		{
			if ( getDay(datefield1,format) > Today.getDate()   )
			{
					result = 1;
					flag=1;
			}
		}//if (flag == 0)		
		if (flag == 0)
		{
			if ( getDay(datefield1,format) < Today.getDate()   )
			{
					result = -1;
					flag=1;
			}
		}//if (flag == 0)		
	}//if (!check_date (datefield1,format) || !check_date(datefield2,format) )     
	return result;
}
///////////////////////////////////////////////////////////////////////////////////
//this function should compare two dates
//and return integer value :
//return 1 if datefield1 > datefield2
//return 0 if datefield1 == datefield2
//return -1 if datefield1 < datefield2
function compareDates(datefield1,datefield2,format){
	var result = 0;
	var flag = 0;
	if (isNull(datefield1) || isNull(datefield2))
	{
		return 0;
	}  
	if (check_date (datefield1,format) && check_date(datefield2,format) )
	{
		///////////////////////check year///////////////////////////////////
		if (flag == 0)
		{
			if ( getYear(datefield1,format) > getYear(datefield2,format) )
			{
				result = 1;
				flag = 1;
			}
		} //if (flag == 0)
		if (flag == 0)
		{
			if ( getYear(datefield1,format) < getYear(datefield2,format) )
			{
					result = -1;
					flag=1;
			}
		}//if (flag == 0)		
		///////////////////////check month///////////////////////////////////
		if (flag == 0)
		{
			if ( getMonth(datefield1,format) > getMonth(datefield2,format) )
			{
					result = 1;
					flag=1;
			}
		}//if (flag == 0)		
		if (flag == 0)
		{
			if ( getMonth(datefield1,format) < getMonth(datefield2,format) )
			{
					result = -1;
					flag=1;
			}
		}//if (flag == 0)		
		///////////////////////check day///////////////////////////////////
		if (flag == 0)
		{
			if ( getDay(datefield1,format) > getDay(datefield2,format) )
			{
					result = 1;
					flag=1;
			}
		}//if (flag == 0)		
		if (flag == 0)
		{
			if ( getDay(datefield1,format) < getDay(datefield2,format) )
			{
					result = -1;
					flag=1;
			}
		}//if (flag == 0)		
	}//if (!check_date (datefield1,format) || !check_date(datefield2,format) )     
	return result;
}
///////////////////////////////////////////////////////////////////////////////////
//get day from date
//parameter:
//dateField : (object) date form field 
//format: (string) date format (i.e: MM/DD/YYYY)
//return :
//day portion from date field
function getDay(datefield,format){
	var day;
	var DateTemp;
	var DateValue;
	var pos;
	if (!check_date (datefield,format) )
	{
		return 0;
	}     
	else
	{
		DateValue = datefield.value;
		var DatePortions = DateValue.split("/");
		pos = DateValue.indexOf("/");
		if (format.toLowerCase() == "mm/dd/yyyy")
		{
			day = DatePortions[1];
		}
		else
		{
			day = DatePortions[0];
	    }//end of if
		if( day == "08"  )
		{
			return 8;
		}
		if( day == "09"  )
		{
			return 9;
		}
	return parseInt(day);
	}
}
//////////////////////////////////////////////////////////////////////////////////
//get month from date
//parameter:
//dateField : (object) date form field 
//format: (string) date format (i.e: MM/DD/YYYY)
//return :
//month portion from date field
function getMonth(datefield,format){
	var month;
	var DateTemp;
	var DateValue;
	var pos;
	if (!check_date (datefield,format) )
	{
		return 0;
	}     
	else
	{
		DateValue = datefield.value;
		var DatePortions = DateValue.split("/");
		if (format.toLowerCase() == "mm/dd/yyyy")
		{
			month = DatePortions[0];
		}
		else
		{
			month = DatePortions[1];
	    }//end of if
		if( month == "08"  )
		{
			return 8;
		}
		if( month == "09"  )
		{
			return 9;
		}
	return parseInt(month);
	}
}
//////////////////////////////////////////////////////////////////////////////////
//get year from date
//parameter:
//dateField : (object) date form field 
//format: (string) date format (i.e: MM/DD/YYYY)
//return :
//year portion from date field
function getYear(datefield,format){
	var year;
	var DateTemp;
	var DateValue;
	var pos;
	if (!check_date (datefield,format) )
	{
		return 0;
	}     
	DateValue = datefield.value;
	var DatePortions = DateValue.split("/");
	year = DatePortions[2];
    return parseInt(year);
}
//////////////////////////////////////////////////////////////////////////////////
//this function has validation templates for field items
//parameters:
//1:) obj : (object)form field to be validated
//2:) Required : (boolean)if true then check if field have data
//3:) dataType : (string)field data type (numberEntry , textEntry , dateTimeEntry or selectEntry )
//4:) LengthGreaterThan : (int)the minimum length for the field , (-1) don't check for minimum length
//5:) LengthLessThan : (int)the maximum length for the field , (-1) don't check for maximum length
//6:) DoNotContain :(string) the field value must not have any character in that string
//7:) FieldCaption(optional) : (string) the field caption , used for alert appear to users
//return :
//true : if form field is valid according to previous criteria
//false : if form field is not valid according to previous criteria
function ValidationTemplate(obj,Required,dataType,LengthGreaterThan,LengthLessThan,DoNotContain){
	var k=0;
	//if form field not found return true since there is no field to validate
	//otherwise validate the field according to specified criteria
	if ( !isNull(obj) && !isDisabled(obj)  )
	{
		//getting field caption that used in alerting errors
		//if  parameter fieldCaption not set make the field caption = the name of object
		var FieldCaption = obj.name;
		if (ValidationTemplate.arguments.length > 6) 
		{
			FieldCaption = ValidationTemplate.arguments[6];
		}
		//checking if form field required
		if (Required == true)
		{
			switch(obj.type)
			{
				//if field is a checkbox
				case "checkbox":
					if(obj.checked == false)
					{
						ClientResponse(obj," يجب اختيار "+FieldCaption); 
						return false;
					}//end of if
				default:
					if(isEmpty( obj ) )
					{
						ClientResponse(obj," يجب ادخال "+FieldCaption); 
						return false;
					}//end of if
					break;
				}//end of switch
		}
		else
		{
			switch(obj.type)
			{
				//if field is a check box
				case "checkbox":
					if(obj.checked == false)
					{
						return true;
					}//end of if
				default:
					if(isEmpty( obj ) )
					{
						return true;					
					}//end of if
					break;
				}//end of switch
		}
		////////////////////////////////
		///check data type
		switch( dataType )
		{
			//check for valid email addresses
			case EntryTypes[0] :
				//email address cannot have spaces
				if (obj.value.indexOf(" ") != -1)
				{
					ClientResponse(obj,FieldCaption+" يجب ان لا يحتوي علي مسافات");
					return false;
				}
				if( !( check_email(obj) )  )
				{
					ClientResponse(obj,"خطأ في صيغة" +FieldCaption); 
					return false;
				}
				break;
			//check for integer values
			case EntryTypes[1]:
				if( !isNumber( obj )  )
				{
					ClientResponse(obj,FieldCaption+" يجب ان يحتوي علي ارقام فقط"); 
					return false;
				}
				break;
			//check for date
			case EntryTypes[2]:
				if( !check_date( obj ,dateFormat )  )
				{
					ClientResponse(obj,FieldCaption+" is not a valid date"); 
					return false;
				}
				break;
			//check if first choice in a combo selected
			case EntryTypes[3]:
				if( isFirstSelected( obj)  )
				{
					ClientResponse(obj,"رجاء حدد  "+FieldCaption); 
					return false;
				}
				break;
		}//switch
		////////////////////////////////		
		//check if field data length 
		//is less than the required length or not
		if ( LengthGreaterThan != -1 ){
			if(	isLengthLessThanExpected(obj,LengthGreaterThan ))
			{
				ClientResponse(obj,"اقل عدد مسموح به في " +FieldCaption+" "+LengthGreaterThan+" حرف"); 
				return false;
			}
		}
		////////////////////////////////
		//check if field data length 
		//is greater than the required length or not
		if ( LengthLessThan != -1 )
		{
			if(	isLengthGreaterThanExpected (obj,LengthLessThan ))
			{
				ClientResponse(obj,"اكبر عدد مسموح به من الحروف في " +FieldCaption+" يجب ان  "+LengthLessThan+" حرف"); 
				return false;
			}
		}
		////////////////////////////////
		//check if field value has rubbish text
	   for (k = 0; k < DoNotContain.length; k++) 
	   {
			if (  contains(obj,DoNotContain.substr(k,1) )  ) 
			{
				ClientResponse(obj,FieldCaption+" يجب ان لا يحتوي علي مثل  ("+DoNotContain+") الحروف" ); 
				return false;
			}
		}//for 
		//////////////////////////////////
		//if field satisfies all the validation criteria return true
		return true;		
	}
	else
	{
		return true;
	}//end of if ( !isNull(obj)  )
}
//////////////////////////////////////////////////////////////////////////////////
//this function validates many form fields at one time
//parameters:
//1:)formObject : (object) reference to form 
//2:)FieldsIndexes: (Array of int) form fields  indexes which should be validated
//3:)RequiredArray : (Array of boolean) need for form fields to be filled by data
//4:)ValidationTypeArray : (Array of string) form fields types (email,date,integer,...etc)
//5:)MinimumLengthArray : (Array of int) minimum length for fields
//6:)MaximumLengthArray : (Array of int ) maximum length for fields 
//7:)RubbishTextArray : (Array of string) characters that shouldn't appear in form fields values
//return :
//true : if all form fields are valid
//false : if one field is invalid
function multipleValidation(FormObject,FieldsIndexes,RequiredArray,ValidationTypeArray,MinimumLengthArray,MaximumLengthArray,RubbishTextArray)
{
	for (i=0;i<FieldsIndexes.length;i++)
	{
			if (!ValidationTemplate(FormObject.item(FieldsIndexes[i]),RequiredArray[i],ValidationTypeArray[i],MinimumLengthArray[i],MaximumLengthArray[i],RubbishTextArray[i]) )
			{
				return false;
			}
	} 
	return true;
}
//////////////////////////////////////////////////////////////////////////////////
//this function has the action that should be done when encountering errors
//parameter:
//obj : (object) form field
//message : (string) error message that will be alerted to user
function ClientResponse(obj,message){
		//alert the message to inform user that data entered is not valid
		alert(message);
		try{
		//make the field get focus
		if ( obj.type != "hidden" ){
		obj.focus();
		}
		//if field is text select the text inside it
		if (obj.type == "text" || obj.type == "textarea")
		{
			obj.select();
		}
		}catch(e){}
}
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////END OF FILE//////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

