define(function(e,n,i){"use strict";var a=e("../util"),t=e("../base"),l=300,r=function(e){r.superclass.constructor.call(this,e),this.userConfig=a.mix({minScale:1,maxScale:2,duration:l},e)};if(a.extend(r,t,{pluginId:"scale",pluginInitializer:function(e){var n=this;return n.scale=1,n.xscroll=e.render(),n.initialContainerWidth=e.containerWidth,n.initialContainerHeight=e.containerHeight,n.minScale=n.userConfig.minScale||Math.max(e.width/e.containerWidth,e.height/e.containerHeight),n.maxScale=n.userConfig.maxScale||1,n._bindEvt(),n},pluginDestructor:function(){var e=this,n=e.xscroll;return n.off("doubletap",e._doubleTapHandler,e),n.off("pinchstart",e._pinchStartHandler,e),n.off("pinchmove",e._pinchHandler,e),n.off("pinchend pinchcancel",e._pinchEndHandler,e),e},_doubleTapHandler:function(e){var n=this,i=n.xscroll,a=n.userConfig.minScale,t=n.userConfig.maxScale,l=n.userConfig.duration;return n.originX=(e.center.x-i.x)/i.containerWidth,n.originY=(e.center.y-i.y)/i.containerHeight,i.scale>n.minScale?n.scaleTo(a,n.originX,n.originY,l):n.scaleTo(t,n.originX,n.originY,l),n},_pinchStartHandler:function(e){var n=this,i=n.xscroll;n.disablePan(),i.stop(),n.isScaling=!1,n.scale=i.scale,n.originX=(e.center.x-i.x)/i.containerWidth,n.originY=(e.center.y-i.y)/i.containerHeight},_pinchHandler:function(e){var n=this,i=n.scale,a=n.xscroll,t=n.originX,l=n.originY,r=i*e.scale;r<=n.userConfig.minScale&&(r=.5*n.userConfig.minScale*Math.pow(2,r/n.userConfig.minScale)),r>=n.userConfig.maxScale&&(r=2*n.userConfig.maxScale*Math.pow(.5,n.userConfig.maxScale/r)),n._scale(r,t,l),n.xscroll.translate(a.x,a.y,r,"e.scale",e.scale)},disablePan:function(){return this.xscroll.mc.get("pan").set({enable:!1}),this},enablePan:function(){return this.xscroll.mc.get("pan").set({enable:!0}),this},_pinchEndHandler:function(e){var n=this,i=n.originX,a=n.originY,t=n.xscroll;t.scalen.maxScale?n.scaleTo(n.maxScale,i,a,l,"ease-out",n.enablePan):n.enablePan()},_bindEvt:function(){var e=this,n=e.xscroll;return n.on("doubletap",e._doubleTapHandler,e),n.on("pinchstart",e._pinchStartHandler,e),n.on("pinchmove",e._pinchHandler,e),n.on("pinchend pinchcancel",e._pinchEndHandler,e),e},_scale:function(e,n,i){var a=this,t=a.xscroll,l=a.xscroll.boundry;if(t.scale!=e&&e){a.isScaling||(a.scaleBegin=t.scale,a.isScaling=!0,a.scaleBeginX=t.x,a.scaleBeginY=t.y),n&&(a.originX=n),i&&(a.originY=i);var r=e*a.initialContainerWidth,c=e*a.initialContainerHeight;t.containerWidth=Math.round(r>t.width?r:t.width),t.containerHeight=Math.round(c>t.height?c:t.height),t.scale=e;var o=n*(a.initialContainerWidth*a.scaleBegin-t.containerWidth)+a.scaleBeginX,s=i*(a.initialContainerHeight*a.scaleBegin-t.containerHeight)+a.scaleBeginY;o>l.left&&(o=l.left),s>l.top&&(s=l.top),o