/**
 * Slideshow that fades between images/text in sequence
 *
 * @package ku_homepage
 * @author John Kary <johnkary@ku.edu>
 * @copyright The University of Kansas	12/6/2007
 * @version 1.0
 * @access public
 **/
var timePerSlide = 12000; 	//Time in milliseconds to hold each slide

//====== No need to edit below this line ====================

var kuSlideshow1 = 0;
var kuSlideshow2 = 0;
var lastFrame = 0;
var stopped = false;
var emergency = false;

//====== Operations functions ===============================
//Start slideshow
function start_slideshow(maxFrame){
	slideshow(1, maxFrame, timePerSlide);
}

//Stop the slideshow
function stop_slideshow(){
	clearTimeout(kuSlideshow1);
	clearTimeout(kuSlideshow2);
}

//Pause or resume
function pause_slideshow(){
	if(stopped==true)
	{
		//Resume
		//Fade pause button, reappear as play button
		Effect.Fade('ss_pause_button', {duration:0.2, delay:250});
		Effect.Appear('ss_pause_button', {duration:0.2, delay:0.250})

		//Change pause button image and height
		setTimeout("$('ss_pause_button').src = '../images/features_slides/pause.gif'", 250);
		setTimeout("$('ss_pause_button').style.height = '13px'", 250);

		//Change to first slide and resume slideshow
		change_slide(1);
		start_slideshow(maxFrame);
		stopped = false;
	}
	else
	{
		//Pause
		//Fade play button, reappear as pause button
		Effect.Fade('ss_pause_button', {duration:0.2, delay:0});
		Effect.Appear('ss_pause_button', {duration:0.2, delay:0.250})

		//Change pause button image and height
		setTimeout("$('ss_pause_button').src = '../images/features_slides/play.gif'", 250);
		setTimeout("$('ss_pause_button').style.height = '16px'", 250);

		//Stop slideshow on current slide
		stop_slideshow();
		stopped = true;
	}		
}

//Show previous slide
function prev_slide(){
	if(lastFrame==1){
		nextFrame = maxFrame;
	} else {
		nextFrame = lastFrame - 1;
	}
	
	change_slide(nextFrame);
}

//Show next slide
function next_slide(){
	if(lastFrame==maxFrame){
		nextFrame = 1;
	} else {
		nextFrame = lastFrame + 1;
	}
	
	change_slide(nextFrame);
}

//Manual change slide when thumbnail clicked
function change_slide(frame){
	if(stopped==false){
		pause_slideshow();
	}
	
	if(lastFrame>frame){
		Effect.Appear('slideshow' + frame, {duration:0});
		Effect.Fade('slideshow' + lastFrame, {duration:0.2});	
	} else if(lastFrame<frame) {
		if(frame>0)		Effect.Appear('slideshow' + frame, {duration:0.2});
		if(lastFrame>0)	Effect.Fade('slideshow' + lastFrame, {duration:0, delay:0.25});
	}

//Change thumbnail style of current slide, and regress previous
	change_active_thumb(lastFrame, frame);
	
	lastFrame = frame;  //redefine to fade this frame next time
}

//Puts red border around currently active thumbnail
function change_active_thumb(lastFrame, frame){
	//Remove selected style from previous frame's thumb
	$('ss_thumb' + lastFrame).className = 'ss_thumb';
	//Set selected style for current frame's thumb
	$('ss_thumb' + frame).className = 'ss_thumb_selected';
}

//====== Slideshow functions ================================
//Begins slideshow
function slideshow(start_frame, end_frame, delay) {
	change_active_thumb(end_frame, start_frame);
	lastFrame = start_frame;
	kuSlideshow1 = setTimeout(switch_slides(start_frame,start_frame,end_frame, delay), delay);
}

//Auto-switch slide after X ms
function switch_slides(frame, start_frame, end_frame, delay) {
	return (function(){
		Effect.Fade('slideshow' + frame);
		if(frame == end_frame) { frame = start_frame; } else { frame = frame + 1; }
		setTimeout("Effect.Appear('slideshow" + frame + "');", 0);
		kuSlideshow2 = setTimeout(switch_slides(frame, start_frame, end_frame, delay), delay + 250);
		
		//Change thumbnail style of current slide, and regress previous
		change_active_thumb(lastFrame, frame);
		
		lastFrame = frame;		
	})
}
