window.addEvent('domready', function() {
	var slides = $$('.slide');
	var content = $$('#slide-clipper .inner-content')[0];
	var prev = $('prev-button');
	var next = $('next-button');
	var currentSlide = 0;
	var currentPos = 0;
	
	// remove the ids of the slides; they are used when javascript is disabled,
	// and can interfere with the slideshow in some browsers
	slides.setProperty('id', "");
	
	// remove the noscript class when javascript is enabled
	$('slide-clipper').removeClass('noscript');
	
	// fix IE bug
	$$('.slide .prev, .slide .next').setStyle('display', 'none');
	
	var page = 0;
	var href = window.location.href;
	
	if (href.indexOf("#page") >= 0) {
		page = href.substring(href.indexOf("#page") + 5) * 1;
		currentSlide = Math.floor(page - 1);
		
		if (currentSlide >= slides.length || currentSlide < 0) {
			currentSlide = 0;
		}
	}
	
	function updateButtons() {
		prev.setStyle('visibility', currentSlide <= 0 ? 'hidden' : 'visible');
		next.setStyle('visibility', currentSlide < slides.length - 1 ? 'visible' : 'hidden');
	}
	
	updateButtons();
	
	content.setStyle('width', slides[0].offsetWidth * slides.length + 'px');
	
	var fx = new Fx.Tween(content, {fps: 65, duration: 600});
	
	currentPos = - currentSlide * slides[0].offsetWidth;
	
	content.parentNode.scrollLeft = 0;
	
	fx.set('left', currentPos);
	
	prev.addEvent('click', function() {
		setTimeout(function() {window.location.href = href.substring(0, href.indexOf("#")) + "#page" + (currentSlide + 1 - 1)}, 100);
		
		fx.onComplete = function() {
			currentPos += slides[currentSlide].offsetWidth;
			currentSlide--;
			
			updateButtons();	
		};
		
		fx.start('left', currentPos + slides[currentSlide].offsetWidth);
		
		return false;
	});
	
	next.addEvent('click', function() { 
		setTimeout(function() {window.location.href = href.substring(0, href.indexOf("#")) + "#page" + (currentSlide + 1 + 1)}, 100);
		
		fx.onComplete = function() {
			currentPos -= slides[currentSlide].offsetWidth;
			currentSlide++;
			
			updateButtons();
		};
		
		fx.start('left', currentPos - slides[currentSlide].offsetWidth);
		
		return false;
	});
});
