﻿/// Home scroller
jQuery(function ($) {
	var selIndex = 0;
	var itemWidth = null;
	// Get scroller data
	var items = $('div.home div.main_content .column:first .group .content_item').hide().eq(selIndex).show().end();

	$(window).load(function () {
		// Exit if no items
		if (!items.length) return;
		var itemsContainer = items.parent();

		// Create containers
		var scroller = $('<div/>')
			.appendTo(itemsContainer)
			.addClass('scroller unselectable');
		var scrollerPrev = $('<div class="scroller_button scroller_prev"/>').appendTo(scroller);
		var scrollerBody = $('<div class="scroller_body"/>').appendTo(scroller);
		var scrollerNext = $('<div class="scroller_button scroller_next"/>').appendTo(scroller);
		$('<div class="c"/>').appendTo(scroller);
		var scrollerItemsContainer = $('<div class="scroller_items"/>').appendTo(scrollerBody);

		// Create scroller items
		items.each(function (i, n) {
			var contentItem = $(n);
			var link = contentItem.find('h1.title a').clone();
			var span = $('<div/>').append(link);
			var item = $('<div class="scroller_item"/>').append(span).appendTo(scrollerItemsContainer);
			if (!itemWidth)
				itemWidth = item.outerWidth();
		});
		scrollerBody.width(itemWidth * 3);
		scrollerItemsContainer.append('<div class="c"/>').width(itemWidth * items.length);

		// Scroller item separator line
		for (var i = 1; i <= 2; i++) {
			$('<span class="scroll_sep"/>')
				.css('margin-left', itemWidth * i)
				.appendTo(scrollerBody);
		}

		// Handle link click
		scrollerBody.delegate('a', 'click', function (e) {
			e.preventDefault();
			var self = $(this);
			var scrItem = self.parents('.scroller_item');
			selIndex = scrItem.prevAll('.scroller_item').length;
			items.hide().eq(selIndex).show();
		});

		// Select scroller item by index
		var selectScrollItem = function (i) {
			// Is selected in visible range
			var isVisible = selIndex > i && selIndex <= (i + 2);
			if (!isVisible) {
				selIndex = i;
				items.hide().eq(selIndex).show();
			}
		};

		// Handle previous/next click
		var scrollIndex = 0;
		scrollerPrev.click(function () {
			scrollIndex = Math.max(0, scrollIndex - 1);
			var marginLeft = scrollIndex * itemWidth;
			scrollerItemsContainer
				.animate(
				{ 'margin-left': -marginLeft },
				100,
					Function.createDelegate(this, function (e) {
						selectScrollItem(scrollIndex);
					})
				);
		});
		scrollerNext.click(function () {
			scrollIndex = Math.min(items.length - 3, scrollIndex + 1);
			var marginLeft = scrollIndex * itemWidth;
			scrollerItemsContainer
				.animate(
				{ 'margin-left': -marginLeft },
				100,
					Function.createDelegate(this, function (e) {
						selectScrollItem(scrollIndex);
					})
				);
		});
	});
});
