var menuWidth = 160; function menuInit() { return; var topMenu = []; var unitNum; for (unitNum = 0; unitNum < menuTree.length && menuTree[unitNum].label != unitName; unitNum++); if (unitNum == menuTree.length) { topMenu.add(topMenuItem('Unit', 0, menu(menuTree))); } else { topMenu.add(topMenuItem(unitName, 0, menu(menuTree))); topMenu.add(topMenuItem(chapterName, menuWidth, menu(menuTree, unitNum))); if(typeof lessonName != "undefined") { var chapterNum; for (chapterNum = 0; chapterNum < menuTree[unitNum].menu.length && menuTree[unitNum].menu[chapterNum].label != chapterName; chapterNum++); topMenu.add(topMenuItem(lessonName, menuWidth * 2, menu(menuTree, unitNum, chapterNum))); } } addContent(_('breadcrumb'), topMenu); if(typeof pageName != "undefined") { var arrow = foldArrow({ className : 'leftfoldarrow' }); addContent(_('breadcrumb'), element('span', { className : 'topmenulabel menulabel cursor-no-click' }, arrow, ' ' + pageName) ); } fixMenu(); } function menu(menuTree, submenu) { if (submenu != undefined && typeof(submenu) == 'number') { for (var i = 1; i < arguments.length; i++) { menuTree = menuTree[arguments[i]].menu; if (!menuTree) return false; } submenu = false; } var menuElement = element('div', { className : 'menu hidden' }); if (submenu) addContent(menuElement, element('span', { className : 'menutop' }, transparentImage('ui-images/menu-left-top.png', 5, 5), image('ui-images/menu-bg.gif', { className : 'menuend', height : 4 } ), transparentImage('ui-images/menu-right-top.png', 5, 5))); for (var i = 0; i < menuTree.length; i++) { var item = menuItem(menuTree[i]); if (i == 0) item.firstChild.style.borderTop = 'none'; if (i == menuTree.length - 1) item.firstChild.style.borderBottom = 'none'; addContent(menuElement, item); } addContent(menuElement, element('span', { className : 'menubottom' }, transparentImage('ui-images/menu-left-bottom.png', 5, 5), image('ui-images/menu-bg.gif', { className : 'menuend' } ), transparentImage('ui-images/menu-right-bottom.png', 5, 5))); return menuElement; } function menuItem(item) { var label = link(item.link, item.label, { className : 'menulabel', onmouseover : function() { //this.addClass('menuhover'); this.className = "menuhover"; }, onmouseout : function() { this.className = "menulabel"; //this.removeClass('menuhover'); } } ); var block = element('div', label); if (item.menu) { var arrow = foldArrow({ className : 'rightfoldarrow' }); addContent(label, arrow); var submenu = menu(item.menu, true); addContent(block, [ submenu, { arrow : arrow, submenu : submenu, widthSet : false, onmouseover : function(e) { if (!e) e = event; if (e.fromElement && isSelfOrDescendent(e.fromElement, this)) return; this.arrow.setState(1); this.submenu.style.top = (this.offsetTop - 5) + 'px'; this.submenu.style.left = this.offsetWidth + 'px'; this.submenu.show(); if (!this.widthSet) { var w = this.submenu.offsetWidth + 10; this.submenu.firstChild.firstChild.nextSibling.style.width = w + 'px'; this.submenu.lastChild.firstChild.nextSibling.style.width = w + 'px'; this.widthSet = true; } }, onmouseout : function(e) { if (!e) e = event; if (e.toElement && isSelfOrDescendent(e.toElement, this)) return; this.arrow.setState(0); this.submenu.hide(); } } ]); } return block; } function topMenuItem(label, x, submenu) { var arrow = foldArrow({ className : 'leftfoldarrow' }); var e = element('span', { className : 'topmenulabel menulabel' }, arrow, ' ' + label, submenu, { submenu : submenu, arrow : arrow, widthSet : false, onmouseover : function(e) { if (!e) e = event; if (e.fromElement && isSelfOrDescendent(e.fromElement, this)) return; if(!(submenu == false)) { this.submenu.style.left = '0px'; if(isIE6) { this.submenu.style.top = this.tempOffsetHeight + 'px'; } else { this.submenu.style.top = this.tempOffsetHeight + 5 + 'px'; } this.submenu.style.left = this.tempOffestLeft + 'px'; this.submenu.style.zIndex = "100"; this.submenu.show(); if (!this.widthSet) { var w = this.submenu.offsetWidth + 10; this.submenu.lastChild.firstChild.nextSibling.style.width = w + 'px'; this.widthSet = true; } } this.arrow.setState(1); }, onmouseout : function(e) { if (!e) e = event; if (e.toElement && isSelfOrDescendent(e.toElement, this)) return; this.arrow.setState(0); if(!(submenu == false)) { this.submenu.hide(); } } } ); return e; } function isSelfOrDescendent(testElement, refElement) { for (;testElement; testElement = testElement.parentNode) if (testElement == refElement) return true; return false; } function foldArrow() { return multiStateImage('ui-images/menu-arrow-right.png', 'ui-images/menu-arrow-down.png', { align : 'absmiddle', width : 10, height : 10 }, remainingArgs(arguments, 0)); } function transparentImage(src, w, h) { if (isIE6 && src.toLowerCase().indexOf('.png') != -1) return image('blank.gif', { width : w, height : h, style : { filter : "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')" } } ); else return image(src); } function fixMenu() { var breadcrumb = document.getElementById("breadcrumb"); var previousWidth = 0; for(var i = 0 ; i < breadcrumb.childNodes.length; i++) { var el = breadcrumb.childNodes[i]; if(el.nodeName == "SPAN") { el.tempOffsetHeight = el.offsetHeight; if(previousWidth > 0) previousWidth+= 10; var left = previousWidth; previousWidth += el.offsetWidth; var imageNode = el.childNodes[0]; var textNode = el.childNodes[1]; imageNode = imageNode.parentNode.removeChild(imageNode); textNode = textNode.parentNode.removeChild(textNode); var newDiv = element('div',imageNode,textNode); el.insertBefore(newDiv,el.firstChild); newDiv.style.position = "absolute"; newDiv.className = el.className; newDiv.style.left = String(left) + "px"; el.tempOffestLeft = left; } } }