﻿
/// Types declaration
	var cTEXTBOX="text";
	var cTXTPASSWORD="password";
	var cTEXTAREA="textarea";
	var cCHECKBOX="checkbox";
	var cRADIO="radio";
	var cDROPDOWN="select-one";
	var cLISTBOX="select";

	var cTEXT=1;
	var cNUMERIC=2;
	var cEMAIL=3;
	var cDATE=4;
	var cUSERNAME=5;
	var cPASSWORD=6;
	var	cCPASSWORD=7;

/// Variable and Constants declaration
	var disableColor="#dddddd";


/// used to get the nearest branch list id.	
    var xmlhttp;
	var MyMainObj;
	var NrstBrnch;
	var LoadSpan;
	
//######### this function is called by the form onsubmit #######################
	function checkform(FormName)
	{
		var frm;
		if (document.all) 
		{ 
			frm=eval("document.all."+FormName);
		}
		else
		{
			frm=eval("document."+FormName);
		}
		myRslt= (ValidateFormObjects(frm))
		myRslt= myRslt && (FormsCityValidate(frm))
		return  myRslt
	
	}//end of function

//######### this function validates all the objects of form #######################
	var f
	function ValidateFormObjects(frm)
	{
	
		f=frm;
		var frmLength=f.elements.length;
		var itype,irequired;
		var iReturn=0;
		for (var i=0; i < frmLength; i++)	
		{
			if (frm.elements[i].style.display!='none')
			{
    			    
			    itype=frm.elements[i].type;
			    irequired=isRequired(frm.elements[i]);
    			
			    if ((itype==cCHECKBOX)  && (irequired==1))
			    {
				    //validation of checkbox
				    var field=f.elements[i];
				    if (field.checked==false)
				    {
					    alert(field.msg);
					    field.style.backgroundColor=disableColor;
    					 
					    field.focus();
					    iReturn=iReturn+1;
					    break;
				    }
				    //alert("validation of checkbox/radio");
				    //return true;
			    }
			    else if ((itype==cRADIO) && (irequired==1))
			    {
				    //validation of  radio
				    var field=f.elements[i];
				    if (isRadioSelected(field)==false)
				    {
					     alert(field.msg);
					     //field.style.backgroundColor=disableColor;
    					 
					     
					     field.focus();
					    iReturn=iReturn+1;
					    break;
				    }
    					
			    }
			    else if (((itype==cDROPDOWN) || (itype==cLISTBOX)) && (irequired==1))
			    {
				    //validation of dropdown
    				
				    var field=f.elements[i];
    				
				    if (field.value==0)
				    {
					     alert(field.msg);
					     field.style.backgroundColor=disableColor;

					     field.focus();
					    iReturn=iReturn+1;
					    break;
				    }
    				
    				
			    }
			    else if ((itype==cTEXTBOX) || (itype==cTXTPASSWORD) || (itype==cTEXTAREA))
			    {
    			
				      if (filterWords(f.elements[i]))
					    {				
						    if (irequired)
						    {
							    if(ValidationType(f.elements[i])==false)
							    {
								    iReturn=iReturn+1;
								    break;
							    }
						    }
						    else
						    {
						        //validate on entry (only if data entered and the length_should is defined)
						        var lngth1= getLengthShould(f.elements[i]);
						        var fRealLngth=f.elements[i].value.toString().length;
						        if ((fRealLngth >0) && (lngth1>0))
						        {
						            if (fRealLngth!=lngth1)
					                {
					                    alert(getLengthMessage(f.elements[i]));
					                    f.elements[i].select();
					                    iReturn=iReturn+1;
							            break;
					                }
						            
						        }
						    }
						    
					    }
					    else
					    {
						    iReturn=iReturn+1;
						    break;
					    }
			    }
			 }//end of if (frm.elements[i].style.display!='none')
			
		}//end of for

		if (iReturn>0 )
		{
			return false;
		}
		else
		{
			return true;
		}
		
		
	}//end of function

////######## validates the selection of Radio  ###########
function isRadioSelected(btn) 
{

	var radioGroup=document.getElementsByName(btn.name)
    var cnt = -1;
    for (var i=radioGroup.length-1; i > -1; i--) {
        if (radioGroup[i].checked) {cnt = i; i = -1;}
    }
    if (cnt > -1) return true;
    else return false;
}
  
