var g_oPhotoHolder;
var g_oImage;
var g_oTitle;
var gFadeImageArray = new Array();
var gFadeClickArray = new Array();
var gFadeTitleArray = new Array();
var gImageCurrentIndex;
var gImageNextIndex;
var gFadeTimer;
var gPause = false;
var gOpacity;

function fadeInit(ImageArray, DivWrapperId, ImgId, ClickArray, ProjectTitleWrapperId, ProjectTitleArray) {
  gFadeImageArray = ImageArray;
  gFadeClickArray = ClickArray;
  gImageCurrentIndex = 0;
  gImageNextIndex = 1;
  g_oPhotoHolder = document.getElementById(DivWrapperId);
  g_oImage = document.getElementById(ImgId);
  g_oTitle = document.getElementById(ProjectTitleWrapperId);
  gFadeTitleArray = ProjectTitleArray;
  gPause = false;
  g_oPhotoHolder.style.cursor = 'pointer';
  if( 1 >= gFadeImageArray.length )
  {
	g_oPhotoHolder.style.cursor = 'default';
    return true;
  }
  
  fadeReset();
}

//The setOpacity function is passed an object and an opacity value. It then sets the opacity of the supplied object using four proprietary ways. It also prevents a flicker in Firefox caused when opacity is set to 100%, by setting the value to 99.999% instead.

function setOpacity(opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  
  // IE/Win
  g_oImage.style.filter = "alpha(opacity:"+opacity+")";
  
  // Safari<1.2, Konqueror
  g_oImage.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
  g_oImage.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  g_oImage.style.opacity = opacity/100;
}
//The fadeIn function uses a Timeout to call itself every 100ms with an object Id and an opacity. The opacity is specified as a percentage and increased 10% at a time. The loop stops once the opacity reaches 100%:

function fadeIn() {
  if (!gPause)
  {
    if (gOpacity <= 100) {
      setOpacity(gOpacity);
      gOpacity += 5;
      gFadeTimer = window.setTimeout("fadeIn()", 50);
	  if ( gOpacity == 50 )
	  {
	    if ( "undefined" != typeof(g_oImage) && null != g_oImage && "undefined" != typeof(gFadeTitleArray) && null != gFadeTitleArray && 0 < gFadeTitleArray.length )
        {
          g_oTitle.innerHTML = gFadeTitleArray[gImageCurrentIndex];
        }
	  }
    }
	else
	{
      fadeReset();
	}
  }
}

function fadeReset()
{
  gImageNextIndex=(this.gImageCurrentIndex<gFadeImageArray.length-1)? this.gImageCurrentIndex+1 : 0;


  gOpacity = 0;
  setOpacity(gOpacity);
  g_oImage.style.visibility = 'visible';
  
  g_oPhotoHolder.style.backgroundImage = "url('" + gFadeImageArray[gImageCurrentIndex] +"')";
  gImageCurrentIndex = gImageNextIndex;
  if( !gPause )
    gFadeTimer = window.setTimeout("fadePause('"+g_oImage+"')", 3500);
}

function fadePause()
{
  if( 0 >= gFadeImageArray.length ) return true;
    g_oImage.src = gFadeImageArray[gImageNextIndex];
  gFadeTimer = window.setTimeout("fadeIn()", 100);
}

function PauseFade()
{
  if( 0 >= gFadeImageArray.length ) return true;
  gPause = true;
  clearTimeout(gFadeTimer);
}

function ResumeFade()
{
  if( 0 >= gFadeImageArray.length ) return true;
  gPause = false;
  gFadeTimer = window.setTimeout("fadeIn()", 100);
}

function FadeGotoNext()
{
  if( 0 >= gFadeImageArray.length ) return true;
  clearTimeout(gFadeTimer);
  gOpacity = 100;
  fadeReset();
}

function FadeClickEvent()
{
  if( 0 >= gFadeClickArray.length ) return true;
  clearTimeout(gFadeTimer);
  var LocationIndex = gImageCurrentIndex - 1;
  if (LocationIndex < 0) LocationIndex = gFadeClickArray.length - 1;
  document.location.href = gFadeClickArray[LocationIndex];
}

function FadeStop()
{
  if( 0 >= gFadeImageArray.length ) return true;
  clearTimeout(gFadeTimer);
}