
function Anitem(id,func,delay,speed)
{this.id=id;this.delay=delay;this.func=func;this.speed=speed;this.stopped=0;this.step=0;this.last=0;}
function Animate_line(animator,anitem,tm)
{var obj=animator.doc.getElementById(anitem.id);var y=ObjGetY(obj);var h=ObjGetH(obj);if(y+h<0)
{return 0;}
ObjMoveBy(obj,0,-20);return 1;}
function Animator(win,doc,interval)
{this.win=win;this.doc=doc;this.timerId=null;this.started=false;this.interval=interval;this.items=new Array();this.numitems=0;this.starttm=0;this.elapsed=0;this.pasuetm=0;this.add=function(id,func,delay)
{var item=new Anitem(id,func,delay,1);this.items[id]=item;this.numitems++;return item;};this.remove=function(id)
{var i=0;delete this.items[id];this.numitems--;};this.start=function(startnow)
{this.started=true;if(typeof(startnow)=="boolean"&&startnow==true)
{this.stopTimer();this.startTimer(100);}else
{this.stopTimer();this.startTimer(this.interval);}
this.starttm=Time();this.elapsed=0;};this.stop=function()
{this.stopTimer();this.started=false;};this.pause=function()
{this.stopTimer();this.pausetm=Time();};this.resume=function()
{this.starttm+=(Time()-this.pausetm);};this.startTimer=function(interval)
{if(interval>0)
{this.timerId=setTimeout(this.timerFunc,interval);}};this.stopTimer=function()
{if(this.timerId!=null)
{clearTimeout(this.timerId);this.timerId=0;}};var Animator=this;this.timerFunc=function()
{if(this!=Animator)
{return Animator.timerFunc();}
var numrunning=0;for(var id in this.items)
{var item=this.items[id];if(!item.stopped)
{var obj=this.doc.getElementById(item.id);if(obj)
{tmnow=Time();this.elapsed=tmnow-this.starttm;if(this.elapsed<item.delay)
{numrunning++;continue;}
else
{var func=item.func;var ret=func(this,item,this.elapsed-item.delay);item.last=this.elapsed-item.delay;if(ret)
{numrunning++;}
else
{item.stopped=1;}}}}}
if(numrunning>0)
{this.startTimer(this.interval);}else
{}};}
debug("animator.js");
