var formBgSelect = '#F0F5F9';
var formBgNormal = '#FFFFFF';

var formMessageTo = ' تا ';
var formMessageEmpty = 'وارد کردن مقدار الزامی است';
var formMessageCharacter = 'کاراکترهای مجاز';
var formMessageCharacter_az = 'حروف انگلیسی کوچک';
var formMessageCharacter_AZ = 'حروف انگلیسی بزرگ';
var formMessageCharacter_09 = 'اعداد انگلیسی';
var formMessageCharacter_minus = 'کاراکتر منها (-)';
var formMessageLength = 'تعداد کاراکتر ها';
var formMessageIncorrect = 'مقدار فیلد صحیح وارد نشده است';
var formMessageEmail = 'پست الکترونیک صحیح وارد نشده است';
var formMessageBetween = 'حداقل و حداکثر مقدار';

function FRM_SetFocus(obj) {
  var id = "";
  if (id = obj.getAttribute('id')) {
    if (part = document.getElementById(id + 'Title')) part.style.backgroundColor = formBgSelect;
    if (part = document.getElementById(id + 'Object')) part.style.backgroundColor = formBgSelect;
    if (part = document.getElementById(id + 'Check')) part.style.backgroundColor = formBgSelect;
    
    if (errors = eval('new Array(' + obj.getAttribute('jsErrorCheck') + ')')) {
      var check = '';
      if (check = document.getElementById(id + 'CheckImage')) {
        check.src = '/wx-theme/img/form/check.gif';
        check.setAttribute('jsCheckError', '');
      }
    }    
  } else return false;
}

function FRM_SetBlur(obj) {
  var id = "";
  if (id = obj.getAttribute('id')) {
    if (part = document.getElementById(id + 'Title')) part.style.backgroundColor = formBgNormal;
    if (part = document.getElementById(id + 'Object')) part.style.backgroundColor = formBgNormal;
    if (part = document.getElementById(id + 'Check')) part.style.backgroundColor = formBgNormal;
    
    if (errors = eval('new Array(' + obj.getAttribute('jsErrorCheck') + ')')) FRM_CheckObject(obj, '');    
  } else return false;
}

