// Default length of slide in ms
var SS_DefaultSlideDuration=5000;

// Arrays to handle working slideshow data
var SS_SlideShow_Slides=new Array();
var SS_SlideShow_CurrFrame=new Array();
var SS_SlideShow_SlideDuration=new Array();
var SS_SlideShow_FadeLength=new Array();
var SS_SlideShow_FadeSteps=new Array();



// Start a new slideshow
// The Element must have an ID
function SS_StartSlideShow(Element, Slides, SlideDuration, FadeLength, FadeSteps){
	Element=SS_GetElement(Element);
	if (Element!=null){
		if (Element.id!=null){
			// Setup slideshow vars
			SS_SlideShow_Slides[Element.id]=Slides;
			SS_SlideShow_CurrFrame[Element.id]=0;
			if (SlideDuration==null){
				SS_SlideShow_SlideDuration[Element.id]=SS_DefaultSlideDuration;
			} else {
				SS_SlideShow_SlideDuration[Element.id]=SlideDuration;
			}
			if (FadeLength==null){
				SS_SlideShow_FadeLength[Element.id]=SS_DefaultAnimationDuration;
			} else {
				SS_SlideShow_FadeLength[Element.id]=FadeLength;
			}
			if (FadeSteps==null){
				SS_SlideShow_FadeSteps[Element.id]=SS_DefaultAnimationSteps;
			} else {
				SS_SlideShow_FadeSteps[Element.id]=FadeSteps;
			}

			// Setup slides
			var Content="";
			for (LoopVar=0; LoopVar<SS_SlideShow_Slides[Element.id].length; LoopVar++){
				Content+="<div id=\"SlideShowFrameDisplay_"+Element.id+"_"+LoopVar+"\" style=\"position:absolute; z-index: 1; visibility: hidden;\"><img id=\"SlideShowFrameImg_"+Element.id+"_"+LoopVar+"\" src=\""+SS_SlideShow_Slides[Element.id][LoopVar]+"\" border=\"0\" alt=\"\" /></div>";
			}
			Element.innerHTML=Content;

			// Hide all slides
			for (LoopVar=0; LoopVar<SS_SlideShow_Slides[Element.id].length; LoopVar++){
				SS_SetElementOpacity("SlideShowFrameDisplay_"+Element.id+"_"+LoopVar, 0);
			}

			// Fade in first slide and initiate show-loop
			SS_AnimateElementOpacity("SlideShowFrameDisplay_"+Element.id+"_"+SS_SlideShow_CurrFrame[Element.id], 100, SS_SlideShow_FadeLength[Element.id], SS_SlideShow_FadeSteps[Element.id]);
			setTimeout("SS_SlideShowNextFrame('"+Element.id+"');", SS_SlideShow_SlideDuration[Element.id]);
		}
	}
}


// Show the next frame in the given Element's slideshow
// Do not call this function directly.  It is called from within SS_StartSlideShow.
function SS_SlideShowNextFrame(ElementID){
	var Frame1=SS_SlideShow_CurrFrame[ElementID];
	var Frame2=(SS_SlideShow_CurrFrame[ElementID]+1)%SS_SlideShow_Slides[ElementID].length;

	// See if the next image is ready before continuing
	var Frame2Ready=SS_GetElement("SlideShowFrameImg_"+ElementID+"_"+Frame2).complete;
	if (!Frame2Ready){
		setTimeout("SS_SlideShowNextFrame('"+ElementID+"');", 100);
		return false;
	}

	// Place the current slide in front of the next one
	SS_GetElement("SlideShowFrameDisplay_"+ElementID+"_"+Frame1).style.zIndex=1;
	SS_GetElement("SlideShowFrameDisplay_"+ElementID+"_"+Frame2).style.zIndex=0;

	// Show the next frame and fade the current one to reveal it
	SS_SetElementOpacity("SlideShowFrameDisplay_"+ElementID+"_"+Frame2, 100);
	SS_AnimateElementOpacity("SlideShowFrameDisplay_"+ElementID+"_"+Frame1, 0, SS_SlideShow_FadeLength[ElementID], SS_SlideShow_FadeSteps[ElementID]);

	// Setup the next slide
	SS_SlideShow_CurrFrame[ElementID]=Frame2;
	setTimeout("SS_SlideShowNextFrame('"+ElementID+"');", SS_SlideShow_SlideDuration[ElementID]);
}