//==================================================
// Get the appropiate XML object that can parse XML
//==================================================
function getXmlHttpObject()
{
	if (window.XMLHttpRequest)
	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
		return new XMLHttpRequest();
	}
	if (window.ActiveXObject)
	{
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

//==================================================
// Pass in a slide show instance and an xml file 
// in order to load the slides 
//==================================================
function loadSlideShow(slideShow, xmlUrl)
{
	var xmlhttp = getXmlHttpObject();
	if (xmlhttp == null)
	{
		alert ("Your browser does not support XMLHTTP.");
		return;
	}
		
	try 
	{
		xmlhttp.open("GET", xmlUrl, false);
		xmlhttp.send();
	}
	catch (er)
	{
		alert ("Unable to load XML File.");
	}

	var x=xmlhttp.responseXML.getElementsByTagName("Slide");

	for (i=0;i<x.length;i++)
	{		
		imageUrlNode = x[i].getElementsByTagName("ImageUrl");
		viewUrlNode = x[i].getElementsByTagName("LinkUrl");
		{
			try
			{
				slideimage = imageUrlNode[0].firstChild.nodeValue;
				viewUrl = viewUrlNode[0].firstChild.nodeValue;
				
				slideShow.add_slide(s = new slide(slideimage, viewUrl));
				s.filter = 'progid:DXImageTransform.Microsoft.Fade()';
			}
			catch (er)
			{
				alert ("There was an issue loading the slideshow.");
			}
		}
	}
}

//==================================================
// Method will start and stop the slide show based
// upon its current running state.
//==================================================
function toggleSlideShowState(slideShow, imageId) 
{
	var imageControl = document.getElementById(imageId);

	if (slideShow.timeoutid == 0)
	{
		slideShow.next();
		slideShow.play();
		imageControl.src = "images/control_pause.png";
	}
	else
	{
		slideShow.pause();
		imageControl.src = "images/control_play.png";
	}
}

//==================================================
// Method builds a numeric link item for each slide
// in a slide show
//==================================================
function buildLinkMenu(slideShow, slideLinkArea)
{
	var previousInnerHTML = new String(); 
	 
	for (var i=0; i < slideShow.slides.length; i++) 
	{            
		previousInnerHTML = previousInnerHTML.concat("<a id='slideLink" + i + "' href='javascript:" + slideShow.name + ".goto_slide(" + i + ")'>" + (i + 1) + "</a>");
		
		if (i != (slideShow.slides.length - 1))
			previousInnerHTML = previousInnerHTML.concat("&nbsp;&nbsp;");
	}
	
	slideLinkArea.innerHTML = previousInnerHTML; 
	
	//Add an event handler to listen each time the slide changes so 
	//that we can indicate which slide is currently selected
	slideShow.post_update_hook = 
		function() { 
			updateSlideShowNavBar(this); 
			if (document.images)
				fadein(this, 0.04);
		};

}

function updateSlideShowNavBar(slideShow) { 
	for (var i=0; i < slideShow.slides.length; i++) 
	{            
		var cssClass = "";
		var slideObject = document.getElementById("slideLink" + i);
		
		if (i == slideShow.current)
		{
			cssClass = "slideShowSelected";
		}
			
		slideObject.className = cssClass;	
	}
	return;
}	

var fadein_opacity = 0.04;

function fadein(slideShow, opacity) 
{
	if (typeof opacity != 'undefined') { fadein_opacity = opacity; }
	
	if (fadein_opacity < 0.99 && slideShow.image && slideShow.image.style &
		typeof slideShow.image.style.MozOpacity != 'undefined') 
	{
		
		fadein_opacity += .05;
		slideShow.image.style.MozOpacity = fadein_opacity;
		setTimeout("fadein()", 50);
	}
}
