﻿var englishCharWithoutShift = [
    { original: 222, converted: 96 },
    { original: 186, converted: 59 },
    { original: 191, converted: 47 },
    { original: 190, converted: 46 },
    { original: 188, converted: 44 },
    { original: 220, converted: 92 },
    { original: 189, converted: 45 },
    { original: 187, converted: 61 },
    { original: 192, converted: 96 },
    { original: 219, converted: 91 },
    { original: 221, converted: 93 },
    { original: 96, converted: 48 },
    { original: 97, converted: 49 },
    { original: 98, converted: 50 },
    { original: 99, converted: 51 },
    { original: 100, converted: 52 },
    { original: 101, converted: 53 },
    { original: 102, converted: 54 },
    { original: 103, converted: 55 },
    { original: 104, converted: 56 },
    { original: 105, converted: 57 },
    { original: 106, converted: 42 },
    { original: 107, converted: 43 },
    { original: 109, converted: 45 },
    { original: 110, converted: 46 },
    { original: 111, converted: 47 }
]

var englishCharWithShift = [
    { original: 48, converted: 41 },
    { original: 49, converted: 33 },
    { original: 50, converted: 64 },
    { original: 51, converted: 35 },
    { original: 52, converted: 36 },
    { original: 53, converted: 37 },
    { original: 54, converted: 94 },
    { original: 55, converted: 38 },
    { original: 56, converted: 42 },
    { original: 57, converted: 40 },

    { original: 191, converted: 63 },
    { original: 190, converted: 62 },
    { original: 186, converted: 58 },
    { original: 187, converted: 58 },
    { original: 188, converted: 60 },
    { original: 189, converted: 95 },
    { original: 192, converted: 126 },
    { original: 219, converted: 91 },
    { original: 221, converted: 93 },
    { original: 222, converted: 34 }
]
var persianCharArray = [32,
33,
34,
35,
36,
37,
38,
1711,
41,
40,
42,
43,
1608,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
1705,
60,
61,
62,
1567,
64,
1614,
1573,
1688,
1616,
1613,
1617,
1728,
1570,
93,
1600,
171,
187,
1569,
1571,
91,
92,
1611,
1604,
1615,
1548,
44,
1572,
1612,
1610,
1563,
1577,
1580,
1662,
1670,
94,
95,
247,
1588,
1584,
1586,
1610,
1579,
1576,
1604,
1575,
1607,
1578,
1606,
1605,
1574,
1583,
1582,
1581,
1590,
1602,
1587,
1601,
1593,
1585,
1589,
1591,
1594,
1592,
125,
124,
123,
215]

function keyenter() {
    var field = window.event.srcElement;
    var e = window.event;
    if (!window.event)
        return;
    var key = window.event.keyCode;
    if (field.curLang == 'fa')
        convertToFA(key);
    else
        convertToEN(field, key);
}

function convertToFA(key) {
    if (key > 31 && key < 128) {
        var newChar = persianCharArray[key - 32];
        window.event.keyCode = newChar;
    }
}

function convertToEN(field, key) {
    if (field.lastEvent.shiftKey) {
        if (field.lastEvent.keyCode >= 65 && field.lastEvent.keyCode <= 93)
            window.event.keyCode = field.lastEvent.keyCode;
        else
            window.event.keyCode = getEngCharWihShift(field.lastEvent.keyCode);
    }
    else {
        if (field.lastEvent.keyCode >= 65 && field.lastEvent.keyCode <= 93)
            window.event.keyCode = field.lastEvent.keyCode + 32;
        else {
            window.event.keyCode = getEngCharWihoutShift(field.lastEvent.keyCode);
        }
    }
    return;
    for (var itemIndex = 0; itemIndex < persianCharArray.length; itemIndex++) {
        if (persianCharArray[itemIndex] == key) {
            window.event.keyCode = itemIndex + 32;
            break;
        }
    }
}

function getEngCharWihoutShift(keyCode) {
    for (var itemIndex = 0; itemIndex < englishCharWithoutShift.length; itemIndex++) {
        if (englishCharWithoutShift[itemIndex].original == keyCode) {
            return englishCharWithoutShift[itemIndex].converted;
            break;
        }
    }
    return keyCode;
}

function getEngCharWihShift(keyCode) {
    for (var itemIndex = 0; itemIndex < englishCharWithShift.length; itemIndex++) {
        if (englishCharWithShift[itemIndex].original == keyCode) {
            return englishCharWithShift[itemIndex].converted;
            break;
        }
    }
    return keyCode;
}

function changeLang() {
    var field = window.event.srcElement;
    var e = window.event;
    field.lastEvent = new Object();
    field.lastEvent.shiftKey = window.event.shiftKey;
    field.lastEvent.keyCode = window.event.keyCode;
    if (window.event.keyCode < 32)
        return true;
    if (window.event.keyCode != 119)
        return true;
    if (field.curLang == 'fa')
        field.curLang = 'en';
    else
        field.curLang = 'fa';

    setCurrentLangIcon(field);
}

function onKeyboadHelperFieldGetFocus() {
    var field = window.event.srcElement;
    setCurrentLangIcon(field);
}

function onKeyboadHelperFieldLeaveFocus() {
    var field = window.event.srcElement;
    var img = document.getElementById('imgLang');
    img.style.visibility = 'hidden';
}

function setCurrentLangIcon(field) {
    var img = document.getElementById('imgLang');
    if (field.curLang == 'fa')
        img.src = 'Pic/fa.png';
    else
        img.src = 'Pic/en.png';
    img.style.visibility = 'visible';
}

KeyboardHelper = function() {
    var hasAny = false;
    for (var itemIndex = 0; itemIndex < document.all.length; itemIndex++) {
        if (document.all[itemIndex].tagName == 'INPUT' || document.all[itemIndex].tagName == 'TEXTAREA') {
            if (document.all[itemIndex].curLang != undefined) {
                handleKeyboardEvents(document.all[itemIndex]);
                hasAny = true;
            }
        }
    }

    if (hasAny) {
        if (document.getElementById('imgLang') == undefined) {
            var imgLang = document.createElement('IMG');
            imgLang.src = 'Pic/fa.png';
            imgLang.setAttribute('id', 'imgLang');
            imgLang.style.position = 'absolute';
            imgLang.style.top = 0;
            imgLang.style.left = 0;
            imgLang.style.visibility = 'hidden';
            imgLang.title = 'با استفاده از كليد F8 ميتوانيد زبان مورد نظر را انتخاب كنيد.';
            document.body.appendChild(imgLang);
        }
    }
}

function handleKeyboardEvents(obj) {
    obj.onkeypress = keyenter;
    //obj.onkeydown = changeLang;
    obj.attachEvent('onkeydown', changeLang);
    obj.attachEvent('onfocus', onKeyboadHelperFieldGetFocus);
    //obj.onfocus = onKeyboadHelperFieldGetFocus;
    obj.attachEvent('onblur', onKeyboadHelperFieldLeaveFocus);
    //obj.onblur = onKeyboadHelperFieldLeaveFocus
}

function focusThis(controlToFocus, theForm) {
    document.getElementById(theForm).focus();
    var fx_ctrl = document.getElementById(controlToFocus);
    fx_ctrl.focus();
//    window.setTimeout(function() {
//        fx_ctrl.focus();
//    }
//    , 3000);

}