(function(f){var e=[],l=[],j=activeItem=null,c=f('<div class="menu-div outerbox" style="position:absolute;top:0;left:0;display:none;"><div class="shadowbox1"></div><div class="shadowbox2"></div><div class="shadowbox3"></div></div>')[0],b=f('<ul class="menu-ul innerbox"></ul>')[0],k=f('<li style="position:relative;"><div class="menu-item"></div></li>')[0],i=f('<img class="menu-item-arrow" />')[0],h=f('<div id="root-menu-div" style="position:absolute;top:0;left:0;"></div>'),d={showDelay:200,hideDelay:200,hoverOpenDelay:0,offsetTop:0,offsetLeft:0,minWidth:0,onOpen:null,onClose:null,onClick:null,arrowSrc:null,addExpando:false,copyClassAttr:false};f(function(){h.appendTo("body")});f.extend({MenuCollection:function(m){this.menus=[];this.init(m)}});f.extend(f.MenuCollection,{prototype:{init:function(m){if(m&&m.length){for(var n=0;n<m.length;n++){this.addMenu(m[n]);m[n].menuCollection=this}}},addMenu:function(n){if(n instanceof f.Menu){this.menus.push(n)}n.menuCollection=this;var m=this;f(n.target).hover(function(){if(n.visible){return}for(var o=0;o<m.menus.length;o++){if(m.menus[o].visible){m.menus[o].hide();n.show();return}}},function(){})}}});f.extend({Menu:function(o,m,n){this.menuItems=[];this.subMenus=[];this.visible=false;this.active=false;this.parentMenuItem=null;this.settings=f.extend({},d,n);this.target=o;this.$eDIV=null;this.$eUL=null;this.timer=null;this.menuCollection=null;this.openTimer=null;this.init();if(m&&m.constructor==Array){this.addItems(m)}}});f.extend(f.Menu,{checkMouse:function(n){var m=n.target;if(l.length&&m==l[0].target){return}while(m.parentNode&&m.parentNode!=h[0]){m=m.parentNode}if(!f(l).filter(function(){return this.$eDIV[0]==m}).length){f.Menu.closeAll()}},checkKey:function(s){switch(s.keyCode){case 13:if(activeItem){activeItem.click(s,activeItem.$eLI[0])}break;case 27:f.Menu.closeAll();break;case 37:if(!j){j=l[0]}var o=j;if(o&&o.parentMenuItem){var q=o.parentMenuItem;q.$eLI.unbind("mouseout").unbind("mouseover");o.hide();q.hoverIn(true);setTimeout(function(){q.bindHover()})}else{if(o&&o.menuCollection){var t,p=o.menuCollection.menus;if((t=f.inArray(o,p))>-1){if(--t<0){t=p.length-1}f.Menu.closeAll();p[t].show();p[t].setActive();if(p[t].menuItems.length){p[t].menuItems[0].hoverIn(true)}}}}break;case 38:if(j){j.selectNextItem(-1)}break;case 39:if(!j){j=l[0]}var n,o=j,r=activeItem?activeItem.subMenu:null;if(o){if(r&&r.menuItems.length){r.show();r.menuItems[0].hoverIn()}else{if((o=o.inMenuCollection())){var t,p=o.menuCollection.menus;if((t=f.inArray(o,p))>-1){if(++t>=p.length){t=0}f.Menu.closeAll();p[t].show();p[t].setActive();if(p[t].menuItems.length){p[t].menuItems[0].hoverIn(true)}}}}}break;case 40:if(!j){if(l.length&&l[0].menuItems.length){l[0].menuItems[0].hoverIn()}}else{j.selectNextItem()}break}if(s.keyCode>36&&s.keyCode<41){return false}},closeAll:function(){while(l.length){l[0].hide()}},setDefaults:function(m){f.extend(d,m)},prototype:{init:function(){var m=this;if(!this.target){return}else{if(this.target instanceof f.MenuItem){this.parentMenuItem=this.target;this.target.addSubMenu(this);this.target=this.target.$eLI}}e.push(this);this.$eDIV=f(c.cloneNode(1));this.$eUL=f(b.cloneNode(1));this.$eDIV[0].appendChild(this.$eUL[0]);h[0].appendChild(this.$eDIV[0]);if(!this.parentMenuItem){f(this.target).click(function(n){m.onClick(n)}).hover(function(n){m.setActive();if(m.settings.hoverOpenDelay){m.openTimer=setTimeout(function(){if(!m.visible){m.onClick(n)}},m.settings.hoverOpenDelay)}},function(){if(!m.visible){f(this).removeClass("activetarget")}if(m.openTimer){clearTimeout(m.openTimer)}})}else{this.$eDIV.hover(function(){m.setActive()},function(){})}},setActive:function(){if(!this.parentMenuItem){f(this.target).addClass("activetarget")}else{this.active=true}},addItem:function(m){if(m instanceof f.MenuItem){if(f.inArray(m,this.menuItems)==-1){this.$eUL.append(m.$eLI);this.menuItems.push(m);m.parentMenu=this;if(m.subMenu){this.subMenus.push(m.subMenu)}}}else{this.addItem(new f.MenuItem(m,this.settings))}},addItems:function(m){for(var n=0;n<m.length;n++){this.addItem(m[n])}},removeItem:function(m){var n=f.inArray(m,this.menuItems);if(n>-1){this.menuItems.splice(n,1)}m.parentMenu=null},hide:function(){if(!this.visible){return}var m,n=f.inArray(this,l);this.$eDIV.hide();if(n>=0){l.splice(n,1)}this.visible=this.active=false;f(this.target).removeClass("activetarget");for(m=0;m<this.subMenus.length;m++){this.subMenus[m].hide()}for(m=0;m<this.menuItems.length;m++){if(this.menuItems[m].active){this.menuItems[m].setInactive()}}if(!l.length){f(document).unbind("mousedown",f.Menu.checkMouse).unbind("keydown",f.Menu.checkKey)}if(j==this){j=null}if(this.settings.onClose){this.settings.onClose.call(this)}},show:function(o){if(this.visible){return}var n,m=this.parentMenuItem;if(this.menuItems.length){if(m){n=parseInt(m.parentMenu.$eDIV.css("z-index"));this.$eDIV.css("z-index",(isNaN(n)?1:n+1))}this.$eDIV.css({visibility:"hidden",display:"block"});if(this.settings.minWidth){if(this.$eDIV.width()<this.settings.minWidth){this.$eDIV.css("width",this.settings.minWidth)}}this.setPosition();this.$eDIV.css({display:"none",visibility:""}).show();if(f.browser.msie){this.$eUL.css("width",parseInt(f.browser.version)==6?this.$eDIV.width()-7:this.$eUL.width())}if(this.settings.onOpen){this.settings.onOpen.call(this)}}if(l.length==0){f(document).bind("mousedown",f.Menu.checkMouse).bind("keydown",f.Menu.checkKey)}this.visible=true;l.push(this)},setPosition:function(){var t,r,p,m,w,x,s,u=f(window).width(),n=f(window).height(),y=this.parentMenuItem,z=this.$eDIV[0].clientHeight,q=this.$eDIV[0].clientWidth,v;if(y){r=y.$eLI.offset();p=r.left+y.$eLI.width();m=r.top}else{t=f(this.target);r=t.offset();p=r.left+this.settings.offsetLeft;m=r.top+t.height()+this.settings.offsetTop}if(f.fn.scrollTop){x=f(window).scrollTop();if(n<z){m=x}else{if(n+x<m+z){if(y){w=y.parentMenu.$eDIV.offset();v=y.parentMenu.$eDIV[0].clientHeight;if(z<=v){m=w.top+v-z}else{m=w.top}if(n+x<m+z){m-=m+z-(n+x)}}else{m-=m+z-(n+x)}}}}if(f.fn.scrollLeft){s=f(window).scrollLeft();if(u+s<p+q){if(y){p-=y.$eLI.width()+q;if(p<s){p=s}}else{p-=p+q-(u+s)}}}this.$eDIV.css({left:p,top:m})},onClick:function(m){if(this.visible){this.hide();this.setActive()}else{f.Menu.closeAll();this.show(m)}},addTimer:function(o,n){var m=this;this.timer=setTimeout(function(){o.call(m);m.timer=null},n)},removeTimer:function(){if(this.timer){clearTimeout(this.timer);this.timer=null}},selectNextItem:function(q){var m,r=0,n=this.menuItems.length,p=q||1;for(m=0;m<n;m++){if(this.menuItems[m].active){r=m;break}}this.menuItems[r].hoverOut();do{r+=p;if(r>=n){r=0}else{if(r<0){r=n-1}}}while(this.menuItems[r].separator);this.menuItems[r].hoverIn(true)},inMenuCollection:function(){var n=this;while(n.parentMenuItem){n=n.parentMenuItem.parentMenu}return n.menuCollection?n:null},destroy:function(){var n,m;this.hide();if(!this.parentMenuItem){f(this.target).unbind("click").unbind("mouseover").unbind("mouseout")}else{this.$eDIV.unbind("mouseover").unbind("mouseout")}while(this.menuItems.length){m=this.menuItems[0];m.destroy();delete m}if((n=f.inArray(this,e))>-1){e.splice(n,1)}if(this.menuCollection){if((n=f.inArray(this,this.menuCollection.menus))>-1){this.menuCollection.menus.splice(n,1)}}this.$eDIV.remove()}}});f.extend({MenuItem:function(n,m){if(typeof n=="string"){n={src:n}}this.src=n.src||"";this.url=n.url||null;this.urlTarget=n.target||null;this.addClass=n.addClass||null;this.data=n.data||null;this.$eLI=null;this.parentMenu=null;this.subMenu=null;this.settings=f.extend({},d,m);this.active=false;this.enabled=true;this.separator=false;this.init();if(n.subMenu){new f.Menu(this,n.subMenu,m)}}});f.extend(f.MenuItem,{prototype:{init:function(){var o,n,p=this.src,m=this;this.$eLI=f(k.cloneNode(1));if(this.addClass){this.$eLI[0].setAttribute("class",this.addClass)}if(this.settings.addExpando&&this.data){this.$eLI[0].menuData=this.data}if(p==""){this.$eLI.addClass("menu-separator");this.separator=true}else{n=typeof p=="string";if(n&&this.url){p=f('<a href="'+this.url+'"'+(this.urlTarget?'target="'+this.urlTarget+'"':"")+">"+p+"</a>")}else{if(n||!p.length){p=[p]}}for(o=0;o<p.length;o++){if(typeof p[o]=="string"){elem=document.createElement("span");elem.innerHTML=p[o];this.$eLI[0].firstChild.appendChild(elem)}else{this.$eLI[0].firstChild.appendChild(p[o].cloneNode(1))}}}this.$eLI.click(function(q){m.click(q,this)});this.bindHover()},click:function(n,m){if(this.enabled&&this.settings.onClick){this.settings.onClick.call(m,n,this)}},bindHover:function(){var m=this;this.$eLI.hover(function(){m.hoverIn()},function(){m.hoverOut()})},hoverIn:function(n){this.removeTimer();var o,q=this.parentMenu.subMenus,p=this.parentMenu.menuItems,m=this;if(this.parentMenu.timer){this.parentMenu.removeTimer()}if(!this.enabled){return}for(o=0;o<p.length;o++){if(p[o].active){p[o].setInactive()}}this.setActive();j=this.parentMenu;for(o=0;o<q.length;o++){if(q[o].visible&&q[o]!=this.subMenu&&!q[o].timer){q[o].addTimer(function(){this.hide()},q[o].settings.hideDelay)}}if(this.subMenu&&!n){this.subMenu.addTimer(function(){this.show()},this.subMenu.settings.showDelay)}},hoverOut:function(){this.removeTimer();if(!this.enabled){return}if(!this.subMenu||!this.subMenu.visible){this.setInactive()}},removeTimer:function(){if(this.subMenu){this.subMenu.removeTimer()}},setActive:function(){this.active=true;this.$eLI.addClass("active");var m=this.parentMenu.parentMenuItem;if(m&&!m.active){m.setActive()}activeItem=this},setInactive:function(){this.active=false;this.$eLI.removeClass("active");if(this==activeItem){activeItem=null}},enable:function(){this.$eLI.removeClass("disabled");this.enabled=true},disable:function(){this.$eLI.addClass("disabled");this.enabled=false},destroy:function(){this.removeTimer();this.$eLI.remove();this.$eLI.unbind("mouseover").unbind("mouseout").unbind("click");if(this.subMenu){this.subMenu.destroy();delete this.subMenu}this.parentMenu.removeItem(this)},addSubMenu:function(n){if(this.subMenu){return}this.subMenu=n;if(this.parentMenu&&f.inArray(n,this.parentMenu.subMenus)==-1){this.parentMenu.subMenus.push(n)}if(this.settings.arrowSrc){var m=i.cloneNode(0);m.setAttribute("src",this.settings.arrowSrc);this.$eLI[0].firstChild.appendChild(m)}}}});f.extend(f.fn,{menuFromElement:function(n,p,o){var m=function(x){var t=[],v,s,A,y,u,z,r,w,q=null;A=g(x,"LI");for(u=0;u<A.length;u++){v=[];if(!A[u].childNodes.length){t.push(new f.MenuItem("",n));continue}if((z=a(A[u],"UL"))){v=m(z);f(z).remove()}y=f(A[u]);if(y[0].childNodes.length==1&&y[0].childNodes[0].nodeType==3){w=y[0].childNodes[0].nodeValue}else{w=y[0].childNodes}if(n&&n.copyClassAttr){q=y.attr("class")}s=new f.MenuItem({src:w,addClass:q},n);t.push(s);if(v.length){new f.Menu(s,v,n)}}return t};return this.each(function(){var r,q;if(p||(r=a(this,"UL"))){r=p?f(p).clone(true)[0]:r;menuItems=m(r);if(menuItems.length){q=new f.Menu(this,menuItems,n);if(o){o.addMenu(q)}}f(r).hide()}})},menuBarFromUL:function(m){return this.each(function(){var o,n=g(this,"LI");if(n.length){bar=new f.MenuCollection();for(o=0;o<n.length;o++){f(n[o]).menuFromElement(m,null,bar)}}})},menu:function(n,m){return this.each(function(){if(m&&m.constructor==Array){new f.Menu(this,m,n)}else{if(this.nodeName.toUpperCase()=="UL"){f(this).menuBarFromUL(n)}else{f(this).menuFromElement(n,m)}}})}});var a=function(o,m){if(!o){return null}var p=o.firstChild;for(;p;p=p.nextSibling){if(p.nodeType==1&&p.nodeName.toUpperCase()==m){return p}}return null};var g=function(p,m){if(!p){return[]}var o=[],q=p.firstChild;for(;q;q=q.nextSibling){if(q.nodeType==1&&q.nodeName.toUpperCase()==m){o[o.length]=q}}return o}})(jQuery);