(function($) {

    $.fn.flipbook = function(url, current_page, total_pages, options) {
        settings = $.extend({
            prev: '.flipbook_prev',
            next: '.flipbook_next',
            page_var: 'page',
            data: {}
        }, options, {url: url});

        var prev_page = current_page - 1;
        var next_page = current_page + 1;
        if (next_page > total_pages) {
            next_page = 0;
        }

        return this.each(function() {
            if (prev_page) {
                settings.data[settings.page_var] = prev_page;
                flipbook_attach_link(this, settings, 'prev');
            }

            if (next_page) {
                settings.data[settings.page_var] = next_page;
                flipbook_attach_link(this, settings, 'next');
            }
        });
    };

})(jQuery);

function flipbook_attach_link(target, settings, prevnext) {
    $(target).find(settings[prevnext]).each(function() {
        $(this).data('flipbook', target);
        $(this).data('flipbook_settings', settings);
        $(this).data('flipbook_page', settings.data[settings.page_var]);

        $(this).click(function(event) {
            var target = $(event.target.parentNode).data('flipbook');
            var settings = $(event.target.parentNode).data('flipbook_settings');
            var page = $(event.target.parentNode).data('flipbook_page');
            var data = {};
            data[settings.page_var] = page;
            $.get(settings.url, data, function(data) {
                $(target).html(data);
            });
            return false;
        });
    });
}

