﻿//分页对象．参数：容器ID，每页数量
function PagedView(id,pageSize){
    this._inited=false;
    this._id=id;
    this._pageCount=0;          //共多少页？
    this._pageNumber=0;         //当前页码
    this._pageSize=pageSize     //每页显示的数量
    this._items = new Array();    //保存对象的数组
    this._headHtml = "";            //头部
    this._footHtml = "";            //尾部html
    this.setHead = function(value) { this._headHtml = value; }
    this.setFoot = function(value) { this._footHtml = value; }
    
    
    //向数组添加对象
    this.push = function(item) {   
     
        this._items.push(item);
    }
    //初始化对象
    this._init=function(){ 
        document.write("<div id='div"+this._id+"'></div>");             
        if(this._items.length==0) return;
        //得到页数
        this._pageCount=parseInt(this._items.length/this._pageSize);
        if((this._items.length%this._pageSize)>0) this._pageCount++;
    }
    //获取页码按钮代码
    this._buttonmake = function(buttonid, classname, i, text, tip) { 
        return "<a href='#' title='"+tip+"' id='" + buttonid + "' class='" + classname + "' onclick='javascript:return PagedView.PageHelper(" + this._id + "," + i + ");'>"+text+"</a>"
    }
    //显示页码集合
    this._pages = function() {
        var result = "";
        //第一页
        if (this._pageNumber > 1) {
            result += (this._buttonmake("", "dbutton", this._pageNumber-1, "上一页", "上一页"));            
            result += (this._buttonmake("", "dbutton", 1, "首页","首页"));
        }

        //前十页
        if (this._pageNumber - 10 >= 1) {
            result += (this._buttonmake("", "dbutton", this._pageNumber - 10, "...","前十页"));
        }
        
        //页码
        var pos_s = this._pageNumber - 5;
        var pos_e = this._pageNumber + 5;
        if (pos_e > this._pageCount) pos_e = this._pageCount;
        if (pos_s < 1) pos_s = 1;

        for (var i = pos_s; i <= pos_e; i++) {
            var classname = "dbutton";
            if (i == this._pageNumber) classname = "cbutton";
            result += (this._buttonmake("", classname, i,   i,"第"+i+"页"));
        }

        //后十页
        if (this._pageNumber + 10 <= this._pageCount) {
            result += (this._buttonmake("", "dbutton", this._pageNumber + 10, "...","后十页"));
        }


        //未页
        if (this._pageNumber < this._pageCount) {
            result += (this._buttonmake("", "dbutton", this._pageCount, "末页", "末页"));
            result += (this._buttonmake("", "dbutton", this._pageNumber + 1, "下一页", "下一页"));            
        }


      
        
        
        
        
        return "<center><div id='pages'>" + result + "</div></center>";
    }
 
    //转到指定的页
    this.GoPage=function(n){
        if(!this._inited){this._init();this._inited=true;}//如果未初始化则先初始化
        this._pageNumber=n;
        
        var html="";
        if(this._items.length==0){document.getElementById("div"+this._id).innerHTML="提示：没有可供显示的内容！";return;}
        var s=this._pageSize*(n-1); //起始页码        
        var e=this._pageSize*(n);   //结束页码
        if(e>=this._items.length) e=this._items.length;
        for(var i=s;i<e;i++){
            html+=this._items[i];
        }
        
        document.getElementById("div"+this._id).innerHTML= this._headHtml+ html+this._footHtml+this._pages();
        
        
    }


}


PagedView.prototype.__hook_code = "";
//注册代码
PagedView.prototype.RegisterHook = function(code) {
    PagedView.prototype.__hook_code = code;
}
//用于实现页码跳转的静态方法
PagedView.PageHelper = function(obj, n) {
    obj.GoPage(n);
    if (PagedView.prototype.__hook_code.length > 0) {
        eval(PagedView.prototype.__hook_code);
    }
    return false;
}

 
