var Suggest = new Class({
	
	enabled : true,
	request : null,
	suggest : null,
		
    initialize : function(){
		// react on input change
		$('suggestions_searchbox').getElement('input').addEvent('keyup', function(event){
			term = $('suggestions_searchbox').getElement('input').value;
			this.loadSuggestions(term);
		}.bind(this));	
    },
	
	getRequest : function(){
		if(this.request == null){
			this.request = new Request.JSON({
				url : './index.php5?page=search_suggest',
				method : 'get',
				autoCancel : true,
				headers : {
					'X-Request': 'JSON'
				},
				onComplete : this.sugesstions.bind(this)
			});
		}
		return this.request;
	},
	
	loadSuggestions : function(term){
		// enabled check
		if(!this.enabled) return;
		
		// request
		var request = this.getRequest();
		request.send("keyword=" + escape(term));
	},
	
	sugesstions : function(suggest){
		// enabled check
		if(!this.enabled) return;
		
		// set up
		this.suggest = suggest;
		$('suggestions_div').setStyle('visibility', 'visible');
		$('suggestions_body').empty();

		// create table		
		this.suggest[1].each(function(item, index){
			var row = new Element('tr', {'class' : 'suggestions_row'});
			var item = (item.length > 20) ? item.substr(0, 20) + '...' : item;
			new Element('td', {'class' : 'suggestions_keyword'}).set('html', item).inject(row);
			new Element('td', {'class' : 'suggestions_result'}).set('html', this.suggest[2][index]).inject(row);
			row.inject($('suggestions_body'));
			// add click event to rows
			row.addEvent('click', function(event){
				$$('.suggestions_row').each(function(item, index){
					if(event.target.parentNode == item){
						document.location = this.suggest[3][index];
					}
				}, this);
			}.bind(this));
		}, this);
		
		// add close (only if items avaible)
		if($$('.suggestions_row').length == 0) return;
		var row = new Element('tr');
		new Element('td').inject(row);
		new Element('td', {'class' : 'suggestions_close'}).set('html', 'schlie&szlig;en').inject(row);
		row.inject($('suggestions_body'));
		// add click event to close
		row.addEvent('click', function(event){
			this.enabled = false;
			$('suggestions_div').setStyle('visibility', 'hidden');
		}.bind(this));
	}
});

window.addEvent('domready', function() {
    suggestor = new Suggest();
});

