vdwCarousel = {
	doubleControls : false,
	initProductLanding : function() {
		var cl = vdwUtil.readCookie('fpfr_landing_carousel_position');
		vdwCarousel.carouselStart = cl ? Number(cl) : 1;
		if ($jq('#product-catalog-pages').length) {
			vdwCarousel.doubleControls = true;
			$jq('#product-catalog-pages').jcarousel({
				start : vdwCarousel.carouselStart,
				scroll : 1,
				initCallback: vdwCarousel.pagesInitCallback,
				itemFirstInCallback : vdwCarousel.landingSlideshowItemFirstInCallback
			});
		}
		vdwCarousel.addExternalControls();
	},
	initProductDetail : function() {
		var c = vdwUtil.readCookie('fpfr_carousel_position');
		vdwCarousel.carouselStart = c ? Number(c) : 1;
		if ($jq('#product-catalog-pages').length) {
			$jq('#product-catalog-pages').jcarousel({
				start : vdwCarousel.carouselStart,
				scroll : 1,
				initCallback: vdwCarousel.pagesInitCallback,
				itemFirstInCallback : vdwCarousel.slideshowItemFirstInCallback
			});
		}
		vdwCarousel.addExternalControls();	
	},
	pagesInitCallback : function(carousel) {
		vdwCarousel.pages = carousel;
	},
	slideshowInitCallback : function(carousel) {
		vdwCarousel.slideshow = carousel;
	},
	slideshowItemFirstInCallback : function(carousel, item, idx, state) {
		vdwUtil.createCookie('fpfr_carousel_position', idx);
		vdwCarousel.updatePagination(carousel, item, idx, state);
	},
	landingSlideshowItemFirstInCallback : function(carousel, item, idx, state) {
		vdwUtil.createCookie('fpfr_landing_carousel_position', idx);
		vdwCarousel.updatePagination(carousel, item, idx, state);
	},
	addExternalControls : function() {
		vdwCarousel.pageCount = $jq('.product-catalog-page').length;
		$extControlsHTML = $jq('<div></div>').addClass('pagination-controls');
		$extControlsHTML.append('<div class="btn-last-page"><a href="#">>></a></div>');
		$extControlsHTML.append('<div class="btn-next-page"><a href="#">></a></div>');
		$extControlsHTML.append('<div class="btn-prev-page"><a href="#"><</a></div>');
		$paginationWrapper = $jq('<div class="pagination-wrapper"><span>Page: </span></div>');
		for (var i = 1; i <= vdwCarousel.pageCount; i++) {
			var $linkHTML = $jq('<a href="#">' + i + '</a>').data('page', i).appendTo($paginationWrapper);
		}
		$paginationWrapper.find('a').eq(vdwCarousel.carouselStart - 1).addClass('current');
		$jq('<div class="page-status">Page ' + vdwCarousel.carouselStart + ' of ' +  vdwCarousel.pageCount  +  '</div>').appendTo($paginationWrapper);
		$paginationWrapper.find('a').click(function(e) {
			e.preventDefault();
			var index = $jq(this).parent('div').find('a').index(this);
			vdwCarousel.pages.scroll(index + 1);
//			vdwCarousel.updatePagination();
		});
		$extControlsHTML.find('.btn-next-page a').click(function(e) {
			e.preventDefault();
			vdwCarousel.pages.next();
		});
		$extControlsHTML.find('.btn-prev-page a').click(function(e) {
			e.preventDefault();
			vdwCarousel.pages.prev();
		});
		$extControlsHTML.find('.btn-last-page a').click(function(e) {
			e.preventDefault();
			vdwCarousel.pages.scroll(vdwCarousel.pages.options.size);
		});
		$extControlsHTML.append($paginationWrapper);
		$extControlsHTML.prependTo('.jcarousel-skin-fp-horizontal');
		$extControlsHTML.appendTo('#product-catalog #product-links, #products #product-links');
		if (vdwCarousel.doubleControls) {
			$jq('.pagination-controls').clone(true).prependTo('#product-catalog #product-links, #products #product-links');
		}
	},
	updatePagination : function(carousel, item, idx, state) {
		$jq('.pagination-controls .page-status').text('Page ' + (idx) + ' of ' +  vdwCarousel.pageCount);	
		$jq('.pagination-wrapper').each(function() {
			$jq(this).find('a').removeClass('current').end().find('a:nth-child(' + (idx + 1) + ')').addClass('current');
		});
	}
}

//$jq(document).ready(vdwCarousel.init);
