﻿function Pager(pageSpan, pageCount)
{
    var pages = [];
    pageSpan = Math.min(pageCount, pageSpan);

    var halfSpan = Math.floor(pageSpan / 2);
    var currPage = 0;

    function generate()
    {
        var startSpan = Math.max(1, currPage - halfSpan);
        if (startSpan + pageSpan - 1 > pageCount)
            startSpan = pageCount - pageSpan + 1;

        for (var i = 0; i < pageSpan; ++i)
            pages[i] = startSpan + i;

        pages[0] = 1;
        pages[pages.length - 1] = pageCount;
        //Punch holes
        if (pageCount > 2)
        {
            if (pages[1] != 2)
                pages[1] = null;
            if (pages[pages.length - 2] != pageCount - 1)
                pages[pages.length - 2] = null;
        }
    }

    this.setPage = function(pageNum)
    {
        currPage = pageNum;
        generate();
        return pages;
    }
}