/*___________________________________________________________________________________________________________________

	mediaCT webinterieur - www.mediact.nl - info@mediact.nl - 050 5799393 - Groningen - The Netherlands
	copyright: http://creativecommons.org/licenses/by-nc-nd/2.0/deed.nl
	author: Jasper Zeinstra (jasper@mediact.nl)
	18-01-2007 - tested on: Mozilla Firefox 2, Internet Explorer 5.5, 6.0 and 7.0

_____________________________________________________________________________________________________________________*/


// ID name of the container containing the images.
var g_sImageContainerId 	= "foto_loader";
// ID name of the img, following with an image number. start counting at the var g_iStartNumber
var g_sImageId				= "photofader_image_";
// Start Number of the images ID
var g_iStartNumber			= 0;
var g_iPauseSeconds 		= 4;
var g_iFadeSeconds 			= 1;
var g_bRandomBegin			= true;
var g_bRandomNext			= true;


var g_aImages				= new Array();
var g_iCount				= 1;
var g_iCurrentNumber		= "";
var g_oCurrentImage			= "";
var g_iNextNumber			= "";
var g_oNextImage			= "";


// Set the images from the "g_sImageContainerId" that have an id "g_sImageId" in the "g_aImages" array
function getFadingImages() {
	if(document.getElementById(g_sImageContainerId)) {
		while(document.getElementById(g_sImageId + g_iCount)) {
			g_aImages.push(document.getElementById(g_sImageId + g_iCount).src);
			g_iCount++;
		}
		g_iCount--;
		
		setOpacityImages();
		setStartImage();
	}
}

function setOpacityImages() {
	for(i=1; i <= g_iCount; i++) {
		var oImageObj = document.getElementById(g_sImageId + i);
		setOpacity(oImageObj, 0);
	}
}

// Define a starting image, this can be set to random or the first image from the array
function setStartImage() {
	if(g_bRandomBegin) {
		while(g_iCurrentNumber == "" || g_iCurrentNumber < g_iStartNumber ) {
			g_iCurrentNumber = Math.round(g_iCount * Math.random());
		}
	} else {
		g_iCurrentNumber = g_iStartNumber;
	}
	
	g_oCurrentImage = document.getElementById(g_sImageId + g_iCurrentNumber);
	
	setNextImage();
	setOpacity(g_oCurrentImage, 100);
	
	setTimeout("fadeImage()",g_iPauseSeconds * 1000);
}

// Define the next image that will fade
function setNextImage() {
	if(g_bRandomNext) {
		g_iNextNumber = g_iCurrentNumber;
		while(g_iNextNumber == g_iCurrentNumber || g_iNextNumber < g_iStartNumber ) {
			g_iNextNumber = Math.round(g_iCount * Math.random());
		}
	} else {
		if(g_iCurrentNumber == g_iCount) {
			g_iNextNumber = g_iStartNumber;
		} else {
			g_iNextNumber = g_iCurrentNumber + 1;
		}
	}
	
	g_oNextImage = document.getElementById(g_sImageId + g_iNextNumber);
	if(g_oNextImage) {
		setOpacity(g_oNextImage, 0);
	} else {
		alert('error loading image number ' + g_iNextNumber);
		setNextImage();
	}
}

// Fade the image out
function fadeImage() {
	// if the nextImage has a higher view index then the current image, fade in the next image
	if(g_iNextNumber > g_iCurrentNumber) {
		var iImageOpacity 	= g_oNextImage.style.opacity * 100;
		var iFadeSteps 		= 100 / (30 * g_iFadeSeconds);
		
		if(iImageOpacity < 100) {
			iImageOpacity += iFadeSteps;
			setOpacity(g_oNextImage,iImageOpacity);
		  
			setTimeout("fadeImage()",30);
		} else {
			setOpacity(g_oCurrentImage, 0);
			setOpacity(g_oNextImage, 100);
			
			g_oCurrentImage = g_oNextImage;
			g_iCurrentNumber = g_iNextNumber;
			
			setNextImage();
			setTimeout("fadeImage()",g_iPauseSeconds * 1000);
		}
	}
	// if the nextImage has a lower view index then the current image, fade out the current image
	else {
		setOpacity(g_oNextImage,100);
		
		var iImageOpacity 	= g_oCurrentImage.style.opacity * 100;
		var iFadeSteps 		= 100 / (30 * g_iFadeSeconds);
		
		if(iImageOpacity > 0) {
			iImageOpacity -= iFadeSteps;
			setOpacity(g_oCurrentImage,iImageOpacity);
		  
			setTimeout("fadeImage()",30);
		} else {
			setOpacity(g_oCurrentImage, 0);
			
			g_oCurrentImage = g_oNextImage;
			g_iCurrentNumber = g_iNextNumber;
			
			setNextImage();
			setTimeout("fadeImage()",g_iPauseSeconds * 1000);
		}
	}
}

// set the opacity of an image
function setOpacity(imageObj, opacity) {
	opacityVal = Math.round(opacity);
	
	
	// Mozilla and Firefox
	imageObj.style.MozOpacity = opacityVal/100;

	// Safari 1.2, Firefox and Mozilla, CSS3
	imageObj.style.opacity = opacityVal/100;
	
	// IE - Win
//	imageObj.style.filter = "alpha(opacity:"+opacityVal+")";
	imageObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+opacityVal+")";


	// Safari Version < 1.2
	// Konqueror
	imageObj.style.KHTMLOpacity = opacityVal/100;
}
