// Crossfader
//
// Takes an image element and an array of URLs.
// Continuously cross-fades the image with a random image chosen from the array.
function crossfade(img,urls) {
  var self=this;
  var currentimg=0;

  var d=new Date();
  var fadestart=d.getTime();

  this.imginterval=7000; //  milliseconds between images
  this.fadeinterval=800; //  milliseconds to complete a fade
  this.img=img;

  this.urls=new Array();
  for (var i=0;i<urls.length;i++) {
    this.urls[i]=new Image;
    this.urls[i].src=urls[i];
  }

  if (this.urls.length > 1) {
    var hpheader=document.getElementById('hpheader');
    setTimeout(startFading,self.imginterval);
  }

  function startFading() {
    if (self.fade) {
      hpheader.removeChild(self.fade);
    }

    self.fade=document.createElement('img');
    self.fade.style.width="876px";
    self.fade.style.height="265px";
    self.fade.style.position='absolute';
    self.fade.style.top='0px';
    self.fade.style.left='0px';
    self.fade.src=self.img.src;

    currentimg++;
    if (currentimg >= self.urls.length) currentimg=0;
    self.img.src=self.urls[currentimg].src;
    hpheader.appendChild(self.fade);
    var d=new Date();
    fadestart=d.getTime();
    doFade();
    setTimeout(startFading,self.imginterval);
  }

  function doFade() {
    var d=new Date();
    var now=d.getTime();
    var elapsed=now-fadestart;

    if (elapsed > self.fadeinterval) {
      hpheader.removeChild(self.fade);
      self.fade=null;
    } else {
      var opacity=(1-(elapsed/self.fadeinterval));
      self.fade.style.opacity=opacity;
      self.fade.style.filter='alpha(opacity='+opacity*100+')';
      setTimeout(doFade,50);
    }
  }
}