var UvumiDropdown=new Class({Implements:Options,options:{clickToOpen:false,openDelay:150,closeDelay:500,duration:250,link:'cancel',transition:Fx.Transitions.linear,mode:'horizontal'},initialize:function(menu,options){this.menu=menu;this.setOptions(options);if(this.options.mode!='horizontal'&&this.options.mode!='vertical'){this.options.mode='horizontal'}if(Browser.Engine.webkit){window.addEvent('domready',this.domReady.delay(200,this))}else{window.addEvent('domready',this.domReady.bind(this))}},domReady:function(){this.menu=$(this.menu);if(!$defined(this.menu)){return false}if(this.menu.get('tag')!='ul'){this.menu=this.menu.getElement('ul');if(!$defined(this.menu)){return false}}if(this.menu.getStyle('direction')=='rtl'||$(document.body).getStyle('direction')=='rtl'){this.rtl=true;if(Browser.Engine.trident&&$(document.body).getStyle('direction')=='rtl'){this.menu.getParent().setStyle('direction','ltr');this.menu.setStyle('direction','rtl')}}this.menu.setStyles({visibility:'hidden',display:'block',overflow:'hidden',height:0});this.createSubmenu(this.menu);if(this.options.mode=='horizontal'){this.menu.getChildren('li').setStyles({'float':(this.rtl?'right':'left'),display:'block',top:0});var clear=new Element('li',{html:"&nbsp;",styles:{clear:(this.rtl?'right':'left'),display:(Browser.Engine.trident?'inline':'block'),position:'relative',top:0,height:0,width:0,fontSize:0,lineHeight:0,margin:0,padding:0}}).inject(this.menu)}else{this.menu.getChildren('li').setStyles({display:'block',top:0})}this.menu.setStyles({height:'auto',overflow:'visible',visibility:'visible'})},createSubmenu:function(ul){var LIs=ul.getChildren('li');var offset=0;LIs.each(function(li){li.setStyles({position:'relative',display:'block',top:-offset,zIndex:1});offset+=li.getSize().y;var innerUl=li.getFirst('ul');if($defined(innerUl)){ul.getElements('ul').setStyle('display','none');if(ul==this.menu&&this.options.mode=='horizontal'){li.addClass('submenu-down');var x=0;var y=li.getSize().y;this.options.link='cancel';li.store('animation',new Fx.Elements($$(innerUl,innerUl.getChildren('li')).setStyle('opacity',0),this.options))}else{li.addClass('submenu-left');var x=li.getSize().x-(this.rtl&&!Browser.Engine.trident?2:1)*li.getStyle('border-left-width').toInt();var y=-li.getStyle('border-bottom-width').toInt();this.options.link='chain';li.store('animation',new Fx.Elements($$(innerUl,innerUl.getChildren('li')).setStyle('opacity',0),this.options));offset=li.getSize().y+li.getPosition(this.menu).y}innerUl.setStyles({position:'absolute',top:y,opacity:0});ul.getElements('ul').setStyle('display','block');if(this.rtl){innerUl.setStyles({right:x,marginRight:-x})}else{innerUl.setStyles({left:x})}this.createSubmenu(innerUl);if(this.options.clickToOpen){li.addEvent('mouseenter',function(){$clear(li.retrieve('closeDelay'))}.bind(this));li.getFirst('a').addEvent('click',function(e){e.stop();$clear(li.retrieve('closeDelay'));this.showChildList(li)}.bind(this))}else{li.addEvent('mouseenter',function(){$clear(li.retrieve('closeDelay'));li.store('openDelay',this.showChildList.delay(this.options.openDelay,this,li))}.bind(this))}li.addEvent('mouseleave',function(){$clear(li.retrieve('openDelay'));li.store('closeDelay',this.hideChildList.delay(this.options.closeDelay,this,li))}.bind(this))}},this)},showChildList:function(li){var ul=li.getFirst('ul');var LIs=$$(ul.getChildren('li'));var animation=li.retrieve('animation');if(li.getParent('ul')!=this.menu||this.options.mode=='vertical'){animation.cancel();var anim={0:{opacity:0.9},1:{opacity:0.9}};animation.start(anim);var animobject={}}else{var animobject={0:{opacity:0.9}}}LIs.each(function(innerli,i){animobject[i+1]={top:0,opacity:0.9}});li.setStyle('z-index',99);animation.start(animobject)},hideChildList:function(li){var animation=li.retrieve('animation');var ul=li.getFirst('ul');var LIs=$$(ul.getChildren('li'));var offset=0;var animobject={};LIs.each(function(innerli,i){animobject[i+1]={top:-offset,opacity:0};offset+=innerli.getSize().y});li.setStyle('z-index',1);if(li.getParent('ul')!=this.menu||this.options.mode=='vertical'){animobject[1]=null;animation.cancel();animation.start(animobject);var anim={0:{opacity:0},1:{opacity:0}};if(this.rtl){anim[0]['marginRight']=-ul.getSize().x}else{anim[0]['marginLeft']=-ul.getSize().x}animation.start(anim)}else{animobject[0]={opacity:0};animation.start(animobject)}}});
