var lang = 1;	// 1: Farsi, 0: English
var oslang = 0;  // 1: Farsi, 0: English

// Farsi keyboard map based on ISIRI-2901

var farsikey = [
   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, 0x005C, 0x0686, 0x00D7, 0x0640,
   0x200D, 0x0634, 0x0630, 0x0632, 0x06CC, 0x062B, 0x0628, 0x0644,
   0x0627, 0x0647, 0x062A, 0x0646, 0x0645, 0x067E, 0x062F, 0x062E,
   0x062D, 0x0636, 0x0642, 0x0633, 0x0641, 0x0639, 0x0631, 0x0635,
   0x0637, 0x063A, 0x0638, 0x007D, 0x007C, 0x007B, 0x007E
];

// on Alt+Ctrl, switch language
function FKeyDown()
{
   if (window.event.ctrlKey && window.event.altKey)
   {
	changeLanguage();
	return false;	
   }
   return true;
}


function changeLanguage()
{

      if (lang == 0)
      {
         toFarsi();
      }
      else
      {
		toEnglish();
	  }

}
function UpdateFormatPool(o)
{
	
	nStr = o.value.replace(/,/g,'') ;
	
	if(window.event.keyCode>=48 && window.event.keyCode<=57)
	{
		d = window.event.keyCode-48;
		nStr += d;
		//alert(nStr);
	}
	else nStr += '';
	
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	meisam = new Array();
	while (rgx.test(x1)) {
		t = x1.replace(rgx, '$1');
		meisam[meisam.length] = x1.replace(rgx, ',' + '$2');
		x1 = t;
	}
	str=x1;
	
	for(i=0;i<meisam.length;++i)
	{
		str+=meisam[i];
		//alert(str);
	}
	//alert(str);
	o.value = str;
	//alert(window.event.keyCode);
	if(window.event.keyCode>=48 && window.event.keyCode<=57)
		return false;
	else return true;
}
// change the Farsi
function getEvent()
{
	e.keyCode != 0 ? key = e.keyCode : key = e.charCode;
	return key;
}
function setEvent(e,code)
{
	alert(e.charCode);
	e.charCode = 1510;
	alert(e.charCode);
	//typeof window.event != 'undefined' ?  window.event.keyCode = code : window.Event.charCode = code;
}
function IsShift()
{
	typeof window.event != 'undefined' ? o = window.event.shiftKey : o = window.Event.shiftKey ;
	return o;
}
function FKeyPress(e)
{
	var key = 0;
	e.keyCode != 0 ? key = e.keyCode : key = e.charCode;
	
	//var key = window.event.keyCode;
   // Change to English, if user is using an OS non-English keyboard
   if (key >= 0x00FF) {
      oslang = 1;
      toFarsi();
   } else
      if (oslang == 1) {
         oslang = 0;
         toEnglish();
      }
   // Avoid processing if control or higher than ASCII (i.e., in Arabic Windows)
   if (key < 0x0020 || key >= 0x00FF)
      return;
   if (lang == 1) { //If Farsi
      if (key == 0x0020 && IsShift())
      { // Shift-space -> ZWNJ
         //window.event.keyCode = 0x200C;
         setEvent(e,0x200C);
      }
      else
      {
		setEvent(e,farsikey[key - 0x0020]);
      	//window.event.keyCode = farsikey[key - 0x0020];
      }
	if(key == 1740)
	{
		setEvent(e,1610);
		//window.event.keyCode = 1610;
	}
   }
   return true;
}


function toFarsi ()
{
       window.defaultStatus = "Farsi Keyboard (Press change language button for English)";
       lang = 1;
}

function toEnglish ()
{
       window.defaultStatus = "English Keyboard (Press change language button for Persian)";
       lang = 0;
}

function LangFa (myobj)
{
       myobj.style.textAlign = "right";
       myobj.style.direction = "rtl";
       myobj.focus();
       lang = 1;
}


function LangEn (myobj)
{
       myobj.style.textAlign = "left";
       myobj.style.direction = "ltr";
       myobj.focus();
       lang = 0;
}

// for backwards compatibility
function LangFar (myobj) { return LangFa (myobj); }
function LangEng (myobj) { return LangEn (myobj); }

