var LiveSearch;
var LiveSearch = {
	str: '',
	timeout: 1000,
	activeLine: 0,
		
	init: function(){
		if($('main-field-search'))
		{
			$('main-field-search').setProperty('autocomplete','off');
			$('main-field-search').addEvent('keydown', this.onKeyDownSimpleArrows);
			$('main-field-search').addEvent('keyup', this.onKeyUpSimple);
			$('main-field-search').addEvent('blur', this.onBlur);
		}
		if($('main-field-search-advanced'))
		{
			$('main-field-search-advanced').setProperty('autocomplete','off');
			$('main-field-search-advanced').addEvent('keydown', this.onKeyDownAdvancedArrows);
			$('main-field-search-advanced').addEvent('keyup', this.onKeyUpAdvanced);
			$('main-field-search-advanced').addEvent('blur', this.onBlur);
		}
		setInterval('LiveSearch.str = null', 7000);
	},

	onKeyUpSimple: function(event){
		var r = LiveSearch.arrowMovement('live-search-container', event.code);
		if(!r) return false;
		setTimeout("LiveSearch.send('main-field-search', 'live-search-container')", LiveSearch.timeout);
	},
	
	onKeyUpAdvanced: function(event){
		var r = LiveSearch.arrowMovement('live-search-container-advanced', event.code);
		if(!r) return false;
		setTimeout("LiveSearch.send('main-field-search-advanced', 'live-search-container-advanced')", LiveSearch.timeout);
	},
	
	onKeyDownSimpleArrows: function(event){
		if(event.code == 13) // "Enter" button
		{
			if($('live-search-container').hasClass('hidden'))
			{
				return true;
			}
			if($('ls-list')) 
			{
				window.location = $('e' + LiveSearch.activeLine).getElement('a').get('href');
				return false;
			}
		}
	},
	
	onKeyDownAdvancedArrows: function(event){
		if(event.code == 13) // "Enter" button
		{
			if($('live-search-container-advanced').hasClass('hidden'))
			{
				return true;
			}
			if($('ls-list') && LiveSearch.activeLine > 0)
			{
				window.location = $('e' + LiveSearch.activeLine).getElement('a').get('href');
				return false;
			}
		}
	},
	
	arrowMovement: function(container, eventCode)
	{
		if((eventCode == 27) || (eventCode == 37) || (eventCode == 39)) // "Esc", "Left", "Right" buttons
		{
			return false;
		}
		if(eventCode == 40) // down arrow
		{
			if($('ls-list'))
			if(LiveSearch.activeLine < $('ls-list').getElements('li').length)
			{
				$$('.ls-list-item').each(function(el){
				    el.removeClass('active');
				});
				LiveSearch.activeLine = LiveSearch.activeLine + 1;
				$('e' + LiveSearch.activeLine).addClass('active');
			}
			return false;
		}
		if(eventCode == 38) // up arrow
		{
			if($('ls-list'))
			if(LiveSearch.activeLine > 1)
			{
				$$('.ls-list-item').each(function(el){
				    el.removeClass('active');
				});
				LiveSearch.activeLine = LiveSearch.activeLine - 1;
				$('e' + LiveSearch.activeLine).addClass('active');
			}
			return false;
		}
		/*if(eventCode == 13) // "Enter" button
		{
			if($(container).hasClass('hidden'))
			{
				return true;
			}
			if($('ls-list')) 
			{
				window.location = $('e' + LiveSearch.activeLine).getElement('a').get('href');
				return false;
			}
		}*/
		return true;
	},
	
	send: function(element, container){
		var searchText = $(element).value.replace(/(^\s+)|(\s+$)/g, "");
		if(searchText.length < 3) return false;
		if(LiveSearch.str == searchText) return false;
		LiveSearch.str = searchText;
		if(LiveSearch.request != null) LiveSearch.request.cancel();
		LiveSearch.request = new Request.HTML({
			url: '/livesearch',
			data: {t: searchText},
			method: 'post',
			onRequest: function(){				
		        if($(container))
				{
		        	$(container).set('html', 'Searching...');
		        	$(container).removeClass('hidden');
		        	LiveSearch.activeLine = 0;
				}
		    },
			onSuccess: function(r,c,d){
				if($(container))
				{
					$(container).removeClass('hidden');
					if(d == '') d = 'No results'
					$(container).set('html', d);
					$(element).focus();
					LiveSearch.request = null;
				}
			},
			onComplete: function(){
				
			}
		}).send('phrase=' . searchText);	
	},
	
	onBlur: function(event){
		var delayBlur = function()
		{
			if($('live-search-container-advanced')) $('live-search-container-advanced').addClass('hidden');
			if($('live-search-container')) $('live-search-container').addClass('hidden');
		};
		setTimeout(delayBlur, 200);
	}
};

window.addEvent('domready', function() {
	LiveSearch.init();
});
