(function(a){a.mbMenu={name:"mbMenu",author:"Matteo Bicocchi",version:"2.8.5rc5",actualMenuOpener:false,options:{template:"yourMenuVoiceTemplate",additionalData:"",menuSelector:".menuContainer",menuWidth:400,openOnRight:false,containment:"window",iconPath:"ico/",hasImages:true,fadeInTime:100,fadeOutTime:200,menuTop:0,menuLeft:0,submenuTop:0,submenuLeft:4,opacity:1,openOnClick:true,closeOnMouseOut:false,closeAfter:500,minZindex:"auto",hoverIntent:0,submenuHoverIntent:200,onContextualMenu:function(){}},
buildMenu:function(b){return this.each(function(){var c=this;c.id=!this.id?"menu_"+Math.floor(Math.random()*1E3):this.id;this.options={};a.extend(this.options,a.mbMenu.options);a.extend(this.options,b);a(".mbmenu").hide();c.clicked=false;c.rootMenu=false;c.actualOpenedMenu=false;c.menuvoice=false;var d=a(this),g=this.options.openOnClick,n=this.options.closeOnMouseOut;a(d).each(function(){if(a.metadata)a.metadata.setType("class"),c.menuvoice=a(this).find(".rootVoice"),a(c.menuvoice).each(function(){a(this).metadata().menu&&
a(this).attr("menu",a(this).metadata().menu);a(this).metadata().disabled&&a(this).attr("isDisable",a(this).metadata().disabled)});c.menuvoice=a(this).find("[menu]").add(a(this).filter("[menu]"));c.menuvoice.filter("[isDisable]").addClass("disabled");a(c.menuvoice).css("white-space","nowrap");g&&a(c.menuvoice).bind("click",function(){a(document).unbind("click.closeMbMenu");a(this).attr("isOpen")?(a(this).removeMbMenu(c,true),a(this).addClass("selected")):(a(this).buildMbMenu(c,a(this).attr("menu")),
a(this).attr("isOpen","true"));a(this).attr("menu")=="empty"&&(c.actualOpenedMenu&&a("[isOpen]").removeAttr("isOpen"),a(this).removeMbMenu(c));a(document).unbind("click.closeMbMenu")});a(c.menuvoice).mb_hover(this.options.hoverIntent,function(){a(this).attr("isOpen")||a("[isOpen]").removeAttr("isOpen");n&&clearTimeout(a.mbMenu.deleteOnMouseOut);g||a(c).find(".selected").removeClass("selected");c.actualOpenedMenu&&a(c.actualOpenedMenu).removeClass("selected");a(this).addClass("selected");if((c.clicked||
!g)&&!a(this).attr("isOpen"))a(this).removeMbMenu(c),a(this).buildMbMenu(c,a(this).attr("menu")),a(this).attr("menu")=="empty"&&a(this).removeMbMenu(c),a(this).attr("isOpen","true")},function(){if(n)a.mbMenu.deleteOnMouseOut=setTimeout(function(){a(this).removeMbMenu(c,true);a(document).unbind("click.closeMbMenu")},a(d)[0].options.closeAfter);a(this).attr("menu")=="empty"&&a(this).removeClass("selected");c.clicked||a(this).removeClass("selected");a(document).one("click.closeMbMenu",function(){a("[isOpen]").removeAttr("isOpen");
a(this).removeClass("selected");a(this).removeMbMenu(c,true);c.rootMenu=false;c.clicked=false})})})})},buildContextualMenu:function(b){return this.each(function(){var c=this;c.options={};a.extend(c.options,a.mbMenu.options);a.extend(c.options,b);a(".mbmenu").hide();c.clicked=false;c.rootMenu=false;c.actualOpenedMenu=false;c.menuvoice=false;var d;a.metadata&&(a.metadata.setType("class"),d=a(this).find(".cmVoice"),a(d).each(function(){a(this).metadata().cMenu&&a(this).attr("cMenu",a(this).metadata().cMenu)}));
d=a(this).find("[cMenu]").add(a(this).filter("[cMenu]"));a(d).each(function(){a(this).css({"-webkit-user-select":"none","-moz-user-select":"none"});var b=this;b.id=!b.id?"menu_"+Math.floor(Math.random()*100):b.id;a(b).css({cursor:"default"});a(b).bind("contextmenu","mousedown",function(d){d.preventDefault();d.stopPropagation();d.cancelBubble=true;a.mbMenu.lastContextMenuEl=b;a.mbMenu.options.actualMenuOpener&&a(c).removeMbMenu(a.mbMenu.options.actualMenuOpener);c.options.onContextualMenu(this,d);
a(this).buildMbMenu(c,a(this).attr("cMenu"),"cm",d);a(this).attr("isOpen","true")})})})}};a.fn.extend({buildMbMenu:function(b,c,d,g){var n=a.browser.msie?"mouseenter":"mouseover",o=a.browser.msie?"mouseleave":"mouseout";if(g)this.mouseX=a(this).getMouseX(g),this.mouseY=a(this).getMouseY(g);a.mbMenu.options.actualMenuOpener&&a.mbMenu.options.actualMenuOpener!=b&&a(b).removeMbMenu(a.mbMenu.options.actualMenuOpener);a.mbMenu.options.actualMenuOpener=b;if(!d||d=="cm")b.rootMenu&&(a(b.rootMenu).removeMbMenu(b),
a(b.actualOpenedMenu).removeAttr("isOpen"),a("[isOpen]").removeAttr("isOpen")),b.clicked=true,b.actualOpenedMenu=this,a(b.actualOpenedMenu).attr("isOpen","true"),a(b.actualOpenedMenu).addClass("selected");if(a(this).attr("menu")!="empty"){var f=this,g=!d||d=="cm"?a(document.body):a(this).parent().parent(),j=b.options.menuSelector.replace(".","");b.rootMenu&&(j+=" submenuContainer");!b.rootMenu&&a(f).attr("isDisable")&&(j+=" disabled");g.append("<div class='menuDiv'><div class='"+j+" '></div></div>");
this.menu=g.find(".menuDiv");a(this.menu).css({width:0,height:0});b.options.minZindex!="auto"?a(this.menu).css({zIndex:b.options.minZindex++}):a(this.menu).mb_bringToFront();this.menuContainer=a(this.menu).find(b.options.menuSelector);a(this.menuContainer).bind(n,function(){a(f).addClass("selected")});a(this.menuContainer).css({position:"absolute",opacity:b.options.opacity});a("#"+c).html()||a.ajax({type:"POST",url:b.options.template,cache:false,async:false,data:"menuId="+c+(b.options.additionalData!=
""?"&"+b.options.additionalData:""),success:function(b){a("body").append(b);a("#"+c).hide()}});a(this.menuContainer).attr("id","mb_"+c).hide();var m=a("#"+c).hasClass("boxMenu");m?(this.voices=a("#"+c).clone(true),this.voices.css({display:"block"}),this.voices.attr("id",c+"_clone")):this.voices=a("#"+c).find("a").clone(true);a.metadata&&(a.metadata.setType("class"),a(this.voices).each(function(){a(this).metadata().disabled&&a(this).attr("isdisable",a(this).metadata().disabled);a(this).metadata().img&&
a(this).attr("img",a(this).metadata().img);a(this).metadata().menu&&a(this).attr("menu",a(this).metadata().menu);a(this).metadata().action&&a(this).attr("action",a(this).metadata().action)}));a(this.voices).each(function(d){var h=this,e="",g=a(h).attr("rel")=="text",j=a(h).attr("rel")=="title",i=a(h).is("[isdisable]");!b.rootMenu&&a(f).attr("isDisable")&&(i=true);var k=a(h).attr("rel")=="separator";b.options.hasImages&&!g&&!m&&(e=a(h).attr("img")?a(h).attr("img"):"blank.gif",e=e.length>3&&e.indexOf(".")>
-1?"<img class='imgLine' src='"+b.options.iconPath+e+"'>":e,e="<td class='img'>"+e+"</td>");e="<table id='"+c+"_"+d+"' class='line"+(j?" title":"")+"' cellspacing='0' cellpadding='0' border='0' style='width:100%;' width='100%'><tr>"+e+"<td class='voice' nowrap></td></tr></table>";k&&(e="<p class='separator' style='width:100%;'></p>");g&&(e="<div style='width:100%; display:table' class='line' id='"+c+"_"+d+"'><div class='voice'></div></div>");m&&(e="<div style='width:100%; display:inline' class='' id='"+
c+"_"+d+"'><div class='voice'></div></div>");a(f.menuContainer).append(e);var e=a(f.menuContainer).find("#"+c+"_"+d),l=e.find(".voice");if(!k){l.append(this);if(a(this).attr("menu")&&!i)e.find(".voice a").wrap("<div class='menuArrow'></div>"),e.find(".menuArrow").addClass("subMenuOpener"),e.css({cursor:"default"}),this.isOpener=true;if(g)l.addClass("textBox"),a.browser.msie&&l.css({maxWidth:b.options.menuWidth}),this.isOpener=true;i&&e.addClass("disabled").css({cursor:"default"});!g&&!j&&!i&&!m&&
(e.css({cursor:"pointer"}),e.bind("mouseover",function(){clearTimeout(a.mbMenu.deleteOnMouseOut);a(this).addClass("selected")}),e.bind("mouseout",function(){a(this).removeClass("selected")}),e.mb_hover(b.options.submenuHoverIntent,function(e){if(f.menuContainer.actualSubmenu&&!a(h).attr("menu"))a(f.menu).find(".menuDiv").remove(),a(f.menuContainer.actualSubmenu).removeClass("selected"),f.menuContainer.actualSubmenu=false;if(a(h).attr("menu")){if(f.menuContainer.actualSubmenu&&f.menuContainer.actualSubmenu!=
this)a(f.menu).find(".menuDiv").remove(),a(f.menuContainer.actualSubmenu).removeClass("selected"),f.menuContainer.actualSubmenu=false;a(h).attr("action")||a(f.menuContainer).find("#"+c+"_"+d).css("cursor","default");if(!f.menuContainer.actualSubmenu||f.menuContainer.actualSubmenu!=this)a(f.menu).find(".menuDiv").remove(),f.menuContainer.actualSubmenu=false,a(this).buildMbMenu(b,a(h).attr("menu"),"sm",e),f.menuContainer.actualSubmenu=this;a(this).attr("isOpen","true");return false}},function(){}));
if(i||j||g||m)a(this).removeAttr("href"),e.bind(n,function(){r&&clearTimeout(a.mbMenu.deleteOnMouseOut);if(f.menuContainer.actualSubmenu)a(f.menu).find(".menuDiv").remove(),f.menuContainer.actualSubmenu=false}).css("cursor","default");e.bind("click",function(){if((a(h).attr("action")||a(h).attr("href"))&&!i&&!m&&!g){var c=a(h).attr("target")?a(h).attr("target"):"_self";a(h).attr("href")&&a(h).attr("href").indexOf("javascript:")>-1&&a(h).attr("action",a(h).attr("href").replace("javascript:",""));c=
a(h).attr("action")?a(h).attr("action"):"window.open('"+a(h).attr("href")+"', '"+c+"')";a(h).removeAttr("href");eval(c);a(this).removeMbMenu(b,true)}else a(document).unbind("click.closeMbMenu")})}});var r=a(b)[0].options.closeOnMouseOut;r&&(a(f.menuContainer).bind("mouseenter",function(){clearTimeout(a.mbMenu.deleteOnMouseOut)}),a(f.menuContainer).bind("mouseleave",function(){var c=a.mbMenu.options.actualMenuOpener;a.mbMenu.deleteOnMouseOut=setTimeout(function(){a(this).removeMbMenu(c,true);a(document).unbind("click.closeMbMenu")},
a(b)[0].options.closeAfter)}));var i=j=0;a(this.menuContainer).css({minWidth:b.options.menuWidth});a.browser.msie&&a(this.menuContainer).css("width",a(this.menuContainer).width()+2);switch(d){case "sm":j=a(this).position().top+b.options.submenuTop;i=a(this).position().left+a(this).width()-b.options.submenuLeft;break;case "cm":j=this.mouseY-5;i=this.mouseX-5;break;default:b.options.openOnRight?(j=a(this).offset().top-(a.browser.msie?2:0)+b.options.menuTop,i=a(this).offset().left+a(this).outerWidth()-
b.options.menuLeft-(a.browser.msie?2:0)):(j=a(this).offset().top+a(this).outerHeight()-(!a.browser.mozilla?2:0)+b.options.menuTop,i=a(this).offset().left+b.options.menuLeft)}a(this.menu).css({position:"absolute",top:j,left:i});if(!d||d=="cm")b.rootMenu=this.menu;a(this.menuContainer).bind(o,function(){a(document).one("click.closeMbMenu",function(){a(document).removeMbMenu(b,true)})});b.options.fadeInTime>0?a(this.menuContainer).fadeIn(b.options.fadeInTime):a(this.menuContainer).show();var o=b.options.containment==
"window"?a(window).height():a("#"+b.options.containment).offset().top+a("#"+b.options.containment).outerHeight(),k=b.options.containment=="window"?a(window).width():a("#"+b.options.containment).offset().left+a("#"+b.options.containment).outerWidth(),p=a(this.menuContainer).outerHeight(),l=a(this.menuContainer).outerWidth(),q=a(g.find(".menuDiv:first")).offset().left-a(window).scrollLeft(),g=a(g.find(".menuDiv:first")).offset().top-a(window).scrollTop();switch(d){case "sm":q+l>=k&&l<k&&(i-=b.options.menuWidth*
2-b.options.submenuLeft*2);break;case "cm":q+b.options.menuWidth*1.5>=k&&l<k&&(i-=b.options.menuWidth-b.options.submenuLeft);break;default:q+l>=k&&l<k&&(i-=a(this.menuContainer).offset().left+l-k+18)}g+p>=o-10&&p<o&&(j-=g+p-o+10);a(this.menu).css({top:j,left:i})}},removeMbMenu:function(b,c){if(!b)b=a.mbMenu.options.actualMenuOpener;if(b&&b.rootMenu)a(b.actualOpenedMenu).removeAttr("isOpen").removeClass("selected"),a("[isOpen]").removeAttr("isOpen"),a(b.rootMenu).css({width:1,height:1}),c?a(b.rootMenu).fadeOut(b.options.fadeOutTime,
function(){a(this).remove()}):a(b.rootMenu).remove(),b.rootMenu=false,b.clicked=false},getMouseX:function(b){b=a.browser.msie?b.clientX+document.documentElement.scrollLeft:b.pageX;b<0&&(b=0);return b},getMouseY:function(b){b=a.browser.msie?b.clientY+document.documentElement.scrollTop:b.pageY;b<0&&(b=0);return b},mb_bringToFront:function(){var b=10;a("*").each(function(){if(a(this).css("position")=="absolute"||a(this).css("position")=="fixed")b=parseInt(a(this).css("zIndex"))>b?parseInt(a(this).css("zIndex")):
b});a(this).css("zIndex",b+=10)},mb_hover:function(b,c,d){b==0?a(this).hover(c,d):a(this).hoverIntent({sensitivity:30,interval:b,timeout:0,over:c,out:d})}});a.fn.buildMenu=a.mbMenu.buildMenu;a.fn.buildContextualMenu=a.mbMenu.buildContextualMenu})(jQuery);
