var FadeFF = false;
var FadeDurationMS=500;
function SetOpacity(object,opacityPct)
{
  // IE.
  object.style.filter = 'alpha(opacity=' + opacityPct + ')';
   // Old mozilla and firefox
  if (FadeFF)
    {
      object.style.MozOpacity = opacityPct/100;
   // Everything else.
      object.style.opacity = opacityPct/100; //88 don't fade in FF
    }
}


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 FadeInImage2(foregroundID,newImage,backgroundID)
{
  var foreground=document.getElementById(foregroundID);
  foreground.src = newImage;
}
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.zIndex = 5;
      foreground.style.zIndex = 8;
if (slideCache[newImage] == null)
  {
    slideCache[newImage] = new Image;
    slideCache[newImage].src = newImage;
  }
  imgobj = slideCache[newImage];

  //background.style.width = imgobj.width + 'px';
  //background.style.height = imgobj.height + 'px';
      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;
  }
}
//888 only one slideshow per page for now, but only 1 gallery per page anyway, so fine
var slideCache = new Array();
var firsttime = 1;
function RunSlideShow(pictureID,backgroundID,imageFiles,displayMillis,fadeMillis,doFadeFF)
{
  FadeDurationMS = fadeMillis;
  var imageSeparator = imageFiles.indexOf(";");
  var nextImage = imageFiles.substring(0,imageSeparator);
  FadeFF = doFadeFF;

  if (!firsttime)
    FadeInImage(pictureID,nextImage,backgroundID);
  firsttime = 0;
  var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)+ ';' + nextImage;
  setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displayMillis+","+fadeMillis +","+doFadeFF+ ")",displayMillis);
  // Cache the next image to improve performance.
  imageSeparator = futureImages.indexOf(";");
  nextImage = futureImages.substring(0,imageSeparator);
  if (slideCache[nextImage] == null)
  {
    slideCache[nextImage] = new Image;
    slideCache[nextImage].src = nextImage;
  }
}

