S2.FX.Element.addMethods({reset:function(){if(this.state=="running"){this.cancel()}this.state="idle";this.operators=[]}});(function(a){a.Carousel=Class.create(a.Base,(function(){function f(r,q){this.setOptions(q);this.root=$(r);this.next=this.root.down(this.options.nextSelector);this.prev=this.root.down(this.options.prevSelector);this.container=this.root.down(this.options.containerSelector);this.elements=this.container.immediateDescendants();if(this.next){this.prev.observe("click",d.bind(this));a.addBehavior(this.prev,[a.Behavior.Hover,a.Behavior.Focus])}if(this.prev){this.next.observe("click",h.bind(this));a.addBehavior(this.next,[a.Behavior.Hover,a.Behavior.Focus])}if(this.isHorizontal()){this.elementSize=this.elements.first().getWidth();this.containerSize=this.container.up().getWidth();this.attribute="left"}else{this.elementSize=this.elements.first().getHeight();this.containerSize=this.container.up().getHeight();this.attribute="top"}this.nbVisibleElements=Math.floor(this.containerSize/this.elementSize);this.maxPos=this.elements.length-this.nbVisibleElements;this.effect=new S2.FX.Morph(this.container,Object.extend({after:c.bind(this)},this.options.fxOption));var p=this.effect.update,o=this.container;this.effect.update=function(s){p.call(this,s);o.fire("carousel:position:changed",{position:s})};c.call(this);g.call(this);m.call(this)}function l(){return this.options.orientation=="horizontal"}function i(){return this.effect}function k(){return this.container}function n(){var o=-parseFloat(this.container.getStyle("margin-"+this.attribute));return o/this.elementSize}function j(){return(this.getPosition()/this.maxPos)}function b(o,q){o=Math.max(0,o);o=Math.min(o,this.maxPos);var r=-o*this.elementSize,p="margin-"+this.attribute+":"+r+"px";if(q){this.effect.element.setStyle(p);this.container.fire("carousel:position:changed",{position:o});c.call(this)}else{this.effect.reset();this.effect.animate("style",this.effect.element,{style:p,propertyTransitions:{}});this.effect.play()}}function e(p,o){this.goTo(p*this.maxPos,o)}function d(o){if(this.getPosition()>0){this.goTo(Math.ceil(this.getPosition()-this.nbVisibleElements))}else{if(this.options.cycle==="loop"){this.goTo(this.elements.length-this.nbVisibleElements)}}o.stop()}function h(o){if(this.getPosition()+this.nbVisibleElements<this.elements.length){this.goTo(Math.floor(this.getPosition()+this.nbVisibleElements))}else{if(this.options.cycle==="loop"){this.goTo(0)}}o.stop()}function c(){if(this.options.cycle){return}var o=this.getPosition();if(this.prev){if(o==0){this.prev.addClassName(this.options.disableClass).removeClassName("ui-state-hover")}else{this.prev.removeClassName(this.options.disableClass)}}if(this.next){if(o+this.nbVisibleElements>=this.elements.length){this.next.addClassName(this.options.disableClass).removeClassName("ui-state-hover")}else{this.next.removeClassName(this.options.disableClass)}}}function g(){if(this.options.slider){var p=this,o=true;var q=(function(r,s){o=true;p.goToRelative(r[0]/100,true)});this.slider=new S2.UI.Slider(this.options.slider,{onSlide:q,onChange:q,orientation:this.options.orientation});this.getContainer().observe("carousel:position:changed",function(r){if(o){o=false}else{p.slider.setValue(p.getRelativePosition()*100,0)}})}}function m(){if(this.options.paginator){this.paginator=new a.Carousel.Paginator(this.options.paginator,this)}}return{initialize:f,isHorizontal:l,getEffect:i,getContainer:k,getPosition:n,getRelativePosition:j,goToRelative:e,goTo:b}})());Object.extend(a.Carousel,{NAME:"S2.UI.Carousel",DEFAULT_OPTIONS:{nextSelector:".ui-carousel-next",prevSelector:".ui-carousel-prev",containerSelector:".ui-carousel-container ul",disableClass:"ui-state-disabled",orientation:"horizontal",fxOption:{duration:0.75,transition:S2.FX.Transitions.easeInOutExpo},slider:null,paginator:null,cycle:null}});a.Carousel.Paginator=Class.create(a.Base,(function(){function b(h,i){this.element=$(h);this.carousel=i;c.call(this);this.carousel.getContainer().observe("carousel:position:changed",d.bind(this));this.ul.observe("click",e.bind(this))}function f(h){this.carousel.goTo(h*this.carousel.nbVisibleElements)}function c(){var h=Math.ceil(this.carousel.elements.length/this.carousel.nbVisibleElements);this.ul=this.element.down("ul")||new Element("ul");for(var j=0;j<h;j++){this.ul.insert(new Element("li").addClassName("ui-icon ui-icon-bullet").update(j+1))}if(!this.ul.parentNode){this.element.insert(this.ul)}this.lis=this.ul.select("li");d.call(this)}function d(h){this.lis.invoke("removeClassName","ui-state-active");this.lis[g.call(this)].addClassName("ui-state-active")}function g(){return Math.round(this.carousel.getPosition()/this.carousel.nbVisibleElements)}function e(i){var h=i.findElement("li");if(h){this.goToPage(this.lis.indexOf(h))}}return{initialize:b,goToPage:f}})())})(S2.UI);
