$(document).ready(function()
{
	$(".sidebar-holder .cmw_preview").each(function(index)
	{
		$(this).trunc(170 - ($(this).offset().top - $(this).parent().find("h3").offset().top));
	});
	
	var carousel = $(".carousel");
	
	Carousel.init(3000);
	
	carousel.data("onChange", function () 
	{
		var articleID = carousel.data("currentItem").attr("articleID");
		var activeLink = $(".featured .pagination a.page[articleID='" + articleID + "']");
		$(".featured .pagination .current").animate({ left:activeLink.position().left - 2 }, 650);
	});
	
	$(".featured .pagination a.page").mousedown(function () 
	{
		Carousel.moveDirectlyTo($(".carousel"), $(this).attr("articleID"));
	});
	
	$('.carousel').hide().show();
});

var Carousel = 
{
	init:function(interval)
	{
		$(".carousel").each(function(index)
		{
			var carousel = $(this);
			var columnWidth = carousel.children(".item").width() + 15;
			carousel.css("position", "relative");
			carousel.css("visibility", "visible");
			carousel.data("position", 0);
			
			Carousel.showInfo(carousel);
			
			Carousel.resetPosition(carousel);
			Carousel.resetSize(carousel);
			
			if ($(carousel).children(".item").length > 1)
			{
				carousel.data("interval", interval);
				Carousel.setupNextAutoScroll(carousel);
			}
			
			setInterval(function() { Carousel.resetSize(carousel); }, 1000);
		});
	},
	
	resetSize:function(carousel)
	{
		$(carousel).children(".item").each(function(index)
		{
			if ($(this).height() > carousel.height())
			{
				carousel.height($(this).height());	
			}
		});
	},
	
	resetPosition:function(carousel)
	{
		var position = carousel.data("position");
		var columnWidth = $(carousel).children(".item").width() + 15;
		var items = $(carousel).children(".item");
		var itemCount = items.length;
		
		$(items).each(function(index)
		{
			$(this).css("position", "absolute");
			$(this).css("left", columnWidth * (index - position));
			$(this).css("top", 0);
			$(this).children(".data").hide();
		});
	},
	
	moveDirectlyTo:function(carousel, articleID)
	{
		var columnWidth = $(carousel).children(".item").width() + 15;
		
		var intervalID = carousel.data("intervalID");
		clearInterval(intervalID);
				
		$(carousel).children(".item").stop(true, true);
		
		Carousel.resetPosition(carousel);
		
		// Restart interval
		var position = $(carousel).children(".item[articleID='" + articleID + "']").index();
		carousel.data("position", position);
		if (carousel.children(".item").length > 1)
		{
			Carousel.setupNextAutoScroll(carousel);
		}
		
		var currentItem = carousel.children(".item:eq(" + position + ")");
		carousel.data("currentItem", currentItem);
		
		var callback = carousel.data("onChange");
		if (callback != null) callback();
		
		$(carousel).children(".item").each(function(index) 
		{
			$(this).animate( { left:columnWidth * (index - position) }, 650, 'swing', function()
			{
				Carousel.showInfo(carousel);
			});
		});
	},
	
	setupNextAutoScroll:function(carousel)
	{
		clearTimeout(carousel.data("eventHandle"));
		carousel.data("eventHandle", setTimeout(function() { Carousel.autoScroll(carousel); }, carousel.data("interval")));
	},
	
	autoScroll:function(carousel)
	{
		var callback = function()
		{
			Carousel.setupNextAutoScroll(carousel);
		};
		
		Carousel.moveRight(carousel, callback);
	},
	
	moveRight:function(carousel, callback)
	{	
		var columnWidth = carousel.children(".item").width() + 15;
		var position = carousel.data("position");
		var items = $(carousel).children(".item");
		var itemCount = items.length;
		
		$(".sidebar-blogger-footer-holder>div").fadeOut();
		
		if (itemCount < 2) return;
		
		Carousel.resetPosition(carousel);
		
		if (position == itemCount - 1)
		{
			$(carousel).children(".item:eq(0)").css("left", columnWidth);
			position = 0;
		}
		else
		{
			position ++;
		}
		
		carousel.data("position", position);
		
		var currentItem = carousel.children(".item:eq(" + position + ")");
		carousel.data("currentItem", currentItem);
		
		var cb = carousel.data("onChange");
		if (cb != null) cb();
		
		$(carousel).children(".item").animate({ left:"-=" + columnWidth }, 650, 'swing', function()
		{	
			if (callback) callback();
		
			Carousel.showInfo(carousel);
		});
	},
	
	showInfo:function(carousel)
	{
		var position = carousel.data("position");
		
		var html = $(carousel).find(".item:eq(" + position + ") .data").html();
		$(".sidebar-blogger-footer-holder").html(html);
		$(".sidebar-blogger-footer-holder>div").hide().fadeIn();
	}
};
