/**
 * Required jQuery
 */

var SearchSuggestor = [];

/**
 * Initalize suggestor
 * @param element jquery selector of text input for wich suggestor is initialized
 */
SearchSuggestor.init = function(element) {
	SearchSuggestor.searchInput = $(element);
	SearchSuggestor.searchInput.attr('autocomplete','off');
	SearchSuggestor.searchInput.after("<div id=\"suggestBox\"></div>");
	SearchSuggestor.suggestBox = $("#suggestBox");
	SearchSuggestor.suggestBox.css('z-index','1000');
	SearchSuggestor.suggestBox.css('left','0px');
	SearchSuggestor.suggestBox.css('top','36px');
	SearchSuggestor.isData = false;
	SearchSuggestor.searchInputHasFocus = false;
	SearchSuggestor.suggestBoxHasFocus = false;



	SearchSuggestor.searchInput.keyup(function(){
		SearchSuggestor.handleSuggestBox();
		clearTimeout(SearchSuggestor.timer);
		SearchSuggestor.timer = setTimeout("SearchSuggestor.loadData()",500);
	});

	SearchSuggestor.searchInput.focusout(function(){
		SearchSuggestor.searchInputHasFocus = false;
		setTimeout('SearchSuggestor.handleSuggestBox()',200);
	})

	SearchSuggestor.searchInput.focus(function(){
		SearchSuggestor.searchInputHasFocus = true;
		setTimeout('SearchSuggestor.handleSuggestBox()',200);
	})

	SearchSuggestor.suggestBox.click(function(event){
		SearchSuggestor.suggestBoxHasFocus = true;
		event.stopPropagation();
		setTimeout('SearchSuggestor.handleSuggestBox()',200);
	})

	$(document).click(function(){
		SearchSuggestor.suggestBoxHasFocus = false;
		setTimeout('SearchSuggestor.handleSuggestBox()',200);
	})
}

/**
 * Handle showing or hiding of suggestbox according to data and focus data
 */
SearchSuggestor.handleSuggestBox = function() {
	if (SearchSuggestor.searchInput.val().length >= 3 && SearchSuggestor.isData && (SearchSuggestor.searchInputHasFocus || SearchSuggestor.suggestBoxHasFocus) ) {
		SearchSuggestor.suggestBox.show();
	} else {
		SearchSuggestor.suggestBox.hide();
	}
}

/**
 * Loads data into suggest box
 */
SearchSuggestor.loadData = 	function() {
	$.ajax({
		url: "/cms/modules/vyhledavani/ajaxSearchSuggestion.php",
		beforeSend: function() {
			SearchSuggestor.searchInput.addClass('loading');
		},
		success: function(data) {
			SearchSuggestor.suggestBox.html(data);
			SearchSuggestor.searchInput.removeClass('loading');
			SearchSuggestor.isData = true;
			SearchSuggestor.handleSuggestBox();
		},
		data: ({searchString : SearchSuggestor.searchInput.val()})
      });
}
