  (function($){
    $.fn.extend({
      imghover: function(opt){
        return this.each(function() {
          opt = $.extend({
              prefix: '',
              suffix: '_o',
              src: '',
              btnOnly: true,
              fade: false,
              fadeSpeed: 500
            }, opt || {});

          var node = $(this);
          if(!node.is('img')&&!node.is(':image')){
            var sel = 'img,:image';
            if (opt.btnOnly) sel = 'a '+sel;
            node.find(sel).imghover(opt);
            return;
          }

          var orgImg = node.attr('src');

          var hoverImg;
          if(opt.src){
            hoverImg = opt.src;
          }else{
            hoverImg = orgImg;
            if(opt.prefix){
              var pos = hoverImg.lastIndexOf('/');
              if(pos>0){
                hoverImg = hoverImg.substr(0,pos-1)+opt.prefix+hoverImg.substr(pos-1);
              }else{
                hoverImg = opt.prefix+hoverImg;
              }
            }
            if(opt.suffix){
              var pos = hoverImg.lastIndexOf('.');
              if(pos>0){
                hoverImg = hoverImg.substr(0,pos)+opt.suffix+hoverImg.substr(pos);
              }else{
                hoverImg = hoverImg+opt.suffix;
              }
            }
          }

          if(opt.fade){
            var offset = node.offset();
            var hover = node.clone(true);
            hover.attr('src', hoverImg);
            hover.css({
              position: 'absolute',
              left: offset.left,
              top: offset.top,
              zIndex: 1000
            }).hide().insertAfter(node);
            node.mouseover(
              function(){
                var offset=node.offset();
                hover.css({left: offset.left, top: offset.top});
                hover.fadeIn(opt.fadeSpeed);
                node.fadeOut(opt.fadeSpeed,function(){node.show()});
              }
            );
            hover.mouseout(
              function(){
                node.fadeIn(opt.fadeSpeed);
                hover.fadeOut(opt.fadeSpeed);
              }
            );
          }else{
            node.hover(
              function(){node.attr('src', hoverImg)},
              function(){node.attr('src', orgImg)}
            );
          }
        });
      }
    });
  })(jQuery);

