﻿
/*
function submitenter(myfield,e)
{
var key;
if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
if (key>31)
if (key<128)
{
if (window.event)
   window.event.keyCode=' !"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُىلآ÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثبلاهتنمئدخحضقسفعرصطغظ<|>ّ'.charCodeAt(key-32);
else if (e)
   e.which=' !"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُىلآ÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثبلاهتنمئدخحضقسفعرصطغظ<|>ّ'.charCodeAt(key-32);

   }
   	return true;
}
*/
/*
var mode = 1;
function SetMode(){
	if (window.event.keyCode == 123){
		if (mode == 0)
 			mode = 1;
        	else 
           		mode = 0; 
           	window.event.returnValue = false; 
           	return; 
        } 
        window.event.returnValue = true; 
} 
*/
var TAB_KEY_CODE =10;
var ENTER_KEY_CODE =13;
function ChangeToFarsiUTF8(e){ 
 		  var code,obj ;
		  if (window.event) {
		    e = window.event;
		    obj = e.srcElement;
		    code = e.keyCode;
		  } else {
		    obj = e.target;
		    code = e.charCode;
		  }
		  var newKey = -1;
           var key = String.fromCharCode(code); 
           if (code > 127) 
         	return; 
//           if (mode == 1){ 
         	switch(key){ 
         	 case 'H'     : newKey = 1570; break
         	 case 'h'     : newKey = 1575; break 
	         case 'f'     : 
	         case 'F'     : newKey =  1576; break  // ,
	         case '`'     : newKey =  1662; break 
	         case 'j'     : 
	         case 'J'     : newKey =  1578; break 
	         case 'e'     : 
	         case 'E'     : newKey =  1579; break 
	         case '['     : newKey =  1580; break 
	         case ']'     : newKey =  1670; break 
	         case 'p'     : 
	         case 'P'     : newKey =  1581; break 
	         case 'o'     : 
	         case 'O'     : newKey =  1582; break 
	         case 'n'     : 
	         case 'N'     : newKey =  1583; break 
	         case 'b'     : 
	         case 'B'     : newKey =  1584; break 
	         case 'v'     : 
	         case 'V'     : newKey =  1585; break 
	         case 'c'     : 
	         case 'C'     : newKey =  1586; break 
	         case '\\\\'    : newKey =  1688; break // j farsi
	         case 's'     : 
	         case 'S'     : newKey =  1587; break 
	         case 'a'     : 
	         case 'A'     : newKey =  1588; break 
	         case 'w'     : 
	         case 'W'     : newKey =  1589; break 
	         case 'q'     : 
	         case 'Q'     : newKey =  1590; break 
	         case 'x'     : 
	         case 'X'     : newKey =  1591; break 
	         case 'z'     : 
	         case 'Z'     : newKey =  1592; break 
	         case 'u'     : 
	         case 'U'     : newKey =  1593; break 
	         case 'y'     : newKey =  1594; break 
	         case 'Y'     : newKey =  1563; break 
	         case 't'     : newKey =  1601; break
	         case 'T'     : newKey =  1548; break 
	         case 'r'     : 
	         case 'R'     : newKey =  1602; break 
	         case ';'     : newKey =  1603; break 
	         case '\\'    : newKey =  1688; break 
	         case 'g'     : 
	         case 'G'     : newKey =  1604; break 
	         case 'k'     :  
	         case 'K'     : newKey =  1606; break 
	         case ','     : newKey =  1608; break 
	         case '\''     : newKey =  1711; break 
	         case 'i'     : 
	         case 'I'     : newKey =  1607; break 
	         case 'd'     : newKey =  1610; break 
	         case 'D'     : newKey =  1609; break 
	         case 'm'     : 
	         case 'M'     : newKey =  1574; break 
	         case 'l'     : 
	         case 'L'     : newKey =  1605; break 
	         case '.'     : newKey =  46;   break 
	         case '0'     : newKey =  1776; break 
	         case '1'     : newKey =  1777; break 
	         case '2'     : newKey =  1778; break 
	         case '3'     : newKey =  1779; break 
	         case '4'     : newKey =  1780; break 
	         case '5'     : newKey =  1781; break 
	         case '6'     : newKey =  1782; break 
	         case '7'     : newKey =  1783; break 
	         case '8'     : newKey =  1784; break 
	         case '9'     : newKey =  1785; break 
	         case '?'     : newKey =  1567; break 
	         case ' '     : newKey =  32;   break 

	     } 
//         } 

	if (window.event){ //IE
		e.keyCode= newKey;
      	e.returnValue = true;
    }else{ //Firefox
    	if (newKey != -1){
	  		obj.value += String.fromCharCode(parseInt(newKey));
	  		e.preventDefault();
	  	}
    }
  return true;    
} 
	
