
  // ###################################### CHECK FORM FUNCTIONS ##################################################
  // checkEmail
  function checkEmail (strng) {
  var error="";
  if (strng == "") {
     error = "   لم تقم بإدخال البريد الالكتروني \n";
  }
  else{
	  var emails=strng.split(",");
	  //var emailReg=/^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/;
	  var emailReg=/^[A-Za-z][A-Za-z0-9._-]*@[A-Za-z0-9][A-Za-z0-9._-]*\.[A-Za-z0-9][A-Za-z0-9._-]+$/;
	  for(i=0;i<emails.length;i++){
		if (!(emailReg.test(emails[i])))
		{
			error = " عنوان بريد خاطئ "+emails[i]+"\n";
		}
	  }
  }
  return error;
  }

  //checkPhone
  // phone number - strip out delimiters and check for 10 digits
  function checkPhone (strng) {
  var error = "";
  if (strng == "") {
     error = "لم تقم بإدخال رقم الهاتف.\n";
  }
  else{
      var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
      if (isNaN(parseInt(stripped))) {
         error = " رقم الهاتف الذي أدخلته يحوي حروفاً غير مسموح بها\n";

      }else if (stripped.length > 10) {
                  error = "رقم الهاتف الذي أدخلته طويل جداً .\n";
			}
       else if (stripped.length < 6) {
                  error = "يجب أن يحوي رقم الهاتف 6 أرقام على الأقل.\n";
			}
  }
  return error;
  }

  // checkUsername
  // Username - 4-10 chars, uc, lc, and underscore only.
  function checkUsername (strng , name , isFound) {
  var error = "";
  if (strng == "" || strng.length == 0) {
          if(isFound=="false")
              return "";
           else
               error = "  لم تقم بإدخال " + name + ".\n"; 
  }

  else{
      var illegalChars = /\W/; // allow letters, numbers, and underscores
	  
      if ((strng.length < 3) || (strng.length > 15)) {
         error = "طول اسم المستخدم غير قبول\n";
	  }
      else {
		  strng = strng.replace(/\./g,"");
		  if (illegalChars.test(strng)) {
             error ="اسم المستخدم يحوي على حروف غير مسموح بها\n";
		  }
      }
  }
  return error;
  }
	// checkName
  // name - 4-10 chars, uc, lc, and underscore only.
  function checkName (strng , name , isFound) {
  var error = "";
  if (strng == "" || strng.length == 0) {
          if(isFound=="false")
              return "";
           else
               error = "  لم تقم بإدخال " + name + ".\n";
  }

  else{
      var illegalChars = /\W/; // allow letters, numbers, and underscores
	  
		  if ((strng.length < 3) || (strng.length > 15)) {
			 error =" طول "+ name + " غير مسموح به "+ ".\n";
		  }
    
      }
  return error;
  }

  // check Login Password
  function checkLoginPassword (strng ,isFound) {
	var error = "";
  if (strng == "" || strng.length == 0) {
          if(isFound=="false")
              return "";
           else
               error = "لم تقم بإدخال كلمة السر.\n";
  }

  else{
      var illegalChars = /\W/; // allow letters, numbers, and underscores
      if (strng.length < 4) {
         error = "عدد أحرف كلمة السر يجب أن يكون أكبر من 5.\n";
      }
      else if (strng.length > 30) 	  
				error = "عدد أحرف كلمة السر يجب أن يكون أقل من 30";

	  else if (illegalChars.test(strng)) {
      error = "يجب أن تحوي كلمة السر على حروف انكليزية وأرقام فقط.\n";
      }
    
  }
  return error;
  }


  //check Password
  function checkPassword (strng ,isFound) {

  var error = "";
  if (strng == "" || strng.length == 0) {
     if(isFound=="false")
           return "";
     else
           error = "لم تقم بإدخال كلمة السر.\n";
  }

  else{
      var illegalChars = /\W/; // allow letters, numbers, and underscores
	 
	//  if(isFinite(strng))
	//	error ="يجب أن تحوي كلمة السر على حروف أيضاً بدلاً من الأرقام فقط\n"
	//  else
      if (strng.length < 6) {
         error = "عدد أحرف كلمة السر يجب أن يكون أكبر من 5.\n";
      }
      else if (strng.length > 30) 	  
				error = "عدد أحرف كلمة السر يجب أن يكون أقل من 30";

	  else if (illegalChars.test(strng)) {
		//  alert('test : ' + illegalChars.test(strng))
		//	  alert(strng);
      error = "يجب أن تحوي كلمة السر على حروف انكليزية وأرقام فقط.\n";
      }
    
  }
  return error;
  }


  //checkDate
  function checkDate(theForm){	 
      var error = "";	  
      //check day
      error += checkDay(theForm.day.value);
      if(error ==""){
          //check month			
          error += checkDay(theForm.month.value);
          if(error == ""){
            //check year
            error += checkYear(theForm.year.value);
          }
      }

      return error;
  }


  //checkDay
  function checkDay(day){
     var error = "";
     if(day == "" || day == "0" || day.length > 2){		       	 
          return "لم تقم بإدخال تاريخ الميلاد.\n";
      }
      else if (isNaN(parseInt(day))) {
          return("تاريخ الميلاد يحوي حروفاً غير مسموح بها.\n");
      }
      return error;
  }


  //checkYear
  function checkYear(year){
     var error = "";
     if(year == "" || year == "0" || year.length != 4){
          return "لم تقم بإدخال تاريخ الميلاد.\n";
                }
      else if (isNaN(parseInt(year))) {
          return("تاريخ الميلاد يحوي حروفاً غير مسموح بها.\n");
      }
      return error;
  }

  function checkCountry(value){
	var error = "";
	  if(value=="")
		  error = "لم تقم باختيار اسم البلد";
	  return error;
  }

  function checkCode(code){
       var error = "";
     if(code == ""){
         return "لم تقم بإدخال النص الموجود في الصورة.\n";
     }
      return error;
   }


   function  checkSecretQuestion(code){
		var error = "";
		if(code == ""){
			return "لم تقم باختيار السؤال السري.\n";
		}
		return error;			
   }


   function  checkSecretAnswer(code){
		var error = "";
		if(code == ""){
			return "لم تقم بكتابة الجواب.\n";
		}
		return error;			
   }

   function  checkGender(){
	   gender1 = document.getElementById('gender1').checked;
	   gender2 = document.getElementById('gender2').checked;

		var error = "";
		if((!gender1) && (!gender2)){
			return "لم تحدد أصبي أنت أم بنت؟\n";
		}
		return error;			
   }

  //isEmpty
  // non-empty textbox
  function isEmpty(strng) {
  var error = "";
    if (strng.length == 0) {
       error = "لم تقم بملء الحقل النصي.\n"
    }
  return error;
  }


  //checkRadio
  // exactly at least one radio button is chosen
    function checkRadio(radios) {
    if(radios.checked){
    return true;
    }

    for (i=0, n=radios.length; i<n; i++) {
       if (radios[i].checked) {
          return true;
          break;
       }
    }
    alert("لطفاً اختر  أحد الأزرار الدائرية\n");
    return false;
    }


  function ValidatePassword (pass1 , pass2) {
  var error = "";
  
  if (pass1 != pass2) {
	 
     error = "أعد كتابة كلمة السر الخاصة بك مرة ثانية\n";
  }
  return error;
  }


  // ValidateExternalContactForm
  function ValidateExternalContactForm(theForm){
  var why = "";
      why += checkName(theForm.firstname.value , "الاسم الأول","false");
      why += checkName(theForm.lastname.value , "الاسم الأخير","false");
      if(theForm.email!=null)
        why += checkEmail(theForm.email.value);
      
      if (why != "") {
         alert(why);
         return false;
      }
  return true;
   }



  // ValidateInternalContactForm
  function ValidateInternalContactForm(theForm){
  var why = "";
      why += checkName(theForm.username.value , "الاسم السبيستوني","true");
     if (why != "") {
          alert(why);
         return false;
      }
  return true;
   }

	// ValidateLoginForm
    function ValidateLoginForm(theForm){
	var why = "";	
    why += checkUsername(theForm.j_username.value , "اسم المستخدم","true");
    why += checkLoginPassword(theForm.j_password.value , "true");
	 if (why != "") {
           alert(why);
           return false;
        }
         return true;
	}

    // ValidateSignupForm
    function ValidateSignupForm(theForm){
    var why = "";	
        why += checkUsername(theForm.username.value , "اسم المستخدم","true");
        why += checkName(theForm.nickname.value , "الاسم السبيس توني","true");
        why += checkPassword(theForm.password.value , "true");
       // why += checkPassword(theForm.passwordConfirmation.value , "true");
        why += ValidatePassword(theForm.password.value,theForm.passwordConfirmation.value);
        why += checkName(theForm.firstname.value , "الاسم الأول","true");
        why += checkName(theForm.lastname.value , "اسم العائلة","true");
		why += checkGender();
		why += checkDate(theForm);
        why += checkSecretQuestion(theForm.question.value);
		why += checkSecretAnswer(theForm.answer.value);
        why += checkCode(theForm.code.value);
        if (why != "") {
           alert(why);
           return false;
        }
         return true;
     }

	// ValidateForgetPWForm
	function ValidateForgetPWForm(theForm){
    var why = "";	
      //  why += checkName(theForm.username.value , "اسم المستخدم","true");
        
        
      //  why += checkPassword(theForm.passwordConfirmation.value , "true");
     //   why += ValidatePassword(theForm.password.value,theForm.passwordConfirmation.value);
        why += checkName(theForm.firstname.value ,"الاسم الأول","true");
        why += checkName(theForm.lastname.value , "اسم العائلة","true");
        why += checkDate(theForm);
        why += checkSecretAnswer(theForm.answer.value);
        if (why != "") {
           alert(why);
           return false;
        }
         return true;
     }
  // ValidateProfileEditForm
  function ValidateProfileEditForm(theForm){
  var why = "";
  var passwordConfirmation=""
   
		
      why += checkName(theForm.nickname.value , "الاسم السبيستوني","true");

      why += checkName(theForm.firstname.value , "الاسم الأول","true");

      why += checkName(theForm.lastname.value , "الاسم الأخير","true");

      why += checkCountry(theForm.country.value);

    
     if(theForm.password.value != ""){
	   why += checkPassword(theForm.password.value , "true");
       why += ValidatePassword(theForm.password.value,theForm.passwordConfirmation.value);
     }
    if (why != "") {
       alert(why);
         return false;
      }
  return true;
   }



  // ###################################### SORT FUNCTIONS ##################################################

  //setDataType
  function setDataType(cValue)
    {
      // THIS FUNCTION CONVERTS DATES AND NUMBERS FOR PROPER ARRAY
      // SORTING WHEN IN THE SORT FUNCTION
      var isDate = new Date(cValue);
      if (isDate == "NaN")
        {
          if (isNaN(cValue))
            {
              // THE VALUE IS A STRING, MAKE ALL CHARACTERS IN
              // STRING UPPER CASE TO ASSURE PROPER A-Z SORT
              cValue = cValue.toUpperCase();
              return cValue;
            }
          else
            {
              // VALUE IS A NUMBER, TO PREVENT STRING SORTING OF A NUMBER
              // ADD AN ADDITIONAL DIGIT THAT IS THE + TO THE LENGTH OF
              // THE NUMBER WHEN IT IS A STRING
              var myNum;
              myNum = String.fromCharCode(48 + cValue.length) + cValue;
              return myNum;
            }
          }
    else
        {
          // VALUE TO SORT IS A DATE, REMOVE ALL OF THE PUNCTUATION AND
          // AND RETURN THE STRING NUMBER
          //BUG - STRING AND NOT NUMERICAL SORT .....
          // ( 1 - 10 - 11 - 2 - 3 - 4 - 41 - 5  etc.)
          var myDate = new String();
          myDate = isDate.getFullYear() + " " ;
          myDate = myDate + isDate.getMonth() + " ";
          myDate = myDate + isDate.getDate(); + " ";
          myDate = myDate + isDate.getHours(); + " ";
          myDate = myDate + isDate.getMinutes(); + " ";
          myDate = myDate + isDate.getSeconds();
          //myDate = String.fromCharCode(48 + myDate.length) + myDate;
          return myDate ;
        }
    }


  // sortTable
  function sortTable(col, tableToSort)
    {

      var iCurCell = col + tableToSort.cols;
      var totalRows = tableToSort.rows.length;
      var bSort = 0;
      var colArray = new Array();
      var oldIndex = new Array();
      var indexArray = new Array();
      var bArray = new Array();
      var newRow;
      var newCell;
      var i;
      var c;
      var j;
      // ** POPULATE THE ARRAY colArray WITH CONTENTS OF THE COLUMN SELECTED
      for (i=1; i < tableToSort.rows.length; i++)
        {
          colArray[i - 1] = setDataType(tableToSort.cells(iCurCell).innerText);
          iCurCell = iCurCell + tableToSort.cols;
        }
      // ** COPY ARRAY FOR COMPARISON AFTER SORT
      for (i=0; i < colArray.length; i++)
        {
          bArray[i] = colArray[i];
        }
      // ** SORT THE COLUMN ITEMS
      //alert ( colArray );
      colArray.sort();
      //alert ( colArray );
      for (i=0; i < colArray.length; i++)
        { // LOOP THROUGH THE NEW SORTED ARRAY
          indexArray[i] = (i+1);
          for(j=0; j < bArray.length; j++)
            { // LOOP THROUGH THE OLD ARRAY
              if (colArray[i] == bArray[j])
                {  // WHEN THE ITEM IN THE OLD AND NEW MATCH, PLACE THE
                  // CURRENT ROW NUMBER IN THE PROPER POSITION IN THE
                  // NEW ORDER ARRAY SO ROWS CAN BE MOVED ....
                  // MAKE SURE CURRENT ROW NUMBER IS NOT ALREADY IN THE
                  // NEW ORDER ARRAY
                  for (c=0; c<i; c++)
                    {
                      if ( oldIndex[c] == (j+1) )
                      {
                        bSort = 1;
                      }
                        }
                        if (bSort == 0)
                          {
                            oldIndex[i] = (j+1);
                          }
                            bSort = 0;
                          }
            }
      }
    // ** SORTING COMPLETE, ADD NEW ROWS TO BASE OF TABLE ....
    for (i=0; i<oldIndex.length; i++)
      {
        newRow = tableToSort.insertRow();
        for (c=0; c<tableToSort.cols; c++)
          {
            newCell = newRow.insertCell();
            newCell.innerHTML = tableToSort.rows(oldIndex[i]).cells(c).innerHTML;
          }
        }
    //MOVE NEW ROWS TO TOP OF TABLE ....
    for (i=1; i<totalRows; i++)
      {
        tableToSort.moveRow((tableToSort.rows.length -1),1);
      }
    //DELETE THE OLD ROWS FROM THE BOTTOM OF THE TABLE ....
    for (i=1; i<totalRows; i++)
      {
        tableToSort.deleteRow();
      }
    }



  // ###################################### DATE FUNCTIONS ##################################################


  // populate
  /*function populate(inForm)
  {
  var temp=0;
  var today= new Date();
  var day= today.getDate();
  var month= today.getMonth();
  var year= today.getFullYear();
  t2=36;// prompt("Enter the number of years to fetch",1);



  for (var i=0; i <31 ; i++)
          {
          var x= String(i+1);
          inForm.day.options[i] = new Option(x,x);
          }


  for (var i=0; i <31 ; i++)
          {
          var d=0;
          d=inForm.day.options[i].value;
          if(d=day){
                  //inForm.day.options[i].selected=true;
                  break;}
          }
  inForm.year.options[0] = new Option("Year","Year");

  for (var i=1,j=year; i <t2 ; i++, j--)
          {
          var y= String(j);
          inForm.year.options[i] = new Option(y,y);

          }
  for(var i=0;i<12;i++)
          {
          if(i=month)
                  {inForm.month.options[0].selected=true;
          break;}

          }

  }*/

  // populate2
/*  function populate2(inForm2)
  {
  var t3=0;


  if(inForm2.month.options[1].selected)

  t3=28;
  else if(inForm2.month.options[8].selected||inForm2.month.options[3].selected||inForm2.month.options[5].selected||inForm2.month.options[10].selected)
  t3=30;
  else
  t3=31;


  for(i=0;i<31;i++){
  inForm2.day.options[i]=null;
  }

  for (var i=0; i <t3 ; i++)
          {
          var x= String(i+1);
          inForm2.day.options[i] = new Option(x);

          }
  }
*/