﻿/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|                              Gestion des effets graphiques                               |
|------------------------------------------------------------------------------------------|
|                                                                                          |
|          Lors du chargement de la page, certains effets sont pris en charge par          |
|         une ou plusieurs fonctions JavaScript. Si le poste client n'a pas activé         |
|        les effets graphiques ne s'affichent pas, mais l'utilisateur doit pouvoir         |
|                                    utiliser le site.                                     |
|                                                                                          |
|------------------------------------------------------------------------------------------|
|                                                                                          |
| Fonctions disponibles :                                                                  |
|    - branche()                                                                           |
|    - dimFenetre()                                                                        |
|                                                                                          |
|                                                                                    1.5.0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|                                                         Benjamin COIFFARD - janvier 2010 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/


// Initialisation des variables
	var nbBrancheG = 0;
	var nbBrancheD = 0;
	var adresseImageBranche = 'image/ambiance/branche2.gif';


/**
 * Affiche la branche du bas de page
 * 
 * La branche affichée en bas de page est composée d'une image, répliquée et assemblée. Les
 * extrémités sont constituées de ce m^me fichier image, compressé afin de coller parfaitement
 * aux marges de la page.
 * La fonction commence par supprimer toutes les branches affichées sur la page, puis en ajoute
 * autant que nécessaire.
 * 
 * @param none
 * @return void
 */
/*-----------------------------------------------------------------------------------------*/
function branche()
{

// Calcule la largeur de la fenêtre
	var largeur = document.body.clientWidth;
	
// Calcule la hauteur du pied de la page
	var hp = hauteurElement(document.getElementById('pied'))+12;

// Calcul des marges gauche et droite (la colonne blanche mesure 734px)
	var marge = Math.floor((largeur-734)/2);
	var marge2 = marge;

// La marge gauche perd 33 px pour que l'image se raccorde correctement
	var margeG = marge-33;
	
// Suppression des branches affichées sur la gauche de la page (redimensionnement de la fenêtre)
	while(nbBrancheG > 0)
	{
		var parent = document.getElementById('global');
		var enfant = document.getElementById('ambi_brg'+(nbBrancheG-1));
		parent.removeChild(enfant);
		nbBrancheG--;
	}

// Suppression des branches affichées sur la droite de la  page (redimensionnement de la fenêtre)
	while(nbBrancheD > 0)
	{
		var parent = document.getElementById('global');
		var enfant = document.getElementById('ambi_brd'+(nbBrancheD-1));
		parent.removeChild(enfant);
		nbBrancheD--;
	}

// Initialisation du tableau des largeurs de branche de gauche
	var largeurBG = new Array();

// Initialisation de la variable x avec la valeur de la marge
	var x = marge2;

// Définition du nombre d'images, et de la largeur de la dernière (l'image mesure 187px)
	var i = 0;	
	while (x > 0)
	{
	
	// S'il reste moins de 187px, la largeur de la dernière image vaut le reste
		if (x <= 187)
		{
			largeurBG[i] = x;
			x = 0;
		}
	
	// S'il reste plus de 187px, l'image n'est pas compressée
		else
		{
			largeurBG[i] = 187;
			x = x-187;
		}
		i++;
	}

// S'il y a plus d'une image on inverse le premier et le dernier élément
	if (largeurBG.length > 1)
	{
		largeurBG[0] = largeurBG[(largeurBG.length)-1];
		largeurBG[(largeurBG.length)-1] = 187;
	}

// Ajout des branches sur la marge de gauche, telles qu'elles ont été définies
	for (var j=0; j<largeurBG.length; j++)
	{
		
	// Ajout de l'image sur le DOM
		ajouterImage(adresseImageBranche, null, 'ambi_brg'+nbBrancheG, 'global', '');
	
	// Identification de l'élément ajouté
		var brg = document.getElementById('ambi_brg'+nbBrancheG);
	
	// La position du premier élément est la négation de la marge
		if (j == 0) var gau = 0-margeG;
	
	// Les éléments suivants se placent à gauche du premier
		else var gau = (0-margeG) + largeurBG[0] + ( (j-1)*187);

	// Les propriétés sont affectés à l'élément ajouté
		brg.style.left = gau+'px';
		brg.style.position = 'absolute';
		brg.style.top = (hp-1)+'px';
		brg.style.width = largeurBG[j]+'px';
		brg.style.display = 'block';
		brg.style.height = '16px';
		
		nbBrancheG++;
	}

// Ajout des branches sur la marge de droite, tant qu'il reste de la place
	while (marge > 0)
	{

	// Ajout de l'image sur le DOM
		ajouterImage(adresseImageBranche, null, 'ambi_brd'+nbBrancheD, 'global', '');
	
	// Identification de l'élément ajouté
		var brd = document.getElementById('ambi_brd'+nbBrancheD);
	
	// Positionnement de l'élément
		var dec = 187*nbBrancheD;
		var gau = 767+dec;

	// Les propriétés sont affectés à l'élément ajouté
		brd.style.left = gau+'px';
		brd.style.position = 'absolute';
		brd.style.top = hp+'px';
		brd.style.zIndex = '5000';
		
		if (marge >= 187)
			brd.style.width = '187px';
		else
		{
			brd.style.display = 'block';
			brd.style.width = marge+'px';
			brd.style.height = '16px';
		}
		
		nbBrancheD++;
		marge = marge - 187;
	}

}


/**
 * Retourne les dimensions de la fenêtre
 * 
 * La taille de la fenêtre est retourné sous la forme d'un tableau numérique dont les
 * indices contiennent les éléments suivants :
 *   - 0 : la largeur
 *   - 1 : la hauteur
 * 
 * @param none
 * @return array tableau numérique contenant la largeur et la hauteur de la fenêtre
 */
/*-----------------------------------------------------------------------------------------*/
function dimFenetre()
{
	
// Largeur de la fenêtre
	if (window.innerWidth == 0 || window.innerWidth == undefined)
		var largeur = document.documentElement.clientWidth;
	else var largeur = window.innerWidth;

// Hauteur de la fenêtre
	if (window.innerHeight == 0 || window.innerHeight == undefined)
		var hauteur = document.documentElement.clientHeight;
	else var hauteur = window.innerHeight;

// Tableau des résultats
	var resultat = new Array(2);
	resultat[0] = largeur;
	resultat[1] = hauteur;

// La fonction retourne un tableau numérique
	return resultat;
	
}


/**
 * Retourne la hauteur en pixels à laquelle se trouve le pied de page
 * 
 * @param node noeud 
 * @return int hauteur en pixels à laquelle se trouve le pied de page
 */
/*-----------------------------------------------------------------------------------------*/
function hauteurElement(noeud)
{

// Si le noeud n'est pas reconnu, la fonction retourne le chiffre 0
	if (noeud == undefined) return 0;

// Retourne la hauteur des noeuds par rapport à leurs parents, jusqu'au parent global
	return noeud.offsetTop + hauteurElement(noeud.offsetParent);
	
}
