function dbg(msg) {
	//document.getElementById('dbg').innerHTML += '<br />' + msg;
	return false;
}
dbg('init');




// ------------------------------------------------
// DECLARE CONTENT
// ------------------------------------------------

var slideImages = new Array(); 
var slideTitles = new Array();
var slideTexts = new Array();


slideImages[0] = 'img/slides/slide_grades.jpg';
slideTitles[0] = 'Ülevaatlik hindamissüsteem';
slideTexts[0] = 'Ilus, konkreetne ning lihtsalt kasutatav hindamissüsteem võimaldab õpetajal sisestada tunni andmed kiiresti ja mugavalt, kulutamata aega tarbetute väljade täitmisele.';


slideImages[1] = 'img/slides/slide_stats1.jpg';
slideTitles[1] = 'Detailne statistika';
slideTexts[1] = 'Õpetajate poolt sisestatud andmete põhjal loob Stuudiumi statistikamootor selgeltloetavad raporteid kasutajaaktiivsuse, kohalkäidavuse ning õppeedukuse kohta.';


slideImages[2] = 'img/slides/slide_grades2.jpg';
slideTitles[2] = 'Selged hinnetelehed';
slideTexts[2] = 'Õpilased ning lapsevanemad saavad nüüd selgelt näha, mille eest, millal ning kuidas õpilast hinnatud on. Selge tundide logi annab õppeperioodist kena ülevaate.';


slideImages[3] = 'img/slides/slide_wiki1.jpg';
slideTitles[3] = 'Lihtsustatud grupitöö';
slideTexts[3] = 'Wiki-põhimõttel toimiv grupitöö keskkond teeb õpilastevahelise koostöö efektiivsemaks ning põnevamaks.';


slideImages[4] = 'img/slides/slide_materials.jpg';
slideTitles[4] = 'Õppematerjalide haldus';
slideTexts[4] = 'Õppematerjalide haldussüsteem võimaldab üles laadida ning organiseerida kõiksuguseid dokumente, viiteid veebilehtedele ning meelespäid.';


dbg('slideImages count: ' + slideImages.length);	
	

// ------------------------------------------------
// DECLARE INITIAL VARIABLES, SET UP STAGE
// ------------------------------------------------


var ci = 0;		// ci for Current Index, ie the array key for the current slide
				// ni stands for New Index, ie the key for the slide about to appear


var holdingTime = 7000;		// time to display one slide in milliseconds
var animTime = 1000;		// duration for slide transition in milliseconds


// images get written to a "buffer" div (display: none;) so that they are not loaded 
// at runtime. On average, each image gets holdingTime to load.

var buffer = '';

for (var i in slideImages) {
	if (i == parseInt(i)) {
		dbg('buffering img #' + i);
		buffer += '<img src="' + slideImages[i] + '" />';
	}
}
document.getElementById('imagebuffer').innerHTML = buffer;


// there are two layers - top and bottom - and the current slide is constantly moved
// from bottom to top and then faded out to reveal the new slide in the bottom layer.

var slideimgContent = 
	'<div class="featureimg" id="featureimg_top" style="z-index: 1"></div>'
	+ '<div class="featureimg" id="featureimg_bottom" style="z-index: 0">'
	+ '<img src="' + slideImages[0] + '" />'
	+ '</div>';
	
	
document.getElementById('slidetext').innerHTML = '<h2>' + slideTitles[0] + '</h2><p>' + slideTexts[0] + '</p>';
document.getElementById('slideimg').innerHTML = slideimgContent;




// ------------------------------------------------
// FUNCTION IMPLEMENTATIONS
// ------------------------------------------------


function swapImageLayers() {

	// copys bottom layer content to top layer

	document.getElementById('featureimg_top').innerHTML = document.getElementById('featureimg_bottom').innerHTML;
	dbg('making images the same');
	
	topImageOpaque = new Fx.Style('featureimg_top', 'opacity', { 
		duration: animTime, 
		wait: true, 
		onComplete: function() {
		}
	});
	topImageOpaque.set(1);
	
}


function changeImage() {

	// the heavy lifting

	ni = ci+1;
	dbg('changing image.');
	dbg('ci: ' + ci);
	dbg('ni: ' + ni);
	if (ni >= slideImages.length) {
		ni = 0;
	}
	
	topImageOpacity = new Fx.Style('featureimg_top', 'opacity', { 
		duration: animTime, 
		wait: true, 
		onComplete: function() {
			dbg('finished fading out top img');
			ci = ni;
			setTimeout("swapImageLayers()", (holdingTime/2));		// do layer copying halfway through the cycle
			setTimeout("changeImage()", holdingTime);				// call parent function again in holdingTime
		}
	});
	
	textOpacityOut = new Fx.Style('slidetext', 'opacity', { 
		duration: (animTime/2), 
		wait: true, 
		onComplete: function() {
			dbg('text has faded out.');
			// ci will not have been set by this point, hence use ni
			document.getElementById('slidetext').innerHTML = '<h2>' + slideTitles[ni] + '</h2><p>' + slideTexts[ni] + '</p>';	
			textOpacityIn.start(0, 1);
		}
	});
	
	textOpacityIn = new Fx.Style('slidetext', 'opacity', { 
		duration: (animTime/2), 
		wait: true, 
		onComplete: function() {
			dbg('text has faded back in');
		}
	});
	
	newImage = '<img src="' + slideImages[ni] + '" />';
	document.getElementById('featureimg_bottom').innerHTML = newImage;
	
	topImageOpacity.start(1, 0);
	
	textOpacityOut.start(1, 0);		// will call textOpacityIn upon completion

}



// ------------------------------------------------
// INIT
// ------------------------------------------------

window.onload = function() {

	setTimeout("swapImageLayers()", (holdingTime/2));
	setTimeout("changeImage()", holdingTime);

}