////######## Reads the element's "required" attribute ###########
	function isRequired(elm)
	{
		var obj=elm;
		var retValue=0;
		if (document.all)
			{ 
				retValue=obj.req;
			}
		else
			{
				if (obj.attributes.req)
				{
					retValue=obj.attributes.req.value;
				}
			}
		return retValue;
	
	}//end of function
////######## Reads the elements msg attribute ###########
	function getMessage(elm)
	{
		var obj=elm;
		var retValue="";
		if (document.all) 
			{ 
				retValue=obj.msg;
			}
		else
			{
				if (obj.attributes.msg)
				{
					retValue=obj.attributes.msg.value;
				}
			}
		return retValue;
	
	}//end of function
	
////######## Reads the elements trtypr attribute ###########
	function getObjectType(elm)
	{
		var obj=elm;
		var retValue=1;
		if (document.all) 
			{ 
				retValue=obj.trtypr;
			}
		else
			{
				if (obj.attributes.trtypr)
				{
					retValue=obj.attributes.trtypr.value;
				}
			}
		return retValue;
	
	}//end of function
////######## this function validates all the types of validations ###########
	function ValidationType(elm)
	{
		var field=elm;
		var iRequired=isRequired(field);
		var message=getMessage(field);
		var iType=getObjectType(field);

		if (Trim(field.value) =="")
		{ 
		        
				field.focus();
				field.style.backgroundColor=disableColor;
		        alert (message);
				//field.select();
		
		            return false;
		}           
		else
		{ 
		
			//for numeric values	
				if(iType==cNUMERIC)
					{
					if(isNaN(field.value)||(field.value==0)||(field.value < 0))
						{
							alert(message);
				            field.select();
					        return false;
						}
						else
						{
						    //check if the number is a length-specific one (like ID number)
						    var lngth=getLengthShould(field);
						    if (lngth > 0)
						    {
						        if  (field.value.toString().length==lngth)
						            return true;
						        else
						        {    
						            alert(getLengthMessage(field));
				                    field.select();
						            return false
						        }
							}
							else
							    return true;
						}
					}
					
					//Email
				if(iType==cEMAIL)
					{
					 return checkemail(field);
					}
					
					//Validation for date
				if(iType==cDATE)
					{
					if(isDate(field.value))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}
					
					//Validation for Username
				if(iType==cUSERNAME)
					{
		
					if(isUsername(field.value))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}
					
					//Validation for Password
				if(iType==cPASSWORD)
					{
		
					if(isPassword(field.value))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}
					
					//Validation for confirm Password
					if(iType==cCPASSWORD)
					{
		
					if(confirmPassword(field))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}

					
			return true;
		}
	}//end of function

////######## this function validates email ids ###########
	function checkemail(mfield)
	{
		var str=mfield.value
		TheFormNameElmReq=isRequired(mfield) ;
		message=getMessage(mfield);
	
		//var filter=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
		//var filter=/^[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9]@[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9][\.][a-z0-9]{2,4}$/
		var filter=/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/
		if (filter.test(str))
		{
			var emailIsOk=0;
			var IncomData=str;
			var incomeFiledName=mfield.name
			for (k=0;k<=(IncomData.length-1);k++)
			{
				if ( !((IncomData.charCodeAt(k)>=37 && IncomData.charCodeAt(k)<=126)))
				{
					mfield.focus();
					mfield.style.backgroundColor=disableColor;
					emailIsOk=1;
				}
			}
			if (emailIsOk==0)
			{
			    return true
			}
			else
			{
			    alert(message)
				mfield.focus();
				mfield.select();
		    	return false
			}
		}
	 	else 
	 	{
		    alert(message)
			mfield.focus();
			mfield.select();
		   	return false
		}
	}// end of function
	
//########################################################     	
//This function implements the validation on checkboxes and radio buttons, and it is invoked from within
//the checkform function.
	function checkCheckbox(TheFormName,number)
	{	
		var chk;
		chk=true;
		var i;
		for (i=0; i < number; i++)	
		{			
			if (((TheFormName.elements[i].type=="checkbox")||(TheFormName.elements[i].type=="radio"))&&(TheFormName.elements[i].req==1))	
			{	
				chk = false;
				var j;
				fieldName = TheFormName.elements[i].name;
				ObjCheckBox=document.getElementsByName(fieldName);
		
				for (j=0;j<ObjCheckBox.length;j++)
				{				
					if (ObjCheckBox[j].checked)
					{
						chk=true;
					}				
				}
				
				if (!(chk))
				{
					alert(ObjCheckBox[0].msg);
					ObjCheckBox[0].focus();
					break;
				}
				i=i+j;
			}		
		}
		return chk;
	}//end of function 
