var slideEnabled	 	= true;		// if the show is enabled =)
var imageVisible 		= false;		// is there a currently visible image?
var runningSlide 		= false;		// is there currently a working slide transition
var maxIdle 			= 7;			// wait for x seconds, then automated slide
var currentIdle 		= 0;			// how long are we waiting?
var idle 				= false;		// when the maxidle is reached, we are idle for sure
var timeBetween			= 6;		// the time between slided images
var imagesLoaded;					// images that are done
var movieImagesPending;			// how much images to go?
var idleTimer;					    	// timer, for the idle stuff

function shiftImage( direction, style ) {
	
	if(!style) {
		style = "click";
	}
	
	if(images.length > 1) { 	
		// debug('shiftimage');
		
		if(imageVisible != false ) {
			
			if(direction == 1) {
				if(imageVisible == images.length) {
					showImage(1, style);
				} else {
					showImage(imageVisible+1, style);
				}	
			}
		
			if(direction == 0) {
				if(imageVisible == 1) {
					showImage(images.length, style);
				} else {
					showImage(imageVisible-1, style);
				}	
			}
		}	
	}
}

function selectImage( id ) {
	// debug('selectimage');
	showImage( id, "click" );
}

function setupDisplay() {

	// debug('setupdisplay');
	
		var navigator = $('navigator');

	if(images.length > 1) { 	
		var elem = document.createElement('a');
			elem.id = "left";
			elem.innerHTML = "&lt;&lt;";
			elem.style.color = "c0c0c0";
			elem.href = "javascript: shiftImage(0);";
			
			navigator.appendChild(elem);
	
		for( i in images ) {
			
		
			var elem = document.createElement('a');
				elem.id = "nav"+images[i]['key'];
				elem.innerHTML = images[i]['key'];
				elem.style.color = "c0c0c0";
				elem.href = "javascript: selectImage("+images[i]['key']+");";
	
				navigator.appendChild(elem);
		}
	
		var elem = document.createElement('a');
			elem.id = "right";
			elem.innerHTML = "&gt;&gt;";
			elem.style.color = "c0c0c0";		
			elem.href = "javascript: shiftImage(1);";
							
			navigator.appendChild(elem);
	}
}


function updateDisplayState( ) {

	// debug('updatedisplaystate');
	
	imagesLoaded = images.length - movieImagesPending;
	
	var navigator = $('navigator');

	// debug(imagesLoaded);

	if( imagesLoaded == images.length ) {
		
	
		if(images.length > 1) { 
			$('right').style.color = "#000000";
			$('left').style.color = "#000000";
		}	
	}
	
	if(images.length > 1) { 
		
		$('nav'+imagesLoaded).style.color = "#000000";
	}
	
	if( (imagesLoaded == 1) && (imageVisible == false) ) {
		
		$('pw').style.display = 'none';
		showImage( imagesLoaded, "click" );
		
	}
	
	if(movieImagesPending == 0 )  {
		// images preloaded, navigator updated, possible movie lauch?
		
		
		idleTimer = setInterval("checkForIdle()", 1000);
		
		// clearInterval( idleTimer );
		
	}


}

function showImage( id, style ) {

	// debug('showimage');
	
	switch( style ) {
		case "slide": 	showImageBySlide( id );		
					  	break;
		case "click": 	showImageByBool( id );
						break;
	}

}

function showImageByBool( id ) { 

	// debug('showimagebybool');
	
	if(imageVisible != false) {
   		applyAlpha($('img'+imageVisible), 0);
		if(images.length > 1) { 
			$('nav'+imageVisible).style.fontWeight = "normal";
		}	
    }	

   	applyAlpha($('img'+id), 255);

   	if(images.length > 1) { 
		$('nav'+id).style.fontWeight = "bold";
	}	
	
	imageVisible = id;
}


 
function showImageBySlide( id ) { 

	// debug('showimagebyslide');
	
	if(!runningSlide) {
	    var animator = new Animator();
	    
	    animator.onDone = function() { 
	    	runningSlide = false;
	    }
	    
		if(imageVisible != false) {
			if(images.length > 1) { 
				$('nav'+imageVisible).style.fontWeight = "normal";
			}	
		    animator.addBehavior(new AlphaBehavior($('img'+imageVisible), 500, 255, 0));
		}	
		if(images.length > 1) { 
			$('nav'+id).style.fontWeight = "bold";
		}	
	    animator.addBehavior(new AlphaBehavior($('img'+id), 1500, 0, 255));
		animator.run();	
		runningSlide = true;
		imageVisible = id;
	}	
}

function preloadImages() {
	
	// debug('preloadimages');
	
	$('pw').style.display = '';
	
	movieImagesPending = images.length;	

	var imageWidth = width;
	var imageHeight = $('imagebox').offsetHeight;
		
	var movie = document.createElement('div');
		movie.id = "movie";
		movie.style.display = "";
		movie.style.width = imageWidth;
		movie.style.height = imageHeight;

	    
	for (x in images) {
		
		var frame = document.createElement('div');
			frame.id = "frame"+images[x]['key'];
			frame.style.position = "absolute";
			frame.style.display = "";
			frame.style.width = imageWidth;
			frame.style.height = imageHeight;
			frame.style.textAlign = "center";
				
  		var img = document.createElement('img');
		    img.id = 'img'+images[x]['key'];
		    img.style.display = '';
		    img.style.align = "center";
       		
		    img.onload = function() { 
		    	movieImagesPending--; 
		    	updateDisplayState();
		    }
			
		    img.src = "wax1.4/thumbnail.php?size="+imageWidth+","+imageHeight+"&method=limit&image="+images[x]['href'];
		    frame.appendChild(img);
   	        applyAlpha(img, 0);
		    movie.appendChild(frame);
	}	
	$('imagebox').appendChild(movie);
}

function doAutomatedShift() {
	// debug('doautomatedshift');
	
	if(idle && slideEnabled) {
		setTimeout("doAutomatedShift()", timeBetween * 1000);	
		
		shiftImage(1, 'slide');
	}
}

function checkForIdle() {
	// debug('chechforidle');
	
	if( !idle ) {
		// debug('checkforidle(true)');
		currentIdle++
		if(currentIdle == maxIdle) {
			idle = true;
			doAutomatedShift();
			currentIdle = 0;
		} 
	} else {
		// debug('checkforidle(false)');
	}	
}

function resetIdleState() {
	// debug('resetidle');
	idle = false;
	currentIdle = 0;
}