var l_letter = new Array('`','1','2','3','4','5','6','7','8','9','0','-','=','|','Kz/En','Tab','q','w','e','r','t','y','u','i','o','p','[',']','BS','CapsLock','a','s','d','f','g','h','j','k','l',';',"'",'Enter','Shift','z','x','c','v','b','n','m',',','.','/','\\','Shift',' ');
var lb_letter = new Array('~','!','?','#','$','%','^','&','*','(',')','_','+','|','Kz/En ','Tab','Q','W','E','R','T','Y','U','I','O','P','{','}','BS','CapsLock','A','S','D','F','G','H','J','K','L',':','"','Enter','Shift','Z','X','C','V','B','N','M','<','>','?','|','Shift',' ');
var r_letter = new Array('`','ә','і','ң','ғ','ү','ұ','қ','ө','һ','(','-',' +','|','Kz/En','Tab','й','ц','у','к','е','н','г','ш','щ','з','х','ъ','BS','CapsLock','ф','ы','в','а','п','р','о','л','д','ж','э','Enter','Shift','я','ч','с','м','и','т','ь','б','ю','.',',','Shift',' ');
var rb_letter = new Array('Ё','Ә','І','Ң','Ғ','Ү','Ұ','Қ','Ө','Һ',')','_','=','|','Kz/En','Tab','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','BS','CapsLock','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Enter','Shift','Я','Ч','С','М','И','Т','Ь','Б','Ю','.',',','Shift',' ');
var ltype = new Array(2,2,2,2,2,2,2,2,2,2,2,0,2,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2);
var letter = new Array(l_letter, lb_letter, r_letter, rb_letter);


var off = 1;
var keymode = 2;
var savemode = 0;
var qn = 56;
var shift = false;
var capslock = false;
var apostr = false;
var formname = "", textname = "";

var kb_input_obj = null;
var par = new String(location.search);

function changeLetter(n)
{
 var i;

 if((n != 5) && shift) keymode ^=1;
 keymode ^= n & 3;
 shift = ((n == 5) && !shift);
  
 for(i=0;i<qn;i++) document.keyb.elements[i+off].value = letter[(shift)?(keymode | (((ltype[i] >> (keymode >> 1)) & 1)^1)):(keymode & ((ltype[i] >> (keymode >> 1)) | 2))][i];

 document.keyb.text.focus(); 
 return false;
}

function delLetter()
{
 
 var str = new String(document.keyb.text.value); 
 var del=1;
 if(str.charAt(str.length-1) == '\n') del=2;
 document.keyb.text.value = str.substr(0, str.length-del);

 //myPress();  //сюда запрос к серверу.
 
 document.keyb.text.focus(); 
 return false;
}

function pressKey()
{
	if ((event.keyCode == 13) || (event.keyCode == 10)) return false;
}

function addLetter(but)
{

var chr = but.value;
if( chr == 'Enter' ) chr='\n';
var isFireFox = (navigator.userAgent.indexOf("Firefox") != -1);
if ( !window.opera /*&& !isFireFox*/){
insertAtCursor(chr);}
else document.keyb.text.value += chr;
if(shift)
 {
  shift=false;
  changeLetter(1);  
 } 

if( but.value == 'Enter' ) myPress();  //сюда запрос к серверу.

 document.keyb.text.focus();
 return false;
}

function insertAtCursor(text) {
	
	document.keyb.text.focus();
	
	if (document.selection && document.selection.createRange && !window.opera) {
		var r = document.selection.createRange();
		r.text = text;
	} else if (document.keyb.text.setSelectionRange && !window.opera) {
		var start = document.keyb.text.selectionStart;
		var end   = document.keyb.text.selectionEnd;
		var sel1  = document.keyb.text.value.substr(0, start);
		var sel2  = document.keyb.text.value.substr(end);
		document.keyb.text.value   = sel1 + text + sel2;
		document.keyb.text.setSelectionRange(start+text.length, start+text.length);
	} else {
		document.keyb.text.value += text;
	}
	
	setTimeout(function() {document.keyb.text.focus() }, 100);
} 


function getpar(parname)
{
 var j,k;
 j = par.indexOf(parname + "=")
 if(j == -1) return null;
 k = par.indexOf("&", j + parname.length + 1);
 return par.substring(j + parname.length + 1, (k == -1) ? par.length : k);
}

function init()
{
 var i, s;
 var domain;

 if((s=getpar("form")) != null) formname = s; 
 if((s=getpar("text")) != null) textname = s; 
 if((s=getpar("savemode")) != null)
 {
  savemode = parseInt(s);
  if(isNaN(savemode) || savemode < 0 || savemode > 3) savemode = 0;
 }
 if((s=getpar("keymode")) != null) 
 {
  keymode = parseInt(s);
  if(isNaN(keymode) || keymode < 0 || keymode > 3) keymode = 2;
 }
 
 

 undotext = document.keyb.text.value;
 
 changeLetter(0);
 return false;
}



function cfocus()
{
 document.keyb.text.focus(); 
 return true;
}