function FRM_CheckObject(obj, image) {
  if (check = document.getElementById(obj.getAttribute('id') + 'CheckImage')) {
    var errors = eval('new Array(' + obj.getAttribute('jsErrorCheck') + ')');
    var msg = ''; var i = 0;
    for (i=0; i<errors.length; i++) {
      //EMPTY ...
      if ((errors[i] == 'empty') && (obj.value == '')) msg += formMessageEmpty + '<br>';
      //CHECK CHARACTERS
      if (errors[i].substr(0, 6) == 'check,') {
        var format = errors[i].substr(6);
        var chk = ''; var chr = ''; var c = 0;
        for (c=0; c<format.length; c++) {
          if (c!=0) chr += ' - ';
          switch (format.substr(c, 1)) {
            case 'a': chr += formMessageCharacter_az;    chk += 'abcdefghijklmnopqrstuvwxyz'; break;
            case 'A': chr += formMessageCharacter_AZ;    chk += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; break;
            case '0': chr += formMessageCharacter_09;    chk += '0123456789'; break;
            case '-': chr += formMessageCharacter_minus; chk += '-'; break;
          }
        }
        if (!FRM_CheckString(obj.value, chk)) msg += formMessageCharacter + ': ' + chr + '<br>';
      }
      //CHECK LENGTH
      if (errors[i].substr(0, 7) == 'length,') {
        var format = errors[i].substr(7);
        var min = format.substr(0, format.indexOf('-'));
        var max = format.substr(format.indexOf('-') + 1);
        if ((obj.value.length < parseInt(min)) || (obj.value.length > parseInt(max))) msg += formMessageLength + ': ' + FRM_PNumber(min) + formMessageTo + FRM_PNumber(max) + '<br>';
      }
      //EQUAL ...
      if (errors[i].substr(0, 1) == '=') {
        var format = errors[i].substr(1);
        if (obj.value != eval(format)) msg += formMessageIncorrect + '<br>';
      }
      //LESS THAN ...
      if (errors[i].substr(0, 1) == '<') {
        var format = errors[i].substr(1);
        if (parseInt(obj.value) >= eval(format)) msg += formMessageIncorrect + '<br>';
      }
      //GRATER THAN ...
      if (errors[i].substr(0, 1) == '>') {
        var format = errors[i].substr(1);
        if (parseInt(obj.value) <= eval(format)) msg += formMessageIncorrect + '<br>';
      }
      //CHECK EMAIL
      if (errors[i] == 'email') {
        if ((obj.value != '') && (!FRM_CheckEmail(obj.value))) msg += formMessageEmail + '<br>';
      }
      //CHECK NUMBER
      if (errors[i] == 'number') {
        if (!FRM_CheckString(obj.value, '0123456789')) msg += formMessageIncorrect + '<br>';
      }
      //CHECK FLOAT NUMBER
      if (errors[i] == 'float') {
        if ((!FRM_CheckString(obj.value, '0123456789.-')) || (obj.value.split('.').length > 2)) msg += formMessageIncorrect + '<br>';
      }
      //CHECK NUMBER VALUE
      if (errors[i].substr(0, 8) == 'between,') {
        var format = errors[i].substr(8);
        var min = format.substr(0, format.indexOf('-'));
        var max = format.substr(format.indexOf('-') + 1);
        if ((parseInt(obj.value) < parseInt(min)) || (parseInt(obj.value) > parseInt(max))) msg += formMessageBetween + ': ' + FRM_PNumber(min) + formMessageTo + FRM_PNumber(max) + '<br>';
      }
    }

    if (msg) {
      if (!image) image = 'error';
      check.src = '/wx-theme/img/form/' + image + '.gif';
      check.setAttribute('jsCheckError', msg);
      return false;
    } else {
      if (!image) image = 'correct';
      check.src = '/wx-theme/img/form/' + image + '.gif';
      check.setAttribute('jsCheckError', '');
      return true;
    };
  } else return true;
}

function FRM_CheckForm(form, image) {
  var i = 0; var error = false;
  for (i=0; i<form.elements.length; i++) {
    var field = form.elements[i];
    if (!FRM_CheckObject(field, image)) {
      if ((!error) && (image == '') && (form.tabID)) {
        var tab = field.getAttribute('jsTabPage');
        eval(form.tabID.value + '.setSelectedIndex(' + tab + ');');
        field.focus();
      } else {
        if ((!error) && (image == '')) field.focus();
      }
      error = true;
    }    
  }
  
  return !error;
}

function FRM_CheckString(val, check) {
  if (!val) return true;
  
  var i = 0;
  for (i=0; i<val.length; i++) {
    if (check.indexOf(val.charAt(i)) == -1) return false;
  }
  return true;
}

function FRM_PNumber(val) {
  var pNum = new Array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹");
	var eNum = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");

	var num = val.toString();
	var i = 0;
	for (i=0; i<pNum.length; i++) {
	  while (num.lastIndexOf(eNum[i]) != -1) {
	    num = num.replace(eNum[i], pNum[i]);
	  }
	}
	
	return num;
}

function FRM_CheckEmail(val) { 
  var splitted = val.match("^(.+)@(.+)$"); 
  if(splitted == null) return false; 
  if(splitted[1] != null ) { 
    var regexp_user=/^\"?[\w-_\.]*\"?$/; 
    if(splitted[1].match(regexp_user) == null) return false; 
  } 
  
  if(splitted[2] != null) { 
    var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/; 
    if(splitted[2].match(regexp_domain) == null) { 
      var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/; 
      if(splitted[2].match(regexp_ip) == null) return false; 
    }
    return true; 
  } 
  return false; 
}