//Requires Event;Style;YUI.Animation;YUI.Dom

var imageRotator = 
{
  images : [],
  loadedImages : [],
  animateImages : [],
  interval : undefined,
  current : 0,
  last : 0,
  container : undefined,
  init : function(imageContainer,imagesToAdd,pathToImages)
  {
    this.container = Dom.get(imageContainer);
    var origImage = this.container.getElementsByTagName('img')[0]
    Style.set(origImage,'zIndex','20');
    this.updateStatus((this.images.push(origImage)-1));
    var thisIndex;
    for(i=0;i < imagesToAdd.length;i++)
    {
      Dom.add(this.images[this.createImage(pathToImages+imagesToAdd[i])],this.container);
    }
  },
  createImage : function(src)
  {
    var thisIndex = this.images.push(document.createElement('img')) - 1;
    Style.set(this.images[thisIndex],'position','absolute');
    Style.set(this.images[thisIndex],'left','0px');
    Style.set(this.images[thisIndex],'top','0px');
    Style.set(this.images[thisIndex],'zIndex','10');
    YAHOO.util.Dom.setStyle(this.images[thisIndex],'opacity','0');
    var that = this;
    Event.add(this.images[thisIndex],'load',function(){that.updateStatus(thisIndex);});
    this.images[thisIndex].setAttribute('src',(src));
    return thisIndex;
  },
  start : function(time)
  {
    var that = this;
    this.interval = setInterval(function(){return that.loadNext();},time);
  },
  stop : function()
  {
    clearInterval(this.interval);
  },
  updateStatus : function(index)
  {
    var loadedImageIndex = this.loadedImages.push(this.images[index]) - 1;
    var that = this;
    this.animateImages[loadedImageIndex] = new YAHOO.util.Anim(this.loadedImages[loadedImageIndex], {opacity: {to: 0.99}}, 1.1, YAHOO.util.Easing['easeNone']);
    this.animateImages[loadedImageIndex].onComplete.subscribe(function(){return that.nextLoaded()});
  },
  loadNext : function()
  {
    if(this.loadedImages.length == 1) return;
    this.last = this.current;
    this.current = (this.current + 1) % this.loadedImages.length;
    Style.set(this.loadedImages[this.last],'zIndex','20');
    Style.set(this.loadedImages[this.current],'zIndex','30');
    this.animateImages[this.current].animate();
  },
  nextLoaded : function()
  {
    var lastImage = this.loadedImages[this.last];
    Style.set(lastImage,'zIndex','10');
    YAHOO.util.Dom.setStyle(lastImage,'opacity','0');
  }
};
/*
/Usage
*/

//Event.add(window,'load',function(){imageRotator.init('header',['thisImage.jpg','thatImage.jpg','theirImage.jpg'],'/images/thePath/toImages/');imageRotator.start(5000);});
