(function(a){a.expr[":"].linkingToImage=function(d,c,b){return !!(a(d).attr(b[3])&&a(d).attr(b[3]).match(/\.(gif|jpe?g|png|bmp)$/i))};a.fn.imgPreview=function(i){var k=a.extend({imgCSS:{},distanceFromCursor:{top:10,left:10},preloadImages:true,onShow:function(){},onHide:function(){},onLoad:function(){},containerID:"imgPreviewContainer",containerLoadingClass:"loading",thumbPrefix:"",srcAttr:"href",imgClass:null,fixOverflow:false,maxWidth:null},i),j=a("<div/>").attr("id",k.containerID).append("<img/>").hide().css("position","absolute").appendTo("body"),b=a("img",j).css(k.imgCSS).addClass(k.imgClass),c=null,d=null,f=null,e=null,g=function(){var l=a(window);f=l.width();viewport_height=l.height()};g();a(window).resize(g);$collection=this.filter(":linkingToImage("+k.srcAttr+")");if($collection.size()==0){return this}function h(l){return l.replace(/(\/?)([^\/]+)$/,"$1"+k.thumbPrefix+"$2")}if(k.preloadImages){(function(l){var n=new Image(),m=arguments.callee;n.src=h(a($collection[l]).attr(k.srcAttr));n.onload=function(){$collection[l+1]&&m(l+1)}})(0)}$collection.mousemove(function(q){var p=a(document);var r=p.scrollLeft();var n=p.scrollTop();var m=q.pageX+k.distanceFromCursor.left;if(k.fixOverflow&&(m+c-r)>f){m=q.pageX-k.distanceFromCursor.left-c}var o=q.pageY+k.distanceFromCursor.top;if(k.fixOverflow&&(o+d-n)>viewport_height){o=q.pageY-k.distanceFromCursor.top-d}j.css({top:o+"px",left:m+"px"})}).hover(function(){var l=this;j.addClass(k.containerLoadingClass).show();b.load(function(){j.removeClass(k.containerLoadingClass);b.show();c=j.width();d=j.height();if(k.maxWidth&&b.width()>k.maxWidth){b.css({width:k.maxWidth})}k.onLoad.call(b[0],l)}).attr("src",h(a(l).attr(k.srcAttr)));k.onShow.call(j[0],l)},function(){j.hide();b.unbind("load").attr("src","").hide();k.onHide.call(j[0],this)});return this}})(jQuery);
