/* javascript functions for kyrilic virtual keyboard */

var cursor_pos;

function translit(el_name,direction) {
	var text = document.getElementById(el_name);
	text.value = translit_string(text.value,direction);
	text.focus();
}

function strpos( haystack, needle, offset){
    var i = (haystack+'').indexOf( needle, offset ); 
    return i===-1 ? false : i;
}

function in_array(needle, haystack, strict) {
     var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}

function sym_to_cyr(str,sym,rsym)
{
//sym = unescape(sym);
if (sym == '{' || sym == '}' || sym == '[' || sym == ']' || sym == '~' || sym == '\'' || sym == '|' || sym == '\\' || sym == '~'   )  {

sym = '\\' + sym;
}
//var flag1 = str.indexOf('YAHOO');

var smile_on = smiles_on;
if (smile_on == 1){
	var arrSmiles = new Array();
	var flag1     = new Array();
	var flag2     = new Array();
	var positions = new Array();


	arrSmiles[0] = "YAHOO";
	arrSmiles[1] = "GIVE_HEART";
	arrSmiles[2] = "STOP";
	arrSmiles[3] = "KISSED";
	arrSmiles[4] = "LOL"; 
	arrSmiles[5] = "SCRATCH";
	arrSmiles[6] = "SORRY";
	arrSmiles[7] = "OK";
	arrSmiles[8] = "HI";
	arrSmiles[9] = "NO";
	arrSmiles[10] = "DRINK";
	arrSmiles[11] = "KISSING";
	arrSmiles[12] = "PARDON";
	arrSmiles[13] = "HEART";
	arrSmiles[14] = "BYE";
	arrSmiles[15] = "YES";
	arrSmiles[16] = "BEACH";
	arrSmiles[17] = "IN LOVE";
	arrSmiles[18] = "THUMBS UP";
	arrSmiles[19] = "ROSE";
	arrSmiles[20] = "ANGEL";


		for ( var i in arrSmiles )
		{
			var pos = strpos(str, arrSmiles[i],0);
				if (pos){
					flag1[i] = pos;
					flag2[i] = flag1[i] + arrSmiles[i].length;
				}
		}

	var positions = new Array();

	var l =0;
	for (var n in flag1){
		for (var m=flag1[n];m<=flag2[n];m++){
			positions[l]=m;
			l++;
		}
		
	}
	if (!in_array(str.indexOf(sym), positions)) {
		str = str.replace(new RegExp(sym, "g"), rsym);
	}
}
else{
	str = str.replace(new RegExp(sym, "g"), rsym);
}

return str;
}


function translit_string(str,direction)
{
	var str_tmp = str;
	var i;
	for (i=0; i<lat.length; i++)
	{
		if (direction == 'to_lat') {
			str = sym_to_cyr(str,rus[i],lat[i]);
		} else {

			str = sym_to_cyr(str,lat[i],rus[i]);
		}
	}
	if (str_tmp!=str) {
		//undo_step[textarea_name]++;
		//update_undo_btn();
		//undo_history[textarea_name][undo_step[textarea_name]] = str_tmp;
	}
	return str;
}

