/** *Author: David Boggus *URL: www.boggusweb.com *Date: 9-15-06 **/ var dbMenu1 = { init: function(){ var uls = document.getElementsByTagName('ul'); for(var i = 0; i < uls.length; i++){ if(uls[i].className.search(/\bdbMenu1\b/) == -1) continue; var menu1 = uls[i]; dbMenu1.styleSubMenus(menu1); addEvent(menu1, 'mouseover', dbMenu1.hover, false); addEvent(menu1, 'mouseout', dbMenu1.hoverOff, false); if(menu1.className.search(/\bonMouse\b/) == -1){ addEvent(menu1, 'click', dbMenu1.click, false); } addEvent(menu1, 'click', dbMenu1.nav, false); } }, hover: function(e){ var target = (window.event)? window.event.srcElement : (e)? e.target : null; if(target){ target = dbMenu1.getTarget(target, 'li'); if(!target) return; }else{ return; } target.className += ' hover'; var t = (target.className.search(/\bsubMenu\b/) != -1)? target : (target.parentSubMenu)? target.parentSubMenu : null; if(!t) return; clearTimeout(t.timeout); if(target.parentMenu.className.search(/\bonMouse\b/) != -1){ t.className += ' click'; } }, hoverOff: function(e){ var target = (window.event)? window.event.srcElement : (e)? e.target : null; if(target){ target = dbMenu1.getTarget(target, 'li'); if(!target) return; }else{ return; } target.className = target.className.replace(/hover/g, ''); if(target.parentMenu.className.search(/\bonMouse\b/) != -1){ var t = (target.className.search(/\bsubMenu\b/) != -1)? target : (target.parentSubMenu)? target.parentSubMenu: null; if(!t) return; t.timeout = setTimeout(function(){ t.className = t.className.replace(/click/g, ''); }, 1); } }, click: function(e){ if(window.event){ window.event.cancelBubble = true; } if(e && e.stopPropagation){ e.stopPropagation(); } var target = (window.event)? window.event.srcElement : (e)? e.target : null; if(target){ target = dbMenu1.getTarget(target, 'li'); if(!target) return; }else{ return; } if(target.className.search(/\bclick\b/) == -1){ target.className += ' click'; }else{ target.className = target.className.replace(/click/g, ''); } }, nav: function(e){ if(window.event){ window.event.cancelBubble = true; } if(e && e.stopPropagation){ e.stopPropagation(); } var target = (window.event)? window.event.srcElement : (e)? e.target : null; if(target){ target = dbMenu1.getTarget(target, 'li'); if(!target) return; }else{ return; } for(var i = 0; i < target.childNodes.length; i++){ var node = target.childNodes[i]; if(node.nodeName.toLowerCase() == 'a'){ window.location = node.href; break; } } }, getTarget: function(target, elm){ if(target.nodeName.toLowerCase() != elm && target.nodeName.toLowerCase() != 'body'){ return dbMenu1.getTarget(target.parentNode, elm); }else if(target.nodeName.toLowerCase() == 'body'){ return null; }else{ return target; } }, styleSubMenus: function(menu1){ lis = menu1.getElementsByTagName('li'); for(var i = 0; i < lis.length; i++){ node = lis[i]; node.parentMenu = menu1; if(node.getElementsByTagName('ul').length != 0){ node.className += ' subMenu'; sublis = node.getElementsByTagName('li'); for(var j = 0; j < sublis.length; j++){ sublis[j].parentSubMenu = node; } } } } } function addEvent(elm, evType, fn, useCapture){ //cross-browser event handling for IE5+, NS6+, and Mozilla/Gecko By Scott Andrew if(elm.addEventListener){ elm.addEventListener(evType, fn, useCapture); return true; }else if(elm.attachEvent){ var r = elm.attachEvent('on' + evType, fn); return r; }else{ elm['on' + evType] = fn; } } addEvent(window, 'load', dbMenu1.init, false);