function imgCycle(dir) { with (this)
{
 stop();
 currImg += dir;
 currImg = currImg % data.length;
 if (currImg < 0) currImg += data.length;
 var imgRef = parLyr.document.images[myName + 'Img'];
 var f = imgRef.filters;
 if (f&&f.length&&f[0]) f[0].Apply();
 imgRef.src = data[currImg].src;
 if (f&&f.length&&f[0]) f[0].Play();
}}

function imgPlay() { with (this)
{
 cycle(1);
 timer = setTimeout(myName + '.play()', delay);
}}

function imgStop()
{
 clearTimeout(this.timer);
 this.timer = null;
}

function ImageCycle(myName, delay, parLyr)
{
 this.myName = myName;
 this.delay = delay;
 this.timer = 0;
 this.parLyr = (document.layers && parLyr ? eval(parLyr) : window);
 this.currImg = 0;
 this.data = new Array();
 for (var i = 3; i < arguments.length; i++)
 {
  // Preload images into an array before swapping.
  this.data[i - 3] = new Image();
  this.data[i - 3].src = arguments[i];
 }
 this.cycle = imgCycle;
 this.play = imgPlay;
 this.stop = imgStop;
}