!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),function(a,b,c,d){function e(){a(c).on("mousemove",function(a){i!=d&&i.handle_event(a)}),a(c).on("mouseup",function(a){i!=d&&(i.handle_event(a),i=d)}),a(b).on("touchmove",function(a){1==a.originalEvent.touches.length&&i!=d&&i.handle_event(a),2==a.originalEvent.touches.length&&(a.preventDefault(),i!=d&&i.handle_event(a))}),a(b).on("touchend",function(a){i!=d&&(i.handle_event(a),i=d)}),a(b).on("resize",function(){l=a(b).width(),m=a(b).height()})}function f(a,b,c){return(1-c)*a+c*b}function g(b,c){this.element=b,this.options=a.extend({},o,c),this._defaults=o,this._name=n,this.obj=d,this.obj_image=d,this.obj_content=d,this.img=d,this.frameWidth=0,this.frameHeight=0,this.contentWidth=0,this.contentHeight=0,this.frameOffsetLeft=0,this.frameOffsetTop=0,this.minZoom=1,this.maxZoom=4,this.currentZoom=1,this.targetZoom=1,this.zoomStep=.25,this.zoomSpeed=.15,this.defaultPosX=0,this.defaultPosY=0,this.targetPosX=0,this.targetPosY=0,this.currentPosX=0,this.currentPosY=0,this.dragOutOfBoundsX=0,this.dragOutOfBoundsY=0,this.intertia=.9,this.dragEventOriginX=0,this.dragEventOriginY=0,this.dragInitialPositionX=0,this.dragInitialPositionY=0,this.dragLastEventX=0,this.dragLastEventY=0,this.dragMomentumX=0,this.dragMomentumY=0,this.dragMomentumCalculateTimer=5,this.vx=0,this.vy=0,this.lastMomentumCalculateTime=0,this.dragTimeout=d,this.zoomTimeout=d,this.lastTouchTime=0,this.didDoubleTap=!1,this.lastTouchX=0,this.lastTouchY=0,this.initialPinchDistance=0,this.pinchDelta=0,this.initialZoom=0,this.lastZoom=0,this.pinchZooming=!1,this.pinchZoomOffsetX=0,this.pinchZoomOffsetY=0,this.dragging=!1,this.obj_interface=d,this.ui_hide_timeout=d,this.ui_visible=!1,this.obj_navigator=d,this.obj_nav_window=d,this.navigatorWidth=0,this.navigatorHeight=0,this.navigator_dragging=!1,this.nav_window_width=0,this.nav_window_height=0,this.obj_fullscreen=d,this.is_fullscreen=!1,this.init()}var h=new Array,i=d,j=!1,k=!1,l=(a(b).scrollLeft(),a(b).scrollTop(),a(b).width()),m=a(b).height();e();var n="uberZoom",o={width:"100%",height:"100%",maxZoom:"auto",navigator:!1,navigatorImagePreview:!1,fullscreen:!1,startInFullscreen:!1,rubberband:!0};g.prototype={init:function(){var c=this;c.id=h.length,h[c.id]=c,c.obj_image=a(c.element),c.obj_image.wrap('
'),c.obj_image.addClass("ndd-uberzoom-main-image"),c.obj=a(c.element).parent(),c.obj.attr("id","ndd-uberzoom-container-"+c.id),c.obj.css({width:c.options.width,height:c.options.height}),c.options.starting_in_fullscreen&&(c.is_fullscreen=!0,c.obj.addClass("ndd-uberzoom-container-fullscreen")),c.frameWidth=c.obj.width(),c.frameHeight=c.obj.height(),c.img=new Image,c.img.onload=function(){var d=c.img.width/c.img.height,e=c.frameWidth/c.frameHeight;if(c.obj_image.css(d>e?{width:"auto",height:"100%"}:{width:"100%",height:"auto"}),c.contentWidth=c.obj_image.width(),c.contentHeight=c.obj_image.height(),c.obj_image.wrap(''),c.obj_content=c.obj.find(".ndd-uberzoom-content"),c.obj_content.css({position:"absolute",width:c.contentWidth+"px",height:c.contentHeight+"px",left:-c.contentWidth/2+c.frameWidth/2+"px",top:-c.contentHeight/2+c.frameHeight/2+"px"}),c.obj_image.css({opacity:"1",width:"100%",height:"100%"}),c.defaultPosX=c.obj_content.position().left,c.defaultPosY=c.obj_content.position().top,c.currentPosX=c.defaultPosX,c.currentPosY=c.defaultPosY,c.frameOffsetLeft=c.obj.offset().left,c.frameOffsetTop=c.obj.offset().top,c.maxZoom="auto"==c.options.maxZoom?d>e?c.img.height/c.frameHeight:c.img.width/c.frameWidth:c.options.maxZoom,c.obj.append(''),c.obj_interface=c.obj.find(".ndd-uberzoom-interface"),c.options.navigator){c.obj_interface.append(''),c.obj_navigator=c.obj.find(".ndd-uberzoom-navigator"),c.obj_nav_window=c.obj.find(".ndd-uberzoom-navigator-window"),c.options.navigatorMaxWidth=c.frameWidth/4,c.options.navigatorMaxHeight=c.frameHeight/4;var f=c.options.navigatorMaxWidth/c.options.navigatorMaxHeight,g=c.img.width/c.img.height,h=1;h=g>f?c.contentWidth/c.options.navigatorMaxWidth:c.contentHeight/c.options.navigatorMaxHeight,c.navigatorWidth=c.contentWidth/h,c.navigatorHeight=c.contentHeight/h;{c.frameHeight-c.navigatorHeight-10}c.obj_navigator.css({width:c.navigatorWidth,height:c.navigatorHeight,left:10,top:"100%",margin:0,"margin-top":-c.navigatorHeight-10}),c.options.navigatorImagePreview&&c.obj_navigator.append('
'),c.redraw_navigator()}c.options.fullscreen&&(c.obj_interface.append('':'
')),a(c.obj).on("mousedown",function(a){i=c,c.handle_event(a)}),a(c.obj).mousewheel(function(a,b){c.handle_event(a)}),a(b).on("resize",function(a){c.handle_event(a)}),a(c.obj).on("touchstart",function(a){if(1==a.originalEvent.touches.length){i=c;var b=(new Date).getTime(),d=a.originalEvent.touches[0].screenX,e=a.originalEvent.touches[0].screenY;b-c.lastTouchTime<350&&b-c.lastTouchTime>100&&Math.abs(c.lastTouchX-d)<50&&Math.abs(c.lastTouchY-e)<50?(c.lastTouchTime=0,c.didDoubleTap=!0):c.lastTouchTime=b,c.lastTouchX=d,c.lastTouchY=e,c.handle_event(a)}2==a.originalEvent.touches.length&&(i=c,c.handle_event(a)),a.preventDefault()}),c.options.startInFullscreen&&c.toggle_fullscreen()},c.img.src=c.obj_image.attr("src")},show_ui:function(){var a=this;a.ui_visible||(a.ui_visible=!0,a.obj_interface.css({opacity:1}))},hide_ui:function(){var a=this;a.ui_visible&&(a.obj_interface.css({opacity:0}),a.ui_visible=!1)},schedule_hide_ui:function(){var a=this;a.ui_visible&&(clearTimeout(a.ui_hide_timeout),a.ui_hide_timeout=setTimeout(function(){a.hide_ui()},1e3))},toggle_fullscreen:function(){var b=this;if(b.is_fullscreen)b.obj.remove();else{a("body").prepend('
');var c=b.options;c.startInFullscreen=!1,c.starting_in_fullscreen=!0,c.width="100%",c.height="100%",a("#ndd-uberzoom-fullscreen-temp-image").uberZoom(c)}},handle_event:function(b){var c=this;if(!("mousewheel"==b.type&&c.currentZoom==c.maxZoom&&b.deltaY>0||"mousewheel"==b.type&&c.currentZoom==c.minZoom&&b.deltaY<0)){if(b.stopPropagation(),b.preventDefault(),"mousewheel"!=b.type&&!j&&(a(b.target).hasClass("ndd-uberzoom-fullscreen")||a(b.target).parent().hasClass("ndd-uberzoom-fullscreen")||a(b.target).hasClass("ndd-uberzoom-navigator")||a(b.target).hasClass("ndd-uberzoom-navigator-image")||a(b.target).hasClass("ndd-uberzoom-navigator-window")))return"mousedown"==b.type&&(k=!0,(a(b.target).hasClass("ndd-uberzoom-navigator")||a(b.target).hasClass("ndd-uberzoom-navigator-image")||a(b.target).hasClass("ndd-uberzoom-navigator-window"))&&(c.navigator_window_start_dragging(b.pageX,b.pageY),c.navigator_dragging=!0)),"mouseup"==b.type&&(k=!1,(a(b.target).hasClass("ndd-uberzoom-fullscreen")||a(b.target).parent().hasClass("ndd-uberzoom-fullscreen"))&&c.toggle_fullscreen()),"mousemove"==b.type&&(k=!0,c.navigator_dragging&&c.navigator_window_drag(b.pageX,b.pageY)),"touchstart"==b.type&&1==b.originalEvent.touches.length&&(c.show_ui(),k=!0,(a(b.target).hasClass("ndd-uberzoom-navigator")||a(b.target).hasClass("ndd-uberzoom-navigator-image")||a(b.target).hasClass("ndd-uberzoom-navigator-window"))&&(c.navigator_window_start_dragging(b.originalEvent.touches[0].pageX,b.originalEvent.touches[0].pageY),c.navigator_dragging=!0)),"touchmove"==b.type&&1==b.originalEvent.touches.length&&(c.show_ui(),k=!0,c.navigator_dragging&&c.navigator_window_drag(b.originalEvent.touches[0].pageX,b.originalEvent.touches[0].pageY)),void("touchend"==b.type&&0==b.originalEvent.touches.length&&(c.schedule_hide_ui(),k=!1,(a(b.target).hasClass("ndd-uberzoom-fullscreen")||a(b.target).parent().hasClass("ndd-uberzoom-fullscreen"))&&c.toggle_fullscreen()));if(!k||"touchend"!=b.type&&"mouseup"!=b.type||(c.schedule_hide_ui(),k=!1),k&&"mousemove"==b.type&&c.navigator_dragging&&c.navigator_window_drag(b.pageX,b.pageY),k&&"touchmove"==b.type&&(c.show_ui(),c.navigator_dragging&&c.navigator_window_drag(b.originalEvent.touches[0].pageX,b.originalEvent.touches[0].pageY)),!k){if("mousedown"==b.type&&(j=!0,c.dragging=!0,c.start_moving(b.screenX,b.screenY)),"mousemove"==b.type&&(j=!0,c.dragging&&c.move(b.screenX,b.screenY)),"mouseup"==b.type&&(j=!1,c.stop_moving(),c.dragging=!1),"mousewheel"==b.type&&(b.deltaY>0?c.zoom_in(b.offsetX,b.offsetY):b.deltaY<0&&c.zoom_out(b.offsetX,b.offsetY)),"resize"==b.type&&c.update_size(),"touchstart"==b.type&&2==b.originalEvent.touches.length){c.show_ui(),j=!0,this.pinchZooming=!0;var d=b.originalEvent.touches[0].screenX,e=b.originalEvent.touches[0].screenY,f=b.originalEvent.touches[1].screenX,g=b.originalEvent.touches[1].screenY;c.initialPinchDistance=Math.sqrt(Math.pow(e-g,2)+Math.pow(d-f,2)),c.initialZoom=c.currentZoom}if("touchmove"==b.type&&2==b.originalEvent.touches.length){c.show_ui(),j=!0;var d=b.originalEvent.touches[0].screenX,e=b.originalEvent.touches[0].screenY,f=b.originalEvent.touches[1].screenX,g=b.originalEvent.touches[1].screenY;c.pinchDelta=Math.sqrt(Math.pow(e-g,2)+Math.pow(d-f,2))-c.initialPinchDistance,c.pinchDelta=7*c.pinchDelta/Math.sqrt(Math.pow(c.contentWidth,2)+Math.pow(c.contentHeight,2));var h=b.originalEvent.touches[0].pageX-c.obj.offset().left,i=b.originalEvent.touches[0].pageY-c.obj.offset().top,l=b.originalEvent.touches[1].pageX-c.obj.offset().left,m=b.originalEvent.touches[1].pageY-c.obj.offset().top;c.pinchZoomOffsetX=(h+l)/2,c.pinchZoomOffsetY=(i+m)/2,c.pinch_zoom(c.pinchZoomOffsetX,c.pinchZoomOffsetY)}if("touchstart"==b.type)if(c.show_ui(),j=!0,this.dragging=!0,c.didDoubleTap){var n=b.originalEvent.touches[0].pageX-c.obj.offset().left,o=b.originalEvent.touches[0].pageY-c.obj.offset().top;c.currentZoomc.maxZoom?c.zoom_in(c.pinchZoomOffsetX,c.pinchZoomOffsetY,!0):c.currentZoomthis.obj_nav_window.offset().left&&athis.obj_nav_window.offset().top&&bc.maxZoom){var e=1-(d-c.maxZoom);e=0>e?0:e,d=c.lastZoom+(d-c.lastZoom)*e}if(de?0:e,d=c.lastZoom+(d-c.lastZoom)*e}c.targetZoom=d,c.lastZoom=c.targetZoom;var f=(a-c.currentPosX)/(c.contentWidth*c.currentZoom),g=(b-c.currentPosY)/(c.contentHeight*c.currentZoom);c.targetPosX=c.currentPosX-(c.targetZoom-c.currentZoom)*c.contentWidth*f,c.targetPosY=c.currentPosY-(c.targetZoom-c.currentZoom)*c.contentHeight*g,c.currentZoom=c.targetZoom,c.currentPosX=c.targetPosX,c.currentPosY=c.targetPosY,c.redraw()},zoom_in:function(a,b,c){var d=this;d.targetZoom+=d.zoomStep,d.targetZoom=d.targetZoomd.minZoom?d.targetZoom:d.minZoom,1==c&&(d.targetZoom=d.maxZoom);var e=(a-d.currentPosX)/(d.contentWidth*d.currentZoom),f=(b-d.currentPosY)/(d.contentHeight*d.currentZoom);d.targetPosX=d.currentPosX-(d.targetZoom-d.currentZoom)*d.contentWidth*e,d.targetPosY=d.currentPosY-(d.targetZoom-d.currentZoom)*d.contentHeight*f,d.constrain_target_position(),d.apply_zoom()},zoom_out:function(a,b,c){var d=this;d.targetZoom-=d.zoomStep,d.targetZoom=d.targetZoomd.minZoom?d.targetZoom:d.minZoom,1==c&&(d.targetZoom=d.minZoom);var e=(a-d.currentPosX)/(d.contentWidth*d.currentZoom),f=(b-d.currentPosY)/(d.contentHeight*d.currentZoom);d.targetPosX=d.currentPosX-(d.targetZoom-d.currentZoom)*d.contentWidth*e,d.targetPosY=d.currentPosY-(d.targetZoom-d.currentZoom)*d.contentHeight*f,d.constrain_target_position(),d.apply_zoom()},apply_zoom:function(){var a=this;clearTimeout(a.dragTimeout),clearTimeout(a.zoomTimeout),a.currentZoom=f(a.currentZoom,a.targetZoom,a.zoomSpeed),a.currentPosX=f(a.currentPosX,a.targetPosX,a.zoomSpeed),a.currentPosY=f(a.currentPosY,a.targetPosY,a.zoomSpeed),a.redraw(),Math.abs(a.currentZoom-a.targetZoom)>.025||Math.abs(a.currentPosX-a.targetPosX)>.5||Math.abs(a.currentPosY-a.targetPosY)>.5?a.zoomTimeout=setTimeout(function(){a.apply_zoom()},16):(a.currentZoom=a.targetZoom,a.currentPosX=a.targetPosX,a.currentPosY=a.targetPosY,a.redraw())},start_moving:function(a,b){var c=this;c.dragOutOfBoundsX=0,c.dragOutOfBoundsY=0,c.dragEventOriginX=a,c.dragEventOriginY=b,c.dragInitialPositionX=c.currentPosX,c.dragInitialPositionY=c.currentPosY,c.dragLastEventX=c.dragEventOriginX,c.dragLastEventY=c.dragEventOriginY,c.dragLastEventMomentumX=c.dragEventOriginX,c.dragLastEventMomentumY=c.dragEventOriginY,i=c,c.dragMomentumX=0,c.dragMomentumY=0,c.vx=0,c.vy=0,clearTimeout(c.dragTimeout),clearTimeout(c.zoomTimeout)},move:function(a,b){var c=this;c.calculate_out_of_bounds();var d=1-Math.abs(c.dragOutOfBoundsX)/100<0?0:1-Math.abs(c.dragOutOfBoundsX)/100,e=1-Math.abs(c.dragOutOfBoundsY)/100<0?0:1-Math.abs(c.dragOutOfBoundsY)/100;c.vx=(a-c.dragLastEventX)*d,c.vy=(b-c.dragLastEventY)*e;var f=(new Date).getTime();f-c.lastMomentumCalculateTime>16&&(c.dragMomentumX=a-c.dragLastEventMomentumX,c.dragMomentumY=b-c.dragLastEventMomentumY,c.dragMomentumX=c.dragMomentumX>50?50:c.dragMomentumX,c.dragMomentumY=c.dragMomentumY>50?50:c.dragMomentumY,c.lastMomentumCalculateTime=f,c.dragLastEventMomentumX=c.dragLastEventX,c.dragLastEventMomentumY=c.dragLastEventY),c.currentPosX+=c.vx,c.currentPosY+=c.vy,c.redraw(),c.dragLastEventX=a,c.dragLastEventY=b},stop_moving:function(){var a=this;a.calculate_out_of_bounds(),a.vx=a.dragMomentumX-a.dragOutOfBoundsX/2,a.vy=a.dragMomentumY-a.dragOutOfBoundsY/2,a.vx=a.vx>20?20:a.vx,a.vx=a.vx<-20?-20:a.vx,a.vy=a.vy>20?20:a.vy,a.vy=a.vy<-20?-20:a.vy,a.currentPosX+=a.vx,a.currentPosY+=a.vy,a.dragMomentumX=a.dragMomentumX*a.intertia,a.dragMomentumY=a.dragMomentumY*a.intertia,a.redraw(),(Math.abs(a.vx)>.15||Math.abs(a.vy)>.15)&&(a.dragTimeout=setTimeout(function(){a.stop_moving()},16))},calculate_out_of_bounds:function(){var a=this,b=-a.contentWidth*a.currentZoom+a.frameWidth,c=-a.contentHeight*a.currentZoom+a.frameHeight;a.dragOutOfBoundsX=0,a.dragOutOfBoundsY=0,a.currentPosX>0&&(a.dragOutOfBoundsX=a.currentPosX),a.currentPosY>0&&(a.dragOutOfBoundsY=a.currentPosY),a.currentPosX0&&(a.targetPosX=0),a.targetPosY>0&&(a.targetPosY=0),a.targetPosX0&&(a.currentPosX=0),a.currentPosY>0&&(a.currentPosY=0),a.currentPosXc?{width:"auto",height:"100%"}:{width:"100%",height:"auto"}),a.obj_image.wrap(''),a.obj_content=a.obj.find(".ndd-zoomable-content"),a.contentWidth=a.obj_image.width(),a.contentHeight=a.obj_image.height(),a.obj_content.css({position:"absolute",width:a.contentWidth+"px",height:a.contentHeight+"px",left:-a.contentWidth/2+a.frameWidth/2+"px",top:-a.contentHeight/2+a.frameHeight/2+"px"}),a.obj_image.css({opacity:"1",width:"100%",height:"100%"}),a.defaultPosX=a.obj_content.position().left,a.defaultPosY=a.obj_content.position().top,a.currentPosX=a.defaultPosX,a.currentPosY=a.defaultPosY,a.currentZoom=1,a.targetZoom=1,a.redraw_navigator()}}},a.fn[n]=function(b){return this.each(function(){a.data(this,"plugin_"+n)||a.data(this,"plugin_"+n,new g(this,b))})}}(jQuery,window,document);