var MenuMatic=new Class({Implements:Options,options:{id:'nav',subMenusContainerId:'subMenusContainer',effect:'slide & fade',duration:600,physics:Fx.Transitions.Pow.easeOut,hideDelay:1000,stretchMainMenu:false,matchWidthMode:false,orientation:'horizontal',direction:{x:'right',y:'down'},tweakInitial:{x:0,y:0},tweakSubsequent:{x:0,y:0},center:false,opacity:95,mmbFocusedClassName:null,mmbClassName:null,killDivider:null,fixHasLayoutBug:false,onHideAllSubMenusNow_begin:(function(){}),onHideAllSubMenusNow_complete:(function(){}),onInit_begin:(function(){}),onInit_complete:(function(){})},hideAllMenusTimeout:null,allSubMenus:[],subMenuZindex:1,initialize:function(options){this.setOptions(options);this.options.onInit_begin();if(this.options.opacity>99){this.options.opacity=99.9;} this.options.opacity=this.options.opacity/100;Element.implement({getId:function(){if(!this.id){var uniqueId=this.get('tag')+"-"+$time();while($(uniqueId)){uniqueId=this.get('tag')+"-"+$time();} this.id=uniqueId;} return this.id;}});this.options.direction.x=this.options.direction.x.toLowerCase();this.options.direction.y=this.options.direction.y.toLowerCase();if(this.options.direction.x==='right'){this.options.direction.xInverse='left';}else if(this.options.direction.x==='left'){this.options.direction.xInverse='right';} if(this.options.direction.y==='up'){this.options.direction.yInverse='down';}else if(this.options.direction.y==='down'){this.options.direction.yInverse='up';} var links=$(this.options.id).getElements('a.iceMenuTitle');links.each(function(item,index){item.store('parentLinks',item.getParent().getParents('li').getFirst('a'));if(String(item.getParent().getParent('div').get('class'))=='iceCols') {item.store('parentLinks',item.getParent().getParent('div').getParent().getParents('li').getFirst().erase(item.getParent().getParent('div').getParent().getParents('li').getFirst().getFirst('a')));} item.store('childMenu',item.getNext('ul.icesubMenu')||item.getNext('ol.icesubMenu'));theSubMenuType='subsequent';if($(item.getParent('ul')||item.getParent('ol')).id===this.options.id){theSubMenuType='initial';} item.store('subMenuType',theSubMenuType);if(theSubMenuType==='initial'&&$(item.getNext('ul.icesubMenu')||item.getNext('ol.icesubMenu'))){item.addClass('mainMenuParentBtn');}else if($(item.getNext('ul.icesubMenu')||item.getNext('ol.icesubMenu'))){item.addClass('subMenuParentBtn');}}.bind(this));var subMenusContainer=new Element('div',{'id':this.options.subMenusContainerId}).inject($(document.body),'bottom');$(this.options.id).getElements('ul.icesubMenu, ol.icesubMenu').each(function(item,index){new Element('div',{'class':'smOW'}).inject(subMenusContainer).grab(item).addEvents({'mouseenter':function(e){}.bind(this)});}.bind(this));subMenusContainer.getElements('a').set('tabindex','-1');links.each(function(item,index){if(!item.retrieve('childMenu')){return;} item.store('childMenu',item.retrieve('childMenu').getParent('div'));this.allSubMenus.include(item.retrieve('childMenu'));item.store('parentSubMenus',item.retrieve('parentLinks').retrieve('childMenu'));var aSubMenu=new MenuMaticSubMenu(this.options,this,item);}.bind(this));var nonParentBtns=$(this.options.id).getElements('a').filter(function(item,index){return!item.retrieve('childMenu');});nonParentBtns.each(function(item,index){item.addEvents({'mouseenter':function(e){$(item).getParent('li').addClass('current');this.hideAllSubMenusNow();if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(item).retrieve('btnMorph',new Fx.Morph(item,{'duration':(this.options.duration/2),transition:this.options.physics,link:'cancel'})).start(this.options.mmbFocusedClassName);}}.bind(this),'focus':function(e){this.hideAllSubMenusNow();if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(item).retrieve('btnMorph',new Fx.Morph(item,{'duration':(this.options.duration/2),transition:this.options.physics,link:'cancel'})).start(this.options.mmbFocusedClassName);}}.bind(this),'mouseleave':function(e){if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(item).retrieve('btnMorph',new Fx.Morph(item,{'duration':(this.options.duration*5),transition:this.options.physics,link:'cancel'})).start(this.options.mmbClassName);} $(item).getParent('li').removeClass('current');}.bind(this),'blur':function(e){if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(item).retrieve('btnMorph',new Fx.Morph(item,{'duration':(this.options.duration*5),transition:this.options.physics,link:'cancel'})).start(this.options.mmbClassName);}}.bind(this),'keydown':function(e){var event=new Event(e);if(e.key==='up'||e.key==='down'||e.key==='left'||e.key==='right'){e.stop();} if(e.key==='left'&&this.options.orientation==='horizontal'||e.key==='up'&&this.options.orientation==='vertical'){if(item.getParent('li').getPrevious('li')){item.getParent('li').getPrevious('li').getFirst('a').focus();}else{item.getParent('li').getParent().getLast('li').getFirst('a').focus();}}else if(e.key==='right'&&this.options.orientation==='horizontal'||e.key==='down'&&this.options.orientation==='vertical'){if(item.getParent('li').getNext('li')){item.getParent('li').getNext('li').getFirst('a').focus();}else{item.getParent('li').getParent().getFirst('li').getFirst('a').focus();}}}.bind(this)});},this);this.stretch();this.killDivider();this.center();this.fixHasLayoutBug();this.options.onInit_complete();},fixHasLayoutBug:function(){if(Browser.Engine.trident&&this.options.fixHasLayoutBug){$(this.options.id).getParents().setStyle('zoom',1);$(this.options.id).setStyle('zoom',1);$(this.options.id).getChildren().setStyle('zoom',1);$(this.options.subMenusContainerId).setStyle('zoom',1);$(this.options.subMenusContainerId).getChildren().setStyle('zoom',1);}},center:function(){if(!this.options.center){return;} $(this.options.id).setStyles({'left':'50%','margin-left':-($(this.options.id).getSize().x/2)});},stretch:function(){if(this.options.stretchMainMenu&&this.options.orientation==='horizontal'){var targetWidth=parseFloat($(this.options.id).getCoordinates().width);var totalBtnWidth=0;var mainBtns=$(this.options.id).getElements('a');mainBtns.setStyles({'padding-left':0,'padding-right':0});mainBtns.each(function(item,index){totalBtnWidth+=item.getSize().x;}.bind(this));if(targetWidthitem.getCoordinates().width){item.setStyle('width',parentWidth-offset);item.setStyle('margin-right',-borderWidth);}}.bind(this));this.width=this.childMenu.getFirst().getCoordinates().width;this.widthMatched=true;this.options.onMatchWidth_complete(this);},hideSubMenu:function(){if(this.childMenu.retrieve('status')==='closed'){return;} this.options.onHideSubMenu_begin(this);if(this.subMenuType=='initial'){if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(this.btn).retrieve('btnMorph',new Fx.Morph($(this.btn),{'duration':(this.options.duration),transition:this.options.physics,link:'cancel'})).start(this.options.mmbClassName).chain(function(){$(this.btn).removeClass('mainMenuParentBtnFocused');$(this.btn).addClass('mainMenuParentBtn');$(this.btn).getParent('li').removeClass('current');}.bind(this));}else{$(this.btn).removeClass('mainMenuParentBtnFocused');$(this.btn).addClass('mainMenuParentBtn');$(this.btn).getParent('li').removeClass('current');}}else{$(this.btn).removeClass('subMenuParentBtnFocused');$(this.btn).addClass('subMenuParentBtn');$(this.btn).getParent('li').removeClass('current');} this.childMenu.setStyle('z-index',1);if(this.options.effect&&this.options.effect.toLowerCase()==='slide'){if(this.subMenuType=='initial'&&this.options.orientation==='horizontal'&&this.options.direction.y==='down'){this.myEffect.start({'margin-top':-this.height}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.subMenuType=='initial'&&this.options.orientation==='horizontal'&&this.options.direction.y==='up'){this.myEffect.start({'margin-top':this.height}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.options.direction.x==='right'){this.myEffect.start({'margin-left':-this.width}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.options.direction.x==='left'){this.myEffect.start({'margin-left':this.width}).chain(function(){this.childMenu.style.display="none";}.bind(this));}}else if(this.options.effect=='fade'){this.myEffect.start({'opacity':0}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.options.effect=='slide & fade'){if(this.subMenuType=='initial'&&this.options.orientation==='horizontal'&&this.options.direction.y==='down'){this.myEffect.start({'margin-top':-this.height}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.subMenuType=='initial'&&this.options.orientation==='horizontal'&&this.options.direction.y==='up'){this.myEffect.start({'margin-top':this.height}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.options.direction.x==='right'){this.myEffect.start({'margin-left':-this.width}).chain(function(){this.childMenu.style.display="none";}.bind(this));}else if(this.options.direction.x==='left'){this.myEffect.start({'margin-left':this.width}).chain(function(){this.childMenu.style.display="none";}.bind(this));}}else{this.childMenu.style.display="none";} this.childMenu.store('status','closed');this.options.onHideSubMenu_complete(this);},hideOtherSubMenus:function(){this.options.onHideOtherSubMenus_begin(this);if(!this.btn.retrieve('otherSubMenus')){this.btn.store('otherSubMenus',$$(this.root.allSubMenus.filter(function(item){return!this.btn.retrieve('parentSubMenus').contains(item)&&item!=this.childMenu;}.bind(this))));} this.parentSubMenus.fireEvent('show');this.btn.retrieve('otherSubMenus').fireEvent('hide');this.options.onHideOtherSubMenus_complete(this);},hideAllSubMenus:function(){this.options.onHideAllSubMenus_begin(this);$clear(this.root.hideAllMenusTimeout);this.root.hideAllMenusTimeout=(function(){$clear(this.hideAllMenusTimeout);$$(this.root.allSubMenus).fireEvent('hide');}).bind(this).delay(this.options.hideDelay);this.options.onHideAllSubMenus_complete(this);},cancellHideAllSubMenus:function(){$clear(this.root.hideAllMenusTimeout);},showSubMenu:function(now){this.options.onShowSubMenu_begin(this);if(this.subMenuType=='initial'){$(this.btn).removeClass('mainMenuParentBtn');$(this.btn).addClass('mainMenuParentBtnFocused');$(this.btn).getParent('li').addClass('current');}else{$(this.btn).removeClass('subMenuParentBtn');$(this.btn).addClass('subMenuParentBtnFocused');$(this.btn).getParent('li').addClass('current');} this.root.subMenuZindex++;this.childMenu.setStyles({'display':'block','visibility':'hidden','z-index':1000});if(!this.width||!this.height){this.width=this.childMenu.getFirst().getCoordinates().width;this.height=this.childMenu.getFirst().getCoordinates().height;this.childMenu.setStyle('height',this.height,'border');if(this.options.effect==='slide'||this.options.effect==='slide & fade'){if(this.subMenuType=='initial'&&this.options.orientation==='horizontal'){this.childMenu.getFirst().setStyle('margin-top','0');if(this.options.direction.y==='down'){this.myEffect.set({'margin-top':-this.height});}else if(this.options.direction.y==='up'){this.myEffect.set({'margin-top':this.height});}}else{if(this.options.direction.x==='left'){this.myEffect.set({'margin-left':this.width});}else{this.myEffect.set({'margin-left':-this.width});}}}} this.matchWidth();this.positionSubMenu();if(this.options.effect==='slide'){this.childMenu.setStyles({'display':'block','visibility':'visible'});if(this.subMenuType==='initial'&&this.options.orientation==='horizontal'){if(now){this.myEffect.set({'margin-top':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'margin-top':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else{if(now){this.myEffect.set({'margin-left':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'margin-left':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}}}else if(this.options.effect==='fade'){if(now){this.myEffect.set({'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else if(this.options.effect=='slide & fade'){this.childMenu.setStyles({'display':'block','visibility':'visible'});this.childMenu.getFirst().setStyles({'left':0});if(this.subMenuType==='initial'&&this.options.orientation==='horizontal'){if(now){this.myEffect.set({'margin-top':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'margin-top':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else{if(now){if(this.options.direction.x==='right'){this.myEffect.set({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else if(this.options.direction.x==='left'){this.myEffect.set({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else{if(this.options.direction.x==='right'){this.myEffect.set({'margin-left':-this.width,'opacity':this.options.opacity});this.myEffect.start({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else if(this.options.direction.x==='left'){this.myEffect.start({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}}}else{this.childMenu.setStyles({'display':'block','visibility':'visible'}).chain(function(){this.showSubMenuComplete(this);}.bind(this));} this.childMenu.store('status','open');},showSubMenu:function(now){this.options.onShowSubMenu_begin(this);if(this.subMenuType=='initial'){$(this.btn).removeClass('mainMenuParentBtn');$(this.btn).addClass('mainMenuParentBtnFocused');$(this.btn).getParent('li').addClass('current');}else{$(this.btn).removeClass('subMenuParentBtn');$(this.btn).addClass('subMenuParentBtnFocused');$(this.btn).removeClass('mainMenuParentBtn');$(this.btn).addClass('mainMenuParentBtnFocused');$(this.btn).getParent('li').removeClass('current');} this.root.subMenuZindex++;this.childMenu.setStyles({'display':'block','visibility':'hidden','z-index':1000});if(!this.width||!this.height){this.width=this.childMenu.getFirst().getCoordinates().width;this.height=this.childMenu.getFirst().getCoordinates().height;this.childMenu.setStyle('height',this.height,'border');if(this.options.effect==='slide'||this.options.effect==='slide & fade'){if(this.subMenuType=='initial'&&this.options.orientation==='horizontal'){this.childMenu.getFirst().setStyle('margin-top','0');if(this.options.direction.y==='down'){this.myEffect.set({'margin-top':-this.height});}else if(this.options.direction.y==='up'){this.myEffect.set({'margin-top':this.height});}}else{if(this.options.direction.x==='left'){this.myEffect.set({'margin-left':this.width});}else{this.myEffect.set({'margin-left':-this.width});}}}} this.matchWidth();this.positionSubMenu();if(this.options.effect==='slide'){this.childMenu.setStyles({'display':'block','visibility':'visible'});if(this.subMenuType==='initial'&&this.options.orientation==='horizontal'){if(now){this.myEffect.set({'margin-top':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'margin-top':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else{if(now){this.myEffect.set({'margin-left':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'margin-left':0}).chain(function(){this.showSubMenuComplete();}.bind(this));}}}else if(this.options.effect==='fade'){if(now){this.myEffect.set({'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else if(this.options.effect=='slide & fade'){this.childMenu.setStyles({'display':'block','visibility':'visible'});this.childMenu.getFirst().setStyles({'left':0});if(this.subMenuType==='initial'&&this.options.orientation==='horizontal'){if(now){this.myEffect.set({'margin-top':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else{this.myEffect.start({'margin-top':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else{if(now){if(this.options.direction.x==='right'){this.myEffect.set({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else if(this.options.direction.x==='left'){this.myEffect.set({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}else{if(this.options.direction.x==='right'){this.myEffect.start({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}else if(this.options.direction.x==='left'){this.myEffect.start({'margin-left':0,'opacity':this.options.opacity}).chain(function(){this.showSubMenuComplete();}.bind(this));}}}}else{this.childMenu.setStyles({'display':'block','visibility':'visible'}).chain(function(){this.showSubMenuComplete(this);}.bind(this));} this.childMenu.store('status','open');},showSubMenuComplete:function(){this.options.onShowSubMenu_complete(this);},positionSubMenu:function(){this.options.onPositionSubMenu_begin(this);this.childMenu.setStyle('width',this.width);this.childMenu.getFirst().setStyle('width',this.width);if(this.subMenuType==='subsequent'){if(this.parentSubMenu&&this.options.direction.x!=this.parentSubMenu.options.direction.x){if(this.parentSubMenu.options.direction.x==='left'&&this.options.effect&&this.options.effect.contains('slide')){this.myEffect.set({'margin-left':this.width});}} this.options.direction.x=this.parentSubMenu.options.direction.x;this.options.direction.xInverse=this.parentSubMenu.options.direction.xInverse;this.options.direction.y=this.parentSubMenu.options.direction.y;this.options.direction.yInverse=this.parentSubMenu.options.direction.yInverse;} var top;var overlap if(this.subMenuType=='initial') {if(this.options.direction.y==='up') {if(this.options.orientation==='vertical') {top=this.btn.getCoordinates().bottom-this.height+this.options.tweakInitial.y;} else {top=this.btn.getCoordinates().top-this.height+this.options.tweakInitial.y;} this.childMenu.style.top=top+'px';} else if(this.options.orientation=='horizontal') {this.childMenu.style.top=this.btn.getCoordinates().bottom+this.options.tweakInitial.y+'px';} else if(this.options.orientation=='vertical') {top=this.btn.getPosition().y+this.options.tweakInitial.y;if((top+this.childMenu.getSize().y)>=$(document.body).getScrollSize().y){overlap=(top+this.childMenu.getSize().y)-$(document.body).getScrollSize().y;top=top-overlap-20;} this.childMenu.style.top=top+'px';} if(this.options.orientation=='horizontal'){if($(document.body).getScrollSize().x>(this.btn.getPosition().x+this.childMenu.getCoordinates().width)) this.childMenu.style.left=this.btn.getPosition().x+this.options.tweakInitial.x+'px';else if(this.btn.getCoordinates().right>this.childMenu.getCoordinates().width) this.childMenu.style.left=this.btn.getCoordinates().right-this.childMenu.getCoordinates().width+'px';else this.childMenu.style.left=($(document.body).getScrollSize().x-this.childMenu.getCoordinates().width)/2+'px';}else if(this.options.direction.x=='left'){this.childMenu.style.left=this.btn.getPosition().x-this.childMenu.getCoordinates().width+this.options.tweakInitial.x+'px';}else if(this.options.direction.x=='right'){this.childMenu.style.left=this.btn.getCoordinates().right+this.options.tweakInitial.x+'px';}} else if(this.subMenuType=='subsequent') {if(this.options.direction.y==='down'){if((this.btn.getCoordinates().top+this.options.tweakSubsequent.y+this.childMenu.getSize().y)>=$(document.body).getScrollSize().y){overlap=(this.btn.getCoordinates().top+this.options.tweakSubsequent.y+this.childMenu.getSize().y)-$(document.body).getScrollSize().y;this.childMenu.style.top=(this.btn.getCoordinates().top+this.options.tweakSubsequent.y)-overlap-20+'px';}else{this.childMenu.style.top=this.btn.getCoordinates().top+this.options.tweakSubsequent.y+'px';}}else if(this.options.direction.y==='up'){if((this.btn.getCoordinates().bottom-this.height+this.options.tweakSubsequent.y)<1){this.options.direction.y='down';this.options.direction.yInverse='up';this.childMenu.style.top=this.btn.getCoordinates().top+this.options.tweakSubsequent.y+'px';}else{this.childMenu.style.top=this.btn.getCoordinates().bottom-this.height+this.options.tweakSubsequent.y+'px';}} if(this.options.direction.x=='left'){this.childMenu.style.left=this.btn.getCoordinates().left-this.childMenu.getCoordinates().width+this.options.tweakSubsequent.x+'px';if(this.childMenu.getPosition().x<0){this.options.direction.x='right';this.options.direction.xInverse='left';this.childMenu.style.left=this.btn.getPosition().x+this.btn.getCoordinates().width+this.options.tweakSubsequent.x+'px';if(this.options.effect==='slide'||this.options.effect==='slide & fade'){this.myEffect.set({'margin-left':-this.width,'opacity':this.options.opacity});}}}else if(this.options.direction.x=='right'){this.childMenu.style.left=this.btn.getCoordinates().right+this.options.tweakSubsequent.x+'px';var smRight=this.childMenu.getCoordinates().right;var viewportRightEdge=document.getCoordinates().width+window.getScroll().x;if(smRight>viewportRightEdge){this.options.direction.x='left';this.options.direction.xInverse='right';this.childMenu.style.left=this.btn.getCoordinates().left-this.childMenu.getCoordinates().width+this.options.tweakSubsequent.x+'px' if(this.options.effect==='slide'||this.options.effect==='slide & fade'){this.myEffect.set({'margin-left':0,'opacity':this.options.opacity});}}}} this.options.onPositionSubMenu_complete(this);}});