﻿var blnDOM = false, blnIE4 = false;
if (navigator.userAgent.toLowerCase().indexOf("opera") + 1) blnDOM = true;
else if (navigator.userAgent.toLowerCase().indexOf("msie") + 1) blnIE4 = true;
else if (document.getElementById) blnDOM = true;
var kirilicaOn = 0;
var shiftK = 0;
var inputField;

document.onkeypress = getKeycode;
document.onkeyup = shiftKey;

addLoadEvent(inputs);

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

function onKir() {
    if (kirilicaOn == 0) {
        kirilicaOn = 1;
    }
    else {
        kirilicaOn = 0;
    }
}

function shiftKey(event) {
    if (blnDOM) {
        if (event.which == 16) {
            shiftK++;
            setTimeout("shiftK=0", 300);
            if (shiftK == 2) {
                onKir();
                shiftK = 0;
            }
        }
        else {
            shiftK = 0;
        }
    }
    else if (blnIE4) {

        if (window.event.keyCode == 16) {
            shiftK++;
            setTimeout("shiftK=0", 300);
            if (shiftK == 2) {
                onKir();
                shiftK = 0;
            }
        }
        else {
            shiftK = 0;
        }
    }
}


function getKeycode(e) {
    if (blnIE4 && kirilicaOn == 1 && !event.ctrlKey) {
        var golemina = isUpperKey(event.keyCode);
        var sRep = cyr5ko_tast(event.keyCode, golemina);
        if (sRep)
            window.event.keyCode = sRep.charCodeAt();

    }
    else if (blnDOM && kirilicaOn == 1 && !e.ctrlKey) {
        var charBukva = new String(e.which);
        var golemina = isUpperKey(charBukva);
        var blnkey = cyr5ko_tast(charBukva, golemina);
        if (blnkey) {
            textArea(blnkey);
            return false;
        }
    }
}

function install(hElement) {
    if (hElement.addEventListener) {
        hElement.addEventListener("focus", function() { inputField = hElement; }, false);
    }
    else if (hElement.attachEvent) {
        hElement.attachEvent("onfocus", function() { inputField = hElement; });
    }
}


function inputs() {
    var aInputs = document.getElementsByTagName('INPUT');
    for (var nI = 0; nI < aInputs.length; nI++) {
        if (aInputs[nI].type.toLowerCase() == 'text' || aInputs[nI].type.toLowerCase() == 'password') {
            install(aInputs[nI]);
        }
    }
    var aTextAreas = document.getElementsByTagName('TEXTAREA');
    for (var nI = 0; nI < aTextAreas.length; nI++) {
        install(aTextAreas[nI]);
    }
}

var i1 = 0;
var AZBk = new Array();

AZBk[i1++] = new Array("џ", "Џ", "120", "88");
AZBk[i1++] = new Array("ќ", "Ќ", "39", "34");
AZBk[i1++] = new Array("љ", "Љ", "113", "81");
AZBk[i1++] = new Array("њ", "Њ", "119", "87");
AZBk[i1++] = new Array("ѕ", "Ѕ", "121", "89");
AZBk[i1++] = new Array("ж", "Ж", "92", "124");
AZBk[i1++] = new Array("а", "А", "97", "65");
AZBk[i1++] = new Array("б", "Б", "98", "66");
AZBk[i1++] = new Array("в", "В", "118", "86");
AZBk[i1++] = new Array("г", "Г", "103", "71");
AZBk[i1++] = new Array("д", "Д", "100", "68");
AZBk[i1++] = new Array("е", "Е", "101", "69");
AZBk[i1++] = new Array("з", "З", "122", "90");
AZBk[i1++] = new Array("и", "И", "105", "73");
AZBk[i1++] = new Array("ј", "Ј", "106", "74");
AZBk[i1++] = new Array("к", "К", "107", "75");
AZBk[i1++] = new Array("л", "Л", "108", "76");
AZBk[i1++] = new Array("м", "М", "109", "77");
AZBk[i1++] = new Array("н", "Н", "110", "78");
AZBk[i1++] = new Array("о", "О", "111", "79");
AZBk[i1++] = new Array("п", "П", "112", "80");
AZBk[i1++] = new Array("р", "Р", "114", "82");
AZBk[i1++] = new Array("с", "С", "115", "83");
AZBk[i1++] = new Array("т", "Т", "116", "84");
AZBk[i1++] = new Array("у", "У", "117", "85");
AZBk[i1++] = new Array("ф", "Ф", "102", "70");
AZBk[i1++] = new Array("х", "Х", "104", "72");
AZBk[i1++] = new Array("ц", "Ц", "99", "67");
AZBk[i1++] = new Array("ч", "Ч", "59", "58");
AZBk[i1++] = new Array("ш", "Ш", "91", "123");
AZBk[i1++] = new Array("ѓ", "Ѓ", "93", "125");
AZBk[i1++] = new Array("ш", "Ш", "353", "352");
AZBk[i1++] = new Array("џ", "Џ", "273", "272");
AZBk[i1++] = new Array("ч", "Ч", "269", "268");
AZBk[i1++] = new Array("ќ", "Ќ", "263", "262");
AZBk[i1++] = new Array("ж", "Ж", "382", "381");
AZBk[i1++] = new Array(".", ":", "46", "62");
AZBk[i1++] = new Array(",", ";", "44", "60");
AZBk[i1++] = new Array("2", "„", "50", "64");
AZBk[i1++] = new Array("3", "“", "51", "35");
AZBk[i1++] = new Array("4", "’", "52", "36");
AZBk[i1++] = new Array("6", "‘", "54", "94");


function cyr5ko_tast(kod, golemina) {
    for (var i = 0; i < AZBk.length; i++) {
        if (golemina) {
            toG = AZBk[i][1];
            fromG = AZBk[i][3];
            if (kod == fromG)
                return toG;
        }
        else {
            to = AZBk[i][0];
            from = AZBk[i][2];
            if (kod == from)
                return to;
        }
    }
    return false;
}

function isUpperKey(key) {
    for (var i = 0; i < AZBk.length; i++) 
    {
        if (key == AZBk[i][3]) {
            return 1;
        }
    }
    return 0;
}

function textArea(intext) {
    var txtarea = inputField;
    var text = new String(txtarea.value);
    var text1 = text.slice(0, txtarea.selectionStart);
    var text3 = text.slice(txtarea.selectionStart, text.length);

    txtarea.value = text1 + intext + text3;
    txtarea.selectionStart = text1.length + 1;
    txtarea.selectionEnd = text1.length + 1;
}

function ksw(onkir) {
    kirilicaOn = onkir;
}
