(function() {
    
    setupSlider = function() {
        bdSliderTargetIdx = 0;
        bdSliderCount = $("#bdSliderButtons").children(".bdSliderButton").length;
        updateButtons();
        updateImages();
        
        bdSliderSkipAnimate = false;
        setInterval(nextImage, 3500);
    };
    
    function nextImage() {
        if (bdSliderSkipAnimate) {
            bdSliderSkipAnimate = false;
            return;
        }
        
        bdSliderTargetIdx = (bdSliderTargetIdx + 1) % bdSliderCount;
        updateButtons();
        updateImages() 
    }
    
    function onButtonClick(event) {
        bdSliderSkipAnimate = true;
        bdSliderTargetIdx = $(this).index();
        updateButtons();
        updateImages();
    };
    
    function updateButtons() {
        $("#bdSliderButtons").children(".bdSliderButton").click(onButtonClick);
        $("#bdSliderButtons").children(".bdSliderButton").removeClass("bdSliderButtonSelected");
        
        var $button = $("#bdSliderButtons").children(".bdSliderButton").eq(bdSliderTargetIdx);
        $button.unbind("click");
        $button.addClass("bdSliderButtonSelected");
    };

    function updateImages() {
        var $activeImage = $("#bdSliderImages").find(".bdSliderActiveImage");
        
        if ($activeImage.index() != bdSliderTargetIdx) {
            $activeImage.removeClass("bdSliderActiveImage");
            
            $activeImage.fadeOut(
                function() {
                    var $newImage = $("#bdSliderImages").children("img").eq(bdSliderTargetIdx);
                    $newImage.addClass("bdSliderActiveImage");
                    $newImage.fadeIn();
                });
        }
    }
    
})(jQuery);


