(function($){
	$.fn.carousel = function(options) {
		options = $.extend({
			timeout: 5000, 
			animSpeed: 500, 
			easing: "linear", 
			controls: false
		}, options || {});

		return this.each(function() {
			var t = $(this);
			var amount = t.find("li").length;
			
			t.addClass("carousel");
			t.find("li").addClass("slide").hide();
			
			t.find(".slide").each(function(e) {
				$(this).attr("data-number",(e + 1));
			});
			
			t.find("li:first-child").addClass("current").show();
			
			if (options.controls == true) {
				var paging = $("<div class='carousel-paging'/>");
				t.append(paging);
				
				t.find(".slide").each(function(e) {
					paging.append("<a href='#' data-paging-number='" + (e + 1) + "'>" + "Inlägg " + (e + 1) + "</a>");
				});
				
				paging.find("a:first-child").addClass("sel");
			}
			
			var next = 2;
			
			var changeSlide = setInterval(function() {
				var current = t.find(".current");
				
				if (current.attr("data-number") == amount) {
					next = 1;
				}
				
				current.fadeOut(options.animSpeed, function() {
					$("[data-number='" + next + "']").fadeIn(options.animSpeed, function() {
						current.removeClass("current");
						$(this).addClass("current");
					});
					if (paging) {
						setTimeout(function() {
							paging.find("a").removeClass("sel");
							paging.find("a:eq(" + (next - 1) + ")").addClass("sel");
							next++;
						}, 150);
					}
				});
			}, options.timeout);
			
			if (options.controls == true) {
				paging.find("a").click(function(e) {
					e.preventDefault();
					clearInterval(changeSlide);
					
					var current = t.find(".current");
					var amount = t.find(".slide").length;
					
					if ((current.attr("data-number") == amount) || (current.attr("data-number") > amount)) {
						next = 1;
					}
	
					var t2 = $(this);
					var t2num = parseInt(t2.attr("data-paging-number"));
					
					paging.find("a").removeClass("sel");
					current.fadeOut(options.animSpeed/2, function() {
						t.find("li[data-number='" + t2num + "']").fadeIn(options.animSpeed/2).addClass("current");
						t2.addClass("sel");
						next = (t2num + 1);
					}).removeClass("current");
				});
			}
		});
	}
})(jQuery);
