// Code de chargement de contenu en iFrames ////////
// Écrit par : Etienne Talbot //////////////////////
// Date de création : 6 mars 2007 //////////////////
////////////////////////////////////////////////////
// Particularités //////////////////////////////////
// - Transitions en fade-in / fade-out            //
// - Les iFrames s'adaptent à la taille des pages //
// - Loading entre les pages					  //
////////////////////////////////////////////////////

//***///***// ATTENTION //***///***/////////////////
// IL EST TRÈS IMPORTANT D'AJOUTER AU ONLOAD DU   //
// BODY LES APPELS DES FONCTIONS INIT() ET        //
// TROUVERHAUTEUR() POUR LA PAGE INDEX ET LES     //
// FONCTIONS PARENT.TROUVERHAUTEUR() ET           //
// PARENT.CACHERLOADING() DANS LES PAGES CHARGÉES //
// DANS LE IFRAME.								  //
////////////////////////////////////////////////////

var dest = 'accueil.html'; //initialise la variable dest (destination) qui dira au iFrame quoi charger en premier)
var leLoad = false; //initialise la variable qui servira à dire à la fonction montrerLoading d'arrêter l'apparition du loading

function init(){ //Fonction chargée au body onLoad qui initialise les styles pour que JavaScript les voit
	document.getElementById('contenu').style.opacity = 1.0;		//initialisation de l'opacité du iFrame selon les navigateur FireFox et autres
	document.getElementById('contenu').style.filter = 'alpha(Opacity=100)';		//initialisation de l'opacité du iFrame selon Explorer
	document.getElementById('loading').style.display = 'none';	// initialisation de la non-visibilité du loading
	document.getElementById('loading').style.opacity = 0.0;		//initialisation de l'opacité du loading selon les navigateur FireFox et autres
	document.getElementById('loading').style.filter = 'alpha(Opacity=0)';		//initialisation de l'opacité du loading selon Explorer
	document.getElementById('loading').style.top = '520px';	// placer le loading à sa bonne position (il est + bas pour ne pas qu'on le voit avant que tout load)
}

function trouverHauteur(){ // Fonction qui trouve la hauteur de la page chargée dans le iFrame pour rendre ce iFrame de la même hauteur
	if(document.getElementById('contenu').contentDocument){ // Si en FireFox et autres
		var laHauteur = document.getElementById('contenu').contentDocument.getElementById('boxSection').offsetHeight; // La hauteur = la hauteur de la page chargée
		document.getElementById('contenu').style.height = (laHauteur+30)+'px'; // La hauteur du iFrame = la hauteur voulue + 30 (pour laisser un peu de jeu)
	} else { //si en Explorer
		var laHauteur = document.frames['contenu'].document.getElementById('boxSection').offsetHeight; // La hauteur = la hauteur de la page chargée
		document.getElementById('contenu').style.height = (laHauteur+30)+'px'; // La hauteur du iFrame = la hauteur voulue + 30 (pour laisser un peu de jeu)
	}
}


function changerPage(destination){ // Fonction d'appel qui affecte la variable dest tout de suite (sinon la propriété est perdue lors des boucles d'opacité)
	leLoad = false;		// Permettre au loading d'apparaitre
	dest = destination; // Affecte la variable dest à sa destionation (ex: accueil.html)
	disparaitre();		// Appel de la fonction disparaitre()
}

function disparaitre(){	// Fonction qui fait disparaitre le iFrame en fondu
	if(parseFloat(document.getElementById('contenu').style.opacity) > 0.0){	// Si l'opacité est plus grande que 0 (range: 0.0 à 1.0)
		document.getElementById('contenu').style.opacity = parseFloat(document.getElementById('contenu').style.opacity)-0.05; // Pour FireFox et autres, diminuer l'opacité
		if(!document.getElementById('contenu').contentDocument){	// Si c'est sur Explorer (il ne reconnait pas content.Document)
			document.getElementById('contenu').style.filter = 'alpha(Opacity=' + (parseInt(document.getElementById('contenu').style.filter.slice(14) ) -5) + ')'; // Pour Explorer, diminuer l'oppacité (le slice sert à soutirer le chiffre dans la valeur du filtre)
		}
		setTimeout(disparaitre,20);	// Répéter la fonction disparaitre à chaque 20 milliemes de secondes)
	} else {	// Si l'opacité est à zéro ou moins
		document.getElementById('contenu').style.opacity = 0.0;	// Mettre à zéro définitivement	
		document.getElementById('contenu').style.filter = 'alpha(Opacity=0)';
		
		montrerLoading();	//faire apparaitre le loading
		document.getElementById('contenu').src = dest;	//changer le contenu du iFrame par la page désirée
	}
}

