function insertAtCaret(obj, text) {
 if (!obj) {
 return false;
 }
 if(document.selection) {
 obj.focus();
 var orig = obj.value.replace(/\r\n/g, "\n");
 var range = document.selection.createRange();
 if(range.parentElement() != obj) {
 return false;
 }
 range.text = text;
 var actual = tmp = obj.value.replace(/\r\n/g, "\n");
 for(var diff = 0; diff < orig.length; diff++) {
 if(orig.charAt(diff) != actual.charAt(diff)) break;
 }
 for(var index = 0, start = 0;
 tmp.match(text)
 && (tmp = tmp.replace(text, ""))
 && index <= diff;
 index = start + text.length
 ) {
 start = actual.indexOf(text, index);
 }
 } else if(obj.selectionStart) {
 var start = obj.selectionStart;
 var end = obj.selectionEnd;
 obj.value = obj.value.substr(0, start)
 + text
 + obj.value.substr(end, obj.value.length);
 }
 if(start != null) {
 setCaretTo(obj, start + text.length);
 } else {
 obj.value += text;
 }
}
function backspaceFromCaret(obj){
 if (!obj) {
 return false;
 }
 if (document.selection) {
 obj.focus();

 sel = document.selection.createRange();

 if(sel.text.length > 0) {
 sel.text='';
 }else{
 sel.moveStart('character',-1);
 sel.text='';
 }

 sel.select();

 }else if (obj.selectionStart || obj.selectionStart == '0') { //MOZILLA/NETSCAPE support
 var startPos = obj.selectionStart;
 var endPos = obj.selectionEnd;

 obj.value = obj.value.substring(0, startPos-1) + obj.value.substring(endPos, obj.value.length);
 obj.selectionStart = startPos-1;
 obj.selectionEnd = startPos-1;
 obj.focus();
 } else {
 obj.value=obj.value.substr(0,(obj.value.length-1));
 obj.focus();
 }
};

function setCaretTo(obj, pos) {
 if(obj.createTextRange && navigator.userAgent.search(/Opera/)== -1 ) {
 var range = obj.createTextRange();
 range.move('character', pos);
 range.select();
 } else if(obj.selectionStart) {
 obj.focus();
 obj.setSelectionRange(pos, pos);
 }
}

var lastFocused;
var isAlpha=false;
$(document).ready(function(){
 $(".fillable").focus(function(){
 lastFocused=this;
 });
 $(".kbutton").click(function(){
 insertAtCaret(lastFocused,this.innerHTML);
 });
 $("#change_key").click(function(){
 buttons=$(".kbutton")
 var alpha=["а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я"];
 var nonalpha=["й","ц","у","к","е","н","г","ш","щ","з","х","ъ","ё","ф","ы","в","а","п","р","о","л","д","ж","э","я","ч","с","м","и","т","ь","б","ю"];
 for(var i=0;i<33;i++){
 buttons[i].innerHTML= (isAlpha)? nonalpha[i] : alpha[i];
 };
 isAlpha=!isAlpha;
 });
 $("#space_key").click(function(){
 insertAtCaret(lastFocused," ");
 });
 $("#enter_key").click(function(){
 insertAtCaret(lastFocused,"\n");
 });
 $("#clear_key").click(function(){
 lastFocused.value="";
 });
 $("#backspace_key").click(function(){
 backspaceFromCaret(lastFocused);
 });
 // $("#keyboard").draggable({moveHandler:.word,moveHandlerOutside
 $("#keyboard").draggable({
 containment:'document'
 });
 $("#show_keyboard").click(function(){
 $("#keyboard").vPos();
 $("#keyboard").show("blind", {
 direction: "vertical"
 },300);
 });
 $("#exit_key").click(function (){
 $("#keyboard").hide("blind", {
 direction: "vertical"
 },300);
 });
})




