var timePerStep = 1; // milliseconds
var timePerLoad = 200; // milliseconds
var timeBetweenTransitions = 5000; // milliseconds
var stepSize = 5; // percent
var transitionThreshold = 100; // percent 
var coverElement;
var count = 0;
var fadeToColour = 'white';

var isMicrosoft = true;

imageURLs = [];

if ( URLs.length == 0 ) {
	URLs = genericURLs;
}

for (i=0; i<URLs.length; i++) {
	imageURLs[i] = 'url('+URLs[i]+')';
}


/*
var images = new Array();

for (i=0; i<imageURLs.length; i++) {
	images[i] = new Image();
	images[i].src = imageURLs[i];
}
*/

if ( navigator.appName != "Microsoft Internet Explorer" ) {
	isMicrosoft = false;
}

// Set first slide

var currentImage = 0;

if ( imageURLs.length > 1 ) {
	currentImage = Math.floor(Math.random()*imageURLs.length);
}
if ( currentImage > (imageURLs.length-1) ) {
	currentImage = imageURLs.length-1; // Just in case we hit the upper bound of the random number range
}
bannerElement = document.getElementById('banner');
if ( imageURLs ) {
	bannerElement.style.backgroundImage = imageURLs[currentImage];
	for(i=0;i<imageURLs.length;i++) {
		tmpImage = document.createElement('img');
		tmpImage.setAttribute('src',imageURLs[i]);
	}
}

if ( imageURLs.length > 1 ) {

	setTimeout("displayTransition()",timeBetweenTransitions);

}

function displayTransition() {
	
	if ( imageURLs.length > 0 ) {

		coverElement = document.getElementById('slide_cover');
		
		// Set initial state
			
		setOpacity(coverElement,0);
		
		coverElement.style.background = fadeToColour;
		
		fadeInCover();

	}

}

function getOpacity(element) {

	if ( isMicrosoft ) {
		return(element.filters.item("DXImageTransform.Microsoft.Alpha").opacity);
	}
	else {
		return(element.style.opacity*100);
	}

}

function setOpacity(element,opacity) {

	if ( isMicrosoft ) {
		element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
	}
	else {
		element.style.opacity = opacity/100.0;
	}

}


function fadeInCover() {

	currentOpacity = getOpacity(coverElement);

	if ( currentOpacity < transitionThreshold ) {
		
		setOpacity(coverElement,currentOpacity+stepSize);
		
		setTimeout("fadeInCover()",timePerStep);
	
	}
	
	else {

		count = 0;
		waitForLoad();
	
	}

}


function waitForLoad() {

	if ( count == 0 ) {

//		bannerElement = document.getElementById('banner');		

		setOpacity(coverElement,100);
		
		currentImage++;
		if ( currentImage >= imageURLs.length ) {
			currentImage = 0;
		}
	
		bannerElement.style.backgroundImage = imageURLs[currentImage];
		count++;
		setTimeout("waitForLoad()",timePerLoad);
	
	}
	else {
		fadeOutCover();
	
	}

}

function fadeOutCover() {

	currentOpacity = getOpacity(coverElement);

	if ( currentOpacity > 0 ) {
	
		setOpacity(coverElement,currentOpacity-stepSize);
		
		setTimeout("fadeOutCover()",timePerStep);
	
	}
	else {
	
		setTimeout("displayTransition()",timeBetweenTransitions);
	
	}

}
