﻿function PageButton (a, iPage, pDrawPager)
{
    this.a = a;
    this.iPage = iPage;
    this.pDrawPager = pDrawPager;   
    
    this.ClickHandler = function ()
    {        
        if (me.pDrawPager.aSelected)
            me.pDrawPager.aSelected.style.color = me.pDrawPager.strActiveColor;  
                 
        me.pDrawPager.aSelected = me.a;
        me.pDrawPager.aSelected.style.color = me.pDrawPager.strActualPageColor;           
        me.pDrawPager.OnShowPage (me.iPage);            
    }           
    
    var me = this;
    
    a.onclick = me.ClickHandler;
}

function DrawPager (divParent, iVisiblePagesNumber, iStartPageNumber, iPagesNumber)
{
    this.iVisiblePagesNumber = (iVisiblePagesNumber != undefined && iVisiblePagesNumber != null ? iVisiblePagesNumber : 5);
    this.iStartPageNumber = (iStartPageNumber != undefined && iStartPageNumber != null ? iStartPageNumber : 1);
    this.iPagesNumber = (iPagesNumber != undefined && iPagesNumber != null ? iPagesNumber : 10);
    this.strPreviousCaption = g_Babel.GetWord('PagerPrevious');
    this.strNextCaption = g_Babel.GetWord('PagerNext');
    this.strActiveColor = "#70706e";
    this.strActualPageColor = "Black";
    this.strInActiveColor = "White";    
    this.m_actPageNum = 1;
    
    var i = 0;
    
    var cen = NewTag ("center", divParent);
    var div = NewTag ("div", cen);
    div.className = "pager";    
    var t = NewTag ("table", div);        
    var tb = NewTag ("tbody", t);
    this.tr = NewTag ("tr", tb);
    
    this.aSelected = null;
    this.OnPageChange = null;
    this.OnNextPages = null;
    this.OnPreviousPages = null;
    this.aPrevious = null;
    this.aNext = null;
    
    var me = this;
    
    this.OnShowPage = function (iPageNum)
    {        
       if (me.OnPageChange)
            me.OnPageChange (iPageNum);        
    }
    
    this.NextHandler = function ()
    {
        if (me.OnNextPages)
            me.OnNextPages ();
    }
    
    this.PreviousHandler = function ()
    {
        if (me.OnPreviousPages)
            me.OnPreviousPages ();
    }    
    
    this.DoNext = function ()
    {
        if (me.iStartPageNumber < me.iPagesNumber - me.iVisiblePagesNumber + 1)
            me.iStartPageNumber = me.iStartPageNumber + 1;
    }			    			    
    
    this.DoPrevious = function ()
    {
        if (me.iStartPageNumber > 1)
            me.iStartPageNumber = me.iStartPageNumber - 1;
    }			    			    			    
    
    this.Clear = function ()
    {
        while (me.tr.hasChildNodes())
        {
            me.tr.removeChild(me.tr.firstChild);
        }
    }			    			    
    
    this.Create = function ()
    {    
        me.tr.style.visibility = "hidden";
        DeleteChildren(me.tr, "");
        
        // elozo
        
        if ((me.iStartPageNumber >= 1) && (me.iPagesNumber > me.iVisiblePagesNumber))
        {
            //var td = NewTag ("td", me.tr);  
            var td = NewTag ("td");  
            td.className = "pager"; 
            td.style.paddingRight = "7px";
            var a = NewTag ("a", td);
            me.aPrevious = a;
            a.href = "javascript:void(0);";
            
            if (me.iStartPageNumber > 1)
            {
                a.onclick = function () { me.PreviousHandler(); };
                a.style.color = me.strActiveColor;
            }
            else
            {
                a.onclick = "javascript:void(0);";
                a.style.color = me.strInActiveColor;
            }
                
            NewTextTag (me.strPreviousCaption, a);			    
            
            AddTag (td, me.tr);
        }
	    
	    // oldalak
	    
        for (i = 0; i < me.iVisiblePagesNumber; i++)
        {
            if (me.iStartPageNumber + i <= me.iPagesNumber)
            {
                var td = NewTag ("td");  
                td.className = "pager"; 
                var a = NewTag ("a", td);
                a.href = "javascript:void(0);";       
                if (me.m_actPageNum != me.iStartPageNumber + i)     
					a.style.color = me.strActiveColor;            
				else
					a.style.color = "Red";            
                new PageButton (a, me.iStartPageNumber + i, me);
                NewTextTag ((me.iStartPageNumber + i), a);
                AddTag (td, me.tr);
            }
        }
	    
	    // kovetkezo
	    
        if (me.iStartPageNumber + me.iVisiblePagesNumber - 1 <= me.iPagesNumber)
        {
            var td = NewTag ("td");  
            td.className = "pager"; 
            td.style.paddingLeft = "7px";
            var a = NewTag ("a", td);
            a.href = "javascript:void(0);";
            me.aNext = a;
            if (me.iStartPageNumber + me.iVisiblePagesNumber - 1 == me.iPagesNumber)
            {
                a.onclick = "javascript:void(0);";
                a.style.color = me.strInActiveColor;
            }
            else
            {
                a.onclick = function () { me.NextHandler(); };
                a.style.color = me.strActiveColor;
            }
            
            NewTextTag (me.strNextCaption, a);	
            AddTag (td, me.tr);		    
        }			    			    			
        
        me.tr.style.visibility = "visible";
    }
    
	this.OnChangeLang = function ()
	{/*
        me.strPreviousCaption = g_Babel.GetWord('PagerPrevious');
        me.strNextCaption = g_Babel.GetWord('PagerNext');
        if (me.aPrevious)
            me.aPrevious.innerHTML = me.strPreviousCaption;
        if (me.aNext)
	        me.aNext.innerHTML = me.strNextCaption;*/
	}    
	
	g_Babel.AddListener(this.OnChangeLang);
    
    me.Create ();
}

