var MSG_MONTH = new Array("Be sure to enter a month value.", "يرجى اختيار الشهر.") ;

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

/*------------------------------------------------------------------------------------------*/
function LTrim(str)
 /***
  PURPOSE : Remove leading blanks from (str).
  IN      : str - the string to be LTrimed

  RETVAL: An LTrimmed string
 ***/
 {
  var whitespace = new String(" \t\n\r");

  var s = new String(str);

  if (whitespace.indexOf(s.charAt(0)) != -1) {
    // We have a string with leading blank(s)...
    var j=0, i = s.length;

    // Iterate from the far left of string until we
    // don't have any more whitespace...
    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
                  j++;

    // Get the substring from the first non-whitespace
    // character to the end of the string...
    s = s.substring(j, i);
  }

  return s;
 }
/*------------------------------------------------------------------------------------------*/
 function RTrim(str)
  /***
  PURPOSE: Remove trailing blanks from (str).
  IN     : str - the string to be RTrimed
  RETVAL: An RTrimmed string
  ***/
  {
  // We don't want to trip JUST spaces, but also tabs,
  // line feeds, etc.  Add anything else you want to
  // "trim" here in Whitespace
  var whitespace = new String(" \t\n\r");
  var s = new String(str);
  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
   // We have a string with trailing blank(s)...
   
   var i = s.length - 1;       // Get length of string
   
   // Iterate from the far right of string until we
   // don't have any more whitespace...
   while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
                        i--;
    
   // Get the substring from the front of the string to
   // where the last non-whitespace character is...
   s = s.substring(0, i+1);
  }

  return s;
 }

/*------------------------------------------------------------------------------------------*/
 function Trim(str)
  /***
  PURPOSE: Remove trailing and leading blanks from (str).
  IN     : str - the string to be Trimed
  RETVAL: A Trimmed string
  ***/
  {
   return RTrim(LTrim(str));
  }
  
/*------------------------------------------------------------------------------------------*/  
function isEmptyTextField (FieldName) {
  var objField = MM_findObj(FieldName);
  if ( Trim(objField.value) == "" ){
    return true;
  }else {
    return false;
  }  
}
/*------------------------------------------------------------------------------------------*/  

// **BEGIN GENERIC VALIDATION FUNCTIONS**
// general purpose function to see if an input value 
// has been entered at all
function isEmpty(inputStr) {
  if (Trim(inputStr) == "" || inputStr == null) {
    return true
  }
  return false
}

// function to determine if value is in acceptable range 
//for this application
function inRange(inputStr, lo, hi) {
  var num = parseInt(inputStr, 10)
  if (num < lo || num > hi) {
    return false
  }
  return true
}
// **END GENERIC VALIDATION FUNCTIONS**

function validateMonth(field, bypassUpdate) {
  var input = field.value
  if (isEmpty(input)) {
    alert(AlertMonth)
    select(field)
    return false
  } else {
    input = parseInt(field.value, 10)
    if (isNaN(input)) {
      alert(AlertNumericValue)
      select(field)
      return false
    } else {
      if (!inRange(input,1,12)) {
         alert(AlertMonthValues)
         select(field)
         return false
      }
    }
  }
  if (!bypassUpdate) {
     // calcDate()
  }
  return true
}

function validateDate(dateField,monthField,yearField) {
  var objdateField = MM_findObj(dateField);
  var objmonthField = MM_findObj(monthField);
  var objyearField = MM_findObj(yearField);
  var input = objdateField.value
  
  if (isEmpty(input)) {
    alert(AlertDay)
    select(objdateField)
    return false
  } else {
    input = parseInt(objdateField.value, 10)
    if (isNaN(input)) {
      alert(AlertNumericValue)
      select(objdateField)
      return false
    } 
    else {if (! validateYear(objyearField)) return false
      var month = objmonthField
      if (!validateMonth(month, true)) return false
      var monthVal = parseInt(month.value, 10)
      var monthMax = new Array(31,31,28,31,30,31,30,31,
                               31,30,31,30,31)
      var top = monthMax[monthVal]
      if( (monthVal == 2) && (objyearField.value % 4 == 0) ) { //special case
        top = 29
      }  
      if (!inRange(input,1,top)) {
        alert(AlertDayValues + top + ".")
        select(objdateField)
        return false
      }
    }
  }
  return true
}

