var xmlHttp;

function showResult(str, event)
{
	str = encodeURIComponent(str);
	
	event = event || window.event;

	// Key Down oder Key UP
	if(event.keyCode == 40 || event.keyCode == 38)
	{
		return;
	}
	
	if (str.length == 0)
	{ 
		document.getElementById("resultbox").innerHTML="";
		document.getElementById("resultbox").style.border="0px";
		return;
	}

	xmlHttp=GetXmlHttpObject()
	
	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	} 

	var url="getLiveSearchResults.php";
	url = url + "?searchTag=" + str;
	url = url + "&sid = " + Math.random();
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.setRequestHeader ('Content-Type', 'application/xml; charset=utf-8');
	xmlHttp.send(null);
} 


function stateChanged() 
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById("resultbox").innerHTML=xmlHttp.responseText;
		document.getElementById("resultbox").style.border="1px solid #A5ACB2";
	} 
}


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;
}


function divElemActive(divElements)
{
	for(var i=0; i<divElements.length; i++)
	{
		if(divElements[i].className == "active")
			return i;
	}
	
	return -1;
}


function setElementActive(elemPos, divElements)
{
	
	// Alle Elemente resetten
	for(var i=0; i<divElements.length; i++)
	{
		divElements[i].className = "inactive";
	}
	
	// Aktive Element setzen
	divElements[elemPos].className = "active";	
}

function clearField()
{
	var searchField = document.getElementById("searchfield");
	
	if(searchField != null)
	{
		if(searchField.value == "Ihr Suchbegriff...")
			searchField.value = "";
	}
}

function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}


function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];

	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	
	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);
			return a;
}


function updateSearchField(searchField, activeElem)
{
	var amp = new RegExp("&amp;", "g");

	var boldText = getElementsByClassName("hintsBold", activeElem);

	var normalText = getElementsByClassName("hintsNormal", activeElem);

	if(boldText.length > 0 && normalText.length > 0)
	{
		var inner = boldText[0].innerHTML.replace("&amp;", "&");
		var outer = normalText[0].innerHTML.replace("&amp;", "&");
		searchField.value = inner + outer;
	}
	else
	{
		searchField.value = activeElem.innerHTML.replace("&amp;", "&");
	}	
	
	
}

function doKeyAction(event)
{
	event = event || window.event;
	
	if(event.keyCode != 40 && event.keyCode != 38)
		return;
		
	var resultboxElem = document.getElementById("resultbox");
	var divElements = resultboxElem.getElementsByTagName("div");
	var searchField = document.getElementById("searchfield");
	var activeElemNumber = divElemActive(divElements);
	
	// Key Down
	if(event.keyCode == 40)
	{	
		// Schon was aktiv
		if(activeElemNumber >= 0)
		{		
			// Es gibt noch weitere Ergebnisse nach diesem
			if( activeElemNumber < divElements.length-1 )
			{
				setElementActive(activeElemNumber+1, divElements);
				updateSearchField(searchField, divElements[activeElemNumber+1]);
			}
			else if( activeElemNumber == divElements.length-1)
			{
				setElementActive(0, divElements);
				updateSearchField(searchField, divElements[0]);
			}
		}
		// Erster Sprung ins Ergebnismenü - noch nichts aktiv
		else
		{
			setElementActive(0, divElements);
			updateSearchField(searchField, divElements[0]);
		}
	}
	
	// Key Up
	else if(event.keyCode == 38)
	{		
		// Schon was aktiv
		if(activeElemNumber >= 0)
		{		
			// Es gibt noch weitere Ergebnisse vor diesem
			if( activeElemNumber > 0 )
			{
				setElementActive(activeElemNumber-1, divElements);
				updateSearchField(searchField, divElements[activeElemNumber-1]);
			}
			else if( activeElemNumber == 0)
			{
				setElementActive(divElements.length-1, divElements);
				updateSearchField(searchField, divElements[divElements.length-1]);
			}
		}
		// Erster Sprung ins Ergebnismenü - noch nichts aktiv -> unterstes Element auswählen
		else
		{
			setElementActive(divElements.length-1, divElements);
			updateSearchField(searchField, divElements[divElements.length-1]);
		}
	}
}

function resultMouseOver(overElemNumber) 
{
	var resultboxElem = document.getElementById("resultbox");
	var divElements = resultboxElem.getElementsByTagName("div");
	if (overElemNumber > 0) 
	{
		setElementActive(overElemNumber-1, divElements);
	}
}


function resultClick(clickElemNumber) 
{
	var resultboxElem = document.getElementById("resultbox");
	var divElements = resultboxElem.getElementsByTagName("div");
	var searchField = document.getElementById("searchfield");
	if (clickElemNumber > 0) 
	{
		setElementActive(clickElemNumber-1, divElements);
		updateSearchField(searchField, divElements[clickElemNumber-1]);
		searchForm.submit();
	}
}