var carousel = new Object();

carousel.init = function(el,num) {
   carousel.targetX = 0;
   carousel.idx = 0;
   carousel.widthPage = 900;
   carousel.nPages = num;
   carousel.el = $(el);
   carousel.lLimit = 0;
   carousel.rLimit = (-1)*(carousel.widthPage * (carousel.nPages-1));
   carousel.animating = false;
}

carousel.goNext = function() {
   this.targetX-= this.widthPage;
   this.targetX = Math.max(this.targetX,(-this.widthPage*(this.nPages-1)));
   this.idx = (-1)*(this.targetX/this.widthPage);
   carousel.update();
}
carousel.goPrev = function() {
   this.targetX+= this.widthPage;
   this.targetX = Math.min(this.targetX,0);
   this.idx = (-1)*(this.targetX/this.widthPage);
   carousel.update();
}
carousel.goToPage = function(noPage) {
   if(noPage>this.nPages){ return; }
   this.idx = noPage;
   this.targetX= -this.widthPage*(noPage);
   carousel.update();
}
carousel.checkLimits = function(noPage) {
   carousel.animating = false;
   var left = carousel.el.getStyle('left').toString();
   left = left.replace(/[^0-9\-]/g,'');
   //console.log('r:'+(left <= carousel.rLimit)+' l:'+(left >= carousel.lLimit));

   if ($('previous_button').className.include('disabled')) {
      if (left < carousel.lLimit)
         $('previous_button').removeClassName('disabled');
   } else {
      if (left >= carousel.lLimit)
         $('previous_button').className += ' disabled';
   }
   if ($('next_button').className.include('disabled')) {
      if (left > carousel.rLimit)
         $('next_button').removeClassName('disabled');
   } else {
      if (left <= carousel.rLimit)
         $('next_button').className += ' disabled';
   }

}
carousel.update = function() {
   if (carousel.animating == false) {
      carousel.animating = true;
      if (typeof(carousel.onChange) == 'function')
         carousel.onChange(carousel.idx)
      carousel.el.morph("left: " + this.targetX + "px", {duration: 0.6, transition: Effect.Transitions.sinoidal, afterFinish:carousel.checkLimits});
   }
}