var XWiki=function(d){var e=d.widgets=d.widgets||{};e.Carousel=Class.create({defaultOptions:{duration:.5,frequency:10},initialize:function(a,b){this.scrolling=!1;this.container=$(a);this.scroller=this.container.down(".scroller");this.sections=this.container.select(".section");this.controls=this.container.select(".controls a");this.options=Object.extend(Object.clone(this.defaultOptions),b||{});this.sections.each(function(c,f){c._index=f;c._control=this.container.down('.controls a[href\x3d"#'+c.id+
'"]')}.bind(this));this.addObservers();this.options.initialSection&&this.moveTo(this.options.initialSection);(this.options.autoGlide||this.container.hasClassName("autostart"))&&this.start()},addObservers:function(){this.controls.invoke("observe","click",this.click.bindAsEventListener(this))},click:function(a){a.stop();this.stop();a=a.findElement("a");this.scrolling&&this.scrolling.cancel();this.moveTo(this.container.down("#"+a.href.split("#")[1]))},moveTo:function(a){this.current=$(a);Position.prepare();
var b=Position.cumulativeOffset(this.scroller);a=Position.cumulativeOffset($(a));this.scrolling=new Effect.SmoothScroll(this.scroller,{duration:this.options.duration,x:a[0]-b[0],y:a[1]-b[1],afterFinish:this.onAnimationEnded.bind(this)})},next:function(){if(this.current){var a=this.current._index;a=this.sections.length-1==a?0:a+1}else a=1;this.moveTo(this.sections[a])},previous:function(){if(this.current){var a=this.current._index;a=0==a?this.sections.length-1:a-1}else a=this.sections.length-1;this.moveTo(this.sections[a])},
stop:function(){clearTimeout(this.timer)},start:function(){this.periodicallyUpdate()},periodicallyUpdate:function(){null!=this.timer&&(clearTimeout(this.timer),this.next());this.timer=this.periodicallyUpdate.bind(this).delay(this.options.frequency)},onAnimationEnded:function(){this.scrolling=!1;var a=this.current._control;this.controls.each(function(b){b==a?b.addClassName("on"):b.removeClassName("on")})}});require(["scriptaculous/effects"],function(){function a(){$$(".carousel").each(function(b){new e.Carousel(b)})}
Effect.SmoothScroll=Class.create(Effect.Base,{initialize:function(b,c){this.element=$(b);c=Object.extend({x:0,y:0,mode:"absolute"},c||{});this.start(c)},setup:function(){this.options.continuous&&!this.element._ext&&(this.element.cleanWhitespace(),this.element._ext=!0,this.element.appendChild(this.element.firstChild));this.originalLeft=this.element.scrollLeft;this.originalTop=this.element.scrollTop;"absolute"==this.options.mode&&(this.options.x-=this.originalLeft,this.options.y-=this.originalTop)},
update:function(b){this.element.scrollLeft=this.options.x*b+this.originalLeft;this.element.scrollTop=this.options.y*b+this.originalTop}});d.domIsLoaded&&a()||document.observe("xwiki:dom:loaded",a)});return d}(XWiki||{});