var MenuBase=Class.create();MenuBase.prototype={SlideTypePrev:0,SlideTypeNext:1,options:{menuRegion:null,contentRegion:null,initializeMenuIndex:0,menuTagName:"",overTimeout:1},setOptions:function(A){Object.extend(Object.extend(this,this.options),A)},initialize:function(A){this.setOptions(A);this.initializeField();this.initializeDOM();this.initializeEvent();this.initializeMenu();this.load();this.render()},initializeField:function(){this.outMenuTimer=null;this.overMenuTimer=null},initializeDOM:function(){this.initializeMenuDOM();if(this.contentRegion){this.contentRegion=$(this.contentRegion);this.contents=this.contentRegion.immediateDescendants()}},initializeMenuDOM:function(){this.menuRegion=$(this.menuRegion);this.menus=this.menuRegion.immediateDescendants()},destroyDOM:function(){this.menus.clear();this.menus=null;if(typeof this.contents!="undefined"){this.contents.clear();this.contents=null}},initializeEvent:function(){this.onOverMenuHandler=this.onOverMenu.bindAsEventListener(this);this.menuRegion.observe("mouseover",this.onOverMenuHandler);this.onOutMenuHandler=this.onOutMenu.bindAsEventListener(this);this.menuRegion.observe("mouseout",this.onOutMenuHandler);this.onClickMenuHandler=this.onClickMenu.bindAsEventListener(this);this.menuRegion.observe("click",this.onClickMenuHandler);Event.observe(window,"unload",this.close.bind(this))},destroyEvent:function(){this.menuRegion.stopObserving("mouseover",this.onOverMenuHandler);this.menuRegion.stopObserving("mouseout",this.onOutMenuHandler);this.menuRegion.stopObserving("click",this.onClickMenuHandler)},initializeMenu:function(){},destroyMenu:function(){},load:function(){if(this.menuTagName.length===0&&this.menus&&this.menus.length>0){this.menuTagName=this.menus[0].tagName.toLowerCase()}},render:function(){if(this.menus!==null&&this.menus.length>0&&this.initializeMenuIndex>=0&&this.initializeMenuIndex<this.menus.length){this.setMenuOn(this.menus[this.initializeMenuIndex])}},onOverMenu:function(A){this.handleOverMenuTimer();var B=Event.findElement(A,this.menuTagName);if(B!==null){this.handleOutMenuTimer(B);var C=FunctionExt.defer(function(D){this.setMenuOver(D)},this.overTimeout,this,[B]);this.overMenuTimer={menu:B,timeout:C}}},handleOverMenuTimer:function(){if(this.overMenuTimer!==null&&this.overMenuTimer.timeout!==null){clearTimeout(this.overMenuTimer.timeout);this.overMenuTimer=null}},handleOutMenuTimer:function(A){if(this.outMenuTimer!==null&&this.outMenuTimer.menu!==null&&this.outMenuTimer.menu==A){clearTimeout(this.outMenuTimer.timeout);this.outMenuTimer=null}},onOutMenu:function(A){this.handleOverMenuTimer();var B=Event.findElement(A,this.menuTagName);if(B!==null){this.handleOutMenuTimer(B);var C=FunctionExt.defer(function(D){this.setMenuOut(D)},1,this,[B]);this.outMenuTimer={menu:B,timeout:C}}},onClickMenu:function(A){var C=Event.findElement(A,this.menuTagName);if(C!==null){var B=this.indexOf(C);if(B>=0){var D=Event.element(A);if(this.onClickMenuCallback){this.onClickMenuCallback(C,B,D)}}}},setMenuOn:function(B){var A=this.indexOf(B);if(A>=0){if(this.onMenuActiveCallback){this.onMenuActiveCallback(B,A)}}},setMenuOff:function(B){var A=this.menus.indexOf(B);if(A>=0){if(this.onMenuInactiveCallback){this.onMenuInactiveCallback(B,A)}}},setMenuOver:function(B){var A=this.menus.indexOf(B);if(A>=0){if(this.onMenuOverCallback){this.onMenuOverCallback(B,A)}}},setMenuOut:function(B){var A=this.menus.indexOf(B);if(A>=0){if(this.onMenuOutCallback){this.onMenuOutCallback(B,A)}}},indexOf:function(D){if(D&&D!==null){var C=this.menus,E=null;for(var A=0,B=C.length;A<B;A++){E=C[A];if(E==D){return A}}}return -1},closed:false,close:function(){if(!this.closed){this.closed=true;this.destroyMenu();this.destroyEvent();this.destroyDOM()}}};var Observer=Class.create();Observer.prototype={options:{sourceElement:null,targetElement:null,timeout:1},setOptions:function(A){Object.extend(Object.extend(this,this.options),A)},initialize:function(A){this.setOptions(A);this.initializeField();this.initializeDOM();this.initializeEvent();this.initializeMenu();this.load();this.render()},initializeField:function(){this.outSourceTimer={};this.overSourceTimer={};this.outTargetTimer={};this.overTargetTimer={}},initializeDOM:function(){this.sourceElement=$(this.sourceElement);this.targetElement=$(this.targetElement)},destroyDOM:function(){this.sourceElement=null;this.targetElement=null},initializeEvent:function(){this.onOverSourceHandler=this.onOverSource.bindAsEventListener(this);this.sourceElement.observe("mouseover",this.onOverSourceHandler);this.onOutSourceHandler=this.onOutSource.bindAsEventListener(this);this.sourceElement.observe("mouseout",this.onOutSourceHandler);this.onClickSourceHandler=this.onClickSource.bindAsEventListener(this);this.sourceElement.observe("click",this.onClickSourceHandler);if(this.targetElement){this.initializeTargetEvent()}Event.observe(window,"unload",this.close.bind(this))},initializeTargetEvent:function(){this.onOverTargetHandler=this.onOverTarget.bindAsEventListener(this);this.targetElement.observe("mouseover",this.onOverTargetHandler);this.onOutTargetHandler=this.onOutTarget.bindAsEventListener(this);this.targetElement.observe("mouseout",this.onOutTargetHandler)},destroyEvent:function(){this.sourceElement.stopObserving("mouseover",this.onOverSourceHandler);this.sourceElement.stopObserving("mouseout",this.onOutSourceHandler);this.sourceElement.stopObserving("click",this.onClickSourceHandler);if(this.targetElement){this.destroyTargetEvent()}},destroyTargetEvent:function(){this.targetElement.stopObserving("mouseover",this.onOverTargetHandler);this.targetElement.stopObserving("mouseout",this.onOutTargetHandler)},initializeMenu:function(){},destroyMenu:function(){},load:function(){},render:function(){},handleOverSourceTimer:function(){if(this.overSourceTimer!==null){clearTimeout(this.overSourceTimer.timeout);this.overSourceTimer=null}this.handleOutTargetTimer()},handleOutSourceTimer:function(){if(this.outSourceTimer!==null){clearTimeout(this.outSourceTimer.timeout);this.outSourceTimer=null}if(this.outTargetTimer!==null){clearTimeout(this.outTargetTimer.timeout);this.outTargetTimer=null}},handleOverTargetTimer:function(){if(this.overTargetTimer!==null){clearTimeout(this.overTargetTimer.timeout);this.overTargetTimer=null}this.handleOutSourceTimer()},handleOutTargetTimer:function(){if(this.outTargetTimer!==null){clearTimeout(this.outTargetTimer.timeout);this.outTargetTimer=null}if(this.outSourceTimer!==null){clearTimeout(this.outSourceTimer.timeout);this.outSourceTimer=null}},onOverSource:function(A){this.handleOverSourceTimer();this.handleOutSourceTimer();var B=Event.element(A);if(B!==null){var C=FunctionExt.defer(function(D){if(this.onOverSourceCallback){this.onOverSourceCallback(D)}},this.timeout,this,[B]);this.overSourceTimer={menu:B,timeout:C}}},onOutSource:function(A){this.handleOverSourceTimer();this.handleOutSourceTimer();var B=Event.element(A);if(B!==null){var C=FunctionExt.defer(function(D){if(this.onOutSourceCallback){this.onOutSourceCallback(D)}},this.timeout,this,[B]);this.outSourceTimer={menu:B,timeout:C}}},onClickSource:function(A){var B=Event.element(A);if(B!==null){if(this.onClickSourceCallback){this.onClickSourceCallback(B)}}},onOverTarget:function(A){this.handleOverTargetTimer();this.handleOutTargetTimer();var B=Event.element(A);if(B!==null){var C=FunctionExt.defer(function(D){if(this.onOverTargetCallback){this.onOverTargetCallback(D)}},this.timeout,this,[B]);this.overTargetTimer={menu:B,timeout:C}}},onOutTarget:function(A){this.handleOverTargetTimer();this.handleOutTargetTimer();var B=Event.element(A);if(B!==null){var C=FunctionExt.defer(function(D){if(this.onOutTargetCallback){this.onOutTargetCallback(D)}},this.timeout,this,[B]);this.outTargetTimer={menu:B,timeout:C}}},closed:false,close:function(){if(!this.closed){this.closed=true;this.destroyMenu();this.destroyEvent();this.destroyDOM()}}};