
menus={cur:{},obs:{}};MenuComponent=new Class.create();MenuComponent.prototype={initialize:function(id,transition,items,options){this.id=id;this.self=$('menu_'+this.id);this.sub_menu=$('sub_'+this.id);this.transition=transition;this.self.onmouseover=this.over.bindAsEventListener(this);this.self.onmouseout=this.out.bindAsEventListener(this);if(this.sub_menu){this.sub_menu.onmouseover=this.overSub.bindAsEventListener(this);this.sub_menu.onmouseout=this.outSub.bindAsEventListener(this);}
this.timer=false;if(items){if(options.offset){var parts=options.offset.split(',');this.offset={x:parseInt(parts[0]),y:parseInt(parts[1])};this.pos=RicoUtil.toViewportPosition(this.self);this.setSubPosition(this.pos,this.offset);}
for(var i=0;i<items.length;++i){var itm=items[i];if(console)console.log(itm);menus.obs[itm]=new MenuComponent(itm);if(console)console.log('OFFSET '+itm+': '+Position.cumulativeOffset($('menu_'+itm)));menus.obs[itm].setSubPosition(this.pos,this.offset);}}},setSubPosition:function(pos,offset){if(this.sub_menu){var myPos=RicoUtil.toViewportPosition(this.self);this.sub_menu.style.left=(pos.x-myPos.x+offset.x)+'px';this.sub_menu.style.top=(pos.y-myPos.y+offset.y)+'px';if(console)console.log(this.id+' POS :'+myPos.x+','+myPos.y+' FINAL:'+this.sub_menu.style.left+' '+this.sub_menu.style.top);}},over:function(e){if(typeof(menus.cur.id)!='undefined'){menus.cur.out(null,true);}
if(this.sub_menu){this.sub_menu.style.display='';}
Element.addClassName(this.self,'on');Element.addClassName(this.self,'menu_on');menus.cur=this;},out:function(e,hide){if(console)console.log(e+' : '+hide);if(!this.sub_menu){Element.removeClassName(this.self,'on');Element.removeClassName(this.self,'menu_on');}else{if(hide||this.timer){clearTimeout(this.timer);this.timer=false;if(this.sub_menu){this.sub_menu.style.display='none';}
if(console)console.log('Hiding submenu');Element.removeClassName(this.self,'on');Element.removeClassName(this.self,'menu_on');}else{if(console)console.log('Setting timer');this.timer=setTimeout(this.out.bind(this),3000);}}},overSub:function(e){if(this.timer){clearTimeout(this.timer);this.timer=false;}},outSub:function(e){this.timer=setTimeout(this.out.bind(this),3000);}};