function validateYear(field) {
  var input = field.value
  if (isEmpty(input)) {
    alert(AlertYear)
    select(field)
    return false
  } else {
    input = parseInt(field.value, 10)
    if (isNaN(input)) {
      alert(AlertNumericValue)
      select(field)
      return false
    } else {
      if (!inRange(input,1900,2030)) {
        alert(AlertYearValues)
        select(field)
        return false
      }
    }
  }

  return true
}

function select(field) {
  //var objField = field
  field.focus()
  if (field.type == 'text')
  {
	field.select()
  }
}

function IsValidEmailAddress(src) {
			email = MM_findObj(src);
			emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[a-zA-Z]$"
			var regex = new RegExp(emailReg);
			return regex.test(Trim(email.value));
}

/*---------------------------------------------------------------------------------------*/
function openw(page,width,height){
     window.open(page,'Window','width='+width+',height='+height+',top=100,left=100,status=no,toolbar=no,menubar=no,location=no,scrollbars=no');
     return;
    }
    
/*----------------------------------------------------------------------------------------*/
function SubmitLanguage(language) {
	  document.MainForm.Language.value = language;	      
      document.MainForm.submit();
    }    
    

/*----------------------------------------------------------------------------------------*/
function CompareBirthDate (smonth, sday, syear, emonth, eday, eyear)
{
	var objsmonth = MM_findObj(smonth);
	var objsday = MM_findObj(sday);
	var objsyear = MM_findObj(syear);
	var objemonth = MM_findObj(emonth);
	var objeday = MM_findObj(eday);
	var objeyear = MM_findObj(eyear);
	
	var ldate = new Date(objsmonth.value  + '/' + objsday.value  + '/' + (parseInt(objsyear.value) + 18) );
	var edate = new Date(objemonth.value  + '/' + objeday.value  + '/' + objeyear.value );
	
	if ( ldate > edate )
	{
		alert ('You should be more than 18 years old to register');
		return false;
	}
	return true;
}

/*----------------------------------------------------------------------------------------*/
function CompareDate (smonth, sday, syear, emonth, eday, eyear)
{
	var objsmonth = MM_findObj(smonth);
	var objsday = MM_findObj(sday);
	var objsyear = MM_findObj(syear);
	var objemonth = MM_findObj(emonth);
	var objeday = MM_findObj(eday);
	var objeyear = MM_findObj(eyear);

	var ldate = new Date(objsmonth.value  + '/' + objsday.value  + '/' + objsyear.value );
	var edate = new Date(objemonth.value  + '/' + objeday.value  + '/' + objeyear.value );
	if ( ldate > edate )
	{
	alert (AlertEndDateStartDate)
		return false
	}
	return true
}

/*----------------------------------------------------------------------------------------*/
function CompareCurrentDate (smonth, sday, syear, emonth, eday, eyear)
{
	var objsmonth = MM_findObj(smonth);
	var objsday = MM_findObj(sday);
	var objsyear = MM_findObj(syear);
	var objemonth = MM_findObj(emonth);
	var objeday = MM_findObj(eday);
	var objeyear = MM_findObj(eyear);

	var ldate = new Date(objsmonth.value  + '/' + objsday.value  + '/' + objsyear.value );
	var edate = new Date(objemonth.value  + '/' + objeday.value  + '/' + objeyear.value );
	if ( ldate > edate )
	{
	alert (AlertEndDateStartDate)
		return false
	}
	return true
}

