﻿var taRequest = null;
var taItemIndex = 0;
var taSaveField = "";
var taIgnoreKeyUp = false;
function InitializeTypeAhead()
{
	var obj = document.getElementById("TypeAheadSearch");
	if (obj != null)
	{
		obj.focus();
		obj.onkeydown = TypeAheadDownKeyHandler;
	}
}
function TypeAheadDownKeyHandler(ev)
{
	ev = (window.event ? window.event : ev);
	var key = ev.keyCode;
	if (key == 13)
	{
		taIgnoreKeyUp = true;
		if (taItemIndex > 0)
		{
			var e = document.getElementById("sr" + taItemIndex);
			if (e != null)
				TypeAheadSearchOnID(e);
		}
		else
		{
			var SearchResults = document.getElementById("SearchResults");
			if (SearchResults != null)
				SearchResults.style.visibility = "hidden";
			PostClientCommand("SearchOnTypeAhead");
		}
	}
	else if (key == 40)
	{
		taIgnoreKeyUp = true;
		var SearchResults = document.getElementById("SearchResults");
		if (SearchResults != null && SearchResults.style.visibility.toLowerCase() == "visible")
		{
			var Next = document.getElementById("sr" + (taItemIndex + 1));
			if (Next != null)
			{
				if (taItemIndex > 0)
				{
					var Current = document.getElementById("sr" + taItemIndex);
					if (Current != null)
						TypeAheadUnSelect(Current);
				}
				TypeAheadSelect(Next);
				taItemIndex += 1;
			}
		}
	}
	else if (key == 38)
	{
		taIgnoreKeyUp = true;
		var SearchResults = document.getElementById("SearchResults");
		if (SearchResults != null && SearchResults.style.visibility.toLowerCase() == "visible")
		{
			if (taItemIndex > 0)
			{
				var Current = document.getElementById("sr" + taItemIndex);
				if (Current != null)
					TypeAheadUnSelect(Current);

				var Next = document.getElementById("sr" + (taItemIndex - 1));
				if (Next != null)
				{
					TypeAheadSelect(Next);
				}
				else
				{
					var obj = document.getElementById("TypeAheadSearch");
					if (obj != null)
						obj.value = taSaveField;
				}
				taItemIndex -= 1;
			}
		}
	}
}
function TypeAheadXmlHandler()
{
	if (taRequest.readyState == 4)
	{
		if (taRequest.status == 200)
		{
			if (taRequest.responseText != null)
			{
				var obj = document.getElementById("TypeAheadResults");
				if (obj != null)
				{
					var ResultElement = document.getElementById("TypeAheadResults");
					ResultElement.innerHTML = taRequest.responseText;
					var SearchResults = document.getElementById("SearchResults");
					var TypeAheadSearch = document.getElementById("TypeAheadSearch");
					if (SearchResults != null && TypeAheadSearch != null)
					{
						SearchResults.style.left = GetLeft(TypeAheadSearch) + "px";
						SearchResults.style.top = GetTop(TypeAheadSearch) + "px";
						SearchResults.style.visibility = "visible";
					}
				}
			}
		}
	}
}
function TypeAheadRequest(e, type, args)
{
	if (taIgnoreKeyUp)
	{
		taIgnoreKeyUp = false;
		return;
	}

	taSaveField = e.value;

	if (e.value == "")
	{
		var SearchResults = document.getElementById("SearchResults");
		if (SearchResults != null)
			SearchResults.style.visibility = "hidden";

		return;
	}

	if (window.XMLHttpRequest)
		taRequest = new XMLHttpRequest();
	else
		taRequest = new ActiveXObject("Microsoft.XMLHTTP");

	taRequest.onreadystatechange = TypeAheadXmlHandler;
	taRequest.open("GET", "/Manager/Common/TypeAheadXml.aspx?Type=" + type + "&Search=" + e.value + "&IsMobile=" + (IsMobile ? "true" : "false") + args, true);
	taRequest.send();
}
function TypeAheadSelect(e)
{
	e.style.color = "white";
	e.style.backgroundColor = "blue";
	e.style.cursor = "pointer";

	var TextBox = document.getElementById("TypeAheadSearch");
	if (TextBox != null)
	{
		var TableCell = document.getElementById(e.id);
		if (TableCell != null)
			TextBox.value = (IsMSIE ? TableCell.innerText : TableCell.textContent);
	}
}
function TypeAheadUnSelect(e)
{
	e.style.color = "black";
	e.style.backgroundColor = "white";
	e.style.cursor = "";

	var TextBox = document.getElementById("TypeAheadSearch");
	if (TextBox != null)
	{
		var TableCell = document.getElementById(e.id);
		if (TableCell != null)
			TextBox.value = taSaveField;
	}
}
function TypeAheadSearchOnID(e)
{
	var SearchResults = document.getElementById("SearchResults");
	if (SearchResults != null)
		SearchResults.style.visibility = "hidden";

	var SSID = document.getElementById("SSID");
	if (SSID != null)
	{
		SSID.value = e.getAttribute("ssid");
		PostClientCommand("SearchOnID");
	}
}
function TypeAheadMouseOver(e)
{
	TypeAheadSelect(e);
}
function TypeAheadMouseOut(e)
{
	TypeAheadUnSelect(e);
}
function TypeAheadMouseUp(e)
{
	TypeAheadSearchOnID(e);
}

