var FadeArr = [];

var gFadeIn=true;
var gFadeOut=false;

var gSlideShowTimer = null;

function toggleCycle (cycleOn)
{
	if (cycleOn)
	{
		setTimerForSlideshow();
	}
	else
	{
		unSelect ();
		if (gSlideShowTimer)
		{
			window.clearTimeout (gSlideShowTimer);
		}
	}
}

function setActiveSlide ()
{
	so = document.getElementById('slide' + gCurSlide)
	so.style.zIndex=102;
	SetAlp(so, 100);
	ThumbMouseOver(gCurSlide);
}

function setTimerForSlideshow()
{
	if (gSlideShowTimer)
	{
		window.clearTimeout (gSlideShowTimer);
	}
	DelayS = document.getElementById('SlideDelay'+gCurSlide).value;
	if (DelayS != 0)
	{
		gSlideShowTimer = window.setTimeout ('SlideShow()', 1000 * DelayS);
	}
}

function unSelect ()
{
	if (gCurSlide != 0)
		ThumbMouseOut(gCurSlide);
}

function SlideShow()
{
	if (!autocycle)
	{
		if (gSlideShowTimer)
		{
			window.clearTimeout (gSlideShowTimer);
		}
//		return;
	}
	unSelect ();
	
	if (customSlideshow)
	{
		var NextSlide = LifeStage;
		ThumbMouseOver(NextSlide);
		ThumbClick(NextSlide, false);
	
		gCurSlide = NextSlide;
	}
	else if (autocycle)
	{	
		var NextSlide = gCurSlide + 1;
		if (NextSlide > MaxSlides)
			NextSlide = 1;
	
		ThumbMouseOver(NextSlide);
		ThumbClick(NextSlide, false);
	
		gCurSlide = NextSlide;
		
		setTimerForSlideshow();
	}
}

function ThumbClick (which, doResume)
{
	if (doResume == null) doResume=true;
	
	ZSetHi = 'slide' + which;
	ZSetLo = null;
	
	if ((gCurSlide != 0) && (gCurSlide != which))
	{
		ZSetLo = 'slide' + gCurSlide;
		Fader(ZSetLo,gFadeOut,0,100,10,1);
		ThumbMouseOut(gCurSlide, true);
	}
	Fader(ZSetHi,gFadeIn,0,100,10,1);
	
	gCurSlide = which;
	if ((doResume) && (gSlideShowTimer))
		window.clearTimeout (gSlideShowTimer);

	if (doResume)
		gSlideShowTimer = window.setTimeout ('setTimerForSlideshow()', 10000);
}

function ThumbMouseOver (which)
{
	if (!isNaN (parseInt(which)))
	{
			// turn background blue
		document.getElementById ('slideBG' + which).className='BGSelected'+which;
			// turn on the arrow
		document.getElementById ('sele' + which).style.display='';
			// fade in the thumbnail image
		Fader('thumbimg' + which,gFadeIn,50,100,8)
			// fade in the border
		Fader('selg' + which,gFadeIn,0,100,8);
	}
}

function ThumbMouseOut (which, isClick)
{
	if (isClick == null) isClick=false;
	
	if (!isClick)
		if (gCurSlide == which) return;
	
	if (!isNaN (parseInt(which)))
	{
			// turn background white
		document.getElementById ('slideBG' + which).className='BGUnselected'+which;
			// turn off the arrow
		document.getElementById ('sele' + which).style.display='none';
			// fade out the thumbnail image
		Fader('thumbimg' + which,gFadeOut,50,100,8)
			// fade in the border
		Fader('selg' + which,gFadeOut,0,100,8);
	}
}

function AddToFadeArr (ind, ObjSearch, FadeIn, MinAlp, MaxAlp, Speed)
{
	if (FadeArr[ind]) 
		b = ind;
	else
	{
		b = FadeArr.length;
		FadeArr[b] = new Object();
		FadeArr[b].CurAlp = (FadeIn) ? MinAlp : MaxAlp;
		FadeArr[b].MinAlp = MinAlp;
		FadeArr[b].MaxAlp = MaxAlp;
		FadeArr[b].Speed = Speed;
		FadeArr[b].ObjID = ObjSearch;
		FadeArr[b].TimerID = null;
	}
	
	FadeArr[b].FadeIn = FadeIn;
	return b;
}

function GetFadeArrInd (ObjSearch, FadeIn, MinAlp, MaxAlp, Speed)
{
	a = FadeArr.length;
	for (i = 0; i < a; i++)
	{
		if (FadeArr[i].ObjID == ObjSearch)
		{
			if (FadeArr[i].FadeIn == FadeIn)
				return i;
			return AddToFadeArr(i, ObjSearch, FadeIn, MinAlp, MaxAlp, Speed);
		}
	}
	
	return AddToFadeArr(a+1, ObjSearch, FadeIn, MinAlp, MaxAlp, Speed);
}

function Fader(FadeObjID, FadeIn, MinAlp, MaxAlp, Speed, SwapZ)
{
	if (SwapZ == null) SwapZ = 0;
	FadeObj = document.getElementById (FadeObjID);
	a = GetFadeArrInd(FadeObjID, FadeIn, MinAlp, MaxAlp, Speed);
	if (FadeIn)
		MyAdder = Speed;
	else
		MyAdder = -Speed;
	
	NewAlp = MyAdder + GetAlp(FadeObj);
	
	NewAlp = (NewAlp > MaxAlp) ? MaxAlp : NewAlp;
	NewAlp = (NewAlp < MinAlp) ? MinAlp : NewAlp;

	FadeArr[a].CurAlp = NewAlp;
	
	SetAlp(FadeObj, NewAlp);
	
	if (FadeArr[a].TimerID)
		window.clearTimeout(FadeArr[a].TimerID);
	
	if (FadeIn)
	{
		if (NewAlp < MaxAlp)
			FadeArr[a].TimerID = window.setTimeout("Fader('"+FadeObjID+"', "+FadeIn+", "+MinAlp+", "+MaxAlp+", "+Speed+", "+SwapZ+")",50);
		else if (SwapZ)
			FadeObj.style.zIndex=102;
	}
	else
	{
		if (NewAlp > MinAlp)
			FadeArr[a].TimerID = window.setTimeout("Fader('"+FadeObjID+"', "+FadeIn+", "+MinAlp+", "+MaxAlp+", "+Speed+", "+SwapZ+")",50);
		else if (SwapZ)
			FadeObj.style.zIndex=101;
	}
}

function SetAlp (Obj, NewAlp)
{
  NewAlp = (NewAlp == 100)?99.999:NewAlp;
  
  // IE/Win
  Obj.style.filter = "alpha(opacity:"+NewAlp+")";
  
  // Older Mozilla and Firefox
  Obj.style.MozOpacity = NewAlp/100;
  
  // Safari<1.2, Konqueror
  Obj.style.KhtmlOpacity = NewAlp/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  Obj.style.opacity = NewAlp/100;
}

function GetAlp (Obj)
{
	if (Obj.filters)
		return Obj.filters.alpha.opacity;
	else if (Obj.style.opacity != 'undefined')
		return Obj.style.opacity * 100;
	else if (Obj.style.MozOpacity != 'undefined')
		return Obj.style.MozOpacity * 100;
	else if (Obj.style.KhtmlOpacity != 'undefined')
		return Obj.style.KhtmlOpacity * 100;
}

