var currentTextField = null;
var useEnglish = false;
var shift = false;
var winWidth, winHeight;
var characters = new Array();

window.onload = function () {
	findPageHeight();
	window.onscroll = document.documentElement.onscroll = myResize;
	document.getElementById("theKeyboard").style.width = (screen.width) + 'px';
	setKbOffset();
}

characters[192] = "\\u0CCA";
characters[49] = "\\u0CE7";
characters[50] = "\\u0CE8";
characters[51] = "\\u0CE9";
characters[52] = "\\u0CEA";
characters[53] = "\\u0CEB";
characters[54] = "\\u0CEC";
characters[55] = "\\u0CED";
characters[56] = "\\u0CEE";
characters[57] = "\\u0CEF";
characters[48] = "\\u0CE6";
characters[109] = "-";
characters[107] = "\\u0CD6";

characters[81] = "\\u0CCC";
characters[87] = "\\u0CC8";
characters[69] = "\\u0CBE";
characters[82] = "\\u0CC7";
characters[84] = "\\u0CC2";
characters[89] = "\\u0CAC";
characters[85] = "\\u0CB9";
characters[73] = "\\u0C97";
characters[79] = "\\u0CA6";
characters[80] = "\\u0C9C";
characters[219] = "\\u0CA1";
characters[221] = "";

characters[65] = "\\u0CCB";
characters[83] = "\\u0CC0";
characters[68] = "\\u0CCD";
characters[70] = "\\u0CBF";
characters[71] = "\\u0CC1";
characters[72] = "\\u0CAA";
characters[74] = "\\u0CB0";
characters[75] = "\\u0C95";
characters[76] = "\\u0CA4";
characters[59] = "\\u0C9A";
characters[222] = "\\u0C9F";

characters[90] = "\\u0CC6";
characters[88] = "\\u0C82";
characters[67] = "\\u0CAE";
characters[86] = "\\u0CA8";
characters[66] = "\\u0CB5";
characters[78] = "\\u0CB2";
characters[77] = "\\u0CB8";
characters[188] = ",";
characters[190] = ".";
characters[191] = "\\u0CAF";

// Shift Chars
characters[292] = "\\u0C92";
characters[149] = "";
characters[150] = "";
characters[151] = "\\u0CCD\\u0CB0";
characters[152] = "\\u0CB0\\u0CCD";
characters[153] = "\\u0C9C\\u0C9E\\u0CCD";
characters[154] = "\\u0CA4\\u0CB0\\u0CCD";
characters[155] = "\\u0C95\\u0CB7\\u0CCD";
characters[156] = "\\u0CB6\\u0CB0\\u0CCD";
characters[157] = "(";
characters[148] = ")";
characters[209] = "\\u0C83";
characters[207] = "\\u0C8B";

characters[181] = "\\u0C94";
characters[187] = "\\u0C90";
characters[169] = "\\u0C86";
characters[182] = "\\u0C88";
characters[184] = "\\u0C8A";
characters[189] = "\\u0CAD";
characters[185] = "\\u0C99";
characters[173] = "\\u0C98";
characters[179] = "\\u0CA7";
characters[180] = "\\u0C9D";
characters[319] = "\\u0CA2";
characters[321] = "\\u0C9E";

characters[165] = "\\u0C93";
characters[183] = "\\u0C8F";
characters[168] = "\\u0C85";
characters[170] = "\\u0C87";
characters[171] = "\\u0C89";
characters[172] = "\\u0CAB";
characters[174] = "\\u0CB1";
characters[175] = "\\u0C96";
characters[176] = "\\u0CA5";
characters[159] = "\\u0C9B";
characters[322] = "\\u0CA0";

characters[190] = "\\u0C8E";
characters[188] = "";
characters[167] = "\\u0CA3";
characters[186] = "";
characters[166] = "";
characters[178] = "\\u0CB3";
characters[177] = "\\u0CB6";
characters[288] = "\\u0CB7";
characters[290] = "";
characters[291] = "";


function convertToKannada(keyCode){
	var theChar = "";
	switch(keyCode){
		case 8:
			delChar();
		break;
		case 16:
			if(!shift){shift = true;};
		break;
		case 32:
			currentTextField.value += " ";
		break;
		default:
			if(shift){
				theChar = eval('"' + characters[(keyCode + 100)] + '"');
				shift = false;
			}else{
				theChar = eval('"' + characters[keyCode] + '"');
			}
			if(theChar != "undefined"){
				currentTextField.value += theChar;
			}
	}	
}

var textAreas = document.getElementsByTagName('textarea');
for (var i = 0; i < textAreas.length; i++) {
	var theTextarea = textAreas[i];
	if(i == 0){
		currentTextField = theTextarea;
	}
	theTextarea.onclick = updateCurrentTextField;
	theTextarea.onFocus = updateCurrentTextField;
}

var formInputs = document.getElementsByTagName('input');
for (var i = 0; i < formInputs.length; i++) {
	var theInput = formInputs[i];
	if (theInput.type == 'text'){
		if(i == 0 && currentTextField == null){
			currentTextField = theInput;
		}
		theInput.onclick = updateCurrentTextField;
		theInput.onFocus = updateCurrentTextField;
		//theInput.onKeyDown = changeChars;
	}
}

function changeChars(){
	if(useEnglish==false){convertToKannada(this.id, event.keyCode);return false;}
}

function updateCurrentTextField(){
	currentTextField = this;
}

function addAscii(letter){
	currentTextField.value += letter;
	setFocusBack();
}

function addUnicode(letter){
	var uni = '"\\u' + letter +'"';
	currentTextField.value += eval(uni);
	setFocusBack();
}

function delChar(){
	currentTextField.value = currentTextField.value.substr(0, (currentTextField.value.length - 1));
	setFocusBack();
}

function setFocusBack(){
	currentTextField.focus();
}

function myResize(){
	findPageHeight();
	setKbOffset();
}

function setKbOffset(){
	var theHeight = findKbHeight();
	document.getElementById("theKeyboard").style.top = (winHeight - theHeight) + 'px';
}

function findPageHeight(){
	var d=document;
	if (typeof window.innerWidth!='undefined') {
		winWidth = window.innerWidth;
		winHeight = window.innerHeight;
	}else if( d.documentElement
	&& typeof d.documentElement.clientWidth!='undefined'
	&& d.documentElement.clientWidth!=0 ) {
		winWidth = d.documentElement.clientWidth;
		winHeight = d.documentElement.clientHeight;
	}else if(d.body
	&& typeof d.body.clientWidth!='undefined') {
		winWidth = d.body.clientWidth;
		winHeight = d.body.clientHeight;
	}
}

function findKbHeight(){
	var obj = document.getElementById("theKeyboard");
	var objHeight = null;
	if(document.implementation.hasFeature("CSS", "2.0")) {
		objHeight = document.defaultView.getComputedStyle(obj,null).getPropertyCSSValue("height").getFloatValue(5);
	}else if(obj.clientHeight!=null) {
		objHeight = obj.offsetHeight;
	}
	return objHeight;
}

function enlargeKB(){
	var obj = document.getElementById("theKeyboard");
	var theBody = document.getElementsByTagName('body');
	if(findKbHeight() == 225){
		obj.style.height = '40px';
		setKbOffset();
		setFocusBack();
		theBody[0].style.paddingBottom = '40px';
	}else{
		obj.style.height = '225px';
		setKbOffset();
		setFocusBack();
		theBody[0].style.paddingBottom = '225px';
	}
}