// JavaScript Document
(function($){
	$.fn.extend({
		wonderSearch: function(options) {
			var defaults = {
				defaultText: 'more results >',
				defaultLink: '/search.php?search_string='
			};  

			var options = $.extend(defaults, options);
			
			var selected_item = -1;
			
			return this.each(function() {
				var o = options;  
				var obj = $(this);
				var timerReference;

				obj.keyup(function(event){
					if(event.keyCode!=38 && event.keyCode!=40 && event.keyCode!=13){
						var doSearch_delayedExecution = function() { doSearch(obj,o); };
						clearTimeout(timerReference);
						timerReference = setTimeout(doSearch_delayedExecution,500);
						if(obj.val()=='' || obj.val()=='search...'){
							obj.css('color','#999');
						}else{
							obj.css('color','#333');
						}
					}else{ //navigate the results using keyboard
						if(event.keyCode==38 && selected_item>0){
							selected_item--;
							selectItem(selected_item);
						}else if(event.keyCode==40 && selected_item<7){
							selected_item++;
							selectItem(selected_item);
						}else if(event.keyCode==13){
							if(canSubmit()) $('#frm_hd_search').submit();
							else getSelectedItem().click();

						}
					}
				});
				obj.parent().append('<div class="clearer"></div>');
				obj.parent().append('<div class="wsDiv_searchBox"></div>');
				$('.wsDiv_searchBox').mouseleave(function(){
					$(this).hide();
				});
			});
		}
	});
	
	function doSearch(o,opt){
		if(o.val()!=''){
			$('.wsDiv_searchBox').css('width',o.parent().outerWidth()-2+'px');
			$('.wsDiv_searchBox').html('<div style="text-align:center; padding:5px">'+img_loader(36)+'</div>');
			$('.wsDiv_searchBox').show();
			$.ajax({
				type: "GET",
				url: "/ax_wondersearch_search.php",
				cache: false,
				data: "q=" + o.val() + "&defaulttext=" + opt.defaultText + "&defaultlink=" + opt.defaultLink + "&box_width=" + $('.wsDiv_searchBox').css('width'),
				success: function(msg){
					if(msg!='error'){
						if(msg!='noresults'){
							$('.wsDiv_searchBox').html(msg);
							selected_item = -1 ;
						}else{
							showMessage('No results',1000);
						}
					}else{
						showMessage('An error has occured',2000);
					}
				}
			});
		}
	}
	
	function canSubmit(){
		if(selected_item!=-1) return true;
		else return false;
	}
	
	function showMessage(msg,delay){
		$('.wsDiv_searchBox').css('height','');
		$('.wsDiv_searchBox').html('<div style="padding:5px">'+msg+'</div>');
		var hideMessage = function() { $('.wsDiv_searchBox').hide(100); };
		setTimeout(hideMessage,delay);
	}
	
	function getSelectedItem(){
		return $('.wsDiv_searchItem_hover');
	}
	
	function unselectAllItems(){
		$('.wsDiv_searchItem_hover').addClass('wsDiv_searchItem');
		$('.wsDiv_searchItem_hover').removeClass('wsDiv_searchItem_hover');
	}
	
	function selectItem(id){
		unselectAllItems();
		$('#wsDiv_searchItem'+id).removeClass('wsDiv_searchItem');
		$('#wsDiv_searchItem'+id).addClass('wsDiv_searchItem_hover');
	}
})(jQuery);
