function storeCaret(textEl) {
if (textEl.createTextRange)
textEl.caretPos = document.selection.createRange().duplicate();}
var lang = 1;	// 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,
   0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
   0x0038, 0x0039, 0x003A, 0x0643, 0x003E, 0x003D, 0x003C, 0x061F,
   0x066C, 0x0624, 0x200C, 0x0698, 0x0649, 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, 0x064A, 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 ];
function changeLang() {
if (lang == 0) {lang = 1;
return true;} else {lang = 0;
return true; }}
function FKeyDown (txtFrm){
var key = window.event.keyCode;
if (key == 145){ if (lang == 0) { lang = 1;
return true;} else { lang = 0;
return true;}}}
function FKeyPress(txtFrm) {
var key = window.event.keyCode;
if (key == 13) { window.event.keyCode = 13; return true; }
if (lang == 1) { // If Farsi
if (key == 0x0020 && window.event.shiftKey) // Shift-space -> ZWNJ
window.event.keyCode = 0x200C;
else
window.event.keyCode = farsikey[key - 0x0020];
if (farsikey[key - 0x0020] == 92) {window.event.keyCode = 0x0698;}
if (farsikey[key - 0x0020] == 8205) {window.event.keyCode = 0x067E;}}
return true;}
function change(obj){if (lang==0)
lang=1
else
lang=0;
obj.focus();}
//-------------------------------
//var isiri2901_lang = 1;
//// 1: Persian, 0: English
//var isiri2901_nativelang = 0;
//// 1: Persian, 0: English
//
//// Persian keyboard map based on ISIRI-2901
//
//var isirikey = [
//        0x0020, 0x0021, 0x061B, 0x066B, 0x00A4, 0x066A, 0x060C, 0x06AF,
//        0x0029, 0x0028, 0x002A, 0x002B, 0x0648, 0x002D, 0x002E, 0x002F,
//        0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
//        0x0038, 0x0039, 0x003A, 0x0643, 0x003E, 0x003D, 0x003C, 0x061F,
//        0x066C, 0x0624, 0x200C, 0x0698, 0x0649, 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, 0x064A, 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+anything, switch language
//function FKeyDown(e)
//{
//    if (window.event)
//        e = window.event;
//    if (e.ctrlKey && e.altKey) {
//        if (isiri2901_lang == 0)
//            setPersian();
//        else
//            setEnglish();
//        try {
//            e.preventDefault();
//        } catch (err) {
//        }
//        return false;
//    }
//    return true;
//}
//
//var pk_test_ev;
//
//function FKeyPress(e)
//{
//    var key;
//    var obj;
//
//
//    if (window.event) {
//        e = window.event;
//        obj = e.srcElement;
//        key = e.keyCode;
//    } else {
//        obj = e.target;
//        key = e.charCode;
//    }
//
//    if (e.bubbles == false)
//        return true;
//
//    //   This cannot be used anymore, in FF 1.5.0.2, as a new event will call keypress again.
//    //  Change to English, if user is using an OS non-English keyboard
//    if (key >= 0x00FF) {
//        isiri2901_nativelang = 1;
//        setPersian();
//    } else
//        if (isiri2901_nativelang == 1) {
//            isiri2901_nativelang = 0;
//            setEnglish();
//        }
//
//
//        // Avoid processing if control or higher than ASCII
//        // Or ctrl or alt is pressed.
//    if (key < 0x0020 || key >= 0x007F || e.ctrlKey || e.altKey || e.metaKey)
//        return true;
//
//    if (isiri2901_lang == 1) { //If Persian
//
//        // rewrite key
//        var newkey;
//        if (key == 0x0020 && e.shiftKey) // Shift-space -> ZWNJ
//            newkey = 0x200C;
//        else
//            newkey = isirikey[key - 0x0020];
//
//        if (newkey == key)
//            return true;
//
//
//        try {
//            // Gecko
//            var new_event = document.createEvent("KeyEvents");
//            new_event.initKeyEvent("keypress", false, true, document.defaultView, false, false, false, false, 0, newkey);
//            obj.dispatchEvent(new_event);
//            e.preventDefault();
//        } catch (err) {
//            try {
//                // Windows
//                e.keyCode = newkey;
//            } catch (err) {
//                try {
//                    // Gecko after banning fake key emission (FF 1.0.6 to FF 1.5.0.1)
//                    // Try inserting at cursor position
//                    pnhMozStringInsert(obj, String.fromCharCode(newkey));
//                    e.preventDefault();
//                } catch (err) {
//                    // Everything else, simply add to the end of buffer
//                    obj.value += String.fromCharCode(newkey);
//                    e.preventDefault();
//                }
//            }
//        }
//    }
//    return true;
//}
//
//
//function setPersian(obj, quiet)
//{
//    isiri2901_lang = 1;
//    if (obj) {
//        obj.style.textAlign = "right";
//        obj.style.direction = "rtl";
//        obj.focus();
//    }
//    if (!quiet)
//        window.defaultStatus = "Persian Keyboard (Press Ctrl+Alt+Space to change to English)";
//}
//
//
//function setEnglish(obj, quiet)
//{
//    isiri2901_lang = 0;
//    if (obj) {
//        obj.style.textAlign = "left";
//        obj.style.direction = "ltr";
//        obj.focus();
//    }
//    if (!quiet)
//        window.defaultStatus = "English Keyboard (Press Ctrl+Alt+Space to change to Persian)";
//}
//
//
//function toggleDir(obj, quiet) {
//    var isrtl = 0;
//    if (obj)
//        isrtl = obj.style.direction != 'ltr';
//    else
//        isrtl = isiri2901_lang;
//    if (isrtl)
//        setEnglish(obj, quiet);
//    else
//        setPersian(obj, quiet);
//}
//
//// Inserts a string at cursor
//function pnhMozStringInsert(elt, newtext) {
//    var posStart = elt.selectionStart;
//    var posEnd = elt.selectionEnd;
//    var scrollTop = elt.scrollTop;
//    var scrollLeft = elt.scrollLeft;
//
//    elt.value = elt.value.slice(0, posStart) + newtext + elt.value.slice(posEnd);
//    var newpos = posStart + newtext.length;
//    elt.selectionStart = newpos;
//    elt.selectionEnd = newpos;
//    elt.scrollTop = scrollTop;
//    elt.scrollLeft = scrollLeft;
//    elt.focus();
//
//}

