// use this instead of the StartSlideshow function from MSN Spaces in slideshowviewer.js
// starts the slide show
// interval - speed in milliseconds
function StartSlideshowIWS(divSpaSlideshow, divSpaMini, xmlImgList, imgSpaPlay, imgSpaPause, imgSpaStop, imgSpaPrevious, imgSpaNext, imgSpaFull, interval, albumTitle)
{
	if (!divSpaSlideshow)	// error
	{
		return;
	}

	var spa_iMaxImageHeight = 500;
	var spa_flOptimalAspectRatio = 3/4;
	divSpaSlideshow.style.setExpression("height",
	"Math.min(" + spa_iMaxImageHeight + ", Math.round(this.clientWidth * " + spa_flOptimalAspectRatio + "))"
	);
	var spa_objSlidshowUserInterface = null;

	// open the current image in a new window
	function Spa_FullViewer()
	{	
		if (divSpaSlideshow)
		{
			// find the image currently in divSpaSlideshow. expect only one image
			var oImg = divSpaSlideshow.getElementsByTagName("img");	
			if (oImg != null)
			{
				if (oImg[0].src != null && oImg[0].src != '')
				{
					// only open the window if we have an image to show
					var url = SsImagesPath + '?url=' + oImg[0].src + '&title=' + albumTitle;
					window.open(url, "_blank", "width=400, height=400, location=no, menubar=no, resizable=no, scrollbars=no");
				} 
			}
		} 
	}
	
	var spa_btnFullViewer = new Spa_ElementButton(imgSpaFull, Spa_FullViewer, true, false);  
	spa_btnFullViewer.SetEnabled(true);		// this is always enabled, but doesn't do anything if no images to show
	
	function Spa_SetSlideshowSize()
	{
		divSpaSlideshow.style.width = divSpaMini.clientWidth - 8;
		divSpaSlideshow.style.left = Math.floor((divSpaMini.clientWidth - divSpaSlideshow.clientWidth) / 2);
		divSpaSlideshow.style.height = Math.min(
			spa_iMaxImageHeight,
			Math.round(divSpaSlideshow.clientWidth * spa_flOptimalAspectRatio)
			);
	}
	Spa.Dom.ExecuteWhenLayoutComplete(divSpaMini, Spa_SetSlideshowSize);
	Spa.Dom.Event.Set(divSpaMini, "onresize", Spa_SetSlideshowSize);
	
	function SPA_SlideshowViewerScriptLoaded()
	{
		function ReadyHandler()
		{
			if (!spa_blnShowAlbumHasBeenCalled)
			{
				Spa_ShowAlbum();
			}
		}
		
		spa_objSlidshowUserInterface = new SPA_SlideshowPlayerUserInterface(
			divSpaSlideshow,
			true,
			true,
			interval,	
			imgSpaPlay,  
			imgSpaPause, 
			imgSpaStop,  
			imgSpaPrevious, 
			imgSpaNext,  
			L_SsLoadingPhoto_HTMLText,
			L_SsErrorLoadingPhoto_ErrorMessage,
			ReadyHandler
			);

		// this is added so that the slideshow will start if the page is refreshed
		// The ReadyHandler may be called while inside the SPA_SlideshowPlayerUserInterface constructor,
		// so Spa_ShowAlbum() would fail since spa_objSlidshowUserInterface is still null.
		// kind of a hack TODO
		if (!spa_blnShowAlbumHasBeenCalled)
		{	
			Spa.Dom.ExecuteWhenLayoutComplete(divSpaSlideshow, ReadyHandler);
		} 
	}
	var spa_blnShowAlbumHasBeenCalled = false;
	function Spa_ShowAlbum()
	{ 
		if (!spa_objSlidshowUserInterface)
		{
			return;
		}

		spa_blnShowAlbumHasBeenCalled = true;
			
		if (xmlImgList != null)
		{
			var xmldoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
			xmldoc.loadXML(xmlImgList.value);
			if (xmldoc.documentElement != null)
			{
				spa_objSlidshowUserInterface.RunWithXmlDocument(xmldoc);
			} // else error
		}
	}

	SPA_SlideshowViewerScriptLoaded();	
}
