/*
 * $Id$
 */

var ana3_timer;
var ana3_bloc_centre_hauteur = 0;

function ana3_SurChargementPage()
{
	ana3_traiterTitres();
	ana3_ajusterColonnes();
	var bloc_centre = document.getElementById("bloc_centre");
	ana3_bloc_centre_hauteur = ana3_getScrollHeight(bloc_centre);
	ana3_timer = window.setInterval("ana3_SurAjusterBlocGaucheCentre()", 1000);
}

function ana3_SurChargementPageExtranet()
{
	ana3_traiterTitres();
}

/* Découper les H2 sans classe avec un <span> par lettre */
function ana3_traiterTitres()
{
	var titres = document.getElementsByTagName("H2");
	for (var i=0; i<titres.length; i++)
	{
		try
		{
			// H2 sans classe ?
			if ((""+titres[i].className)=="")
			{
				var textes = new Array();
				
				// NB: avec FF, le html doit être bien collé car il compte les blancs !
				// OK: <h2><img /><span>xxxxxxx</span><h2>
				// KO: <h2> <img /> <span>xxxxxxx</span><h2> ou
				// <h2>
				//  <img />
				//  <span>xxxxxxx</span>
				// <h2>
				if (titres[i].childNodes.length>=2 && 
					titres[i].childNodes[0].nodeName=="IMG" && 
					titres[i].childNodes[1].nodeName=="SPAN"
				)
				{
					// récupérer l'URL de l'image
					var image = titres[i].childNodes[0].src;
					// supprimer le noeud correspondant
					titres[i].removeChild(titres[i].childNodes[0]);
					// récupérer les textes (s'il y a des br)
					while (titres[i].childNodes[0].childNodes.length>0)
					{
						if (titres[i].childNodes[0].childNodes[0].nodeName=="BR")
						{
							textes[textes.length] = "\r\n";
						}
						else if (titres[i].childNodes[0].childNodes[0].nodeName=="#text")
						{
							/*var texte = "" + (document.all 
								? titres[i].childNodes[0].childNodes[0].innerText // IE
								: titres[i].childNodes[0].childNodes[0].textContent // FF
							);*/
							textes[textes.length] = titres[i].childNodes[0].childNodes[0].nodeValue;
						}
						// supprimer le noeud correspondant
						try
						{
							titres[i].childNodes[0].removeChild(titres[i].childNodes[0].childNodes[0]);
						}
						catch (ex)
						{
							alert(ex + ", " + ex.number + ", " + ex.description);
							break;
						}
					}
					// supprimer le noeud correspondant
					titres[i].removeChild(titres[i].childNodes[0]);
					// mettre l'image comme fond
					titres[i].style.backgroundImage = "url(" + image + ")";
				}
				else
				{
					// récupérer les textes (s'il y a des br)
					while (titres[i].childNodes.length>0)
					{
						if (titres[i].childNodes[0].nodeName=="BR")
						{
							textes[textes.length] = "\r\n";
						}
						else if (titres[i].childNodes[0].nodeName=="#text")
						{
							/*var texte = "" + (document.all 
								? titres[i].childNodes[0].innerText // IE
								: titres[i].childNodes[0].textContent // FF
							);*/
							textes[textes.length] = titres[i].childNodes[0].nodeValue;
						}
						// supprimer le noeud correspondant
						titres[i].removeChild(titres[i].childNodes[0]);
					}
				}
				for (var j = 0; j<textes.length; j++)
				{
					if (textes[j]=="\r\n")
					{
						var div0 = document.createElement("DIV");
						div0.style.cssFloat = "none"; // FF
						div0.style.styleFloat = "none"; // IE
						div0.className = "retour";
						titres[i].appendChild(div0);
					}
					else if (textes[j]!="")
					{
						//alert(j + ": '" + textes[j] + "'");
						// créer un <span> pour chaque caractère du texte
						for (var k=0; k<textes[j].length; k++)
						{
							var caractere = textes[j].substr(k, 1);
							var lettre;
							if (caractere==" ")
							{
								lettre = document.createTextNode("\u00a0\u00a0"); // 2 espaces insécables
							}
							else
							{
								lettre = document.createTextNode(caractere);
							}
							var span = document.createElement("SPAN");
							span.appendChild(lettre);
							titres[i].appendChild(span);
						}
					}
				}
				// ajouter une div en clear: both à la fin du H2 vu que les spans sont en float: left
				var div1 = document.createElement("DIV");
				div1.className = "retour";
				titres[i].appendChild(div1);
				// ajouter une div en clear: both après le H2 vu qu'il va être en float: left;
				var div2 = document.createElement("DIV");
				div2.className = "retour";
				titres[i].parentNode.insertBefore(div2, titres[i].nextSibling);
				titres[i].style.cssFloat = "left"; // FF
				titres[i].style.styleFloat = "left"; // IE
			}
		}
		catch (ex)
		{
			if (ana3_debug)
				alert(ex + ", " + ex.number + ", " + ex.description);
		}
	}
}

