cli.lib.namespace("cli.keyboard");

cli.keyboard.suggestions = new Array();
cli.keyboard.suggpos = 1;
cli.keyboard.suggword = "";

cli.keyboard.hist = new Array();
cli.keyboard.histpos = 0;
cli.keyboard.histtemp = 0;

cli.keyboard.suggest = function (word) {

	if (cli.keyboard.suggpos > cli.keyboard.suggestions[word].length) cli.keyboard.suggpos = 1;

	if (cli.keyboard.suggestions[word][cli.keyboard.suggpos]) cli.gui.inputfield.value = cli.keyboard.suggestions[word][cli.keyboard.suggpos];

	var d = cli.gui.inputfield;
	if (d.createTextRange) {
		var t = d.createTextRange();
		t.moveStart("character", word.length);
		t.select()
	} else if (d.setSelectionRange) {
		d.setSelectionRange(word.length, d.value.length)
	}

}

window.google = new Object();

window.google.ac = new Object();

window.google.ac.h = function (rs) {
	//alert('rs: '+rs[1].toSource());
};

cli.keyboard.keyDownHandler = function (event) {
	if (!event && window.event) {
		event = window.event;
	}
	if (event) {
		_lastKeyCode = event.keyCode;
	}

	// We are backspacing here...
	if (event && event.keyCode == 9) {
		event.cancelBubble = true;
		event.returnValue = false;
		// tab = 9, backsp = 8, ctrl =17, r = 82
		//output.innerHTML += event.keyCode+"<br/>";
		var word = cli.keyboard.suggword;

		if (word != "") {
			if (!cli.keyboard.suggestions[word]) {
				cli.keyboard.suggpos = 1;
				//	output.innerHTML += "query<br/>";
				var script = document.createElement('script');
				document.body.appendChild(script);
				script.src = "http://www.google.com/complete/search?hl=" + cli.config.lang + "&js=true&qu=" + encodeURIComponent(word);
			}
			else {
				cli.keyboard.suggpos += 2;
				cli.keyboard.suggest(word);
			}
		}
		return false
	}
}

cli.keyboard.mcursor = function (e) {
	var keycode = e.keyCode;

	if (cli.keyboard.hist.length > 0) {
		if (keycode == 38 || keycode == 40) {

			if (cli.keyboard.hist[cli.keyboard.histpos]) {
				cli.keyboard.hist[cli.keyboard.histpos] = cli.gui.inputfield.value;
			}
			else cli.keyboard.histtemp = cli.gui.inputfield.value;
		}

		if (keycode == 38) { // up
			cli.keyboard.histpos--;
			if (cli.keyboard.histpos < 0) cli.keyboard.histpos = 0;

		}
		else if (keycode == 40) { //down
			cli.keyboard.histpos++;
			if (cli.keyboard.histpos > cli.keyboard.hist.length) cli.keyboard.histpos = cli.keyboard.hist.length;
		}

		if (keycode == 38 || keycode == 40) {

			if (cli.keyboard.hist[cli.keyboard.histpos]) cli.gui.inputfield.value = cli.keyboard.hist[cli.keyboard.histpos];
			else cli.gui.inputfield.value = cli.keyboard.histtemp;

		}

	}

	if (keycode != 9 && keycode != 13) cli.keyboard.suggword = cli.gui.inputfield.value;

	if (keycode == 13) {
		cli.command();
	}
}
