﻿<!--
window.document.onkeydown = OnKeyDown;
window.document.onkeypress = OnKeyPress;

var KeyboardLayout = 1; // 1: Farsi, 0: Latin
var ChangableKeyboardLayout = 0; // 1: Yes, 0: No

var BaseCodes =
[
	1570, 1574, 1575, 1576, 1662, 1578, 1579, 1580, 1670,
	1581, 1582, 1583, 1584, 1585, 1586, 1688, 1587, 1588,
	1589, 1590, 1591, 1592, 1593, 1594, 1601, 1602, 1705,
	1711, 1604, 1605, 1606, 1608, 1607, 1740, 1614, 1573,
	1616, 1613, 1617, 1618, 91  , 1600, 171 , 187 , 1569,
	1571, 93  , 92  , 1611, 1610, 1615, 1548, 44  , 1572,
	1612, 1563, 1577
]

var ConvertedCodes =
[
	72 , 109, 104, 102, 126, 106, 101, 123, 125,
	112, 111, 110, 98 , 118, 99 , 124, 115, 97 ,
	119, 113, 120, 122, 117, 121, 116, 114, 58 ,
	34 , 103, 108, 107, 60 , 105, 100, 65 , 66 ,
	68 , 69 , 70 , 71 , 73 , 74 , 75 , 76 , 77 ,
	78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 ,
	87 , 89 , 90
]

var PersianCharacterSet =
[
	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 OnKeyDown()
{
	if(ChangableKeyboardLayout == 1)
		if((window.event.shiftKey) && (window.event.altKey))
			KeyboardLayout = (KeyboardLayout == 0)? 1: 0;
		else
			if((window.event.shiftKey) && (window.event.ctrlKey))
				KeyboardLayout = (KeyboardLayout == 0)? 1: 0;

	return(true);
}

function OnKeyPress()
{
	var KeyCode;

	if(event.srcElement.name) // Checking Existance of Source Element.
	{
		KeyCode = window.event.keyCode;

		if(KeyboardLayout == 1)
		{
			if((KeyCode < 0x0020) || (KeyCode >= 0x00FF)) // If keyboard layout is in persian mode.
				return(true);

			var MySourceElement = event.srcElement;
			var MyRegularExperesion = new RegExp("[A-Za-z\x27\x2C\x3B\x5B\x5C\x5D\x7C]");
			var KeyCodeValidation = MyRegularExperesion.test(String.fromCharCode(KeyCode));

			if((KeyCode != 0x200C) &&
				(MySourceElement.value.length > 0) &&
				((KeyCodeValidation) || (KeyCode == 92)) &&
				(MySourceElement.value.lastIndexOf(String.fromCharCode(1740)) == MySourceElement.value.length - 1))
			{
				MySourceElement.value = MySourceElement.value.slice(0 ,-1);
				MySourceElement.value += String.fromCharCode(1610);
			}

			if((window.event.shiftKey) && (KeyCode == 0x0020))
				window.event.keyCode = 0x200C;
			else
				window.event.keyCode = PersianCharacterSet[KeyCode - 0x0020];

			return(true);
		}
		else
		{
			var intIndex = 0;
			var blnFoundKeyCode = false;
			
			while((intIndex <= BaseCodes.length - 1) && (!(blnFoundKeyCode)))
			{
				if(BaseCodes[intIndex] == KeyCode)
				{
					blnFoundKeyCode = true;
					KeyCode = ConvertedCodes[intIndex];
				}

				intIndex++;
			}

			window.event.keyCode = KeyCode;

			return(true);
		}
	}
}
-->
