﻿/* ------------------------------------------------------------ */
/* Common AJAX Functions.                                       */
/* ------------------------------------------------------------ */


// Creates XML HTTP Object
function GetXmlHttpObject()
{
    if (window.XMLHttpRequest) {        
        return new XMLHttpRequest(); // code for all new browsers
    }
    else if (window.ActiveXObject) {         
        return new ActiveXObject("Microsoft.XMLHTTP"); // code for IE5 and IE6
    }
    else {
        //alert("Your browser does not support XMLHTTP.");
    }
}


/* ------------------------------------------------------------ */
/* Showcase Banner Functionality                                */
/* ------------------------------------------------------------ */

//  Global vars
var xmlhttp;
var totalNumBanners;
var currentBanner = 0;
var rotateInterval;
var flashSuccess = false;

// Used on homepage to retrieve homepage banners
function initShowcaseBanner(lang) {
		xmlhttp = GetXmlHttpObject();
		xmlhttp.onreadystatechange=writeShowcaseBanners;
		xmlhttp.open("GET", baseFileURL() + "xml/gallery"+ (lang == "fr" ? "_fr" : "" ) +".xml",true);	
		xmlhttp.send(null);
}


// Retreives banner info from XML and output to screen
function writeShowcaseBanners()
{
	var itemImage, itemURL, itemDescription;
	
    if (xmlhttp.readyState==4) {   
        // 4 = "loaded"
        if (xmlhttp.status==200) {
            // 200 = OK 
            xmlDoc = xmlhttp.responseXML;
            var responseText = "";
            totalNumBanners = xmlDoc.getElementsByTagName("item").length;
            
            // Loop through each item in xml doc (start at 1 to go to first post)
            for (x=0; x<totalNumBanners; x++) {
				itemImage = xmlDoc.getElementsByTagName("image")[x].childNodes[0].nodeValue;
				itemURL = xmlDoc.getElementsByTagName("url")[x].childNodes[0].nodeValue;
				itemDescription = xmlDoc.getElementsByTagName("description")[x].childNodes[0].nodeValue;
				itemTarget = xmlDoc.getElementsByTagName("target")[x].childNodes[0].nodeValue;
				responseText += '<a href="'+itemURL+'" class="showcaseBanner" id="showcase'+x+'" title="'+itemDescription+'" target="'+itemTarget+'" ><img src="'+baseFileURL()+itemImage+'" alt="'+itemDescription+'" /></a>';
            }
            
			// Only update innerHTML is showcase element exists (Fixes IE issue)
            if (document.getElementById("showcase")) {
				document.getElementById("showcase").innerHTML = responseText; // output banner html to screen
				showBanner(currentBanner); // show first banner
				if (totalNumBanners > 1) {
					rotateInterval = setInterval("rotateBanners()", 5000); // start banner rotation
				}
			}
        }
        else {
            //alert("Problem retrieving XML data");
        }
    }
}

// Show selected banner number
function showBanner(num,stopRotation) {	
	currentBanner = num; // update global var
	updateShowcaseMenu(num); // update menu
	hideVisibleBanners(); // start by hiding visible banner before
	var bannerToShow = document.getElementById("showcase"+num);
	$(bannerToShow).fadeIn("slow");
	// if user clicks on menu, stop banner rotation	and set focus on banner
	if (stopRotation) { 
		bannerToShow.focus(); // (Accessibility - set focus back to banner to read alt text)
		clearInterval(rotateInterval); 
	} 
	
}

// Hide visible banners
function hideVisibleBanners() {
	var currentVisibleBanner;
	for (x=0; x<totalNumBanners; x++) {
		currentVisibleBanner = document.getElementById("showcase"+x);
		$(currentVisibleBanner).fadeOut("slow");
	}
}

// Update showcase menu, highlighting selected number
function updateShowcaseMenu(selected) {
	var responseText = "";
	for (x=0; x<totalNumBanners; x++) {
			responseText += '<a href="javascript:showBanner('+x+',true);" title="Banner '+eval(x+1)+'" class="sc_buttons"><img src="'+baseFileURL()+'images/sc_button'+eval(x+1)+(selected == x ? "_over" : "")+'.jpg" alt="Banner '+eval(x+1)+'" /></a>';
	}	
	document.getElementById('showcase_menu').innerHTML = responseText;	
}

// Loop through banners, displaying next banner
function rotateBanners() {
	nextBanner = currentBanner; 
	if (nextBanner < totalNumBanners-1) { nextBanner++; }
	else { nextBanner = 0; }
	showBanner(nextBanner);
}


