(function (e, t, undefined) {
    function a(t) {
        var a = e(t.table), i = a.data();
        this.pageNavigation = i.pageNavigation || t.options.pageNavigation, this.pageSize = i.pageSize || t.options.pageSize, this.firstText = i.firstText || t.options.firstText, this.previousText = i.previousText || t.options.previousText, this.nextText = i.nextText || t.options.nextText, this.lastText = i.lastText || t.options.lastText, this.limitNavigation = parseInt(i.limitNavigation || t.options.limitNavigation || o.limitNavigation, 10), this.limitPreviousText = i.limitPreviousText || t.options.limitPreviousText, this.limitNextText = i.limitNextText || t.options.limitNextText, this.limit = this.limitNavigation > 0, this.currentPage = i.currentPage || 0, this.pages = [], this.control = !1
    }

    function i() {
        var t = this;
        t.name = "Footable Paginate", t.init = function (a) {
            if (a.options.paginate === !0) {
                if (e(a.table).data("page") === !1)return;
                t.footable = a, e(a.table).unbind(".paging").bind({
                    "footable_initialized.paging footable_row_removed.paging footable_redrawn.paging footable_sorted.paging footable_filtered.paging": function () {
                        t.setupPaging()
                    }
                }).data("footable-paging", t)
            }
        }, t.setupPaging = function () {
            var i = t.footable, o = e(i.table).find("> tbody");
            i.pageInfo = new a(i), t.createPages(i, o), t.createNavigation(i, o), t.fillPage(i, o, i.pageInfo.currentPage)
        }, t.createPages = function (t, a) {
            var i = 1, o = t.pageInfo, n = i * o.pageSize, r = [], l = [];
            o.pages = [];
            var d = a.find("> tr:not(.footable-filtered,.footable-row-detail)");
            d.each(function (e, t) {
                r.push(t), e === n - 1 ? (o.pages.push(r), i++, n = i * o.pageSize, r = []) : e >= d.length - d.length % o.pageSize && l.push(t)
            }), l.length > 0 && o.pages.push(l), o.currentPage >= o.pages.length && (o.currentPage = o.pages.length - 1), 0 > o.currentPage && (o.currentPage = 0), 1 === o.pages.length ? e(t.table).addClass("no-paging") : e(t.table).removeClass("no-paging")
        }, t.createNavigation = function (a) {
            var i = e(a.table).find(a.pageInfo.pageNavigation);
            if (0 === i.length) {
                if (i = e(a.pageInfo.pageNavigation), i.parents("table:first").length > 0 && i.parents("table:first") !== e(a.table))return;
                i.length > 1 && a.options.debug === !0 && console.error("More than one pagination control was found!")
            }
            if (0 !== i.length) {
                i.is("ul") || (0 === i.find("ul:first").length && i.append("<ul />"), i = i.find("ul")), i.find("li").remove();
                var o = a.pageInfo;
                o.control = i, o.pages.length > 0 && (i.append('<li class="footable-page-arrow"><a data-page="first" href="#first">' + a.pageInfo.firstText + "</a>"), i.append('<li class="footable-page-arrow"><a data-page="prev" href="#prev">' + a.pageInfo.previousText + "</a></li>"), o.limit && i.append('<li class="footable-page-arrow"><a data-page="limit-prev" href="#limit-prev">' + a.pageInfo.limitPreviousText + "</a></li>"), o.limit || e.each(o.pages, function (e, t) {
                    t.length > 0 && i.append('<li class="footable-page"><a data-page="' + e + '" href="#">' + (e + 1) + "</a></li>")
                }), o.limit && (i.append('<li class="footable-page-arrow"><a data-page="limit-next" href="#limit-next">' + a.pageInfo.limitNextText + "</a></li>"), t.createLimited(i, o, 0)), i.append('<li class="footable-page-arrow"><a data-page="next" href="#next">' + a.pageInfo.nextText + "</a></li>"), i.append('<li class="footable-page-arrow"><a data-page="last" href="#last">' + a.pageInfo.lastText + "</a></li>")), i.off("click", "a[data-page]").on("click", "a[data-page]", function (n) {
                    n.preventDefault();
                    var r = e(this).data("page"), l = o.currentPage;
                    if ("first" === r)l = 0; else if ("prev" === r)l > 0 && l--; else if ("next" === r)o.pages.length - 1 > l && l++; else if ("last" === r)l = o.pages.length - 1; else if ("limit-prev" === r) {
                        l = -1;
                        var d = i.find(".footable-page:first a").data("page");
                        t.createLimited(i, o, d - o.limitNavigation), t.setPagingClasses(i, o.currentPage, o.pages.length)
                    } else if ("limit-next" === r) {
                        l = -1;
                        var s = i.find(".footable-page:last a").data("page");
                        t.createLimited(i, o, s + 1), t.setPagingClasses(i, o.currentPage, o.pages.length)
                    } else l = r;
                    if (l >= 0) {
                        if (o.limit && o.currentPage != l) {
                            for (var f = l; 0 !== f % o.limitNavigation;)f -= 1;
                            t.createLimited(i, o, f)
                        }
                        t.paginate(a, l)
                    }
                }), t.setPagingClasses(i, o.currentPage, o.pages.length)
            }
        }, t.createLimited = function (e, t, a) {
            a = a || 0, e.find("li.footable-page").remove();
            var i, o, n = e.find('li.footable-page-arrow > a[data-page="limit-prev"]').parent(), r = e.find('li.footable-page-arrow > a[data-page="limit-next"]').parent();
            for (i = t.pages.length - 1; i >= 0; i--)o = t.pages[i], i >= a && a + t.limitNavigation > i && o.length > 0 && n.after('<li class="footable-page"><a data-page="' + i + '" href="#">' + (i + 1) + "</a></li>");
            0 === a ? n.hide() : n.show(), a + t.limitNavigation >= t.pages.length ? r.hide() : r.show()
        }, t.paginate = function (a, i) {
            var o = a.pageInfo;
            if (o.currentPage !== i) {
                var n = e(a.table).find("> tbody"), r = a.raise("footable_paging", {page: i, size: o.pageSize});
                if (r && r.result === !1)return;
                t.fillPage(a, n, i), o.control.find("li").removeClass("active disabled"), t.setPagingClasses(o.control, o.currentPage, o.pages.length)
            }
        }, t.setPagingClasses = function (e, t, a) {
            e.find("li.footable-page > a[data-page=" + t + "]").parent().addClass("active"), t >= a - 1 && (e.find('li.footable-page-arrow > a[data-page="next"]').parent().addClass("disabled"), e.find('li.footable-page-arrow > a[data-page="last"]').parent().addClass("disabled")), 1 > t && (e.find('li.footable-page-arrow > a[data-page="first"]').parent().addClass("disabled"), e.find('li.footable-page-arrow > a[data-page="prev"]').parent().addClass("disabled"))
        }, t.fillPage = function (a, i, o) {
            a.pageInfo.currentPage = o, e(a.table).data("currentPage", o), i.find("> tr").hide(), e(a.pageInfo.pages[o]).each(function () {
                t.showRow(this, a)
            }), a.raise("footable_page_filled")
        }, t.showRow = function (t, a) {
            var i = e(t), o = i.next(), n = e(a.table);
            n.hasClass("breakpoint") && i.hasClass("footable-detail-show") && o.hasClass("footable-row-detail") ? (i.add(o).show(), a.createOrUpdateDetailRow(t)) : i.show()
        }
    }

    if (t.footable === undefined || null === t.footable)throw Error("Please check and make sure footable.js is included in the page and is loaded prior to this script.");
    var o = {
        paginate: !0,
        pageSize: 10,
        pageNavigation: ".pagination",
        firstText: "&laquo;",
        previousText: "&lsaquo;",
        nextText: "&rsaquo;",
        lastText: "&raquo;",
        limitNavigation: 0,
        limitPreviousText: "...",
        limitNextText: "..."
    };
    t.footable.plugins.register(i, o)
})(jQuery, window);