/*
* search.js
* Amiel Martin
* 2009-08-22
*
* autocomplete excellent search javascripts
*/

(function($) {
	$.fn.sexySearch = function(options) {
		var opts = (typeof options === "undefined") ? $.fn.sexySearch.defaults : $.extend({}, $.fn.sexySearch.defaults, options);

		return this.focus(function() {
			var $this = $(this);

			if ($this.data('autocomplete_setup')) return;
			$this.data('autocomplete_setup', true);

			$this.autocomplete([], $.extend({}, opts.autocomplete_defaults, $.fn.sexySearch.autocomplete_defaults)).result(opts.onselect);

			if (typeof window.autocomplete_cache === "undefined") {
				window.autocomplete_cache = [];

				$.getJSON(Base.search_all_path, function(beers) {
					window.autocomplete_cache = beers;
					$this.setOptions({ data: beers });
				});
			} else {
				$this.setOptions({ data: window.autocomplete_cache });
			}

		});

	};

	$.fn.sexySearch.defaults = {
		onselect: function(e, result) {}
	};

	$.fn.sexySearch.autocomplete_defaults = {
		matchSubset: true,
		matchContains: true,
		cacheLength: 100,

		formatItem: function(row, i, max) {
			var image = '<img src="' + row.image + '" />',
			beer = '<span class="beer">' + row.beer + '</span>',
			brewery = '<span class="brewery">' + row.brewery + '</span>',
			div = '<div>' + beer + brewery + '</div>';
			return image + div;
		},
		formatMatch: function(row, i, max) {
			return [ row.beer, row.brewery, row.style, row.tags.join(',') ].join(',');
		},
		formatResult: function(row) {
			return row.beer;
		}
	};
})(jQuery);

