var isLoading = false;
var tempSearchText = "";
var tempSearchHint = "";

$(document).ready(function()
{
	$("#form1").attr("autocomplete", "off");
	
	$("html").bind("click", function()
	{
		// Hide the menus
		$("#courseSearchResultsContainer").hide();
	});

	$("#searchBoxContainer").prepend('<input type="text" id="searchHint" />');
	
	$("#txtCourseSearch").focus(function(event)
	{
		$(this).select();
	});
	
	$("#txtCourseSearch").keyup(function(event)
	{
		var keyPressed = (event.keyCode ? event.keyCode : event.which);
		/*	37 - left
			38 - up	
			39 - right
			40 - down
		}*/
		
		if(keyPressed == 37) //left
		{
		}
		else
		{
			//remove multiple white space
			//$(this).val($(this).val().replace(/  +/g, " "));
			//$(this).val($(this).val().replace(/[^a-zA-Z0-9 ]/g, ""));
			
			if(keyPressed == 40) //down
			{
				if($(this).val().length > 2)
				{
					var courseSearchSelected = $(".course-search-selected");
					
					if(courseSearchSelected.length == 0)
					{
						$("#courseSearchResultsContainer ul li:first-child").addClass("course-search-selected");
						$("#courseSearchResultsContainer ul li:first-child").css("background", "#ccc");
						tempSearchText = $("#txtCourseSearch").val();
						tempSearchHint = $("#searchHint").val();
						$("#txtCourseSearch").val($("#courseSearchResultsContainer ul li:first-child").text());				
						$("#searchHint").val("");
					}
					else
					{
						var nextElement = $(".course-search-selected").next();
						$(".course-search-selected").removeAttr("style");
						$(".course-search-selected").removeClass("course-search-selected");
						nextElement.addClass("course-search-selected");
						nextElement.css("background", "#ccc");
		
						$("#txtCourseSearch").val(nextElement.text());			
						$("#searchHint").val("");
						
						if(nextElement.length == 0)
						{
							$("#txtCourseSearch").val(tempSearchText);
							$("#searchHint").val(tempSearchHint);					
						}
					}
					$("#courseSearchResultsContainer").show();
				}
			}
			else if(keyPressed == 38) //up
			{
				if($(this).val().length > 2)
				{
					var courseSearchSelected = $(".course-search-selected");
					
					if(courseSearchSelected.length == 0)
					{
						$("#courseSearchResultsContainer ul li:last-child").addClass("course-search-selected");
						$("#courseSearchResultsContainer ul li:last-child").css("background", "#ccc");
						tempSearchText = $("#txtCourseSearch").val();
						tempSearchHint = $("#searchHint").val();
						$("#txtCourseSearch").val($("#courseSearchResultsContainer ul li:last-child").text());				
						$("#searchHint").val("");
					}
					else
					{
						var previousElement = $(".course-search-selected").prev();
						$(".course-search-selected").removeAttr("style");
						$(".course-search-selected").removeClass("course-search-selected");
						previousElement.addClass("course-search-selected");
						previousElement.css("background", "#ccc");
		
						$("#txtCourseSearch").val(previousElement.text());			
						$("#searchHint").val("");
						
						if(previousElement.length == 0)
						{
							$("#txtCourseSearch").val(tempSearchText);
							$("#searchHint").val(tempSearchHint);					
						}
					}
				}
			}
			else
			{		
				if(keyPressed == 39)	//right arrowed key pressed
				{				
					if($("#searchHint").val().length > $("#txtCourseSearch").val().length)
					{
						$("#txtCourseSearch").val($("#searchHint").val());
					}
					$("#courseSearchResultsContainer").show();
				}
	
				if(isLoading == false && $(this).val().trim().length > 2)
				{
					getSearchResults($(this).val());
				}
		
				if($(this).val().length <= 2)
				{
					$("#courseSearchResultsContainer").empty();
					$("#courseSearchResultsContainer").hide();
					$("#searchHint").val("");
				}
			}
		}
	});
	
	$("#btnCourseSearch").click(function(event)
	{
		window.location.href = "/courses/course-search.aspx?searchTerm=" + escape($("#txtCourseSearch").val());
		event.preventDefault();
	});
	
	$("#searchBoxContainer a").click(function(event)
	{
		$("#courseSearchResultsContainer").empty();
		$("#txtCourseSearch").val("");
		$("#txtCourseSearch").focus();
		$("#courseSearchResultsContainer").hide();
		$("#searchHint").val("");
		event.preventDefault();
	});
	
	$("#courseSearchResultsContainer ul li, #courseSearchResultsContainer ul li a").live("click", function(event)
	{
		$("#txtCourseSearch").val($(this).text());
		$("#txtCourseSearch").focus();
		$("#courseSearchResultsContainer").hide();
		$("#searchHint").val("");
		window.location.href = "/courses/course-search.aspx?searchTerm=" + escape($(this).text());		
		event.preventDefault();
	});
});

function getSearchResults(stringToSearchIn)
{	
	stringToSearchIn = stringToSearchIn;
	isLoading = true;

	myAjaxRequest = $.ajax(
	{
		type: "POST",
		url: "/courses/courses.aspx",
		data: "txtCourseSearch=" + stringToSearchIn.replace(/&/g, "%26") + "&doTypeSearch=true",
		success: function(data)
		{
			isLoading = false;
			if(data && data.length > 0 && data.substring(0, 5) == " <ul>")
			{				
				$("#courseSearchResultsContainer").empty();
				$("#courseSearchResultsContainer").append(data);
				$("#courseSearchResultsContainer").show();

				var hint = "";
				$("#courseSearchResultsContainer ul li").each(function(index)
				{
					var tempHint = $(this).text();
					var hintLocation = tempHint.toLowerCase().indexOf(stringToSearchIn.toLowerCase());

					if(hintLocation > -1)
					{
						hint = tempHint.substring(hintLocation, tempHint.length);
						hint = $("#txtCourseSearch").val() + hint.substring($("#txtCourseSearch").val().length, hint.length)
						return false;
					}
				});			
				
				var currentVal = $("#txtCourseSearch").val();
				$('<span id="hintCount" style="display:none;">' + currentVal + '</span>').appendTo("body");
				var currentWidth = $("#hintCount").width();
				$("#hintCount").remove();
					//alert(currentWidth + " " + currentVal);
				if(currentWidth > 180)
				{
					hint = "";
				}
				$("#searchHint").val(hint);

				if(stringToSearchIn != $("#txtCourseSearch").val())
				{
					getSearchResults($("#txtCourseSearch").val());
				}
			}
			else
			{
				$("#courseSearchResultsContainer").hide();
				$("#searchHint").val("");							
			}
		}
	});
}
