/* ----------------------------------------------------------------------------
Copyright (c) 2009 Steve Goeckler. All Rights Reserved.

FileName : ss.js
Author   : Steve Goeckler
Abstract : JavaScript Library for slideshow functionality
History  : Born									10.27.09		!sg

--------------------------------------------------------------------------- */

var gnActiveImageIdx = 0;
var gsActiveImage = "";

var gbSwitching = false;
var gbSS = false;
var gidTimer = null;
var giSSInterval = 5000;

var giSSFrameCounter = 0;
var MAX_FRAMES = -1;		// 3x loop * 7 frames per loop == max slide show run

var gBaseImgPath = "images/"

var garrDvImgs =   new Array ("#dvImg1", "#dvImg2", "#dvImg3", "#dvImg4", "#dvImg5", "#dvImg6", "#dvImg7", "#dvImg8");
var garrSSCtrlIds = new Array ("ssCtrl_1", "ssCtrl_2", "ssCtrl_3", "ssCtrl_4", "ssCtrl_5", "ssCtrl_6", "ssCtrl_7", "ssCtrl_8");
var garrSSCtrlOfs = new Array ("0px", "-14px", "-28px", "-42px", "-56px", "-70px", "-84px", "-98px");
								
	//--------------------------------------------------------------------------------

	$(document).ready(function(){
		ssInit();
	});

	//--------------------------------------------------------------------------------
	// switch to the 1st section and then start the slide show
	function ssInit() 
	{
		switchSlide("1");
		ssStart(true); 
	}
	
	//--------------------------------------------------------------------------------
	//setup flags, timer and buttons states, then start the slide show
	function ssStart(bDelaySwitch)  {
	
		if (gbSS) return;
		gbSS = true;
	
		updatePlayPause(true);
		//$("#dvSSImages").slideDown("slow");
		$("#dvSSImages").show();
		if (bDelaySwitch==true)
			gidTimer = setTimeout (slideShow, giSSInterval)
		 else {
			slideShow();
		 }
	}

	//--------------------------------------------------------------------------------
	//reset flags, kill timer and buttons states, update state to current section
	function ssStop()  {
	
		if (!gbSS) return;
		
		clearTimeout(gidTimer);
		gbSS = false;
		
		updatePlayPause(false);
		switchSlide(garrBtnIds[gnActiveImageIdx]);
	}

	//--------------------------------------------------------------------------------
	//play pause slideshow functionality
	function playPause()  {
	
		if (gbSS) 
			ssStop();
		else
			ssStart(false);
	}

	//--------------------------------------------------------------------------------
 	//goto next frame set timeout if not 3x loop through slide show
	function slideShow()  {
	
		next();
		if (MAX_FRAMES < 0) { // no frame display limit
			gidTimer = setTimeout (slideShow, giSSInterval)
			return;
		}
		if (++giSSFrameCounter < MAX_FRAMES)
			gidTimer = setTimeout (slideShow, giSSInterval)
		else
			gbSS = false;
	}
	
	//--------------------------------------------------------------------------------
	//map gnActiveImageIdx to a imgId, then call switchSlide()
	function next() {
	
	  var imgId = ""
		switch(gnActiveImageIdx) {
			case 0: imgId = "2"; break;
			case 1: imgId = "3"; break;
			case 2: imgId = "4"; break;
			case 3: imgId = "5"; break;
			case 4: imgId = "6"; break;
			case 5: imgId = "7"; break;
			case 6: imgId = "8"; break;
			case 7: imgId = "1"; break;
		}
		switchSlide(imgId,true);
	}

	//--------------------------------------------------------------------------------
	//map gnActiveImageIdx to a imgId, then call switchSlide()
	function prev() {
	
	  var imgId = ""
		switch(gnActiveImageIdx) {
			case 0: imgId = "8"; break;
			case 1: imgId = "1"; break;
			case 2: imgId = "2"; break;
			case 3: imgId = "3"; break;
			case 4: imgId = "4"; break;
			case 5: imgId = "5"; break;
			case 6: imgId = "6"; break;
			case 7: imgId = "7"; break;
		}
		switchSlide(imgId,true);
	}
	
	//--------------------------------------------------------------------------------
	function switchSlide(imgId, bClick)
	{
		if (gbSwitching == true) return;
		gbSwitching = true;

		//if a click called this fn, kill slideshow
		if (bClick==true) {		
			clearTimeout(gidTimer);
			gbSS = false;
			giSSFrameCounter = 0;
			updatePlayPause(false);
		}
		
		var idx = 0;
		switch(imgId) {
			case "1": idx = 0; break;
			case "2": idx = 1; break;
			case "3": idx = 2; break;
			case "4": idx = 3; break;
			case "5": idx = 4; break;
			case "6": idx = 5; break;
			case "7": idx = 6; break;
			case "8": idx = 7; break;
		}
		
		if (gsActiveImage != "")
			$(gsActiveImage).hide();
			
		//setup new image
		gnActiveImageIdx = idx;
		gsActiveImage = garrDvImgs[idx];
	
		var opts = {};
		var sTitleLink, sImageHTML, sMoreLink 
		//sTitleLink = '<a href="' + garrLinks[idx] + '" title="' + garrTitles[idx] + " " + garrAuthors[idx] + '">' + garrTitles[idx] + '</a>'
		sTitleLink = garrTitles[idx]
		//sImageHTML = '<a href="' + garrLinks[idx] + '" title="' + garrTitles[idx] + " " + garrAuthors[idx] + '"><img src="' + gBaseImgPath + garrImages[idx] + '" alt="' + garrTitles[idx] + " " + garrAuthors[idx] + '" /></a>'
		sImageHTML = '<img src="' + gBaseImgPath + garrImages[idx] + '" />'
		sCaptions = '<p id="pSSCaption">' + garrCaptions[idx] + '</p>'
		//sMoreLink = '<p id="pMoreLink" class="arwMore"><a href="' + garrLinks[idx] + '" title="' + garrTitles[idx] + " " + garrAuthors[idx] + '">More</a></p>'

		$("#hSSTitle").html(sTitleLink);
		//$("#pSSAuthor").html(garrAuthors[idx]);
		if (gsActiveImage != "")
			$(gsActiveImage).html(sImageHTML);
		//$("#pMoreLink").html(sMoreLink);
			
		if ($.browser.msie)
			$(gsActiveImage).fadeIn(1000);
		else 
			$(gsActiveImage).fadeIn(1000);

		updateCtrlPanel();
		
		//$("#dvSSCaptionFrame").css("height", "120px");
		$("#dvSSCaptionFrame").hide("fast", function() {
											//$("#dvSSCaptionFrame").html(sCaptions + sMoreLink);
											//$("#dvSSCaptionFrame").fadeIn(3000);
											$("#dvSSCaptionFrame").html(sCaptions);
											$("#dvSSCaptionFrame").show();
											gbSwitching = false;
										});
 	}

	//--------------------------------------------------------------------------------
	function updateCtrlPanel(){
	
		//update ctrl panel 
		for (i= 0; i< garrSSCtrlOfs.length; i++)
			$("#"+garrSSCtrlIds[i]).css("background-position", garrSSCtrlOfs[i] + " 0px");	
		$("#"+garrSSCtrlIds[gnActiveImageIdx]).css("background-position", garrSSCtrlOfs[gnActiveImageIdx] + " -23px");	
	}
	
	//--------------------------------------------------------------------------------
	function updatePlayPause(bPlay){
	
		if (bPlay) {
			$("#ssCtrl_play").attr("title", "Pause slideshow");
			$("#ssCtrl_play").css("background-position", "-95px 1px");	
		}
		else {
			$("#ssCtrl_play").attr("title", "Resume slideshow");
			$("#ssCtrl_play").css("background-position", "-114px 1px");	
		}
	}
	
	//--------------------------------------------------------------------------------
	var windowOnLoad = function(){
		//ssInit();
	}
	
	if (window.addEventListener)
		window.addEventListener('load', windowOnLoad, false);
	else
		window.attachEvent('onload', windowOnLoad);


