var selectedSuggestionIndex = -1;
var totalSearchSuggestions = 0;
var currentSearchSuggestions = [];
var searchSuggestionRequest = null;

$(document).ready(function()
{
	$('input#txtSearch').bind("keyup", function(e) 
	{
		if(e.keyCode == 27)
		{
			HideSuggestionBox();
			return;
		}
		if((e.keyCode == 13) || (e.keyCode == 38) || (e.keyCode == 40))
		{		
			if(e.keyCode == 13)
			{			
				
				if(selectedSuggestionIndex >= 0)	
					RedirectToProductId(currentSearchSuggestions[selectedSuggestionIndex].product_id, currentSearchSuggestions[selectedSuggestionIndex].reference);
				else
					HideSuggestionBox();
				
				return false;
			}
			else
			{
				if((e.keyCode == 38) && (selectedSuggestionIndex > 0))
				{
					selectedSuggestionIndex--;
					SelectSearchSuggestion(selectedSuggestionIndex);
				}
				if((e.keyCode == 40) && (selectedSuggestionIndex < totalSearchSuggestions - 1))
				{
					selectedSuggestionIndex++;
					SelectSearchSuggestion(selectedSuggestionIndex);
				}
			}
		}
		else
		{
			if(this.value.length > 2)
				ShowSearchSuggestions();
			else
				HideSuggestionBox();
		}
	});		
});

function ShowSearchSuggestions()
{
	var searchField = $("input#txtSearch");
	var searchText = searchField.val();
	selectedSuggestionIndex = -1;
	currentSearchSuggestions = [];
	if(searchSuggestionRequest != null)
	{
		searchSuggestionRequest.abort();
		searchSuggestionRequest = null;
	}
	if(searchText.length > 2)
	{
		searchSuggestionRequest = $.get("/nsnproject/ajax.php", 
			{
				search_suggestions: searchText	
			},
			function(data, status)
			{			
				if(data.length > 0) 
				{
					$("div#divSearchSuggestions").empty();
					var counter = 0;
					currentSearchSuggestions = data;
					totalSearchSuggestions = data.length;
					$.each(data, function(index, item)
					{
						var itemText = item.name + " - ";
						if(item.reference.match(new RegExp(searchText, "i")) != null)
							itemText += item.reference + " - ";
						itemText += item.product_id + " - " + item.category;
						itemText = itemText.replace(new RegExp(searchText, "gi"), "<span class='search_highlight'>" + searchText + "</span>");										
						var cleanSearchText = searchText.replace(new RegExp("\-", "g"), "");
						itemText = itemText.replace(new RegExp(cleanSearchText, "gi"), "<span class='search_highlight'>" + searchText + "</span>");										
						//itemText = itemText.replace(new RegExp("\-\-", "g"), "-");
						
						$("div#divSearchSuggestions").append
						(
							$("<div></div>")
								.attr("id", "divSearchSuggestion_" + index)
								.attr("class", "search_suggestion_item")
								.bind("mouseover", { index: counter }, function(e)
								{
									SelectSearchSuggestion(e.data.index);
								})
								.bind("click", { index: counter }, function(e)
								{
									RedirectToProductId(currentSearchSuggestions[e.data.index].product_id, currentSearchSuggestions[e.data.index].reference);
									return false;
								})
								.html(itemText)
						);
						counter++;
					});
					$("div#divSearchSuggestions").css(
					{
						"top": searchField.offset().top + searchField.height() + 3,
						"left": searchField.offset().left,
						"width": searchField.width()
					}).slideDown();			
				}
				else
				HideSuggestionBox();
			}, 
			"json"
		);
	}
}

function SelectSearchSuggestion(index)
{
	$("div.search_suggestion_item_selected").attr("class", "search_suggestion_item");
	$("div#divSearchSuggestion_" + index).attr("class", "search_suggestion_item_selected");
}

function HideSuggestionBox()
{
	selectedSuggestionIndex = -1;
	totalSearchSuggestions = 0;
	currentSearchSuggestions = [];
	$("div#divSearchSuggestions").slideUp("normal", function()
	{
		$("div#divSearchSuggestions").empty();
	});	
}

function CanSubmitSearchForm()
{
	return (selectedSuggestionIndex < 0);	
}

function RedirectToProductId(productId, reference)
{	
	$.get("/nsnproject/ajax.php",
		{
			get_product_url: productId,
			lang: ((window.location.href.indexOf("/en/") >= 0) ? "en" : "da")
		},
		function(data, status)
		{
			if(data.length > 0)	
				window.location = data + "?searchRef=" + $("#txtSearch").val();
		}
	);
}