function StringtoUnicode (strParam) { 
	var strtemp1; 
	var string =strParam; 
	var str = ''; 
	for (i = 0; i < string.length; i++) { 
	 if ((string.charCodeAt(i) != '10') && (string.charCodeAt(i) != '13')) { 
	       if (string.charCodeAt(i) == '10')str = str + '&#' + string.charCodeAt(i) + ';'; 
	 } else { 
	       str = str + '\\n'; 
	 } 
	} 
	strtmp1=encodeUrl(string); 
	var re = new RegExp ('&#48;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1776;') 
	var re = new RegExp ('&#49;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1777;') 
	var re = new RegExp ('&#50;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1778;') 
	var re = new RegExp ('&#51;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1779;') 
	var re = new RegExp ('&#52;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1780;') 
	var re = new RegExp ('&#53;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1781;') 
	var re = new RegExp ('&#54;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1782;') 
	var re = new RegExp ('&#55;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1783;') 
	var re = new RegExp ('&#56;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1784;') 
	var re = new RegExp ('&#57;', 'gi') ;                 
	var strtmp1 = strtmp1.replace(re, '&#1785;') 
	return strtmp1; 
} 
         
function encodeUrl(str) { 
	var result = ""; 
	var i = 0; 
	for (i=0; i < str.length; i++) { 
		if ((str.charCodeAt(i) != '10') && (str.charCodeAt(i) != '13')) { 
			result = result + '&#' + str.charCodeAt(i) + ';'; 
		} else 	{ 
			if (str.charCodeAt(i) == '10' )result = result + '\\n'; 
		}   
	} 
	return result; 
} 
	
	
	
function toFarsi()
{
  var key = -1;
  var farsiChar = ' !"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُىلآ÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثبلاهتنمئدخحضقسفعرصطغظ<|>ّ';
  if (window.event)
    key = window.event.keyCode;
  else
    return false;

  if (key>31 && key<128)
  {
    window.event.keyCode=farsiChar.charCodeAt(key-32);
  }
  else
    checkFarsiChar();

  return true;
}

// todo : this method used for accept Latin words when typing farsi input,
// therefore , mapping to utf-8 encoding should be done here.
function checkFarsiChar(e)
{
  var code,obj ;
  if (window.event) {
    e = window.event;
    obj = e.srcElement;
    code = e.keyCode;
  } else {
    obj = e.target;
    code = e.charCode;
  }
  var newKey = -1;
  var key = String.fromCharCode(code); 

  if (key==0x6cc) // Use arabic ye
    newKey = 0x64a;
  else
  if (key==0x6a9) // Use arabic ke
    newKey= 0x643;

	if (window.event){ //IE
		e.keyCode= newKey;
	  	e.returnValue = true;
	}else{ //Firefox
		if (newKey != -1){
	  		obj.value += String.fromCharCode(parseInt(newKey));
	  		e.preventDefault();
	  	}
	}
  return true;    
}

// ================================= Number Checking for UTF-8 encoding==========
function checkNumericUTF8(e,accept)
{
  e = getEvent(e);
  var key  = -1;
  var newKey = -1;
  key =getKeyCode(e);

  // include 0..9
  if ((key>= 48 && key<=57) || key==13 || accept.indexOf(String.fromCharCode(key))!=-1)
  {
  	  if ((key>= 48 && key<=57)){
  	  	  	var keyChar= String.fromCharCode(key);
         	switch(keyChar){ 
	         case '0'     : newKey =  1776; break 
	         case '1'     : newKey =  1777; break 
	         case '2'     : newKey =  1778; break 
	         case '3'     : newKey =  1779; break 
	         case '4'     : newKey =  1780; break 
	         case '5'     : newKey =  1781; break 
	         case '6'     : newKey =  1782; break 
	         case '7'     : newKey =  1783; break 
	         case '8'     : newKey =  1784; break 
	         case '9'     : newKey =  1785; break 
	       }
  	  }
  	  if (key == 46)
  	  	  newKey = 1632;

  	  if (isIE()){
		e.keyCode= newKey;
      }else{ //Firefox
    	if (newKey != -1){
	  		e.target.value += String.fromCharCode(parseInt(newKey));
	  		e.preventDefault();
	  	}
     }
     return true;
  }
  else {
  	  if (isIE()){
    	e.returnValue=false;
      } else { //Firefox
		if (key != 0){
			e.stopPropagation();
			if ( e.preventDefault ) e.preventDefault();
		}
	  }
  } 
}

function checkNumStringUTF8(e)
{
  return checkNumericUTF8(e,"-./:");
}

function checkNumberUTF8(e)
{
  return checkNumericUTF8(e,".");
}

function getKeyCode(e){
	var code;
	var evt;
	if (isIE()) {
    	evt = window.event;
    	obj = evt.srcElement;
    	code = evt.keyCode;
  	} else {
    	obj = e.target;
    	code = e.charCode;
  	}
  	return code;
}

function getEvent(e){
	if (isIE())
		return window.event;
	else return e;
}
	
function isIE()	{
	if (window.event)
		return true;
	else return false;
}	
	
	
//==============================================================================
function checkTimeStringUTF8(e)
{
  return checkNumericUTF8(e,":");
}

