// 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(div,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.div=div;

  this.urls=urls;

  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('span');
		self.fade.classname='fade';
		self.fade.innerHTML=self.div.innerHTML;

    currentimg++;
    if (currentimg >= self.urls.length) currentimg=0;
		while (self.div.hasChildNodes()) self.div.removeChild(self.div.firstChild);
		if (self.urls[currentimg].homepage) {
			var a = document.createElement('a');
			a.href=self.urls[currentimg].homepage;
			a.appendChild(document.createTextNode(self.urls[currentimg].company));
			self.div.appendChild(a);
		} else {
			self.div.appendChild(document.createTextNode(self.urls[currentimg].company));
		}

    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);
    }
  }
}