jQuery(function($){
  $('form#search input[type=text]').attr('name', '');

  $('form#search').submit(function(){
    $(this).find('input[type=text]').attr('name', 'search_word');

    return true;
  });

  $('#search_text').append('<div class="quick-search"><ul></ul></div>');

  $('#search_text input').keyup(function(eventObject){
    if (38 == eventObject.which) {
      // Key Up
      if (window.result.length) selectPrevKeyword();

      return false;
    }
    if (40 == eventObject.which) {
      // Key Down
      if (window.result.length) selectNextKeyword();

      return false;
    }
    
    window.result = [];    
    if (!this.value.length) {
      $('#search_text .quick-search').hide();
      return;
    }

    for (index in searchIndex) {
      if (window.result.length == 10) break;

      if (0 == searchIndex[index].toLowerCase().indexOf(this.value.toLowerCase())) {
        window.result.push(searchIndex[index]);
      }
    }

    for (index in searchIndex) {
      if (window.result.length == 10) break;

      if (   -1 != searchIndex[index].toLowerCase().indexOf(this.value.toLowerCase()) 
          && -1 == $.inArray(searchIndex[index], window.result)) {
        window.result.push(searchIndex[index]);
      }
    }

    var wrapper = $('#search_text ul');
    wrapper.empty();

    if (window.result.length) {
      for (index in window.result) {
        var li = $('<li>'+window.result[index]+'</li>');
        li.click(function(){
          $('#search_text input').val($(this).text());
          $('form#search').submit();
        });

        li.mouseover(function(){
          $(this).parent().find('.selected').removeClass('selected');
          $(this).addClass('selected');
        });

        wrapper.append(li);
      }
      wrapper.parent().show();
    } else {
      wrapper.parent().hide();
    }
  });
});

function selectNextKeyword() {
  var currentSelected = $('#search_text .quick-search li.selected');
  if (!currentSelected.length) {
    $('#search_text .quick-search li:first-child').addClass('selected');
  } else {
    if (currentSelected.next().length) {
      currentSelected.removeClass('selected');
      currentSelected.next().addClass('selected');
    }
  }
  $('#search_text input').val($('#search_text .quick-search li.selected').text());
}

function selectPrevKeyword() {
  var currentSelected = $('#search_text .quick-search li.selected');
  if (!currentSelected.length) {
    $('#search_text .quick-search li:last-child').addClass('selected');
  } else {
    if (currentSelected.prev().length) {
      currentSelected.removeClass('selected');
      currentSelected.prev().addClass('selected');
    }
  }
  $('#search_text input').val($('#search_text .quick-search li.selected').text());
}


