//menu multi-level //array time out each level menu var timeOut = new Array(0,0,0,0); //array item of each menu is parent of current menu var parentItem = new Array(null, null, null, null) //array of current menu var childMenu = new Array(null, null, null, null); //get correct top position of current item function GetRealTop(currentItem) { var _totalOffsetTop = currentItem.offsetTop; var _parentItem = currentItem.offsetParent; while(_parentItem != null) { _totalOffsetTop += _parentItem.offsetTop; _parentItem = _parentItem.offsetParent; } return _totalOffsetTop; } //get correct left position of current item function GetRealLeft(currentItem) { var _totalOffsetLeft = currentItem.offsetLeft; var _parentItem = currentItem.offsetParent; while (_parentItem != null) { _totalOffsetLeft += _parentItem.offsetLeft; _parentItem = _parentItem.offsetParent; } return _totalOffsetLeft; } //set hide for menu level 'levelMenu' function HideMenu(levelMenu) { if(childMenu[levelMenu] != null) { childMenu[levelMenu].style.visibility = "hidden"; } parentItem[levelMenu] = childMenu[levelMenu] = null; } //Show child menu when mouse over a parent's item function ShowChildMenu(src, childMenuId, level, oddWidth, oddHeight) { //alert(level) clearTimeout(timeOut[level]); parentItem[level] = src; if(childMenu[level] != null)childMenu[level].style.visibility = "hidden"; childMenu[level] = document.getElementById(childMenuId); //alert(GetRealTop(src)) childMenu[level].style.top = (GetRealTop(parentItem[level]) + (typeof(oddHeight) != 'undefined' ? oddHeight:0)) + "px"; childMenu[level].style.left = (GetRealLeft(parentItem[level]) + (typeof(oddWidth) != 'undefined' ? oddWidth:0)) + "px"; childMenu[level].style.visibility = "visible"; //alert(childMenu[level].style.top + " " + childMenu[level].style.left) } //Hide child menu when mouse out a parent's item function HideChildMenu(level) { timeOut[level] = setTimeout("HideMenu(" + level + ")", 200); } //Show current menu when mouse over it function ShowThisMenu(level) { for(i = level; i >= 0; i--) clearTimeout(timeOut[i]); } //Hide current menu when mouse out it function HideThisMenu(level) { //alert(level); for(i = level; i >= 0; i--) { //alert(levelMenu); timeOut[i] = setTimeout("HideMenu(" + i + ")", 200); } } //Change Class function ChangeClassName(src, className) { if(src.className != className) src.className = className; }