/*
slideshow based on coda ui

requires jquery.js

*/


slideshowConfig={
	initialSlide:0 /* the number of the initial slide */
};

var slideshow={
	currentSlide: -1, /* the currently active slide */
	lastSlide: -1,
	
	onload: function()
	{
	//console.debug("slideshow");
		if (document.getElementById("slideshow"))
		{
		//console.debug("slideshow");
			slideshow.scrollDiv=$("#scroller");
			slideshow.scrollDiv[0].scrollLeft=0;
			slideshow.content=$("#slideshowContent");
			slideshow.configureSlides();
			slideshow.toolbar.config();
			slideshow.nextArrows.config();
			slideshow.configureInternalLinks();
		}
	},
	
	
	
	toolbar: {
		config: function()
		{
		//console.debug("toolbar config");
			slideshow.tabs=$("#toolbar li");
			if (slideshow.tabs.length==0)
			{
				//console.debug("no tabs so going to build them");
				slideshow.toolbar.build();
			}
			slideshow.tabs.click( slideshow.toolbar.click );
			slideshow.tabs.each(function(i){
			   this.rank = i;
			 });
			var initialTab=slideshow.tabs[slideshowConfig.initialSlide];
			slideshow.ScrollSlide(initialTab);
		},
		
		click: function(evt)
		{
			var tab=(evt.target)? evt.target: event.srcElement;
			while (tab.nodeName!="LI")
			{
				tab=tab.parentNode;
			}
			slideshow.ScrollSlide(tab);
			return false;
		},
		
		build: function()
		{
			$("#slideshowContent .slide").each(function(i){
				   if (this.title)
				   {
				   		$("#toolbar").append("<li id='slide_li_"+(i+1)+"'><a href='#"+this.id+"' id='slide_"+(i+1)+"'>"+this.title+"</a></li>");
				   }
				   else
				   {
				   		$("#toolbar").append("<li><a href='#"+this.id+"' id='slide_"+(i+1)+"'>"+(i+1)+"</a></li>");
				   }
				   
				 });
			slideshow.tabs=$("#toolbar li");
		}
	
	},
	
	nextArrows: {
		config: function()
		{
			$("#slideshowFrame .button").click( slideshow.nextArrows.click );
		},
		
		click: function(evt)
		{
			var a=(evt.target)? evt.target: event.srcElement;
			var newSlide=slideshow.currentSlide;
			if (a.id=="left") {
					newSlide--;
					if (newSlide<0)
					{
						newSlide=slideshow.tabs.length-1;
					}
			}
			else
			{
				newSlide++;
				if (newSlide>slideshow.tabs.length-1)
					{
						newSlide=0;
					}
			}
			newSlide=slideshow.tabs[newSlide];
			slideshow.ScrollSlide(newSlide);
			return false;
		}
	},
	
	configureSlides: function()
	{
		slideshow.slides=$("#slideshowFrame .slide");
		$("#slideshowFrame").addClass("activeslideshow");
	},
	
	ScrollSlide: function(slideTab)
	{

		var lastTab,position,slide,offsetPos;

		if (slideshow.currentSlide == slideTab.rank) {
			return;
		}
		slideshow.lastSlide = (slideshow.currentSlide>-1)? slideshow.currentSlide: -1 ;
		slideshow.currentSlide = slideTab.rank;
		

	    $(slideTab).toggleClass("active");
	    if (slideshow.lastSlide>-1) {
		    lastTab = slideshow.tabs[slideshow.lastSlide];
		    $(lastTab).toggleClass("active");
		}

		slide=slideshow.slides[slideTab.rank];
		position = findElementPos(slide);
		
		offsetPos = findElementPos(slideshow.slides[0]);
		position[0] = position[0] - offsetPos[0];
		
		slideshow.content.animate({left: -position[0]},"slow");

	},
	
	configureInternalLinks: function()
	{
		$(".slide a[@href*=#slide_]").click(slideshow.internalLink);
		if (window.location.hash)
		{
			////console.debug("window.location.hash="+window.location.hash);
			var tab=$(window.location.hash);
			if (tab)
			{
				slideshow.ScrollSlide(tab[0].parentNode);
			}
		}
	},
	
	internalLink: function(evt)
	{
		var a=(evt.target)? evt.target: event.srcElement;
		if (a.hash)
		{
			var tab=$(a.hash);
			if (tab)
			{
				if (a.href==location.href.substr(0,location.href.length-a.hash.length))
				{
					slideshow.ScrollSlide(tab[0].parentNode);
					return false;
				}
			}
		}
		
	}
	
};

function findElementPos(elemFind)
{
	var elemX = 0;
	var elemY = 0;
	do {
		elemX += elemFind.offsetLeft;
		elemY += elemFind.offsetTop;
	} while ( elemFind = elemFind.offsetParent )

	return Array(elemX, elemY);
}

$(document).ready(function(){
//console.debug("ready");
	slideshow.onload();
 });