/*global $ */

/*
    Configures and enables book carousels.
    
    Requires jquery, jquery.carousel.js  
 */

$(document).ready(function () {

    var slidesToMoveAtOnce = 4,
        categories, category, 
        karousel, stage, slides,
        i, u;
    
    categories = $(".category");
    
    for (i = 0, u = categories.length; i < u; i += 1) {
        
        // Reference the current category
        category = $(categories[i]);
        
        // Build the carousel
        karousel = category.find(".carousel");
        stage = category.find(".stage");
        slides = stage.find(".book-thumb");
        
        karousel = $(karousel);
        stage = $(stage);
        
        karousel.carousel({
            stage: stage,
            slides: slides,
            slidesPadEnd: 0,
            wrap: false
        });
                
        
        // Initially hide the previous button.
        karousel.find(".button-prev a").hide();
    }

    $(".category .carousel").change(function (event) {
        
        var button, carousel, rate, slideCount, slideIndex, first, last;
        
        carousel = $(this);
        rate = 500;
        
        slideCount = carousel.carousel("slideCount");
        slideIndex = carousel.carousel("getIndex");

        first = slideIndex === 0;
        last = slideIndex + slidesToMoveAtOnce >= slideCount;
        
        // Update the Previous Button
        button = $(carousel.find(".button-prev a"));
        
        if (first && button.is(":visible")) {
            button.fadeOut(rate);
        }
        else if (!first && !button.is(":visible")) {
            button.fadeIn(rate);
        }
        
        // Update the Next Button
        button = $(carousel.find(".button-next a"));
        
        if (last && button.is(":visible")) {
            button.fadeOut(rate);
        }
        else if (!last && !button.is(":visible")) {
            button.fadeIn(rate);
        }
        
    });
    	
    $(".category .button-next a").click(function (event) {
        var carousel;
        carousel = $(this).parents(".carousel");
        $(carousel).carousel("advance", slidesToMoveAtOnce);
    });
    
    $(".category .button-prev a").click(function (event) {
        var carousel;
        carousel = $(this).parents(".carousel");
        $(carousel).carousel("advance", -slidesToMoveAtOnce);
    });

});

/*jslint white: true, onevar: true, browser: true, undef: true, nomen: true,
  eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, 
  immed: true */ 
