window.addEvent('domready',function() {
  if ($('slides')){ 
    /* settings */ 
    var slideToDuration = 8000; 
    var fxDuration = 2000; 
    var container = $('slides'); 
    var slides = container.getElements('.slide'); 
    var currentIndex = 0; 
    var lastIndex = 0; 
    var interval; 
    
    /* opacity and fade */ 
    slides.each(function(slide,i){  
      if(i > 0) { 
        slide.set('opacity',0); 
      } 
                
      slide.addEvent('mouseenter',function(){ 
        clearTimeout(interval);   
      });  
       
      slide.addEvent('mouseleave',function(){ 
        clearTimeout(interval);   
        interval = slideTo.periodical(slideToDuration); 
      }); 

      slide.set('tween', {duration: fxDuration});

      var knop = new Element('a', {
        'class': 'slideControl' + ((i == 0)? ' active' : ''),
        id: 'slideControl'+i,
        html: i+1,
        events: {
          mouseover: function(){
            clearTimeout(interval);   
            slideTo(false, i);         
            interval = slideTo.periodical(slideToDuration);             
          }
        }
      });
      
      knop.inject($('slideControls'));
    }); 
    
    var slideTo = function(test, gotoEl) {                         
      if (typeof gotoEl == 'number' && gotoEl < slides.length){
        if (gotoEl == currentIndex) {
          return false;
        }                                                 
        $('slideControl'+currentIndex).removeClass('active');
                                                      
        if (slides.length > 2)
          slides[lastIndex].setStyle('z-index', 0);
        slides[currentIndex].setStyle('z-index', 2);
        slides[gotoEl].setStyle('z-index', 1);   
        
        slides[gotoEl].setStyle('opacity', 1);
        slides[currentIndex].setStyle('opacity', 0);
         
      } else {   
                                             
        $('slideControl'+currentIndex).removeClass('active');
        gotoEl = (currentIndex == slides.length - 1) ? 0 : currentIndex+1;
                                                      
        if (slides.length > 2)
          slides[lastIndex].setStyle('z-index', 0);
        slides[currentIndex].setStyle('z-index', 2);
        slides[gotoEl].setStyle('z-index', 1);
        slides[gotoEl].setStyle('opacity', 1);
        slides[currentIndex].fade('out');    
      } 
                            
      lastIndex = currentIndex;
      currentIndex = gotoEl;
      $('slideControl'+gotoEl).addClass('active');
    }; 
    
    /* start once the page is finished loading */ 
    window.addEvent('load',function(){ 
      interval = slideTo.periodical(slideToDuration);   
    }); 
  }; 
});

