var W3CDOM = (document.createElement && document.getElementsByTagName);

var cache = new Array();
var hcache = new Array();
var alternates = new Array();
var prevarrow;
var imgtoreplace;
var linktoreplace;
var nextarrow;
var currentimage;
var globalopacity = 0;
var fading = 0;
var cached = 0;
var visible = "visible";
var currentloading = 0;
var currenthloading = 0;
var useAlternates = 0;
var linklist;

function init()
{
  if (!W3CDOM) return;

  if (document.referrer.indexOf("jpollackphoto.com") == -1)
  {
    if (
      document.referrer.indexOf("weddin") != -1 ||
      document.referrer.indexOf("bride") != -1 ||
      document.referrer.indexOf("bridal") != -1 ||
      document.referrer.indexOf("stlwed") != -1 ||
      document.referrer.indexOf("onewed") != -1
      )
    {
      window.location = "http://www.jpollackphoto.com/weddings.shtml";
    }
    if (
      document.referrer.indexOf("baby") != -1 ||
      document.referrer.indexOf("babby") != -1 ||
      document.referrer.indexOf("babie") != -1 ||
      document.referrer.indexOf("child") != -1 ||
      document.referrer.indexOf("famil") != -1
      )
    {
      window.location = "http://www.jpollackphoto.com/babieschildrenfamilies.shtml";
    }
    if (
      document.referrer.indexOf("matern") != -1 ||
      document.referrer.indexOf("pregna") != -1
      )
    {
      window.location = "http://www.jpollackphoto.com/maternity.shtml";
    }
    if (
      document.referrer.indexOf("editor") != -1 ||
      document.referrer.indexOf("corpor") != -1 ||
      document.referrer.indexOf("commerc") != -1
      )
    {
      window.location = "http://www.jpollackphoto.com/commercialeditorial.shtml";
    }
  }
  //if (top != self)
  //{
    //top.location.href = window.location.href;
  //}

  if (useAlternates == 0)
  {
    document.getElementById('zog').style.visibility = "hidden";
  }

  document.oncontextmenu = rightProtect;
  document.body.style.cursor = "wait";
  currentimage = first;
  var toreplace = document.getElementById('previous');
  prevarrow = toreplace.getElementsByTagName('img')[0];

  toreplace = document.getElementById('toreplace');
  imgtoreplace = toreplace.getElementsByTagName('img')[0];
  linktoreplace = document.getElementById('linktoreplace');

  toreplace = document.getElementById('next');
  nextarrow = toreplace.getElementsByTagName('img')[0];

  currentloading = first;
  currenthloading = first;
  doLoad();

  doRefresh();
  //refreshArrows();
}

function rightProtect(e)
{
  if (window.event)
  {
    var srcEl = event.srcElement ? event.srcElement : event.target;
  }
  else
  {
    var srcEl = e.srcElement ? e.srcElement : e.target;
  }

  var className = srcEl.className;

  if (className.indexOf('protected') != -1)
  {
    window.alert("These photos are copyrighted by J. Pollack Photography, LLC. All rights reserved. Unauthorized use prohibited.");
    return false;
  }
  else
  {
    return true;
  }
}

function doLoad()
{
  cache[currentloading] = new Image();
  cache[currentloading].onload = function()
  {
    ++cached;
    if (currentloading < max)
    {
      ++currentloading;
      doLoad();
    }
    else
    {
      doHLoad();
    }
  }
  if (useAlternates == 0)
  {
    cache[currentloading].src = prefix + "/" + currentloading + "s.jpg";
  }
  else
  {
    cache[currentloading].src = alternates[currentloading];
  }
}

function doHLoad()
{
  hcache[currenthloading] = new Image();
  hcache[currenthloading].onload = function()
  {
    if (imgtoreplace.src == cache[currenthloading].src)
    {
      imgtoreplace.onload = fixBack;
      imgtoreplace.src = hcache[currenthloading].src;
      // imgtoreplace.onload = makeVisible;
      if (linklist)
      {
        linktoreplace.href=linklist[currenthloading];
      }
    }
    cache[currenthloading] = hcache[currenthloading];
    if (currenthloading < max)
    {
      ++currenthloading;
      doHLoad();
    }
  }
  if (useAlternates == 0)
  {
    hcache[currenthloading].src = prefix + "/" + currenthloading + ".jpg";
  }
  else
  {
    hcache[currenthloading].src = alternates[currenthloading];
  }
}

function fixBack()
{
  imgtoreplace.onload = makeVisible;
}

function init_slideshow()
{
  visible = "hidden";
  init();
}

function nextImage()
{
  if (cached < currentimage - first)
  {
    window.setTimeout("nextImage();", 50);
  }
  if (currentimage < max)
  {
    ++currentimage;
  }
  else
  {
    currentimage = first;
  }
  doRefresh();
}

function previousImage()
{
  if (currentimage > first)
  {
    --currentimage;
  }
  else
  {
    currentimage = max;
  }
  doRefresh();
}

function doRefresh()
{
  // if (cached < (max - first + 1))
  if (cached < 1)
  {
    setOpacity(imgtoreplace, (max - first + 1 - cached) * 100 / (max - first + 1));
    window.setTimeout("doRefresh();", 50);
    return;
  }
  else
  {
    imgtoreplace.onload = makeVisible;
    document.getElementById('loading').style.visibility = "hidden";
    document.getElementById('private_galleries').style.visibility = "visible";
    document.body.style.cursor = "default";
  }
  setOpacity(imgtoreplace, 0);
  imgtoreplace.src = cache[currentimage].src;
  if (linklist)
  {
    linktoreplace.href=linklist[currentimage];
  }
  //imgtoreplace.style.visibility = "hidden";
  //prevarrow.style.visibility = "hidden";
  //nextarrow.style.visibility = "hidden";
  refreshArrows();
  if (visible == "hidden")
  {
    if (currentimage == 0)
    {
      window.setTimeout("nextImage();", 7000);
      --cached;
      ++first;
    }
    else
    {
      window.setTimeout("nextImage();", 5000);
    }
  }
}

function refreshArrows()
{
  prevarrow.style.visibility = visible;
  //(currentimage == first) ? "hidden" : "visible";
  nextarrow.style.visibility = visible;
  //(currentimage == max) ? "hidden" : "visible";
}

function makeVisible()
{
  window.clearTimeout(fading);
  setOpacity(imgtoreplace, 0);
  fadeIn();
  imgtoreplace.style.visibility = "visible";
  // refreshArrows();
}

function fadeIn()
{
  if (globalopacity <= 100)
  {
    setOpacity(imgtoreplace, globalopacity);
    globalopacity += 20;
    if (globalopacity > 100)
    {
      globalopacity = 100;
    }
    fading = window.setTimeout("fadeIn();", 50);
  }
}

function setOpacity(obj, opacity)
{
  globalopacity = opacity;
  opacity = (opacity == 100)?99.999:opacity;

  // IE/Win
  obj.style.filter = "alpha(opacity = "+opacity+")";
  if (opacity >= 99.999)
  {
    obj.style.filter = "";
  }

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

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

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

  obj.style.visibility = "visible";
}
