/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

dojo.provide("dojo.animation.AnimationSequence");
dojo.require("dojo.animation.AnimationEvent");
dojo.require("dojo.animation.Animation");
dojo.deprecated("dojo.animation.AnimationSequence is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
dojo.animation.AnimationSequence = function (repeatCount) {
	this._anims = [];
	this.repeatCount = repeatCount || 0;
};
dojo.lang.extend(dojo.animation.AnimationSequence, {repeatCount:0, _anims:[], _currAnim:-1, onBegin:null, onEnd:null, onNext:null, handler:null, add:function () {
	for (var i = 0; i < arguments.length; i++) {
		this._anims.push(arguments[i]);
		arguments[i]._animSequence = this;
	}
}, remove:function (anim) {
	for (var i = 0; i < this._anims.length; i++) {
		if (this._anims[i] == anim) {
			this._anims[i]._animSequence = null;
			this._anims.splice(i, 1);
			break;
		}
	}
}, removeAll:function () {
	for (var i = 0; i < this._anims.length; i++) {
		this._anims[i]._animSequence = null;
	}
	this._anims = [];
	this._currAnim = -1;
}, clear:function () {
	this.removeAll();
}, play:function (gotoStart) {
	if (this._anims.length == 0) {
		return;
	}
	if (gotoStart || !this._anims[this._currAnim]) {
		this._currAnim = 0;
	}
	if (this._anims[this._currAnim]) {
		if (this._currAnim == 0) {
			var e = {type:"begin", animation:this._anims[this._currAnim]};
			if (typeof this.handler == "function") {
				this.handler(e);
			}
			if (typeof this.onBegin == "function") {
				this.onBegin(e);
			}
		}
		this._anims[this._currAnim].play(gotoStart);
	}
}, pause:function () {
	if (this._anims[this._currAnim]) {
		this._anims[this._currAnim].pause();
	}
}, playPause:function () {
	if (this._anims.length == 0) {
		return;
	}
	if (this._currAnim == -1) {
		this._currAnim = 0;
	}
	if (this._anims[this._currAnim]) {
		this._anims[this._currAnim].playPause();
	}
}, stop:function () {
	if (this._anims[this._currAnim]) {
		this._anims[this._currAnim].stop();
	}
}, status:function () {
	if (this._anims[this._currAnim]) {
		return this._anims[this._currAnim].status();
	} else {
		return "stopped";
	}
}, _setCurrent:function (anim) {
	for (var i = 0; i < this._anims.length; i++) {
		if (this._anims[i] == anim) {
			this._currAnim = i;
			break;
		}
	}
}, _playNext:function () {
	if (this._currAnim == -1 || this._anims.length == 0) {
		return;
	}
	this._currAnim++;
	if (this._anims[this._currAnim]) {
		var e = {type:"next", animation:this._anims[this._currAnim]};
		if (typeof this.handler == "function") {
			this.handler(e);
		}
		if (typeof this.onNext == "function") {
			this.onNext(e);
		}
		this._anims[this._currAnim].play(true);
	} else {
		var e = {type:"end", animation:this._anims[this._anims.length - 1]};
		if (typeof this.handler == "function") {
			this.handler(e);
		}
		if (typeof this.onEnd == "function") {
			this.onEnd(e);
		}
		if (this.repeatCount > 0) {
			this._currAnim = 0;
			this.repeatCount--;
			this._anims[this._currAnim].play(true);
		} else {
			if (this.repeatCount == -1) {
				this._currAnim = 0;
				this._anims[this._currAnim].play(true);
			} else {
				this._currAnim = -1;
			}
		}
	}
}});

