
var Carousel=Class.create({initialize:function(id,options){this.carousel=$(id);this.options=options;this.prevButton=$(this.options.prevButtonId);this.nextButton=$(this.options.nextButtonId);this.container=$(this.options.containerId);this.carouselWidth=parseInt(this.carousel.getWidth());this.containerWidth=parseInt(this.container.getWidth());this.carousel.setStyle({'left':0});this.addEvents();this.canScroll={prev:null,next:null}
this.scrollPrevented=false;this.effectDuration=0.8;this.maxPosition=this.carouselWidth-this.containerWidth;},addEvents:function(){this.prevButton.observe('click',this.clickRouter.bindAsEventListener(this));this.nextButton.observe('click',this.clickRouter.bindAsEventListener(this));},clickRouter:function(e){e.stop();var direction=null;switch(Event.element(e)){case this.prevButton:direction=-1;break;case this.nextButton:direction=1;break;default:alert('tohle by se stát nemělo');}
this.scroll(direction);},scroll:function(direction){this.currentPosition=this.getCurrentPosition();this.newPosition=this.currentPosition-(this.containerWidth*direction);this.checkScroll(direction);if(false===this.scrollPrevented){if(this.canScroll.prev||this.canScroll.next){this.preventScroll(true);new Effect.Morph(this.carousel,{style:'left:'+this.newPosition+'px',duration:this.effectDuration});setTimeout(function(){this.preventScroll(false);this.checkButtonsAfterScroll()}.bind(this),this.effectDuration*1000);}}},getCurrentPosition:function(){return parseInt(this.carousel.getStyle('left'));},checkScroll:function(direction){this.canScroll={prev:(-1===direction&&this.currentPosition<0),next:(1===direction&&this.currentPosition>(this.maxPosition*-1))}},checkButtonsAfterScroll:function(){var prev=this.getCurrentPosition()<0,next=this.getCurrentPosition()>(this.maxPosition*-1);if(prev){this.prevButton.removeClassName('disabled');}else{this.prevButton.addClassName('disabled');}
if(next){this.nextButton.removeClassName('disabled');}else{this.nextButton.addClassName('disabled');}},preventScroll:function(action){this.scrollPrevented=action;}})