
  var $currText = null;
  var data = null;
  var $autocomplete = null;
  var selectedItem = null;
  $('<ul class="autocomplete" ></ul>').hide().insertAfter('#keyword');

  var setSelectedItem = function(item) {
    selectedItem = item;

    if (selectedItem === null) {
      $autocomplete.hide();
      return;
    }
    
    if (selectedItem < 0) {
      selectedItem = $autocomplete.find('li').length - 1;
    }
    if (selectedItem >= $autocomplete.find('li').length) {
      selectedItem = 0;
    }
    $autocomplete.find('li').removeClass('selected').eq(selectedItem).addClass('selected');
    $autocomplete.show();
  };

  var populateSearchField = function() {
    window.location.href = '/product-'+ data[selectedItem]['id'] + '.shtml';
    prev = '';
    setSelectedItem(null);
  };

  var prev = "";
  $('#keyword').attr('autocomplete', 'off').focus(function() {
	  $currText = $(this);
	  $autocomplete = $(this).next();
  	}).keyup(function(event) {
    if ((event.keyCode > 40 || event.keyCode == 8 || event.keyCode == 32)) {
      if ($.trim($(this).val())) {
      	if (prev != $(this).val()) {
	      	prev = $(this).val();
	      	$.ajax({
		      url: '/goodsAjax!' + this.id + '.action',
		      data: {'pinyin': encodeURIComponent($currText.val())},
		      dataType: 'json',
		      type: 'POST',
		      cache: false,
		      success: function(json) {
		        data = json.data;
		        if (data.length) {
		          $autocomplete.empty();
		          $.each(json.data, function(index, term) {
		            $('<li></li>').text(term['name']).appendTo($autocomplete).mouseover(function() {
		              setSelectedItem(index);
		            }).click(populateSearchField);
		          });
		          
		          var elt = document.getElementById("keyword");
	        		var x = elt.offsetLeft
	        		var y = elt.offsetTop
	        		while (elt = elt.offsetParent) {
	        			x += elt.offsetLeft
	        			y += elt.offsetTop
	        		}
	        		$autocomplete.css("left",x-5);
	        		$autocomplete.css("top",y+20);
		          	$autocomplete.show();
		        }
		        else {
		          setSelectedItem(null);
		        }
		      }
		    });
        } else {
        	return;
        }
      } else {
      	prev = '';
      	setSelectedItem(null);
      }
    }
    else if (event.keyCode == 38) {
    	if (selectedItem === null) {
    		selectedItem = $autocomplete.find('li').length;
    	}
      setSelectedItem(selectedItem - 1);
      event.preventDefault();
    }
    else if (event.keyCode == 40) {
    	if (selectedItem === null) {
    		selectedItem = -1;
    	}
      setSelectedItem(selectedItem + 1);
      event.preventDefault();
    }
    else if (event.keyCode == 27 && selectedItem !== null) {
      setSelectedItem(null);
    } else {
    	setSelectedItem(null);
    }
  }).keypress(function(event) {
    if (event.keyCode == 13) {
    	if (selectedItem !== null) {
    		populateSearchField();
      	event.preventDefault();
    	}
    }
  }).blur(function(event) {
    setTimeout(function() {
      setSelectedItem(null);
    }, 250);
  });
