summaryrefslogtreecommitdiff
path: root/includes/js/dojo/fx.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojo/fx.js')
-rw-r--r--includes/js/dojo/fx.js415
1 files changed, 0 insertions, 415 deletions
diff --git a/includes/js/dojo/fx.js b/includes/js/dojo/fx.js
deleted file mode 100644
index 1473531..0000000
--- a/includes/js/dojo/fx.js
+++ /dev/null
@@ -1,415 +0,0 @@
-if(!dojo._hasResource["dojo.fx"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.fx"] = true;
-dojo.provide("dojo.fx");
-dojo.provide("dojo.fx.Toggler");
-
-/*=====
-dojo.fx = {
- // summary: Effects library on top of Base animations
-};
-=====*/
-
-(function(){
- var _baseObj = {
- _fire: function(evt, args){
- if(this[evt]){
- this[evt].apply(this, args||[]);
- }
- return this;
- }
- };
-
- var _chain = function(animations){
- this._index = -1;
- this._animations = animations||[];
- this._current = this._onAnimateCtx = this._onEndCtx = null;
-
- this.duration = 0;
- dojo.forEach(this._animations, function(a){
- this.duration += a.duration;
- if(a.delay){ this.duration += a.delay; }
- }, this);
- };
- dojo.extend(_chain, {
- _onAnimate: function(){
- this._fire("onAnimate", arguments);
- },
- _onEnd: function(){
- dojo.disconnect(this._onAnimateCtx);
- dojo.disconnect(this._onEndCtx);
- this._onAnimateCtx = this._onEndCtx = null;
- if(this._index + 1 == this._animations.length){
- this._fire("onEnd");
- }else{
- // switch animations
- this._current = this._animations[++this._index];
- this._onAnimateCtx = dojo.connect(this._current, "onAnimate", this, "_onAnimate");
- this._onEndCtx = dojo.connect(this._current, "onEnd", this, "_onEnd");
- this._current.play(0, true);
- }
- },
- play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){
- if(!this._current){ this._current = this._animations[this._index = 0]; }
- if(!gotoStart && this._current.status() == "playing"){ return this; }
- var beforeBegin = dojo.connect(this._current, "beforeBegin", this, function(){
- this._fire("beforeBegin");
- }),
- onBegin = dojo.connect(this._current, "onBegin", this, function(arg){
- this._fire("onBegin", arguments);
- }),
- onPlay = dojo.connect(this._current, "onPlay", this, function(arg){
- this._fire("onPlay", arguments);
- dojo.disconnect(beforeBegin);
- dojo.disconnect(onBegin);
- dojo.disconnect(onPlay);
- });
- if(this._onAnimateCtx){
- dojo.disconnect(this._onAnimateCtx);
- }
- this._onAnimateCtx = dojo.connect(this._current, "onAnimate", this, "_onAnimate");
- if(this._onEndCtx){
- dojo.disconnect(this._onEndCtx);
- }
- this._onEndCtx = dojo.connect(this._current, "onEnd", this, "_onEnd");
- this._current.play.apply(this._current, arguments);
- return this;
- },
- pause: function(){
- if(this._current){
- var e = dojo.connect(this._current, "onPause", this, function(arg){
- this._fire("onPause", arguments);
- dojo.disconnect(e);
- });
- this._current.pause();
- }
- return this;
- },
- gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){
- this.pause();
- var offset = this.duration * percent;
- this._current = null;
- dojo.some(this._animations, function(a){
- if(a.duration <= offset){
- this._current = a;
- return true;
- }
- offset -= a.duration;
- return false;
- });
- if(this._current){
- this._current.gotoPercent(offset / _current.duration, andPlay);
- }
- return this;
- },
- stop: function(/*boolean?*/ gotoEnd){
- if(this._current){
- if(gotoEnd){
- for(; this._index + 1 < this._animations.length; ++this._index){
- this._animations[this._index].stop(true);
- }
- this._current = this._animations[this._index];
- }
- var e = dojo.connect(this._current, "onStop", this, function(arg){
- this._fire("onStop", arguments);
- dojo.disconnect(e);
- });
- this._current.stop();
- }
- return this;
- },
- status: function(){
- return this._current ? this._current.status() : "stopped";
- },
- destroy: function(){
- if(this._onAnimateCtx){ dojo.disconnect(this._onAnimateCtx); }
- if(this._onEndCtx){ dojo.disconnect(this._onEndCtx); }
- }
- });
- dojo.extend(_chain, _baseObj);
-
- dojo.fx.chain = function(/*dojo._Animation[]*/ animations){
- // summary: Chain a list of dojo._Animation s to run in sequence
- // example:
- // | dojo.fx.chain([
- // | dojo.fadeIn({ node:node }),
- // | dojo.fadeOut({ node:otherNode })
- // | ]).play();
- //
- return new _chain(animations) // dojo._Animation
- };
-
- var _combine = function(animations){
- this._animations = animations||[];
- this._connects = [];
- this._finished = 0;
-
- this.duration = 0;
- dojo.forEach(animations, function(a){
- var duration = a.duration;
- if(a.delay){ duration += a.delay; }
- if(this.duration < duration){ this.duration = duration; }
- this._connects.push(dojo.connect(a, "onEnd", this, "_onEnd"));
- }, this);
-
- this._pseudoAnimation = new dojo._Animation({curve: [0, 1], duration: this.duration});
- dojo.forEach(["beforeBegin", "onBegin", "onPlay", "onAnimate", "onPause", "onStop"],
- function(evt){
- this._connects.push(dojo.connect(this._pseudoAnimation, evt, dojo.hitch(this, "_fire", evt)));
- },
- this
- );
- };
- dojo.extend(_combine, {
- _doAction: function(action, args){
- dojo.forEach(this._animations, function(a){
- a[action].apply(a, args);
- });
- return this;
- },
- _onEnd: function(){
- if(++this._finished == this._animations.length){
- this._fire("onEnd");
- }
- },
- _call: function(action, args){
- var t = this._pseudoAnimation;
- t[action].apply(t, args);
- },
- play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){
- 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(/*Decimal*/percent, /*Boolean?*/ andPlay){
- var ms = this.duration * percent;
- dojo.forEach(this._animations, function(a){
- a.gotoPercent(a.duration < ms ? 1 : (ms / a.duration), andPlay);
- });
- this._call("gotoProcent", arguments);
- return this;
- },
- stop: function(/*boolean?*/ gotoEnd){
- this._doAction("stop", arguments);
- this._call("stop", arguments);
- return this;
- },
- status: function(){
- return this._pseudoAnimation.status();
- },
- destroy: function(){
- dojo.forEach(this._connects, dojo.disconnect);
- }
- });
- dojo.extend(_combine, _baseObj);
-
- dojo.fx.combine = function(/*dojo._Animation[]*/ animations){
- // summary: Combine a list of dojo._Animation s to run in parallel
- // example:
- // | dojo.fx.combine([
- // | dojo.fadeIn({ node:node }),
- // | dojo.fadeOut({ node:otherNode })
- // | ]).play();
- return new _combine(animations); // dojo._Animation
- };
-})();
-
-dojo.declare("dojo.fx.Toggler", null, {
- // summary:
- // class constructor for an animation toggler. It accepts a packed
- // set of arguments about what type of animation to use in each
- // direction, duration, etc.
- //
- // example:
- // | var t = new dojo.fx.Toggler({
- // | node: "nodeId",
- // | showDuration: 500,
- // | // hideDuration will default to "200"
- // | showFunc: dojo.wipeIn,
- // | // hideFunc will default to "fadeOut"
- // | });
- // | t.show(100); // delay showing for 100ms
- // | // ...time passes...
- // | t.hide();
-
- // FIXME: need a policy for where the toggler should "be" the next
- // time show/hide are called if we're stopped somewhere in the
- // middle.
-
- constructor: function(args){
- var _t = this;
-
- dojo.mixin(_t, args);
- _t.node = args.node;
- _t._showArgs = dojo.mixin({}, args);
- _t._showArgs.node = _t.node;
- _t._showArgs.duration = _t.showDuration;
- _t.showAnim = _t.showFunc(_t._showArgs);
-
- _t._hideArgs = dojo.mixin({}, args);
- _t._hideArgs.node = _t.node;
- _t._hideArgs.duration = _t.hideDuration;
- _t.hideAnim = _t.hideFunc(_t._hideArgs);
-
- dojo.connect(_t.showAnim, "beforeBegin", dojo.hitch(_t.hideAnim, "stop", true));
- dojo.connect(_t.hideAnim, "beforeBegin", dojo.hitch(_t.showAnim, "stop", true));
- },
-
- // node: DomNode
- // the node to toggle
- node: null,
-
- // showFunc: Function
- // The function that returns the dojo._Animation to show the node
- showFunc: dojo.fadeIn,
-
- // hideFunc: Function
- // The function that returns the dojo._Animation to hide the node
- hideFunc: dojo.fadeOut,
-
- // showDuration:
- // Time in milliseconds to run the show Animation
- showDuration: 200,
-
- // hideDuration:
- // Time in milliseconds to run the hide Animation
- hideDuration: 200,
-
- /*=====
- _showArgs: null,
- _showAnim: null,
-
- _hideArgs: null,
- _hideAnim: null,
-
- _isShowing: false,
- _isHiding: false,
- =====*/
-
- show: function(delay){
- // summary: Toggle the node to showing
- return this.showAnim.play(delay || 0);
- },
-
- hide: function(delay){
- // summary: Toggle the node to hidden
- return this.hideAnim.play(delay || 0);
- }
-});
-
-dojo.fx.wipeIn = function(/*Object*/ args){
- // summary
- // Returns an animation that will expand the
- // node defined in 'args' object from it's current height to
- // it's natural height (with no scrollbar).
- // Node must have no margin/border/padding.
- args.node = dojo.byId(args.node);
- var node = args.node, s = node.style;
-
- var anim = dojo.animateProperty(dojo.mixin({
- properties: {
- height: {
- // wrapped in functions so we wait till the last second to query (in case value has changed)
- start: function(){
- // start at current [computed] height, but use 1px rather than 0
- // because 0 causes IE to display the whole panel
- s.overflow="hidden";
- if(s.visibility=="hidden"||s.display=="none"){
- s.height="1px";
- s.display="";
- s.visibility="";
- return 1;
- }else{
- var height = dojo.style(node, "height");
- return Math.max(height, 1);
- }
- },
- end: function(){
- return node.scrollHeight;
- }
- }
- }
- }, args));
-
- dojo.connect(anim, "onEnd", function(){
- s.height = "auto";
- });
-
- return anim; // dojo._Animation
-}
-
-dojo.fx.wipeOut = function(/*Object*/ args){
- // summary
- // Returns an animation that will shrink node defined in "args"
- // from it's current height to 1px, and then hide it.
- var node = args.node = dojo.byId(args.node);
- var s = node.style;
-
- var anim = dojo.animateProperty(dojo.mixin({
- properties: {
- height: {
- end: 1 // 0 causes IE to display the whole panel
- }
- }
- }, args));
-
- dojo.connect(anim, "beforeBegin", function(){
- s.overflow = "hidden";
- s.display = "";
- });
- dojo.connect(anim, "onEnd", function(){
- s.height = "auto";
- s.display = "none";
- });
-
- return anim; // dojo._Animation
-}
-
-dojo.fx.slideTo = function(/*Object?*/ args){
- // summary
- // Returns an animation that will slide "node"
- // defined in args Object from its current position to
- // the position defined by (args.left, args.top).
- // example:
- // | dojo.fx.slideTo({ node: node, left:"40", top:"50", unit:"px" }).play()
-
- var node = (args.node = dojo.byId(args.node));
-
- var top = null;
- var left = null;
-
- var init = (function(n){
- return function(){
- var cs = dojo.getComputedStyle(n);
- var pos = cs.position;
- top = (pos == 'absolute' ? n.offsetTop : parseInt(cs.top) || 0);
- left = (pos == 'absolute' ? n.offsetLeft : parseInt(cs.left) || 0);
- if(pos != 'absolute' && pos != 'relative'){
- var ret = dojo.coords(n, true);
- top = ret.y;
- left = ret.x;
- n.style.position="absolute";
- n.style.top=top+"px";
- n.style.left=left+"px";
- }
- };
- })(node);
- init();
-
- var anim = dojo.animateProperty(dojo.mixin({
- properties: {
- top: { end: args.top||0 },
- left: { end: args.left||0 }
- }
- }, args));
- dojo.connect(anim, "beforeBegin", anim, init);
-
- return anim; // dojo._Animation
-}
-
-}