var SearchBoxClear = false;
var SearchSuggestion = null;
var LastSearch = "";
var SuggestionSelected = null;

var SetSuggestionSelected = function(el){
	if(!$chk(el)){
		ClearSuggestionSelected(el);
		return ;
	}
	if($chk(SuggestionSelected))
		ClearSuggestionSelected(SuggestionSelected);
	el.setStyles({'border':'1px solid #039', 'background':'#eef'});
	SuggestionSelected=el;
};
var ClearSuggestionSelected = function(el){
	if($chk(el))
		el.setStyles({'border':'1px solid #fff', 'background':'transparent'});
	if($chk(SuggestionSelected))
		SuggestionSelected.setStyles({'border':'1px solid #fff', 'background':'transparent'});
	SuggestionSelected=null;
};

window.addEvent('domready', function(e){
	$('InputSearchField').addEvents({
		'focus': function(ev){
			if(SearchBoxClear) return ;
			this.set('value','');
			SearchBoxClear = true;
		}, 'keyup': function(ev){

			if($('DivHeaderSearchSuggestion').getStyle('display')=='block'){

				if(ev.key=='up'){

					if($chk(SuggestionSelected)){
						var PreviousEntry = SuggestionSelected.getPrevious('.DivHSSEntry');
						if($chk(PreviousEntry))
							SetSuggestionSelected(PreviousEntry);
						else
							SetSuggestionSelected($('DivHeaderSearchSuggestion').getLast());
					} else 
						SetSuggestionSelected($('DivHeaderSearchSuggestion').getLast());

				} else if(ev.key=='down'){

					if($chk(SuggestionSelected)){
						var NextEntry = SuggestionSelected.getNext('.DivHSSEntry');
						if($chk(NextEntry))
							SetSuggestionSelected(NextEntry);
						else
							SetSuggestionSelected($('DivHeaderSearchSuggestion').getFirst());
					} else 
						SetSuggestionSelected($('DivHeaderSearchSuggestion').getFirst());

				} else if(ev.key=='enter'){
					if($chk(SuggestionSelected))
						$('InputSearchField').set('value', SuggestionSelected.get('text'));
					ClearSuggestionSelected(null);
					$('DivHeaderSearchSuggestion').setStyle('display', 'none');
					return ;
				}

			}

			var SearchValue = this.get('value');
			if(SearchValue.length==0){
				$('DivHeaderSearchSuggestion').setStyle('display', 'none');
				return ;
			}
			if(SearchValue==LastSearch){
				return ;
			}

			SuggestionSelected = null;
			LastSearch = SearchValue;

			if($chk(SearchSuggestion))
				SearchSuggestion.cancel();

			SearchSuggestion = new Request.HTML({
				method: 'get',
				url: '/ajax_search_suggestion.php?loja='+escape(SearchValue),
				onSuccess: function(htmltree){
					if(htmltree.length<=0)
						$('DivHeaderSearchSuggestion').setStyle('display', 'none');
					else {

						$('DivHeaderSearchSuggestion').empty();
						$('DivHeaderSearchSuggestion').setStyle('display', 'block');
						$('DivHeaderSearchSuggestion').adopt(htmltree);

						$$('#DivHeaderSearchSuggestion .DivHSSEntry').each(function(el){
							el.addEvent('mouseenter', function(){SetSuggestionSelected(this);} );
							el.addEvent('mouseleave', function(){ClearSuggestionSelected(this);} );
							el.addEvent('click', function(){
								$('InputSearchField').set('value', this.get('text'));
								$('DivHeaderSearchSuggestion').setStyle('display', 'none');
							});
						});

						SetSuggestionSelected($('DivHeaderSearchSuggestion').getFirst());

						SearchSuggestion = null;

					}
				}
			}).send();
		}, 'keydown': function(ev){
			if((ev.key=='enter')&&($('DivHeaderSearchSuggestion').getStyle('display')=='block'))
				StopBubblingEvent(ev);
		}
	});
});
