var imageFadeState = 0; 
var fadeCheckCount = 0; 
var imageFadeIncrement = 0.05; // rate of incremental change  0 < imageFadeIncrement < 1
var imageFadeDelay = .5; // delay in seconds between
var changeEvery = 2; // delay in changes in seconds between photos changing  (if image loaded)
var imageNumberNext = Math.floor(Math.random() * totalImages) + 1; // get value for first image
var imageNumberCurrent = 0; // get value for first image


var checkingInterval = 1000 * imageFadeDelay;

// define the source paths of all images and define them all as 'in'

// onload function
function imagesStart() {
	fadeCheckCount = 1000 * changeEvery;
	document.nextImage.src = imageArray[imageNumberNext];
	imagesOut[imageNumberNext] = 1;
	awaitingRefresh = setInterval('checkDelay()', checkingInterval);
}



function isImageLoaded() {

	imgToTest = document.nextImage;
	
    if (!imgToTest.complete) { 
		return false;
    }

    if (typeof imgToTest.naturalWidth != "undefined" && imgToTest.naturalWidth == 0) {
        return false;
    }

    return true;
}


function checkDelay() {
	
	var testImageNumber = 0;
	
	if ((fadeCheckCount > (changeEvery * 1000)) && (isImageLoaded())) {
		
		fadeCheckCount = 0;
		clearInterval(awaitingRefresh);
		stwitchingImages = setInterval('switchImages()', 50);
		
	} else {
		
		fadeCheckCount += checkingInterval;
		
	}
}

function switchImages() {
	
	if (imageFadeState<1) {
		
		document.getElementById('nextImageContainer').style.top = '6px';
		document.getElementById('nextImageContainer').style.display = 'block';
		imageFadeState += imageFadeIncrement;
		
	} else {
		
		clearInterval(stwitchingImages);
		
		
		document.currentImage.src = document.nextImage.src;
		
		document.getElementById('nextImageContainer').style.top = '10000px';
		document.getElementById('nextImageContainer').style.display = 'none';
		imageFadeState = 0;
		setOpacity('nextImageContainer', imageFadeState);		
		
		do {
			testImageNumber = Math.floor(Math.random() * totalImages) + 1;
		} while (imagesOut[testImageNumber] !=0);
		
		imagesOut[imageNumberCurrent] = 0; // return current image to 'in'
		imagesOut[testImageNumber] = 1; // set new image as 'out'
		
		imageNumberCurrent = imageNumberNext;
		imageNumberNext = testImageNumber;
		
		setTimeout('setNewImage()', checkingInterval);

		awaitingRefresh = setInterval('checkDelay()', checkingInterval);
	
	}
		setOpacity('nextImageContainer', imageFadeState);		

}

function setNewImage() { 
		document.nextImage.src = imageArray[imageNumberNext];
}

// set opacity function will need changin to adapt for more browsers

function setOpacity(layerName, alphaState) {
		document.getElementById(layerName).style.opacity = alphaState;
		document.getElementById(layerName).style.filter = 'alpha(opacity=' + Math.floor(alphaState*100) + ')';
}


