function jumpGalleryToPage(dataObj) {
	var jumpPage = dataObj.page;
	galleryPageNumber =	(jumpPage <= galleryPageMax) ? jumpPage : galleryPageNumber;
	galleryCanvas.css({left: -(galleryPageWidth * galleryPageNumber)+ galleryPageWidth});
	if (galleryPageNumber < 10) {
		galleryPageNumber = "0"+galleryPageNumber;
	}
	var numHolder = $("#folio span").get()[0];
	var totalNumOfPages = $(numHolder).text().split(" of ")[1];
	$(numHolder).text(galleryPageNumber+" of "+totalNumOfPages); 
}

var currentCategory="";

$(document).ready(function() {

	// We need to move the carousel to the correct page on page load
	var cookieData = Get_Cookie("categoryPage");
	cookieData = (cookieData) ? cookieData : "randomString|1";
	var startGalleryPageNumber = parseInt(cookieData.split("|")[0]);
	var cookieCategory = cookieData.split("|")[1];
	currentCategory=$(".data-category-name").text();

	galleryPane = $(".carousel");
	galleryCanvas = $(".carousel ul");
	galleryItems = $(".carousel li");
	galleryImages = $(".carousel img");
	galleryFolio = $("#folio span");
	galleryPageWidth = 930;
	galleryPreload = 0 - galleryImages.length;
	$('h1, .carousel, #folio').css('opacity', 0);
	
	galleryImages
	 .slice(0, galleryImages.length)
	 .one('load', function () { galleryPreload++ })
	 .each(function () {
	  var date = new Date();
	  var imageSource = $(this).attr('src');
	  $(this).attr('src', imageSource + '?' + date.getTime());
	 });
	
	/*$("a.next").click(nextGalleryPage);
	$("a.previous").click(previousGalleryPage);
	$('a.button-link').hover(imageLinkOver, imageLinkOut);*/
	
	initialiseGallery();

	if (currentCategory == cookieCategory && startGalleryPageNumber > 1) {
		jumpGalleryToPage({page: startGalleryPageNumber});
	}

	var nextButton = $("a.next").get()[0];
	var previousButton = $("a.previous").get()[0];
	var nextButtonDisabled = true;
	var previousButtonDisabled = true;
			
	//buttons.hover(imageLinkOver, imageLinkOut);

	if (nextButton && previousButton) {
		$(nextButton).click( function() {
			if (galleryPageNumber < galleryPageMax) {
				nextGalleryPage();
				updateButtons();
			}
			return false;
		}).hover( function() {
			if (!nextButtonDisabled) {
				imageLinkOver.call(this);	
			}
		},function() {
			imageLinkOut.call(this);	
		});
	
		$(previousButton).click( function() {
			if (galleryPageNumber > 1) {
				previousGalleryPage();
				updateButtons();
			}
			return false;
		}).hover( function() {
			if (!previousButtonDisabled) {
				imageLinkOver.call(this);	
			}
		},function() {
			imageLinkOut.call(this);	
		});
		
		var updateButtons = function() {
			if (galleryPageNumber == 1) {
				$(previousButton).addClass("button-link-disabled");
				$(previousButton).removeClass("hover");
				previousButtonDisabled = true;
			}
			else {
				$(previousButton).removeClass("button-link-disabled");
				previousButtonDisabled = false;
			}
			if (galleryPageNumber == galleryPageMax) {
				$(nextButton).addClass("button-link-disabled");
				$(nextButton).removeClass("hover");
				nextButtonDisabled = true;
			}
			else {
				$(nextButton).removeClass("button-link-disabled");
				nextButtonDisabled = false;
			}
		}
	
		updateButtons();
	}
});

function initialiseGallery() {
	
	galleryPageNumber = 1;
	galleryPageMax = Math.ceil(galleryItems.length / 3);
	preloadCheck();
}

function preloadCheck() {
	
	if (galleryPreload == 0) {
	//if (true) {
		$('h1, #folio').css('display', 'block').animate({ opacity: 1 }, 600, function () {
		 $('.carousel').css('display', 'block').animate({ opacity: 1 }, 600);
		});
	} else {
		setTimeout(preloadCheck, 1000);
	}
}

function nextGalleryPage() {
	
	if (galleryPageNumber == galleryPageMax) {
		return false;
	}
	
	galleryCanvas.animate({left: -(galleryPageWidth * galleryPageNumber)}, 'slow');
	galleryPageNumber++;
  	Set_Cookie('categoryPage', galleryPageNumber.toString()+"|"+currentCategory, '/', '', '' );
	updateFolio();

	return false;
}

function previousGalleryPage() {

	if (galleryPageNumber == 1) {
		return false;
	}
	
	galleryPageNumber--;
	galleryCanvas.animate({left: -(galleryPageWidth * galleryPageNumber) + galleryPageWidth}, 'slow');
  	Set_Cookie('categoryPage', galleryPageNumber.toString()+"|"+currentCategory, '/', '', '' );
	updateFolio();

	return false;
}

function updateFolio() {
	
	galleryFolio.text(leadingZero(galleryPageNumber) + ' of ' + leadingZero(galleryPageMax));
}