var slides = new Array();
var activeSshow = -1;
var activeSlide = new Array();
var slideImages = new Array();

var slideGroups = new Array();
var activeSgroup = -1;

function slide(dir) {  // slide
	if(dir>0) {  // next
		if(activeSlide[activeSshow] < slides[activeSshow].length) showSlide(activeSshow, activeSlide[activeSshow]+dir);
	}
	else {  // prev
		if(activeSlide[activeSshow]) showSlide(activeSshow, activeSlide[activeSshow]+dir);
	}
}

function showSlide(showId, slideId) {  // display a slide
	if(!slides.length || !slides[showId] || !slides[showId].length) return;
	activeSshow = showId;
	activeSlide[showId] = slideId;
	thisButtonStyle = slides[showId][slideId].split('~~')[2];
	setSlidebuttons(thisButtonStyle);
	for(var i=0; i<slides.length; i++) {
		if(activeSshow == i) continue;
		for(var j=0; j<slides[i].length; j++) {  // hide inactive slideshows
			document.getElementById('slide'+slides[i][j].split('~~')[0]).style.visibility = 'hidden';
		}
	}
	for(var i=0; i<slides[showId].length; i++) {
		thisSlide = slides[showId][i].split('~~')[0];
		if(activeSlide[showId] == i) {
			if(!slideImages[thisSlide] || slideImages[thisSlide].src) {
				slideImages[thisSlide] = new Image();
				slideImages[thisSlide].src = slides[showId][i].split('~~')[1];
			}
			if (document.images['img'+thisSlide])
				document.images['img'+thisSlide].src = slideImages[thisSlide].src;
			if (document.getElementById('table'+thisSlide))	
				document.getElementById('table'+thisSlide).style.display='block';
			document.getElementById('slide'+thisSlide).style.visibility = 'visible';
			if(i<slides[showId].length-1) {
				nextSlide = slides[showId][i+1].split('~~')[0];
				nextImgSrc = slides[showId][i+1].split('~~')[1];
				slideImages[nextSlide] = new Image();
				slideImages[nextSlide].src = nextImgSrc;
			}
		}
		else {
			document.getElementById('slide'+thisSlide).style.visibility = 'hidden';  // hide inactive slides
			if (document.getElementById('table'+thisSlide))	
				document.getElementById('table'+thisSlide).style.display='none';
		}			
	}
	setInternallink();
}

function setSlidebuttons(buttonStyle) {  // display slidebuttons
	buttonStyle == 'dark' ? oldButtonStyle = 'light' : oldButtonStyle = 'dark';
	document.images['slideButtonPrevImg'].src = document.images['slideButtonPrevImg'].src.split(oldButtonStyle).join(buttonStyle);
	document.images['slideButtonNextImg'].src = document.images['slideButtonNextImg'].src.split(oldButtonStyle).join(buttonStyle);
	// slidebuttons
	if(!slides[activeSshow] || slides[activeSshow].length < 2) document.getElementById('slidebuttons').style.display = 'none';
	else document.getElementById('slidebuttons').style.display = 'block';
	// prev
	if(activeSlide[activeSshow] == 0) document.getElementById('slidebuttonPrev').style.display = 'none';
	else document.getElementById('slidebuttonPrev').style.display = 'block';
	// next
	if(activeSlide[activeSshow] < slides[activeSshow].length-1) document.getElementById('slidebuttonNext').style.display = 'block';
	else document.getElementById('slidebuttonNext').style.display = 'none';
}

function jumpSlide(srcEl, paraId) {  // jump to slidegroup paragraph
	slideId = -1;
	thisNode = document.getElementById('slidegroup'+paraId);
	while(thisNode != null) {
		thisNode = thisNode.nextSibling;
		if(thisNode.id && thisNode.id.indexOf('slide') != -1) {
			slideId = thisNode.id;
			break;
		}
	}
	if(slideId != -1) {
		for(var i=0; i<slides.length; i++) {
			for(var j=0; j<slides[i].length; j++) {
				if('slide'+slides[i][j].split('~~')[0] == slideId) {
					showSlide(i, j);
				}
			}
		}
	}
}

function setInternallink() {  // hilight internal link
	if(activeSshow == activeSgroup) return;
	for(var i=0; i<document.links.length; i++) {
		thisLink = document.links[i];
		activeSlideLink = slideGroups[activeSshow];
		if(thisLink.className.indexOf('paragraphlink')!=-1) {
			if(activeSlideLink && thisLink.href.split('#').length==2 && thisLink.href.split('#')[1]==activeSlideLink) thisLink.className = 'paragraphlinkA';
			else thisLink.className = 'paragraphlink';
		}
	}
}
