AutoComplete = function(IMS_Header1_input, suggestions)
{
	var timer;

	IMS_Header1_input.attachEvent("onkeyup", handleKeyUp);
	IMS_Header1_input.attachEvent("onkeydown", handleArrowKeys);
	
	function ItemClicked()
	{
		var cursor = getCursor();
		alert(cursor);
	}

	function handleKeyUp(event)
	{
		if (event.keyCode != 40 && event.keyCode != 38 && event.keyCode != 13)
		{
			/*if(event.keyCode == 188)
			{
				if(IMS_Header1_input.value.length == 1)
					IMS_Header1_input.value = '';
				else
					IMS_Header1_input.value = IMS_Header1_input.value.substring(0, IMS_Header1_input.value.length -1)
			}*/
				
			if (IMS_Header1_input.value.length == 0)
				suggestions.innerHTML = '';

			if (timer)
				clearTimeout(timer);
				
			if (IMS_Header1_input.value.length > 1)
				timer = setTimeout(reload, 400);
		}
		else if (event.keyCode == 13)
		{
			var cursor = getCursor();
			var parent = suggestions.firstChild;

			if (cursor != -1 && cursor < parent.childNodes.length)
			{
				if (IS_IE)
					IMS_Header1_input.value = parent.childNodes[cursor].innerText;
				else
					IMS_Header1_input.value = parent.childNodes[cursor].textContent;

				suggestions.innerHTML = "";
				//CheckIfElementExists = document.getElementById('IMS_Header1_HiddenTrigger');
				//if (CheckIfElementExists)
				//{
				//	CheckIfElementExists.click();
				//}
			}
		}else if (event.keyCode == 40 || event.keyCode == 38)
		{
			var cursor = getCursor();
			var parent = suggestions.firstChild;

			if (cursor != -1 && cursor < parent.childNodes.length)
			{
				if (IS_IE)
					IMS_Header1_input.value = parent.childNodes[cursor].innerText;
				else
					IMS_Header1_input.value = parent.childNodes[cursor].textContent;
			}
		}
	}
	
	function reload()
	{	
		suggestions.reload({ prefix : IMS_Header1_input.value });
	}

	function handleArrowKeys(event)
	{
		try
		{
			var cursor = getCursor();
			var parent = suggestions.firstChild;			

			if (cursor != -1 && (event.keyCode == 40 || event.keyCode == 38))
			{
				for (var j = 0; j < parent.childNodes.length; j++)
					parent.childNodes[j].style.backgroundColor = "";
				if (event.keyCode == 40)
				{
					if (cursor == parent.childNodes.length)
						parent.childNodes[0].style.backgroundColor = "#ffcc00";
					else if (cursor < parent.childNodes.length - 1)
					{
						parent.childNodes[cursor].style.backgroundColor = "";
						parent.childNodes[cursor + 1].style.backgroundColor = "#ffcc00";
					}
				}
				else
				{
					if (cursor > 0)
					{
						parent.childNodes[cursor].style.backgroundColor = "";
						parent.childNodes[cursor - 1].style.backgroundColor = "#ffcc00";
					}
				}
			}
		}
		catch (e) {}
	}

	function getCursor()
	{
		if (suggestions.innerHTML.length == 0)
			return -1;

		var parent = suggestions.firstChild;

		for (var i = 0; i < parent.childNodes.length; i++)
			if (
					parent.childNodes[i].style.backgroundColor == "#ffcc00" ||
					parent.childNodes[i].style.backgroundColor == "rgb(255, 204, 0)"
			   )
				return i;
				
		return parent.childNodes.length;
	}
}