if (jQuery) {
    (function($) {
        var TABLE =9 ;
        var ENTER = 13;
        var ESCAPE = 27;
        var UP = 38;
        var DOWN = 40;
        var NUMPAD_ENTER=108;
        $.fn.keyUpDown = function() {
            return this.each(function() {
                var obj = $(this);
                var itemPanel = obj.find("ul:first");
                var text = obj.find("input[type=text]");
                text.bind("keydown", function(event) {
                    var selectedItem = obj.find(".hover");
                    var items = obj.find("ul li");
                    switch (event.keyCode) {
                        case TABLE:
                        case ENTER:
                        case NUMPAD_ENTER:
                            //itemPanel.toggle();
                            if (itemPanel.is(":visible")){
                                itemPanel.hide();
                               selectedItem.trigger("click");
                                text.val(selectedItem.eq(0).text());
                                if(TABLE!=event.keyCode)
                                event.preventDefault();
                            }
                        break;
                        case ESCAPE:
                            itemPanel.hide();
                        break;
                        case UP:
                            if (!itemPanel.is(":visible")) 
                                itemPanel.show();
                            else {
                                items.removeClass("hover");
                                if (selectedItem.length && selectedItem.prev() && selectedItem.prev().text()) {
                                    var previous = selectedItem.prev().addClass("hover");
                                    var height = previous.outerHeight(true);
                                    if (previous.offset().top - itemPanel.offset().top + height <= itemPanel.outerHeight(true)) {
                                        itemPanel.scrollTop(itemPanel.scrollTop() - height);
                                    }
                                }
                                else {
                                    itemPanel.scrollTop( items.eq(items.length - 1).addClass("hover").offset().top - itemPanel.offset().top);
                                }
                            }
                            event.preventDefault();
                        break;
                        case DOWN:
                            if (!itemPanel.is(":visible")) 
                                itemPanel.show();
                            else {
                                items.removeClass("hover");
                                if (selectedItem.length && selectedItem.next() && selectedItem.next().text()) {
                                    var next = selectedItem.eq(0).next();
                                    var height = next.outerHeight(true);
                                    next.addClass("hover");
                                    if (next.offset().top - itemPanel.offset().top + height >= itemPanel.outerHeight(true)) {
                                        itemPanel.scrollTop(itemPanel.scrollTop() + height);
                                    }
                                }
                                else {
                                    items.eq(0).addClass("hover");
                                    itemPanel.scrollTop(0);
                                }
                            }
                            event.preventDefault();
                    break;
                    }
                });
            })
        }
    })(jQuery);

    /**
     * quality suppliers
     */
    (function($){
      $.fn.fadeTitle = function(){
        var fadeAnimate = function(config){
            var me =this;
            this._init = function(){
              this.showTime=2000;
              this.container = config.container.find("ul");
              this.items = this.container.find("li");
              this.firstItem = this.items.eq(0);
              this.firstText = this.firstItem.find("span");
              this.animated = false;
              this.hover = false;
              this._bindEvent();
              this._initIntent();
              this._active();
            };
            this._initIntent =  function(){
               this.container.find("span[intent]").hover(function(){
                   $(this).addClass("hover");
               },function(){$(this).removeClass("hover");});
              this.container.find("span[intent]").click(function(){
                  window.open($(this).attr("intent"));
              });
            };
            this._active = function(){
              this.animated = false;
              var copyItem = this.firstItem.clone(true).appendTo(this.container);
              me.firstItem.show("fast",function(){
                    if(me.firstText.length>=2){
                      me.firstText.eq(0).show();
                      me.firstText.eq(1).fadeIn("slow",me._done);
                    }else{
                      me.firstText.eq(0).fadeIn("slow",me._done);
                    }
                });
            };
            this._done = function(){
              setTimeout(function(){
                me.animated = true;
                me.reActive();
              },me.showTime);
            };
            this._bindEvent = function(){
              this.items.hover(function(){me.hover=true;},function(){me.hover=false;me.reActive();});
            };

            this.reActive = function(){
              if(me.animated&&!me.hover){
                  me.firstItem.fadeOut("slow");
                  me.firstItem.remove();
                  me.items = me.container.find("li");
                  me.firstItem = me.items.eq(0);
                  me.firstText = me.firstItem.find("span");
                  me._active();
                }
            };

            this._init();
          };
        return this.each(function(){
          new fadeAnimate({container:$(this)});
        });
      }
    })(jQuery);
}

