(function($) {

	$.sdAjaxSearch = {
	
		plugin: "sd.AjaxSearch",
		author: "SySCo|DeSIGn",
		version: "1.0",
		defaults: {
			maxitems: 10,
			mininput: 3,
			cols: 3
		},

		init: function(options) {
		return this.each(function() {

			this.options = {};
			$.extend (this.options, $.sdAjaxSearch.defaults);
			$.extend (this.options, options);
			
			this.results = false;		
			var e = this;
			
			$(e).find('#keywords').each(function() {
			
				$(this).attr("autocomplete","off");
			
				$(this).bind('keyup',function() {
					var value = $.trim($(this).val());
					if ((value.length>=e.options.mininput)) {
						if (e.results==false) {
							$('#sdajaxsearch_results').css('display','block');
							$('#sdajaxsearch_results_bg').fadeIn('slow',function() {
								e.results = true;
							});
						}
						$(e).sdAjaxSearchLoad(value);
					} else {
						$('#sdajaxsearch_results').css('display','none');
						$('#sdajaxsearch_results_loader').removeClass('loading');
						$('#sdajaxsearch_results_bg').fadeOut('slow',function() {
							e.results = false;
						});
					}
				});
			
			});
			
		});
		}, // init
		
		load: function(value) {
		
			var sdAjaxSearch = this;
			var e = $(sdAjaxSearch).get(0);
		
			$('#sdajaxsearch_results_loader').addClass('loading');
			$.ajax({
				type: "GET",
				url: 'sdajaxsearch.php',
				data: '&keywords='+value+'&maxitems='+e.options.maxitems+'&cols='+e.options.cols,
				success: function(html) {
					$('#sdajaxsearch_results_loader').removeClass('loading');
					$('#sdajaxsearch_results').html(html);
				}
				});
				
		} // load
	
	
	} // sdAjaxSearch
	
	$.fn.sdAjaxSearch = $.sdAjaxSearch.init;
	$.fn.sdAjaxSearchLoad = $.sdAjaxSearch.load;

})(jQuery);

$(window).load(function() {

	$('#sdajaxsearch').sdAjaxSearch({
		maxitems: 6
	});

	$('#sdajaxsearch_results_bg').click(function() {
		$('#sdajaxsearch_results').css('display','none');
		$('#sdajaxsearch_results_loader').removeClass('loading');
		$(this).fadeOut('slow',function() {
			$('#sdajaxsearch').each(function() {
				$(this).get(0).results = false;
			});
		});
	
	});
	
});
