﻿/*
    input:
        totalpage: tong so trang
        pagesize: so trang hien thi moi lan
        function: ham can truyen vao 
        div: id div can innerhtml
*/
//VARIABLE DEFINE
var DEFAUT_PAGESIZE = 5;

var Paging = function(totalpage, ppagesize, func, div)
{    
    //alert("Totalpage: " + totalpage +"\nPageSize: " + ppagesize + "\nDiv: " + div + "\nFunction: " + func);
    var currpage;
    this.currpage = 1;
    this.totalpage = totalpage;
    this.ppagesize = (this.ppagesize==0)?DEFAUT_PAGESIZE:ppagesize;
    this.func = func;
    this.div = div;
    
    //-----------------------------------------------------------------------------------------------
    this.err = function(){
        alert("Program cause error!!");
    }
    
    //tab current page
    this.tabThis = function(obj){        
        $(obj).parent().children().css("background-color","white").hover(function(){$(this).css('border:1px solid red')},function(){$(this).css('border:1px solid gray')});
        $(obj).css("background-color","#c4c4c4");
    }
    
    //check if that necessary for creating paging otherwise, if we have 1 page only don't need create paging
    this.CheckPaging = function(){    
        if(this.totalpage<2)                 
            $("#" + this.div).hide();                
        else
            $("#" + this.div).show();
    }
   
    //go to page by click on button
    this.loadPage = function(_page){    
        this.CheckPaging();
        this.func(_page);    
        this.createPage(totalpage,_page,div, func, ppagesize);
        
        $("#txtPage" + this.div).keypress(function(e){
        if(e.which!=8 && e.which!=0 && (e.which<48 || e.which>57) && e.which!=13)
        {
            return false;
        }
        else
        {
            if(e.which==13) 
            {
                var myval = parseInt($(this).val(),0);
                myval = myval == 0 ?1:myval;
                myval = myval>totalpage?totalpage:myval;                
                loadTab(myval);
                return false;
            }
        }

    });
    }
    
    //create paging and number
    this.createPage = function(nTotalPage, nCurrPage, nDiv, nFunction, nPageSize){
            
        if(nTotalPage==1) return;
        var startIndex=nCurrPage-2;
        startIndex = startIndex<1?1:startIndex;
        var endIndex = (startIndex + (nPageSize-1))>nTotalPage?nTotalPage:(startIndex+nPageSize-1);
        
        var s = new Array();
        //page input number only limited for 3 number input
        s[s.length]="<ul>";
        s[s.length]="<li class='text_page_to_go' style='border:none;'>";
            s[s.length]="Trang:";
            s[s.length]="<input maxlength=3 value='"+nCurrPage+"' style='border:1px solid gray; text-align:right; padding:2px; width:25px;' type='text' id='txtPage" + this.div + "'> / " + this.totalpage;
        s[s.length]="</li>";
        
        if(nCurrPage!=1)
        {
            s[s.length]="<li onclick='javascript:prevPaging();'>";
            s[s.length]="<<";
            s[s.length]="</li>";
        }
        //if total page less than pagesize then we show it all without prev next
        if(nTotalPage < nPageSize)
        {         
            for(var i = 1; i<=nTotalPage; i++)
            {
                s[s.length]="<li onclick='javascript:loadTab(this)' id='" + div + "_" + i + "'>";
                s[s.length]=i;
                s[s.length]="</li>";
            }
        }
        else
        {
            for(var i = startIndex; i<=endIndex; i++)
            {
                s[s.length]="<li onclick='javascript:loadTab(this)' id='" + div + "_" + i + "'>";
                s[s.length]=i;
                s[s.length]="</li>";
            }
        }
        if(nCurrPage!=nTotalPage)
        {
            s[s.length]="<li onclick='javascript:nextPaging();'>";
            s[s.length]=">>";
            s[s.length]="</li>";
        }
        s[s.length]="</ul>";        
        document.getElementById(nDiv).innerHTML=s.join("");        
        tabThis($("#" + div + "_" + nCurrPage));
    }    
    this.loadPage(this.currpage);   
}

//s? ki?n click nút trang k?
function nextPaging()
{
    var id = parseInt(currpage,0)+1;
    this.loadTab(id);
}

////s? ki?n click nút trang tru?c
function prevPaging()
{
    var id = parseInt(currpage,0)-1;
    this.loadTab(id);
}

function loadTab(arg)
{
    var id=0;
    if(arg.id!=null&&arg.id.indexOf("_")!=-1){
     var temp=arg.id.split("_");
     id=temp[temp.length-1];     
    }else{
        id=arg;
    }    
    if(id==this.currpage){return false};
    this.currpage = id;    
    this.loadPage(id);
}
