//Quick-search functionality

$(document).ready(function(){
	
	container = $("#big-search");
	input = $("#big-search input#search_term");
	items = $("#big-search #searchitems");
	default_value = 'Search the documentation';
	spinner = $('#spinner');
	
	input.val(default_value);
	
	input.focus(function(){
		var current_value = $(this).val();
		if (current_value == default_value || current_value == ""){
			input.val('');
		} else {
			items.slideDown('fast');
		}
	});
	
	// Begin searching.
	input.keyup(function(e){
		
		// Disable up/down keys.
		if (e.keyCode !== 38 && e.keyCode !== 40) {
			
			var c = $(this).val();
		
			// Load the results.
			items.load('/_inc/ajax-search.php',{'keywords':c},function(){
								
				if ($(this).is(":hidden")){
					$(this).slideDown('fast');
				}
				
				// Remove blank records.
				$("li.result").each(function(){
					if ($.trim($("a",this).text())=="" ) {
				        $(this).remove();
				    }
				});
				
				// User deletes input.
				if(input.val()==""){
					items.slideUp('fast');
				}

			});
			
		}
 		 
	});
	
	// Add spinner
	spinner.ajaxStart(function() {
  		$(this).fadeIn(100);
	});
	spinner.ajaxStop(function() {
  		$(this).fadeOut(120);
	});
	
	// Setting focus.
	container.keyup(function(e) {
			switch(e.keyCode){
			// Up
			case 38:
				if(input.is(":focus")){
				
		        } else if(items.find('li:first a').is(':focus')) {
		        	input.focus();
		        } else {
		        	items.find('li a:focus').parent().prev().find('a').focus();
		        }
				break;	
			//Down
			case 40:	
				if(input.is(":focus")){
		        	items.find('li:first a').focus();
		        } else {
		        	items.find('li a:focus').parent().next().find('a').focus();
		        }
			}
		});
	
	// Prevent scrolling.
	var ar=new Array(33,34,35,36,37,38,39,40);
	container.keydown(function(e) {
	     var key = e.which;
	      if($.inArray(key,ar) > -1) {
	          e.preventDefault();
	          return false;
	      }
	      return true;
	});

	
	// Leaving the results.
	container.mouseleave(function(){
		items.slideUp('fast',function(){
			input.blur();
		});
		
	});

});
