/* Add an ajax search to the main site search box */

if (Drupal.jsEnabled) {
  $(document).ready(function(){
    $("#quick_search_pin").append('<div id="quick_search_results"></div>');
    $("#quick_search_results").hide();
	var ajax_submitting = false;
    var current_selected = -1;
    
    $("#search-form").submit(function(){
        if (ajax_submitting) {
          return false;
        } else {
          return true;
        }
      });
    
    
    var load_search_results = function(last_val){
      var current_val = $("#edit-keys").val();
      if (current_val == last_val) {
        $("#quick_search_results").load( "/whatson/ajax_quick_search/" + $("#edit-keys").val(), {}, function(){$("#quick_search_results").show();});
      }
    }

    $("#edit-keys").keyup(function(e){
      if ( $('#edit-keys').val().length > 1) {
        // get keyCode (window.event is for IE)
        var keyCode = e.keyCode || window.event.keyCode;

    		// check an treat up and down arrows
    		if(updownArrow(keyCode)){
    			return;
    		}
        
        if (keyCode == 27) {
          $("#quick_search_results").empty();
          current_selected = -1;
  	      $("#quick_search_results").hide();
  	      exit();
        }
     
        var last_val = $("#edit-keys").val();
        setTimeout(function () {load_search_results(last_val)}, 500);
      } else {
        $("#quick_search_results").hide();
      }
	  });
	  
	  $("#edit-keys").keydown(function(e){
	    var keyCode = e.keyCode || window.event.keyCode;
	    if (keyCode == 13) {
	      jumpFromList();
	    }
	  });
	  
	  function jumpFromList() {
	    if (current_selected >= 0) {
	      var url = $("#result_link_" + current_selected).attr("href");
  	    window.location = url;
  	    ajax_submitting = true;
  	    exit();
	    } else {
	      // the user hasn't selected an item from the drop-down list so we just need to submit the standard search form normally
	      return false;
	    }
	  }
	  
	  function updownArrow(keyCode) {
    	if(keyCode == 40 || keyCode == 38) {
    	  num_results = $("#quick_search_results").children().size(); 
    	  previous_selected = current_selected;
    		if(keyCode == 38){ // keyUp
    			if(current_selected == 0 || current_selected == -1){
    				current_selected = current_selected;
    			}else{
    				current_selected--;
    			}
    		} else { // keyDown
    			if(current_selected == num_results - 1){
    				current_selected = num_results - 1;
    			}else {
    				current_selected++;
    			}
    		}
        $("#result_" + previous_selected).removeClass("selected");
        $("#result_" + current_selected).addClass("selected");
    		return true;
    	}
    }

  });
}
