/**


  *Author: David Boggus


  *URL: www.boggusweb.com


  *Date: 9-15-06


  **/


var dbMenu = {


    init: function(){


        var uls = document.getElementsByTagName('ul');


        for(var i = 0; i < uls.length; i++){


            if(uls[i].className.search(/\bdbMenu\b/) == -1)


                continue;


            var menu = uls[i];


            


            dbMenu.styleSubMenus(menu);


            


            addEvent(menu, 'mouseover', dbMenu.hover, false);


            addEvent(menu, 'mouseout', dbMenu.hoverOff, false);


            if(menu.className.search(/\bonMouse\b/) == -1){


                addEvent(menu, 'click', dbMenu.click, false);


            }


            addEvent(menu, 'click', dbMenu.nav, false);


        }    


    },


    


    hover: function(e){


        var target = (window.event)? window.event.srcElement : (e)? e.target : null;


        


        if(target){


            target = dbMenu.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 = dbMenu.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, ''); }, 80);


        }


    },


    


    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 = dbMenu.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 = dbMenu.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 dbMenu.getTarget(target.parentNode, elm);


        }else if(target.nodeName.toLowerCase() == 'body'){


            return null;


        }else{


            return target;


        }


    },


    


    styleSubMenus: function(menu){


        lis = menu.getElementsByTagName('li');


        for(var i = 0; i < lis.length; i++){


            node = lis[i];


            node.parentMenu = menu;


            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', dbMenu.init, false);