function apparaitre(){
	if(parseFloat(document.getElementById('contenu').style.opacity) < 1.0){	// Si l'opacité est plus petite que 1
		document.getElementById('contenu').style.opacity = parseFloat(document.getElementById('contenu').style.opacity)+0.05; // Pour FireFox et autres, augmenter l'opacité
		if(!document.getElementById('contenu').contentDocument){	// Si c'est sur Explorer (il ne reconnait pas content.Document)
			document.getElementById('contenu').style.filter = 'alpha(Opacity=' + (parseInt(document.getElementById('contenu').style.filter.slice(14) ) +5) + ')'; // Pour Explorer, augmenter l'opacité
		}
		setTimeout(apparaitre,20); // Répéter la fonction apparaitre à chaque 20 milliemes de secondes.
	} else {	// Si l'opacité est à 1 ou plus
		document.getElementById('contenu').style.opacity = 1.0; // mettre visible définitivement
		document.getElementById('contenu').style.filter = 'alpha(Opacity=100)';
	}
}

function montrerLoading(){
	if(leLoad == false){	// Si la page désirée n'est pas encore chargée
		document.getElementById('loading').style.display = 'block';	// Rendre visible
		if(parseFloat(document.getElementById('loading').style.opacity) < 1.0){	// Si l'opacité est plus petite que 1
			document.getElementById('loading').style.opacity = parseFloat(document.getElementById('loading').style.opacity)+0.1; // Pour FireFox et autres, augmenter l'opacité
			if(!document.getElementById('contenu').contentDocument){	// Si c'est sur Explorer (il ne reconnait pas content.Document)
				document.getElementById('loading').style.filter = 'alpha(Opacity=' + (parseInt(document.getElementById('loading').style.filter.slice(14) ) +10) + ')'; // Pour Explorer, augmenter l'opacité
			}
			setTimeout(montrerLoading,20); // Répéter la fonction apparaitre à chaque 20 milliemes de secondes.
		} else {	// Si l'opacité est à 1 ou plus
			document.getElementById('loading').style.opacity = 1.0; // mettre visible définitivement
			document.getElementById('loading').style.filter = 'alpha(Opacity=100)';
		}
	}
}
function cacherLoading(){
	leLoad = true;	// Empêcher le loading d'apparaitre
	if(parseFloat(document.getElementById('loading').style.opacity) > 0.0){	// Si l'opacité est plus grande que 0 (range: 0.0 à 1.0)
		document.getElementById('loading').style.opacity = parseFloat(document.getElementById('loading').style.opacity)-0.1; // Pour FireFox et autres, diminuer l'opacité
		if(!document.getElementById('contenu').contentDocument){	// Si c'est sur Explorer (il ne reconnait pas content.Document)
			document.getElementById('loading').style.filter = 'alpha(Opacity=' + (parseInt(document.getElementById('loading').style.filter.slice(14) ) -10) + ')'; // Pour Explorer, diminuer l'oppacité (le slice sert à soutirer le chiffre dans la valeur du filtre)
		}
		setTimeout(cacherLoading,20);	// Répéter la fonction disparaitre à chaque 20 milliemes de secondes)
	} else {	// Si l'opacité est à zéro ou moins
		document.getElementById('loading').style.opacity = 0.0;	// Mettre à zéro définitivement	
		document.getElementById('loading').style.filter = 'alpha(Opacity=0)';
		document.getElementById('loading').style.display = 'none';	// Cacher le div loading
		
		apparaitre();	// faire apparaitre la section chargée en iFrame
	}
}