//Menu, <http://www.circlesquare.biz>. Copyright (c) 2008, circlesquare solutions ltd. BSD Style License.

var Menu=new Class({Implements:[Events,Options],options:{onLoad:$empty,onOpen:$empty,onClose:$empty,onEnter:$empty,onLeave:$empty,duration:300,transition:"quad:out",multi:false,collapse:false},initialize:function(_1,_2){this.setOptions(_2);this.menu=$(_1);this.tag=this.menu.get("tag");this.menu.getElements(this.tag).each(function(_3){_3.setStyles({height:0,overflow:"hidden"}).set("tween",{link:"chain",duration:this.options.duration,transition:this.options.transition,onComplete:function(){if(_3.getStyle("height").toInt()>0){_3.setStyles({overflow:"visible",height:"auto"});}else{if(this.options.collapse){_3.getElements(this.tag).each(function(_4){_4.setStyles({overflow:"hidden",height:0});this.fireEvent("close",_4.getParent());}.bind(this));}}}.bind(this)});}.bind(this));this.menu.getElements("li").each(function(li){li.addEvent("click",function(e){new Event(e).stopPropagation();var _7=li.getElement(this.tag);if($defined(_7)){if(_7.getStyle("height").toInt()==0){this.open(li);}else{this.close(li);}}}.bind(this)).addEvent("mouseenter",function(e){this.fireEvent("enter",[e,li]);}.bind(this)).addEvent("mouseleave",function(e){this.fireEvent("leave",[e,li]);}.bind(this));}.bind(this));this.fireEvent("load");},open:function(li){var _b=li.getElement(this.tag);var _c=li.getParent();if($defined(_b)){if($defined(_c)&&_c!=this.menu&&_c.getStyle("height").toInt()==0){_b.setStyles({overflow:"visible",height:"auto"});this.open(_c.getParent());}else{_b.tween("height",_b.getScrollSize().y);}this.fireEvent("open",li);if(!this.options.multi){li.getParent().getChildren("li").each(function(_d){if(_d!=li){var _e=_d.getElement(this.tag);if($defined(_e)&&_e.getStyle("height").toInt()!=0){this.close(_d);}}}.bind(this));}}else{if($defined(_c)&&_c!=this.menu&&_c.getStyle("height").toInt()==0){this.open(_c.getParent());}}},close:function(li){var _10=li.getElement(this.tag);if($defined(_10)){_10.setStyles({overflow:"hidden",height:_10.getScrollSize().y}).tween("height",0);this.fireEvent("close",li);}}});