window.addEvent('load', function() {
	var searchValue = '';

	$('simpleform_q').addEvent('keyup', function(event, force) {
		var 
			value = this.value,
			self = this;

		if((value != searchValue && event.key != 'enter') || force) {
			searchValue = value;
			
			if(value && value.length >= 3) {
				new Request.JSON({
					url: _WEB_HOME_ + 'ajax.php',
					data: {
						action: 'get_suggests',
						text: value
					},
					onSuccess: function(response) {
						$$('#search_prompt').dispose();
						
						if(response.length) {
							var prompt = new Element('ul', {
								id: 'search_prompt',
								styles: {
									top: self.getPosition().y + self.getHeight(),
									left: self.getPosition().x
								}
							}).inject(document.body);
							
							for(var i = 0; i < response.length; i++) new Element('li', {
								html: response[i]
							}).addEvent('mouseover', function() {
								$$('#search_prompt li').removeClass('hover');
								this.addClass('hover');
							}).addEvent('mouseout', function() {
								this.removeClass('hover');
							}).addEvent('click', function() {
								self.value = this.get('text');
								self.fireEvent('focus');
								$$("#search_prompt").dispose();
							}).inject(prompt);
						}
					}
				}).send();
			} else $$('#search_prompt').dispose();
		}
	}).addEvent('keydown', function(event) {
		var 
			children = $$('#search_prompt li'),
			hover = children.filter('.hover'),
			next = hover.getNext(),
			prev = hover.getPrevious(),
			self = this;

		if(children.length) {
			if(hover.length) {
				if(event.key == 'down' && next[0]) {
					hover.removeClass('hover');
					next.addClass('hover');
				} else if(event.key == 'up' && prev[0]) {
					hover.removeClass('hover');
					prev.addClass('hover');
				}
				
				if(event.key == 'enter' || event.key == 'right') {
					self.value = $$('#search_prompt .hover').get('text');
				}
				
				if(event.key == 'enter') {
					event.stop();
					$$('#search_prompt').dispose();
				}
				
				if(event.key == 'left') {
					event.stop()
					children.removeClass('hover');
				}
			} else if(event.key == 'down') { 
				$(children[0]).addClass('hover');
			}

			if(event.key == 'down' || event.key == 'up' || event.key == 'esc') {
				event.stop();
			}
			
			if(event.key == 'esc') {
				$$('#search_prompt').dispose();
			}
		} else if(event.key == 'down') {
			searchValue = '';
			self.fireEvent('keyup', true);
		}
	});
});
