﻿var _pagingSize = new Array();
var _pagingCurrent = new Array();
var _pagingTotal = new Array();
var _pagingCallBacks = new Array();

function pagingCreate(prefix, pageSize, onchange) {
    var i = 0;

    while ($(prefix + '_' + i)) {
        i++;
    };

    _pagingCallBacks[prefix] = onchange;
    _pagingSize[prefix] = pageSize;
    _pagingTotal[prefix] = Math.ceil(i / _pagingSize[prefix]);

    if (_pagingTotal[prefix] > 1) {
        var s = '';

        if (_pagingCurrent[prefix] > 0) {
            s += '<a href="javascript:pagingPrevious(\'' + prefix + '\');">';
            s += '&lt; Previous';
            s += '</a>';
        } else {
        s += '<span class="disabled">&lt; Previous</span>';
        };

        var min = _pagingCurrent[prefix] - 2;        
        var max = _pagingCurrent[prefix] + 2;

        if (min < 0) {
            min = 0;
            max = 4;            
        };
        
        if (max >= _pagingTotal[prefix]) {
            max = _pagingTotal[prefix];
            min = max - 4;
            if (min < 0) {
                min = 0;
                max = _pagingTotal[prefix] - 1;
            };            
        };
        
        for (var j = min; j <= max; j++) {
            if (j == _pagingCurrent[prefix]) {
                s += '<span class="disabled">';
                s += j + 1;
                s += '</span>';
            } else {
                s += '<a href="javascript: pagingShow(\'' + prefix + '\',' + j + ');">';
                s += j + 1;
                s += '</a>';            
            };
        };


        if (_pagingCurrent[prefix] < max && _pagingTotal[prefix] > 0) {
            s += '<a href="javascript:pagingNext(\'' + prefix + '\');">';
            s += 'Next &gt;';
            s += '</a>';
        } else {
            s += '<span class="disabled">Next &gt;</span>';
        };

        $(prefix + '_paging').update(s);
    };
};

function pagingShow(prefix, page) {
    _pagingCurrent[prefix] = page;

    //$(prefix + '_' + page).scrollIntoView();

    var i = 0;

    while ($(prefix + '_' + i)) {
        $(prefix + '_' + i).hide();
        i++;
    };

    i = 0;

    var min = _pagingCurrent[prefix] * _pagingSize[prefix];
    var max = (_pagingCurrent[prefix] + 1) * _pagingSize[prefix];

    while ($(prefix + '_' + i)) {
        if (i >= min && i < max) {
            $(prefix + '_' + i).show();
        };
        i++;
    };
    
    if (_pagingCallBacks[prefix]) {
        setTimeout(_pagingCallBacks[prefix], 0);
    };
    
    pagingCreate(prefix, _pagingSize[prefix], _pagingCallBacks[prefix]);
};

function pagingNext(prefix) {
    if (_pagingCurrent[prefix] < _pagingTotal[prefix]) {
        _pagingCurrent[prefix]++;
    };

    pagingShow(prefix,_pagingCurrent[prefix]);
};

function pagingPrevious(prefix) {
    if (_pagingCurrent[prefix] > 0) {
        _pagingCurrent[prefix]--;
    };

    pagingShow(prefix,_pagingCurrent[prefix]);
};
