// This Javascript file contains functionality used in the navigation of slideshows in the
// multimedia gallery.

// variable to keep track of no of slides in slide show
numberOfSlides = 0;
// current slide
currentSlide = 0;
// current category
currentCategory = "";
// previous category
previousCategory="";
// default picture
defaultPicture = 0;
// string representation of slide count (e.g., '1 0f 4').
ofString = " of ";

// initialize slideshow parameters when page loads
function initializeSlideShowParams(newSlideNumber, newCategory){
	numberOfSlides = newSlideNumber;
	currentCategory = newCategory;
	setDefaultPicture(defaultPicture);
	displayNavButtons();
}

// set new slideshow parameters when user clicks another category link
function setSlideShowParams(newSlideNumber, newCategory, defaultPic){
	// keep track of previous slide to be able to hide slide when categories are changed	
	previousCategory = currentCategory;
	// set new number of slides
	numberOfSlides = newSlideNumber;
	// set new category
	currentCategory = newCategory;
	// hide current slide when categories are changed
	hideCurrentSlide(currentSlide);
	// reset current slide
	currentSlide = 0;
	setDefaultPicture(defaultPic);
	displayNavButtons();
}

function next() {
	currentSlide = currentSlide + 1;
	displayNavButtons();
}

function previous() {
	currentSlide = currentSlide - 1;
	displayNavButtons();

}

function last() {
	currentSlide = numberOfSlides - 1;
	displayNavButtons();
}

function first() {
	currentSlide = 0;
	displayNavButtons();

}

// function that contains logic to determine what labels to show during the slide show
function displayNavButtons() {
	if (numberOfSlides == 0) {
		alert("invalid");
		// change the visibility of nav buttons
		document.getElementById("previous").style.visibility = "hidden";
		document.getElementById("first").style.visibility = "hidden";
		document.getElementById("last").style.visibility = "hidden";
		document.getElementById("next").style.visibility = "hidden";
		document.getElementById("previousinactive").style.visibility = "hidden";
		document.getElementById("firstinactive").style.visibility = "hidden";
		document.getElementById("lastinactive").style.visibility = "hidden";
		document.getElementById("nextinactive").style.visibility = "hidden";			
	}
	if (numberOfSlides == 1) {
		// change the visibility of nav buttons			
		document.getElementById("previous").style.visibility = "hidden";
		document.getElementById("first").style.visibility = "hidden";
		document.getElementById("last").style.visibility = "hidden";
		document.getElementById("next").style.visibility = "hidden";
		document.getElementById("previousinactive").style.visibility = "hidden";
		document.getElementById("firstinactive").style.visibility = "hidden";
		document.getElementById("lastinactive").style.visibility = "hidden";
		document.getElementById("nextinactive").style.visibility = "hidden";
		document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
	}	
	if (numberOfSlides == 2) {
		
		if (currentSlide == 0) {
			// change the visibility of nav buttons
			document.getElementById("previous").style.visibility = "hidden";
			document.getElementById("first").style.visibility = "hidden";
			document.getElementById("last").style.visibility = "hidden";			
			document.getElementById("next").style.visibility = "visible";
			document.getElementById("previousinactive").style.visibility = "visible";
			document.getElementById("firstinactive").style.visibility = "visible";
			document.getElementById("lastinactive").style.visibility = "visible";
			document.getElementById("nextinactive").style.visibility = "hidden";			
			document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
		}
		
		if (currentSlide == 1) {
			// change the visibility of nav buttons			
			document.getElementById("previous").style.visibility = "visible";
			document.getElementById("first").style.visibility = "hidden";
			document.getElementById("last").style.visibility = "hidden";
			document.getElementById("next").style.visibility = "hidden";
			document.getElementById("previousinactive").style.visibility = "hidden";
			document.getElementById("firstinactive").style.visibility = "visible";
			document.getElementById("lastinactive").style.visibility = "visible";
			document.getElementById("nextinactive").style.visibility = "visible";
			// switch the photo slides		
			document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
		}	
	}
	
	if (numberOfSlides > 2) {
		if (currentSlide == 0) {
			document.getElementById("previous").style.visibility = "hidden";
			document.getElementById("first").style.visibility = "hidden";
			document.getElementById("last").style.visibility = "visible";
			document.getElementById("next").style.visibility = "visible";
			document.getElementById("previousinactive").style.visibility = "visible";
			document.getElementById("firstinactive").style.visibility = "visible";
			document.getElementById("lastinactive").style.visibility = "hidden";
			document.getElementById("nextinactive").style.visibility = "hidden";			
			document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
		} else if (currentSlide == 1) {
			document.getElementById("previous").style.visibility = "visible";
			document.getElementById("first").style.visibility = "hidden";
			document.getElementById("last").style.visibility = "visible";
			document.getElementById("next").style.visibility = "visible";
			document.getElementById("previousinactive").style.visibility = "hidden";
			document.getElementById("firstinactive").style.visibility = "visible";
			document.getElementById("lastinactive").style.visibility = "hidden";
			document.getElementById("nextinactive").style.visibility = "hidden";			
			document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
		} else if (currentSlide == (numberOfSlides - 1)) {
			document.getElementById("previous").style.visibility = "visible";
			document.getElementById("first").style.visibility = "visible";
			document.getElementById("last").style.visibility = "hidden";
			document.getElementById("next").style.visibility = "hidden";
			document.getElementById("previousinactive").style.visibility = "hidden";
			document.getElementById("firstinactive").style.visibility = "hidden";
			document.getElementById("lastinactive").style.visibility = "visible";
			document.getElementById("nextinactive").style.visibility = "visible";			
			document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
		} else {
			document.getElementById("previous").style.visibility = "visible";
			document.getElementById("first").style.visibility = "visible";
			document.getElementById("last").style.visibility = "visible";
			document.getElementById("next").style.visibility = "visible";
			document.getElementById("previousinactive").style.visibility = "hidden";
			document.getElementById("firstinactive").style.visibility = "hidden";
			document.getElementById("lastinactive").style.visibility = "hidden";
			document.getElementById("nextinactive").style.visibility = "hidden";			
			document.getElementById("count").innerHTML = (currentSlide + 1) + ofString + numberOfSlides;
		}	
	}
	// set the current slide to show	
	setCurrentSlideToShow(currentSlide);
}


// function to reset visibility of slides
function setCurrentSlideToShow(slideToShow){
	for (i=0; i < numberOfSlides; i++) {
		document.getElementById(currentCategory + i).style.visibility = slideToShow == i ? 'inherit' : 'hidden';
	}
}

// function to reset visibility of slides
function hideCurrentSlide(slideToHide){	
	document.getElementById(previousCategory + slideToHide).style.visibility = 'hidden';
}
		
function show(thisPic, replacedPic) {
	document.getElementById(replacedPic).src= myPix[thisPic];	
	matchPictureWithCaption(thisPic);
}

// set default picture
function setDefaultPicture(thisPic){
	defaultPicture = thisPic;
	show(defaultPicture, "myPicture");
}

// function to match picture with caption
function matchPictureWithCaption(picID){
	captionText = document.getElementById(picID).innerHTML;	
	document.getElementById("pictext").innerHTML= captionText;
}
	
	