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

	var performSlideAction = function(slideNumber) {
		if (slideNumber < 1 || slideNumber > slides.length)
			return;
		
		if (slideNumber > activeSlideNumber) {
			$("#slide_" + activeSlideNumber).animate({ left: -slides.width() });
			$("#slide_" + slideNumber).css({ left: slides.width() }).animate({ left: 0 });
		} else if (slideNumber < activeSlideNumber) {
			$("#slide_" + activeSlideNumber).animate({ left: slides.width() });
			$("#slide_" + slideNumber).css({ left: -slides.width() }).animate({ left: 0 });
		}
		
		$(".dot").removeClass("active");
		$("#dot_" + 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(".dot").click(function(event) {
		event.preventDefault();

		var slideNumber = parseInt(event.currentTarget.id.match(/_(\d+)$/)[1]);
		performSlideAction(slideNumber);
	});
	
	jQuery(document).keydown(function(event) {
		switch (event.keyCode) {
			case 39:
				performSlideAction(activeSlideNumber + 1);
				break;
				
			case 37:
				performSlideAction(activeSlideNumber - 1);
				break;
		}
	});
});
