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 && typeof genericURLs !== 'undefined' ) {
	URLs = genericURLs;
}

if ( URLs ) {
	
	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 ( bannerElement && imageURLs && imageURLs[currentImage] ) {
		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);

		}

	}
	
	
}
