﻿////////////////////
//分页码
//Created By : Yozo Chen
////////////////////
var PageNavBar = new Class({
    options: {
        pageCount:1,
        pageIndex:1,
        showPageCount:5,
        containerId:'divPageNavBar',
	    onPageClick: Class.empty
    },
    initialize:function(options){

        this.setOptions(options);
        this.options.pageCount = parseInt(this.options.pageCount);
        this.options.pageIndex = parseInt(this.options.pageIndex);
        this.options.showPageCount = parseInt(this.options.showPageCount);
        this.pageCountFact = 0;
        
        this.addEvent('pageclick', this.options.onPageClick);
        getPageIndex = function(id){
            this.fireEvent('pageclick', id);
            this.options.pageIndex = id;
            this._setState();
        }.bind(this);
        
        //创建分页
        if(this.options.pageIndex < 1 || this.options.pageIndex > this.options.pageCount) this.options.pageIndex = 1 ;
        if(this.options.pageCount < 1 ) this.options.pageCount = 1 ;

        if(this.options.showPageCount > this.options.pageCount)
            this.pageCountFact = this.options.pageCount;
        else
            this.pageCountFact = this.options.showPageCount;
            
        var ePageNavBar = $(this.options.containerId);
        ePageNavBar.setHTML('');
        
        //创建元素
        var	ePageButton = new Element('div', {'class':'pageNav' })
            .injectInside(ePageNavBar);
  	    var	eFirst = new Element('a', {'id':this.options.containerId+'_First' })
  	        .setHTML('首页')
            .injectInside(ePageButton);
        var ePrevious = new Element('a', {'id':this.options.containerId+'_Previous' })
  	        .setHTML('上一页')
            .injectInside(ePageButton);
        var ePointLeft = new Element('span', {'class': 'point', 'id': this.options.containerId+'_PointLeft' })
  	        .setHTML('...')
            .injectInside(ePageButton);
        for(var i = 0; i < this.pageCountFact; i++){
            var eNo = new Element('a', {'id': this.options.containerId+'_No_'+(i+1).toString() })
                .injectInside(ePageButton);
        }
        var ePointRight = new Element('span', {'class': 'point', 'id': this.options.containerId+'_PointRight' })
  	        .setHTML('...')
            .injectInside(ePageButton);    
        var eLast = new Element('a', {'id': this.options.containerId+'_Next' })
  	        .setHTML('下一页')
            .injectInside(ePageButton);        
        var eNext = new Element('a', {'id': this.options.containerId+'_Last' })
  	        .setHTML('末页')
            .injectInside(ePageButton);
        var eTatalInfo = new Element('span', {'id': this.options.containerId+'_TatalInfo','class':'total' })
  	        .setHTML('总共 ' + this.options.pageCount + ' 页')
            .injectInside(ePageButton);
        var eClearFloat = new Element('div')
  	        .setStyle('clear','left')
            .injectInside(ePageButton);
        this._setState();
    },
    _setState:function(){
        var iTemp = this.options.showPageCount / 2;

        if(this.options.pageIndex - iTemp > 0 && (parseInt(this.options.pageIndex) + iTemp) < this.options.pageCount){
            iBeginNo = Math.ceil(this.options.pageIndex - iTemp);
            iEndNo = Math.floor(parseInt(this.options.pageIndex) + iTemp);
        }else if(this.options.pageIndex - iTemp > 0){
            iEndNo = this.options.pageCount;
            iBeginNo = iEndNo - this.options.showPageCount + 1;
            if(iBeginNo < 1) iBeginNo = 1;
        }else{
            iBeginNo = 1;
            iEndNo = this.options.showPageCount;
            if(iEndNo > this.options.pageCount) iEndNo = this.options.pageCount;
        }
            
        var eFirst = $(this.options.containerId+'_First');
        var ePrevious = $(this.options.containerId+'_Previous');
        var ePointLeft = $(this.options.containerId+'_PointLeft');
        var ePointRight = $(this.options.containerId+'_PointRight');
        var eLast = $(this.options.containerId+'_Last');
        var eNext = $(this.options.containerId+'_Next');
        
        eFirst.setAttribute('href','javascript:getPageIndex(1)');
        ePrevious.setAttribute('href','javascript:getPageIndex('+(parseInt(this.options.pageIndex)-1)+')');
        eNext.setAttribute('href','javascript:getPageIndex('+(parseInt(this.options.pageIndex)+1)+')');
        eLast.setAttribute('href','javascript:getPageIndex('+this.options.pageCount+')');
        
        //设置页的编号和链接
        for(var i = 0; i < this.pageCountFact; i++){
            var eNo = $(this.options.containerId+'_No_'+(i+1).toString());
            eNo.setHTML((iBeginNo + i).toString())
            if((iBeginNo + i) != this.options.pageIndex){
                eNo.setAttribute('href','javascript:getPageIndex('+(iBeginNo + i)+')');
            }else{
                eNo.removeProperty('href');
            }
        }
        
        if(this.options.pageIndex == 1){
            eFirst.removeAttribute('href');
            ePrevious.removeAttribute('href');
        }
        if(iBeginNo==1){  
            ePointLeft.setStyle('display','none');
        }else if(iBeginNo>1){
            ePointLeft.setStyle('display','block');
        }
        
        if(this.options.pageIndex == this.options.pageCount){
            eNext.removeAttribute('href');
            eLast.removeAttribute('href');
        } 
        if(iEndNo==this.options.pageCount){
            ePointRight.setStyle('display','none');
        }else{
            ePointRight.setStyle('display','block');
        }

    }
});
PageNavBar.implement(new Events); 
PageNavBar.implement(new Options);



