(function($){

	$.fn.assistlyCarousel = function(options){

		var defaults = {
			delay: 15000,
			slideDuration: 500,
			slideEasing: "swing"
		};

		options = $.extend(defaults, options);

		this.each(function(){

			var sections = $("#carousel").children(".section");
			var animating = false;
			var step = 0;
			var nextStep = 0;
			var prevStep = 0;
			var timeout = setTimeout(slideNext, defaults.delay);

			//Bind controls
			$("#carousel .next").click(function(){
				if(!animating) slideNext();
			});

			$("#carousel .prev").click(function(){
				if(!animating) slideBack();
			});

			//Functions
			function slideNext(){

				animating = true;
				nextStep = (step === (sections.length - 1))? 0 : step + 1;

				$(sections[step]).animate({
					"margin-left" : "-" + $(window).width() + "px"
				}, defaults.slideDuration, defaults.slideEasing, function(){
					$(this).css({
						"margin-left" : $(window).width() + "px",
						"display" : "none"
					});
					animating = false;
				});

				$(sections[nextStep]).css({
					"display" : "block",
					"margin-left" : $(window).width() + "px"
				});

				$(sections[nextStep]).animate({
					"margin-left" : "0px"
				}, defaults.slideDuration, defaults.slideEasing);

				step = (step === (sections.length - 1))? 0 : step + 1;
				clearTimeout(timeout);
				timeout = setTimeout(slideNext, defaults.delay);

			}
			
			function slideBack(){

				clearTimeout(timeout);
				animating = true;
				prevStep = (step === 0)? (sections.length - 1) : step - 1;

				$(sections[prevStep]).css({
					"display" : "block",
					"margin-left" : "-" + $(window).width() + "px"
				});

				$(sections[prevStep]).animate({
					"margin-left" : "0px"
				}, defaults.slideDuration, defaults.slideEasing, function(){
					animating = false;
				});

				$(sections[step]).animate({
					"margin-left" : $(window).width() + "px"
				}, defaults.slideDuration, defaults.slideEasing);

				step = (step - 1 < 0)? sections.length - 1 : step-1;
				timeout = setTimeout(slideNext, defaults.delay);

			}

			(function(){
				if($.browser.msie && $.browser.version < 7){
					clearTimeout(timeout);
					$("#carousel .next").hide();
					$("#carousel .prev").hide();
					$("#banner .light").css({
						"background-image" : "none"
					});
					$("#banner .scissors").css({
						"bottom" : "-16px"
					});
				}
			})();
			
		});

	};

})(jQuery);

//Instantiate plugin
$(document).ready(function() {
	$(document).assistlyCarousel();
});
