/*******************************************************************/      
      
// Original idea is from:      
// http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/farsitools/#dirlist and      
// http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/farsitools/php/date/scripts/

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            
]; 
img_fa=new Image(134,18)
img_fa.src="http://nowar.21mehr.com/en.gif"

img_en=new Image(134,18)
img_en.src="http://nowar.21mehr.com/fa.gif"

function changeLanguage() {
	langFarsi=!langFarsi;
	langFarsi?document.forms[0].languageImage.src=img_fa.src:document.forms[0].languageImage.src=img_en.src;
	document.forms[0].title.focus();      
} 
function FBlogKeyDown() {
	if (window.event.shiftKey && window.event.altKey) {      
		changeLanguage();
		return false;
	}
	return true;
}

function farsitext (keyCode, key) {
	newk = String.fromCharCode(farsikey[keyCode - 0x0020]);

	var objRegExp = new RegExp("[A-Za-z`0-9\x2C\x3B\x5B\x5C\x5D\x7C\x3F\x5C\x5E\x5F]");
	var validate_key = objRegExp.test(String.fromCharCode(keyCode));
	if ((keyCode >= 34) && (keyCode <= 41)) validate_key = true;
	if (langFarsi && validate_key && (keyCode != 0x200C) && (keyCode != 32))
		return { replaceKey: true, newKeyCode: farsikey[keyCode - 0x0020], newKey: newk };
	else
		return {cancelKey: false };
}

function changeKey (textControl, evt, keyChecker) {
  var keyCode = evt.keyCode ? evt.keyCode :
                evt.charCode ? evt.charCode :
		evt.which ? evt.which : void 0;
  var key;
  if (keyCode) {
    key = String.fromCharCode(keyCode);
  }
  var keyCheck = keyChecker(keyCode, key);
  if (keyCode && window.event && !window.opera) {
    if (keyCheck.cancelKey) {
      return false;
    }
    else if (keyCheck.replaceKey) {
      window.event.keyCode = keyCheck.newKeyCode;
      if (window.event.preventDefault) {
        window.event.preventDefault();
      }
      return true;
    }
    else {
      return true;
    }
  }
  else if (typeof textControl.setSelectionRange != 'undefined') {
    if (keyCheck.cancelKey) {
      if (evt.preventDefault) {
        evt.preventDefault();
      }
      return false;
    }
    else if (keyCheck.replaceKey) {
// cancel the key event and insert the newKey for the current selection
      if (evt.preventDefault) {
	  evt.preventDefault();
      }
      var oldSelectionStart = textControl.selectionStart;
      var oldSelectionEnd = textControl.selectionEnd;
      var selectedText = textControl.value.substring(oldSelectionStart,
oldSelectionEnd);
      var newText = typeof keyCheck.newKey != 'undefined' ?
keyCheck.newKey : String.fromCharCode(keyCheck.newKeyCode);
      textControl.value = 
        textControl.value.substring(0, oldSelectionStart) +
        newText +
        textControl.value.substring(oldSelectionEnd);
      textControl.setSelectionRange(oldSelectionStart + newText.length,
oldSelectionStart + newText.length);
      return false;
    }
    else {
      return true;
    } 
  }

  else if (keyCheck.cancelKey) {
    if (evt.preventDefault) {
      evt.preventDefault();
    }
    return false;
  }
  else {
    return true;
  }
}

