/* the master interval is the interval between 2 handleInterval function executions

* specified in miliseconds

* WARNING: all other intervals must be multiples of masterInterval

*/

var masterInterval = 1000;



/*      Definition of handle class

*  it keeps 3 values:

*  Interval - the interval for the component

*  functionName - the name of the rotation function

*  counter - internaly used for calling the rotating function at the right time

*/

function handle(interval, functionName){

  this.Interval = interval;

  this.functionName = functionName;

  this.counter = interval;

}



/*     Definition of handleInterval class

*  addHandle - adds another rotating picture rotate function to handle

*  handleInterval - checks the counters of all handlers and if time then calls 

*                  the specified rotating picture function

*/

function handleInterval(){

  this.handles = new Array();

  

  this.addHandle = function addHandle(interval, functionName){

    this.handles[ this.handles.length ] = new handle( interval, functionName );

  }

  this.handleInterval = function handleInterval()

  {

    var i;

    for(i = 0 ; i < this.handles.length ; i++ )

    {

      this.handles[i].counter -= masterInterval;

      if ( this.handles[i].counter == 0 )

      {

        this.handles[i].counter = this.handles[i].Interval;

        eval(this.handles[i].functionName);

      }

    }

  }

}



hi = new handleInterval();

window.setInterval("hi.handleInterval()", masterInterval);


