/* ------------------------------------------------------------ */
/* 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);
}

