$(document).ready(function()
{
	var auto = $("#autocomp");
	var list = $("#autocompList");
	var timeout = null;
	var curPicker = -1;
	var curText = "";
	var clicked = null;
	
	var offset = auto.offset();
	/*var hoffset = $("#search").offset();
	offset.top -= hoffset.top;
	offset.left -= hoffset.left;*/
	
	var setSearchType = function( el )
	{
		var val = 0;
		
		if(typeof el == "number") 
		{
			val = el;
		}
		else {
		
			while(el && el.nodeName.toLowerCase() != "ul") {
				el = el.parentNode;
			}
		
			
		}
		
	
		
	}
	
	auto.keyup(function(e)
	{
		switch(e.keyCode)
		{
			case 27: // ESC
				list.slideUp(250);
				auto.val(curText);
				curPicker = -1;
				return true;
			
			case 38:
				(function()
					{
						var el = $("li", list)
						
						el.each(function(){
							$(this).removeClass("current");
						});
						
						if(curPicker-1 == -1)
						{
							curPicker--;
							setSearchType(0);
							auto.val(curText);
							list.slideUp(250);
							return false;
						}
					
						if(curPicker-1 >= 0)
						{
							curPicker--;

							$(el[curPicker]).addClass("current");
							
							setSearchType(el[curPicker]);
							
							auto.val($(el[curPicker]).text()); 
							
						};
						
					})();
				return false;
			
			case 40: // DOWN
				(function()
					{
						var el = $("li", list)
						
						if(curPicker+1 < el.length)
						{
							curPicker++;
							
							el.each(function(){
								$(this).removeClass("current");
							});
							
							$(el[curPicker]).addClass("current");
							
							setSearchType(el[curPicker]);
							
							auto.val($(el[curPicker]).text()); 
							
							list.slideDown(250);	
							
						};
						
					})();
				return false;
				
			default:
				(function()
					{
						$("li", list).each(function(){
							$(this).removeClass("current");
						});
						curPicker = -1;						
					})();
				break;
		
		}
		
		curText = auto.val();
	
		if(curText.length > 1)
		{
			if(timeout)
				window.clearTimeout(timeout);

			timeout = window.setTimeout(function()
			{
				
				var query = "query="+curText;
								
			
				$.ajax({
					url		: rootPath + "AutoCompleter.aspx", 
					data	: query,
					dataType: "xml",
					cache: false,
					success	: function(xml){					
				
					var string = "";
					
					//render
					string += "<ul class=\"films\">";
					
					var films = $("films item", xml);
					
					films.each(
						function(){
							var title = $("text", this).text()
							string += "<li><a href=\"titles?keyword=" + encodeURIComponent(title) + "\">"+title+"</a></li>";
						}
					);
					
					string += "</ul>";
				
						
					
						
						list.html(string);
						
						list.css({
							top : offset.top,
							left : offset.left
						});
						
						list.slideDown(250);					
						
					}
					
				});
				
			}, 250);
			
		};

	});
	
	list.click(function(e){	

		//alert('testcall');

		clicked = true;

		var t = e.target;
		
		while(t && t != list && t.nodeName.toLowerCase() != "a")
		{
			t = t.parentNode;
		}
		
		if(t.nodeName.toLowerCase() == "a")
		{
			auto.val($(t).text());
			
			setSearchType(t);
		
			//curPicker = -1;
			
			var form = document.getElementById("autocomp").parentNode;
			
			form.className = "loading";
			
			form.submit();
		
		}	
		
		return false;
		
	});
	
	auto.blur(function(){
		
		window.setTimeout(function()
		{
			if(!clicked)
			{
				list.slideUp(250);
				curPicker = -1;
			}
			
		}, 100);
		
	});

});
