var ls_timer = null;	// time für hide
var ls_isIE = false;		// IE oder anderer Browser
var ls_such_text = "";	// Such-String
var ls_such_typ = "";		// Such-Typ
var ls_such_input_obj = false;	// Input-Objekt
var ls_block_search = false;		// Suche blockieren
var ls_block_submit = false;	// Submit blockieren
var ls_init = Object;	// speichert, ob ein Objekt schon initialisiert wurde

// Submit abschicken bzw. blockieren
function ls_do_submit() {
	if(ls_block_submit) {
		ls_block_submit = false;
		return false;
	}
	return true;
}

// Setzt die do_submit()-Funktion an das Formular
function ls_set_submit(obj) {
	if(obj.tagName == 'FORM') {
		obj.setAttribute('onsubmit','return ls_do_submit()');
		return true;
	}
	if(obj.tagName == 'BODY') return false;
	if(obj.parentNode) ls_set_submit(obj.parentNode);	// Rekursiver Aufruf
}

// Initialisierung
function ls_init_input(obj) {
	if(ls_init[obj.id]) return false;	// Abbruch, wenn das Inputfeld bereits initialisiert ist
	if (navigator.userAgent.indexOf("Safari") > 0) {
		obj.addEventListener("keydown",ls_KeyPress,false);
		obj.addEventListener("blur",ls_HideDelayed,false);
	} else if (navigator.product == "Gecko") {
		obj.addEventListener("keypress",ls_KeyPress,false);
		obj.addEventListener("blur",ls_HideDelayed,false);
	} else {
		obj.attachEvent('onkeydown',ls_KeyPress,false);
		obj.attachEvent('onblur',ls_HideDelayed,false);
		ls_isIE = true;
	}
	obj.setAttribute("autocomplete","off");
	ls_set_submit(obj);
	ls_init[obj.id] = true;
}

// Ergebnisbereich verzögert ausblenden
function ls_HideDelayed() {
	window.setTimeout("ls_Hide()",400);
}

// Ergebnisbereich ausblenden
function ls_Hide() {
	result = document.getElementById("LSResult");
	if (result) result.style.display = "none";
	highlight = document.getElementById("LSHighlight");
	if (highlight) highlight.removeAttribute("id");
}

// Ergebnisbereich einblenden
function ls_Show() {
	var result = document.getElementById("LSResult");
	if(result) result.style.display = "block";
}

// Aktion bei Tastendruck
function ls_KeyPress(event) {
	if (event.keyCode == 40 ) {
		//KEY DOWN
		highlight = document.getElementById("LSHighlight");
		if (!highlight) {
			highlight = document.getElementById("LSShadow").firstChild.firstChild;
		} else {
			highlight.removeAttribute("id");
			highlight = highlight.nextSibling;
		}
		if (highlight) highlight.setAttribute("id","LSHighlight");
		if (!ls_isIE) event.preventDefault();
		if (highlight && highlight.firstChild) ls_such_input_obj.value = highlight.firstChild.getAttribute("value");
		ls_block_search = true;
	} else if (event.keyCode == 38 ) {
		//KEY UP
		highlight = document.getElementById("LSHighlight");
		if (!highlight) {
			highlight = document.getElementById("LSResult").firstChild.firstChild.lastChild;
		}
		else {
			highlight.removeAttribute("id");
			highlight = highlight.previousSibling;
		}
		if (highlight) highlight.setAttribute("id","LSHighlight");
		if (!ls_isIE) event.preventDefault();
		if (highlight && highlight.firstChild) ls_such_input_obj.value = highlight.firstChild.getAttribute("value");
		ls_block_search = true;
	} else if (event.keyCode == 27) {
		//ESC
		ls_Hide();
		ls_block_search = true;
	} else if (event.keyCode == 13) {
		//ENTER
		result = document.getElementById("LSResult");
		if (result && result.style.display != "none") {
			ls_Hide();
			ls_block_submit = true;
			ls_block_search = true;
		} else {
			ls_block_submit = false;
		}
	} else if (event.keyCode == 8 && ls_isIE) {
		//BACKSPACE - required for IE
		ls_start(ls_such_input_obj, ls_such_typ);
	}
}

// Initialisierung der Ergebnisbereiches
function ls_init_result() {
	if(ls_init['LSResult'] || document.getElementById('LSResult')) return false;	// Abbruch, wenn der Ergebnisbereich bereits initialisiert ist
	LSResult = document.createElement('div');
	attr = document.createAttribute('id');
	attr.nodeValue = 'LSResult';
	LSResult.setAttributeNode(attr);
	LSResult.style.display = 'none';
	document.getElementsByTagName('body')[0].appendChild(LSResult);
	LSShadow = document.createElement('div');
	attr = document.createAttribute('id');
	attr.nodeValue = 'LSShadow';
	LSShadow.setAttributeNode(attr);
	LSResult.appendChild(LSShadow);
	ls_init['LSResult'] = true;
}

function ls_start(input, typ) {
	if(typ=="") return false;
	if(!input) return false;
	ls_such_typ = typ;
	ls_such_input_obj = input;
	ls_init_input(input);
	ls_init_result();	// TODO funzt im IE nicht
	setLyr(input,'LSResult');
	if (ls_timer) window.clearTimeout(ls_timer);
	ls_timer = window.setTimeout("ls_do_search()",200);
}

function ls_do_search() {
	// verhindert Suche
	if(ls_block_search) {
		ls_block_search = false;
		return false;
	}

	ls_such_text = ls_such_input_obj.value;
	// verhindert Suche bei leerer Eingabe
	if (ls_such_text == "") {
		ls_Hide();
		return false;
	}

	var xhr_object = null;
	if(window.XMLHttpRequest)		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject)	xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else													return false;

	xhr_object.onreadystatechange = function() {
		if(xhr_object.readyState == 4) {
			ls_Show();
			var  sh = document.getElementById("LSShadow");

			text = xhr_object.responseText;
			sh.innerHTML = text;
			//if(sh) sh.innerHTML = xhr_object.responseText;
		}
	}
	xhr_object.open("GET", "/travian/livesearch/ajax_livesearch.php?q=" + ls_such_text + "&f=" +ls_such_typ + "&i=" + ls_such_input_obj.id );
	xhr_object.send(null);
}