var Menu=Class.create();Menu.prototype={initialize:function(b,a,c){this.name=a;this.type="menu";this.closeDelayTimer=null;this.closingMenuItem=null;this.config();if(typeof c=="function"){this.customConfig=c;this.customConfig()}this.rootContainer=new MenuContainer(b,this)},config:function(){this.collapseBorders=true;this.quickCollapse=true;this.closeDelayTime=500}};var MenuContainer=Class.create();MenuContainer.prototype={initialize:function(b,a){this.type="menuContainer";this.menuItems=[];this.init(b,a)},init:function(d,b){this.element=$(d);this.parent=b;this.parentMenu=(this.type=="menuContainer")?((b)?b.parent:null):b;this.root=b instanceof Menu?b:b.root;this.id=this.element.id;if(this.type=="menuContainer"){if(this.element.hasClassName("level1")){this.menuType="horizontal"}else{if(this.element.hasClassName("level2")){this.menuType="dropdown"}else{this.menuType="flyout"}}if(this.menuType=="flyout"||this.menuType=="dropdown"){this.isOpen=false;Element.setStyle(this.element,{position:"absolute",top:"0px",left:"0px",visibility:"hidden"})}else{this.isOpen=true}}else{this.isOpen=this.parentMenu.isOpen}var e=this.element.childNodes;if(e==null){return}for(var a=0;a<e.length;a++){var c=e[a];if(c.nodeType==1){if(this.type=="menuContainer"){if(c.tagName.toLowerCase()=="li"){this.menuItems.push(new MenuItem(c,this))}}else{if(c.tagName.toLowerCase()=="ul"){this.subMenu=new MenuContainer(c,this)}}}}},getBorders:function(d){var b=["Left","Top","Right","Bottom"];var a={};for(var c=0;c<b.length;++c){if(this.element.currentStyle){var e=parseInt(this.element.currentStyle["border"+b[c]+"Width"])}else{if(window.getComputedStyle){var e=parseInt(window.getComputedStyle(this.element,"").getPropertyValue("border-"+b[c].toLowerCase()+"-width"))}else{var e=parseInt(this.element.style["border"+b[c]])}}a[b[c].toLowerCase()]=isNaN(e)?0:e}return a},open:function(){if(this.root.closeDelayTimer){window.clearTimeout(this.root.closeDelayTimer)}this.parentMenu.closeAll(this);this.isOpen=true;if(this.menuType=="dropdown"){Element.setStyle(this.element,{left:(Position.positionedOffset(this.parent.element)[0])+"px",top:(Position.positionedOffset(this.parent.element)[1]+Element.getHeight(this.parent.element))+"px"})}else{if(this.menuType=="flyout"){var b=this.parentMenu?this.parentMenu.getBorders():new Object();var a=this.getBorders();if((Position.positionedOffset(this.parentMenu.element)[0]+this.parentMenu.element.offsetWidth+this.element.offsetWidth+20)>(window.innerWidth?window.innerWidth:document.body.offsetWidth)){Element.setStyle(this.element,{left:(-this.element.offsetWidth-(this.root.collapseBorders?0:b.left))+"px"})}else{Element.setStyle(this.element,{left:(this.parentMenu.element.offsetWidth-b.left-(this.root.collapseBorders?Math.min(b.right,a.left):0))+"px"})}Element.setStyle(this.element,{top:(this.parent.element.offsetTop-b.top-this.menuItems[0].element.offsetTop)+"px"})}}Element.setStyle(this.element,{visibility:"visible"})},close:function(){Element.setStyle(this.element,{visibility:"hidden"});this.isOpen=false;this.closeAll()},closeAll:function(a){for(var b=0;b<this.menuItems.length;++b){this.menuItems[b].closeItem(a)}}};var MenuItem=Class.create();Object.extend(Object.extend(MenuItem.prototype,MenuContainer.prototype),{initialize:function(idOrElement,parent){var menuItem=this;this.type="menuItem";this.subMenu;this.init(idOrElement,parent);if(this.subMenu){this.element.onmouseover=function(){menuItem.subMenu.open()}}else{if(this.root.quickCollapse){this.element.onmouseover=function(){menuItem.parentMenu.closeAll()}}}var linkTag=this.element.getElementsByTagName("A")[0];if(linkTag){linkTag.onfocus=this.element.onmouseover;this.link=linkTag;this.text=linkTag.text}if(this.subMenu){this.element.onmouseout=function(){if(menuItem.root.openDelayTimer){window.clearTimeout(menuItem.root.openDelayTimer)}if(menuItem.root.closeDelayTimer){window.clearTimeout(menuItem.root.closeDelayTimer)}eval(menuItem.root.name+".closingMenuItem = menuItem");menuItem.root.closeDelayTimer=window.setTimeout(menuItem.root.name+".closingMenuItem.subMenu.close()",menuItem.root.closeDelayTime)}}},openItem:function(){this.isOpen=true;if(this.subMenu){this.subMenu.open()}},closeItem:function(a){this.isOpen=false;if(this.subMenu){if(this.subMenu!=a){this.subMenu.close()}}}});var menu;function configMenu(){this.closeDelayTime=300}function initMenu(){menu=new Menu("root","menu",configMenu)}Event.observe(window,"load",initMenu,false);