  /*********************/
  function ReadKey()
  /*********************/
  {
    if (window.event.keyCode >= 97)
      window.event.keyCode -= 32;
    if (window.event.keyCode <= 90 && window.event.keyCode >= 65) //alphabet letters
			Type(far[window.event.keyCode - 65]);
		else
			switch(window.event.keyCode) {
				case 8: Type(8); break;
				case 13: Type(13); SubmitForm(); break;
				case 32: Type(255); break;
				case 154: Type(237); break;
				case 156: Type(248); break;
				case 159: Type(141); break;
				case 160: Type(148); break;
				case 187: Type(154); break;
				case 188: Type(166); break;
				case 189: Type(156); break;
				case 190: Type(239); break;
			}		
    window.event.returnValue = false;
  }
  
  //Type the farsi char.
  var single = new Array(162,163,164,165,166,175,224,248,141,144,255);
  var prevQuadra = new Array(249,225,229,143);
  var newQuadra = new Array(249,225,229,253,144);
  var prevConv = [[225,228],[226,227],[229,232],[230,231],[249,251],[221,250],[143,142]];
  var newConv = [[225,226],[229,230],[253,252],[144,145],[249,249]];

  /*********************/
	function IsThere(arr, code) //checks if the code exists in the array
  /*********************/
	{
		for (i=0; i<arr.length; i++) {
			if (arr[i] == code)
				return true;
		}
		return false;
	}
	
	var lastCode; //last code typed
  /*********************/
	function convCode(code)
  /*********************/
	{
		lastCode = code;
    if (code == 221)
      return 35;
    else if (code > 221)
      return code - 188;
    else
      return code - 141;
   }

  /*********************/
  function Type(code)
  /*********************/
  { 
    if (code == 8) {  //backspace
			//move cursor back	
      if (place > 0) {
				document.images["p"+place].src = letter[67].src;
        place--;
        document.images["p"+place].src = cursor.src
        Farsi[place] = 0;
        OutStr[place] = 0;
        if (place > 0)
					document.images["p"+(place-1)].src = letter[convCode(Farsi[place-1])].src;        
      }
      return;
    }

    if (code == 13) {  //Enter
      return;
    }
    
    if (place == FarsiLen)
			return;
			
		//change the previous char.
		if (place > 0 && code != 255 && code != 141) {
			if(IsThere(prevQuadra, Farsi[place-1])) {
				for (i=0; i<7; i++) {
					if (prevConv[i][0] == lastCode) {
						document.images["p"+(place - 1)].src = letter[convCode(prevConv[i][1])].src;
						OutStr[place-1] = prevConv[i][1];
						break;
					}
				}
			}
			else if(!IsThere(single, Farsi[place-1])) { //double
				prev = Farsi[place-1] + (Farsi[place-1] == 241 ? 2 : 1); //Laam
				document.images["p"+(place - 1)].src = letter[convCode(prev)].src;
				OutStr[place-1] = prev;
			}
		}
				
		//change the new char.
		if (place > 0 && IsThere(newQuadra, code) && !IsThere(single, Farsi[place-1])) {
			for (i=0; i<5; i++) {
				if (newConv[i][0] == code) {
					incode = convCode(newConv[i][1]);
					OutStr[place] = newConv[i][1];
					break;
				}
			}
		}
		else {
			incode = convCode(code);
			OutStr[place] = code;
		}
		    
		document.images["p"+place].src = letter[incode].src;
    Farsi[place] = code;
    place++;    		
		if (place < FarsiLen)
			document.images["p"+place].src = cursor.src;
  }
    
  /*********************/
  function eng2far()
  /*********************/
  {
    if (window.event.keyCode >= 97)
      window.event.keyCode -= 32;
    code = window.event.keyCode;
  }

  /*********************/
	function Reset()
  /*********************/
	{
		for (i=0; i<=FarsiLen; i++) {
			document.images["p"+i].src = letter[67].src;
			Farsi[i] = 0;
			OutStr[i] = 0;
		}
		place = 0;
	}

  /*********************/
	function SubmitForm()
  /*********************/
	{
		//top.main.topBnr.location = "../dictTop.asp"
		document.Keyboard.farsi.value = Farsi;
		document.Keyboard.submit();
	}

	var FarsiLen = len;
	var OutStr = new Array(len+1);
	var Farsi = new Array(len+1);

	for (i=0; i<=len; i++) {
		Farsi[i] = 0;
		OutStr[i] = 0;
	}
	
  //get images
  var letter = new Array(70);
  for (i=0; i<35; i++) {
    letter[i] = new Image;
    letter[i].src = "../images/letters/black/" + (i + 141) + ".gif";
  }
  letter[35] = new Image;
  letter[35].src = "../images/letters/black/221.gif";
  
  for (i=36; i<68; i++) {
    letter[i] = new Image;
    letter[i].src = "../images/letters/black/" + (i + 188) + ".gif";
  }
  
	var cursor = new Image;
	cursor.src = "../images/letters/black/196.gif";

  var place=0; //image place holder

  //convert keyboard to farsi
  var far = new Array(169,163,165,253,152,146,241,144,249,150,246,244,143,162,160,158,173,235,167,233,225,164,171,175,229,224);
  document.images["p"+place].src = cursor.src;
