var farsikey = [
	0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x06AF, 
	0x0029, 0x0028, 0x002A, 0x002B, 0x0648, 0x002D, 0x002E, 0x002F, 
	0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
	0x0038, 0x0039, 0x003A, 0x06A9, 0x003C, 0x003D, 0x003E, 0x061F, 
	0x0040, 0x064E, 0x0625, 0x0698, 0x0650, 0x064D, 0x0651, 0x06C0, 
	0x0622, 0x005D, 0x0640, 0x00AB, 0x00BB, 0x0621, 0x0623, 0x005B, 
	0x005C, 0x064B, 0x0024, 0x064F, 0x060C, 0x002C, 0x0624, 0x064C, 
	0x064A, 0x061B, 0x0629, 0x062C, 0x067E, 0x0686, 0x005E, 0x005F, 
	0x00F7, 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, 0x00D7
];

var CurIsFarsi=false;

function ForceLanguage(langFarsi,forced) {
   var key = window.event.keyCode;
   if (key == 13 || key == 27 || key == 8)
      return;

   if ((key < 0x0020 || key >= 0x00FF )){
	  if (!langFarsi || (langFarsi && !forced)){
		  for (i=0;i<farsikey.length;i++)
		  {
			if (farsikey[i]==key) event.keyCode= i+0x0020;
		  }
		  //alert("Please change your windows language to English");
          //window.event.keyCode ="";
      }
      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 && event.shiftKey)
         event.keyCode = 0x200C;
      else
         event.keyCode = farsikey[key - 0x0020];
   }
   return true;
}

function ForceFarsi()
{
	ForceLanguage(true,true);
}

function ForceEnglish()
{
	ForceLanguage(false,true);
}
function PreferFarsi(){
	ForceLanguage(true,false);
}

function ChangeLanguage(){
	if(arguments.length==0)
		CurIsFarsi=!CurIsFarsi;
	else
		CurIsFarsi=(arguments[0]==0?true:false);
}

function PreferCurLang(){
	ForceLanguage(CurIsFarsi,false);
}
function ForceCurLang(){
	ForceLanguage(CurIsFarsi,true);
}

function FKeyDown() {
	if (window.event.shiftKey && window.event.altKey) {
		langFarsi=!langFarsi;
		return false;
	}
	return true;
}