/* (c) 2001 Ulrich Kritzner */

var u_timer_elapse=0;
var u_timer_running=0;
var u_timer_objects=new Array();
var u_timer_objcount=0;
var u_timer_active;
var u_timer_event_handler;

function u_timer_set_event_handler(eventhandler)
{
  u_timer_event_handler=eventhandler;
}

function u_timer_timer()
{
  var i;
  var r=0;
  if (u_timer_running)
  {
    for (i=0;i<u_timer_objcount;i++)
    {
      if (u_timer_objects[i].timestep>0)
      {
        r++;
        u_timer_objects[i].timeval=(u_timer_objects[i].timeval+1)%u_timer_objects[i].timestep;
	if (u_timer_objects[i].timeval==0)
        {
	  u_timer_objects[i].timeval=0;
	  u_timer_objects[i].TimerFunc();
        }
      }
    }
    if (r>0)
      u_timer_active=window.setTimeout("u_timer_timer()",u_timer_elapse);
    else
      u_timer_stop();
  }
}

function u_timer_add_object(object)
{
  if (object.TimerFunc)
  {
    u_timer_objects[u_timer_objcount]=object;
    u_timer_objcount++;
  }
}

function u_timer_stop()
{
  u_timer_running=0;
  if (u_timer_active)
    window.clearTimeout(u_timer_active);
  if (u_timer_event_handler)
    u_timer_event_handler(0);
}

function u_timer_start(elapse)
{
  u_timer_stop();
  if (u_timer_event_handler)
    u_timer_event_handler(1);
  u_timer_elapse=elapse;
  u_timer_running=1;
  u_timer_active=window.setTimeout("u_timer_timer()",u_timer_elapse);
}

function u_timer_continue()
{
  if (u_timer_running==0)
  {
    if (u_timer_event_handler)
      u_timer_event_handler(1);
    u_timer_running=1;
    u_timer_active=window.setTimeout("u_timer_timer()",u_timer_elapse);
  }
}

