/**
 * @author denodell
 */

JK.Gallery = new function() {
	$(function initialise() {
		$("#gallery, #gallery .wrap").css('overflow', 'hidden').height($("#gallery").height() - 20);
		var li = $($("#gallery ul.images li").get(0));
		var widthOfOne = li.width() + parseInt(li.css('margin-right'));
		$("#thumbs ul.images a").live('click', function(e) {
			e.preventDefault();
			$("#thumbs ul.images li").removeClass('on');
			var closestLi = $(this).closest('li');
			closestLi.addClass('on');
			var imageNum = parseInt(closestLi.attr('class').replace(/\slast|image-|\son/g, ''));
			$("#gallery ul.images").animate({
				marginLeft: (-(imageNum - 1) * widthOfOne) + 'px'
			}, 250)
		});
		$($("#thumbs ul.images li").get(0)).addClass('on');
		
		
		var thumbWrap = $("#thumbs .wrap");
		thumbWrap.css('overflow', 'hidden').height(thumbWrap.height() - 20);
		var lis = $('#thumbs ul.images li');
		var totalThumbWidth = $(lis.get(0)).width() * lis.size();
		var onePageWidth = thumbWrap.width();
		var pageCount = Math.ceil(totalThumbWidth / onePageWidth);
		var currentPage = 1;		
		var previous = $("<li>").addClass('previous').hide().append($("<a>").attr("href", "#").text('Previous').click(function(e) {
			e.preventDefault();
			jumpToPage(currentPage - 1);
		}));
		var next = $("<li>").addClass('next').hide().append($("<a>").attr("href", "#").text('Next').click(function(e) {
			e.preventDefault();
			jumpToPage(currentPage + 1);
		}));
		if (pageCount > 1) {
			next.show();
		}
		$("<ul>").addClass("nav").append(previous).append(next).appendTo($("#thumbs"));
		var jumpToPage = function(page) {
			if (page != currentPage) {
				if (page < currentPage) {
					next.show();
				}
				if (page > currentPage) {
					previous.show();
				}
				currentPage = page;
				thumbWrap.find('ul.images').animate({
					marginLeft: -((currentPage - 1) * onePageWidth) + 'px'
				}, 250);
				if (currentPage == pageCount) {
					next.hide();
				}
				if (currentPage == 1) {
					previous.hide();
				}
			}
		}
		
		var mainPrevious = $("<li>").addClass('previous').append($("<a>").attr("href", "#").text('Previous').click(function(e) {
			e.preventDefault();
			if ($("#thumbs .images li.on").prev().size() == 1) {
				$("#thumbs .images li.on").prev().find('a').click();
			} else {
				$("#thumbs .images li:last").find('a').click();
			}
			$("#thumbs .images li").each(function(index) {
				if ($(this).hasClass("on")) {
					var newPage = Math.ceil($(this).width() * (index+1) / onePageWidth);
					jumpToPage(newPage);
				}
			});
		}));
		var mainNext = $("<li>").addClass('next').append($("<a>").attr("href", "#").text('Next').click(function(e) {
			e.preventDefault();
			if ($("#thumbs .images li.on").next().size() == 1) {
				$("#thumbs .images li.on").next().find('a').click();
			} else {
				$("#thumbs .images li:first").find('a').click();
			}
			$("#thumbs .images li").each(function(index) {
				if ($(this).hasClass("on")) {
					var newPage = Math.ceil($(this).width() * (index+1) / onePageWidth);
					jumpToPage(newPage);
				}
			});
		}));
		$("<ul>").addClass("nav").append(mainPrevious).append(mainNext).appendTo($("#gallery"));
		$("#gallery").mouseenter(function() {
			$(this).find('ul.nav a').animate({
				'opacity': 1
			}, 250);
		}).mouseleave(function() {
			$(this).find('ul.nav a').animate({
				'opacity': 0.2
			}, 250);
		});
		$("#gallery ul.nav a").css('opacity', 0.2);
	});
}();