var XmlHttp = null;
var TargetElement = null;
var AutoCompleteDiv = null;
var IFrameDiv = null;
var AutoCompleteServer = "www.aeroplan.de";
var AutoCompleteServerLocal = "192.168.11.100";

function Initialize()
{
	try 
	{
		// Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
		XmlHttp = new XMLHttpRequest();
	} 
	catch(e) 
	{
		try 
		{
			// MS Internet Explorer (ab v6)
			XmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(e) 
		{
			try 
			{
				// MS Internet Explorer (ab v5)
				XmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch(e) { XmlHttp  = null; }
		}
	} 
}

function SendRequest(ElementName, Params) 
{
	TargetElement = document.getElementsByName(ElementName).item(0);
	
	if(XmlHttp == null)
		Initialize();
		
	if(XmlHttp!=null && TargetElement!=null && TargetElement.value.length > 2)
	{		
		try
		{
			var Input = TargetElement.value;
			Input = Input.replace(String.fromCharCode(246), "oe");
			Input = Input.replace(String.fromCharCode(228), "ae");
			Input = Input.replace(String.fromCharCode(252), "ue");
			Input = Input.replace(String.fromCharCode(223), "ss");
			Input = Input.replace(String.fromCharCode(196), "Ae");
			Input = Input.replace(String.fromCharCode(214), "Oe");
			Input = Input.replace(String.fromCharCode(220), "Ue");			
			XmlHttp.open("GET", "http://" + AutoCompleteServer + "/IBE/AutoComplete.aspx?Input=" + escape(Input), true);
			XmlHttp.onreadystatechange = ReceiveResponse;
			XmlHttp.send(null);
		}
		catch(e)
		{
			alert(e);
		}
	}
}

function ReceiveResponse() 
{
	if (XmlHttp.readyState == 4 && TargetElement!=null) 
	{
		var x = TargetElement.offsetLeft;
		var y = TargetElement.offsetTop + TargetElement.offsetHeight ; 
		var parent = TargetElement;
		while (parent.offsetParent) 
		{
			parent = parent.offsetParent;
			x += parent.offsetLeft;
			y += parent.offsetTop;
		}
		
		if (AutoCompleteDiv==null)
		{
			AutoCompleteDiv = document.createElement("div");
			AutoCompleteDiv.setAttribute("id", "AutoComplete");
			AutoCompleteDiv.setAttribute("class", "AutoComplete");
			AutoCompleteDiv.setAttribute("style", "visibility: hidden;");
			document.body.appendChild(AutoCompleteDiv);
		}
		
		AutoCompleteDiv.style.position = "absolute";
		AutoCompleteDiv.style.left = x + "px";
		AutoCompleteDiv.style.top = y + "px";
		AutoCompleteDiv.style.width = TargetElement.style.width;
		AutoCompleteDiv.style.visibility = "visible"; //updateDateFieldWasJustCalled ? "hidden" : "visible";
		AutoCompleteDiv.style.display = "block"; //updateDateFieldWasJustCalled ? "none" : "block";
		AutoCompleteDiv.style.zIndex = 10000;
		
		var Result = XmlHttp.responseText.split("\n");
		var Output = "";
		if(Result.length == 1)
			Output = "<span id='Error'>leider keine &Uuml;bereinstimmung gefunden...</span>";
		else		
			for(i = 0; i < Result.length; i++)
				if(Result[i].length > 0)
					Output += "<a href='#' onMouseOut='AutoCompleteMouseOut(" + i + ");' onMouseOver='AutoCompleteMouseOver(" + i + ");' onClick='if(IFrameDiv!=null) IFrameDiv.style.visibility = " + '"hidden"' + "; AutoCompleteDiv.style.visibility = " + '"hidden"' + ";"
								+ "TargetElement.value = " + '"' + Result[i].replace("\r", "").replace(/<b>/g, "").replace(/<\/b>/g, "") + '"' + ";'>" + Result[i].replace("\r", "") + "</a>";
  
		//updateDateFieldWasJustCalled = false;
  	//draw the datepicker table
		//refreshDatePicker(targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
 
		AutoCompleteDiv.innerHTML = Output;
		adjustiFrame();
	}
}

function adjustiFrame(pickerDiv, iFrameDiv)
{
	// we know that Opera doesn't like something about this, so if we
	// think we're using Opera, don't even try
	if (navigator.userAgent.toLowerCase().indexOf("opera") != -1)
		return;

	// put a try/catch block around the whole thing, just in case
	try 
	{
		if (IFrameDiv==null) 
		{
			// don't use innerHTML to update the body, because it can cause global variables
			// that are currently pointing to objects on the page to have bad references
			//document.body.innerHTML += "<iframe id='" + iFrameDivID + "' src='javascript:false;' scrolling='no' frameborder='0'>";
			IFrameDiv = document.createElement("iFrame");
			//IFrameDiv.setAttribute("id", iFrameDivID);
			IFrameDiv.setAttribute("src", "javascript:false;");
			IFrameDiv.setAttribute("scrolling", "no");
			IFrameDiv.setAttribute("frameborder", "0");
			document.body.appendChild(IFrameDiv);
		}

		/*if (!pickerDiv)
			pickerDiv = document.getElementById(datePickerDivID);
		if (!iFrameDiv)
			iFrameDiv = document.getElementById(iFrameDivID);*/

		try 
		{
			IFrameDiv.style.position = "absolute";
			IFrameDiv.style.width = AutoCompleteDiv.offsetWidth;
			IFrameDiv.style.height = AutoCompleteDiv.offsetHeight ;
			IFrameDiv.style.top = AutoCompleteDiv.style.top;
			IFrameDiv.style.left = AutoCompleteDiv.style.left;
			IFrameDiv.style.zIndex = AutoCompleteDiv.style.zIndex - 1;
			IFrameDiv.style.visibility = AutoCompleteDiv.style.visibility ;
			IFrameDiv.style.display = AutoCompleteDiv.style.display;
		} catch(e) { }

	} catch (ee) { 	} 
}

var AutoCompleteTimer;
var AutoCompleteLastSender;

function AutoCompleteMouseOver(Sender)
{
	clearTimeout(AutoCompleteTimer);
	AutoCompleteLastSender = Sender;	
}

function AutoCompleteMouseOut(Sender)
{
	if(AutoCompleteLastSender == Sender)
	{
		clearTimeout(AutoCompleteTimer);  
		AutoCompleteTimer = setTimeout('if(IFrameDiv!=null) IFrameDiv.style.visibility = "hidden"; AutoCompleteDiv.style.visibility = "hidden";', 500);
	}
}

function ShowAutoComplete(TargetElementName)
{
	if(AutoCompleteDiv!=null)
	{
		AutoCompleteDiv.style.visibility = "visible";
		if(IFrameDiv!=null)
			IFrameDiv.style.visibility = "visible";
	}
}
