var langFarsi = true;
var farsikey = [	// Farsi keyboard map based on Iran Popular Keyboard Layout      
	0x0020, 0x0021, 0x061B, 0x066B, 0x00A4, 0x066A, 0x060C, 0x06AF,      
	0x0029, 0x0028, 0x002A, 0x002B, 0x0648, 0x002D, 0x002E, 0x002F,      
	0x06F0, 0x06F1, 0x06F2, 0x06F3, 0x06F4, 0x06F5, 0x06F6, 0x06F7,      
	0x06F8, 0x06F9, 0x003A, 0x06A9, 0x003E, 0x003D, 0x003C, 0x061F,      
	0x066C, 0x0624, 0x200C, 0x0698, 0x064A, 0x064D, 0x0625, 0x0623,      
	0x0622, 0x0651, 0x0629, 0x00BB, 0x00AB, 0x0621, 0x004E, 0x005D,      
	0x005B, 0x0652, 0x064B, 0x0626, 0x064F, 0x064E, 0x0056, 0x064C,            
	0x0058, 0x0650, 0x0643, 0x062C, 0x0698, 0x0686, 0x00D7, 0x0640,            
	0x067E, 0x0634, 0x0630, 0x0632, 0x06CC, 0x062B, 0x0628, 0x0644,            
	0x0627, 0x0647, 0x062A, 0x0646, 0x0645, 0x0626, 0x062F, 0x062E,            
	0x062D, 0x0636, 0x0642, 0x0633, 0x0641, 0x0639, 0x0631, 0x0635,            
	0x0637, 0x063A, 0x0638, 0x007D, 0x007C, 0x007B, 0x007E            
];            
            
function FKeyPress() {
   var key = window.event.keyCode;
   if (key < 0x0020 || key >= 0x00FF)
      return;
   if (langFarsi) {
      var el = event.srcElement;
      var objRegExp = new RegExp("[A-Za-z\x27\x2C\x3B\x5B\x5C\x5D\x7C]");
      var validate_key = objRegExp.test(String.fromCharCode(key));
      if ((validate_key || (key==92)) && (key != 0x200C) && (el.value.lastIndexOf(String.fromCharCode(1740)) == el.value.length - 1) && el.value.length > 0) {
         el.value = el.value.slice(0, -1);
         el.value += String.fromCharCode(1610);
      }
      if (key == 0x0020 && window.event.shiftKey)
         window.event.keyCode = 0x200C;
      else
         window.event.keyCode = farsikey[key - 0x0020];
   }
   return true;
}

function EKeyPress() {//Only English
   var key = window.event.keyCode;
   if (key < 0x0020 || key >= 0x00FF)
   {
   		window.event.keyCode=0;
	    if (key == 0x00D) {return true;}
   		alert('Please change keyboard language to English mode(EN).')
		return false;
   }
   else
   {
		return true;
   }
}

//------------------------------------------------------------------------

function FKeyDown()
{
   if (window.event.shiftKey && window.event.altKey) { 
      if (lang == 0) {
         lang = 1;
         window.defaultStatus = "Farsi Mode";
      }
      else {
         lang = 0;
         window.defaultStatus = "English Mode";
      }
      return false;
   }
   return true;
}

function typefarsi(ctl)
{
	//This Function Will Aloow UniCode Support For Persian
	var k=window.event.keyCode;
	//	alert(k);	
	if (k>=65 && k<=90)
		k=k+32;
	switch (k)
	{
		case 97 :
			k=1588;
			break;
		case 115 :
			k=1587;
			break;			
		case 100 :
			k=1610;
			break;			
		case 102 :
			k=1576;
			break;			
		case 103 :
			k=1604;
			break;			
		case 104 :
			k=1575;
			break;			
		case 106 :
			k=1578;
			break;			
		case 107 :
			k=1606;
			break;			
		case 108 :
			k=1605;
			break;			
		case 59 : 
			k=1603;
			break;			
		case 39 : 
			k=1711;
			break;			
		case 113 :
			k=1590;
			break;			
		case 119 :
			k=1589;
			break;			
		case 101 :
			k=1579;
			break;			
		case 114 :
			k=1602;
			break;			
		case 116 :
			k=1601;
			break;			
		case 121 :
			k=1594;
			break;			
		case 117 :
			k=1593;
			break;			
		case 105 :
			k=1607;
			break;			
		case 111 :
			k=1582;
			break;			
		case 112 :
			k=1581;
			break;			
		case 91 : 
			k=1580;
			break;			
		case 93 : 
			k=1670;
			break;			
		case 122 :
			k=1592;
			break;			
		case 120 :
			k=1591;
			break;			
		case 99 : 
			k=1586;
			break;			
		case 118 :
			k=1585;
			break;			
		case 98 : 
			k=1584;
			break;			
		case 110 :
			k=1583;
			break;			
		case 96 : 
			k=1662
			break;			
		case 92 : 
			k=1688;
			break;						
		case 40 : 
			k=41;
			break;			
		case 41 : 
			k=40;
			break;			
		case 44 : 
			k=1608;
			break;			
		case 45 : 
			k=45;
			break;			
		case 46 : 
			k=46;
			break;			
		case 47 : 
			k=47;
			break;			
		case 32:
			k=32;
			break;
		case 13:
			k=13;
			break;
			case 48:
			case 49:
			case 50:
			case 51:
			case 52:
			case 53:
			case 54:
			case 55:			
			case 56:
			case 57:
				k=k;
				break;			
		default:
			k=0;
	}
		
	window.event.keyCode=k;	
}
