z_kbrd_caret_ie = 0 ;
function z_kbrd_gcp(obj) {
    var cursorPos = null;
    if (document.selection){ //IE
        return z_kbrd_caret_ie;
    } else { //!IE
        cursorPos = obj.selectionStart;
    }
    return cursorPos;
}
function z_kbrd_gcp_old(obj) {
    var cursorPos = null;
    if (document.selection){ //IE
        var range = document.selection.createRange();
        range.moveStart('textedit', -1);
        cursorPos = range.text.length;
    } else { //!IE
        cursorPos = obj.selectionStart;
    }
    return cursorPos;
}
function z_kbrd_scp(obj, pos) {
    obj.selectionStart = pos;
    obj.selectionEnd = pos;
    obj.focus();
}
function z_kbrd_scp_old(obj, pos) {
    if(obj.setSelectionRange) {
        obj.focus();
        obj.setSelectionRange(pos,pos);
    }
    else if (obj.createTextRange) {
		var range = obj.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}
$(document).ready(function(){
    z_kbrd_visible = false;
    z_kbrd_focused = false;
    z_kbrd_cheblur = false;
    z_kbrd_tmout = false;
    $('BODY').append(
        '<Div id="z_kbrd__call" style="display: none;">' +
        '<Img src="/img/pub/kbrd.png">' +
        '</Div>'
    );
    z_kbrd_row_a = z_kbrd_row_b = z_kbrd_row_c = z_kbrd_row_d = z_kbrd_row_e = '';
    for ( $i = 00 ; $i < 14 ; $i++ )
        z_kbrd_row_a += '<Div id="z_kbrd__btn_' + $i + '" class="z_kbrd__btn"></Div>';
    for ( $i = 14 ; $i < 28 ; $i++ )
        z_kbrd_row_b += '<Div id="z_kbrd__btn_' + $i + '" class="z_kbrd__btn"></Div>';
    for ( $i = 28 ; $i < 41 ; $i++ )
        z_kbrd_row_c += '<Div id="z_kbrd__btn_' + $i + '" class="z_kbrd__btn"></Div>';
    for ( $i = 41 ; $i < 53 ; $i++ )
        z_kbrd_row_d += '<Div id="z_kbrd__btn_' + $i + '" class="z_kbrd__btn"></Div>';
    for ( $i = 53 ; $i < 56 ; $i++ )
        z_kbrd_row_e += '<Div id="z_kbrd__btn_' + $i + '" class="z_kbrd__btn"></Div>';
    $('BODY').append(
        '<Div id="z_kbrd__view" style="display: none;">' +
            '<Div>' + z_kbrd_row_a + '<Div style="clear: both;"></Div></Div>' +
            '<Div>' + z_kbrd_row_b + '<Div style="clear: both;"></Div></Div>' +
            '<Div>' + z_kbrd_row_c + '<Div style="clear: both;"></Div></Div>' +
            '<Div>' + z_kbrd_row_d + '<Div style="clear: both;"></Div></Div>' +
            '<Div>' + z_kbrd_row_e + '<Div style="clear: both;"></Div></Div>' +
        '</Div>'
    );
    if (document.selection) {
        $('.z_kbrd_if').bind('click',function(){
            var z_kbrd_range = document.getElementById($(this).attr('id')).createTextRange();
            z_kbrd_range.setEndPoint("EndToStart", document.selection.createRange());
            z_kbrd_caret_ie = z_kbrd_range.text.length;
        });
        $('.z_kbrd_if').bind('keyup',function(){
            var z_kbrd_range = document.getElementById($(this).attr('id')).createTextRange();
            z_kbrd_range.setEndPoint("EndToStart", document.selection.createRange());
            z_kbrd_caret_ie = z_kbrd_range.text.length;
        });
    }
    $('.z_kbrd_if').bind('focus',function(){
        z_kbrd_focused = $(this);
        z_kbrd_cheblur = $(this);
        if ( false !== z_kbrd_tmout ) {
            clearTimeout( z_kbrd_tmout );
            z_kbrd_tmout = false;
        }
        $('#z_kbrd__call').css({
            'left':$(this).position().left+$(this).width()-24,
            'top':$(this).position().top+$(this).height()/2-20
        });
        $('#z_kbrd__view').css({
            'left':$(this).position().left,
            'top':$(this).position().top+$(this).height()+3
        });
        if ( z_kbrd_visible ) {
            $('#z_kbrd__view').show();
        } else {
            $('#z_kbrd__call').show();
        }
    });
    $('.z_kbrd_if').bind('blur',function(){
        if ( z_kbrd_visible )
            return true;
        z_kbrd_cheblur = false;
        z_kbrd_tmout = setTimeout(function(){
            if(z_kbrd_cheblur===false){
                $('#z_kbrd__view').hide();
                $('#z_kbrd__call').hide();
                z_kbrd_visible = false;
            }
        },1300);
    });
    $('#z_kbrd__call').bind('click',function(){
        z_kbrd_visible = true;
        $(this).hide();
        $('#z_kbrd__view').fadeIn();
        if ( z_kbrd_focused )
            z_kbrd_focused.focus();
    });
    $('.z_kbrd__btn').bind('click',function(){
        var z__t = document.getElementById(z_kbrd_focused.attr('id'));
        var z__p = z_kbrd_gcp(z__t);
        var z__v = z_kbrd_focused.val();
        var z__i = $(this).attr('z_keyb');
        if ( z__i == '~0' ) {
            $('#z_kbrd__view').hide();
            $('#z_kbrd__call').show();
            z_kbrd_visible = false;
            return true;
        }
        if ( z__i == '~1' ) {
            z_kbrd_encoding(1);
            z_kbrd_focused.focus();
            return true;
        }
        if ( z__i == '~2' ) {
            z_kbrd_encoding(2);
            z_kbrd_focused.focus();
            return true;
        }
        z_kbrd_caret_ie++;
        z_kbrd_focused.val( z__v.substr(0,z__p) + z__i + z__v.substr(z__p) );
        z_kbrd_focused.focus();
        z_kbrd_scp(z__t,z__p+1);
    });
    function z_kbrd_encoding( $k_encoding ) {
        if ( 1 == $k_encoding ) {
            var $enc = new Array(
                '¸','1','2','3','4','5','6','7','8','9','0','','','',
                '','é','ö','ó','ê','å','í','ã','ø','ù','ç','õ','ú','',
                '','ô','û','â','à','ï','ð','î','ë','ä','æ','ý','ñêðûòü',
                '&uArr;','ÿ','÷','ñ','ì','è','ò','ü','á','þ','.','',
                '','ïðîáåë',''
            );
            var $env = new Array(
                '¸','1','2','3','4','5','6','7','8','9','0','-','-','-',
                '-','é','ö','ó','ê','å','í','ã','ø','ù','ç','õ','ú','-',
                '-','ô','û','â','à','ï','ð','î','ë','ä','æ','ý','~0',
                '~2','ÿ','÷','ñ','ì','è','ò','ü','á','þ','.','-',
                '-',' ','-'
            );
        }
        if ( 2 == $k_encoding ) {
            var $enc = new Array(
                '¨','1','2','3','4','5','6','7','8','9','0','','','',
                '','É','Ö','Ó','Ê','Å','Í','Ã','Ø','Ù','Ç','Õ','Ú','',
                '','Ô','Û','Â','À','Ï','Ð','Î','Ë','Ä','Æ','Ý','ñêðûòü',
                '&dArr;','ß','×','Ñ','Ì','È','Ò','Ü','Á','Þ',',','',
                '','ïðîáåë',''
            );
            var $env = new Array(
                '¨','1','2','3','4','5','6','7','8','9','0','-','-','-',
                '-','É','Ö','Ó','Ê','Å','Í','Ã','Ø','Ù','Ç','Õ','Ú','-',
                '-','Ô','Û','Â','À','Ï','Ð','Î','Ë','Ä','Æ','Ý','~0',
                '~1','ß','×','Ñ','Ì','È','Ò','Ü','Á','Þ',',','-',
                '-',' ','-'
            );
        }
        for ( $i = 0 ; $i < $enc.length ; $i++ ) {
            if ( $enc[$i] == '' ) {
                $('#z_kbrd__btn_'+$i).css({'visibility':'hidden'});
            } else {
                $('#z_kbrd__btn_'+$i).css({'visibility':'visisble'});
                $('#z_kbrd__btn_'+$i).html($enc[$i]);
                $('#z_kbrd__btn_'+$i).attr({'z_keyb':$env[$i]});
            }
        }
    }
    z_kbrd_encoding(1);
});
