// Browser Slide-Show script. With image cross fade effect for those browsers
// that support it.
// Script copyright (C) 2004-2008 www.cryer.co.uk.
// Script is free to use provided this copyright header is included.
// Modified by Reuben for use with multiple slideshows

var FadeDurationMS=1000;

function SetOpacity(object,opacityPct)
{
  // IE.
  object.style.filter = 'alpha(opacity=' + opacityPct + ')';

  // Old mozilla and firefox

  object.style.MozOpacity = opacityPct/100;

  // Everything else.

  object.style.opacity = opacityPct/100;
}

function ChangeOpacity(id,msDuration,msStart,fromO,toO)
{
  var element=document.getElementById(id);
  var msNow = (new Date()).getTime();
  var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
  if (opacity>=100)
  {
    SetOpacity(element,100);
    element.timer = undefined;
  }

  else if (opacity<=0)
  {
    SetOpacity(element,0);
    element.timer = undefined;
  }
  else 
  {
    SetOpacity(element,opacity);
    element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",10);
  }
}
function FadeInImage(foregroundID,newImage,backgroundID)
{
  var foreground=document.getElementById(foregroundID);
  if (foreground.timer) window.clearTimeout(foreground.timer);
  if (backgroundID)
  {
    var background=document.getElementById(backgroundID);
    if (background)
    {
      if (background.src)
      {
        foreground.src = background.src; 
        SetOpacity(foreground,100);
      }
      background.src = newImage;
      background.style.backgroundImage = 'url(' + newImage + ')';
      background.style.backgroundRepeat = 'no-repeat';
      var startMS = (new Date()).getTime();
      foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",10);
    }
  } else {
    foreground.src = newImage;
  }
}

var allSlideShows = new Array();
function continueSlideShow(pictureID) {
	var myss = allSlideShows[pictureID];
	if (myss.slideCache[myss.currentImage].loaded) {
		FadeInImage(pictureID,myss.slideCache[myss.currentImage].src,myss.backgroundID)
		if (myss.currentImage < myss.slideCache.length-1)
			myss.currentImage++;
		else
			myss.currentImage = 0;
		setTimeout("continueSlideShow('"+pictureID+"')",myss.slideSpeed);
	}
	else 
		setTimeout("continueSlideShow('"+pictureID+"')",100);//waiting for first image to load
}

function startSlideShow(pictureID,backgroundID,slideSpeed,imageArray)
{
	var myss = new Object();
	allSlideShows[pictureID] = myss;
	myss.backgroundID = backgroundID;
	myss.slideSpeed = slideSpeed;
	myss.currentImage = 0;
	myss.slideCache = new Array();
	for (slidepici=0;slidepici<imageArray.length;slidepici++)
	{
		myss.slideCache[slidepici] = new Image();
		myss.slideCache[slidepici].loaded = false;
		myss.slideCache[slidepici].onload = function(){this.loaded=true};
		myss.slideCache[slidepici].src = imageArray[slidepici];
	}

	if (slidepici>0)
		setTimeout("continueSlideShow('"+pictureID+"')",myss.slideSpeed);
}
