/*
	Name: LiveSearch
	Version: 1.0.2
	Created: 2009-08-04 @ 14:08
	Modified: 2009-11-22 @ 10:38
	Author: Luke Lanchester
	Notes: Based on tutorials found online, mainly http://xcodetuts.com/javascript-ajax/building-a-wordpress-website-live-ajax-search-using-jquery/
*/

$(document.body).click(function(event) {
	if(!$(event.target).parents("#live-search-results").length) {
		jQuery("#live-search-results").slideUp(300);
	}
});
jQuery.fn.livesearch = function(options) {
	settings = jQuery.extend({
		url: "/?s=",
		delay: 200
	}, options);
	jQuery.ajaxSetup({
        error: onjQueryError,
        timeout: 10000
    });
	function onjQueryError(XMLHttpRequest, textStatus, errorThrown) { jQuery("#live-search-spinner").fadeOut(); }
	return this.each(function() {
		var searchInput		= jQuery(this);
		searchInput.before('<span id="live-search-spinner" style="display:none;">&nbsp;</span>');
		var searchSpinner	= jQuery("#live-search-spinner");
		searchInput.after('<ul id="live-search-results" style="display:none;"></ul>');
		var searchResults	= jQuery("#live-search-results");		
		var lastVal	= '';
		searchInput.keyup(function() {
			if(searchInput.val() != lastVal) {
				if (searchInput.val() == '') {
					searchResults.slideUp(300);
				} else {
					searchSpinner.fadeIn("fast");
					var q = searchInput.val().replace('&','%26');
					if(this.timer) { clearTimeout(this.timer); }
					this.timer = setTimeout(function() {
						jQuery.get(settings.url+q, function(data) {
							searchSpinner.fadeOut("fast");
							searchResults.html(data).slideDown(300);
						});
						lastVal = searchInput.val();
					}, settings.delay);
				}
			}
		}); // end on key up
	}); // end each
}; // end func: livesearch