diff options
Diffstat (limited to 'lib/dojo/fx.js')
-rw-r--r-- | lib/dojo/fx.js | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/lib/dojo/fx.js b/lib/dojo/fx.js new file mode 100644 index 000000000..39ae253fd --- /dev/null +++ b/lib/dojo/fx.js @@ -0,0 +1,252 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dojo.fx"]){ +dojo._hasResource["dojo.fx"]=true; +dojo.provide("dojo.fx"); +dojo.require("dojo.fx.Toggler"); +(function(){ +var d=dojo,_1={_fire:function(_2,_3){ +if(this[_2]){ +this[_2].apply(this,_3||[]); +} +return this; +}}; +var _4=function(_5){ +this._index=-1; +this._animations=_5||[]; +this._current=this._onAnimateCtx=this._onEndCtx=null; +this.duration=0; +d.forEach(this._animations,function(a){ +this.duration+=a.duration; +if(a.delay){ +this.duration+=a.delay; +} +},this); +}; +d.extend(_4,{_onAnimate:function(){ +this._fire("onAnimate",arguments); +},_onEnd:function(){ +d.disconnect(this._onAnimateCtx); +d.disconnect(this._onEndCtx); +this._onAnimateCtx=this._onEndCtx=null; +if(this._index+1==this._animations.length){ +this._fire("onEnd"); +}else{ +this._current=this._animations[++this._index]; +this._onAnimateCtx=d.connect(this._current,"onAnimate",this,"_onAnimate"); +this._onEndCtx=d.connect(this._current,"onEnd",this,"_onEnd"); +this._current.play(0,true); +} +},play:function(_6,_7){ +if(!this._current){ +this._current=this._animations[this._index=0]; +} +if(!_7&&this._current.status()=="playing"){ +return this; +} +var _8=d.connect(this._current,"beforeBegin",this,function(){ +this._fire("beforeBegin"); +}),_9=d.connect(this._current,"onBegin",this,function(_a){ +this._fire("onBegin",arguments); +}),_b=d.connect(this._current,"onPlay",this,function(_c){ +this._fire("onPlay",arguments); +d.disconnect(_8); +d.disconnect(_9); +d.disconnect(_b); +}); +if(this._onAnimateCtx){ +d.disconnect(this._onAnimateCtx); +} +this._onAnimateCtx=d.connect(this._current,"onAnimate",this,"_onAnimate"); +if(this._onEndCtx){ +d.disconnect(this._onEndCtx); +} +this._onEndCtx=d.connect(this._current,"onEnd",this,"_onEnd"); +this._current.play.apply(this._current,arguments); +return this; +},pause:function(){ +if(this._current){ +var e=d.connect(this._current,"onPause",this,function(_d){ +this._fire("onPause",arguments); +d.disconnect(e); +}); +this._current.pause(); +} +return this; +},gotoPercent:function(_e,_f){ +this.pause(); +var _10=this.duration*_e; +this._current=null; +d.some(this._animations,function(a){ +if(a.duration<=_10){ +this._current=a; +return true; +} +_10-=a.duration; +return false; +}); +if(this._current){ +this._current.gotoPercent(_10/this._current.duration,_f); +} +return this; +},stop:function(_11){ +if(this._current){ +if(_11){ +for(;this._index+1<this._animations.length;++this._index){ +this._animations[this._index].stop(true); +} +this._current=this._animations[this._index]; +} +var e=d.connect(this._current,"onStop",this,function(arg){ +this._fire("onStop",arguments); +d.disconnect(e); +}); +this._current.stop(); +} +return this; +},status:function(){ +return this._current?this._current.status():"stopped"; +},destroy:function(){ +if(this._onAnimateCtx){ +d.disconnect(this._onAnimateCtx); +} +if(this._onEndCtx){ +d.disconnect(this._onEndCtx); +} +}}); +d.extend(_4,_1); +dojo.fx.chain=function(_12){ +return new _4(_12); +}; +var _13=function(_14){ +this._animations=_14||[]; +this._connects=[]; +this._finished=0; +this.duration=0; +d.forEach(_14,function(a){ +var _15=a.duration; +if(a.delay){ +_15+=a.delay; +} +if(this.duration<_15){ +this.duration=_15; +} +this._connects.push(d.connect(a,"onEnd",this,"_onEnd")); +},this); +this._pseudoAnimation=new d.Animation({curve:[0,1],duration:this.duration}); +var _16=this; +d.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){ +_16._connects.push(d.connect(_16._pseudoAnimation,evt,function(){ +_16._fire(evt,arguments); +})); +}); +}; +d.extend(_13,{_doAction:function(_17,_18){ +d.forEach(this._animations,function(a){ +a[_17].apply(a,_18); +}); +return this; +},_onEnd:function(){ +if(++this._finished>this._animations.length){ +this._fire("onEnd"); +} +},_call:function(_19,_1a){ +var t=this._pseudoAnimation; +t[_19].apply(t,_1a); +},play:function(_1b,_1c){ +this._finished=0; +this._doAction("play",arguments); +this._call("play",arguments); +return this; +},pause:function(){ +this._doAction("pause",arguments); +this._call("pause",arguments); +return this; +},gotoPercent:function(_1d,_1e){ +var ms=this.duration*_1d; +d.forEach(this._animations,function(a){ +a.gotoPercent(a.duration<ms?1:(ms/a.duration),_1e); +}); +this._call("gotoPercent",arguments); +return this; +},stop:function(_1f){ +this._doAction("stop",arguments); +this._call("stop",arguments); +return this; +},status:function(){ +return this._pseudoAnimation.status(); +},destroy:function(){ +d.forEach(this._connects,dojo.disconnect); +}}); +d.extend(_13,_1); +dojo.fx.combine=function(_20){ +return new _13(_20); +}; +dojo.fx.wipeIn=function(_21){ +var _22=_21.node=d.byId(_21.node),s=_22.style,o; +var _23=d.animateProperty(d.mixin({properties:{height:{start:function(){ +o=s.overflow; +s.overflow="hidden"; +if(s.visibility=="hidden"||s.display=="none"){ +s.height="1px"; +s.display=""; +s.visibility=""; +return 1; +}else{ +var _24=d.style(_22,"height"); +return Math.max(_24,1); +} +},end:function(){ +return _22.scrollHeight; +}}}},_21)); +d.connect(_23,"onEnd",function(){ +s.height="auto"; +s.overflow=o; +}); +return _23; +}; +dojo.fx.wipeOut=function(_25){ +var _26=_25.node=d.byId(_25.node),s=_26.style,o; +var _27=d.animateProperty(d.mixin({properties:{height:{end:1}}},_25)); +d.connect(_27,"beforeBegin",function(){ +o=s.overflow; +s.overflow="hidden"; +s.display=""; +}); +d.connect(_27,"onEnd",function(){ +s.overflow=o; +s.height="auto"; +s.display="none"; +}); +return _27; +}; +dojo.fx.slideTo=function(_28){ +var _29=_28.node=d.byId(_28.node),top=null,_2a=null; +var _2b=(function(n){ +return function(){ +var cs=d.getComputedStyle(n); +var pos=cs.position; +top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0); +_2a=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0); +if(pos!="absolute"&&pos!="relative"){ +var ret=d.position(n,true); +top=ret.y; +_2a=ret.x; +n.style.position="absolute"; +n.style.top=top+"px"; +n.style.left=_2a+"px"; +} +}; +})(_29); +_2b(); +var _2c=d.animateProperty(d.mixin({properties:{top:_28.top||0,left:_28.left||0}},_28)); +d.connect(_2c,"beforeBegin",_2c,_2b); +return _2c; +}; +})(); +} |