// Browser Slide-Show script. With image cross fade effect for those browsers
// that support it.
// Script copyright (C) 2004-2011 www.cryer.co.uk.
// Script is free to use provided this copyright header is included.
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 slideCache = new Array();
function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs)
{
   var imageSeparator = imageFiles.indexOf(";");
   var nextImage = imageFiles.substring(0,imageSeparator);
   if (slideCache[nextImage] && slideCache[nextImage].loaded)
   {
      FadeInImage(pictureID,nextImage,backgroundID);
      var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length) + ';' + nextImage;
      setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")", displaySecs*1000);
      // Identify the next image to cache.
      imageSeparator = futureImages.indexOf(";");
      nextImage = futureImages.substring(0,imageSeparator);
   } else {
      setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+imageFiles+"',"+displaySecs+")", 250);
   }
   // Cache the next image to improve performance.
   if (slideCache[nextImage] == null)
   {
      slideCache[nextImage] = new Image;
      slideCache[nextImage].loaded = false;
      slideCache[nextImage].onload = function(){this.loaded=true};
      slideCache[nextImage].src = nextImage;
   }
}

