(function($){$.expr[':'].linkingToImage=function(elem,index,match){return true;};$.fn.imgPreview=function(userDefinedSettings){var s=$.extend({imgCSS:{},distanceFromCursor:{top:10,left:10},preloadImages: true,onShow: function(){},onHide: function(){},onLoad: function(){},containerID: 'imgPreviewContainer',containerLoadingClass: 'loading',thumbPrefix: '',srcAttr: 'href'},userDefinedSettings),$container=$('<div/>').attr('id',s.containerID).append('<img/>').hide().css('position','absolute').appendTo('body'),$img=$('img',$container).css(s.imgCSS),$collection=this.filter(':linkingToImage('+s.srcAttr+')');function addPrefix(src){if(src)return src.replace(/(\/?)([^\/]+)$/,'$1'+s.thumbPrefix+'$2');}if(s.preloadImages){(function(i){var tempIMG=new Image(),callee=arguments.callee;tempIMG.src=addPrefix($($collection[i]).attr(s.srcAttr));tempIMG.onload=function(){$collection[i+1]&&callee(i+1);};})(0);}$collection .mousemove(function(e){$container.css({top: e.pageY+s.distanceFromCursor.top+'px',left: e.pageX+s.distanceFromCursor.left+'px'});}).hover(function(){var link=this;$container .addClass(s.containerLoadingClass).show();$img .load(function(){$container.removeClass(s.containerLoadingClass);$img.show();s.onLoad.call($img[0],link);}).attr('src',addPrefix($(link).attr(s.srcAttr)));s.onShow.call($container[0],link);},function(){$container.hide();$img.unbind('load').attr('src','').hide();s.onHide.call($container[0],this);});return this;};})(jQuery);