var linkList = "";
// global flag
var isIE = false;

// global request and XML document objects
var req;
var functionToPerform;

// retrieve XML document (reusable generic function);
// parameter is URL string (relative or complete) to
// an .xml file whose Content-Type is a valid XML
// type, such as text/xml; XML source must be from
// same domain as HTML file
function loadXMLDoc(url,func) {
	functionToPerform = func;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

// handle onreadystatechange event of req object
function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
			// processing here...
			eval(functionToPerform);
         } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
         }
    }
}

function buildLinkList(){
	var titles = req.responseXML.getElementsByTagName("title");
	for (x=0; x<titles.length; x++){
		title=titles[x].childNodes[0].nodeValue;
		linkList = linkList+"<a href=\"javascript:showSlide("+x+");\">"+title+"</a>\n";
	}
	var titlesContainer = document.getElementById("titles");
	titlesContainer.innerHTML = linkList;
	titlesContainer.scrollTop=0;
}
function showSlide(slideNum){
	// containers on page
	var titlesContainer = document.getElementById("titles");
	var slideContainer = document.getElementById("slide");
	var captionContainer = document.getElementById("caption");
	// get collections from XML
	var titles = req.responseXML.getElementsByTagName("title");
	var slides = req.responseXML.getElementsByTagName("image");
	var captions = req.responseXML.getElementsByTagName("caption");
	// build HTML for requested slide
	var title = titles[slideNum].childNodes[0].nodeValue;
	var caption = captions[slideNum].childNodes[0].nodeValue;
	var slide = slides[slideNum].childNodes[0].nodeValue;
	
	slideContainer.innerHTML="<img src=\"images/"+slide+"\" alt=\""+title+"\" />\n";
	captionContainer.innerHTML="<h2>"+title+"</h2><p>"+caption+"</p>";
	captionContainer.scrollTop=0;
	
	// set the selected link
	var allLinks = titlesContainer.getElementsByTagName("a");
	for (x=0;x<allLinks.length;x++){
		allLinks[x].className = "";	
	}
	allLinks[slideNum].className = "active";
	allLinks[slideNum].blur();	
}
function initGallery(url){
	loadXMLDoc(url,"buildLinkList();showSlide(0);");
}