var cur_frame = 0;
var start_frame = 0;
var end_frame = 0;
var delay = 4000;
var slideloop;

function processReqChange()
{
  if (req.readyState == 4 && req.status == 200 
      && req.responseXML != null)
  {
    var items = [];
    var nl = req.responseXML.getElementsByTagName( 'slide' );
    for( var i = 0; i < nl.length; i++ )
    {
      var nli = nl.item( i );
      var src = nli.getAttribute( 'src' ).toString();
			var url = nli.getAttribute( 'url' ).toString();
      items.push( { src: src, url: url, id: i } );
    }
    load_slides( items );
		end_frame = i - 1;
		cur_frame = 0;
		delay = 4000;
    start_slideshow(cur_frame, start_frame, end_frame, delay);
  }
}

function load_slides( images ) {
	var ic = document.getElementById( 'ImgContainer' );
	for( var i in images ) {
		var img = images[i];
		
		var imgObj = document.createElement( 'img' );
		imgObj.src = img.src;
		imgObj.style.border = '0';
		var linkObj = document.createElement( 'a' );
		linkObj.setAttribute('href', img.url);
		var divObj = document.createElement( 'div' );
		divObj.setAttribute('id', 'slide' + img.id);
		divObj.setAttribute('align', 'center');
		divObj.style.display = 'none';
		divObj.style.padding = '2px;'
		ic.appendChild( divObj );
		divObj.appendChild( linkObj );
		linkObj.appendChild( imgObj );
	}
}

function loadXMLDoc( url )
{
  req = false;
  if(window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch(e) {
      req = false;
    }
  }
  else if(window.ActiveXObject)
  {
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
    try {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
      req = false;
    }
  }
  }
  if(req) {
    req.onreadystatechange = processReqChange;
    req.open("GET", url, true);
    req.send("");
  }
}

function start_slideshow(cur_frame, start_frame, end_frame, delay) {
  window.setTimeout(switch_slides(cur_frame,start_frame,end_frame, delay, 1), 0);
}

function stop_slideshow() {
	window.clearTimeout(slideloop);
}

function resume_slideshow() {
	slideloop = window.setTimeout(switch_slides(cur_frame, start_frame, end_frame, delay, 1), 0);	
}
		                            
function switch_slides(frame, start_frame, end_frame, delay, direction) {
	if( start_frame == end_frame ) {
		return ( function() { Effect.Appear('slide'+frame); } );
	}
  else {
  return (function() {
    Effect.Fade('slide' + frame);
		if( direction == -1 ) {
			if (frame == 0) { frame = end_frame; } else { frame = frame - 1; }
		}
    else {
    	if (frame == end_frame) { frame = start_frame; } else { frame = frame + 1; }
    }
    window.setTimeout("Effect.Appear('slide" + frame + "');", 850);
		cur_frame = frame;
    slideloop = window.setTimeout(switch_slides(frame, start_frame, end_frame, delay, direction), delay + 850);
  });
  }
}
