var area='undef';
var lang='ab';
var img;
var img_ru;
var shift=0;
var caps=0;
var popup=0;
var pending=0;
var us=0; // set to true to allow unicode submit

function set_area(a) {area=a;};
function stay_on_top() {refocus=0;};
function set_lang(l) {
    lang=l;
    if(img)img.src='ab_files/kb_'+lang+'.gif';
    else pending=1;
};
function change_lang() {
    if(lang=='ab') set_lang('ru');
    else set_lang('ab');
};
function imageLoad(i) {
    img=i;
    if(img_ru)return;
    img_ru = new Image();
    img_ru.src = "ab_files/kb_ru.gif";
    if(pending) {
        set_lang(lang);
        pending=0;
    };
};
function u() {
    if(us)document.f.submit();
}
function ping(key) {
    if(area=='undef')return;
    if(!popup)area.focus();
    var ch=key;
    switch (key)
    {
        case "CLEAR_ALL" : area.value="";return;
        case "BACK"  : ch=area.value; area.value = ch.substr(0, (ch.length-1)); return;
        case "ENTER" : area.value=area.value + "\n";return;
        case "CAPS"  : caps=1-caps;
        case "SHIFT" : shift=1-shift; return;
        case "`" : if(lang=='ab')ch=(shift==0) ? "`" : "~";
                   break;
        case "1" : if(lang=='ab')ch=(shift==0) ? "1" : "!";
                   break;
        case "2" : if(lang=='ab')ch=(shift==0) ? "2" : "@";
                   break;
        case "3" : if(lang=='ab')ch=(shift==0) ? "3" : "#";
                   break;
        case "4" : if(lang=='ab')ch=(shift==0) ? "4" : "$";
                   break;
        case "5" : if(lang=='ab')ch=(shift==0) ? "5" : "%";
                   break;
        case "6" : if(lang=='ab')ch=(shift==0) ? "6" : "^";
                   break;
        case "7" : if(lang=='ab')ch=(shift==0) ? "7" : "&";
                   break;
        case "8" : if(lang=='ab')ch=(shift==0) ? "8" : "*";
                   break;
        case "9" : if(lang=='ab')ch=(shift==0) ? "9" : "(";
                   break;
        case "0" : if(lang=='ab')ch=(shift==0) ? "0" : ")";
                   break;
        case "-" : if(lang=='ab')ch=(shift==0) ? "-" : "_";
                   break;
        case "=" : if(lang=='ab')ch=(shift==0) ? "=" : "+";
                   break;
        case "q" : if(lang=='ab')ch=(shift==0) ? "Ö" : "Ö";
                   break;
        case "w" : if(lang=='ab')ch=(shift==0) ? "%u0446" : "%u0426";
                   break;
        case "e" : ch=(shift==0) ? "%u0443" : "%u0423";
                   break;
        case "r" : ch=(shift==0) ? "%u043a" : "%u041a";
                   break;
        case "t" : ch=(shift==0) ? "%u0435" : "%u0415";
                   break;
        case "y" : ch=(shift==0) ? "%u043d" : "%u041d";
                   break;
        case "u" : ch=(shift==0) ? "%u0433" : "%u0413";
                   break;
        case "i" : ch=(shift==0) ? "%u0448" : "%u0428";
                   break;
        case "o" : if(lang=='ab')ch=(shift==0) ? "%u04e1" : "%u04e0";
                   break;
        case "p" : ch=(shift==0) ? "%u0437" : "%u0417";
                   break;
        case "[" : ch=(shift==0) ? "%u0445" : "%u0425";
                   break;
        case "]" : if(lang=='ab')ch=(shift==0) ? "&#1583;" : "}";
                   break;
        case "\\": if(lang=='ab')ch=(shift==0) ? "%u045f" : "%u040f";
                   break;
        case "a" : ch=(shift==0) ? "%u0444" : "%u0424";
                   break;
        case "s" : ch=(shift==0) ? "%u044b" : "%u042b";
                   break;
        case "d" : ch=(shift==0) ? "%u0432" : "%u0412";
                   break;
        case "f" : ch=(shift==0) ? "%u0430" : "%u0410";
                   break;
        case "g" : ch=(shift==0) ? "%u043f" : "%u041f";
                   break;
        case "h" : ch=(shift==0) ? "%u0440" : "%u0420";
                   break;
        case "j" : ch=(shift==0) ? "%u043e" : "%u041e";
                   break;
        case "k" : ch=(shift==0) ? "%u043b" : "%u041b";
                   break;
        case "l" : ch=(shift==0) ? "%u0434" : "%u0414";
                   break;
        case ";" : ch=(shift==0) ? "%u0436" : "%u0416";
                   break;
        case "'" : if(lang=='ab')ch=(shift==0) ? "-" : "'";
                   break;
        case "z" : if(lang=='ab')ch=(shift==0) ? "%u04b7" : "%u04b6";
                   break;
        case "x" : ch=(shift==0) ? "%u0447" : "%u0427";
                   break;
        case "c" : ch=(shift==0) ? "%u0441" : "%u0421";
                   break;
        case "v" : ch=(shift==0) ? "%u043c" : "%u041c";
                   break;
        case "b" : ch=(shift==0) ? "%u0438" : "%u0418";
                   break;
        case "n" : ch=(shift==0) ? "%u0442" : "%u0422";
                   break;
        case "m" : ch=(shift==0) ? "%u044c" : "%u042c";
                   break;
        case "," : ch=(shift==0) ? "%u0431" : "%u0411";
                   break;
        case "." : if(lang=='ab')ch=(shift==0) ? "%u0495" : "%u0494";
                   break;
        case "/" : ch=(shift==0) ? "." : "?";
                   break;
        case "laquo" : ch=(shift==0) ? "%ab" : "%bb";
                   break;
    };
    area.value=area.value + unescape(ch);
    shift = (caps==1) ? 1 : 0;
};

// if this is a popup then tell the opener that we are now ready so that
// it can initialise us
// opener must define the function popup_init
if(location.hash == '#popup') {
    popup=1;
    opener.popup_init();
};