/* Ajuster les colonnes au chargement de la page */
function ana3_ajusterColonnes()
{
    //return;
    
    // récupérer les blocs à traiter
    var bloc_gauchecentre         = document.getElementById("bloc_gauchecentre"        );
    var bloc_gauchecentre_tete    = document.getElementById("bloc_gauchecentre_tete"   );
    var bloc_gauchecentre_corps   = document.getElementById("bloc_gauchecentre_corps"  );
    var bloc_gauchecentre_pied    = document.getElementById("bloc_gauchecentre_pied"   );
    var bloc_gauche               = document.getElementById("bloc_gauche"              );
    var bloc_centre               = document.getElementById("bloc_centre"              );
    var bloc_droite               = document.getElementById("bloc_droite"              );
    var bloc_alerte               = document.getElementById("bloc_alerte"              );
    var bloc_droite_teaser1       = document.getElementById("bloc_droite_teaser1"      );
    var bloc_droite_teaser1_tete  = document.getElementById("bloc_droite_teaser1_tete" );
    var bloc_droite_teaser1_fond  = document.getElementById("bloc_droite_teaser1_fond" );
    var bloc_droite_teaser1_corps = document.getElementById("bloc_droite_teaser1_corps");
    var bloc_droite_teaser1_pied  = document.getElementById("bloc_droite_teaser1_pied" );
    var bloc_droite_teaser2       = document.getElementById("bloc_droite_teaser2"      );
    var bloc_droite_teaser2_tete  = document.getElementById("bloc_droite_teaser2_tete" );
    var bloc_droite_teaser2_fond  = document.getElementById("bloc_droite_teaser2_fond" );
    var bloc_droite_teaser2_corps = document.getElementById("bloc_droite_teaser2_corps");
    var bloc_droite_teaser2_pied  = document.getElementById("bloc_droite_teaser2_pied" );

	// cacher les blocs vides
	if (bloc_droite_teaser1 && bloc_droite_teaser1_corps)
	{
		if ((!bloc_droite_teaser1_corps.hasChildNodes) ||
			(bloc_droite_teaser1_corps.hasChildNodes && bloc_droite_teaser1_corps.childNodes.length==0)
		)
		{
			bloc_droite_teaser1.style.display = "none";
		}
	}
	if (bloc_droite_teaser2 && bloc_droite_teaser2_corps)
	{
		if ((!bloc_droite_teaser2_corps.hasChildNodes) ||
			(bloc_droite_teaser2_corps.hasChildNodes && bloc_droite_teaser2_corps.childNodes.length==0)
		)
		{
			bloc_droite_teaser2.style.display = "none";
		}
	}

	// "normaliser" les hauteurs dans les styles
    ana3_setStyleHeight(bloc_gauchecentre        , ana3_getScrollHeight(bloc_gauchecentre        ));
    ana3_setStyleHeight(bloc_gauchecentre_tete   , ana3_getScrollHeight(bloc_gauchecentre_tete   ));
    ana3_setStyleHeight(bloc_gauchecentre_corps  , ana3_getScrollHeight(bloc_gauchecentre_corps  ));
    ana3_setStyleHeight(bloc_gauchecentre_pied   , ana3_getScrollHeight(bloc_gauchecentre_pied   ));
    ana3_setStyleHeight(bloc_gauche              , ana3_getScrollHeight(bloc_gauche              ));
    ana3_setStyleHeight(bloc_centre              , ana3_getScrollHeight(bloc_centre              ));
    ana3_setStyleHeight(bloc_droite              , ana3_getScrollHeight(bloc_droite              ));
    ana3_setStyleHeight(bloc_alerte              , ana3_getScrollHeight(bloc_alerte              ));
    ana3_setStyleHeight(bloc_droite_teaser1      , ana3_getScrollHeight(bloc_droite_teaser1      ));
    ana3_setStyleHeight(bloc_droite_teaser1_tete , ana3_getScrollHeight(bloc_droite_teaser1_tete ));
    ana3_setStyleHeight(bloc_droite_teaser1_fond , ana3_getScrollHeight(bloc_droite_teaser1_fond ));
	ana3_setStyleHeight(bloc_droite_teaser1_corps, ana3_getScrollHeight(bloc_droite_teaser1_corps));
    ana3_setStyleHeight(bloc_droite_teaser1_pied , ana3_getScrollHeight(bloc_droite_teaser1_pied ));
    ana3_setStyleHeight(bloc_droite_teaser2      , ana3_getScrollHeight(bloc_droite_teaser2      ));
    ana3_setStyleHeight(bloc_droite_teaser2_tete , ana3_getScrollHeight(bloc_droite_teaser2_tete ));
    ana3_setStyleHeight(bloc_droite_teaser2_fond , ana3_getScrollHeight(bloc_droite_teaser2_fond ));
    ana3_setStyleHeight(bloc_droite_teaser2_corps, ana3_getScrollHeight(bloc_droite_teaser2_corps));
    ana3_setStyleHeight(bloc_droite_teaser2_pied , ana3_getScrollHeight(bloc_droite_teaser2_pied ));

	// ajuster les colonnes gauche / centre / droite

	// calculer la hauteur totale
	var hauteur_totale = ana3_getStyleHeight(bloc_gauchecentre);
	var hauteur_droite = ana3_getStyleHeight(bloc_droite);
	//alert("gc=" + hauteur_totale + ", d=" + hauteur_droite);
	if (hauteur_droite>hauteur_totale)
		hauteur_totale = hauteur_droite;
	//alert("t=" + hauteur_totale);

    // ajuster la colonne de gauchecentre
    ana3_setStyleHeight(bloc_gauchecentre, hauteur_totale);
    // ajuster le corps du bloc_gauchecentre par rapport à son contenant
    ana3_setStyleHeight(
        bloc_gauchecentre_corps, 
        ana3_getStyleHeight(bloc_gauchecentre) - 
        ana3_getStyleHeight(bloc_gauchecentre_tete) - 
        ana3_getStyleHeight(bloc_gauchecentre_pied)
    );

	// ajuster la colonne de gauche
	ana3_setStyleHeight(bloc_gauche, ana3_getStyleHeight(bloc_gauchecentre_corps));

	// ajuster la colonne du centre
	ana3_setStyleHeight(bloc_centre, ana3_getStyleHeight(bloc_gauchecentre_corps));

    // ajuster la colonne de droite
    ana3_setStyleHeight(bloc_droite, hauteur_totale);

    // teaser2 présent ?
    if (!bloc_droite_teaser2 || bloc_droite_teaser2.style.display=="none")
    {
		if (bloc_droite_teaser1)
		{
			// ajuster le fond du bloc_droite_teaser1
			var h = ana3_getStyleHeight(bloc_droite) 
					- ana3_getStyleHeight(bloc_alerte) 
					- ana3_getStyleHeight(bloc_droite_teaser1_tete) 
					- ana3_getStyleHeight(bloc_droite_teaser1_pied)
			;
			ana3_setStyleHeight(bloc_droite_teaser1_fond, h);
			// et le corps de la même hauteur
			ana3_setStyleHeight(bloc_droite_teaser1_corps, h);
			// le contenant en automatique au cas où...
			ana3_setStyleHeight(bloc_droite_teaser1, "auto");
        }
    }
    else if (bloc_droite_teaser2)
    {
        // ajuster le fond du bloc_droite_teaser2
        var h = ana3_getStyleHeight(bloc_droite) 
                - ana3_getStyleHeight(bloc_alerte) 
                - ana3_getStyleHeight(bloc_droite_teaser1) 
                - ana3_getStyleHeight(bloc_droite_teaser2_tete) 
                - ana3_getStyleHeight(bloc_droite_teaser2_pied)
        ana3_setStyleHeight(bloc_droite_teaser2_fond, h);
        // et le corps de la même hauteur
        ana3_setStyleHeight(bloc_droite_teaser2_corps, h);
        // le contenant en automatique au cas où...
        ana3_setStyleHeight(bloc_droite_teaser2, "auto");
    }
}

