/* $Id$ */

/**
 * @link	http://shippingkit.com/
 * @copyright	2010 ShippingKit Group. All Rights Reserved.
 */

jQuery.extend({
	autoSuggestMinString: 2,
	autoSuggestSearchTimer: '',
	autoSuggestSearchTimeout: 500,
	autoSuggestFadeOutTimeout: 500
});

$(document).bind('keyup', 'C', function(e) {
	return fn_autosuggest_event(e); 
});

jQuery(document).ready(function($){
	var input = $('.top-search input[name="q"]');
	if (!input)
		return;

	$('div.top-search').append('<ul id="autosuggest"></ul>');

	var offset_search = $('div.top-search input.search-input').offset();
	var height_search = $('div.top-search').height();
	$('ul#autosuggest').css({
	    left: offset_search.left,
		top: offset_search.top + height_search
	  });
		
	input.attr('autocomplete', 'off');

}); 



function fn_autosuggest_event(e){
	var input = $('.top-search input[name="q"]');
	control_buttons = {13: 'enter', 27: 'esc', 38: 'up' ,40: 'down'};
	var char_code = (e.which) ? e.which : e.keyCode;
	if (typeof(control_buttons[char_code]) != 'undefined') {
		if (char_code == 13) {
			row = $('ul#autosuggest li.autosuggest-selected a');
			if (row.length > 0){
				var str = row.text();
				$('input.search-input').attr("value",$.trim(str));
				jQuery.redirect(row.attr("href"));
			}
		} else if (char_code == 27) {
			$('#autosuggest').fadeOut();
		} else if (char_code == 38 || char_code == 40) {
	
			row = $('ul#autosuggest li.autosuggest-selected');
			
			if (row.length > 0) {
				if (char_code == 38) {
					new_row = row.prev();
					if (!(new_row.length > 0)) new_row = $('ul#autosuggest li:last');
				} else {
					new_row = row.next();
					if (!(new_row.length > 0)) new_row = $('ul#autosuggest li:first');
				}
			} else {
				if (char_code == 38) {
					direction = ':last';
				} else {
					direction = ':first';
				}	
				new_row = $('ul#autosuggest li' + direction);
			}
		$('ul#autosuggest li.autosuggest-selected').removeClass('autosuggest-selected');
		new_row.addClass('autosuggest-selected');
		}

	} else {
		if ($.autoSuggestSearchTimer)
			clearTimeout($.autoSuggestSearchTimer);

		if (input.val().length < $.autoSuggestMinString) {
			$('#autosuggest').fadeOut();
			return;
		}
		
		$.autoSuggestSearchTimer = setTimeout(function(){
				var frm = $('.top-search form[name="search_form"]');
				if (!frm)
					return;

				var params = {};
				frm.find("input[@checked], input[@type='text'], input[@type='hidden'], option[@selected]").filter(":enabled").each(function() { params[this.name || this.parentNode.name ] = this.value; });
				params['dispatch'] = 'products.search';
				params['caller'] = 'autosuggest';

				$.post(index_script, params, function(data){
					if (data.length == 0) {
						$('#autosuggest').fadeOut();
						return;
					}
					$('#autosuggest').html(data).fadeIn();
					$("ul#autosuggest li").mouseover(function(){
						$('ul#autosuggest li.autosuggest-selected').removeClass('autosuggest-selected');
						$(this).addClass('autosuggest-selected');
					});
				});
			}, 
			$.autoSuggestSearchTimeout
		);

		input.blur(function(){
		setTimeout(function(){ $('#autosuggest').fadeOut(); }, $.autoSuggestFadeOutTimeout);
	});
	}
}