//#################################################################
//The following is the code of the Trim function.

function Trim(TRIM_VALUE)
{
	if(TRIM_VALUE.length < 1)
	{return"";}

	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);
	if(TRIM_VALUE=="")
	{
	return "";
	}
	else
	{
	return TRIM_VALUE;
	}
} //End Function

function RTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";

	if(v_length < 0)
	{return"";}
	var iTemp = v_length -1;

	while(iTemp > -1)
	{
		if(VALUE.charAt(iTemp) == w_space)
		{}
		else
		{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;
	
	} //End While

return strTemp;

} //End Function

function LTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	if(v_length < 1)
	{
	return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";
	var iTemp = 0;

	while(iTemp < v_length)
	{
	if(VALUE.charAt(iTemp) == w_space)
	{}
	else
	{
		strTemp = VALUE.substring(iTemp,v_length);
		break;
	}
	iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function

//#################################################################
	
//#################################################################
// DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
// Declaring valid date character, minimum year and maximum year
	var dtCh= "/";
	var minYear=1300;
	var maxYear=2100;
//#################################################################
	function isInteger(s)
	{
		var i;
	    for (i = 0; i < s.length; i++){   
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    // All characters are numbers.
	    return true;
	}//end of function

//#################################################################
	function stripCharsInBag(s, bag)
	{
		var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++){   
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}

//#################################################################
	function daysInFebruary (year)
	{
		// February has 29 days in any year evenly divisible by four,
	    // EXCEPT for centurial years which are not also divisible by 400.
	    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}

//#################################################################
	function DaysArray(n) 
	{
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}//end of function
//#################################################################
	function isDate(dtStr)
	{
		var daysInMonth = DaysArray(12)
		var pos1=dtStr.indexOf(dtCh)
		var pos2=dtStr.indexOf(dtCh,pos1+1)
		var strDay=dtStr.substring(0,pos1)
		var strMonth=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		month=parseInt(strMonth)
		day=parseInt(strDay)
		year=parseInt(strYr)
		if (pos1==-1 || pos2==-1){
			alert("يجب أن يكون تنسيق التاريخ بالشكل : dd/mm/yyyy")
			return false
		}
		if (strMonth.length<1 || month<1 || month>12){
			alert("فضلا أدخل شهرا صحيحا بين 1 إلى 12")
			return false
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
			alert("فضلا أدخل يوما صحيحا")
			return false
		}
		if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
			alert("فضلا أدخل سنة صحيحة من أربعة أرقام مابين "+minYear+" إلى "+maxYear)
			return false
		}
		if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
			alert("فضلا أدخل تاريخا صحيحا")
			return false
		}
	return true
	}// end of function

//#################################################################
//**********************************
//allows only 16 characters of username
//spaces and special characters are not allowed
//to avoid SQL Injection

function isUsername(string) {
var st=string;

	if (st.length<6)
	{
	alert("يجب أن يكون اسم المستخدم مكونا من 6 حروف على الأقل !!!")
	return false;
	}
	if (st.length>16)
	{
	alert("يجب أن لايزيد طول اسم المستخدم عن 16 حرفا");
	return false;
	}

    if (st.search(/^\w+\.?(\w+\.?)?$/) != -1)
	    {
	        return true;
	    }
	    else
	    {
	    alert(st)
	    alert("الحروف والشرطة السفلية _ والأرقام هي المقبولة فقط")
	        return false;
        }
}

//#################################################################
//**********************************
//allows only 6-16 characters of password
function isPassword(string) 
{
	var st=string;
	if (st.length<6)
	{
		alert("يجب أن تتكون كلمة المرور من 6 أحرف على الأقل !!!")
		return false;
	}
	if (st.length>16)
	{
		alert("يجب أن لا يزيد طول كلمة المرور عن 16 حرفا");
		return false;
	}
	//\w+(\w+)?
	if (st.search(/^[A-Za-z0-9]+$/) != -1)
	    {
	        return true;
	    }
	    else
	    {
	    alert("الحروف والشرطة السفلية _ والأرقام هي المقبولة فقط")
	        return false;
        }

	return true;
}

//#################################################################
//**********************************
//confirm password and matches it with the matches element
function confirmPassword(elm) 
{
	var field=elm;
	var fieldConfirm=getMatchObjectValue(elm)

		if (field.value!=fieldConfirm )
		{
			alert("تأكيد كلمة المرور غير متطابقة مع كلمة المرور");
			return false;
		}
		return true
}

////######## Reads the elements trtypr attribute ###########
	function getMatchObjectValue(elmnt)
	{

		var obj=eval("f." + getMatchName(elmnt));
		var retValue=obj.value;

		return retValue;
	
	}//end of function

function getMatchName(elm)
	{
		var obj=elm;
		var retValue="";
		if (document.all) 
			{ 
				retValue=obj.matches;
			}
		else
			{
				if (obj.attributes.matches)
				{
					retValue=obj.attributes.matches.value;
				}
			}
		return retValue;
	
	}//end of function


/////########## add to favourite 
function AddToFavorite(sURL,sTitle)
{
	if (document.all)
	window.external.AddFavorite(sURL,sTitle)
}


///////////////////////////////////////////////////////////////////////////////
/* bad word filter */
/* add the bad words to be filtered by the input */

var swear_words_arr=new Array("fuck","bloody","war","terror");
var swear_alert_arr=new Array;
var swear_alert_count=0;
var errorMsg="لن يتم إرسال هذا النموذج.\nلقد تم إيجاد الكلمات غير المسموح بها التالية:\n"
	errorMsg=errorMsg + "_______________________________\n{0}\n_______________________________"



function filterWords(field)
{
 //reset alert count
 swear_alert_count=0;
 var sWord=field.value
  
 var compare_text=sWord;
 
 for(var i=0; i<swear_words_arr.length; i++)
 {
  for(var j=0; j<(compare_text.length); j++)
  {
   if(swear_words_arr[i]==compare_text.substring(j,(j+swear_words_arr[i].length)).toLowerCase())
   {
    swear_alert_arr[swear_alert_count]=compare_text.substring(j,(j+swear_words_arr[i].length));
    swear_alert_count++;
   }
  }
 }
 var alert_text="";
 for(var k=1; k<=swear_alert_count; k++)
 {
  alert_text+="\n" + "(" + k + ")  " + swear_alert_arr[k-1];
 }
 if(swear_alert_count>0)
 {
  alert(errorMsg.replace("{0}",alert_text))
  field.select();
  return false;
 }
 else
 {
 	return true;

 }
}

////********************************************************************************//////

function FormsCityValidate(frm)
{
    
    var myReturn=true;
    //search for elements with 'AltField' attribute if 'frm' form object   
    var alt=new Array();
    var ArIdx=0;
    var AltFieldName= new String()
    for (var hh=0; hh < frm.elements.length; hh++)
    {
        AltFieldName='';
        AltFieldName=getAltFieldAttr(frm.elements[hh])
        
        if (typeof AltFieldName !='undefined')
        {    
            alt[ArIdx]=frm.elements[hh]
            ArIdx++
        }
    }
        
    for (var vv=0; vv < alt.length ; vv++)
    {
        //check each obj in 'alt' array
        //check container, if visible get alt field and validate it
        var contObj,contName
        contName=getAltContainerAttr(alt[vv])
        if (document.all)
            contObj=eval('document.all.' + contName)
        else
            contObj=eval('frm.' + contName)
        if (contObj.style.display=='block')
        {
            //validate alt field
            
            var altF, altN
            altN=getAltFieldAttr(alt[vv])
            if (document.all)
                altF=eval('document.all.' + altN)
            else
                altF=eval('frm.' + altN)
            var strF=new String()
            strF=(altF.value)
            if ((strF.length==0) || (strF==' '))
            {
                alert(altF.msg);
                altF.style.backgroundColor=disableColor;
                altF.focus();
                myReturn=false;
            }
            if (!myReturn) break;
        }
    }
    
    return myReturn;

}

///////**************************************************************************/////
    
    function showHideAltField(frmName, mainName)
{
    //mainObj: the Main Field should be Select (Drop Down) (should be validated before calling this function)
    //          should have attribute AltField='altObj name (not id)' AltContainer='container (DIV or SPAN) name (not id)'
    //altObj: the Alternative Field should be Input Text, should be contained in a (DIV or SPAN) tag
    //          should have attribute MainField='mainObj name (not id)'
    //mainObj selected index will be compared to the "Others" constant
    //return : the visibility case.
    
    var frm, mainObj;
	if (document.all) 
		frm=eval("document.all."+frmName);
	else
		frm=eval("document."+frmName);
	mainObj=eval('frm.' + mainName);	
	MyMainObj=mainObj;
    var Others= mainObj.options.length-1
    var Cont_visible=false;
    var altObj, altCont, altContName
    altObj=eval('frm.'+getAltFieldAttr(mainObj))
    altContName=getAltContainerAttr(mainObj)
        
    if (document.all)
        altCont=eval('document.all.'+altContName)
    else
        altCont=eval('frm.'+altContName)
    
    if(mainObj.selectedIndex==Others)
    {
        altCont.style.display='block';
        Cont_visible=true;
    } 	         
    else 
    {
        altCont.style.display='none';
        altObj.value='';
        Cont_visible=false;
    }
    
    
    //use xmlhttprequest to get the list index for nearest branch
    if (document.all)
        NrstBrnch=mainObj.NearestBranch
    else
        NrstBrnch=MyMainObj.attributes.NearestBranch.value
        
    if (document.all)
        LoadSpan=MyMainObj.LoadSpn
    else
        LoadSpan=MyMainObj.attributes.LoadSpn.value
    
    ///Very Important: when uploading to live website, use the commented line
    cityXmlUrl='http://' + window.location.hostname + '/upload/XML/ar_city1.xml';
    //instead of the following line
    
    //cityXmlUrl='http://' + window.location.hostname + '/gasco_online/upload/XML/ar_city1.xml';
     
    //cityXmlUrl='http://' + window.location.hostname + '/gascodev/upload/XML/ar_city1.xml';
    
    loadXMLDoc(cityXmlUrl)
    
    
    return Cont_visible
}

///////**************************************************************************/////
function getAltFieldAttr(mainObj)
{
    //returns the 'AltField' attribute if existent.
    var retStr=' '
    if (document.all)
        
        retStr=mainObj.AltField
    else
        retStr=mainObj.attributes.AltField.value
    
    return retStr;
    
}

function getAltContainerAttr(mainObj)
{
    //returns the 'AltContainter' attribute if existent.
    var retStr=' ';
    if (document.all)
        retStr=mainObj.AltContainer;
    else
        retStr=mainObj.attributes.AltContainer.value;
    
    return retStr;
    
}

function getMainFieldAttr(altObj)
{
    //returns the 'MainField' attribute (if existent) of an alternative field.
    var retStr=' '
    if (document.all)
        retStr=altObj.MainField
    else
        retStr=altObj.attributes.MainField.value
    
    return retStr;
}



///////// -AJAX code to get the nearest branch list index for specific city- \\\\\\\\\



function loadXMLDoc(url)
{
    xmlhttp=null;
    // code for Mozilla, etc.
    if (window.XMLHttpRequest)
      {
      xmlhttp=new XMLHttpRequest();
      }
    // code for IE
    else if (window.ActiveXObject)
      {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    if (xmlhttp!=null)
      {
      xmlhttp.onreadystatechange=state_Change;
      xmlhttp.open("GET",url,true);
      xmlhttp.send(null);
      }
    else
      {
      alert("Your browser does not support XMLHTTP.");
      }
}
////////////////// Callback function  \\\\\\\\\\\\\\\\\
function state_Change()
{


if (xmlhttp.readyState==1)
    {
        //display loading span
        
        document.getElementById(LoadSpan).style.display='block';
    }
else if (xmlhttp.readyState==4)
  {
  //4: completed
  
  document.getElementById(LoadSpan).style.display='none';
  // if "OK"
  if (xmlhttp.status==200)
    {
    /// do something here.
    
    var startTag=new String();
    startTag= '<OPT_TITLE_AR>' + MyMainObj[MyMainObj.selectedIndex].text + '</OPT_TITLE_AR>';
    endTag='</ROW>';
    vStart= xmlhttp.responseXML.xml.indexOf(startTag,0);
    vEnd= xmlhttp.responseXML.xml.indexOf(endTag,vStart + startTag.length);
    var branchTag=new String();
    //get only the <OPT_Branch> whole tag
    branchTag=xmlhttp.responseXML.xml.substring(vStart + startTag.length, vEnd); 
    //get the value from Branch tag
    vStart=branchTag.indexOf(">",0);
    vEnd=branchTag.indexOf("<",vStart);
    branchTag=branchTag.substring(vStart+1,vEnd);
    if (isInteger(branchTag))
        {
            document.getElementById(NrstBrnch).selectedIndex=branchTag;
        }
    }
  else
    {
        alert(xmlhttp.status + ":حدث خطأ:" + xmlhttp.statusText);
    }
  }
}

///////**************************************************************************/////
    //started on 17 Feb 2008
    //by AKayali
    //
    //summary:
    //used in Feedback form, the function is to decide whether to view a drop down of cities (ddlName) of a specific selected country
    //      (index is extracted by from the passed parameter (selectCountry) or just a text box (txtName) to be filled by the visitor.
    function ShowCityField(frmName, ddlName, txtName, selectCountry, countryIndexKeeper)
    {
        var frm, ddl, txt, cntry, cntryIdx;
        
        if (document.all) 
		    frm=eval("document.all."+ frmName);
	    else
		    frm=eval("document."+frmName);
		
		txt=eval('frm.' + txtName);
        ddl=eval('frm.' + ddlName) ;
		cntry=eval('frm.' + selectCountry) ;
	    cntryIdx=eval('frm.' + countryIndexKeeper) ;
	    
	    
	    var ddl_cont_name;
	    ddl_cont_name=getAltContainerAttr(ddl);
	    var ddl_container;
	    if (document.all) 
	        ddl_container=eval('document.all.'+ ddl_cont_name);
	    else
	        ddl_container=eval('frm.'+ ddl_cont_name);
	    
	    var txt_cont_name;
	    txt_cont_name=getAltContainerAttr(txt);
	    var txt_container;
	    if (document.all) 
	        txt_container=eval('document.all.'+ txt_cont_name);
	    else
	        txt_container=eval('frm.'+ txt_cont_name);
	    
	    cntryIdx.value=cntry.selectedIndex
	    if (cntry.selectedIndex==0)
	    {
	        ddl_container.style.display='block';
	        txt_container.style.display='none';
	    }
	    else
	    {
	        txt_container.style.display='block';
	        ddl_container.style.display='none';
	    }
}


//special for gasco website ( career form )
function enableText()
{	
	if(document.CareerForm.otherLanguageCheck1.checked==true)
    {
    	document.CareerForm.otherLanguageName1.disabled=false;
        document.CareerForm.otherLanguageName1.style.backgroundColor= "#FFFFFF";
        document.CareerForm.otherLanguageName1.style.borderColor= "#FFFFFF"; 
     
    	document.CareerForm.OtherLang1.disabled=false;
        document.CareerForm.OtherLang1.style.backgroundColor= "#FFFFFF";
        document.CareerForm.OtherLang1.style.borderColor= "#FFFFFF"; 
    }
    else
    {      
    	document.CareerForm.otherLanguageName1.disabled=true;
		document.CareerForm.otherLanguageName1.style.backgroundColor= "#CCCCCC";
        document.CareerForm.otherLanguageName1.style.borderColor= "#CCCCCC";  

    	document.CareerForm.OtherLang1.disabled=true;
		document.CareerForm.OtherLang1.style.backgroundColor= "#CCCCCC";
        document.CareerForm.OtherLang1.style.borderColor= "#CCCCCC";         
    }
}
function enableText2()
{	
	if(document.CareerForm.otherLanguageCheck2.checked==true)
    {
    	document.CareerForm.otherLanguageName2.disabled=false;
        document.CareerForm.otherLanguageName2.style.backgroundColor= "#FFFFFF";
        document.CareerForm.otherLanguageName2.style.borderColor= "#FFFFFF";     
    	document.CareerForm.OtherLang2.disabled=false;
        document.CareerForm.OtherLang2.style.backgroundColor= "#FFFFFF";
        document.CareerForm.OtherLang2.style.borderColor= "#FFFFFF"; 
    }
    else
    {    	
    	document.CareerForm.otherLanguageName2.disabled=true;
		document.CareerForm.otherLanguageName2.style.backgroundColor= "#CCCCCC";
        document.CareerForm.otherLanguageName2.style.borderColor= "#CCCCCC";    
    	document.CareerForm.OtherLang2.disabled=true;
		document.CareerForm.OtherLang2.style.backgroundColor= "#CCCCCC";
        document.CareerForm.OtherLang2.style.borderColor= "#CCCCCC";          
    }
}

function checkLength()
{
var iLength, iRemainingLength;

	iLength = document.CareerForm.comments.value.length;
	if (iLength > 1000) {
		document.CareerForm.comments.value = document.CareerForm.comments.value.substring(0,1000);
		iRemainingLength = 0;
	} else {
		iRemainingLength = 1000 - iLength;
	}
	document.CareerForm.count.value = iRemainingLength;
}

function NationalityChanged()
{
    var divSArr;
    var divNSArr;
    divSArr=document.all.divSaudi.getElementsByTagName('input');
    divNSArr=document.all.divNonSaudi.getElementsByTagName('input');
    
    if (document.CareerForm.chkSaudi.checked==false)
	{
	    //document.CareerForm.txtNationality.disabled=true;
	    
	    document.CareerForm.txtNationality.style.display='none';
	    //show divSaudi, hide divNonSaudi
	    document.all.divSaudi.style.display='block';
	    divSArr(0).style.display='block';
	    divSArr(1).style.display='block';
	    divSArr(2).style.display='block';
	    
	    
	    document.all.divNonSaudi.style.display='none';
	    divNSArr(0).style.display='none';
	    divNSArr(1).style.display='none';
	    divNSArr(2).style.display='none';
	    divNSArr(3).style.display='none';
	    
	}
	else
	{
	    document.CareerForm.txtNationality.style.display='block';
	    
	    document.CareerForm.txtNationality.select();
	    //show divNonSaudi, hide divSaudi
	    document.all.divNonSaudi.style.display='block';
	    divNSArr(0).style.display='block';
	    divNSArr(1).style.display='block';
	    divNSArr(2).style.display='block';
	    divNSArr(3).style.display='block';
	    
	    document.all.divSaudi.style.display='none';
	    divSArr(0).style.display='none';
	    divSArr(1).style.display='none';
	    divSArr(2).style.display='none';
	    
	}
//	var mi;
//	if (document.all.divSaudi..length>0)
//    {
//        for (mi=0; mi<divS.elements.length; mi++)
//            divS.elements[mi].style.display=divS.style.display ;
//    }
//    if (document.all.divNonSaudi.elements.length>0)
//    {
//        for (mi=0; mi<divNS.elements.length; mi++)
//            divNS.elements[mi].style.display=divNS.style.display;
//    }
}



//added for temporary purpose
function addOption(selectBox, value, text)
{
    var option = document.createElement("OPTION");
    option.text = text;
    option.value = value;
    selectBox.add(option);
}


function changeSubcategory(category)
{           // clear category box
            
            var subcategoryBox = document.CareerForm.specializationSubCategory;
            
            document.CareerForm.hidCareerSpec.value=document.CareerForm.Specialization.item(document.CareerForm.Specialization.selectedIndex).text
            //alert(subcategoryBox.length)
            subcategoryBox.length = 0;
            // add new elements to subcategory box depending on category.
            
           if ((category == "1") || (category == "2") || (category == "3") || (category == "4") || (category == "5"))
				{
           				document.CareerForm.all.divSubSpec.style.display = "";
           				document.CareerForm.specializationSubCategory.style.display = "";
           				document.CareerForm.txtSpecSubCategory.value="";
           				
						if (category == "1")
						{
						            addOption(subcategoryBox, "1", "تراسل");
						            document.CareerForm.hidCareerSubSpec.value ="تراسل"
						            addOption(subcategoryBox, "2", "تشغيل أجهزة اتصالات");                              
						            addOption(subcategoryBox, "3", "شبكات اتصالات");
						            addOption(subcategoryBox, "4", "تشغيل وصيانة كوابل محورية");
						            addOption(subcategoryBox, "5", "فني اتصالات");
						            addOption(subcategoryBox, "6", "مقاسم هاتفية");
						            addOption(subcategoryBox, "7", "الكترونيات");
						            addOption(subcategoryBox, "8", "اتصالات");
						            addOption(subcategoryBox, "9", "دعم فني");
   						}
						else if (category == "2")
						{
						            addOption(subcategoryBox, "10", "مدنية");
						            document.CareerForm.hidCareerSubSpec.value ="مدنية"
						            addOption(subcategoryBox, "11", "معمارية");                              
						            addOption(subcategoryBox, "12", "ميكانيكيه");
						            addOption(subcategoryBox, "13", "كهربائية");
						            addOption(subcategoryBox, "14", "إلكترونية");
						            addOption(subcategoryBox, "15", "حاسب");
						            addOption(subcategoryBox, "16", "صناعية");
						            addOption(subcategoryBox, "17", "اتصالات");
						            addOption(subcategoryBox, "18", "النظم");
						 } 
						 
						  else if (category == "3")
						{
						            addOption(subcategoryBox, "19", "نظم معلومات");
						            document.CareerForm.hidCareerSubSpec.value ="نظم معلومات"
						            addOption(subcategoryBox, "20", "علوم حاسب");                              
						            addOption(subcategoryBox, "21", "برمجة حاسب");
						            addOption(subcategoryBox, "22", "شبكات الحاسب");
						            addOption(subcategoryBox, "23", "تحليل النظم وتصميمها");
						            addOption(subcategoryBox, "24", "برمجة الحاسبات وتشغيلها");
						 } 						 
						  else if (category == "4")
						{
						            addOption(subcategoryBox, "25", "إدارة");
						            document.CareerForm.hidCareerSubSpec.value ="إدارة"
						            addOption(subcategoryBox, "26", "إدارة أعمال");                              
						            addOption(subcategoryBox, "27", "إدارة عامة");
						            addOption(subcategoryBox, "28", "إدارة صناعية");
						            addOption(subcategoryBox, "29", "إدارة مكتبية");
						            addOption(subcategoryBox, "30", "مبيعات");
						            addOption(subcategoryBox, "31", "تسويق");
						            addOption(subcategoryBox, "32", "مالية");
						            addOption(subcategoryBox, "33", "إدارة موارد بشرية");
						            addOption(subcategoryBox, "34", "محاسبة");
						            addOption(subcategoryBox, "35", "محاسبة ونظم المعلومات الإدارية");
						            addOption(subcategoryBox, "36", "الإدارة والتسويق");
						            addOption(subcategoryBox, "37", "إدارة المواد");
						            addOption(subcategoryBox, "38", "المكتبات والمعلومات");
						            addOption(subcategoryBox, "39", "اقتصاد");
						            addOption(subcategoryBox, "40", "قانون");
						            addOption(subcategoryBox, "41", "إعلام");
						            addOption(subcategoryBox, "42", "المالية والاقتصاد");
						            addOption(subcategoryBox, "43", "السكرتير التنفيذي");
						            addOption(subcategoryBox, "44", "العلاقات العامة");
						 } 
						 
						  else if (category == "5")
						{
						            addOption(subcategoryBox, "45", "عربي");
						            document.CareerForm.hidCareerSubSpec.value ="عربي"
						            addOption(subcategoryBox, "46", "انجليزي");                              
						            addOption(subcategoryBox, "47", "فرنسي");
						            addOption(subcategoryBox, "48", "اسباني");
						 } 
				 }else 
						{
							divSubSpec.style.display = "none";
						}       
            
           if (category=="6")
			{
			  	u.style.display = "block";
			}
			else 
			{
				u.style.display = "none";
			}                                  
}


function SubSpec_Changed()
{
    document.CareerForm.hidCareerSubSpec.value = document.CareerForm.specializationSubCategory.item(document.CareerForm.specializationSubCategory.selectedIndex).text
}

function show2() { 
  var myDiv;
  if (document.CareerForm.institution1.selectedIndex==document.CareerForm.institution1.options.length-1)
  {
	document.CareerForm.all.divOtherUniversity.style.display = "block";
	myDiv=document.all.divOtherUniversity.getElementsByTagName('input');
	myDiv(0).style.display = "block";
  }
  else 
  {
	document.CareerForm.all.divOtherUniversity.style.display = "none";
	myDiv=document.all.divOtherUniversity.getElementsByTagName('input');
	myDiv(0).style.display = "none";
  }
}
///temporary purpose



function ChangeNearestBr(frmName, ddlName, hdnName)
{
    var frm, ddl, hdn;
        
    if (document.all) 
	    frm=eval("document.all."+ frmName);
    else
	    frm=eval("document."+frmName);
    
	ddl=eval('frm.' + ddlName);
	hdn=eval('frm.' + hdnName) ;
    
	hdn.value=ddl(ddl.selectedIndex).text;

}

////######## Reads the element's "length_should" attribute which determine a mandatory rule that field should comply to ###########
	function getLengthShould(elm)
	{
		var obj=elm;
		var retValue=0;
		if (document.all)
			{ 
				retValue=obj.length_should;
			}
		else
			{
				if (obj.attributes.length_should)
				{
					retValue=obj.attributes.length_should.value;
				}
			}
		return retValue;
	
	}//end of function
	
	
////######## Reads the element's "length_MSG" attribute which is the message to tell the visitor to comply length_should attribute ###########
	function getLengthMessage(elm)
	{
		var obj=elm;
		var retValue=0;
		if (document.all)
			{ 
				retValue=obj.length_MSG;
			}
		else
			{
				if (obj.attributes.length_MSG)
				{
					retValue=obj.attributes.length_MSG.value;
				}
			}
		return retValue;
	
	}//end of functio</>n