﻿if (typeof CunninghamLindsey == "undefined")
{
	CunninghamLindsey = {};
}

if (typeof CunninghamLindsey.Search == "undefined")
{
	CunninghamLindsey.Search = {};
}

var CunninghamLindsey_Search_Timeout = null;

CunninghamLindsey.Search.AutoComplete = function()
{

	var text = null;
	var list = null;
	var culture = null;

	return {
		init: function(obj)
		{
			var i, c;
			var p;

			culture = obj.culture;

			text = $("#" + obj.target);

			text.attr("autocomplete", "off");

			text.keyup(function()
			{
				CunninghamLindsey.Search.AutoComplete.Call();
			});

			$(document).ready(function()
			{
				$("body").append($("<div id=\"autocomplete\"></div>"));
				list = $("#autocomplete");
				$(window).resize(function()
				{
					CunninghamLindsey.Search.AutoComplete.Reset();
				});
				CunninghamLindsey.Search.AutoComplete.Reset();
				CunninghamLindsey.Search.AutoComplete.Hide();
			}
			);

		},
		Reset: function()
		{
			var p, d;

			p = $("div.misclinks").position();

			list.css("left", p.left + $("div.misclinks").width() - (list.width() + 4) + "px");
			list.css("top", p.top + 24 + "px");

		},
		Call: function()
		{

			if (CunninghamLindsey_Search_Timeout != null)
			{
				clearTimeout(CunninghamLindsey_Search_Timeout);
				CunninghamLindsey_Search_Timeout = null;
			}
			CunninghamLindsey_Search_Timeout = setTimeout("CunninghamLindsey.Search.AutoComplete.Request();", 250);

		},
		Request: function()
		{
			var s;

			s = text.attr("value");

			clearTimeout(CunninghamLindsey_Search_Timeout);

			$.getJSON(
				"/AutoComplete.ashx?q=" + escape(text.attr("value")) + "&culture=" + escape(culture),
				function(json)
				{
					CunninghamLindsey.Search.AutoComplete.CallBack(json);
				}
			);
		},
		CallBack: function(data)
		{
			var i;
			if (data.autocomplete.length == 0)
			{
				CunninghamLindsey.Search.AutoComplete.Hide();
				return;
			}

			list.empty();

			for (i = 0; i < data.autocomplete.length; i++)
			{
				list.append($("<div><a href=\"javascript:void(0)\" onclick='CunninghamLindsey.Search.AutoComplete.Select(\"" + escape(data.autocomplete[i].value) + "\")'>" + data.autocomplete[i].value + "</a></div>"));
			}

			list.show();

			$(document).bind("click", function()
			{
				CunninghamLindsey.Search.AutoComplete.Hide();
			});

		},
		Hide: function()
		{
			$(document).unbind("click");
			list.hide();
		},
		Select: function(value)
		{
			text.attr("value", unescape(value));
			//alert(text.parents("form").height())
			setTimeout("CunninghamLindsey.Search.AutoComplete.Submit();", 10);
		},
		Submit: function()
		{
			$("#searchButton").trigger("click");
		}
	};

} ();