/* Ajuster le bloc centregauche / centre en cas de modification de la hauteur */
function ana3_SurAjusterBlocGaucheCentre()
{
	var bloc_centre = document.getElementById("bloc_centre");
	var bloc_centre_hauteur2 = ana3_getScrollHeight(bloc_centre);
	if (ana3_bloc_centre_hauteur!=bloc_centre_hauteur2)
	{
		ana3_bloc_centre_hauteur = bloc_centre_hauteur2;
		var bloc_gauchecentre  = document.getElementById("bloc_gauchecentre");
		var bloc_gauchecentre_tete  = document.getElementById("bloc_gauchecentre_tete");
		var bloc_gauchecentre_corps = document.getElementById("bloc_gauchecentre_corps");
		var bloc_gauchecentre_pied  = document.getElementById("bloc_gauchecentre_pied");
		ana3_setStyleHeight(bloc_gauchecentre, bloc_centre_hauteur2 + ana3_getStyleHeight(bloc_gauchecentre_tete) + ana3_getStyleHeight(bloc_gauchecentre_pied));
		ana3_setStyleHeight(bloc_gauchecentre_corps, bloc_centre_hauteur2);
		ana3_setStyleHeight(bloc_centre, bloc_centre_hauteur2);
	}
}

/* lire la hauteur d'un élément (client), renvoie 0 si non défini */
function ana3_getClientHeight(element)
{
	var height = 0;
	if (element && element.clientHeight)
	{
		height = element.clientHeight;
	}
	return height;
}

/* lire la hauteur d'un élément (scroll), renvoie 0 si non défini */
function ana3_getScrollHeight(element)
{
	var height = 0;
	if (element && element.scrollHeight)
	{
		height = element.scrollHeight;
	}
	return height;
}

/* lire la hauteur d'un élément (style), renvoie 0 si non défini */
function ana3_getStyleHeight(element)
{
	var height = 0;
	if (element && element.style)
	{
		height = parseInt(element.style.height);
	}
	return height;
}

/* fixer la hauteur d'un élément (style) s'il est défini */
function ana3_setStyleHeight(element, height)
{
	if (element && element.style)
	{
		height = height + (height=="auto" ? "" : "px");
		element.style.height = height;
	}
}

/* EOF */

