var m_arrImages = null;
var m_bStarted = false;
var m_bReady = true;
var m_nImage = -1;
var bFlip = false;
var imageOn = null;
var imageOff = null;

// ****************************************************************************
// load
// ****************************************************************************
Event.observe(window, 'load', function() {
	if (m_arrImages) {
		imagesStartup();
	}
});

// ****************************************************************************
// imagesStartup
// ****************************************************************************
function imagesStartup() {
	if (!m_bStarted) {
		m_bStarted = true;
		// show 1st image if we have one
		if (m_arrImages.length) {
			// start in rnd place
			var rnd = (Math.floor(Math.random()*m_arrImages.length)) + 1;		
			showImage(rnd);
		}
	}
}

// ****************************************************************************
// imagesInit
// ****************************************************************************
function imagesInit(arrImages) {
	m_arrImages = arrImages;	
}

// ****************************************************************************
// showImage
// ****************************************************************************
function showImage(nImage) {		
	if (m_bReady && nImage != m_nImage) {
		m_bReady = false;

		if (bFlip) {
			bFlip = false;
			imageOn = $('image2');
			imageOff = $('image1');
		}
		else {
			bFlip = true;
			imageOn = $('image1');
			imageOff = $('image2');
		}  
		var strImage = m_arrImages[nImage-1];

		m_nImage = nImage;
		
		loadImage(strImage);
	}
}

// ****************************************************************************
// loadImage
// ****************************************************************************
function loadImage(strImage) {
	var elem = new Element("img", {id: 'something'}); 
	elem.observe('load', function() { 
		// now change slide
		changeImage();
	}); 
	// hide
	imageOn.setStyle({'display':'block','opacity':0});
	// first clear any old content
	imageOn.update();
	// now add new image
	elem.src = strImage;
	imageOn.insert(elem); 		
}

// ****************************************************************************
// nextImage
// ****************************************************************************
function nextImage() {
	var nImage = m_nImage + 1; 
	// are we valid?
	if (nImage > m_arrImages.length) {
		nImage = 1;
	}
	showImage(nImage);
}

// ****************************************************************************
// changeImage
// ****************************************************************************
function changeImage() {
	imageOn.appear({ duration: 1.0, afterFinish: function(){m_bReady = true;} });
	imageOff.fade({ duration: 1.0 });
	
	// start timer if we have more than 1 image
	if (m_arrImages.length > 1) {
		setTimeout("nextImage()", 5000);
	}
}
