﻿function isNull(field, msg)
{
  if (field.value=='')
  {
    alert(msg);
    if (field.type!='hidden')
      field.focus();
    return true;
  }
  return false;
}

function isNumber(field, msg)
{
  if (field.value=='' || isNaN(field.value))
  {
    alert(msg);
    if (field.type!='hidden')
      field.focus();
    return false;
  }
  return true;
}

function isArc(field1, field2)
{
  if (field1.value=='' && field2.value=='')
    return false;
  if (field1.value!='' && field2.value!='')
    return false;
  return true;
}

function isCheckedRadio(radioField, msg)
{
  var checked = false;
  for (var i=0; i<radioField.length; i++)
  {
    if (radioField[i].checked==true)
    {
      checked = true;
    }
  }
  if (checked == true)
    return true;

  alert(msg);
  radioField[0].focus();
  return false;
}
//==============================================================================
function checkDateAcceptedKeys(e,field,isFarsiDate)
{
  var key  = -1;
  var newKey = -1;
	key =getKeyCode(e);
  if (key == 13)
  {
    var isValid;
    if (isFarsiDate)
    {
    		alert('in method enter')
      isValid = validateFarsiDate(field);
    }
    else
    {
      isValid = validateEnglishDate(field);
    }
    if (!isValid)
    {
  	  if (isIE()){
    	e.returnValue=false;
      } else { //Firefox
		 e.stopPropagation();
  		 if ( e.preventDefault ) e.preventDefault();
 // 		return false;
      }
    }
  }
  else
  if (key>= 48 && key<=57)
    return true;
  else
  if  (String.fromCharCode(key)=='/')
  {
    if (field.value.length==0 || field.value.charAt(field.value.length-1) == '/')
    {
  	  if (isIE()){
    	e.returnValue=false;
      } else { //Firefox
		 e.stopPropagation();
  		 if ( e.preventDefault ) e.preventDefault();
 // 		return false;
      }
    }
    else
      return true;
  }
  else{
  	  if (isIE()){
    	e.returnValue=false;
      } else { //Firefox
		if (key != 0){
			e.stopPropagation();
			if ( e.preventDefault ) e.preventDefault();
		}
      }
  }
}

function addDateSlash(field)
{
  var str = field.value;
  var reDay = new RegExp("^(0[1-9]|[12]\\d|3[01])$");
  var reDayMonth = new RegExp("^(0?[1-9]|[12]\\d|3[01])/(0[1-9]|1[012])$");
  if (str.search(reDay)!=-1 || str.search(reDayMonth)!=-1)
  {
    field.value = str + "/";
  }
}

function invalidDateAlert(field,msg)
{
  alert(msg);
  field.focus();
  return false;
}

function synchronizeDateTags(field)
{
  var dtPrefix = "__DATE__";
  var fieldName = field.name;
  var pairFieldName;

  if (fieldName.indexOf(dtPrefix)==0)
    pairFieldName = fieldName.substr(dtPrefix.length);
  else
    pairFieldName = dtPrefix + fieldName ;

  pairField = field.form.elements[pairFieldName];

  var str = field.value;
  if (str == '')
  {
    pairField.value = '';
  }
  else
  {
    var rePairDate = new RegExp("(\\d{2,4})/(\\d{2})/(\\d{2,4})");
    pairField.value = str.replace(rePairDate,"$3/$2/$1");
  }
}

function validateDateFormat(field,dateFormat, date31)
{
  var str = field.value;
  if (str == '')
    return true;

  var reDate = new RegExp(dateFormat);
  if (str.search(reDate)!=-1)
  {
     var re31 = new RegExp(date31);
     if (str.search(re31)!=-1)
       return invalidDateAlert(field,'ماه سي و يک روزه نمي باشد.');

     return true;
  }
  else
  {
    return invalidDateAlert(field,'فرمت تاريخ اشتباه است يا اينکه عدد خارج از محدوده براي روز يا ماه يا سال انتخاب شده است');
  }
}

