function obj()
{
	return $("#slideshow");
}

function initialize()
{
	if(obj() == undefined){
		forceQuit();
		return;
	}
	
	getXML();
}

function forceQuit()
{
	
	obj().remove(); /* May change later */
	clearEvent();
	
}

function getXML()
{
	
	return $.ajax({
	  type: "GET",
	  url: "slideshow.xml",
	  dataType: "xml",
	  success: parseXml,
	  error: forceQuit
	});
	
}

function parseXml(xml){

	slides = new Array();
	
	var tree = $("slideshow > slide", xml);
	
	var i = 0;
	for(var idx in tree){
		if(Number(idx) > -1 && idx !== ""){
			itm = tree[Number(idx)];
			slides[i] = $("src", itm).text();
			i++;
		}
	}
	
	runSlideshow(slides);
	
}

function runSlideshow(slides)
{
	
	if(slides.length < 1){
		forceQuit();
		return;
	}
	
	obj().empty();
	
	document.slides = slides;
	document.slidesidx = 0;
	
	// Milli seconds for time to change
	var timer = 5000;
	
	inter = setInterval(nextSlide, timer);
	obj().attr("timer", inter);
	
	nextSlide();
	
}


function nextSlide()
{
	
	if(document.slides == undefined || document.slidesidx == undefined){
		forceQuit();
		return;
	}
	
	var cur = document.slides[document.slidesidx];
	
	if($("#slideshow div.inner").length < 1){
		obj().append("<div class=\"inner\">&nbsp;</div>");
	}
	
	$("#slideshow div.inner").fadeTo(2000, 0, function(){
		$("#slideshow div.inner").css("background", "transparent url("+cur+") no-repeat top left");
	});
	
	
	
	if(document.slides.length < (document.slidesidx+2)){
		
		document.slidesidx = 0;
		
	}else{
		
		document.slidesidx++;
		
	}
	
	
	var nex = document.slides[document.slidesidx];
	
	$("#slideshow div.inner").fadeTo(2000, 1, function(){
		$("#slideshow").css("background", "transparent url("+nex+") no-repeat top left");
	});
	
}

function clearEvent()
{
	
	if(obj().attr("timer")){
		clearInterval(obj().attr("timer"));
	}
	
}

$(document).ready(function()
{
	// All my base are belong to jQuery!

	initialize();
	
});
