(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(c){var b=a.extend({distanceFromEdge:10,distanceFromCursor:{top:20,left:20},containerID:"imgPreviewContainer",containerLoadingClass:"loading",srcAttr:"rel"},c),e=a("<div/>").attr("id",b.containerID).hide().css("position","absolute").appendTo("body"),d=this.filter(":linkingToImage("+b.srcAttr+")");e.setPos=function(f){scrollL=a(window).scrollLeft();scrollT=a(window).scrollTop();maxX=scrollL+a(window).width();maxY=scrollT+a(window).height();containerW=e.outerWidth();containerH=e.outerHeight();posTop=f.pageY+b.distanceFromCursor.top;posLeft=f.pageX+b.distanceFromCursor.left;if(posTop+containerH+b.distanceFromEdge>maxY){posTop=maxY-containerH-b.distanceFromEdge}if((posLeft+containerW>maxX)&&(f.pageX-scrollL>maxX-f.pageX)){posLeft=f.pageX-containerW-b.distanceFromCursor.left}this.css({top:posTop+"px",left:posLeft+"px"})};d.hover(function(g){var f=this;e.append("<img/>").addClass(b.containerLoadingClass).show();a("#"+b.containerLoadingClass+" img").load(function(){e.removeClass(b.containerLoadingClass).setPos(g);a("#"+b.containerLoadingClass+" img").show()}).attr("src",a(f).attr(b.srcAttr))},function(){e.hide();a("#"+b.containerLoadingClass+" img").remove()}).mousemove(function(f){e.setPos(f)});return this}})(jQuery);
