function PanImage(img,width,height,imgWidth,imgHeight,defaultScale){var _this=this;var _container;var _imgContainer;var _imgContainerDOM;this.imgs=[];var _halfWidth=width*.5;var _halfHeight=height*.5;var _halfImgWidth=imgWidth*.5;var _halfImgHeight=imgHeight*.5;var _paddingW=_halfImgWidth-_halfWidth;var _paddingH=_halfImgHeight-_halfHeight;var _isOver=false;var _x=0;var _y=0;var _s=0;var _tx=0;var _ty=0;var _ts=0;var currentImgId=0;var previousImgId=-1;var _mouseImgFunc;var _3dPrefix;var DELTA=.05;var _touchDownX;var _touchDownY;var _touchX;var _touchY;var _touchDownTime;this.changeImageDuration=1000;function _init(){defaultScale=defaultScale||Math.max(width/imgWidth,height/imgHeight);_container=$("<div>").css({position:"relative",overflow:"hidden",width:width,height:height});_imgContainer=$("<div>").css({position:"absolute",width:imgWidth,height:imgHeight});_imgContainerDOM=_imgContainer[0];_container.append(_imgContainer);_parseImage(img,0);if(Modernizr.csstransforms3d){_imgContainerDOM.style[Modernizr.prefixed('transformOrigin')]="0% 0%";_mouseImgFunc=navigator.userAgent.match(/iPad/i)==null?_3dMoveImg:_ipadMoveImg;_3dPrefix=Modernizr.prefixed('transform');}else{_mouseImgFunc=_normalMoveImg;}
if("ontouchstart"in window){InteractiveManager.addArea(_container[0],_onTouchStart,_onTouchMove,_onTouchEnd);}else{_container.bind('mousemove',_onMouseMove);_container.bind('mouseover',_onMouseOver);_container.bind('mouseout',_onMouseOut);}
_this.start();}
function _parseImage(img,id){if(id==0)_imgContainer.append(img);img.style.position="absolute";img.style.top="0px";img.style.left="0px";_this.imgs[id]=img;}
function _onMouseOver(e){_ts=1;_onMouseMove(e);}
function _onMouseMove(e){if(_container.offset().left>0){_tx=(e.pageX-_container.offset().left-_halfWidth)/_halfWidth;_ty=(e.pageY-_container.offset().top-_halfHeight)/_halfHeight;}}
function _onMouseOut(e){_ts=defaultScale;_tx=0;_ty=0;}
function _onTouchStart(e){_ts=1;}
function _onTouchMove(e){_tx=(e.relativeTouchX-_halfWidth)/_halfWidth;_ty=(e.relativeTouchY-_halfHeight)/_halfHeight;}
function _onTouchEnd(e){_ts=defaultScale;_tx=0;_ty=0;}
function _render(){_x+=(_tx-_x)*DELTA;_y+=(_ty-_y)*DELTA;_s+=(_ts-_s)*DELTA;_mouseImgFunc(_halfWidth-(_x*_paddingW+_halfImgWidth)*_s,_halfHeight-(_y*_paddingH+_halfImgHeight)*_s);}
function _normalMoveImg(x,y){_imgContainerDOM.style.left=x+"px";_imgContainerDOM.style.top=y+"px";var i=_this.imgs.length;while(i--){if(_this.imgs[i]){_this.imgs[i].style.width=(imgWidth*_s)+"px";_this.imgs[i].style.height=(imgHeight*_s)+"px";}}}
function _3dMoveImg(x,y){_imgContainerDOM.style[_3dPrefix]="translate3d("+x+"px,"+y+"px,0px) scale3d("+_s+","+_s+",1)";}
function _ipadMoveImg(x,y){_imgContainerDOM.style[_3dPrefix]="translate3d("+(x/imgWidth*100)+"%,"+(y/imgHeight*100)+"%,0%) scale3d("+_s+","+_s+",1)";}
function _getNextImage(){var img;currentImgId=currentImgId+1==_this.imgs.length?0:currentImgId+1;if(!(img=_this.imgs[currentImgId]))img=_getNextImage();return img;}
this.changeNextImage=function(){var previousImg=$(_this.imgs[currentImgId]);$(_this.imgs[currentImgId]).tween({opacity:{start:100,stop:0,time:0,duration:_this.changeImageDuration/1000},onStop:function(elem){$(elem).remove();}}).play();var img=_getNextImage();_imgContainer.prepend(img);$(img).css("opacity",1);if(!Modernizr.csstransforms3d){img.style.width=(imgWidth*_s)+"px";img.style.height=(imgHeight*_s)+"px";}}
this.addImage=function(filename,onload){var id=_this.imgs.length;_this.imgs[id]=null;$("<img>").attr("src",filename).attr("data-id",id).load(function(){_parseImage($(this)[0],$(this).attr("data-id"));if(onload)onload(_this);});}
this.start=function(){_x=_tx=0;_y=_ty=0;_s=_ts=defaultScale;StageReference.addRenderFunc(_render);_render();}
this.stop=function(){StageReference.removeRenderFunc(_render);}
_init();this.getContainer=function(){return _container;}}
