/*
slideshow based on coda ui

requires jquery.js

*/

slideshowConfig={
	initialSlide:0, /* the number of the initial slide */
	startAutoSlideShow: 1000,
	continueAutoSlideShow: 5000,
	AutoSlideShowActive: true
};

var slideshow={
	currentSlide: -1, /* the currently active slide */
	lastSlide: -1,
	
	onload: function()
	{
		if (document.getElementById("slideshow"))
		{
			slideshow.scrollDiv=$("#scroller");
			slideshow.scrollDiv[0].scrollLeft=0;
			slideshow.content=$("#slideshowContent");
			slideshow.configureSlides();
			slideshow.toolbar.config();
			slideshow.nextArrows.config();
			slideshow.configureInternalLinks();
			$("#pagecount").html($("#slideshowContent .slide").size());
			$("#imageName").html($("#pane-1 img")[0].alt);
			//start slideshow
			//window.setTimeout("slideshow.startAutoSlideShow()",slideshowConfig.startAutoSlideShow);
			//set cancel for slideshow
			//$("#scroller").mouseover(function(){slideshow.endAutoSlideShow()});
		}
	},
	
	toolbar: {
		config: function()
		{
			slideshow.tabs=$("#toolbar li");
			if (slideshow.tabs.length==0)
			{
				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){
					var titleToolTip=$("h3.clientTitle",this).html();
				   if (this.title)
				   {
				   		$("#toolbar").append("<li><a href='#"+this.id+"' id='slide_"+(i+1)+"'>"+this.title+"<span class='backgroundSpan'></span><span class='titleSpan'>"+titleToolTip+"</span></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()
		{
			$("#slideshowControls .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);
			//update page counter
			//console.debug($("a",newSlide).html().match(/^\d+/)[0]);
			$("#pagenumber").html($("a",newSlide).html().match(/^\d+/)[0]);
			//console.debug("lide id="+$("a",newSlide).attr("href"));
			//console.debug("img list="+$( $("a",newSlide).attr("href")+" img" )[0].alt );
			//$("#imageName").html($( $("a",newSlide).attr("href")+" img" )[0].alt);
			
			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)
		{
			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;
				}
			}
		}
		
	},
	
	startAutoSlideShow: function()
	{
		slideshow.animatedSlide();
		if (slideshowConfig.AutoSlideShowActive)
		{
			timer=window.setTimeout("slideshow.continueAutoSlideShow()",slideshowConfig.continueAutoSlideShow);
		}
	},
	
	continueAutoSlideShow: function()
	{
		slideshow.animatedSlide();
		if (slideshowConfig.AutoSlideShowActive)
		{
			timer=window.setTimeout("slideshow.continueAutoSlideShow()",slideshowConfig.continueAutoSlideShow);
		}
	},
	
	endAutoSlideShow: function()
	{
		slideshowConfig.AutoSlideShowActive=false;
		//de-activate timer
		clearTimeout(timer);
	},
	
	animatedSlide: function()
	{
		var newSlide=slideshow.currentSlide;
		newSlide++;
		if (newSlide>slideshow.tabs.length-1)
		{
			newSlide=0;
		}
		newSlide=slideshow.tabs[newSlide];
		slideshow.ScrollSlide(newSlide);
		//update page counter
		//console.debug($("a",newSlide).html().match(/^\d+/)[0]);
		$("#pagenumber").html($("a",newSlide).html().match(/^\d+/)[0]);
		//console.debug("lide id="+$("a",newSlide).attr("href"));
		//console.debug("img list="+$( $("a",newSlide).attr("href")+" img" )[0].alt );
		$("#imageName").html($( $("a",newSlide).attr("href")+" img" )[0].alt);
	}

	
	
};

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(){
	slideshow.onload();
 });