Dock=new JS.Class({include:Ojay.Observable,extend:{SCALE_FACTOR:0.8,RANGE:4,TRANSITION_FRAMES:8,TRANSITION_TIME:0.05,Image:new JS.Class({extend:{PADDING:10},initialize:function(B,A){this._dock=B;this._img=Ojay(A);this._padding=this.klass.PADDING;this._link=this._img.ancestors("a");this._w=this._img.getWidth();this._h=this._img.getHeight()},getWidth:function(){return this._w+2*this._padding},getHeight:function(){return this._h+2*this._padding},getHTML:function(){if(this._html){return this._html}this._html=Ojay(Ojay.HTML.img({src:this._img.node.src}));this._html.setStyle({display:"inline",position:"relative",padding:this._padding+"px"});if(this._link.node){this._html.on("click",function(){this._dock.notifyObservers("click",this._link)},this)}return this._html},setHeight:function(A,D){var C=2*this._padding;var B={height:(A-C)+"px",width:(this._w*(A-C)/this._h)+"px"};switch(this._dock.getAlignment()){case"bottom":B.marginTop=(D-A)+"px";break;case"top":B.marginBottom=(D-A)+"px";break;case"center":B.marginTop=B.marginBottom=(D-A)/2+"px";break}this._html.setStyle(B)},padLeft:function(A){this._html.setStyle({marginLeft:A+"px"})}})},initialize:function(A,B){this._container=Ojay(A);this._elements={};this._options=B||{};this._container.insert(this.getHTML(),"after").hide();this._update(1);this._images.forEach(function(D,C){D.getHTML().on("mouseover",function(E){this.notifyObservers("mouseover",C);this._update(C/(this.size()-1),true)},this)},this)},getHTML:function(){var C=this,B=C._elements;if(B._container){return B._container}this._images=C._container.descendants("img").map(function(F){return new this.klass.Image(this,F)},this);var E=1+this.klass.SCALE_FACTOR,A=E*this.getMaxHeight(),D=this._getHorizontalRange();B._container=Ojay(Ojay.HTML.div({className:"dock"},function(F){C._images.forEach(function(G){F.concat(G.getHTML().node)})}));B._container.setStyle({width:(D+5)+"px",height:(A+5)+"px",position:"relative"});this._canvasWidth=D;this._canvasHeight=A;this._underrun=D-this._getHorizontalRange(0);return this.getHTML()},_update:function(G,B){var E,C,D,F=this.size()-1;if(G>=0&&G<=1){f=G}else{E=this._elements._container.getRegion();C=this.scale(0,0)*this._images[0].getWidth()/2;D=this.scale(F,F)*this._images[F].getWidth()/2;f=(G.left-(E.left+C+this._underrun/2))/(this._canvasWidth-(this._underrun+C+D));if(f<0){f=0}if(f>1){f=1}}if(B===true){return this._slideTo(f)}f=f*F;this._images.forEach(function(J,H){var I=Math.round(this.scale(H,f)*J.getHeight());J.setHeight(I,this._canvasHeight)},this);var A=this._getHorizontalRange(f);this._images[0].padLeft((this._canvasWidth-A)/2)},_slideTo:function(C){if(this._sequence){this._sequence.pause()}var A=this._oldF||0,F=this.klass.TRANSITION_FRAMES,D=[],E=this.method("_update");for(var B=0;B<F;B++){D.push(A+(C-A)*B/F)}this._sequence=D.sequence(this.method("_update"));this._sequence.loop(this.klass.TRANSITION_TIME);this._sequence.finish();this._oldF=C},forEach:function(B,A){return this._images.forEach(B,A)},getMaxWidth:function(){return this._images.reduce(function(A,B){return Math.max(B.getWidth(),A)},0)},getMaxHeight:function(){return this._images.reduce(function(A,B){return Math.max(B.getHeight(),A)},0)},getAlignment:function(){return this._options.alignment||"bottom"},size:function(){return this._images.length},scale:function(C,F){if(F===undefined){F=this.size()/2}var E=this.klass.RANGE,B=this.klass.SCALE_FACTOR,A=C-F,D=Math.abs(A)<=E?1+(B/2)*(Math.cos(Math.PI*A/E)+1):1;return D},_getHorizontalRange:function(A){return this._images.map(function(C,B){return this.scale(B,A)*C.getWidth()},this).reduce(function(C,B){return C+B})}})