// JavaScript Document

// 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.
var FadeDurationMS=1000;
var countImages = 9; //reduce the total tile count to get focus images to appear sooner and then preload the rest
var totalImages = 108;
var countFocus = 5 //reduce the total focus count to get focus images to appear sooner and then preload the rest
var totalFocus = 108;

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;
  }
}
function Shuffle(Q) {
    var J, K, T;
    for (J = Q.length - 1; J > 0; J--) {
        K = Math.floor(Math.random() * (J + 1));
        T = Q[J];
        Q[J] = Q[K];
        Q[K] = T;
    }
    return Q;
}

var imageCache = new Array();
var focusCache = new Array();

function popImageCache() {
	for(i=1;i<=countImages;i++) {
		imageCache[i-1]=i;
	}
	Shuffle(imageCache);
}

function popFocusCache() {
	for(i=1;i<=countFocus;i++) {
		focusCache[i-1]=i;
	}
	Shuffle(focusCache);
}

function getImageCacheItem() {
	if(imageCache.length==0) {
		popImageCache();
	}
	return imageCache.shift();
}

function getFocusCacheItem() {
	if(focusCache.length==0) {
		popFocusCache();
	}
	return focusCache.shift();
}

var tileID;
var tileDivID;
var tileNewSrc;
var tileFadingOut = true;

function NextImage() {
	//if(tileFadingOut) {
		var i = Math.floor(Math.random() * 9 + 1);
		tileID = 'img' + i;
		tileDivID = 'div' + i;
		//tileNewSrc = 'img/tile.jpg';
		//FadeInImage(tileID,tileNewSrc,tileDivID);
		//tileFadingOut = false;
		//setTimeout("NextImage()",1200);
	//} else {
		//tileNewSrc = 'img/' + (Math.round(Math.random() * (countImages - 1)) + 1) + '.jpg';
		tileNewSrc = 'img/' + getImageCacheItem() + '.jpg';
		//alert(tileNewSrc);
		FadeInImage(tileID,tileNewSrc,tileDivID);
		//tileFadingOut = true;
		setTimeout("NextImage()",1200);
	//}
}

var focusNewSrc;
var focusFadingOut = false;

function NextFocus() {
	if(focusFadingOut) {
		//var i = Math.round(Math.random() * 8) + 1;
		//focusID = 'img' + i;
		//focusDivID = 'div' + i;
		focusNewSrc = 'img/focus.jpg';
		FadeInImage('focus',focusNewSrc,'focusDiv');
		focusFadingOut = false;
		setTimeout("NextFocus()",1200);
	} else {
		//focusNewSrc = 'img/focus' + (Math.round(Math.random() * (countFocus - 1)) + 1) + '.jpg';
		focusNewSrc = 'img/focus' + getFocusCacheItem() + '.jpg';
		//alert(focusNewSrc);
		FadeInImage('focus',focusNewSrc,'focusDiv');
		focusFadingOut = true;
		setTimeout("NextFocus()",5000);
	}
}

