/*
 *  @name           Trapeze Mega Menu
 *
 *  @description    Modify a predefined html menu structure and assign animation events in order to create a mega menu
 *
 *  @author         Marcos Abreu
 *
 *  @requires       Trapeze jQuery Distribution - based on jQuery 1.4.1
 *  @requires       Trapeze Core Utilities
 *
 */

$.namespace("trapeze.MegaMenu");
trapeze.MegaMenu=$.Class.extend({conf:null,active_item:null,toggle_template:'<div class="%(class)"><img src="%(img_path)" alt="%(img_label)" /></div>',setToggle:function(a,b){a=$(b).find("."+this.conf.menu_block);if(a.size<=0)return false;a.before(trapeze.render_template(this.toggle_template,{"class":this.conf.toggle.wrapper_class,img_path:this.conf.toggle.img_path,img_label:this.conf.toggle.img_label}));a.prev("."+this.conf.toggle.wrapper_class).click($.proxy(this.openMenu,this)).hover($.proxy(this.overToggle,
this),$.proxy(this.outToggle,this))},overToggle:function(a){$(a.currentTarget).parent().addClass(this.conf.menu_over)},outToggle:function(a){$(a.currentTarget).parent().removeClass(this.conf.menu_over)},openMenu:function(a){a=$(a.currentTarget).parent().find("."+this.conf.menu_block);if(this.active_item&&this.active_item.get(0)==a.get(0))this.closeMenu();else if(!this.active_item||this.active_item.get(0)!=a.get(0)){this.closeMenu();this.active_item=a.slideDown(this.conf.open_speed);this.conf.onOpen({item:this.active_item})}},
closeMenu:function(a){if(this.active_item&&(a==null||$(a.target).parents(this.conf.selector).size()==0)){this.active_item.slideUp(this.conf.close_speed);this.conf.onClose({panel:this.active_item});this.active_item=null}},init:function(a){this.conf=$.extend({},{menu_over:"mega-menu-over",menu_item:"mega-menu-item",menu_block:"mega-menu-block",open_speed:"normal",close_speed:"fast",toggle:{wrapper_class:"mega-menu-toggle",img_path:"media/images/btn-toggle-mega-menu.png",img_label:"toggle mega menu"},
onOpen:function(){},onClose:function(){},selector:null},a);this.$obj=$(this.conf.selector);this.$obj.children("li."+this.conf.menu_item).each($.proxy(this.setToggle,this));$("html").click($.proxy(this.closeMenu,this))}});

