/* ----------------------------------------------------------------------------	
TYPEAHEAD
Gets the searched value and displays dropdown list.
Clears default text from search input field when user initially focuses
on the input field box, replaces it if no text is entered.
Dependencies: jQuery 1.3.1+
*/

jQuery(function() {
	if(jQuery("#searchbox").length > 0) {
		oSiteSearchBox = new typeaheadControl();
	}
});

function typeaheadControl() {
	// private variables
	var activeState = false;
	var searchBox = jQuery("#searchbox");
	var searchButton = jQuery("#searchbox button");
	//var resultsBox = jQuery("#siteSearchResultsBox");
	var resultsHasFocus = false;
	var defaultText = (jQuery.trim((searchBox).attr("value")).length == 0) ? "Search Loon Mountain Rustics" : searchBox.attr("value");
	var ignoreKeyCodes = new Array(0,7,9,31,33,39,40,45,111,122);
	var ignoreKeyCodesCheck = "";
	for(var i = 0; i < ignoreKeyCodes.length; i += 2) {
		ignoreKeyCodesCheck += "(iKeyCode >= " + ignoreKeyCodes[i] + " && iKeyCode <= " + ignoreKeyCodes[i + 1] + ")";
		ignoreKeyCodesCheck += (i == ignoreKeyCodes.length - 2) ? "" : " || ";
	}
	
	// private functions
	var init = function() {
		searchBox.attr("value", defaultText);

		searchBox.focus(function() {
			if(activeState == false) {
				searchBox.attr("value", "");
				searchBox.addClass("active");
				activeState = true;
			} else {
				//resultsBox.css("display", "block");
			}
		});
		searchBox.blur(function() {
			var trimmed = $.trim((searchBox).attr("value"));
			if(trimmed.length == 0 || trimmed == defaultText) {
				searchBox.attr("value", defaultText);
				searchBox.removeClass("active");
				activeState = false;
				//resultsBox.css("display", "none");
			}
		});
		searchButton.click(function(e) {
			var trimmed = $.trim((searchBox).attr("value"));
			if(activeState == false || trimmed.length == 0) {
				e.preventDefault();
			}
		});
		jQuery("#siteSearch form").submit(function(e) {
			var trimmed = jQuery.trim((searchBox).attr("value"));
			if(activeState == false || trimmed.length == 0) {
				e.preventDefault();
			}
		});							  
	};	
	
	// init on creation
	init();
	
}
