$(document).ready(function() {
    slidingLookbook.initialize();
});

var slidingLookbook = {
	TIMER : 1750,
	FADE_TIME : 1000,
	SLIDE_TIME : 1000,
	currentPage : 0,
	currentTimeOut : "",
	urlHash : window.location.hash,
	anchorName : "page",
	navExists : false,
    initialize : function() {
        this.registerEventHandlers();
		this.initializePage();
    },

	registerEventHandlers : function() {
		$(".alternativeNavOptionImage").click(function() {
			var thisPage = $(this).attr("value");
			if(thisPage <= $(".slidingContent").length){
				if(thisPage != slidingLookbook.currentPage) {
					slidingLookbook.currentPage = thisPage;
					slidingLookbook.slideElements();
					window.location.hash = (slidingLookbook.anchorName + slidingLookbook.currentPage);
				}
			}
		});
		if($(".sliderNavOptionImage").length){
			slidingLookbook.navExists = true;
			$(".sliderNavOptionImage").click(function() {
				if(!$(this).hasClass("selectedSliderNavOption")) {
					slidingLookbook.currentPage = slidingLookbook.getOrdinalIndex($(".sliderNavOptionImage"), $(this));
					slidingLookbook.slideElements();
				}
			});
			$(".sliderNavOptionImage").hover(
				function(){
					slidingLookbook.swapDotImages($(this), $(".sliderNavOptionImageOver")[slidingLookbook.getOrdinalIndex($(".sliderNavOptionImage"), $(this))]);
				},
				function(){
					slidingLookbook.swapDotImages($(this), $(".sliderNavOptionImageOver")[slidingLookbook.getOrdinalIndex($(".sliderNavOptionImage"), $(this))]);
			});
		}
		$("#nextpage").click(function(){
			slidingLookbook.currentPage++;
			slidingLookbook.slideElements();
		}); 
		$("#rightSliderArrow").click(function() {
			slidingLookbook.currentPage++;
			slidingLookbook.slideElements();
		});
		$("#leftSliderArrow").click(function() {
			slidingLookbook.currentPage--;
			slidingLookbook.slideElements();
		});
	},
	
	getOrdinalIndex : function(groupOfElements, specificElement) {
		var thisIndex = groupOfElements.index(specificElement);
		return thisIndex;
	},
	
	initializePage : function() {
		var pageToShow = slidingLookbook.urlHash.replace(/[^0-9]+/g,"");	
		if(pageToShow > 0 && pageToShow <= $(".sliderNavOptionImage").size()) {
			slidingLookbook.currentPage = pageToShow;
			if(!$(".listNumber"[slidingLookbook.currentPage]).hasClass("selectedSliderNavOption")) {
				slidingLookbook.slideElements();
			}
		}
		slidingLookbook.initializeFadingImages($(".slidingContent"));

	},

	slideElements : function() {
		var allSlidingContent = $(".slidingContent");
		if(slidingLookbook.currentPage < 0){
			slidingLookbook.currentPage = (allSlidingContent.length-1);
		}
		if(slidingLookbook.currentPage > (allSlidingContent.length-1)){
			slidingLookbook.currentPage = 0;
		}
		clearTimeout(slidingLookbook.currentTimeOut);
		var slideToShow = $(allSlidingContent)[slidingLookbook.currentPage];
		var slidePosition = $(slideToShow).position();
		if(slidingLookbook.navExists){
			var numberClicked = $(".sliderNavOptionImage")[slidingLookbook.currentPage];
			var numberPosition = $(numberClicked).position();
			if(!$(numberClicked).hasClass("selectedSliderNavOption")) {
				$("#sliderContainer").animate({left : "-" + slidePosition.left + "px"}, slidingLookbook.SLIDE_TIME);
				$("#chosenSliderNavImage").animate({left : numberPosition.left + (($("#chosenSliderNavImage").width())/2) + "px"}, slidingLookbook.SLIDE_TIME, function() {
					slidingLookbook.initializeFadingImages(allSlidingContent);
				});
				window.location.hash = (slidingLookbook.anchorName + slidingLookbook.currentPage);
				$(".selectedSliderNavOption").removeClass("selectedSliderNavOption");
				$(numberClicked).addClass("selectedSliderNavOption");
			}
			
		}
		else{
			$("#sliderContainer").animate({left : "-" + slidePosition.left + "px"}, slidingLookbook.SLIDE_TIME, function() {
				slidingLookbook.initializeFadingImages(allSlidingContent);
			});
			window.location.hash = (slidingLookbook.anchorName + slidingLookbook.currentPage);
		}
		
	},
	
	initializeFadingImages : function(allSlidingContent) {
		var thisSlidingContent = $(allSlidingContent)[slidingLookbook.currentPage];
		var thisFadingImage = $(".fadingOverlay", $(thisSlidingContent));
		allFadingImages = $(".fadingOverlay");
		allFadingImages.each(function(index){
	    	if($(this).is(":hidden")){
	   			$(this).show(1);
	   		}
	 	});
		if(thisFadingImage.length){
			slidingLookbook.currentTimeOut = setTimeout(function() {
				$(thisFadingImage).fadeOut(slidingLookbook.FADE_TIME); 
			}, slidingLookbook.TIMER);
		}
	},
	
	swapDotImages : function(dotImgOne, dotImgTwo) {
		var origDotSrc = dotImgOne.attr("src");
		var swapDotSrc = $(dotImgTwo).text();
		dotImgOne.attr("src", swapDotSrc);
		$(dotImgTwo).text(origDotSrc);
	}
	
}

