var xmlHttp;
var suggestionsShown = false;
var currentlySelectedLi = -1;

function deselect(list, li) 
{
    if(li != -1) 
	{
        list[li].className = "li";
    }
}

function loeschen() 
{
    document.getElementById("suggestions").innerHTML = "";
    document.getElementById("suggestions").style.display = 'none';  
}

function getList() 
{
	return document.getElementById("suggestions").getElementsByTagName("li");	
}

function getWidth()
{
	return document.getElementById("inputText").size;	
}

function getXmlHttpObject() 
{
	var xmlHttp = null;
	
	try 
	{
		xmlHttp = new XMLHttpRequest();                          
	}
	catch (e) 
	{
		try 
		{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");      
		}
		catch (e) 
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");    
		}
	}
	
	return xmlHttp;
}

function processClick(selection) 
{	
	document.getElementById("inputText").value = unescape(selection);
	document.getElementById("suggestions").innerHTML = "";
    document.getElementById("suggestions").style.display = 'none';
}

function processInput(e, userInput) 
{	
	var theEvent = e || window.event;

	if (userInput.length == 0) 
	{
		document.getElementById("suggestions").innerHTML = "";
    	document.getElementById("suggestions").style.display = 'none';
		return;
	}
	
	if (theEvent.keyCode == 8) 
	{
		resetLi();
	}
	
	if (theEvent.keyCode == 38 || theEvent.keyCode == 40) 
	{	
	    var list = getList();
	    
	    if(theEvent.keyCode == 40) 
		{
	        var newSelectedLi = currentlySelectedLi + 1;
	    }
	    else 
		{
	        var newSelectedLi = currentlySelectedLi - 1;
	    }
	    
	    if(newSelectedLi <= 9 && newSelectedLi >= 0) 
		{
	        selectLi(list, newSelectedLi, true);
	        deselect(list, currentlySelectedLi);
	        setLi(newSelectedLi);
	    }
        return;       
	}
	
	xmlHttp = getXmlHttpObject();
	
	var url = "http://www.wwk-pflegeservice.de/suggest_data.php?query=" + userInput;
	
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);	
}

function pressTab(e)
{	
	var theEvent = e || window.event;
    
    if(theEvent.keyCode == 9 && document.getElementById("suggestions").innerHTML != "") 
	{
		setText();
        document.getElementById("suggestions").innerHTML = "";
    	document.getElementById("suggestions").style.display = 'none';
    }    
}

function newCuLi(li) 
{
    var list = getList();
    
    for(var i = 0; i < list.length; i++) 
	{
        if(i == li) 
		{
            selectLi(list, li, false);
            setLi(li);
        }
        else 
		{
            deselect(list, i);
        }
    }
}

function resetLi() 
{
    currentlySelectedLi = -1;
}

function selectLi(list, li, updateInputText)
{
    list[li].className = "hoverLi";
    
    if (updateInputText) 
	{
        setText(li);
    }
}

function setLi(li) 
{
    currentlySelectedLi = li;
}

function setText(li) 
{
	var list = getList();
	
	if(li >= 0)
	{
		var string = list[li].innerHTML.substring(6);
		var position = string.indexOf("#\">")
		
		string = string.substring(position+3, string.length-4);
		document.getElementById("inputText").value = string;
	}
	else 
	{
		var string = list[currentlySelectedLi].innerHTML.substring(6);
		var position = string.indexOf("#\">")
		
		string = string.substring(position+3,string.length-4);
		document.getElementById("inputText").value = string;
	}
  
}

function stateChanged() 
{ 
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
	{		
		suggestionsShown = true;
		
		var liste = "";
		var xml = xmlHttp.responseXML;
		var results = xml.getElementsByTagName('result')[0].childNodes
		
		if(results.length != 0)
		{	
			if(getWidth() == 35)
			{
				for (var i=0; i<results.length; i++)
				{	
					liste += "<li value='" + i + "' class=\"li\" onmouseover=\"newCuLi(this.value);\" onclick=\"processClick('" + escape(results[i].childNodes[0].nodeValue) + "');\">&nbsp;<a class=\"liAnker\" href=\"#\">" + results[i].childNodes[0].nodeValue.substr(0, 36) + "</a></li>";	
				}
			}
			else
			{
				for (var i=0; i<results.length; i++)
				{	
					liste += "<li value='" + i + "' class=\"li\" onmouseover=\"newCuLi(this.value);\" onclick=\"processClick('" + escape(results[i].childNodes[0].nodeValue) + "');\">&nbsp;<a class=\"liAnker\" href=\"#\">" + results[i].childNodes[0].nodeValue.substr(0, 47) + "</a></li>";	
				}
			}
			
			if(liste != "") 
			{
				if(getWidth() == 35)
				{
					liste = "<ul class=\"suggestUl\">" + liste;
					liste += "</ul>";
				}
				else
				{
					liste = "<ul class=\"suggestUlzwei\">" + liste;
					liste += "</ul>";
				}
			}
			
			document.getElementById("suggestions").innerHTML = liste;
			document.getElementById("suggestions").style.display = 'block';
		}
		else 
		{
		    document.getElementById("suggestions").style.display = 'none';		
		}	
	} 	
}
