/**** ARBRE DE TOUT TYPE ****
création : v1.3 CEO 16/05/2005
param : 
	oNode  = élément (<a> ou autre) qui appelle la fonction
	sDivId = id de l'élément (<div>, <tr> ou autre) à rendre visible / invisible
	sClassOn = className de sDivId pour état ON (ie visible)
	sClassOff = className de sDivId pour état OFF (ie invisible)
objet : permute la classe de l'élément sDivId et change la source de l'élément IMG qui suit oNode.
*/
function permute(oNode, sDivId, sClassOn, sClassOff) {
	var oDiv = document.getElementById(sDivId);
	var oItem = null;
	
	if (oDiv != null) {
		if (oDiv.className == sClassOff) {
			// Change l'image s'il y en a une
			if (oNode.childNodes.length > 0) {
				oItem = oNode.childNodes.item(0);
				if (oItem.nodeName == "IMG") {
					oItem.src = getImgDirectory(oItem.src) + "minus.gif";
				}
			}
			oDiv.className = sClassOn;
		}
		else {
			if (oNode.childNodes.length > 0) {
				if (oNode.childNodes.item(0).nodeName == "IMG") {
	  				oNode.childNodes.item(0).src = getImgDirectory(oNode.childNodes.item(0).src) + "plus.gif";
				}
			}
			oDiv.className = sClassOff;
		}
	}
}

/**** ARBRE DE TOUT TYPE ****
création : v1.3 CEO 15/05/2005
param : 
	oNode  = élément (<a> ou autre) qui appelle la fonction
	sDivId = id de l'élément (<div>, <tr> ou autre) à rendre visible / invisible
	sClassOn = className de sDivId pour état ON (ie visible)
	sClassOff = className de sDivId pour état OFF (ie invisible)
objet : ouvre le noeud
          permute la classe de l'élément sDivId et change la source de l'élément IMG qui suit oNode.
*/
function deroule(oNode, sDivId, sClassOn, sClassOff) {
	var oDiv = document.getElementById(sDivId);
	var oItem = null;
	
	if (oDiv != null) {
		if (oDiv.className == sClassOff) {
			// Change l'image s'il y en a une
			if (oNode.childNodes.length > 0) {
				oItem = oNode.childNodes.item(0);
				if (oItem.nodeName == "IMG") {
					oItem.src = getImgDirectory(oItem.src) + "minus.gif";
				}
			}
			oDiv.className = sClassOn;
		}
	}
}

/**** ARBRE DE TOUT TYPE ****
création : v1.3 CEO 15/05/2005
param : 
	oNode  = élément (<a> ou autre) qui appelle la fonction
	sDivId = id de l'élément (<div>, <tr> ou autre) à rendre visible / invisible
	sClassOn = className de sDivId pour état ON (ie visible)
	sClassOff = className de sDivId pour état OFF (ie invisible)
objet : ouvre le noeud
          permute la classe de l'élément sDivId et change la source de l'élément IMG qui suit oNode.
*/
function enroule(oNode, sDivId, sClassOn, sClassOff) {
	var oDiv = document.getElementById(sDivId);
	var oItem = null;
	
	if (oDiv != null) {
		if (oDiv.className == sClassOn) {
			if (oNode.childNodes.length > 0) {
				if (oNode.childNodes.item(0).nodeName == "IMG") {
	  				oNode.childNodes.item(0).src = getImgDirectory(oNode.childNodes.item(0).src) + "plus.gif";
				}
			}
			oDiv.className = sClassOff;
		}
	}
}


/**** ARBRE DE TOUT TYPE ****
création : v1.3 CEO 16/05/2005
objet : déroule tout un arbre ou toute une table
param : 
	sRootId = id de l'élément dans lequel on cherche les balises <a> de class "folder" et pour lesquelles on exécute permuteClass pour dérouler
	sDivPrefix = prefixe (ex : "D") à ajouter au radical de l'id de la balise <a> pour trouver l'élt à permuter.
	sClassOn = className pour état ON (ie visible)
	sClassOff = className pour état OFF (ie invisible)
*/
function deroulerTout(sRootId, sDivPrefix, sClassOn, sClassOff) {
	waitPopup(true);
	setTimeout("deroulerToutWAIT('" + sRootId + "', '" + sDivPrefix + "', '" + sClassOn + "', '" + sClassOff + "')", 1);
}

function deroulerToutWAIT(sRootId, sDivPrefix, sClassOn, sClassOff) {
	var oAnchor  = null;
	var aAnchors = null;
	var nAnchors = 0;
	var sDivId = "";
	var oRoot = null;
	var oDiv = null;
	
	oRoot = document.getElementById(sRootId);
	if (oRoot != null) {
		aAnchors = oRoot.getElementsByTagName("a");
		nAnchors = aAnchors.length;
		for (var i = 0 ; i < nAnchors ; i++) {
			oAnchor = aAnchors[i];
			if (oAnchor.className == "folder") {
				sDivId = sDivPrefix + oAnchor.id.substring(1);
				oDiv = document.getElementById(sDivId);
				if (oDiv != null) {
					if (oDiv.className == sClassOff) {
						permute(oAnchor, sDivId, sClassOn, sClassOff);
					}
				}
			}
		}
	}
	waitPopup(false);
}


