var SlideShow = {
	slides: [],
	slidePos: 0,
	resizeHolder: false,
	startup: function() {
		SlideShow.slides = SlideShow.getSlides();

		for (i=0; i<SlideShow.slides.length; i++)
		{
			Element.setStyle(SlideShow.slides[i], {display: 'block'});
			Element.hide(SlideShow.slides[i]);
		}
		Element.show(SlideShow.currentSlide());
		Element.setStyle(SlideShow.currentSlide(), {display: 'block'});

		Element.setStyle($('slideshow'), {display: 'block'});
		SlideShow.resize(Element.getHeight(SlideShow.currentSlide()));

		new PeriodicalExecuter(SlideShow.cycle, 10) // change slide every 5 seconds
	},
	getSlides: function() {
		return $$('#slideshow .slide');
	},
	currentSlide: function() {
		return SlideShow.slides[SlideShow.slidePos];
	},
	nextSlide: function() {
		SlideShow.slidePos++;
		if(SlideShow.slidePos == SlideShow.slides.length) SlideShow.slidePos = 0;

		return SlideShow.slides[SlideShow.slidePos];
	},
	swapSlides: function() {
		SlideShow.cycle();
	},
	cycle: function() {
		new Effect.Fade(SlideShow.currentSlide(), {
			duration: 1,
			fps: 50,
			afterFinish: function() {
				nextSlide = SlideShow.nextSlide();

				Effect.Appear(nextSlide, {
					duration: 2,
					afterSetup: function() {
						SlideShow.resize(Element.getHeight(SlideShow.currentSlide()));
					}
				});
			}
		});
	},
	resize: function(newheight) {
		// Don't resize
		if (!SlideShow.resizeHolder)
		{
			return;
		}

		currentheight = Element.getHeight($('slideshow'));

		// get the new height as a percentage of the old
		percentheight = (parseInt(newheight) / parseInt(currentheight)) * 100;

		new Effect.Scale($('slideshow'), percentheight, {
			scaleX: false,
			scaleY: true,
			scaleContent: false,
			scaleFrom: 90.0
		});
	}
}

Event.observe(window,'load',SlideShow.startup);