function change_working_field(e) {
	if (!e) var e = window.event
	if (e.target) {
		targ = e.target
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	var field = targ.id;
	textarea_name = field;
	update_undo_btn();
}

function btn_undo_click() {
	var text = document.getElementById(textarea_name);
	if (undo_history[textarea_name][undo_step[textarea_name]]) text.value = undo_history[textarea_name][undo_step[textarea_name]];
	if (undo_step[textarea_name]>0) {
		undo_step[textarea_name]--;
	}
	update_undo_btn();
}
var cur_undo_text;
function update_undo_btn() {
	var btn_undo = document.getElementById('btn_undo_'+textarea_name);
	if(!btn_undo){
		btn_undo = document.getElementById('btn_undo');
	}
	var undo_text = msg_5 + ' (' + undo_step[textarea_name] + ')';
	if(btn_undo)
	{
		if (!undo_step[textarea_name]) {
			btn_undo.innerHTML = '';
		} else {
			btn_undo.innerHTML = undo_text;
			cur_undo_text = undo_history[textarea_name][undo_step[textarea_name]];
		}
	}
}

var lat = new Array();
var rus = new Array();
var undo_history = new Array();
var undo_step = new Array();

var en_kbd = "~1234567890-=qwertyuiop[]asdfghjkl;'\\\\zxcvbnm,./ ";
var en_kbd_shift = '~!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:"||ZXCVBNM<>? ';
var en_kbd_caps_lock = "~1234567890-=QWERTYUIOP[]ASDFGHJKL;'\\\\ZXCVBNM,./ ";
if(translate_site == 16){//16 bolgaria
	var ru_kbd = '(1234567890-.явертъуиопшщасдфгхйкл;\'ююзьцжбнм,./'; //shupik, na samom dele eto bg
	var ru_kbd_shift = '~!?+"%=:/-№$€ЯВЕРТЪУИОПШЩАСДФГХЙКЛ;\'ЮЮЗЬЦЖБНМ,./ '; //shupik, na samom dele eto bg
	var ru_kbd_caps_lock = ')1234567890-=ЯВЕРТЪУИОПШЩАСДФГХЙКЛ;\'ЮЮЗЬЦЖБНМ,./'; //shupik, na samom dele eto bg
	var ButtonValue = 'Bg/Lat';
}
else if(translate_site == 29){//29 georgia
	var ru_kbd = '(1234567890-.'+String.fromCharCode(4304)+''+String.fromCharCode(4332)+''+String.fromCharCode(4308)+''+String.fromCharCode(4320)+''+String.fromCharCode(4322)+''+String.fromCharCode(4327)+''+String.fromCharCode(4323)+''+String.fromCharCode(4312)+''+String.fromCharCode(4317)+''+String.fromCharCode(4318)+'[]'+String.fromCharCode(4304)+''+String.fromCharCode(4321)+''+String.fromCharCode(4307)+''+String.fromCharCode(4324)+''+String.fromCharCode(4305)+''+String.fromCharCode(4336)+''+String.fromCharCode(4335)+''+String.fromCharCode(4318)+''+String.fromCharCode(4314)+';\'{'+String.fromCharCode(4310)+''+String.fromCharCode(4334)+''+String.fromCharCode(4330)+''+String.fromCharCode(4309)+''+String.fromCharCode(4306)+''+String.fromCharCode(4316)+''+String.fromCharCode(4315)+',./?'; //shupik, na samom dele eto ge
	var ru_kbd_shift = '~!@#$%^&*()_+'+String.fromCharCode(4304)+''+String.fromCharCode(4284)+''+String.fromCharCode(4308)+''+String.fromCharCode(4272)+''+String.fromCharCode(4274)+''+String.fromCharCode(4327)+''+String.fromCharCode(4323)+''+String.fromCharCode(4312)+''+String.fromCharCode(4317)+''+String.fromCharCode(4318)+'{}'+String.fromCharCode(4304)+''+String.fromCharCode(4273)+''+String.fromCharCode(4307)+''+String.fromCharCode(4324)+''+String.fromCharCode(4305)+''+String.fromCharCode(4336)+''+String.fromCharCode(4287)+''+String.fromCharCode(4318)+''+String.fromCharCode(4314)+':"{'+String.fromCharCode(4262)+''+String.fromCharCode(4334)+''+String.fromCharCode(4282)+''+String.fromCharCode(4309)+''+String.fromCharCode(4306)+''+String.fromCharCode(4316)+''+String.fromCharCode(4315)+',<>?'; //shupik, na samom dele eto ge
	var ru_kbd_caps_lock = '(1234567890-.'+String.fromCharCode(4304)+''+String.fromCharCode(4332)+''+String.fromCharCode(4308)+''+String.fromCharCode(4320)+''+String.fromCharCode(4322)+''+String.fromCharCode(4327)+''+String.fromCharCode(4323)+''+String.fromCharCode(4312)+''+String.fromCharCode(4317)+''+String.fromCharCode(4318)+'[]'+String.fromCharCode(4304)+''+String.fromCharCode(4321)+''+String.fromCharCode(4307)+''+String.fromCharCode(4324)+''+String.fromCharCode(4305)+''+String.fromCharCode(4336)+''+String.fromCharCode(4335)+''+String.fromCharCode(4318)+''+String.fromCharCode(4314)+';\'{'+String.fromCharCode(4310)+''+String.fromCharCode(4334)+''+String.fromCharCode(4330)+''+String.fromCharCode(4309)+''+String.fromCharCode(4306)+''+String.fromCharCode(4316)+''+String.fromCharCode(4315)+',./?'; //shupik, na samom dele eto ge
	var ButtonValue = 'Ge/Lat';
}
else{
	var ru_kbd = 'ё1234567890-=йцукенгшщзхъфывапролджэ\\\\ячсмитьбю. ';
	var ru_kbd_shift = 'Ё!"№;%:?*()_+ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ//ЯЧСМИТЬБЮ, ';
	var ru_kbd_caps_lock = 'Ё1234567890-=ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ\\\\ЯЧСМИТЬБЮ. ';
	var ButtonValue = 'Rus/Lat';
}
var abc = en_kbd;
var Shift = false;
var CapsLock = false;
var Lang = 'ru'; //po defaultu budet mestnoe 
var realCaretPos = 0;

function complete_test() {
	print_char("a");
	
}

function recalc_cur_pos() {
	realCaretPos = 0;
}
var tt = 0;
function getCaretPos(obj,count_n) {
 
  if(obj.selectionStart) {
	obj.focus();
	return obj.selectionStart;//Gecko
  }
  else if (document.selection)//IE
  {
	if (realCaretPos>0) {
		pos = realCaretPos
	} else {
		var sel = document.selection.createRange();
		var clone = sel.duplicate();
		sel.collapse(true);
		try{
			if (obj) clone.moveToElementText(obj);
		}catch(e){
			var sel = document.selection.createRange();
			var clone = sel.duplicate();
			sel.collapse(true);
			var obj = document.getElementById(textarea_name);
		}
		if (sel) clone.setEndPoint('EndToEnd', sel);
		var pos = clone.text.length;
	}
	//check position
	var text = obj.value;
	//if (!tt) { alert(pos); tt = 1 }
	if (count_n) {
		for(var i=0; i<pos; i++) {
			if (text.charCodeAt(i)==13) {
				pos++;
			}
		}
	}
	return pos;
  }
  return 0;
}

function replace_kb(div_to,el_to_focus) {
	var inv_div = document.getElementById('main_kb_div');
	var invHTML = inv_div.innerHTML;
	
	var old_div = document.getElementById(kb_div_name);
	var new_div = document.getElementById(div_to);

	var h_new = div_to.replace('kb_div_','');
	var gif_new_1 = document.getElementById('kb_gif_1_'+h_new);
	var gif_new_2 = document.getElementById('kb_gif_2_'+h_new);
	var gif_new_3 = document.getElementById('kb_gif_3_'+h_new);
	
	if (kb_div_name != 'main_kb_div') {
		old_div.innerHTML = '';
		old_div.className = '';
		
		var h_old = kb_div_name.replace('kb_div_','');
		var gif_old_1 = document.getElementById('kb_gif_1_'+h_old);
		var gif_old_2 = document.getElementById('kb_gif_2_'+h_old);
		var gif_old_3 = document.getElementById('kb_gif_3_'+h_old);
	}
	

	if (kb_div_name != div_to) {
		new_div.innerHTML = invHTML;
		new_div.className = 'kb_div_with_border bgContent';
		kb_div_name = div_to;
		setEvents();
		gif_new_1.src = gif_new_2.src = gif_new_3.src='http://pics.'+path_domain+'/pics/neo/kyr_keyboard/keyboard_2.gif';
		if (gif_old_1 && gif_old_2 && gif_old_3) {gif_old_1.src = gif_old_2.src = gif_old_3.src='http://pics.'+path_domain+'/pics/neo/kyr_keyboard/keyboard_1.gif';}
		document.location.href = '/pictures.php#kb_pic_'+h_new;
	} else {
		kb_div_name = 'main_kb_div';
		if (gif_old_1 && gif_old_2 && gif_old_3) {gif_old_1.src = gif_old_2.src = gif_old_3.src='http://pics.'+path_domain+'/pics/neo/kyr_keyboard/keyboard_2.gif';}
		gif_new_1.src = gif_new_2.src = gif_new_3.src='http://pics.'+path_domain+'/pics/neo/kyr_keyboard/keyboard_1.gif';
	}
	var cur_el = document.getElementById(el_to_focus);
	cur_el.focus();
	
}

function replace_kb_old(div_to,panel,el_to_focus) {

	if (kb_init_done) {

		// keyboard move
		var old_div = document.getElementById(kb_div_name);
		var new_div = document.getElementById(div_to);
		if (kb_div_name == div_to) {
			show_fx();
		} else {
			hide_fx();
			var tmpHTML = old_div.innerHTML;
			old_div.innerHTML = '';
			old_div.className = '';
			new_div.innerHTML = tmpHTML;
			new_div.style.display = 'block';
			var old_kb_div_name = kb_div_name;
			kb_div_name = div_to;
			new_div.className = 'kb_div_with_border bgContent';
			
			//panel move
			var old_div = document.getElementById(kb_panel_name + "_shb");
			var new_div = document.getElementById(panel + "_shb");
			var tmpHTML = old_div.innerHTML;
			var tmp1 = panel_html;
			panel_html = panel_html.replace('[function]','replace_kb_old(\'' + old_kb_div_name + '\',\'' + kb_panel_name + '\',\'' + textarea_name + '\')');
			panel_html = panel_html.replace('[picture]','keyboard_1.gif');
			panel_html = panel_html.replace('undefined',path_domain);
			old_div.innerHTML = panel_html;
	
			panel_html = tmp1;
			
			new_div.innerHTML = tmpHTML;
			kb_panel_name = panel;
			
			
			load_input_field(el_to_focus);
			
			show_fx();
			
			kb_is_visible = 1;
			
			setEvents();
			var cur_el = document.getElementById(el_to_focus);
			
			cur_el.focus();
			kb_is_visible = 1;
		}
	} else {
			
		load_input_field(el_to_focus);
		kb_init(div_to,panel,el_to_focus);
		kb_panel_name = panel;
		show_fx();
	}
}

function setCaretPos(pos) {
	var obj = document.getElementById(textarea_name);
	obj.focus();
	if (typeof(obj.selectionStart)=="number") { 
		obj.selectionStart = pos;
		obj.selectionEnd = pos;
		realCaretPos = pos;
	} else if (document.selection) {
		var val = obj.value;
		var or_pos = pos;
		for(var i=0;i<pos;i++) {
			if (val.charCodeAt(i)==13) {
				pos--;
			}
		}
		//_debug(val.charCodeAt(pos));
		//if (pos!=or_pos) pos--; //inc modified pos
		var range = obj.createTextRange(); 
		range.move("character", pos); 
		range.select(); 
		realCaretPos = or_pos;
		//_debug(pos);
		//_debug(realCaretPos);
		//test();
		return true;
	}
}

function repairCaretPos(e) {
	return 0;
	if (!e) var e = window.event
	if (e.target) {
		targ = e.target
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	//if (targ.nodeType == 3)  {// defeat Safari bug
		//targ = targ.parentNode;
	//}
	var tname = targ.tagName;
	if (tname != 'INPUT') {
		alert(tname);
	}
	if (tname == 'TD') {
		var obj = document.getElementById(textarea_name);
		realCaretPos = getCaretPos(obj,0);
	}
}

function insert_to_caret_pos(str) {
	var obj = document.getElementById(textarea_name);
	var cp = getCaretPos(obj,0);
			
	var full_str = obj.value;
	var str1 = full_str.substring(0,cp);
	var str2 = full_str.substr(cp);
	obj.value = str1 + str + str2;
	if (is_ie() && str=="\n") {
		setCaretPos(cp+2);
	} else {
		setCaretPos(cp+1);
	}
	return 0;
}

function text_focus() {
	var obj = document.getElementById(textarea_name);
	obj.focus();
}

function enter() {
	print_char("\n");
}

function backspace() {
	if (!replaceSelectedText('')) {
		var obj = document.getElementById(textarea_name);
		var cp = getCaretPos(obj,0);
		var full_str = obj.value;
		var cchar = full_str.substring(cp-1,cp);
		
		// is ret caret char?
		if (is_ie() && cchar.charCodeAt(0) == 10) {
			var str1 = full_str.substring(0,cp-2);
			var str2 = full_str.substr(cp);
			obj.value = str1 + str2;
			setCaretPos(cp-2);
		} else {
			var str1 = full_str.substring(0,cp-1);
			var str2 = full_str.substr(cp);
			obj.value = str1 + str2;
			setCaretPos(cp-1);
		}
	}
	//text_focus();
	return 0;
}

function _delete() {
	if (!replaceSelectedText('')) {
		var obj = document.getElementById(textarea_name);
		var cp = getCaretPos(obj,0);
		var full_str = obj.value;
		var cchar = full_str.substring(cp-1,cp);
		
		// is ret caret char?
		if (is_ie() && cchar.charCodeAt(0) == 10) {
			var str1 = full_str.substring(0,cp);
			var str2 = full_str.substr(cp+2);
			obj.value = str1 + str2;
			setCaretPos(cp);
		} else {
			var str1 = full_str.substring(0,cp);
			var str2 = full_str.substr(cp+1);
			obj.value = str1 + str2;
			setCaretPos(cp);
		}
	}
	return 0;
}
function delete_text(pos1,pos2) {
	var obj = document.getElementById(textarea_name);
	obj.focus();
	if (pos2 < pos1) {
		var tpos = pos2;
		pos2 = pos1;
		pos1 = tpos;
	}
	if (pos1 == pos2) {
		setCaretPos(pos1);
		return 0;
	}
	if (document.selection) {
		//setCaretPos(pos1);
		var r = obj.createTextRange(); //создаем на основе выделенного объект TextRange
		r.moveStart("character",pos1); //расширяем или сужаем первоначальный диапазон до нового
		r.moveEnd("character",pos2 - obj.value.length); //расширяем или сужаем первоначальный диапазон до нового
		r.text = '';
	} else {
		obj.setSelectionRange(pos1,pos2);
	}
}

function replaceSelectedText(str) {
	var obj = document.getElementById(textarea_name);
	obj.focus();
	
	if (document.selection) {
		var s = document.selection.createRange(); 
		if (s.text)
		{
			//var pos = getCaretPos(obj);
			s.text = str;
			s.select();
			//setCaretPos(obj);
			
			return true;
		}
		return false;
	}
	 else if (typeof(obj.selectionStart)=="number")
	 {
	   if (obj.selectionStart!=obj.selectionEnd)
	   {
		 var start = obj.selectionStart;
		 var end = obj.selectionEnd;
		 obj.value = obj.value.substr(0,start)+str+obj.value.substr(end);
		 obj.setSelectionRange(end,end);
		 setCaretPos(start);
		 if (end!=start) {
			return true;
		 }
	   }
	   
	 }

	return false;
}

function print_char(sym) {
	var text = document.getElementById(textarea_name);

	//text.value = text.value + sym;
	if (!replaceSelectedText(sym)) {
		insert_to_caret_pos(sym);
	}
	text.focus();
	test();
}

function test() {
	var obj = document.getElementById(textarea_name);
	var cp = getCaretPos(obj,0);
	var full_str = obj.value;
	var str = '';
	for(var i=0; i < full_str.length; i++) {
		str += '|' + full_str.charCodeAt(i);
	}
	str = cp + '>' + str;

}

function btn_enter_click() {
	enter();
}


var t;
var tmt = 300;
//var tindex = '';
function press_btn(index) {
	//if (!index && tindex) index = tindex;
	//if (index) tindex = index;
	print_char(abc.charAt(index));
	if (Shift) {
		Shift = false;
		load_kbd();
	}
	t = window.setTimeout("press_btn("+index+")", tmt);
	if (tmt == 300) tmt = 50;

}
function press_del_btn() {
	_delete();
	
	t =setTimeout("press_del_btn()",tmt);
	if (tmt == 300) tmt = 50;
}
function press_btn_bspace() {
	backspace();
	
	t =setTimeout("press_btn_bspace()",tmt);
	if (tmt == 300) tmt = 50;
}
function rel_btn(index) {
	clearTimeout(t);
	tmt = 300;
	var obj = document.getElementById(textarea_name);
	obj.focus();
}

function get_abc() {

	if (Lang == 'ru') {
		if (Shift) {
			abc = ru_kbd_shift;
		} else {
			if (CapsLock) {
				abc = ru_kbd_caps_lock;
			} else {
				abc = ru_kbd;
			}
		}
	} else {
		if (Shift) {
			abc = en_kbd_shift;
		} else {
			if (CapsLock) {
				abc = en_kbd_caps_lock;
			} else {
				abc = en_kbd;
			}
		}
	}
}
function load_kbd() {

	get_abc();
	
	for (var i=0; i<48; i++) {
		var btn = document.getElementById('btn_' + i);
		btn.value = abc.charAt(i);
	}
	
}

function btn_left_shift_click() {
	Shift = !Shift;
	load_kbd();
}

function btn_lat_click() {
	
	translit(textarea_name,'to_lat');
	Lang = 'en';
	load_kbd();
}

function btn_cyr_click(name) {
	if (name) {
		translit(name,'to_rus');
	} else {
		translit(textarea_name,'to_rus');
	}
	Lang = 'ru';
	if (kb_init_done) load_kbd();
}

function btn_caps_lock_click() {
	CapsLock = !CapsLock;
	load_kbd();
}

function btn_rus_lat_click() {

	if (Lang=='ru') {
		Lang = 'en';
	} else {
		Lang = 'ru';
	}
	load_kbd();
}

var kbd_drag = 0;
var diffX = 0;
var diffY = 0;

function _debug(str) {
	if (is_ie()) {
		Debug.write(str);
	} else {
		document.write(str);
	}
}

function kbd_set_first_pos(obj_id, div_name, move_top, move_left) {

	var obj = document.getElementById(obj_id);

	var leftPos=0;
	var topPos=obj.offsetHeight;
	while(obj!=null) {
		leftPos += obj.offsetLeft;
		topPos += obj.offsetTop;
		obj = obj.offsetParent;

	}

	var kbd = document.getElementById(div_name);
	kbd.style.left = leftPos+move_left;
	kbd.style.top = topPos+move_top;
}

function kbd_move(e) {
	var x = 0;
	var y = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		x = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		y = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	if (kbd_drag) {
		var kbd = document.getElementById(kb_div_name);	
		kbd.style.left = (x - diffX) + "px";	
		kbd.style.top = (y - diffY) + "px";
	}
}

function dbg_el(e) {
	if (!e) var e = window.event
	if (e.target) {
		targ = e.target
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	if (targ.nodeType == 3)  {// defeat Safari bug
		targ = targ.parentNode;
	}
	var tname = targ.tagName;
}

function kbd_start_drag(e) {
	var x = 0;
	var y = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		x = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		y = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	if (!e) var e = window.event
	if (e.target) {
		targ = e.target
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	//if (targ.nodeType == 3)  {// defeat Safari bug
		//targ = targ.parentNode;
	//}
	var tname = targ.tagName;
	if (tname == 'DIV' || tname == 'HTML') {
		var kbd = document.getElementById(kb_div_name);
		kbd_drag = 1;
		var tmp_left = kbd.style.left;
		var tmp_top = kbd.style.top;
		if (isNaN(tmp_left)) { tmp_left = tmp_left.substr(0,tmp_left.length - 2) }
		if (isNaN(tmp_top)) { tmp_top = tmp_top.substr(0,tmp_top.length - 2) }
		diffX = x - tmp_left;
		diffY = y - tmp_top;
		kbd.style.cursor = "move";
	}
}

function is_ie() {
	return (navigator.appName.indexOf("Explorer")!=-1);
}

// esli mousemove ne nad knopkoj to ostonavlivaem nazatqe knopki
function chk_key_rep(e) {
	if (!e) var e = window.event
	if (e.target) {
		targ = e.target
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	if (targ.nodeType == 3)  {// defeat Safari bug
		targ = targ.parentNode;
	}
	var tname = targ.tagName;
	if (tname != 'INPUT') {
		clearTimeout(t);
	}
}
function kbd_stop_drag() {
	kbd_drag = 0;
	var kbd = document.getElementById(kb_div_name);
	kbd.style.cursor = "auto";
}

function hide_fx() {

	var kb_div = document.getElementById(kb_div_name);
	kb_div.style.display = "none";
	kb_div.style.border = "";
	var kb_sh_link = document.getElementById(kb_panel_name + "_shb");
	if (panel_format == 0) { 
		kb_sh_link.innerHTML = '<a href="javascript:show_fx()">' + msg_1 + '</a>';
	} else if(panel_format == 1) {
		kb_sh_link.innerHTML = '<a href="javascript:show_fx()"><img border="0" src="http://pics.' + path_domain + '/pics/neo/kyr_keyboard/keyboard_1.gif" width="25" height="16" alt="' + msg_1 + '"></a>';
	} else {
		kb_sh_link.innerHTML = '';
	}
	kb_is_visible = 0;
}

function show_fx() {

	var kb_div = document.getElementById(kb_div_name);
	kb_div.style.display = "block";
	kb_div.style.border = "1px solid rgb(204, 204, 204)";
	var kb_sh_link = document.getElementById(kb_panel_name + "_shb");
	if (panel_format == 0) { 
		kb_sh_link.innerHTML = '<a href="javascript:hide_fx()">' + msg_2 + '</a>';
	} else if(panel_format == 1) {
		kb_sh_link.innerHTML = '<a href="javascript:hide_fx()"><img border="0" src="http://pics.' + path_domain + '/pics/neo/kyr_keyboard/keyboard_2.gif" width="25" height="16" alt="' + msg_2 + '"></a>';
	} else {
		kb_sh_link.innerHTML = '';
	}
	kb_is_visible = 1;
}

function load_input_field(field) {
	if (is_ie()) {
		var obj = document.getElementById(field);
		obj.attachEvent('onfocus', change_working_field);
	} else {	
		var obj = document.getElementById(field);
		obj.onfocus = function(event) { try { change_working_field(event)  } catch(e) { var g = setTimeout("load_input_field(" + field + ")",200); } };
	}
	textarea_name = field;
	undo_step[textarea_name] = 0;
	undo_history[textarea_name] = Array();
	update_undo_btn();
}

function setEvents() {
	if (is_ie()) {
		var obj = document.getElementById(kb_div_name);
		obj.attachEvent('onmousedown', kbd_start_drag);
		//obj.setCapture(false);
		
		obj.attachEvent('onmousemove', chk_key_rep);
		obj.attachEvent('onmouseup', kbd_stop_drag);
		obj.attachEvent('onkeydown', recalc_cur_pos);
		
		document.body.attachEvent('onmousemove', kbd_move);
		document.body.attachEvent('onmouseup', kbd_stop_drag);
		//document.body.attachEvent('onmousedown', dbg_el);
	} else {
		document.body.onmousemove = function(event) { try{ kbd_move(event); } catch(e) { var g = setTimeout("setEvents()",200); } } 
		document.body.onmouseup =   function(event) { try{ kbd_stop_drag(); } catch(e) { var g = setTimeout("setEvents()",200); } }
		//document.body.onmousedown =   function(event) { try{ dbg_el(event) } catch(e) { var g = setTimeout("setEvents()",200); } }
			
		var obj = document.getElementById(kb_div_name);
		obj.onmousemove = function(event) { try { chk_key_rep(event)  } catch(e) { var g = setTimeout("setEvents()",200); } };
		obj.onmousedown = function(event) { try { kbd_start_drag(event)  } catch(e) { var g = setTimeout("setEvents()",200); } };
		obj.onmouseup = function() { try {kbd_stop_drag(); } catch(e) { var g = setTimeout("setEvents()",200); } };
		obj.onkeydown = function() { try {recalc_cur_pos(); } catch(e) { var g = setTimeout("setEvents()",200); } };
	}
}

// panel_html = panel_html.replace('[function]','replace_kb_old(\'' + kb_div + '\',\'' + kb_panel_div + '\',\'' + kb_textarea + '\',0)');
// panel_html = panel_html.replace('[picture]','keyboard_1.gif');


function kb_init(kb_div,kb_panel_div,kb_textarea) {

	//$show=1,$panel_div=0,$panel_format=0
	//$panel_div=0,$panel_format=0) {


	var kb_html = '\
		<table cellspacing="0" cellpadding="1" border="0">\
	        <tbody>\
	        <tr>\
				<td>\
					<input id="btn_0" onfocus="this.blur()" type="button" value="ё" onmousedown="press_btn(0)" onmouseup="rel_btn(0)" class="buttonvirtkbd" /> \
		            <input id="btn_1" onfocus="this.blur()" type="button" value="1" onmousedown="press_btn(1)" onmouseup="rel_btn(1)" class="buttonvirtkbd" /> \
		            <input id="btn_2" onfocus="this.blur()" type="button" value="2" onmousedown="press_btn(2)" onmouseup="rel_btn(2)" class="buttonvirtkbd" />\
		            <input id="btn_3" onfocus="this.blur()" type="button" value="3" onmousedown="press_btn(3)" onmouseup="rel_btn(3)" class="buttonvirtkbd" />\
		            <input id="btn_4" onfocus="this.blur()" type="button" value="4" onmousedown="press_btn(4)" onmouseup="rel_btn(4)" class="buttonvirtkbd" /> \
		            <input id="btn_5" onfocus="this.blur()" type="button" value="5" onmousedown="press_btn(5)" onmouseup="rel_btn(5)" class="buttonvirtkbd" /> \
		            <input id="btn_6" onfocus="this.blur()" type="button" value="6" onmousedown="press_btn(6)" onmouseup="rel_btn(6)" class="buttonvirtkbd" /> \
		            <input id="btn_7" onfocus="this.blur()" type="button" value="7" onmousedown="press_btn(7)" onmouseup="rel_btn(7)" class="buttonvirtkbd" /> \
		            <input id="btn_8" onfocus="this.blur()" type="button" value="8" onmousedown="press_btn(8)" onmouseup="rel_btn(8)" class="buttonvirtkbd" /> \
		            <input id="btn_9" onfocus="this.blur()" type="button" value="9" onmousedown="press_btn(9)" onmouseup="rel_btn(9)" class="buttonvirtkbd" /> \
		            <input id="btn_10" onfocus="this.blur()" type="button" value="0" onmousedown="press_btn(10)" onmouseup="rel_btn(10)" class="buttonvirtkbd" /> \
		            <input id="btn_11" onfocus="this.blur()" type="button" value="-" onmousedown="press_btn(11)" onmouseup="rel_btn(11)" class="buttonvirtkbd" /> \
		            <input id="btn_12" onfocus="this.blur()" type="button" value="=" onmousedown="press_btn(12)" onmouseup="rel_btn(12)" class="buttonvirtkbd" />             \
					<input id="btn_bspace" onfocus="this.blur()" type="button" value="&lt;-" onmousedown="press_btn_bspace()" onmouseup="rel_btn(0)"  class="buttonvirtkbd" />\
				</td>\
			</tr>\
	        <tr>\
				<td>\
					<input id="btn_lat" onfocus="this.blur()" type="button" value="" disabled="true" class="buttonvirtkbd2" />\
					<input id="btn_13" onfocus="this.blur()" type="button" value="й" onmousedown="press_btn(13)" onmouseup="rel_btn(13)" class="buttonvirtkbd" /> \
					<input id="btn_14" onfocus="this.blur()" type="button" value="ц" onmousedown="press_btn(14)" onmouseup="rel_btn(14)" class="buttonvirtkbd" /> \
					<input id="btn_15" onfocus="this.blur()" type="button" value="у" onmousedown="press_btn(15)" onmouseup="rel_btn(15)" class="buttonvirtkbd" /> \
					<input id="btn_16" onfocus="this.blur()" type="button" value="к" onmousedown="press_btn(16)" onmouseup="rel_btn(16)" class="buttonvirtkbd" /> \
					<input id="btn_17" onfocus="this.blur()" type="button" value="е" onmousedown="press_btn(17)" onmouseup="rel_btn(17)" class="buttonvirtkbd" /> \
					<input id="btn_18" onfocus="this.blur()" type="button" value="н" onmousedown="press_btn(18)" onmouseup="rel_btn(18)" class="buttonvirtkbd" /> \
					<input id="btn_19" onfocus="this.blur()" type="button" value="г" onmousedown="press_btn(19)" onmouseup="rel_btn(19)" class="buttonvirtkbd" /> \
					<input id="btn_20" onfocus="this.blur()" type="button" value="ш" onmousedown="press_btn(20)" onmouseup="rel_btn(20)" class="buttonvirtkbd" /> \
					<input id="btn_21" onfocus="this.blur()" type="button" value="щ" onmousedown="press_btn(21)" onmouseup="rel_btn(21)" class="buttonvirtkbd" /> \
					<input id="btn_22" onfocus="this.blur()" type="button" value="з" onmousedown="press_btn(22)" onmouseup="rel_btn(22)" class="buttonvirtkbd" /> \
					<input id="btn_23" onfocus="this.blur()" type="button" value="х" onmousedown="press_btn(23)" onmouseup="rel_btn(23)" class="buttonvirtkbd" /> \
					<input id="btn_24" onfocus="this.blur()" type="button" value="ъ" onmousedown="press_btn(24)" onmouseup="rel_btn(24)" class="buttonvirtkbd" /> \
					<input id="btn_enter" onfocus="this.blur()" type="button" value="Enter" onclick="btn_enter_click()" class="buttonvirtkbd" />\
				</td>\
			</tr>\
	        <tr>\
				<td>\
					<input id="btn_left_ctrl" onfocus="this.blur()" type="button" value="" disabled="true" class="buttonvirtkbd2" /> \
					<input id="btn_25" onfocus="this.blur()" type="button" value="ф" onmousedown="press_btn(25)" onmouseup="rel_btn(25)" class="buttonvirtkbd" /> \
					<input id="btn_26" onfocus="this.blur()" type="button" value="ы" onmousedown="press_btn(26)" onmouseup="rel_btn(26)" class="buttonvirtkbd" /> \
					<input id="btn_27" onfocus="this.blur()" type="button" value="в" onmousedown="press_btn(27)" onmouseup="rel_btn(27)" class="buttonvirtkbd" /> \
					<input id="btn_28" onfocus="this.blur()" type="button" value="а" onmousedown="press_btn(28)" onmouseup="rel_btn(28)" class="buttonvirtkbd" /> \
					<input id="btn_29" onfocus="this.blur()" type="button" value="п" onmousedown="press_btn(29)" onmouseup="rel_btn(29)" class="buttonvirtkbd" /> \
					<input id="btn_30" onfocus="this.blur()" type="button" value="р" onmousedown="press_btn(30)" onmouseup="rel_btn(30)" class="buttonvirtkbd" /> \
					<input id="btn_31" onfocus="this.blur()" type="button" value="о" onmousedown="press_btn(31)" onmouseup="rel_btn(31)" class="buttonvirtkbd" /> \
					<input id="btn_32" onfocus="this.blur()" type="button" value="л" onmousedown="press_btn(32)" onmouseup="rel_btn(32)" class="buttonvirtkbd" /> \
					<input id="btn_33" onfocus="this.blur()" type="button" value="д" onmousedown="press_btn(33)" onmouseup="rel_btn(33)" class="buttonvirtkbd" /> \
					<input id="btn_34" onfocus="this.blur()" type="button" value="ж" onmousedown="press_btn(34)" onmouseup="rel_btn(34)" class="buttonvirtkbd" /> \
					<input id="btn_35" onfocus="this.blur()" type="button" value="э" onmousedown="press_btn(35)" onmouseup="rel_btn(35)" class="buttonvirtkbd" /> \
					<input id="btn_36" onfocus="this.blur()" type="button" value="\" onmousedown="press_btn(36)" onmouseup="rel_btn(36)" class="buttonvirtkbd" /> \
					<input id="btn_right_ctrl" onfocus="this.blur()" type="button" value="Del" onmousedown="press_del_btn(36)" onmouseup="rel_btn(0)" class="buttonvirtkbd2" />\
				</td>\
			</tr>\
	        <tr>\
				<td>\
					<input id="btn_left_shift" onfocus="this.blur()" type="button" value="Shift" onclick="btn_left_shift_click()" class="buttonvirtkbd2" /> \
					<input id="btn_37" onfocus="this.blur()" type="button" value="я" onmousedown="press_btn(37)" onmouseup="rel_btn(37)" class="buttonvirtkbd" /> \
					<input id="btn_38" onfocus="this.blur()" type="button" value="я" onmousedown="press_btn(38)" onmouseup="rel_btn(38)" class="buttonvirtkbd" /> \
					<input id="btn_39" onfocus="this.blur()" type="button" value="ч" onmousedown="press_btn(39)" onmouseup="rel_btn(39)" class="buttonvirtkbd" /> \
					<input id="btn_40" onfocus="this.blur()" type="button" value="с" onmousedown="press_btn(40)" onmouseup="rel_btn(40)" class="buttonvirtkbd" /> \
					<input id="btn_41" onfocus="this.blur()" type="button" value="м" onmousedown="press_btn(41)" onmouseup="rel_btn(41)" class="buttonvirtkbd" /> \
					<input id="btn_42" onfocus="this.blur()" type="button" value="и" onmousedown="press_btn(42)" onmouseup="rel_btn(42)" class="buttonvirtkbd" /> \
					<input id="btn_43" onfocus="this.blur()" type="button" value="т" onmousedown="press_btn(43)" onmouseup="rel_btn(43)" class="buttonvirtkbd" /> \
					<input id="btn_44" onfocus="this.blur()" type="button" value="ь" onmousedown="press_btn(44)" onmouseup="rel_btn(44)" class="buttonvirtkbd" /> \
					<input id="btn_45" onfocus="this.blur()" type="button" value="б" onmousedown="press_btn(45)" onmouseup="rel_btn(45)" class="buttonvirtkbd" /> \
					<input id="btn_46" onfocus="this.blur()" type="button" value="5" onmousedown="press_btn(46)" onmouseup="rel_btn(46)" class="buttonvirtkbd" /> \
					<input id="btn_47" onfocus="this.blur()" type="button" value="." onmousedown="press_btn(47)" onmouseup="rel_btn(47)" class="buttonvirtkbd" /> \
					<input id="btn_undo_old" onfocus="this.blur()" type="button" value="" disabled="true" class="buttonvirtkbd2" />\
				</td>\
			</tr>\
	        <tr>\
				<td>\
					<input id="btn_caps_lock" onfocus="this.blur()" type="button" value="Caps Lock" onclick="btn_caps_lock_click();" class="buttonvirtkbd2" /> \
					<input id="btn_space" onfocus="this.blur()" type="button" value=" " onmousedown="press_btn(48)" onmouseup="rel_btn(48)" class="buttonvirtkbd" /> \
					<input id="btn_rus_lat" onfocus="this.blur()" type="button" value="'+ButtonValue+'" onclick="btn_rus_lat_click();" class="buttonvirtkbd2" />\
				</td>\
			</tr>\
			</tbody>\
		</table>\
	';
	
	
		var kbd_gl = document.getElementById(kb_div);
		kb_div_name = kb_div;
		//alert(kbd_gl.innerHtml);
		kbd_gl.innerHTML = kb_html;
		kbd_gl.className = 'kb_div_with_border bgContent';
		
		kb_is_visible = 1;
		
		load_input_field(kb_textarea); // sets textarea_name and configures the textarea
		
		update_undo_btn();
		var Lang = 'ru';
		load_kbd();
	
		var obj = document.getElementById(textarea_name);
	
		obj.onclick = function() { realCaretPos = 0; };
		
		var g = setTimeout("setEvents()",1000);
		
		kb_init_done = 1;

}	



var lat = new Array();
var rus = new Array();

var site_id = site_id;

if (!site_id) {
	var site_id = translate_site;
}
if (site_id == 16) {
	var en_elements = ['jo','v','\'','je','|','ja','a','b','w','g','d','e','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','w','y','#','\'','JO','ZH','CH','SH','JE','JU','JA','A','B','V','G','D','E','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','H','C','W','##','Y','\'\'','q','Q','x',']','[','{','}','~','\'','\\'];
	var ru_elements = ['ё','ж','ч','ё','ю', 'я','а','б','в','г','д','е','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','в','ъ','ъ','ч', 'Э',  'Ж', 'Ч','Ш', 'Э', 'Ю', 'Я', 'А','Б','Ж','Г','Д','Е','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','В','Ь','Ъ','\\','я','Я','ь','щ','ш','Ш','Щ','Ч','ч','ю'];
}
else if (site_id == 29) {
	var en_elements = ['f', 'a', 'b', 'g', 'd', 'e', 'v','z', 't', 'i' , 'k', 'l', 'm', 'n', 'o', 'p','zh', 'r', 's', 't', 'u', 'k','gh', 'q', 'y','sj','ch' ,'c','dz','w','chj' ,'x' ,'j','h','W','R','T','S','J','Z','C'];
	var ru_elements = [4324,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4325,4326,4325, 4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4333,4326,4311,4328,4319,4331,4329];
}
else {
	var en_elements = ['jo','zh','ch','sh','je','ju','ja','a','b','v','g','d','e','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','w','#','y','\'','JO','ZH','CH','SH','JE','JU','JA','A','B','V','G','D','E','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','H','C','W','##','Y','\'\'','q','Q'];
	var ru_elements = ['ё',  'ж', 'ч','ш',   'э','ю','я', 'а','б','в','г','д','е','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','щ','ъ','ы','ь','Ё','Ж','Ч','Ш','Э','Ю','Я','А','Б','В','Г','Д','Е','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Щ','Ъ','Ы','Ь','ы','Ы'];//219
}

var i = 0;
for ( i in en_elements ) {
	if(site_id == 29) {
		lat[i] = en_elements[i];
		rus[i] = String.fromCharCode(ru_elements[i]);
	}
	else {
		lat[i] = en_elements[i];
		rus[i] = ru_elements[i];//String.fromCharCode(
	}
}

var msg_1 = "Покажи ја тастатурата";
var msg_2 = "Сокриј ја тастатурата";
var msg_4 = "Латиница > кирилица";
var msg_5 = "за да откажеш";

var panelformat_js ='panel_format';
panelformat_js =1;

if (panelformat_js == 0) {
	var panel_html ='<span id="show_hide_kb"><a href="javascript:hide_fx()">Сокриј ја тастатурата</a></span> | <a href="javascript:btn_cyr_click()">Латиница > кирилица</a> | <a href="javascript:btn_undo_click()"  onmouseout="delayhidetip()" onmouseover="fixedtooltip(cur_undo_text, document.getElementById(\'tip_ph\'), event, \'320px\'); " id="btn_undo"></a><span id="tip_ph">&nbsp;</span>';
}
if(panelformat_js == 1) {
	var panel_html = '<a href="javascript:[function]"><img src="http://pics.'+path_domain+'/pics/neo/kyr_keyboard/[picture]" width="25" height="16" alt="Сокриј ја тастатурата" border="0"><\/a>';
}
else {
	var panel_html = '<span id="show_hide_kb"></span><span id="btn_undo"></span>';
}
		var panel_format = 1;
		var path_domain = "";
		var kb_div_name = "main_kb_div";
		var kb_panel_name = "main_panel_div";
		
		if (!panel_div) var panel_div = 'panel_def_div';
		
		var panel_div = "panel_div";
		var kb_init_done = 0;
		var panel_is_visible = 0;
		var kb_is_visible = 0;
		var cur_div_is_fixed = 0;
		var fixed_divs = new Array;
		var fixed_divs_html = new Array;		
			
