function photofader(nm, mainDiv, imgArr)
{
  this.name = nm;
  this.imgArr = imgArr;
  this.curImg = 0;
  this.curDiv = 1;

  var mainDv = document.getElementById(mainDiv);

  document.pfObj = this;

  document.write("<style type='text/css'>\n");
  document.write("#pf_photo1 img { visibility:hidden; }\n");
  document.write("#pf_photo1 { position:absolute; z-index: 1; }\n");
  document.write("#pf_photo2 { position:absolute; z-index: 0; }\n");
  document.write("</style>");

  this.initImages = function()
  {
    document.write("<scr");
    document.write("ipt type='text/javascript'>\n");
    for (var i = 0; i < this.imgArr.length; i++)
    {
      document.write("var img" + i + " = new Image();\n");
      document.write("img" + i + ".src = '" + this.imgArr[i] + "';\n");
    }
    document.write("document.pfObj.start();\n");
    document.write("</scr");
    document.write("ipt>\n");
  };

  this.start = function()
  {
    var hldr1 = "pf_photo1";

    var dv1 = document.createElement("div");
    dv1.id = "pf_photo1";
    dv1.innerHTML = "<img src='" + imgArr[0] + "' />";
    var dv2 = document.createElement("div");
    dv2.id = "pf_photo2";

    mainDv.appendChild(dv1);
    mainDv.appendChild(dv2);

    image1 = document.getElementById(hldr1).childNodes[0];

    setOpacity(image1, 0);
    image1.style.visibility = 'visible';
    fadeIn(hldr1, null, 0);
  };

  this.initImages();
}

function setOpacity(img, opacity)
{
  if (img == null)
  {
    return;
  }
  opacity = (opacity == 100) ? 99.999 : opacity;

  // IE/Win
  img.style.filter = "alpha(opacity:" + opacity + ")";

  // Safari<1.2, Konqueror
  img.style.KHTMLOpacity = opacity / 100;

  // Older Mozilla and Firefox
  img.style.MozOpacity = opacity / 100;

  // Safari 1.2, newer Firefox and Mozilla, CSS3
  img.style.opacity = opacity / 100;
}

function fadeIn(newId, oldId, opacity)
{
  if (document.getElementById)
  {
    var newImg = document.getElementById(newId).childNodes[0];
    var oldImg = oldId == null ? null : document.getElementById(oldId).childNodes[0];
    if (opacity < 100)
    {
      speed = (speed < 2) ? 2 : speed;
      setOpacity(newImg, opacity);
      setOpacity(oldImg, 100 - opacity);
      opacityDif = Math.ceil((100 - opacity) / speed);
      opacity += opacityDif;
      window.setTimeout(function() { fadeIn(newId, oldId, opacity, 100); });
    }
    else
    {
      setTimeout("swapImages()", delay * 1000);
    }
  }
}

function swapImages()
{
  // find out which
  if (document.pfObj.curImg == document.pfObj.imgArr.length - 1)
  {
    document.pfObj.curImg = 0;
  }
  else
  {
    ++document.pfObj.curImg;
  }

  // now get the div to hld the new image
  var dvName = (document.pfObj.curDiv == 1) ? "pf_photo2" : "pf_photo1";
  var eDivName = (document.pfObj.curDiv == 1) ? "pf_photo1" : "pf_photo2";
  document.pfObj.curDiv = (document.pfObj.curDiv == 1) ? 2 : 1;

  var tgtDiv = document.getElementById(dvName);
  var eDiv = document.getElementById(eDivName);

  // now fill the target div
  tgtDiv.innerHTML = "<img src='" + document.pfObj.imgArr[document.pfObj.curImg] + "' style='visibility:hidden;' />";

  //move the divs around in z-index
  eDiv.style.zIndex = 0;
  tgtDiv.style.zIndex = 1;

  // And finally fade in the image

  var img = tgtDiv.childNodes[0];

  setOpacity(img, 0);
  img.style.visibility = 'visible';
  fadeIn(tgtDiv.id, eDiv.id, 0);
}
