/**
 * @version: spécifique : prise en compte de l'onglet sélectionné 
 */
fieldsetManager = {
    // fonction initFieldset : initialise les elements fieldset ayant la classe showHide dans l'element corps
    init : function () {
    	var nUl, nLi, nA, nLegend;
    	var j = 0;
    	var cParentNode = new Array();
    	YAHOO.util.Dom.getElementsBy(function(el) { 
            for(var i = 0, l = cParentNode.length; i < l; i++) { if(cParentNode[i] == el.parentNode) return false;}
        	if(el.className == 'showHide') { 
                cParentNode[cParentNode.length] = el.parentNode;
                el.parentNode.id = "ancestor_"+i;
                YAHOO.util.Dom.addClass(el.parentNode,'ancestor');
        	}
        }, 'fieldset','document');
        
        for(var k=0;k < cParentNode.length; k++) {
        	var cFieldset = YAHOO.util.Dom.getElementsByClassName('showHide', 'fieldset',cParentNode[k]);
            var indexSelected = 0;
        	//if (document.getElementById("onglet"+k) || cFieldset.length < 2) return;
        
        	nUl = document.createElement("ul");
        	nUl.id = "onglet"+k;
        	YAHOO.util.Dom.addClass(nUl,"onglet");
        	cFieldset[0].parentNode.insertBefore(nUl, cFieldset[0]);
            
        	for (var i=0; cFieldset[i]; i++) {
        		oNode = cFieldset[i].parentNode;
        		while (oNode && oNode.nodeName.toLowerCase() != 'fieldset') oNode = oNode.parentNode;
        		if (oNode) continue;
        		cFieldset[i].id = 'fieldset_' + (j++);
        		YAHOO.util.Dom.addClass(cFieldset[i],"hidden");
        		nLegend = cFieldset[i].getElementsByTagName("legend")[0];
        		nLi = document.createElement("li");
        		nLi.className = nLegend.className;
        		nLi.id = 'li_'+cFieldset[i].id;
        		nUl.appendChild(nLi);
        		
        		nSpan = document.createElement("span");    		
        		nSpan.innerHTML = nLegend.innerHTML;
        		nA = document.createElement("a");
                nA.title =  'afficher le contenu de l\'onglet ' + fieldsetManager.getTextContent(nLegend);		
                nA.appendChild(nSpan);
        		nA.href = "#" + cFieldset[i].id ;
        		nA.onclick = fieldsetManager.showFieldset;
        		nLi.appendChild(nA);   
        		nLegend.parentNode.removeChild(nLegend);
        		if(YAHOO.util.Dom.hasClass(cFieldset[i],"selected")){
        			indexSelected = i;
        		}
        	}
        	YAHOO.util.Dom.addClass(cFieldset[indexSelected],"block");
        	YAHOO.util.Dom.removeClass(cFieldset[indexSelected],"hidden");
    		cLi = YAHOO.util.Dom.getAncestorByClassName(cFieldset[indexSelected],'ancestor').getElementsByTagName('li');
            YAHOO.util.Dom.addClass(cLi[indexSelected], 'selected');
    	}
    	

    },
    
    // fonction showFieldset : montre le fieldset associ� au lien sur lequel on a cliqu�
     
    showFieldset : function () {
    	var id = this.href.replace(/.*#/, '');
    	var aFieldset = YAHOO.util.Dom.getAncestorByClassName(this,'ancestor').getElementsByTagName('fieldset');
    
    	for (var i=0; aFieldset[i]; i++) {
    		YAHOO.util.Dom.addClass(aFieldset[i],"hidden");
    		YAHOO.util.Dom.removeClass(aFieldset[i],"block");
    	}
    	YAHOO.util.Dom.removeClass(YAHOO.util.Dom.getAncestorByTagName(this,'ul').getElementsByTagName('li'), 'selected');
    	
    	var li = YAHOO.util.Dom.getAncestorByTagName(this,'li');
        YAHOO.util.Dom.addClass(li, 'selected');
        
    	if (document.getElementById(id).firstChild.nodeName.toLowerCase() == 'legend') {
    		YAHOO.util.Dom.addClass(document.getElementById(id).firstChild,'hidden');
    	}
    	YAHOO.util.Dom.addClass(document.getElementById(id),"block");
    	YAHOO.util.Dom.removeClass(document.getElementById(id),"hidden");

    	return false;
    },
    getTextContent : function (oNode) {

    	if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;}
    	switch (oNode.nodeType) {
    		case 3: // TEXT_NODE
    		case 4: // CDATA_SECTION_NODE
    			return oNode.nodeValue;
    			break;
    		case 7: // PROCESSING_INSTRUCTION_NODE
    		case 8: // COMMENT_NODE
    			if (fieldsetManager.getTextContent.caller!=fieldsetManager.getTextContent) {
    				return oNode.nodeValue;
    			}
    			break;
    		case 9: // DOCUMENT_NODE
    		case 10: // DOCUMENT_TYPE_NODE
    		case 12: // NOTATION_NODE
    			return null;
    			break;
    	}
    	var _textContent="";
    	oNode=oNode.firstChild;
    	while (oNode) {
    		_textContent += fieldsetManager.getTextContent(oNode);
    		oNode = oNode.nextSibling;
    	}
    	return _textContent;
    }
}

YAHOO.util.Event.addListener(window,'load',fieldsetManager.init);

