VZT.appcore.animations = new Class({
    Implements:[VZT.Base,Events],
    animators: [],                      //array of animators

    /**
     * runs an animation
     * @param name  name of animation to run
     * @param object object to run the animation o
     * @param args  arguments for the animation
     * @param complete  complete event
     */
	runAnimation: function(name, object, args, complete){
		if(object === null)
			return;

		for(i=0; i<this.animators.length; i++)
		{
			if(this.animators[i].name === name)
				return this.animators[i].start(object, args, complete);
		}


		//no animator found
		return null;
	},

    /**
     * Reverts an animation
     * @param name name of animation to revert
     * @param object object to preform the animation on
     * @param args  arguments for the animation
     * @param complete  what to do when complete
     */
	revertAnimation: function(name, object, args, complete){
		if(object === null)
			return;

		for(i=0; i<this.animators.length; i++)
		{
			if(this.animators[i].name === name)
				return this.animators[i].revert(object, args, complete);
		}

		//no animator found
		return null;
	},

    /**
     * Stops a running animation
     * @param name animation to stop
     * @param object object to apply animation too
     * @param args
     */
	stopAnimation: function(name, object, args){

		for(i=0; i<this.animators.length; i++)
		{
			if(animators[i].name === name && (this.hasPageState(this.animators[i].startPageState) || this.animators[i].startPageState === "all"))
				return animators[i].stop(object, args);
		}


		//no animator found
		return null;
	},




    /**
     * Loads an animation
     * @param animator
     */
	loadAnimation: function(animator)
	{

		this.animators[this.animators.length] = animator;
		return true;

	}
});
