JavaScriptのタイマーでアニメーションのように開始・終了・間隔を指定するときとか〜

canvasでいろいろ作っているのですが、まだ完成に至りません。
その過程でできたタイマーを掲載します。
サンプルはこちら→W7工廠分室|トップページ
(サンプルと以下の例は微妙に違います。)

function play(a,s,e,f){//a:したいこと,s:開始時間,e:終了時間,f:更新間隔時間
  var animation=function(){
   a();
  }
  setTimeout(function(){
    setTimeout("clearInterval('"+setInterval(animation,f)+"')",e);
  },s);		
}

※注意
・精度については多少前後します。
・s=0,e=3000,f=500など更新間隔が大きい場合、最期の処理が間に合わず2500とかでストップします。
 その場合はe=3001など少し増やすとうまくいきます。