var searchText, results, searchBox, linkData;
var ie6 = ($.browser.msie && $.browser.version.substr(0,1)<7);

function storeData(data) {
	linkData = $("li a", data);
}

function goto(loc) {
	open(loc,"_self");
}

function filterResults() {
	
	var contents = "";
	var firstResults = [];
	var lastResults = [];
	var finalResults = [];
	var pattern = new RegExp(searchText, "i");

	linkData.each(function(i) {
		var result = this.innerHTML.search(pattern);
		if (result === 0) {
			firstResults.push(this);
		} else if (result > 0) {
			lastResults.push(this);	
		}
	});
		
	finalResults = firstResults.concat(lastResults).slice(0, 10);
	
	if (finalResults.length > 0) {
		results.css("display", "block");
		for (var i=0; i<finalResults.length; i++) {
			contents += '<li><a href="' + finalResults[i] + '">' + finalResults[i].innerHTML + '</a></li>';	
		}
		results.html(contents);
	} else {
		results.empty();
		results.css("display", "none");
	}
	
	$('#suggest a').mouseover(function () {
		results.find('a.active').removeClass('active');
		$(this).addClass('active');
	});
			
	$('#suggest a').mousedown(function () {
		$("#search form").submit();
	});

	results.css("top", (searchBox.offset().top + searchBox.outerHeight()) );
	results.css("left", searchBox.offset().left );
	
	if (ie6) {
		results.width(searchBox.innerWidth());
	} else {
		results.css("min-width", searchBox.innerWidth());
	}

}

$(document).ready(function() {

	$.get("/_sitemap/links.html", "", storeData, "html");
	
	var loc;
	
	searchBox = $('input.suggest').attr("autocomplete", "off");
	
	searchBox.focus(function () {
		$('body').append('<ul id="suggest"></ul>');
		results = $('#suggest');
	});
	
	searchBox.blur(function () {
		results.remove();
	});
	
	$("#search form").submit(function() {
		loc = results.find('a.active');
		if (loc.length == 1) {
			_gaq.push(['_trackEvent', 'Search', 'Suggest', loc.text()]);
			
			goto(loc.attr("href"));
			return false;	
		} else {
			_gaq.push(['_trackEvent', 'Search', 'Raw', $(this).find("input.text").val()]);
		}		
	});
		
	searchBox.keyup(function (e) {
	
		var selected, anchors, length;
		
		if (e.keyCode == 40) {
			if (results.find('a.active').length != 1) {			
				selected = results.find('a:first');
				selected.addClass('active');
				$(this).attr("value", selected.text());
			} else {
				anchors = results.find('a').get();	
				length = anchors.length;
				for (var i = 0; i < length - 1; i++) {
					if (anchors[i].className == "active") {
						anchors[i].className = "";
						anchors[i+1].className = "active";
						$(this).attr("value", results.find('a.active').text());
						break;
					}
				}
			}
		}
		
		else if (e.keyCode == 38) {			
			if (results.find('a.active').length > 0) {
				anchors = results.find('a').get();	
				length = anchors.length;
				
				if (anchors[0].className == "active") {
					anchors[0].className = "";	
				} else {
					for (var j = 0; j < length; j++) {
						if (anchors[j].className == "active") {
							anchors[j].className = "";
							anchors[j-1].className = "active";
							$(this).attr("value", results.find('a.active').text());						
							break;
						}
					}
				}
			}
		}
		
		else {
			searchText = $(this).attr("value");
			if (searchText.length > 0) {
				filterResults();
			} else {
				results.empty();
				results.css("display", "none");
			}
		}		

	});

});





