jQuery(document).ready(function() {
	var slides = jQuery(".slide");
	var kIntervalTime = 10000;
	var activeSlideNumber = 1;
	
	slides.slice(1, slides.length).css({ left: slides.width() });
	jQuery(".link").css({ outline: "none" });

	var performSlideAction = function(slideNumber) {
		if (slideNumber < 1 || slideNumber > slides.length)
			return;
		
		if (slideNumber > activeSlideNumber) {
			jQuery("#slide_" + activeSlideNumber).animate({ left: -slides.width() });
			jQuery("#slide_" + slideNumber).css({ left: slides.width() }).animate({ left: 0 });
		} else if (slideNumber < activeSlideNumber) {
			jQuery("#slide_" + activeSlideNumber).animate({ left: slides.width() });
			jQuery("#slide_" + slideNumber).css({ left: -slides.width() }).animate({ left: 0 });
		}
		
		jQuery(".link").removeClass("active");
		jQuery("#nav-slide" + slideNumber).addClass("active");
		
		activeSlideNumber = slideNumber;
	}
	
	var intervalFunction = function() {
		var slideNumber = activeSlideNumber;
		var offset = arguments[0] || 1;
		
		slideNumber += offset;
		if (slideNumber < 1) {
			slideNumber = slides.length;
		} else if (slideNumber > slides.length) {
			slideNumber = 1;
		}
		
		performSlideAction(slideNumber);
	}
	
	var interval = window.setInterval(intervalFunction, kIntervalTime);
	
	var rotateAndResetInterval = function(offset) {
		intervalFunction(offset);
		
		window.clearInterval(interval);
		interval = window.setInterval(intervalFunction, kIntervalTime);
	}	
			
	jQuery(".link").click(function(event) {
		event.preventDefault();
		
		var slideNumber = parseInt(event.currentTarget.id.match(/slide(\d+)$/)[1]);
		performSlideAction(slideNumber);
	});

	jQuery(document).keydown(function(event) {
		switch (event.keyCode) {
			case 39:
				performSlideAction(activeSlideNumber + 1);
				break;
				
			case 37:
				performSlideAction(activeSlideNumber - 1);
				break;
		}
	});
});
