﻿// JScript File
Type.registerNamespace("Xanga.Socnet.Webui.Client");
Xanga.Socnet.Webui.Client.Pager = function(perPage, listProviderFn) {
    var _perPage = perPage;
    var _listProviderFn = listProviderFn;

    var _itemList;
    
    this.setPerPage = function(perPage) {
        _perPage = perPage;
    }
    
    this.getItems = function() {
        // Invoke dataprovider to get connections
        var items = _listProviderFn();
        
        // If not in array form convert it
        if (!Array.isInstanceOfType(items)) {
            itemArr = new Array();
            for (var i in items) itemArr.push(items[i]);
            items = itemArr;
        }
        
        return items;
    }
    
    this.update = function() {
        _itemList = this.getItems();
    }
   
    this.getPageCount = function() {
        if (_itemList == null || _itemList.length == 0) return 1;
        return Math.ceil(_itemList.length / perPage);
    }
    
    this.getPageList = function(page) {
        var pageItems = new Array();
        if (_itemList == null || _itemList.length == 0) return pageItems;

        var start = (page - 1)*_perPage;
        var stop = start + _perPage;

        // If start is past end of array return null
        if (start >= _itemList.length) return pageItems;
        
        // If stop is past end of array bump it up to be even with the end
        if (stop > _itemList.length) stop = _itemList.length;
        
        // Create a list of selected items
        var pageItems = new Array();
        for (var i = 0; i < (stop-start); i++)
            pageItems.push(_itemList[start + i]);
        
        return pageItems;
    }
}
Xanga.Socnet.Webui.Client.Pager.registerClass("Xanga.Socnet.Webui.Client.Pager", null, Sys.IDisposable);