function myDebug(a){if(!trident.options.debug){return}if(typeof(console)=="undefined"){var e=$("debug_console");if(!e){e=new Element("div",{id:"debug_console"});e.setStyle({position:"absolute",height:"100px",width:"600px",color:"black",textAlign:"left",backgroundColor:"#FFFFFF",zIndex:1002,bottom:"0px",left:"0px",fontFamily:"'Courier New', Courier, monospace",fontSize:"12px",overflow:"auto"});$$("body")[0].insert(e)}e.show();var b=new Date();e.insert("<br />"+b.getMinutes()+":"+b.getSeconds()+":"+b.getMilliseconds()+" "+a);e.scrollTop=e.scrollHeight-e.clientHeight}else{console.log(a)}}var TridentObject=Class.create();TridentObject.prototype={objects:[],interval:0,menu:{container:{obj:null,pos:null},active:null},mmenupos:null,initialize:function(a){this.options=Object.extend({submenuStartBias:-200,debug:false},a||{});Event.observe(window,"load",this.windowLoaded.bind(this));document.observe("dom:loaded",this.domLoaded.bind(this))},domLoaded:function(){myDebug("DOM Loaded");if(typeof(Shadowbox)=="object"){Shadowbox.init({overlayColor:"#FFFFFF",viewportPadding:10})}},windowLoaded:function(){myDebug("Window Loaded");this.initMenus()},initMenus:function(){myDebug("Initializing menus...");this.menu.container.obj=$("menu");this.menu.container.pos=this.menu.container.obj.positionedOffset();$$("#menu a").each(function(a){var b=$(a.getAttribute("rel"));if(!b){return}myDebug("submenu "+b.id+" found.");a._submenu=b;Event.observe(window,"resize",function(){$$("#menu a").each(function(c){if(!c._submenu){return}this.updateSubmenuPos(c)}.bind(this))}.bind(this));if(a.hasClassName("active")){myDebug("menu "+a.innerHTML+" visible.");this.menu.active=a}else{a._submenu.hide();a.observe("mouseenter",function(c){myDebug("mouseenter menu "+c.id);this.callSubmenu(c)}.bind(this,a));a.observe("mouseleave",function(c){myDebug("mouseleave menu "+c.id);c.removeClassName("active");this.moveawaySubmenu(c)}.bind(this,a))}this.updateSubmenuPos(a)}.bind(this));myDebug("Menus initialized.")},updateSubmenuPos:function(f){var e=f.positionedOffset();var b=f.getWidth();var c=b/2-20;var a=f._submenu.getWidth();myDebug("submenu "+f._submenu.id+" width="+a);myDebug("max r="+(this.menu.container.pos.left+this.menu.container.obj.getWidth()));myDebug("submenu r="+(e.left+a+c));var d=f==this.menu.active?0:-200;if((this.menu.container.pos.left+this.menu.container.obj.getWidth())>(e.left+a+c)){f._submenu._pos=e.left+c;f._submenu.setStyle({left:(f._submenu._pos+d)+"px",backgroundPosition:"left top"});myDebug("submenu "+f._submenu.id+" positioned at "+parseInt(f._submenu._pos+d)+" (inluding relpos="+d+") - left")}else{f._submenu._pos=e.left+b-a-c;f._submenu.setStyle({left:(f._submenu._pos+d)+"px",backgroundPosition:"right top"});myDebug("submenu "+f._submenu.id+" positioned at "+parseInt(f._submenu._pos+d)+" (inluding relpos="+d+") - right")}},menuComing:function(b){if(b._effect==null){return false}var a=(b._effect.options.type==1)&&(b._effect.state!="finished");myDebug("test menu "+b._submenu.id+" coming="+a);return a},menuLeaving:function(b){if(b._effect==null){return false}var a=(b._effect.options.type==2)&&(b._effect.state!="finished");myDebug("test menu "+b._submenu.id+" leaving="+a);return a},activateSubmenu:function(a){if(typeof(a._submenu._observed)=="undefined"){a._submenu._observed=false}if(!a._submenu._observed){a._submenu.observe("mouseenter",function(b){myDebug("mouseenter submenu "+b._submenu.id);b.addClassName("active");if(this.menuLeaving(b)){b._effect.cancel();this.callSubmenu(b)}}.bind(this,a));a._submenu.observe("mouseleave",function(b){myDebug("mouseleave submenu "+b._submenu.id);b.removeClassName("active");this.moveawaySubmenu(b)}.bind(this,a));myDebug("start observing submenu "+a._submenu.id);a._submenu._observed=true}},deactivateSubmenu:function(a){if(a._submenu._observed){a._submenu.stopObserving();myDebug("stop observing submenu "+a._submenu.id);a._submenu._observed=false}},menuAppearEffect:function(b){var a=[new Effect.Morph(b._submenu,{sync:true,style:{left:b._submenu._pos+"px"}}),new Effect.Appear(b._submenu,{sync:true})];if(this.menu.active){a.push(new Effect.Morph(this.menu.active._submenu,{sync:true,style:{left:(parseInt(this.menu.active._submenu.getStyle("left"))+this.options.submenuStartBias)+"px"}}));a.push(new Effect.Fade(this.menu.active._submenu,{sync:true}))}return a},menuFadeEffect:function(a){eff=[new Effect.Morph(a._submenu,{sync:true,style:{left:(parseInt(a._submenu.getStyle("left"))+this.options.submenuStartBias)+"px"}}),new Effect.Fade(a._submenu,{sync:true})];if(this.menu.active){eff.push(new Effect.Morph(this.menu.active._submenu,{sync:true,style:{left:this.menu.active._submenu._pos+"px"}}));eff.push(new Effect.Appear(this.menu.active._submenu,{sync:true}))}return eff},callSubmenu:function(b){myDebug("call submenu "+b._submenu.id);if(this.menuComing(b)){return}if(this.menuLeaving(b)){myDebug("aborting fade for submenu "+b._submenu.id);b._effect.cancel()}myDebug("stop observing mouse hovering for submenu "+b._submenu.id);this.deactivateSubmenu(b);var a=this.menuAppearEffect(b);this.activateSubmenu(b);b._effect=new Effect.Parallel(a,{type:1,duration:0.6,afterFinish:function(c){myDebug("end showing submenu "+c._submenu.id)}.bind(this,b)})},moveawaySubmenu:function(b){myDebug("move away menu "+b._submenu.id);if(this.menuLeaving(b)){return}if(this.menuComing(b)){myDebug("aborting appear for menu "+b._submenu.id);b._effect.cancel()}var a=this.menuFadeEffect(b);b._effect=new Effect.Parallel(a,{type:2,delay:0.6,duration:0.3,afterSetup:function(c){myDebug("stop observing mouse hovering for submenu "+c._submenu.id);this.deactivateSubmenu(c)}.bind(this,b),afterFinish:function(c){myDebug("end hiding submenu "+c._submenu.id)}.bind(this,b)})}};
