(function(n){var t={url:!1,callback:!1,target:!1,duration:120,on:"mouseover",touch:!0,onZoomIn:!1,onZoomOut:!1,magnify:1};n.zoom=function(t,i,r,u){var o,s,f,e,l,a,h,v=n(t).css("position"),c=n(i);return t.style.position=/(absolute|fixed)/.test(v)?v:"relative",t.style.overflow="hidden",r.style.width=r.style.height="",n(r).addClass("zoomImg").css({position:"absolute",top:0,left:0,opacity:0,width:r.width*u,height:r.height*u,border:"none",maxWidth:"none",maxHeight:"none"}).appendTo(t),{init:function(){s=n(t).outerWidth();o=n(t).outerHeight();i===t?(e=s,f=o):(e=c.outerWidth(),f=c.outerHeight());l=(r.width-s)/e;a=(r.height-o)/f;h=c.offset()},move:function(n){var t=n.pageX-h.left,i=n.pageY-h.top;i=Math.max(Math.min(i,f),0);t=Math.max(Math.min(t,e),0);r.style.left=t*-l+"px";r.style.top=i*-a+"px"}}};n.fn.zoom=function(i){return this.each(function(){var h,r=n.extend({},t,i||{}),o=r.target||this,a=this,u=n(a),f=document.createElement("img"),c=n(f),s="mousemove.zoom",e=!1,l=!1;(r.url||(h=u.find("img"),h[0]&&(r.url=h.data("src")||h.attr("src")),r.url))&&(function(){var n=o.style.position,t=o.style.overflow;u.one("zoom.destroy",function(){u.off(".zoom");o.style.position=n;o.style.overflow=t;c.remove()})}(),f.onload=function(){function i(i){t.init();t.move(i);c.stop().fadeTo(n.support.opacity?r.duration:0,1,n.isFunction(r.onZoomIn)?r.onZoomIn.call(f):!1)}function h(){c.stop().fadeTo(r.duration,0,n.isFunction(r.onZoomOut)?r.onZoomOut.call(f):!1)}var t=n.zoom(o,a,f,r.magnify);"grab"===r.on?u.on("mousedown.zoom",function(r){1===r.which&&(n(document).one("mouseup.zoom",function(){h();n(document).off(s,t.move)}),i(r),n(document).on(s,t.move),r.preventDefault())}):"click"===r.on?u.on("click.zoom",function(r){if(!e)return(e=!0,i(r),n(document).on(s,t.move),n(document).one("click.zoom",function(){h();e=!1;n(document).off(s,t.move)}),!1)}):"toggle"===r.on?u.on("click.zoom",function(n){e?h():i(n);e=!e}):"mouseover"===r.on&&(t.init(),u.on("mouseenter.zoom",i).on("mouseleave.zoom",h).on(s,t.move));r.touch&&u.on("touchstart.zoom",function(n){n.preventDefault();l?(l=!1,h()):(l=!0,i(n.originalEvent.touches[0]||n.originalEvent.changedTouches[0]))}).on("touchmove.zoom",function(n){n.preventDefault();t.move(n.originalEvent.touches[0]||n.originalEvent.changedTouches[0])});n.isFunction(r.callback)&&r.callback.call(f)},f.src=r.url)})};n.fn.zoom.defaults=t})(window.jQuery)