var hiding;

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(str) {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('search').value);
		if(str.length<2) {
			document.getElementById('search_suggest').style.display="none";
			return;
		}
		searchReq.open("GET", '/ajax_produkte.php?search=' + str, true);
		searchReq.onreadystatechange = handleSearchSuggest; 
		searchReq.send(null);
	}		
}

function hideSuggest() {
	if(hiding==1)
		document.getElementById('search_suggest').style.display="none";
}

function cancelHiding() {
	window.setTimeout(cancelHiding2,100);
}

function cancelHiding2() {
	hiding=0;

}
//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var search = document.getElementById('search');
		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		if(str.length<2) {
			ss.style.display="none";
		}
		else {
			var suggest = '';
			for(i=0; i < str.length - 1; i++) {
				//Build our element string.  This is cleaner using the DOM, but
				//IE doesn't support dynamically added attributes.
				suggest += '<div onmouseover="suggestOver(this);" '
				        + 'onmouseout="suggestOut(this);" '
						+ 'onclick="javascript:setSearch(this.innerHTML);" '
				        + 'class="suggest_link" style="height:12px">' + str[i] + '</div>';
			}
			ss.innerHTML = suggest;
			if(str.length > 0) {
				ss.style.display="block";
				var h = str.length*12;
				if(h>144)
					h=144;
				ss.style.height=h+"px";
				
			} else {
				ss.style.display="none";
			}
		}
	}
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
	document.getElementById('search').value = value;
	document.getElementById('search_suggest').style.display='none';
	document.getElementById('fsearch').submit();
	
}

window.onload=function(){
	var search = document.getElementById('search');
	if(search) {
		var ss = document.getElementById('search_suggest');
		ss.onclick = cancelHiding;
		search.onclick = cancelHiding;
		ss.style.position = 'absolute';
		ss.style.width = '150px';
		ss.style.height = '150px';
		
		var left=0;
		var top=18;
		
		var x = search;
		do {
			left += x.offsetLeft;
			top += x.offsetTop;
			x = x.offsetParent;
		} while(x);
		
		ss.style.left=left+"px";
		ss.style.top=top+"px";
	}
	
	
	document.body.onclick=function() {
		hiding=1;
		window.setTimeout(hideSuggest,200);
	}
}