function fade(elt1, elt2) {
	opacityFade(elt1, '100', '0', '500'); // 1000 = 1s : temps de fade
	opacityFade(elt2, '0', '100', '500');
}
function fadeinit() {
	var nbMess = 11; // nombre de messages
	
	for(i = 2; i <= nbMess; i++) {
		visibilityOff("fade"+i);
	}
	setTimeout('fadetemp('+nbMess+', 1)', '5000'); // 6000 = 6s : commence l'animation au bout de 6s	
}
function fadetemp(nbMesg, nbPrevious) {
	var nbTemp = randomNb(nbMesg - 1);
	var nb = nbTemp + 1;
	// document.getElementById('nbTemp').innerHTML = "nbTemp = "+nbTemp ;
	// document.getElementById('nb').innerHTML = "nb = "+nb ;
	if (nb == nbPrevious) {
		if (nb != nbMesg) {
			nb = nbPrevious + 1;
		} else {
			nb = nbPrevious - 1;
		}
	}
	fade('fade'+nbPrevious, 'fade'+nb );
	// document.getElementById('nbPrevious').innerHTML = "nbPrevious = "+nbPrevious ;
	nbPrevious = nb; 
	setTimeout('fadetemp('+nbMesg+', '+nbPrevious+')', '7000'); // 4000 = 4s : temps entre chaque fade
}
function changeOpac(opacity, id) {
		var object = document.getElementById(id).style;
		object.opacity = (opacity / 100);
		object.MozOpacity = (opacity / 100);
		object.KhtmlOpacity = (opacity / 100);
		object.filter = "alpha(opacity=" + opacity + ")";
}
function opacityFade(id, opacStart, opacEnd, millisec) {
		var speed = Math.round(millisec / 10);
		var timer = 0;
		var objet = document.getElementById(id);
	if(opacStart > opacEnd) {
		var i= 0;
		for(i = (opacStart/10); i >= opacEnd; i--) {
			setTimeout("changeOpac(" + (i*10) + ",'" + id + "')",(timer * speed));
			timer++;
		}
		hideObject(objet);
		//setTimeout(objet.style.display = "none",millisec);
	} else if(opacStart < opacEnd) {
		objet.opacity = 0;
		objet.MozOpacity = 0;
		objet.KhtmlOpacity = 0;
		objet.filter = "alpha(opacity=0)";
		showObject(objet);
		// objet.style.display = ""
		for(i = opacStart; i <= (opacEnd/10); i++) {
			setTimeout("changeOpac(" + (i*10) + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}
function eltHasClass(o,className){
	if(!o.className) {
		return false;
	}
	return new RegExp('\\b' + className + '\\b').test(o.className)
}
function forceClass(o, className) {
	if(!eltHasClass(o,className)) {
		o.className = className;
	}
}
function rmClass(o, className){
	o.className = o.className.replace(new RegExp('\\s*\\b' + className + '\\b'),'');
}
function hideObject(aCacher) {
	forceClass(aCacher, 'hidden');
}
function showObject(aCacher) {
	rmClass(aCacher, 'hidden');
}
function randomNb(maxVal,asFloat) {
	var val = Math.random()*maxVal;
	return asFloat?val:Math.round(val);
}