/**** ARBRE DE TOUT TYPE ****
création : v1.3 CEO 16/05/2005
objet : enroule tout un arbre ou toute une table
param : 
	sRootId = id de l'élément dans lequel on cherche les balises <a> de class "folder" et pour lesquelles on exécute permuteClass pour enrouler
	sDivPrefix = prefixe (ex : "D") à ajouter au radical de l'id de la balise <a> pour trouver l'élt à permuter.
	sClassOn = className pour état ON (ie visible)
	sClassOff = className pour état OFF (ie invisible)
*/
function enroulerTout(sRootId, sDivPrefix, sClassOn, sClassOff) {
	waitPopup(true);
	setTimeout("enroulerToutWAIT('" + sRootId + "', '" + sDivPrefix + "', '" + sClassOn + "', '" + sClassOff + "')", 1);
}

function enroulerToutWAIT(sRootId, sDivPrefix, sClassOn, sClassOff) {
	var oAnchor  = null;
	var aAnchors = null;
	var nAnchors = 0;
	var sDivId = "";
	var oRoot = null;
	var oDiv = null;

	oRoot = document.getElementById(sRootId);
	if (oRoot != null) {
		aAnchors = oRoot.getElementsByTagName("a");
		nAnchors = aAnchors.length;
		for (var i = 0 ; i < nAnchors ; i++) {
			oAnchor = aAnchors[i];
			if (oAnchor.className == "folder") {
				sDivId = sDivPrefix + oAnchor.id.substring(1);
				oDiv = document.getElementById(sDivId);
				if (oDiv != null) {
					if (oDiv.className == sClassOn) {
						permute(oAnchor, sDivId, sClassOn, sClassOff);
					}
				}
			}
		}
	}
	waitPopup(false);
}


/**** ARBRE DE TYPE DIV ****
création : v1.3 CEO 16/05/2005
param : node = élément (<a> ou autre) qui appelle la fonction
objet : permute la visisibilité de la DIV qui suit node et change la source de l'élément IMG qui suit node.
*/
function permuteDIV(node) {
	var nextDIV = node.nextSibling;
	while(nextDIV.nodeName != "DIV") {
		nextDIV = nextDIV.nextSibling;
	}
	if (nextDIV.style.display == 'none') {
		if (node.childNodes.length > 0) {
			if (node.childNodes.item(0).nodeName == "IMG") {
				node.childNodes.item(0).src = getImgDirectory(node.childNodes.item(0).src) + "minus.gif";
			}
		}
		nextDIV.style.display = 'block';
	}
	else {
		if (node.childNodes.length > 0) {
			if (node.childNodes.item(0).nodeName == "IMG") {

  				node.childNodes.item(0).src = getImgDirectory(node.childNodes.item(0).src) + "plus.gif";
			}
		}
		nextDIV.style.display = 'none';
	}
}

/**** ARBRE DE TYPE DIV ****/
function deroulerToutDIV(sOnglet) {
	var oAnchor  = null;
	var aAnchors = document.getElementById(sOnglet).getElementsByTagName("a");
	for (var i = 0 ; i < aAnchors.length ; i++) {
		oAnchor = aAnchors[i];
		if (oAnchor.className == "folder") {
			var nextDIV = oAnchor.nextSibling;
			// find the next DIV
			while(nextDIV.nodeName != "DIV") {
				nextDIV = nextDIV.nextSibling;
			}
			// Unfold the branch if it isn't visible
			if (nextDIV.style.display == 'none') {
				// Change the image (if there is an image)
				if (oAnchor.childNodes.length > 0) {
					if (oAnchor.childNodes.item(0).nodeName == "IMG") {
						oAnchor.childNodes.item(0).src = getImgDirectory(oAnchor.childNodes.item(0).src) + "minus.gif";
					}
				}
				nextDIV.style.display = 'block';
			}
		}
	}
}

/**** ARBRE DE TYPE DIV ****/
function enroulerToutDIV(sOnglet) {
	var oAnchor  = null;	
	var aAnchors = document.getElementById(sOnglet).getElementsByTagName("a");
	for (var i = 0 ; i < aAnchors.length ; i++) {
		oAnchor = aAnchors[i];
		if (oAnchor.className == "folder") {
			var nextDIV = oAnchor.nextSibling;
			// find the next DIV
			while(nextDIV.nodeName != "DIV") {
				nextDIV = nextDIV.nextSibling;
			}
			// Unfold the branch if it isn't visible
			if (nextDIV.style.display == 'block') {
				// Change the image (if there is an image)
				if (oAnchor.childNodes.length > 0) {
					if (oAnchor.childNodes.item(0).nodeName == "IMG") {
		  				oAnchor.childNodes.item(0).src = getImgDirectory(oAnchor.childNodes.item(0).src) + "plus.gif";
					}
				}
				nextDIV.style.display = 'none';
			}
		}
	}
}


function getImgDirectory(source) {
    return source.substring(0, source.lastIndexOf('/') + 1);
}

