// Fine Object
var Fine = {
  
	// Slideshow object for homepage
  Slideshow: {
	    // slideshow default config
	    config: {
						 boxSelector: '#top-box .box',
						 toggleSelector: '#switcher .toggle',
						 fxDuration: 200,
						 changeSlideDuration: 5000
		  },
			
			slide: {
				     previous: 0,
						 current: 0,
						 count: 0
			},
		 
      init: function(options){
				    
						Fine.Slideshow.config = Object.extend(Fine.Slideshow.config, options || {});
			 
		        var boxList = $$(Fine.Slideshow.config.boxSelector);
						Fine.Slideshow.slide.count = boxList.length;
						boxList.each(function(element){
						  var fx = new Fx.Style(element,'opacity',{ duration: Fine.Slideshow.config.fxDuration, wait: false });
						  element.addEvent('hide', function(){
						    fx.start(1,0);
						  });
						  element.addEvent('show', function(){
							  fx.start(0,1);
						  });
						});
						
						var toggleList = $$(Fine.Slideshow.config.toggleSelector);
						toggleList.setStyle('cursor','pointer');
						toggleList.each(function(element){
						  element.addEvent('mouseenter', function(){
								$clear(repeatSlideshow);
								changeSlide(toggleList.indexOf(this).toInt());
							});
							element.addEvent('mouseleave', function(){
								repeatSlideshow = runSlideshow.periodical(Fine.Slideshow.config.changeSlideDuration);
							});
						});
						
						function changeSlide(index){
							Fine.Slideshow.slide.current = index;
							if(Fine.Slideshow.slide.current != Fine.Slideshow.slide.previous){
								toggleList[Fine.Slideshow.slide.previous].toggleClass('active');
								toggleList[Fine.Slideshow.slide.current].toggleClass('active');
								boxList[Fine.Slideshow.slide.previous].fireEvent('hide');
								boxList[Fine.Slideshow.slide.current].fireEvent('show');
								Fine.Slideshow.slide.previous = Fine.Slideshow.slide.current;
							}
						}
						
						function runSlideshow(){
							changeSlide((Fine.Slideshow.slide.previous+1)%Fine.Slideshow.slide.count);
						}
						
						
						// Initialize first slide
						boxList.setOpacity(0);
						boxList[0].setOpacity(1);
						
						// Run slideshow after load and repeat
						toggleList[Fine.Slideshow.slide.current].toggleClass('active');
						repeatSlideshow = runSlideshow.periodical(Fine.Slideshow.config.changeSlideDuration);
		 				 
	    }
  }
	
};