var slideshow_timingSlide = 5000;
var slideshow_timingFade = 1500;
var slideshow_sliding = true;
var slideshow_images = new Array();

var Slideshow = {
	slides: [],
	
	current: null,
	next: null,
	
	key: 0,
	
	addSlide: function( img, color, link ) {
		var hash = {img: img, color: color, link: link};
		Slideshow.slides.push(hash);
	},
	
	init: function() {
		Slideshow.current = $('slideshowcurrent');
		Slideshow.next = $('slideshownext');
		
		if (Slideshow.slides.length == 0) return;
		
		Slideshow.current.setStyle({'cursor': Slideshow.slides[Slideshow.key].link ? 'pointer' : 'default'});
		Slideshow.current.observe('click', Slideshow.click);
		
		if (Slideshow.slides.length == 1) return;
		
		Slideshow.fade.delay(slideshow_timingSlide / 1000.0);
	},
	
	fade: function() {
		Slideshow.current.setStyle({'cursor': 'default'});
		Slideshow.current.stopObserving('click', Slideshow.click);
		
		++Slideshow.key;
		if (Slideshow.key >= Slideshow.slides.length) {
			Slideshow.key = 0;
		}
		
		new Effect.Fade( Slideshow.current, {duration: slideshow_timingFade / 1000.0});
		new Effect.Appear( Slideshow.next, {duration: slideshow_timingFade / 1000.0, afterFinish: Slideshow.change});
		
		if (Slideshow.slides[Slideshow.key].color) {
			new Effect.Morph(document.body, {style: { backgroundColor: Slideshow.slides[Slideshow.key].color}, duration: slideshow_timingFade / 1000.0});
		}
	},
	
	change: function() {
		var currentSlide = Slideshow.slides[Slideshow.key];
		
		var previous = Slideshow.current;
		Slideshow.current = Slideshow.next;
		Slideshow.next = previous;
		
		Slideshow.current.setStyle({'cursor': currentSlide.link ? 'pointer' : 'default'});
		Slideshow.current.observe('click', Slideshow.click);
		
		var nextKey = Slideshow.key + 1;
		if (nextKey >= Slideshow.slides.length) {
			nextKey = 0;
		}
		var nextSlide = Slideshow.slides[nextKey];
		Slideshow.next.writeAttribute('src', nextSlide.img);
		
		Slideshow.fade.delay(slideshow_timingSlide / 1000.0);
	},
	
	click: function() {
		if (Slideshow.slides[Slideshow.key].link) {
			document.location = Slideshow.slides[Slideshow.key].link;
		}
	}
};

document.observe('dom:loaded', Slideshow.init);