function validateTime(field)
{
  var reTime = new RegExp("^([01]?\\d|2[0-3]):[0-5]?\\d$");
  var reTimeHour = new RegExp("^([01]?\\d|2[0-3])$");
  var reTimeNumberJust = new RegExp("^([01]\\d|2[0-3])[0-5]\\d$");

  var str = field.value;
  if (str == '')
    return false;

  if (str.search(reTime)!=-1)
  {
//    var re24 = new RegExp("^24:(0?[1-9]|[1-5]\\d)$");
//    var re00 = new RegExp("^0?0:0?0$");
//    if (str.search(re24)!=-1 || str.search(re00)!=-1)
//      return invalidTimeAlert(field);

    var reHour = new RegExp("^(\\d):");
    var reMin = new RegExp(":(\\d)$");
    field.value = str.replace(reHour,"0$1:").replace(reMin,":0$1");

    return true;
  }
  else if (str.search(reTimeHour)!=-1)
  {
    var reHour = new RegExp("^((\\d):00)$");
  	field.value=(str+':00').replace(reHour,"0$1");  	
    return true;
  }
  if (str.search(reTimeNumberJust) != -1)
  {
//	var re240 = new RegExp("^0000$");
//	if (str.search(re000)!=-1)
//		return invalidTimeAlert(field);
	field.value=str.substr(0,2)+':'+str.substr(2,str.length);
	return true;
  }
  else return invalidTimeAlert(field);
}

function invalidTimeAlert(field,msg)
{
  alert(msg);
  field.focus();
  return false;
}

function invalidTimeAlert(field)
{
  alert('.ساعت اشتباه است');
  field.focus();
  return false;
}
//==============================================================================

function checkLength(field,len,isRequired)
{
  if ((field.value.length!=0 && field.value.length<len) ||
      (field.value.length==0 && isRequired==true))
  {
    alert("تعداد حروف مورد نياز = "+len);
    field.focus();
  }
}

function textAreaMaxLentgh(e, field, maxLen)
{
  evt= getEvent(e);
  if (field.value.length < maxLen)
    return;
  else{
  	  if (isIE()){
    	evt.returnValue=false;
      } else { //Firefox
		if (key != 0){
			evt.stopPropagation();
			if ( evt.preventDefault ) evt.preventDefault();
		}
	  }
  }
}
//==============================================================================
function setSelected(field,value)
{
  for (i=0; i<field.options.length; i++)
  {
    if (field.options[i].value==value)
    {
      field.selectedIndex = i;
      break;
    }
  }
}

/**
 * go to the item which starts with the key pressed
 */
function selectFarsiItem(field)
{
  var farsiChar = ' !"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُىلآ÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثبلاهتنمئدخحضقسفعرصطغظ<|>ّ';
  var key  = -1;
  if (window.event)
    key = window.event.keyCode;
  else
    return;

  if (key < 32)
    return;
  else
  if (key < 128)
    key=farsiChar.charCodeAt(key-32);

  var i=field.selectedIndex+1;
  for (;;)
  {
    if (i==field.options.length)
      i=0;
    if (i==field.selectedIndex)
      return;
    if (field.options[i].text.charCodeAt(0)==key)
    {
      field.selectedIndex = i;
      return;
    }
    i++;
  }
}

function toLatin(e,field){
	var code = getKeyCode(e); 
	var key = String.fromCharCode(code); 
	if (code > 127) {
//		window.event.keyCode=-1;
//		alert('English characters accepte only.');
  	  if (isIE()){
    	e.returnValue=false;
      } else { //Firefox
		if (key != 0){
			e.stopPropagation();
			if ( e.preventDefault ) e.preventDefault();
		}
	  }
	  return false;
	}
	e.returnValue=true;
} 

function acceptLatin(accept)
{
  var key  = -1;
  var key = getKeyCode(e); 
  // include 0..9
  if (key <= 127 )
  {
    return true;
  }
  else {
  	  if (isIE()){
    	e.returnValue=false;
      } else { //Firefox
		if (key != 0){
			e.stopPropagation();
			if ( e.preventDefault ) e.preventDefault();
		}
	  }
  	  
//    window.event.returnValue=false;
  }
}

function numbertoUnicode(param1)
{
	//alert(typeof(param1));
	var sreParam ;
	if (typeof(param1) == 'number'){
		sreParam = param1.toString();
	}else if (typeof(param1) == 'string'){
		sreParam = param1;
	}
	var result = "";
	var i = 0;
	for (i=0; i < sreParam.length; i++) {
		if (sreParam.charCodeAt(i) != 58 && sreParam.charCodeAt(i) != 32){// char :

			code = sreParam.charCodeAt(i)+ 1728;
			result = result + String.fromCharCode(code);
		}else if (sreParam.charCodeAt(i) == 58){
			result = result + ':';
		}else{
			result = result + ' ';
		}
	}
	return result;
}

