
// Script Name: /classes/menu/MultiMenu.js

var oneMultiMenu=new Object({init:function(contextID){var context=document.getElementById(contextID);this.tlms=typeof(context)!=="undefined"?YAHOO.util.Dom.getChildrenBy(context,YAHOO.util.Dom.hasClass('hasSub')):YAHOO.util.Dom.getElementsByClassName('hasSub');YAHOO.util.Event.addListener(this.tlms,'mouseover',oneMultiMenu.expand);YAHOO.util.Event.addListener(this.tlms,'mouseout',oneMultiMenu.contract);this.slms=typeof(context)!=="undefined"?YAHOO.util.Dom.getChildrenBy(context,YAHOO.util.Dom.hasClass('subMenu')):YAHOO.util.Dom.getElementsByClassName('subMenu');YAHOO.util.Event.addListener(this.slms,'mouseover',oneMultiMenu.keepAlive);YAHOO.util.Event.addListener(this.slms,'mouseout',oneMultiMenu.contract);},expand:function(e){this.obj=e.target||e.srcElement;while(this.obj.tagName.toUpperCase()!="LI"){this.obj=this.obj.parentNode;}
if(YAHOO.util.Dom.hasClass(this.obj,"menuColumn")||YAHOO.util.Dom.hasClass(this.obj,"menuRow")){oneMultiMenu.killAll();clearTimeout(oneMultiMenu.closeTimer);oneMultiMenu.closeTimer=[];YAHOO.util.Dom.addClass(this.obj,"selected");this.setPos="main";}
else{this.setPos="sub";oneMultiMenu.killSiblings(e);}
this.subMenu=this.obj.getElementsByTagName('ul');oneMultiMenu.active=this.subMenu[0];oneMultiMenu.setSubPos(this.obj,this.setPos);YAHOO.util.Dom.setStyle(this.subMenu[0],'display','');},setSubPos:function(parent,type){this.pPos=YAHOO.util.Dom.getRegion(parent);this.pmPos=YAHOO.util.Dom.getRegion(parent.parentNode);switch(type){case"main":if(YAHOO.util.Dom.hasClass(parent.parentNode,"GeneralVerticalMenu")){YAHOO.util.Dom.setStyle(oneMultiMenu.active,"top",this.pPos.top-this.pmPos.top+"px");YAHOO.util.Dom.setStyle(oneMultiMenu.active,"left",this.pmPos.width+"px");}else{YAHOO.util.Dom.setStyle(oneMultiMenu.active,"top",this.pPos.bottom-this.pPos.top+"px");YAHOO.util.Dom.setStyle(oneMultiMenu.active,"left",this.pPos.left-this.pmPos.left+"px");}
break;case"sub":YAHOO.util.Dom.setStyle(oneMultiMenu.active,"top",this.pPos.top-this.pmPos.top+"px");YAHOO.util.Dom.setStyle(oneMultiMenu.active,"left",this.pmPos.right-this.pmPos.left+"px");break;}},contract:function(e){if(!oneMultiMenu.closeTimer||oneMultiMenu.closeTimer==""){if(typeof oneMultiMenu.delay=='undefined'){oneMultiMenu.delay=500;}
oneMultiMenu.closeTimer=setTimeout(function(){oneMultiMenu.goHome();},oneMultiMenu.delay);}},killSiblings:function(e){this.obj=e.target||e.srcElement;this.item=this.obj;while(this.obj.tagName.toUpperCase()!="UL"){this.obj=this.obj.parentNode;}
this.items=this.obj.getElementsByTagName('li');YAHOO.util.Dom.removeClass(this.items,"selected");while(this.item.tagName.toUpperCase()!="LI"){this.item=this.item.parentNode;}
if(!(YAHOO.util.Dom.hasClass(this.item,"menuColumn"))&&!(YAHOO.util.Dom.hasClass(this.item,"menuRow"))){YAHOO.util.Dom.addClass(this.item,"selected");}
this.subMenu=this.obj.getElementsByTagName('ul');YAHOO.util.Dom.setStyle(this.subMenu,'left','-10000px');},keepAlive:function(e){this.obj=e.target||e.srcElement;this.obj=this.obj.parentNode;oneMultiMenu.closeTimer=clearTimeout(oneMultiMenu.closeTimer);oneMultiMenu.closeTimer=[];},killAll:function(){this.menucont=YAHOO.util.Dom.getElementsByClassName('DynamicMenu');for(var x=0;x<this.menucont.length;x++){this.menus=this.menucont[x].getElementsByTagName('ul');YAHOO.util.Dom.setStyle(this.menus,'left','-10000px');this.items=this.menucont[x].getElementsByTagName('li');YAHOO.util.Dom.removeClass(this.items,"selected");}
clearTimeout(oneMultiMenu.closeTimer);oneMultiMenu.active=[];},goHome:function(){this.killAll();if(!this.stuck){return;}
this.obj=YAHOO.util.Dom.get('itemID_'+this.stuck);while(this.obj.tagName.toUpperCase()!="LI"){this.obj=this.obj.parentNode;}
if(YAHOO.util.Dom.hasClass(this.obj,"menuColumn")||YAHOO.util.Dom.hasClass(this.obj,"menuRow")){YAHOO.util.Dom.addClass(this.obj,"selected");this.setPos="main";}else{this.setPos="sub";}
this.subMenu=this.obj.getElementsByTagName('ul');oneMultiMenu.active=this.subMenu[0];oneMultiMenu.setSubPos(this.obj,this.setPos);YAHOO.util.Dom.setStyle(this.subMenu[0],'display','');}});
