////////////////////////////////////////////////////////////////
///////////////Name: FxTimer////////////////////////////////////
///////////////Author: Jason Throm//////////////////////////////
///////////////Requires MooTools 1.2////////////////////////////
////////////////////////////////////////////////////////////////

var FxTimer = new Class({
	initialize: function(obj){
		this.events = obj.events;
		this.settings = obj.settings;
		this.timer = null;
		this.startTime = null;
		this.currentTime = null;
		this.elapsed = 0;
	},	
	tick: function(){
		this.events.each(function(ev){
			if(ev.time){
			    if(ev.time == this.elapsed){
				    ev.fn.run(ev, this);
			    }
			}else if(ev.interval){
			    if( (this.elapsed % ev.interval) == 0){
			        ev.fn.run(ev, this);
			    }
			}
		}, this);
	},
	start: function(){
 		this.startTime = (this.elapsed>0) ? new Date().getTime() - (this.elapsed*1000) : new Date().getTime();
		this.timer = setInterval(function(){
			this.currentTime = new Date().getTime();
			this.elapsed = Math.round((this.currentTime - this.startTime)/1000);			
			this.tick(); 
		}.bind(this), this.settings.sample);
	},
	stop: function(){
		clearInterval(this.timer);
	},
	reset: function(){
		clearInterval(this.timer);
		this.timer = null;
		this.elapsed = 0;
	}
		
});