/*----------------------------------------------------------------------------------------*/
function DateIsBeforeToday(TodayField, dayField, monthField, yearField)
{
	if (! validateDate(dayField, monthField, yearField)) return false;
	
	var objToday = MM_findObj(TodayField);
	var objDay = MM_findObj(dayField);
	var objMonth = MM_findObj(monthField);
	var objYear = MM_findObj(yearField);
	
	var today = new Date(objToday.value);
	today.setHours(0,0,0,0);
	
	var GivenDate = new Date(objYear.value, objMonth.value - 1, objDay.value);
	
	if (GivenDate >= today)
	{
		alert(AlertDateIsBeforeToday)
		select(objDay);
		return false;
	}

	return true;
}

/*----------------------------------------------------------------------------------------*/
function DateIsAfterToday(TodayField, dayField, monthField, yearField)
{
	if (! validateDate(dayField, monthField, yearField)) return false;
	
	var objToday = MM_findObj(TodayField);
	var objDay = MM_findObj(dayField);
	var objMonth = MM_findObj(monthField);
	var objYear = MM_findObj(yearField);
	
	var today = new Date(objToday.value);
	today.setHours(0,0,0,0);
	
	var GivenDate = new Date(objYear.value, objMonth.value - 1, objDay.value);
	
	if (GivenDate < today)
	{
		alert(AlertDateIsAfterToday)
		select(objDay);
		return false;
	}

	return true;
}

function DateConflict(dayField1, monthField1, yearField1, dayField2, monthField2, yearField2){

	var objDay1 = MM_findObj(dayField1);
	var objMonth1 = MM_findObj(monthField1);
	var objYear1 = MM_findObj(yearField1);
	
	var objDay2 = MM_findObj(dayField2);
	var objMonth2 = MM_findObj(monthField2);
	var objYear2 = MM_findObj(yearField2);
	
	var FromDate = new Date(objYear1.value, objMonth1.value - 1, objDay1.value);
	var ToDate = new Date(objYear2.value, objMonth2.value - 1, objDay2.value);
	
	if (FromDate >= ToDate){
		alert(AlertEndDateStartDate);
		return false;
		}
	
	return true;
}
function CompareCourseDate (smonth, sday, syear, emonth, eday, eyear)
{
	var objsmonth = MM_findObj(smonth);
	//alert(smonth);
	var objsday = MM_findObj(sday);
	//alert(sday);
	var objsyear = MM_findObj(syear);
	//alert(syear);
	var objemonth = MM_findObj(emonth);
	//alert(emonth);
	var objeday = MM_findObj(eday);
	//alert(eday);
	var objeyear = MM_findObj(eyear);
	//alert(eyear);
	
	var ldate = new Date(objsmonth.value  + '/' + objsday.value  + '/' + objsyear.value );
	var edate = new Date(objemonth.value  + '/' + objeday.value  + '/' + objeyear.value );
	
	if ( ldate > edate )
	{
		alert (AlertEndDateStartDate);
		return false;
	}
	return true;
}

function ValueParser(StrValue) {  
	var ResultStr,ResultString;
	var Results;
	
	ResultString=new String(StrValue);
	ResultStr=ResultString.split("'");
	Results=""
  
	for(var i=0;i<ResultStr.length;i++) { 
		if (i == ResultStr.length-1)
			Results=Results + ResultStr[i];
		else
			Results=Results + ResultStr[i] + "\\'";
	}
	
	return Results;	
  }
  
  function ValueReverseParser(StrValue) {  
	var ResultStr,ResultString;
	var Results;
	
	ResultString=new String(StrValue);
	ResultStr=ResultString.split("\\'");
	Results=""
  
	for(var i=0;i<ResultStr.length;i++) { 
		if (i == ResultStr.length-1)
			Results=Results + ResultStr[i];
		else
			Results=Results + ResultStr[i] + "'";
	}
	
	return Results;	
  }