var banners=null;
var xmlDoc;
var currentBanner=0;

function loadXMLDoc(url) {
  //alert("Loading XML");
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
      //alert("window.XMLHttpRequest");
        xmlDoc = new XMLHttpRequest();
        xmlDoc.onreadystatechange = processReqChange;
        xmlDoc.open("GET", url, true);
        xmlDoc.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
      //alert("IE ActiveX");
        isIE = true;
        xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
        if (xmlDoc) {
            xmlDoc.onreadystatechange = processReqChange;
            xmlDoc.open("GET", url, true);
            xmlDoc.send();
        }
    }
}

// handle onreadystatechange event of req object
function processReqChange() {
    // only if req shows "loaded"
    if (xmlDoc.readyState == 4) {
        // only if "OK"
        if (xmlDoc.status == 200) {
  banners=xmlDoc.responseXML.getElementsByTagName("banner");
  document.getElementById("offer_image").style.opacity=100;
  //alert("Opacity Set");
  if (banners.length>1) {
    preLoadBanners();
    setTimeout("changeBanner()", 4500);
  }
  //alert("Timer Set");
         } else {
            alert("There was a problem retrieving the XML data:\n" +
                xmlDoc.statusText);
         }
    }
}

/* Banner Load Functions */
function importBannerXML()
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e)
    {
    alert(e.message);
    return;
    }
  }
xmlDoc.async=false;
xmlDoc.load("/homepage-banners.xml");
banners=xmlDoc.getElementsByTagName("banner");
}

/* Banner Change Functions */
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec) {
    //if an element is invisible, make it visible, else make it ivisible
    if(document.getElementById(id).style.opacity == 0) {
        opacity(id, 0, 100, millisec);
    } else {
        opacity(id, 100, 0, millisec);
    }
}

function toggleBanner() {
  //alert("Toggle Banner");
  shiftOpacity("offer_image",250);
}

function setBannerVariables() {
  var bannerImage=document.getElementById("offer_image");
  var bannerLink=document.getElementById("offer_link");
  currentBanner++;
  if (currentBanner>=banners.length) { currentBanner=0; }
  newBannerXML=banners[currentBanner];
  bannerImage.src="/gfx/special-offers/"+newBannerXML.attributes.getNamedItem("image").value;
  bannerImage.alt=newBannerXML.attributes.getNamedItem("alt").value;
  bannerLink.href=newBannerXML.attributes.getNamedItem("url").value;
}

function changeBanner() {
  //alert("Banner Swapping");
  toggleBanner(); //first, fade out the old banner
  setTimeout("setBannerVariables()", 300); //change src and alt text
  setTimeout("toggleBanner()", 1000); //fade back in
  setTimeout("changeBanner()", 5500); //set up next transition
}

function preLoadBanners() {
  for (i=0; i<banners.length; i++) {
    newBannerXML=banners[i];
    tempImage = new Image;
    tempImage.src="/gfx/homepage/"+newBannerXML.attributes.getNamedItem("image").value;
  }
}

function loadBanners() {
  //alert("Loading Adverts");
  loadXMLDoc("/20100625-special-offers.xml");
  //alert("Loaded Adverts");
}
addLoadEvent(loadBanners);