/**
 * jQuery plugin for FMA's slidey dot-paginated panes used for discography image sets and such
 */
jQuery.fn.slidepane = function(options) {
    
    var options = jQuery.extend({
        'wrapper_expr': '.album-row-wrap', // Wrapper expression
        'shifter_expr': '.album-row', // Shifter expression, passed to find() on element
        'item_expr': '.album', // Item expression, passed to find() on element
        'paginate_expr': '.imgcircles', // Pagination wrapper expression, passed to find() on wrapper element
        'items_per_pane': 4 // Amount of items shown per 'pane'
    }, options);
    
    return this.each(function(i, item) {
        
        var iTotalWidth = 0;
        var iCropWidth = 0;
        var elWrapper = jQuery(options.wrapper_expr);
        
        if (elWrapper) {
            
            var elShifter = jQuery(item).find(options.shifter_expr);
            var elPaginate = jQuery(item).find(options.paginate_expr);
            var elItems = jQuery(item).find(options.item_expr);
            
            // Find widths

            elItems.each(function(j, el) {

                var iWidth = parseInt(jQuery(el).css('width'), 10) + parseInt(jQuery(el).css('margin-right'), 10);
                
                if (j < options.items_per_pane) {
                    iCropWidth += iWidth;
                }
                
                iTotalWidth += iWidth;

            });

            elShifter.width(iTotalWidth);
            
            // Select page function
            
            function selectPage(page) {
                jQuery(item).find('.imgcircle-sel').removeClass('imgcircle-sel');
                jQuery(item).find(options.paginate_expr + ' #imgcircle-' + page).addClass('imgcircle-sel');

                var offset = iCropWidth * (page - 1) * -1;
                elShifter.animate({'left': offset + 'px'}, "normal", "swing");
            }
            
            // Add pagination buttons and click event

            if(elItems.length > options.items_per_pane) {
                var pages = Math.ceil(elItems.length / options.items_per_pane);
                for(i = 1; i <= pages; i++) {
                    elPaginate.append(
                        jQuery('<a />').attr('id', 'imgcircle-'+i).addClass('imgcircle').click(function(){
                            var page = jQuery(this).attr('id').split('-', 2)[1];
                            selectPage(page);
                        })
                    );
                }
                selectPage(1);
            }

            elWrapper.css('display','block');
            
        }
        
    });
    
}
