anchor.diff:  
     function bindEvents() {
       var self = this;
  -    this.input.keyup(function() {
  +    this.input.keyup(function(e) {
  +      if (self.input.val() == self.last_value) return;
  +      self.last_value = self.input.val();
  +
         // if input is task num
         if (parseInt(self.input.val()) > 0) {
           show.call(self, { term: self.input.val()});
         } else if (self.input.val().length < self.minLength) {
  -        $("img." + self.helperClass + "_spinner").remove();
  -        $("." + self.helperClass).remove();
  +        $(self.spinnerSelector).remove();
  +        $(self.helperSelector).remove();
           return;
         } else {
           show.call(self, { term: self.input.val()});
         }
       }).focusin(function() {
  -      if ($("." + self.helperClass).length > 0) return;
  +      if ($(self.helperSelector).length > 0) return;
   
         self.input.animate({width:"250px"}, 500, function() {
           if (self.input.val().length < self.minLength) return;
  
positive.code:       if (! res.success) return;
        if (self.input.val() != data.term) return;
  
        $("." + self.helperClass).remove();
  
        // hide spinner
        $("img." + self.helperClass + "_spinner").remove();
  
        // show helper
        var helper = $(res.html);
  
negative.code:       });
      }).blur(function() {
        // if the dropdown is clicked
        if ($(self.helperSelector).length > 0) return;
        self.input.animate({width:"150px"}, 500);
      })
  
      $("body").click(function(e){
        if (e.target == self.input[0]) return;
        if ( $(self.helperSelector).has(e.target).length > 0 || $(self.helperSelector)[0] == e.target) return;
        $(self.helperSelector).remove();
        self.input.animate({width:"150px"}, 500);
      });
    }
  