//var PageNavBar = new Class({
//	    options: {
//            pageCount:1,
//            pageIndex:1,
//            showPageCount:5,
//            containerId:'divPageNavBar',
//		    onPageClick: Class.empty
//	    },
//        initialize:function(options){

//            this.setOptions(options);
//            this.options.pageCount = parseInt(this.options.pageCount);
//            this.options.pageIndex = parseInt(this.options.pageIndex);
//            this.options.showPageCount = parseInt(this.options.showPageCount);
//            
//            this.addEvent('pageclick', this.options.onPageClick);
//            getPageIndex = function(id){
//                this.fireEvent('pageclick', id);
//                this.options.pageIndex = id;
//                this._setState();
//            }.bind(this);
//            
//            //创建分页
//            if(this.options.pageIndex < 1 || this.options.pageIndex > this.options.pageCount) this.options.pageIndex = 1 ;
//	        if(this.options.pageCount < 1 ) this.options.pageCount = 1 ;

//	        var ePageNavBar = $(this.options.containerId);
//	        ePageNavBar.setHTML('');
//	        var	ePageButton = new Element('div')
//                .injectInside(ePageNavBar);
//	  	    var	eFirst = new Element('a', {'id':this.options.containerId+'_First', 'href': 'javascript:getPageIndex(1)' })
//	  	        .setHTML('首页')
//                .injectInside(ePageButton);
//	        var ePrevious = new Element('a', {'id':this.options.containerId+'_Previous', 'href': 'javascript:getPageIndex('+(parseInt(this.options.pageIndex)-1)+')' })
//	  	        .setHTML('上一页')
//                .injectInside(ePageButton);
//	        var ePointLeft = new Element('span', {'class': 'point', 'id': this.options.containerId+'_PointLeft' })
//	  	        .setHTML('...')
//                .injectInside(ePageButton);
//            for(var i = 0; i < this.options.pageCount; i++){
//                var eNo = new Element('a', {'id': this.options.containerId+'_No_'+(i+1).toString() })
//	  	            .setHTML((i+1).toString())
//                    .injectInside(ePageButton);
//	            if(i+1 != this.options.pageIndex)
//                    eNo.setAttribute('href','javascript:getPageIndex('+(i+1)+')');
//	        }
//	        var ePointRight = new Element('span', {'class': 'point', 'id': this.options.containerId+'_PointRight' })
//	  	        .setHTML('...')
//                .injectInside(ePageButton);    
//	        var eLast = new Element('a', {'id': this.options.containerId+'_Next', 'href': 'javascript:getPageIndex('+(parseInt(this.options.pageIndex)+1)+')' })
//	  	        .setHTML('下一页')
//                .injectInside(ePageButton);        
//	        var eNext = new Element('a', {'id': this.options.containerId+'_Last', 'href': 'javascript:getPageIndex('+this.options.pageCount+')' })
//	  	        .setHTML('末页')
//                .injectInside(ePageButton);
//            var eTatalInfo = new Element('span', {'id': this.options.containerId+'_TatalInfo','class':'total' })
//	  	        .setHTML('总共 ' + this.options.pageCount + ' 页')
//                .injectInside(ePageButton);
//            var eClearFloat = new Element('div')
//	  	        .setStyle('clear','left')
//                .injectInside(ePageButton);
//            this._setState();
//        },
//        _setState:function(){
//            
//	        var iBeginNo = 1;
//	        var iEndNo = 1;
//	        var iTemp = this.options.showPageCount / 2;
//	        var iBeginA = this.options.pageIndex - iTemp;
//	        var iEndA = parseInt(this.options.pageIndex) + iTemp;
//	        if(iBeginA > 0){
//	            iBeginNo = Math.ceil(iBeginA);
//	        }else{
//	            iBeginNo = 1;
//	        }
//	        
//	        if(iEndA < this.options.pageCount){
//	            iEndNo = Math.floor(iEndA);
//	        }else{
//	            iEndNo = this.options.pageCount;
//	        }
//            var eFirst = $(this.options.containerId+'_First');
//	        var ePrevious = $(this.options.containerId+'_Previous');
//	        var ePointLeft = $(this.options.containerId+'_PointLeft');
//            var ePointRight = $(this.options.containerId+'_PointRight');
//	        var eLast = $(this.options.containerId+'_Last');
//	        var eNext = $(this.options.containerId+'_Next');
//	        
//	        eFirst.setAttribute('href','javascript:getPageIndex(1)');
//	        ePrevious.setAttribute('href','javascript:getPageIndex('+(parseInt(this.options.pageIndex)-1)+')');
//	        eNext.setAttribute('href','javascript:getPageIndex('+(parseInt(this.options.pageIndex)+1)+')');
//	        eLast.setAttribute('href','javascript:getPageIndex('+this.options.pageCount+')');
//	        
//	        for(var i = 0; i < this.options.pageCount; i++){
//	            var eNo = $(this.options.containerId+'_No_'+(i+1).toString());
//	            if(i+1 == this.options.pageIndex){
//	                eNo.removeAttribute('href');
//	            }else{
//	                eNo.setAttribute('href','javascript:getPageIndex('+(i+1)+')');
//	            }
//	            if((i+1 < iBeginNo && i+1 <= this.options.pageCount - this.options.showPageCount)|| (i+1 > iEndNo && i+1 > this.options.showPageCount)){
//	                eNo.setStyle('display','none');
//	            }else{
//	                eNo.setStyle('display','block');
//	            }

//	        }
//	        
//	        if(this.options.pageIndex == 1){
//	            eFirst.removeAttribute('href');
//	            ePrevious.removeAttribute('href');
//	        }
//	        if(iBeginNo==1){  
//	            ePointLeft.setStyle('display','none');
//	        }else if(iBeginNo>1){
//	            ePointLeft.setStyle('display','block');
//	        }
//	        
//	        if(this.options.pageIndex == this.options.pageCount){
//	            eNext.removeAttribute('href');
//	            eLast.removeAttribute('href');
//	        } 
//	        if(iEndNo==this.options.pageCount){
//	            ePointRight.setStyle('display','none');
//	        }else{
//	            ePointRight.setStyle('display','block');
//	        }

//        }
//    });
//PageNavBar.implement(new Events); 
//PageNavBar.implement(new Options);
//    
//    
    
//使用示例   
//var pageNavBar1 = new PageNavBar({
//    pageCount:12,     //页码总数
//    pageIndex:4,     //当前页码
//    showPageCount:5,     //页码显示个数
//    containerId:'divPageNavBar1',     //页码显示的容器id
//    onPageClick: function(pageNo){     //单击页码事件处理函数
//        alert(pageNo);
//    }
//});
