var menuData = { // construction du menu en notation JSON menuObject : [ { id:'3907', label:"Introductie",url_href:'',children: [ { id:'3913', label:"What's new",url_href:'/editorial/wide/editorial-3913-NL.html',children: [ ]}, { id:'3911', label:"LIFFE CONNECT®",url_href:'/editorial/wide/editorial-3911-NL.html',children: [ ]}, { id:'3910', label:"Enhancements",url_href:'/editorial/wide/editorial-3910-NL.html',children: [ ]}, { id:'3912', label:"Developers",url_href:'/editorial/wide/editorial-3912-NL.html',children: [ ]} ]}, { id:'3903', label:"Producten",url_href:'',children: [ { id:'3922', label:"Introductie",url_href:'/editorial/wide/editorial-3922-NL.html',children: [ ]}, { id:'3921', label:"Amsterdam",url_href:'/editorial/wide/editorial-3921-NL.html',children: [ ]}, { id:'3920', label:"Brussel",url_href:'/editorial/wide/editorial-3920-NL.html',children: [ ]}, { id:'3919', label:"Lissabon",url_href:'/editorial/wide/editorial-3919-NL.html',children: [ ]}, { id:'3917', label:"Londen",url_href:'/editorial/wide/editorial-3917-NL.html',children: [ ]}, { id:'3918', label:"Parijs",url_href:'/editorial/wide/editorial-3918-NL.html',children: [ ]} ]}, { id:'3906', label:"Toegang tot de markt",url_href:'',children: [ { id:'3928', label:"Toegang",url_href:'/editorial/wide/editorial-3928-NL.html',children: [ ]}, { id:'3929', label:"Leased lines",url_href:'/editorial/wide/editorial-3929-NL.html',children: [ ]}, { id:'3932', label:"VAN & ASP",url_href:'/editorial/wide/editorial-3932-NL.html',children: [ ]}, { id:'3931', label:"Internet",url_href:'/editorial/wide/editorial-3931-NL.html',children: [ ]}, { id:'3930', label:"CTCI",url_href:'/editorial/wide/editorial-3930-NL.html',children: [ ]}, { id:'3934', label:"ISV's",url_href:'/editorial/wide/editorial-3934-NL.html',children: [ ]}, { id:'3933', label:"Order routing",url_href:'/editorial/wide/editorial-3933-NL.html',children: [ ]}, { id:'3935', label:"Trading bureaux",url_href:'/editorial/wide/editorial-3935-NL.html',children: [ ]} ]}, { id:'3905', label:"Membership",url_href:'',children: [ { id:'3938', label:"Existing members",url_href:'/editorial/wide/editorial-3938-NL.html',children: [ ]}, { id:'3936', label:"Fast track process",url_href:'/editorial/wide/editorial-3936-NL.html',children: [ ]}, { id:'3937', label:"Toegang dochteronderneming",url_href:'/editorial/wide/editorial-3937-NL.html',children: [ ]}, { id:'3940', label:"Responsible persons",url_href:'/editorial/wide/editorial-3940-NL.html',children: [ ]} ]}, { id:'3901', label:"Contacts",url_href:'/editorial/wide/editorial-3901-NL.html',children: [ ]}, { id:'3908', label:"FAQs",url_href:'/editorial/wide/faq-3908-NL.html',children: [ ]}, { id:'3900', label:"All downloads",url_href:'',children: [ { id:'3946', label:"Publicaties",url_href:'/editorial/wide/editorial-3946-NL.html',children: [ ]}, { id:'3949', label:"Info Flash",url_href:'/editorial/wide/editorial-3949-NL.html',children: [ ]}, { id:'3948', label:"Hoogtepunten",url_href:'/editorial/wide/editorial-3948-NL.html',children: [ ]}, { id:'3947', label:"Lidmaatschap",url_href:'/editorial/wide/editorial-3947-NL.html',children: [ ]}, { id:'3951', label:"Rules",url_href:'/editorial/wide/editorial-3951-NL.html',children: [ ]}, { id:'3950', label:"CTCI",url_href:'/editorial/wide/editorial-3950-NL.html',children: [ ]} ]} ], // méthodes de construction du menu en HTML referenceChannel : undefined, anchorElement : undefined, focusedElement : undefined, channelIDSelected : undefined, hasVisibleNodeChildren : false, buildMenu : function(elt, visibleNode) { var frag = document.createDocumentFragment(); var oldNode = elt.cloneNode(false); menuData.anchorElement = oldNode; menuData.channelIDSelected = visibleNode ; //menuData.buildSubMenu(elt, menuData.menuObject, 1); menuData.buildSubMenu(oldNode, menuData.menuObject, 1); frag.appendChild(oldNode); elt.parentNode.replaceChild(frag,elt); menuData.anchorElement.select("li.extensible").each(function(item) { item.addClassName("collapsed"); item.addClassName("collapsed-level"+item.level); }); var referenceChannel= $(visibleNode); menuData.focusedElement = referenceChannel; if (referenceChannel != undefined && referenceChannel != null) { level = referenceChannel.level ; if ( ! menuData.hasVisibleNodeChildren && (level == 2 || level == 3 || level == 4)) referenceChannel.addClassName("focusedLevel"+level) ; else if (level == 1) referenceChannel.addClassName("focused"); if (!referenceChannel.hasClassName("extensible")) referenceChannel = referenceChannel.up("li.extensible"); if (referenceChannel != undefined) { referenceChannel.expandMenu(); menuData.referenceChannel = referenceChannel; } } menuData.anchorElement.observe("click", menuClickObserver); $(document).observe("mouseover", menuOverObserver); }, buildSubMenu : function(elt, children, level) { var ul = new Element("ul"); children.each(function(item) { var li = new Element("li", {id : item.id}); li.level=level; if (item.children.length > 0) { if (item.id == menuData.channelIDSelected) menuData.hasVisibleNodeChildren = true ; li.update("
"+item.label+"
"); li.addClassName("extensible"); li.collapseMenu=menuFct.collapseMenu; li.expandMenu=menuFct.expandMenu; var subUl = menuData.buildSubMenu(li, item.children, level+1); subUl.hide(); } else li.update("
"+item.label+"
"); ul.insert(li); }); elt.insert(ul); return ul; } }; var menuFct = { collapseMenu : function () { var elt = $(this); if (elt.hasClassName("collapsed")) return; elt.removeClassName("expanded"); elt.removeClassName("expanded-level"+elt.level); elt.addClassName("collapsed"); elt.addClassName("collapsed-level"+elt.level); var toHide = elt.childElements()[1]; Effect.BlindUp(toHide, { duration: 0.2 }); // collapse children recursively elt.select('li.expanded').each(function(child) { child.collapseMenu() ; }) ; }, expandMenu : function () { var elt = $(this); // expand if not done yet if (!elt.hasClassName("expanded")) { elt.addClassName("expanded"); elt.addClassName("expanded-level"+elt.level); elt.removeClassName("collapsed"); elt.removeClassName("collapsed-level"+elt.level); var toShow = elt.childElements()[1]; Effect.BlindDown(toShow, { duration: 0.3 }); } // collapse sibblings elt.siblings().each(function(sib) { if (sib.match("li.extensible", "expanded")) sib.collapseMenu(); }); // expand father recursively var fatherToExpand = elt.up('.extensible'); if (fatherToExpand != undefined) fatherToExpand.expandMenu(); } }; var backToRefID = null; function menuOverObserver(e) { var element = Event.element(e); if (element.descendantOf(menuData.anchorElement)) // Over menu { // Just entered -> Cancel the back to reference channel callback if (backToRefID != null) { clearTimeout(backToRefID); backToRefID = null; } } // Not over menu and trigger not set yet else if (backToRefID == null) { // Trigger the back to reference channel callback backToRefID = setTimeout(function() { // open the reference node if (menuData.referenceChannel != undefined) { menuData.referenceChannel.expandMenu(); // collpase the children of the reference element menuData.referenceChannel.select('.expanded').each(function(child) { child.collapseMenu() ; }) ; } // collapse the brothers of the active element if (menuData.focusedElement != undefined) { menuData.focusedElement.siblings().each(function(sib) { if (sib.match("li.extensible", "expanded")) sib.collapseMenu() ; }) ; } }, 5000); } } function menuClickObserver(e) { var elt = Event.element(e); // Skip links if (elt.match("a div")||elt.match("a")) return; // Get the first extensible parent var extensibleParent = elt.match("li.extensible")?elt:elt.up("li.extensible"); // If not found, we're not in the menu if (extensibleParent == undefined) return; if (extensibleParent.expandMenu != undefined) // If found { if (extensibleParent.hasClassName("expanded")) extensibleParent.collapseMenu(); else extensibleParent.expandMenu(); e.stop(); } }