var SlideShow = Class.create({
  initialize: function(slideshow_id){
    var self = this;
    this.slides   = $(slideshow_id).select('li.slide');

    this.nav      = $('nav_'+slideshow_id);
    this.first    = this.slides.first();
    this.last     = this.slides.last();

    this.slides_zoomable = $(slideshow_id).select('a[rel="lightbox[portfolio]"]');

    this.slides.invoke('setStyle',{display: 'none', zIndex: 1});
    this.onChangeSlide(this.first);
    this.lightbox;

    if(this.slides_zoomable.length) {
      this.slides_zoomable.each(function(slide, index){
        $(slide).onclick = function() { self.zoom(slide); return false;};
      });
    }
  },
  onChangeSlide: function(slide){
    var slide_zoomable = slide.down('a[rel="lightbox[portfolio]"]');
    new Effect.Appear(slide,{ duration: 0.8});

    if(!(slide == this.first)){
      new Effect.Fade(slide.previous(),{ duration: 0.8});
    }
    if(!(slide == this.last)){
      new Effect.Fade(slide.next(),{ duration: 0.8});
    }
   this.navigation({'next_slide': slide.next() || 'nil',
                    'prev_slide': slide.previous() || 'nil', 
                    'zoom':       slide_zoomable || 'nil'});
    return false;
  },
  zoom: function(slide){
    this.lightbox = new Lightbox();
    this.lightbox.start(slide);
    return false;
  },
  navigation: function(context){
    var button,self = this;
    $H(context).each(function(item){
      button = self.nav.down('li.'+item.key);
      if(item.value != "nil"){
        button.removeClassName('disable');
        button.onclick = function(e){
          (item.key=='zoom') ? self.zoom(item.value) : self.onChangeSlide(item.value);
          return false;
        };
      } else { button.addClassName('disable'); }
    });
    this.disable_navigation();
  },
  disable_navigation: function(navigation){
    if(this.nav.select('li.disable').length > 2){
      this.nav.hide();
    }
  }
});
