(function(d){var b=[];d.fn.jdMenu=function(m){var l=d.extend({},arguments.callee.defaults,m);return this.each(function(){b.push(this);d(this).addClass("jd_menu_flag_root");this.$settings=d.extend({},l,{isVerticalMenu:d(this).is(".jd_menu_vertical")});a(this)})};d.fn.jdMenuShow=function(){return this.each(function(){i.apply(this)})};d.fn.jdMenuHide=function(){return this.each(function(){g.apply(this)})};d(window).bind("click",function(){d(b).find("ul:visible").jdMenuHide()}).bind("unload",function(){d(b).each(function(){this.$settings=null})});d.fn.jdMenu.defaults={activateDelay:750,showDelay:150,hideDelay:550,onShow:null,onHideCheck:null,onHide:null,onAnimate:null,onClick:null,offsetX:4,offsetY:2,iframe:d.browser.msie};d.fn.parentsUntil=function(m){var l=[];d(this[0]).parents().each(function(){l.push(this);return !d(this).is(m)});return this.pushStack(l,arguments)};function h(l){return d(l).parents("ul.jd_menu_flag_root")[0].$settings}function a(l){k(l);d("> li",l).hover(j,f).bind("click",c).find("> a.accessible").bind("click",e)}function k(l){d("> li",l).unbind("mouseover").unbind("mouseout").unbind("click").find("> a.accessible").unbind("click")}function j(){var l="jd_menu_hover"+(d(this).parent().is(".jd_menu_flag_root")?"_menubar":"");d(this).addClass(l).find("> a").addClass(l);if(this.$timer){clearTimeout(this.$timer)}if(d("> ul",this).size()>0){var o=h(this);var m=(d(this).parents("ul.jd_menu_flag_root").find("ul:visible").size()==0)?o.activateDelay:o.showDelay;var n=this;this.$timer=setTimeout(function(){i.apply(n)},m)}}function f(){d(this).removeClass("jd_menu_hover").removeClass("jd_menu_hover_menubar").find("> a").removeClass("jd_menu_hover").removeClass("jd_menu_hover_menubar");if(this.$timer){clearTimeout(this.$timer)}if(d(this).is(":visible")&&d("> ul",this).size()>0){var m=h(this);var l=d("> ul",this)[0];this.$timer=setTimeout(function(){g.apply(l)},m.hideDelay)}}function i(){var r=d("> ul",this).get(0);if(d(r).is(":visible")){return false}if(this.$timer){clearTimeout(this.$timer)}var C=h(this);if(C.onShow!=null&&C.onShow.apply(this)==false){return false}var y=d(this).parent().is(".jd_menu_flag_root");var D="jd_menu_active"+(y?"_menubar":"");d(this).addClass(D).find("> a").addClass(D);if(!y){var D="jd_menu_active"+(d(this).parent().parent().parent().is(".jd_menu_flag_root")?"_menubar":"");d(this).parent().parent().addClass(D).find("> a").addClass(D)}d(this).parent().find("> li > ul:visible").not(r).each(function(){g.apply(this)});a(r);var A=function(J,I,L,K){this.x1=J;this.x2=I;this.y1=L;this.y2=K};A.prototype.contains=function(I){return(this.x1<=I.x1&&I.x2<=this.x2)&&(this.y1<=I.y1&&I.y2<=this.y2)};A.prototype.transform=function(I,J){return new A(this.x1+I,this.x2+I,this.y1+J,this.y2+J)};A.prototype.nudgeX=function(I){if(this.x1<I.x1){return new A(I.x1,I.x1+(this.x2-this.x1),this.y1,this.y2)}else{if(this.x2>I.x2){return new A(I.x2-(this.x2-this.x1),I.x2,this.y1,this.y2)}}return this};A.prototype.nudgeY=function(I){if(this.y1<I.y1){return new A(this.x1,this.x2,I.y1,I.y1+(this.y2-this.y1))}else{if(this.y2>I.y2){return new A(this.x1,this.x2,I.y2-(this.y2-this.y1),I.y2)}}return this};var u=d(window).scrollLeft();var t=d(window).scrollTop();var G=d(window).innerWidth();var p=d(window).innerHeight();var B=new A(u,u+G,t,t+p);d(r).css({visibility:"hidden",left:0,top:0}).show();var l=d(r).outerWidth();var v=d(r).outerHeight();var m=d(this).parent();var H=m.outerWidth();var E=parseInt(m.css("borderLeftWidth"))+parseInt(m.css("borderRightWidth"));var s=d(this).outerHeight();var n=d(this).offset({border:false});d(r).hide().css({visibility:""});var F=[];F[0]=new A(n.left,n.left+l,n.top+s,n.top+s+v);F[1]=new A((n.left+H)-l,n.left+H,F[0].y1,F[0].y2);F[2]=F[0].nudgeX(B);F[3]=new A(n.left+H-E,n.left+H-E+l,n.top,n.top+v);F[4]=new A(F[3].x1,F[3].x2,F[0].y1-v,F[0].y1);F[5]=F[3].nudgeY(B);F[6]=new A(n.left,n.left+l,n.top-v,n.top);F[7]=new A((n.left+H)-l,n.left+H,F[6].y1,F[6].y2);F[8]=F[6].nudgeX(B);F[9]=new A(n.left-l,n.left,F[3].y1,F[3].y2);F[10]=new A(F[9].x1,F[9].x2,F[4].y1+s-v,F[4].y1+s);F[11]=F[10].nudgeY(B);var x=[];if(d(this).parent().is(".jd_menu_flag_root")&&!C.isVerticalMenu){x=[0,1,2,6,7,8,5,11]}else{x=[3,4,5,9,10,11,0,1,2,6,7,8]}var o=x[0];for(var z=0,w=x.length;z<w;z++){if(B.contains(F[x[z]])){o=x[z];break}}var q=F[o];d(this).add(d(this).parents()).each(function(){if(d(this).css("position")=="absolute"){var I=d(this).offset();q=q.transform(-I.left,-I.top);return false}});switch(o){case 3:q.y1+=C.offsetY;case 4:q.x1-=C.offsetX;break;case 9:q.y1+=C.offsetY;case 10:q.x1+=C.offsetX;break}if(C.iframe){d(r).bgiframe()}if(C.onAnimate){d(r).css({left:q.x1,top:q.y1});C.onAnimate.apply(r,[true])}else{d(r).css({left:q.x1,top:q.y1}).show()}return true}function g(n){if(!d(this).is(":visible")){return false}var m=h(this);if(m.onHideCheck!=null&&m.onHideCheck.apply(this)==false){return false}d("> li ul:visible",this).each(function(){g.apply(this,[false])});if(d(this).is(".jd_menu_flag_root")){alert("We are root");return false}var l=d("> li",this).add(d(this).parent());l.removeClass("jd_menu_hover").removeClass("jd_menu_hover_menubar").removeClass("jd_menu_active").removeClass("jd_menu_active_menubar").find("> a").removeClass("jd_menu_hover").removeClass("jd_menu_hover_menubar").removeClass("jd_menu_active").removeClass("jd_menu_active_menubar");k(this);d(this).each(function(){if(m.onAnimate!=null){m.onAnimate.apply(this,[false])}else{d(this).hide()}}).find("> .bgiframe").remove();if(m.onHide!=null){m.onHide.apply(this)}if(n==true){d(this).parentsUntil("ul.jd_menu_flag_root").removeClass("jd_menu_hover").removeClass("jd_menu_hover_menubar").not(".jd_menu_flag_root").filter("ul").each(function(){g.apply(this,[false])})}return true}function e(l){if(d(this).is(".accessible")){l.preventDefault()}}function c(o){o.stopPropagation();var m=h(this);if(m.onClick!=null&&m.onClick.apply(this)==false){return false}if(d("> ul",this).size()>0){i.apply(this)}else{if(o.target==this){var n=d("> a",o.target).not(".accessible");if(n.size()>0){var l=n.get(0);if(!l.onclick){window.open(l.href,l.target||"_self")}else{d(l).click()}}}g.apply(d(this).parent(),[true])}}})(jQuery);
