var adverts=null;
var xmlDoc;
var currentAdvert=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) {
  adverts=xmlDoc.responseXML.getElementsByTagName("advert");
  //alert("Created Array");
  document.getElementById("advert_image").style.opacity=100;
  //alert("Opacity Set");
  if (adverts.length>1) { setTimeout("changeAdvert()", 10000); }
  //alert("Timer Set");
         } else {
            alert("There was a problem retrieving the XML data:\n" +
                xmlDoc.statusText);
         }
    }
}

/* Advert 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 toggleAdvert() {
  shiftOpacity("advert_image",500);
}

function setAdvertVariables() {
  var advertImage=document.getElementById("advert_image");
  var advertLink=document.getElementById("advert_link");
  currentAdvert++;
  if (currentAdvert>=adverts.length) { currentAdvert=0; }
  newAdvertXML=adverts[currentAdvert];
  advertImage.src="/gfx/adverts/"+newAdvertXML.attributes.getNamedItem("image").value;
  advertImage.alt=newAdvertXML.attributes.getNamedItem("alt").value;
  advertLink.title=newAdvertXML.attributes.getNamedItem("alt").value;
  advertLink.href=newAdvertXML.attributes.getNamedItem("link").value;
  if (newAdvertXML.attributes.getNamedItem("external").value=="1") {
    advertLink.title=advertLink.title+" (opens in new window)";
    advertLink.target="_blank";
  } else {
    advertLink.target="";
  } //end if (newAdvertXML.attributes.getNamedItem("external").value=="1")
}

function changeAdvert() {
  //alert("Changing Advert");
  toggleAdvert(); //first, fade out the old advert
  setTimeout("setAdvertVariables()", 450); //fade back in
  setTimeout("toggleAdvert()", 1000); //fade back in
  setTimeout("changeAdvert()", 12000); //set up next transition
}

function loadAdverts() {
  //alert("Loading Adverts");
  loadXMLDoc("/20091007-adverts.xml");
  //alert("Loaded Adverts");
}
addLoadEvent(loadAdverts);