// JavaScript Document

window.onload = function(){startSlideshow()}


function startSlideshow(){//sets up initial values and kicks off the show
	window.rateOfSlide = 15; //how fast for each slide to slide
	window.sliderRateOfUpdate = 20; //how often to loop the animaiton
	window.slideTimeout = 3000; //how long to wait before loading the next slide
	window.totalSlides = 4; //total number of slides to loop through
	window.currentSlide = 2; //slide currently visible
	window.slideWidth = 636; //width (in pixels) of the slide
	window.slideHeight = 312; //height (in pixels) of the slide
	window.transitionTimer; //timer to handle slide transitions
	window.animating = false; //boolean indicating whether or not the slides are currently animating
	//slideIn(window.currentSlide);
	window.transition = true; //boolean controlling whether or not the slides should continue transitioning
	document.getElementById('slideshowWrapper').onmouseover = function(){clearTimeout(window.transitionTimer); window.transition = false;};
	document.getElementById('slideshowWrapper').onmouseout = function(){window.transition = true; window.transitionTimer = setTimeout("advanceSlide()", window.slideTimeout);};
	window.transitionTimer = setTimeout("advanceSlide()", window.slideTimeout);
}

function slideIn(slideNumber){//position passed slide and setup animation for slide in
	clearTimeout(window.transitionTimer);
	var targetSlide = document.getElementById("slide"+slideNumber);
	var targetSlideDetail = document.getElementById("slideDetail"+slideNumber);
	targetSlide.style.left = (-1 * window.slideWidth)+'px';
	animateSlide(slideNumber, 0, 'in');
	showSlideLink(slideNumber);
}

function slideOut(slideNumber){//setup animation for slide out
	hideSlideDetail(slideNumber);
	animateSlide(slideNumber, window.slideWidth, 'out');
	hideSlideLink(slideNumber)
}

function advanceSlide(){//move to the next slide
	clearTimeout(window.transitionTimer);
	var nextSlide = window.currentSlide + 1;
	if(nextSlide > window.totalSlides){
		nextSlide = 1;
	}
	slideOut(window.currentSlide);
	window.currentSlide = nextSlide;
	slideIn(window.currentSlide);
}

function advanceToSlide(slideNumber){//move to specified slide
	if(!window.animating && slideNumber != window.currentSlide){//check to make sure we aren't currently animating or trying to go to the current slide
		clearTimeout(window.transitionTimer);
		slideOut(window.currentSlide);
		window.currentSlide = slideNumber;
		slideIn(window.currentSlide);
	}
}

function showSlideLink(slideNumber){// decorates link in slideshow navigaiton
	var targetLink = document.getElementById("button"+slideNumber);
	targetLink.className ='active';
}

function hideSlideLink(slideNumber){
	var targetLink = document.getElementById("button"+slideNumber);
	targetLink.className ='';
}

function hideSlideDetail(slideNumber){
	var targetImage = document.getElementById("slideDetail"+slideNumber);
	targetImage.className = "slideDetail";
}


function showSlideDetail(slideNumber){//shows detail associated with slide
	var targetImage = document.getElementById("slideDetail"+slideNumber);
	targetImage.className = "slideDetail showDetail";
}

function animateSlide(slideNumber, targetPosition, transitionType){//animate the slides
	var targetSlide = document.getElementById("slide"+slideNumber);
	var newPosition;
	
	if(targetPosition > targetSlide.offsetLeft){ //set new position
		newPosition = targetSlide.offsetLeft + window.rateOfSlide;
	}
	
	if(newPosition > targetPosition){ //check to see if new position is beyond target
		newPosition = targetPosition;
	}
	
	targetSlide.style.left = newPosition + "px";//move slide
	 if(newPosition != targetPosition){//check to see if we must animate again
		 window.animating = true;
		 setTimeout("animateSlide("+slideNumber+", "+targetPosition+", '"+transitionType+"')", window.sliderRateOfUpdate);
	 }else{//if not call slide change timeout
	 	if(transitionType == "in"){
			showSlideDetail(slideNumber);
			 window.animating = false;
			 if(window.transition){
			 	window.transitionTimer = setTimeout("advanceSlide()", window.slideTimeout);
			 }
		}
	 }
}
