var DropDownMenu=Class.create({initialize:function(a,b,c){this.trigger=$(a);this.menu=$(b);this.options=Object.extend({timeout:700,animations:{open:{effect:Effect.SlideDown,options:{duration:0.2}},close:{effect:Effect.SlideUp,options:{duration:0.2}},timeout:{effect:Effect.Fade,options:{duration:0.4}}}},c||{});this.animations={};this.originalStyles={menu:{height:b.getHeight()}};this.onMouseOut=this.onMouseOut.bindAsEventListener(this);this.onMouseOver=this.onMouseOver.bindAsEventListener(this);this.afterFinish=
this.afterFinish.bind(this);this.close=this.close.bind(this);a.observe("mouseover",this.onMouseOver);a.observe("mouseout",this.onMouseOut);b.observe("mouseover",this.onMouseOver);b.observe("mouseout",this.onMouseOut)},onMouseOver:function(a){this.timer&&this.timer.stop();a.element()==this.trigger&&this.open()},onMouseOut:function(){this.timer=new PeriodicalExecuter(function(){with(this){timer.stop();options.triggerClass&&trigger.removeClassName(options.triggerClass);var a=options.animations.timeout;
if(!animations.timeout&&!animations.close&&!animations.open)if(a&&menu.visible()){a.options.afterFinish=afterFinish;animations.timeout=new a.effect(menu,a.options)}else menu.hide()}}.bind(this),this.options.timeout/1E3)},open:function(){with(this){options.triggerClass&&trigger.addClassName(options.triggerClass);delegate&&delegate.onDropDownMenuOpen(this);var a=options.animations.open;if(options.animations.open&&!menu.visible()&&!animations.open){a.options.afterFinish=afterFinish;animations.open=new a.effect(menu,
a.options)}else menu.show()}},close:function(){with(this){if(animations.timeout)return;this.timer&&this.timer.stop();options.triggerClass&&trigger.removeClassName(options.triggerClass);var a=options.animations.close;if(a&&menu.visible()&&!animations.close){if(animations.open){animations.open.cancel();afterFinish(animations.open)}a.options.afterFinish=afterFinish;animations.close=new a.effect(menu,a.options)}else menu.hide()}},afterFinish:function(a){switch(a){case this.animations.open:this.animations.open=
null;break;case this.animations.timeout:this.animations.timeout=null;break;case this.animations.close:this.animations.close=null;this.menu.setStyle({height:this.originalStyles.menu.height+"px"});break}}}),DropDownMenuGroup=Class.create({initialize:function(a,b){this.menus=a;for(var c=a.length,d=0;d<c;++d){var e=a[d];e.delegate=this;e.options=Object.extend(e.options,b||{})}},onDropDownMenuOpen:function(a){for(var b=this.menus.length,c=0;c<b;++c){var d=this.menus[c];d!=a&&d.close()}}});