var Animator = function()
{

	/**
	 * 
	 * PUBLIC
	 * 
	 * */
	
	this.initialize = function(){
		
	}
	/**
	 * Adiciona um novo elemento a ser animado
	 * 
	 * @param animID String id da animacao
	 * @param element Element elemento que será animado
	 * @param on String nome do evento que será o gatilho para o inicio da animacao
	 * @param target Element Elemento que será o disparador do evento
	 * 
	 * */
	this.addElement=function(elementID/*Element*/,anim/*AbstractAnim*/,on/*String*/,target/*Element*/,delay/*Number*/,duration/*Number*/,transition/*Object*/){

		if(!duration) duration=1;
		
		if(!transition) transition = Fx.Transitions.Cubic.easeInOut;
		
		if(!delay) delay=0;
		
		var timer;
		
		var playFunction=function(){
			
			if(timer) clearTimeout(timer);
			
			var animInstance/*AbstractAnim*/ = new anim(elementID/*String*/,duration/*int*/,transition/*Object*/);
			
			animInstance.play();
		}
		
		var onEvent=function(){
			
			timer = playFunction.delay(delay*1000);
		}
		
		
		
		target.addEvent(on,onEvent.bindWithEvent(this));
	}
	
	this.startup=function(element/*String*/,style/*String*/,value/*Object*/){
		
		var onDomReady=function(){
			document.id(element).setStyle(style,value);
		}
		
		window.addEvent("domready",onDomReady);
		
	}
	
	/**
	 * 
	 * PRIVATE
	 * 
	 * */


	/**
	 * 
	 * HANDLERS
	 * 
	 * */
	
	
	
}

Animator = new Class(new Animator());
Animator.instance=null;
Animator.getInstance=function(){
	
	if(Animator.instance == null) Animator.instance = new Animator();
	
	return Animator.instance;
	
}

Animator.add=function(elementID/*String*/,anim/*AbstractAnim*/,on/*String*/,target/*Element*/,delay/*Number*/){
	Animator.getInstance().addElement(elementID,anim,on,target,delay);
}

Animator.startup=function(element/*String*/,style/*String*/,value/*Object*/){
	Animator.getInstance().startup(element,style,value);
}