function validateEnglishDate(e,field)
{
  var dateFormat = "^(0?[1-9]|[12]\\d|3[01])/(0?[1-9]|1[012])/((19)?\\d{2}|20\\d{2})$";
  var date31 = "^31/(0?[469]|11)";

  if (validateDateFormat(field,dateFormat,date31))
  {
    var reFebruary30 = new RegExp("^3[01]/0?2");
    if (field.value.search(reFebruary30)!=-1)
      return invalidDateAlert(field,'ماه 28 روزه است');

    var reDay = new RegExp("^([1-9])/");
    var reMonth = new RegExp("/([1-9])/");
    var reYear = new RegExp("/(\\d{2})$");

	var dateStr=field.value.replace(reDay,"0$1/").replace(reMonth,"/0$1/").replace(reYear,"/19$1");
	
    var reFebruary29 = new RegExp("^29/02");
    var reFullYear = new RegExp("/\\d{4}");
    var year;

    if (dateStr.search(reFebruary29)!=-1){
    	if (dateStr.search(reFullYear)!=-1){
    		result =dateStr.search(reFullYear);
    		year = dateStr.substring(result+1,result+5);
    		if (!isLeapYear(year)){
				return invalidDateAlert(field,'ماه 28 روزه است');
    		}
    	}
    }
    field.value =dateStr;

    synchronizeDateTags(field);
    return true;
  }
  return false;
}

function validateFarsiDate(e,field)
{
  var dateFormat = "^(0?[1-9]|[12]\\d|3[01])/(0?[1-9]|1[012])/(1?[2-3])?\\d{2}$";
  var date31 = "^31/(0?[789]|1[012])";

  if (validateDateFormat(field,dateFormat,date31))
  {
    var reDay = new RegExp("^([1-9])/");
    var reMonth = new RegExp("/([1-9])/");
    var reYear = new RegExp("/(\\d{2})$");

	var dateStr=field.value.replace(reDay,"0$1/").replace(reMonth,"/0$1/").replace(reYear,"/13$1");
	
    var y =parseInt(dateStr.substring(6,10));
    var m=parseInt(dateStr.substring(3,5));
    var d=parseInt(dateStr.substring(0,2));
    
    if ((!isLeapYear(y+621)) && m == 12 && d == 30){
      return invalidDateAlert(field,'ماه 29 روزه است');
	}

    field.value = dateStr;

//    field.value = field.value.replace(reDay,"0$1/").replace(reMonth,"/0$1/").replace(reYear,"/13$1");

    synchronizeDateTags(field);
    return true;
  }
  return false;
}

function setDate(field,dt)
{
  field.value = dt;
  synchronizeDateTags(field);
}

function SyncDate(checkBox,field,dt)
{
  if (checkBox.checked)
  {
    setDate(field,dt);
  }
  else{
    setDate(field,'');
  }
}

//===============================================================================
function checkSequenceDate(theForm,dateStirng)
{
  alert_cmnd='ترتيب زماني فيلدهاي تاريخ درست نميباشد.';
  for (i=1;i<dateStirng.length;i++)
  {
    curDate=theForm.elements(dateStirng[i]).value ;
    if ( curDate != '')
      for(j=0;j<=i-1;j++)
      {
        beforeDate=theForm.elements(dateStirng[j]).value;
        if (beforeDate != '')
          if (beforeDate > curDate)
          {
            alert(alert_cmnd);
            return false;
          }
      }

  }
  return true;
}

function isEmptyForm(theForm)
{
  var len = theForm.elements.length;
  not_complete='حداقل مقدار يکي از فيلدها را پر کنيد';
  for (var i = 0; i < len; i++)
  {
    var e = theForm.elements[i];
    if (e.type == 'text')
    {
      if (e.value != '')
        return false;
    }
    else
    if (e.type ==  'select-one')
    {
      if (e.value != '-1')
        return false;
    }
    else
    if (e.type ==  'checkbox')
    {
      if (e.checked == true)
        return false;
    }
    else
    if (e.type ==  'radio')
    {
      for (var j=0; j<e.length; j++)
        if (e[j].checked == true)
          return false;
    }
  }
  alert(not_complete);
  return true;
}
// Kabise
function isLeapYear(miladiYear){
	var y =miladiYear;
	if ( ((y % 4 ) == 0 ) && (((y % 100) != 0)  || ((y % 400 ) == 0) )) 
		return true;
	return false;
}

function isValidEmail(email){
	var value=email.value;
//  var reg1 = "^[a-zA-Z0-9]*[\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$";
//  var reg2 ="^[\w]*[\w\.-][\w]*@[\w]*[\w\.-][\w]*\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$";
//	var reg3  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (value == '') return true;
	var emailFormat  = /^([a-zA-Z0-9_\.\-])+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
	if (emailFormat.test(value)){
		return true;
	}
	alert('آدرس پست الكترونيكي درست نمي باشد');
	email.focus();
	return false;
}

