function setupSlides(inset, buttons) {
    var buttons = (buttons == null) ? false : true;
    var container = $(inset).find('.slides');
    var containerWidth = container.width();
    var slideContainer = $(inset).find('.slides > ul');
    var slides = $(inset).find('.slides > ul > li');
    var slideNav = $('<ul class="slide-nav"></ul>').insertAfter(container);
    // set the widths of the elements
    slideContainer.css({ width: containerWidth * slides.length, left: 0 });
    slides.css({ width: containerWidth - parseInt(slides.css('paddingRight').replace(/px/, '')) - parseInt(slides.css('paddingLeft').replace(/px/, '')) });
    slides.css({ height: slideContainer.height() });
    if (buttons) {
        // set up buttons
        slides.each(function() {
            var title = $(this).find('h3').text();
            var newID = title.toLowerCase().replace(/ |\'|\-|\&.+?;/g, '-');
            $('<li><a href="#' + newID + '" id="button_' + newID + '">' + title + '</a></li>').appendTo(slideNav);
        });
    }
    // create arrow buttons and assign behavior
    var slideArrows = $('<li class="flippers"><a href="#" class="previous">Previous</a> <a href="#" class="next">Next</a></li>').appendTo(slideNav);
    slideArrows.find('.previous').click(function(event) {
        event.preventDefault();
        if (!(slideContainer.is(':animated') || $(this).hasClass('disabled'))) {
            var leftValue = parseInt(slideContainer.css('left').replace(/px/, ''));
            var newValue = leftValue + containerWidth;
            if (leftValue < 0 ) slideContainer.animate({ left: newValue + 'px' })
            if (newValue == 0) $(this).addClass('disabled');
            if (leftValue == -(containerWidth * (slides.length - 1))) slideArrows.find('.next').removeClass('disabled');
            if (buttons) {
                var targetButton = $(slideButtons.get(Math.abs(newValue/containerWidth)));
                slideButtons.removeClass('current');
                targetButton.addClass('current');
            }
        }
    });
    slideArrows.find('.next').click(function(event) {
        event.preventDefault();
        if (!(slideContainer.is(':animated') || $(this).hasClass('disabled'))) {
            var leftValue = parseInt(slideContainer.css('left').replace(/px/, ''));
            var newValue = leftValue - containerWidth;
            if (leftValue > -(containerWidth * (slides.length - 1))) slideContainer.animate({ left: newValue + 'px' })
            if (newValue == -containerWidth * (slides.length - 1)) $(this).addClass('disabled');
            if (leftValue == 0) slideArrows.find('.previous').removeClass('disabled');
            if (buttons) {
                var targetButton = $(slideButtons.get(Math.abs(newValue/containerWidth)));
                slideButtons.removeClass('current');
                targetButton.addClass('current');
            }
        }
    });
    if (buttons) {
        // find buttons and assign behavior
        var slideButtons = slideNav.find('li a').not('li.flippers a');
        slideButtons.click(function(event) {
            event.preventDefault();
            var index = slideButtons.index(this);
            var leftValue = parseInt(slideContainer.css('left').replace(/px/, ''));
            var newValue = -containerWidth * index;
            slideContainer.animate({ left: newValue + 'px' });
            slideButtons.removeClass('current');
            $(this).addClass('current');
            if (newValue == 0) slideArrows.find('.previous').addClass('disabled');
            if (newValue < 0) slideArrows.find('.previous').removeClass('disabled');
            if (newValue == -(containerWidth * (slides.length - 1))) slideArrows.find('.next').addClass('disabled');
            if (newValue > -(containerWidth * (slides.length - 1))) slideArrows.find('.next').removeClass('disabled');
        });
        // set up the default states
        slideButtons.filter(':first').addClass('current');
    }
    // set up the default states
    slideArrows.find('.previous').addClass('disabled');
}

