// Version 1.4 September 19, 2006 
// Copyright 2006 www.shabdkosh.com
//alert("र्\u200d"+"या");

var rom_kbd = new Array(" ","!","\"","#","$","%","&","'","(",")","*","\u200C",",","_","।","्","०","१","२","३","४","५","६","७","८","९",":",";","ङ","\u200d","॥","?","@","आ","भ","च","ध","ै","ऊ","घ","अ","ी","झ","ख","ळ","ं","ण","ओ","फ","ठ","ृ","श","थ","ू","ँ","औ","ढ","ञ","ऋ","इ","ॐ°","ए","^","॒","ऽ","ा","ब","छ","द","े","उ","ग","ह","ि","ज","क","ल","म","न","ो","प","ट","र","स","त","ु","व","ौ","ड","य","ष","ई","ः","ऐ","़" );
var tra_kbd = new Array(" ","ज्ञ","ू","घ","द्घ","छ","ठ","ु","ढ", "ण", "ड","\u200C","ऽ","औ","।","र","०","१","२","३","४","५","६","७","८","९","ट्ठ","स","ङ","\u200d","श्र","रु","ई","आ","ै","ऋ","ङ्ग","ऐ","ँ","द्द","झ","क्ष","ो","फ","ी","ड्ड","द्य","इ","ए","त्त","द्व","ङ्क","ट्ट","ऊ","ॐ","ड्ढ","ह्य","ठ्ठ","क्क","र्\u200d","्","े","ट","ओ","ञ","ब","द","अ","म","भ","ा","न","ज","ष","व","प","ि","ः","ल","य","उ","त्र","च","क","त","ग","ख","ध","ह","थ","श","ृ","\u200d","ै","॥" );
var strow0   = new Array ( 96,33,64,35,36,37,94,38,42,40,41,95,43); 
var shrow0 = new Array (130,39,139,140,160,141,161,142,162,132,152,131,43);

// 13 keys + BS
var strow1    = new Array ( 96,49,50,51,52,53,54,55,56,57,48,45,61); 
var shrow1  = new Array (126,33,64,35,36,37,94,38,42,40,41,95,43);

// Tab + 14 
var strow2    = new Array (113,119,101,114,116,121,117,105,111,112,91,93,92); 
var shrow2  = new Array ( 81,87,69,82,84,89,85,73,79,80,123,125,124);

// CAPS + 11 + CRLF
var strow3    = new Array (97,115,100,102,103,104,106,107,108,59,39); 
var shrow3  = new Array (65,83,68,70,71,72,74,75,76,58,34);

// LShift + 10 + RShift
var strow4 = new Array (122,120,99,118,98,110,109,44,46,47);  
var shrow4 = new Array (90,88,67,86,66,78,77,60,62,63);

var sb = new Array();
var lastCode = '';

function dk(id, f, e){
var code;
var keycode;
var t;
var kbd;

kbd = el('kbd_layout'+id).value;


if (window.event) // IE
   keycode = window.event.keyCode;
else if (e.which) // FF
   keycode = e.which;
//if(keycode==32) return false;
if (keycode ==13) return true;
if (keycode ==undefined) {

return true;
}
if (keycode == 8) return true;

if ((kbd=='rem_kbd')&&(lastCode==65)&&(keycode==83)){
   deleteLast(f); 
   code = eval('rem_xtra[0]'); 
   lastCode = keycode;
}
else if ((kbd=='rem_kbd')&&(lastCode==65)&&(keycode==115)){
   deleteLast(f); 
   code = eval('rem_xtra[1]'); 
   lastCode = keycode;
}

else {
if(keycode!=32)
   code = eval (kbd + '[' + keycode + '-32]');
    lastCode = keycode;
   
}

t = el(f);
if(code==undefined){
}else{
t.value += code;

return false;
}

}

function insertNewline (f) {
var target =  el(f);
target.value += '\n';
target.focus();
}

function deleteLast(f) {
var t = el(f);
var cval = t.value;
var clen = cval.length;
cval = cval.substring(0,clen-1);
t.value = cval;
t.focus();
}

function appendText(f, c) {
var t = el(f);
t.value=t.value + c;
t.focus();
}




function al(id,kbdname){
var row,i,j,l,n, mode;
var keyname;
mode = el('kbd_mode'+id).value;

if (mode != "sh") 
   mode = "st";
for (n=1;n<=4;n=n+1){
   row = mode + 'row' + n;
   l = eval(row + '.length');
   for (i=0;i<l;i=i+1){
      j = eval(row+'['+i+']') - 32;
      code = eval(kbdname+'['+j+']');
      keyname = 'key' + id + n + i;
     // el(keyname).value = code;
   }
   
}

if (kbdname == "eng_kbd")
   el('lang'+id).innerHTML = 'EN';
else 
   el('lang'+id).innerHTML = 'HI';
}


function handleKeyDown(id, f, e) {
if (el('kbd_mode'+id).value == "sh")
   return;
if (!e) 
   e = window.event;
if (e.shiftKey) {
   el('kbd_mode'+id).value = "sh";
   al(id, el('kbd_layout'+id).value);
   return;
}

}



function handleKeyUp(id, f,e) {
if (!e) 
   e = window.event;
if (!e.shiftKey) {
   el('kbd_mode'+id).value = "st";
   al(id, el('kbd_layout'+id).value);
   return;
}
}

function toggle_shift(id){
if (el('kbd_mode'+id).value == "sh") {
   el('kbd_mode'+id).value = "st";
   al(id, el('kbd_layout'+id).value);
   return;
}
else {
   el('kbd_mode'+id).value = "sh";
   al(id, el('kbd_layout'+id).value);
   return;
}
}


function snh(id, f, s) {
var styleObj=el('kbd'+id).style;
if (styleObj.display=='none') {
   styleObj.display= '';
   el(s).value |= 0x0002; 
}
else {
   styleObj.display='none';
   el(s).value &= 0xfffd; 
}
el('state'+id).innerHTML = el(s).value; 
el(f).focus();
}

function updateState(id, s){
var state_value = el(s).value; 
var x = state_value >> 7;
var y = el('kbd_layout'+id).selectedIndex;
var z = state_value & 0x3;
el(s).value = (x<<7)|(y<<2)|z;
el('state'+id).innerHTML = el(s).value; 
}

function el(id) { if (document.getElementById) return document.getElementById(id); return null; }
function dw(x)  { 

	document.write(x); 
	return true;
 }
function ak(c,id,code,f){ 
a
//dw('<input class="'+c+'" type="button" id="key'+id+'" name="hkey" value="'+code+'" onClick="appendText(\''+f+'\',this.value);">');
 }

