
window.onload = function()
{
	ss = new SlideShow();
}

// SlideShow class

SlideShow = function()
{
	this.slides = new Array();
	this.currentSlide = 0;
	this.startSlide = 0;
	this.elSlideShow = document.getElementById("slideShow1");
	this.elHeader = document.getElementById("header");
	this.elFooter = document.getElementById("footer");

	if (this.isValid())
	{
		this.findSlides();
		
		var s = location.hash.match(/#slide(\d+)/);
		if (s && s[1] && s[1] >= 0 && s[1] < this.getSlidesTotal())
		{
			this.startSlide = Number(s[1])-1;
		}

		this.showSlide(this.startSlide);
	}
	else
	{
		alert("Your browser does not support this tool. Please try a different browser.");
	}
}

SlideShow.prototype.isValid = function()
{
	var valid = false;
	if (document.getElementById && document.createElement)
		valid = true;
		
	return valid;
}

SlideShow.prototype.getSlidesTotal = function()
{
	return this.slides.length;
}


SlideShow.prototype.findSlides = function()
{
	var slideTags = this.elSlideShow.getElementsByTagName("li");
	var pattern = new RegExp("(\\b)slide(\\b)");
	
	for (var i=0; i < slideTags.length; i++)
	{
		if (pattern.test(slideTags[i].className))
		{
			this.slides.push(slideTags[i]);
		}
	}

	var nav = this.createNav();
	this.elFooter.appendChild(nav);
	
	var titleBar = document.createElement("div");
	titleBar.id = "titleBar";
	
	var title = document.createElement("span");
	title.id = "slideTitle";
	
	var counter = this.createCounter();
	
	titleBar.appendChild(title);
	titleBar.appendChild(counter);
	
	this.elSlideShow.insertBefore(titleBar, document.getElementsByTagName("ol")[0]);
	
	this.updateCounter();
}

SlideShow.prototype.createNav = function()
{
	var thisObj = this;
	
	var aPrev = this.createLink("<<");
	aPrev.onclick = function() { thisObj.showPrevSlide() }
	aPrev.title = "Previous slide";
	aPrev.id = "prevButton";
	
	var aNext = this.createLink(">>");
	aNext.onclick = function() { thisObj.showNextSlide() }
	aNext.title = "Next slide";
	aNext.id = "nextButton";

	var divNav = document.createElement("div");
	divNav.id = "nav";
	divNav.appendChild(aPrev);
	divNav.appendChild(aNext);
	
	return divNav;
}

SlideShow.prototype.createCounter = function()
{
	var spanCount = document.createElement("span");
	spanCount.id = "counter";
	return spanCount;
}

SlideShow.prototype.updateCounter = function()
{
	var counterText = "(" + (this.currentSlide+1) + " of " + this.getSlidesTotal() + ")";
	document.getElementById("counter").innerHTML = counterText;
}

SlideShow.prototype.createLink = function(text, href)
{
	var a = document.createElement("a");
	a.appendChild(document.createTextNode(text))
	a.href = (href != null && href != "") ? href : "#";
	return a;
}

SlideShow.prototype.getSlideTitle = function(num)
{
	var h = this.slides[num].getElementsByTagName("h2")[0];
	var title = h.firstChild.nodeValue;
	return title;
}

SlideShow.prototype.showPrevSlide = function()
{
	var prev = (this.currentSlide == 0) ? this.getSlidesTotal()-1 : this.currentSlide-1;
	this.showSlide(prev);
}
SlideShow.prototype.showNextSlide = function()
{
	var next = (this.currentSlide == this.getSlidesTotal()-1) ? 0 : this.currentSlide+1;
	this.showSlide(next);
}
SlideShow.prototype.showSlide = function(num)
{
	this.currentSlide = num;
	this.updateCounter();
	//document.getElementById("slideTitle").innerHTML = this.getSlideTitle(num);
	
	for (var i=0; i < this.getSlidesTotal(); i++)
	{
		if (i == num)
			this.slides[i].style.display = "block";
		else
			this.slides[i].style.display = "none";
	}
}

