var timeouts=new Array();

function hide_all_slides(){

	opacity('slide1', 1, 0, 1);
	opacity('slide2', 1, 0, 1);
	opacity('slide3', 1, 0, 1);
	opacity('slide4', 1, 0, 1);
	opacity('slide5', 1, 0, 1);
	
}

function activate_tab(tab, slide_count){
		
	var n=0;
	var id='';
	
	// set all tabs to not selected
	for(n=0; n<=slide_count; n++){
		id='sstab'+n;
		document.getElementById(id).className='';
	}
	
	// set selected tab to selected
	document.getElementById('sstab'+tab).className='selected';
}

function ssrestart(slide){
		
	var i;

	// clear slideshow
	for($i=0; $i<timeouts.length; $i++){
		clearTimeout(timeouts[$i]);
	}
	
	hide_all_slides();
	
	// start slideshow at selected slide
	slideshow(slide);

}

function slideshow(start){
	
	hide_all_slides();
	
	var interval=6600;
	var fade_time=2000;
	
	var fade_out_time=50;
	
	var slide_count=4; // 0 based

	var time_skipped=start*interval;
	
	setTimeout(
		"document.getElementById('slideshow').style.visibility='visible'",
		100
	);
	
	play(interval,fade_time,fade_out_time,slide_count,start);
	
	for(x=1; x<100; x++){
		timeouts[timeouts.length]=setTimeout(
			"play_again("+interval+","+fade_time+","+fade_out_time+","+slide_count+")",
			((slide_count+1)*interval)*x-time_skipped
		);
	}
}

function play(interval,fade_time,fade_out_time,slide_count,start){
	
	var slide=0;
	var slidex=0;
	var offset=0;
	
	for(slide=start; slide<=slide_count; slide++){
		
		offset=interval*slide-interval*start;
		
		// set tab to match new slide
		timeouts[timeouts.length]=setTimeout(
			"activate_tab("+slide+","+slide_count+")",
			offset
		);
		
		
		// set links to correct position for this slide
		for(slidex=0; slidex<=slide_count; slidex++){
		
			if(slidex==slide){
				// move this link to front
				timeouts[timeouts.length]=setTimeout(
					"document.getElementById('slide"+(slidex+1)+"a').style.zIndex=5", 
					offset
				);
			}
			
			else{
				// move the other links to the back
				timeouts[timeouts.length]=setTimeout(
					"document.getElementById('slide"+(slidex+1)+"a').style.zIndex=1", 
					offset
				);
			}
		}
		
		// fade in new slide
		timeouts[timeouts.length]=setTimeout(
			"opacity('slide"+(slide+1)+"', 0, 100, "+fade_time+")", 
			offset
		);
		
		// fade out old slide if we aren't at the first slide
		if(slide>start){
			timeouts[timeouts.length]=setTimeout(
				"opacity('slide"+(slide)+"', 100, 0, "+fade_out_time+")", 
				offset
			);
		}
		
	}
}

function play_again(interval,fade_time,fade_out_time,slide_count){
	
	var slide=0;
	var slidex=0;
	var old_slide=1;
	
	for(slide=0; slide<=slide_count; slide++){
		
		// choose which slide to fade out
		if(slide==0){
			old_slide=slide_count;
		}
		else{
			old_slide=slide-1;
		}
		
		
		// set links to correct position for this slide
		for(slidex=0; slidex<=slide_count; slidex++){
			
			// move this link to front
			if(slidex==slide){
				timeouts[timeouts.length]=setTimeout(
					"document.getElementById('slide"+(slidex+1)+"a').style.zIndex=5", 
					interval*slide
				);
			}
			
			// move the other links to the back
			else{
				timeouts[timeouts.length]=setTimeout(
					"document.getElementById('slide"+(slidex+1)+"a').style.zIndex=1", 
					interval*slide
				);
			}
		}
		
		// set tab for this slide
		timeouts[timeouts.length]=setTimeout(
			"activate_tab("+slide+","+slide_count+")",
			interval*slide
		);
		
		// fade in new slide
		timeouts[timeouts.length]=setTimeout(
			"opacity('slide"+(slide+1)+"', 0, 100, "+fade_time+")",
			interval*slide
		);
		
		// fade out old slide
		timeouts[timeouts.length]=setTimeout(
			"opacity('slide"+(old_slide+1)+"', 100, 0, "+fade_out_time+")",
			interval*slide
		);

	}
}

function opacity(id, opacStart, opacEnd, millisec){
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			timeouts[timeouts.length]=setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			timeouts[timeouts.length]=setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

//change the opacity for different browsers
function changeOpac(opacity, id){
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec){
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

function blendimage(divid, imageid, imagefile, millisec){
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	//set the current image as background
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
	//make image transparent
	changeOpac(0, imageid);
	
	//make new image
	document.getElementById(imageid).src = imagefile;

	//fade in image
	for(i = 0; i <= 100; i++) {
		timeouts[timeouts.length]=setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

function currentOpac(id, opacEnd, millisec){
	//standard opacity is 100
	var currentOpac = 100;
	
	//if the element has an opacity set, get it
	if(document.getElementById(id).style.opacity < 100) {
		currentOpac = document.getElementById(id).style.opacity * 100;
	}

	//call for the function that changes the opacity
	opacity(id, currentOpac, opacEnd, millisec)
}

