// Onglets.js
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
// Historique de mise à jour
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
// 2007-01-28 : Vincent
//				Création du script





function Onglets() {
	var aDivs = document.getElementsByTagName("div");
	for ( var cDivs = 0; cDivs < aDivs.length; cDivs++ ) {
		var eDiv = aDivs[cDivs];
		if (eDiv.className.indexOf("tabs-groupe") != -1) {
			new Onglets_Object(eDiv);
		}
	}
	
	var eTitle;
	for (var cCompt = 1; cCompt < 6; cCompt++) {
		eTitle = document.getElementById("Accordion" + cCompt + "Title");
		
		if (eTitle) {
			eTitle.className = "context-utility";	
		}
	}
	
}





function Onglets_Object( eOnglets ) {
	// Propriétés de l'objet
	this.elementContenus = "div";
	this.ongletActif     = null;
	this.contenusActifs  = new Array();
	this.navigation      = null;
	this.contenu         = null;
	this.classeActive    = "actif";
	this.currentFader; 
	
	// Méthodes
	this.afficher          = Onglets_Afficher;
	this.retournerContenus = Onglets_RetournerContenus;
	
	
	// Redéfini l'élément de contenu à afficher si définit
	if ( eOnglets.className.split(" ")[1] )
		this.elementContenus = eOnglets.className.split(" ")[1];
	
	
	// Tente d'aller chercher les éléments de navigation et du contenu du groupe d'onglet au premier niveau des childNodes
	for ( var cNodes = 0; cNodes < eOnglets.childNodes.length; cNodes++ ) {
		var node = eOnglets.childNodes[cNodes] ;
		if ( node.nodeType == 1 ) {
			// On semble avoir touvé la navigation 
			if ( node.className.indexOf("tabs-navigation") != -1 )
				this.navigation = node;
				
			// On semble avoir touvé le contenu
			if ( node.className.indexOf("tabs-contenu") != -1 )
				this.contenu = node;
		}
	}
	
	
	// Vérifie si l'on a la navigation et le contenu, sinon on arrête le programme
	if ( this.navigation && this.contenu ) {
		// Ajoute les méthodes d'affichage au ancres de la navigation
		var aAncres = this.navigation.getElementsByTagName("a");
		for ( var cAncres = 0; cAncres < aAncres.length; cAncres++ ) {
			var boutonOnglet = aAncres[cAncres];
			boutonOnglet.refObject = this;
			boutonOnglet.contenus  = this.retournerContenus(boutonOnglet);
			boutonOnglet.onclick   = function () { this.refObject.afficher(this); return false; };
			
			var hashString = window.location.hash;
			while ( hashString.indexOf("#") == 0 )
				hashString = hashString.substring(1);
			
			if ( hashString ) {
				if ( boutonOnglet.className == hashString )
					boutonOnglet.onclick();
			}
		}
		
		// Active le premier bouton du groupe
		if ( !this.ongletActif )
			aAncres[0].onclick();
	}
}





// Retourne un tableau des éléments de contenus associés à un onglet
function Onglets_RetournerContenus( bouton ) {
	var aNomContenus  = bouton.className.split(" ");
	var aElements     = this.contenu.getElementsByTagName(this.elementContenus);
	var aContenusLies = new Array();
	
	for ( var cNomContenus = 0; cNomContenus < aNomContenus.length; cNomContenus++ ) {
		var nomContenu = aNomContenus[cNomContenus];
		for ( var cElements = 0; cElements < aElements.length; cElements++ ) {
			var eElement = aElements[cElements];
			if ( eElement.className.indexOf(nomContenu) != -1 ) {
				aContenusLies.push(eElement);
				eElement.style.display  = "none";
				eElement.style.opacity  = "0";
				eElement.style.filter   = "alpha(opacity=0)";
			}
		}
	}
	
	return aContenusLies;
}





// Affiche l'onglet et le contenu demandé
function Onglets_Afficher( bouton ) {
	
	// Désactive l'onglet courant ainsi que son contenu
	if ( this.ongletActif && this.ongletActif != bouton ) {
		if ( this.currentFader )
			this.currentFader.stopFade();
		
		this.ongletActif.className = this.ongletActif.className.replace(this.classeActive + " ", "");
		
		for ( var cContenus = 0; cContenus < this.contenusActifs.length; cContenus++ ) {
			this.contenusActifs[cContenus].style.zIndex = "1";
			this.contenusActifs[cContenus].style.display = "none";
			this.contenusActifs[cContenus].style.opacity = "0";
			this.contenusActifs[cContenus].style.filter = "alpha(opacity=0)";
		}
	}
	
	if ( this.ongletActif != bouton ) {
		// Active l'onglet courant ainsi que son contenu
		this.ongletActif = bouton;
		//window.location.hash = this.ongletActif.className;
		this.ongletActif.className = this.classeActive + " " + this.ongletActif.className;
		this.contenusActifs = this.ongletActif.contenus;
		
		// Affiche les contenus de l'onglet
		for ( var cContenus = 0; cContenus < this.ongletActif.contenus.length; cContenus++ ) {
			this.ongletActif.contenus[cContenus].style.zIndex = "2";
			
			this.currentFader = new Fader(this.ongletActif.contenus[cContenus], { speed: 50 });
			this.currentFader.fadeIn();
			this.ongletActif.contenus[cContenus].style.display = "block";
		}
	}
}





// Attache l'événement au chargement de la page
if ( window.addEventListener )
	window.addEventListener("load", Onglets, false);
else if ( window.attachEvent )
	window.attachEvent("onload", Onglets);
