window.addEvent('domready', function() {
	var promotionalSlides = new PromotionalSlides();
});

var PromotionalSlides = new Class({
      Implements: [Options, Events],
      options: {
              slides: [],
              startIndex: 0,
              rotate: true
      },
      initialize: function(options){
              this.setOptions(options);
              this.runSlideShow = this.options.rotate;
              this.addSlides($$('#imageList a'));
              if($$('#imageList a').length > 1){
                  this.buildControls();
              }
              $('bottom_left').setStyle('overflow', 'hidden');
              if($$('#imageList a')){
                  this.rotateSlide(this.options.startIndex);
              }
      },
      slides: [],
      addSlides: function(slides){
                $$(slides).each(function(slide,i){
                      this.slides.include($(slide));
                      if(i==this.options.startIndex){
                          slide.setStyles({
                              'visibility':'visible',
                              'position':'absolute',
                              'opacity':'1'
                          });
                      }else{
                          slide.setStyles({
                              'visibility':'hidden',
                              'position':'absolute',
                              'opacity':'0'
                          });
                      }
              }, this);
      },
      addSlide: function(slide){
              this.addSlides($splat($(slide)));
      },
      buildControls: function(){
	 if($('bottom_right_bottom_right') != null){
	    var controls = new Element('div',{
            'id': 'imageList_controls'
            }).inject('bottom_right_bottom_right','bottom');
	 } else {
            var controls = new Element('div',{
            'id': 'imageList_controls'
            }).inject('bottom_left','bottom');
	 }
        var prevControl = new Element('a',{
            'href': 'javascript:void(0)',
            'id': 'imageList_prev',
            'onclick': 'pageTracker._trackPageview(\''+$('button_prev').get('html')+'\' );return(false);',
            'title': 'previous',
            'text': 'previous'
        }).inject(controls).addEvent('click', this.prevSlide.bind(this));
        var pauseControl = new Element('a',{
            'href': 'javascript:void(0)',
            'id': 'imageList_pause',
            'onclick': 'pageTracker._trackPageview(\'home/play_button\' );return(false)',
            'title': 'pause',
            'text': 'pause',
            'styles': {
                'display': 'block'
            }
        }).inject(controls).addEvent('click', this.stopSlide.bind(this));
        var playControl = new Element('a',{
            'href': 'javascript:void(0)',
            'id': 'imageList_play',
            'onclick': 'pageTracker._trackPageview(\'home/pause_button\' );return(false)',
            'title': 'play',
            'text': 'play',
            'styles': {
                'display': 'none'
            }
        }).inject(controls).addEvent('click', this.playSlide.bind(this));
        var nextControl = new Element('a',{
            'href': 'javascript:void(0)',
            'id': 'imageList_next',
            'onclick': 'pageTracker._trackPageview(\''+$('button_next').get('html')+'\' );return(false);',
            'title': 'next',
            'text': 'next'
        }).inject(controls).addEvent('click', this.nextSlide.bind(this));
      },
      nextSlide: function(){
        $clear(this.periodical);
        this.showSlide('next');
        this.runSlideShow = false;
        $('imageList_pause').setStyle('display','none');
        $('imageList_play').setStyle('display','block');
      },
      prevSlide: function(){
        if(this.active < 0){
          this.active = this.slides.length-1;
        }
        $clear(this.periodical);
        this.showSlide('prev');
        this.runSlideShow = false;
        $('imageList_pause').setStyle('display','none');
        $('imageList_play').setStyle('display','block');
      },
      stopSlide: function(){
        this.runSlideShow = false;
        $('imageList_pause').setStyle('display','none');
        $('imageList_play').setStyle('display','block');
        $clear(this.periodical);
      },
      playSlide: function(){
        this.runSlideShow = true;
        $('imageList_pause').setStyle('display','block');
        $('imageList_play').setStyle('display','none');
        this.showSlide();
        this.rotateSlide(this.iToShow);
      },
    rotateSlide: function(slide2show){
        this.active = slide2show;
        if(this.runSlideShow){
            this.periodical;
            var slidesToRotate = function(){
                this.showSlide();
            }.bind(this);
            this.periodical = slidesToRotate.periodical(5000);
        }else{
            this.showSlide(this.options.startIndex);
        }
    },
      showSlide: function(direction){
        if(this.active > this.slides.length-1 ) this.active = 0;
        if(this.active < 0 ) this.active = this.slides.length-1;
        
        if(direction == 'next'){
            if(this.active == this.slides.length-1 ) {
                this.iToShow = 0;
            }else{
                this.iToShow = this.active+1;
            }
        }else if(direction == 'prev'){
            if(this.active == 0 ) {
                this.iToShow = this.slides.length-1;
            }else{
                this.iToShow = this.active-1;
            }
        }else{
            if(this.active == this.slides.length-1 ) {
                this.iToShow = 0;
            }else{
                this.iToShow = this.active+1;
            }
        }
        var currentSlide = this.slides[this.active];
        var slide = this.slides[this.iToShow];
        if(slide) {
            if($chk(this.active) && this.active != this.iToShow){
              slide.fade('in');
              currentSlide.fade('out');
            }
        }
        if(direction == 'prev'){
          this.active--;
        }else{
          this.active++;
        }
    }
});
