//------------------------------------------------------------------------------------------------------------------------------
// Script additionnel au t_menu_layer / gmenu_layer(untested) afin d'avoir un foldout_tmenu_layer
//------------------------------------------------------------------------------------------------------------------------------
// @author	Metaphore Multimedia <typo3@metaphore.fr>, Christophe MONARD <cmonard@metaphore.fr>
//------------------------------------------------------------------------------------------------------------------------------
// function deplace_menu() : initialisation du script
// @param : id de la div contenant le menu complet (div parent)
// @param : id de la div de chaque element menu inactif
// @param : id de la div de l'element actif
// @param : id de la div recevant le foldout (div remplacé par déplacement dom)
//------------------------------------------------------------------------------------------------------------------------------
// la class menu_active doit contenir le minimum necessaire a l'affichage soit : 
// .menu_active {
// 	position: relative !important;
// 	visibility: visible !important;
// }
// class spécifique à l'exemple
// #menu_g_dup { display: none; }
// .menu_active dd { position: relative !important; }
//------------------------------------------------------------------------------------------------------------------------------
// exemple de TS :
// **************
// # inclusion du script de duplication du menu
// page.includeJS.file1 = fileadmin/deplace_menu.js
// # Changement du body afin d'y inclure la fonction de duplication de menu à onload
// page.bodyTagAdd = onload="deplace_menu('menu_g', 'menu_g_elem', 'act', 'menu_g_dup');"
//
// # config du menu
// wrap = <div id="menu_g">|</div>
// NO.allWrap = <div id="menu_g_elem">|</div><div id="menu_g_sep"><img src="fileadmin/images/T.gif" width="236" height="12" alt="" /></div>
// ACT.allWrap = <div id="menu_g_elem_act">|</div><div id="menu_g_dup"><img src="fileadmin/images/T.gif" width="236" height="12" alt="" /></div><div id="menu_g_sep"><img src="fileadmin/images/T.gif" width="236" height="12" alt="" /></div>
// ACT.stdWrap.wrap = <div id="act">|</div>
//---------------------------------------------------------------------

// tableau des elements non actif
var inactArray = Array();

// fonction initialisant le menu et le déplacant
function deplace_menu(idParent, idInact, idAct, idReplace){
	// on récupère la liste des elements inactif
	recup_inact(idParent, inactArray, idInact);
	//si la div a déplacer existe
	if (document.getElementById(idAct)) {
		// on récupère l'id de la div a déplacé a partir du a href onmouseover
		var lien = document.getElementById(idAct).parentNode;
		var att = lien.attributes.onmouseover.value;
		// on sépare les element du onmouseover afin de récupérer l'id de la div
		if (att.substr(0, 10) != 'GL_hideAll') {
			//on récup le nom de la div
			att = att.split(",");
			att = att[1].split("'");
			//on empèche le lien de déplacer la div une fois de plus
			var item = att[1].substring(4, (att[1].length-1));
			lien.onmouseover = function () { menu_doTop(item, att[1],1); };
			// on récupère la div en question et on change la class pour l'afficher
			var div = document.getElementById(att[1]);
			div.className = 'menu_active';
			// on récupère les div sur lesquel on doit travailler
			var menu_g_dup = document.getElementById(idReplace);
			var menu_g = document.getElementById(idParent);
			// on déplace la div
			menu_g.replaceChild(div, menu_g_dup);
			// on remet en place les valeur de positionnement pour pas avoir de bug
			div.style.left = '';
			div.style.top = '';
			// on change les fonction des onmouseover et onmouseout de la div pour eviter que les autre menu reste affiché
			div.onmouseover = function () { menu_doTop(item, att[1]); };
			div.onmouseout = function () { GL_stopMove(item); };
		}
	}
}

// fonction de récupération des elements non actif
function recup_inact(node, inactArray, inactElem) {
	// on récupère les item inactif afin de les caché par la suite
	node = document.getElementById(node);
    var childrenNumber = node.childNodes.length;
    for (var i = 0; i < childrenNumber; i++) {
		// on récup l'élément en train d'etre parcouru
		var element = node.childNodes[i];
		// si l'élément est inactif on récupère son item associé
		var id = element.getAttribute('id');
		if (id == inactElem) {
			// on récupère la valeur du <a> comme dans la fonction deplace_menu
			var lien = element.lastChild.firstChild.attributes.onmouseover.value;
			if (lien.substr(0, 10) != 'GL_hideAll') {
				// si le lien doit afficher un sousmenu on récupère l'id de l'élément a afficher
				lien = lien.split(",");
				lien = lien[1].split("'");
				inactArray[inactArray.length] = lien[1];
			}
		}
    }
}

// récplique de la fonction GL_doTop() modifié
function menu_doTop(WMid,id,test) {
	if (test == 1) GL_hideAll(WMid);
	else menu_hideCode();

	if (GL_isObjCss(id))	{
		GLV_menuOn[WMid] = GL_getObjCss(id);
		GLV_menuOn[WMid].visibility = "visible";

		var parentObject = GL_getObj(GLV_menuXY[WMid][id][2]);
		var TI_width = parentObject.width;
		var TI_height = parentObject.height;
		var anchorObj = GL_getObj(GLV_menuXY[WMid][id][3]);
		var TI_x = anchorObj.x;
		var TI_y = anchorObj.y;

		var layerObj = GL_getObj(id);
		GLV_curLayerHeight[WMid] = layerObj.height;
		GLV_curLayerWidth[WMid] = layerObj.width;
		GLV_curLayerX[WMid] = layerObj.x;
		GLV_curLayerY[WMid]  = layerObj.y;
		GLV_currentLayer[WMid] = id;
		GLV_hasBeenOver[WMid]=0;
	}
}

// réplique de la fonction GL_hideCode() modifié
function menu_hideCode() {
	// on cache chaque element qui ne doit pas etre affiché
	for (var x = 0;  x < inactArray.length; x++) {
		eval('GL_getObjCss("'+inactArray[x]+'").visibility = "hidden";');
	}
}