﻿(function($){$.expr[':'].linkingToImage=function(elem,index,match){return!!($(elem).attr(match[3])&&$(elem).attr(match[3]).match(/\.(gif|jpe?g|png|bmp)$/i));};$.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){return src.replace(/(\/?)([^\/]+)$/,'$1'+s.thumbPrefix+'$2');}
if(s.preloadImages){(function(i){if($collection[i]!=null){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);
