
function ajaxObject() 
{
  var xmlHttp;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e) {
    // Internet Explorer
    try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
      try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) {
        alert("This website requires AJAX which your browser does not seem to support!");
        return false;
      }
    }
  }
  return xmlHttp;
}

var crossfadeTimerId = 0;
var steps = 3;

function crossfadeImage(from_id, to_id, millisec) {
    var speed = Math.round(millisec / (100/steps));

    if (crossfadeTimerId) clearTimeout(crossfadeTimerId);
    crossfadeTimerId = setTimeout("crossfadeOpacity('" + from_id + "','" + to_id + "',"+speed+")",speed);
}

function crossfadeOpacity(from_id, to_id, speed) {
    var finished = 1;

    if (from_id.length) {
      var object = document.getElementById(from_id);
      if (object && object.style.opacity > 0) {
        var new_opacity = object.style.opacity*100 - steps;
        if (new_opacity < 0) {
          object.parentNode.removeChild(object);
        }
        else {
          finished = 0;
          object.style.opacity = (new_opacity / 100);
          object.style.filter = "alpha(opacity=" + new_opacity + ")";        
        }
      }
    }    

    var object = document.getElementById(to_id);
    if (object.style.opacity < 1.0) {
      var new_opacity = object.style.opacity*100 + steps;
      if (new_opacity >= 100) {
        object.style.opacity = 1.0;
        object.style.filter = "";
      }
      else{
        finished = 0;
        object.style.opacity = (new_opacity / 100);
        object.style.filter = "alpha(opacity=" + new_opacity + ")";        
      }
    }

    if (!finished) {
      crossfadeTimerId = setTimeout("crossfadeOpacity('" + from_id + "','" + to_id + "',"+speed+")",speed); 
    }
} 

var slideshow = new Array();
var slideshow_idx = 0;

function startSlideshow()
{
    var xmlHttp = ajaxObject();
    xmlHttp.onreadystatechange=function () 
        { 
                if(xmlHttp.readyState==4 && xmlHttp.responseXML)
                {
                    var response = xmlHttp.responseXML.documentElement;
                    for (var i = 0; i < response.childNodes.length; i++) 
                    {
                        if (response.childNodes[i].tagName=='image') {
                            // IE alpha bug workaround
                            if (navigator.appName == 'Microsoft Internet Explorer') {
                                response.childNodes[i].setAttribute('url',response.childNodes[i].getAttribute('url')+'/imageIEClean');
                            }
                            
                            slideshow.push(response.childNodes[i]);
                        }
                    }
                    showSlideshowImage();
                }
        }
    xmlHttp.open("GET",rootURI+"xmlSlideshow",true);
    xmlHttp.send(null);
}

function showSlideshowImage()
{
    var image = slideshow[slideshow_idx];

    content = document.getElementById('content');
  
    var imgTag = document.createElement('IMG');
    imgTag.width = image.getAttribute('width');
    imgTag.height = image.getAttribute('height');
    imgTag.alt = '';    
    imgTag.src = image.getAttribute('url');

    imgTag.style.marginLeft = (840/2 - image.getAttribute('width')/2)+'px';
    imgTag.style.opacity = 0;
    imgTag.style.filter = "alpha(opacity=0)";            

    while (content.childNodes.length > 1) content.removeChild(content.childNodes[0]);

    var from_id = '';
    if (content.childNodes.length > 0) { 
      from_id = 'photoLast';
      content.childNodes[0].id = from_id;
    }
    imgTag.id = 'photoCurrent';
    content.appendChild(imgTag);

    crossfadeImage(from_id,'photoCurrent',1000);

    // Update index to point to next photo    
    slideshow_idx++;
    if (slideshow_idx >= slideshow.length) slideshow_idx = 0;  

    // Preload image
    var im = new Image();
    im.src = slideshow[slideshow_idx].getAttribute('url');

    setTimeout('showSlideshowImage()', 5000);
}
