var TimeLine = function(){
this.order = [];
}
TimeLine.prototype.add = function( t , callback ){
this.order.push({
timeout : t,
callback : callback
});
}
TimeLine.prototype.fire = function( ff ){
for(var i = 0 , len = this.order.length ; i < this.order.length ; i++){
var timeout = this.order[i].timeout;
var fn = this.order[i].callback;
timeout = Math.max( timeout - ( ff || 0 ) , 0 );
setTimeout( fn , timeout );
}
}
var t = new TimeLine();
t.add( 1000 , function(){
console.log("1000");
});
t.add( 3000 , function(){
console.log("3000");
});
t.fire( 2000 );