var timeIntervall;
var XmlHttp;
var requestPage;

function setSearchAutocomplete()
{
	document.getElementById('search').setAttribute('autocomplete','off');
	document.getElementById('search').onkeyup = keys;
	if(window.XMLHttpRequest)
	{
		try
		{
			XmlHttp = new XMLHttpRequest();
		}
		catch(e)
		{
			XmlHttp = false;
		}
	}
	else if(window.ActiveXObject)
	{
		try
		{
			XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			XmlHttp = false;
		}
	}
}

function startSearch()
{
	var SearchForm = document.getElementById('SearchTopForm');
	var SearchValue = document.getElementById('search');

	if(SearchForm)
		if(SearchValue.value.length > 0)
			SearchForm.submit();
}

function keys(e)
{
	if(!e)
		e = window.event;
	if (e.keyCode != "13")
	{
		document.getElementById('suchergebnisse').style.left = document.getElementById('LOCR_CONTAINER').offsetLeft+'px';
		clearTimeout(timeIntervall);
		timeIntervall = setTimeout("newSearch()", 1000);
	}
}

function newSearch()
{
	if(document.getElementById('search').value.length > 0)
	{
		sendRequest(document.getElementById('search').value);
	}
	else
	{
		document.getElementById('suchergebnisse').innerHTML = '';
	}
}

function sendRequest(searchValue)
{   	
    	XmlHttp.open('GET', requestPage+'?search='+encodeURI(searchValue), true);
    	XmlHttp.onreadystatechange = getRequest;
   		XmlHttp.send(null);
}

function getRequest()
{
	if (XmlHttp.readyState == 4)
	{
		if(XmlHttp.status == 200)
		{
			if(document.getElementById('suchergebnisse_overlay'))
				document.getElementsByTagName("body")[0].removeChild(document.getElementById('suchergebnisse_overlay'));

			var sr = document.getElementById('suchergebnisse');
			sr.innerHTML = '';
			var response = XmlHttp.responseText;

			hideSelectBoxes();

			var opacity = 80;
			var searchBody = document.getElementsByTagName("body").item(0);

			var searchOverlay = document.createElement("div");
			searchOverlay.setAttribute('id','suchergebnisse_overlay');

			searchOverlay.style.height = (getHeightForOverlay()-94)+'px';
			searchOverlay.style.opacity = (opacity / 100);
			searchOverlay.style.MozOpacity = (opacity / 100);
			searchOverlay.style.filter = "alpha(opacity=" + opacity + ")";

			searchOverlay.onclick = function() { clearSearch(document.getElementById('searchname').value); };

			searchBody.appendChild(searchOverlay);

			sr.innerHTML = response;

			window.onresize = refreshView;
			}
		else
		{
			XmlHttp.abort();
			alert("Request Error!");
		}
	}
	else if (XmlHttp.readyState == 1)
	{
		
	}
	else {};
}

function clearSearch(SearchName)
{
	showSelectBoxes();

	document.getElementById('suchergebnisse').innerHTML = '';
	document.getElementById('search').value = SearchName;

	document.getElementsByTagName("body")[0].removeChild(document.getElementById('suchergebnisse_overlay'));	
}

function clearRequest()
{
	if(XmlHttp)
		XmlHttp.abort();
	return;
}

function setSearch(String)
{
	var searchForm = document.getElementById('SearchTopForm');
	var searchFormInput = document.getElementById('search');
	searchFormInput.value = String;
	searchForm.submit();
}

function getHeightForOverlay()
{
	var yScroll;

	if (window.innerHeight && window.scrollMaxY)
		yScroll = window.innerHeight + window.scrollMaxY;
	else if (document.body.scrollHeight > document.body.offsetHeight)
		yScroll = document.body.scrollHeight;
	else
		yScroll = document.body.offsetHeight;

	var windowHeight;

	if (self.innerHeight)
		windowHeight = self.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		windowHeight = document.documentElement.clientHeight;
	else if (document.body)
		windowHeight = document.body.clientHeight;

	if(yScroll < windowHeight)
		pageHeight = windowHeight;
	else
		pageHeight = yScroll;

	return pageHeight;
}

function refreshView()
{
	document.getElementById('suchergebnisse').style.left = document.getElementById('LOCR_CONTAINER').offsetLeft+'px';

	if(document.getElementById('suchergebnisse_overlay'))
		document.getElementById('suchergebnisse_overlay').style.height = (getHeightForOverlay()-94)+'px';
}

function hideSelectBoxes(ElementId)
{
	if(typeof(ElementId) == "undefined")
	{
		selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++)
		{
			selects[i].style.visibility = "hidden";
		}
	}
	else
		document.getElementById(ElementId).style.visibility = "hidden";
}

function showSelectBoxes(ElementId)
{
	if(typeof(ElementId) == "undefined")
	{
		selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++)
		{
			selects[i].style.visibility = "visible";
		}
	}
	else
		document.getElementById(ElementId).style.visibility = "visible";
}
