var xmlHttp;
var searchStr;
var resultID;
var doSubmit;

function getPosLeft(obj) {
	var curleft = 0;
	if(obj.offsetParent)
		while(1) {
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
			break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}
function getPosTop(obj) {
	var curtop = 0;
	if(obj.offsetParent)
		while(1) {
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
			break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}
function setPosition() {
	// set the correct position
	
	var screenWidth = document.getElementsByTagName('body')[0].offsetWidth;
	var resultWidth = document.getElementById("livesearch").offsetWidth;
	
	var the_searchbox = document.getElementById("searchbox")
	
	var new_height = getPosTop(the_searchbox) + the_searchbox.clientHeight + 4
	var new_left = getPosLeft(the_searchbox) + 1;
	
	// set the top below the searchbox
	document.getElementById("livesearch").style.top = new_height + 'px';
	
	if ((new_left + resultWidth) > screenWidth) {
		new_left = screenWidth - resultWidth;
	}
	
	// set the left like the searchbox
	document.getElementById("livesearch").style.left = new_left + 'px';
}
function documentClick(e) {
/*  if (navigator.appName == 'Netscape'
           && e.which == 3) {
      alert("no right click please")
      return false;
      }
   else {
      if (navigator.appName == 'Microsoft Internet Explorer'
          && event.button==2)
         alert("no right click please")
         return false;
         }
*/
	if (document.getElementById("livesearch").style.border != "0px") {
		document.getElementById("livesearch").innerHTML = "";
		document.getElementById("livesearch").style.border = "0px";
		document.getElementById("livesearch").style.height="0px";
	}
	return true;
}
function initLiveSearch() {
	var livesearchform = document.getElementById("fs");
	
	if (navigator.userAgent.indexOf("Safari") > 0) {
		livesearchform.searchbox.addEventListener("keydown",liveSearchKeyPressed,false);
	}
	else if (navigator.product == "Gecko") {
		livesearchform.searchbox.addEventListener("keypress",liveSearchKeyPressed,false);
	}
	else {
		livesearchform.searchbox.attachEvent('onkeydown',liveSearchKeyPressed);
	}
	
	document.getElementById("livesearch").innerHTML = "";
	document.getElementById("livesearch").style.border = "0px";
	document.getElementById("livesearch").style.height="0px";
	
	//document.onmousedown = documentClick;
	//document.onmouseup = documentClick;
	document.onclick = documentClick;
	
	searchStr = "";
}
function liveSearchKeyPressed(event) {
	doSubmit = 1;
	
	//KEY DOWN
	if (event.keyCode == 40) {
		var lsearchResult = document.getElementById("livesearch");
		var resultNodes = lsearchResult.getElementsByTagName("tr");
		var maxResults = resultNodes.length;
		
		resultID += 1;
		if (resultID == maxResults)
			resultID = 0;
		
		for (var i = 0; i < maxResults; i++) {
			if (i == resultID)
				resultNodes[i].style.backgroundColor='#D5DDEA';
			else
				resultNodes[i].style.backgroundColor='';
		}
	}
	//KEY UP
	else if (event.keyCode == 38) {
		var lsearchResult = document.getElementById("livesearch");
		var resultNodes = lsearchResult.getElementsByTagName("tr");
		var maxResults = resultNodes.length;
		
		resultID -= 1;
		if (resultID == -1)
			resultID = maxResults - 1;
		
		for (var i = 0; i < maxResults; i++) {
			if (i == resultID)
				resultNodes[i].style.backgroundColor='#D5DDEA';
			else
				resultNodes[i].style.backgroundColor='';
		}
	}
	//ESC
	else if (event.keyCode == 27) {
		document.getElementById("livesearch").innerHTML="";
		document.getElementById("livesearch").style.border="0px";
		document.getElementById("livesearch").style.height="0px";
	}
	//ENTER
	else if (event.keyCode == 13) {
		if (resultID > -1) {
			var lsearchResult = document.getElementById("livesearch");
			var resultNodes = lsearchResult.getElementsByTagName("tr");
			var maxResults = resultNodes.length;
			
			for (var i = 0; i < maxResults; i++) {
				if (i == resultID) {
					//alert(resultNodes[i].href);
					//document.location.href = resultNodes[i].href;
					//alert(resultNodes[i].title);
					window.location.href = resultNodes[i].title;
					doSubmit = 0;
					return false;
				}
			}
		}
	}
}
function formSubmit() {
	if (doSubmit == 1)
		return true;
	else
		return false;
}
function showResult(str, lng_id) {
	if (str.length==0) {
		document.getElementById("livesearch").innerHTML="";
		document.getElementById("livesearch").style.border="0px";
		document.getElementById("livesearch").style.height="0px";
		return
	}
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request")
		return
	}
	
	if (str != searchStr) {
		searchStr = str;
		
		var url="search.php"
		url=url+"?q="+str.replace("+", "%2B")
		url=url+"&l="+lng_id
		url=url+"&sid="+Math.random()
		xmlHttp.onreadystatechange=stateChanged
		xmlHttp.open("GET",url,true)
		xmlHttp.send(null)
	}
}
function stateChanged() { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		document.getElementById("livesearch").innerHTML=xmlHttp.responseText;
		document.getElementById("livesearch").style.border="1px solid #A5ACB2";
		document.getElementById("livesearch").style.height="";
		resultID = -1;
		
		setPosition();
	}
}
function GetXmlHttpObject() {
	var xmlHttp=null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}
