

////////////////////////////////////////////////////////////////////////////////////////////////////
// Paginator
////////////////////////////////////////////////////////////////////////////////////////////////////
function ContentPage(iIndexPage, iPageCount)
{
    var This = this;

    // Data members
    This.ActivePageIndex = null;
    This.PageMax         = null;
    This.Board           = null;
    This.Pages           = [];

    // Events
    This.OnActivate = new EventHandler();

    // Methods
    This.NextPage = function()
    {
        if(This.ActivePageIndex < (This.PageMax - 1))
        {
            var index = This.ActivePageIndex + 1; 
            This.Activate(index);
        }
    }

    This.PreviousPage = function()
    {
        if(This.ActivePageIndex > 0)
        {
            var index = This.ActivePageIndex - 1; 
            This.Activate(index);
        }
    }

    This.Activate = function(iIndex)
    {
        if (iIndex != This.ActivePageIndex)
        {
            This.ActivePageIndex = iIndex;
            
            if( This.Translate != null )
            {
                This.Translate.Stop();
            }
            
            var board = This.Board.GetPosition();
            var page  = This.Pages[iIndex].GetPosition();
            var move  = {
                x: -board.x -page.x,
                y: -board.y -page.y
            };
            
            This.Translate = new Translate(This.Board, move, 500, Trends.Dampered);
            This.Translate.Start();
        }  
    }

    This.SetPageContent = function(iIndex, iElement, iLink)
    {
        if( This.Pages[iIndex] == null )
        {
            This.Pages[iIndex] = iElement;
            iLink.OnClick.Add(function(){This.Activate(iIndex);});
        }
    }

    // Initialize
    {
        if (iPageCount)
        {
            This.PageMax         = iPageCount;
            This.Board           = Elements.Get('page-board');
      
            for (var i = 0; i < iPageCount; i++){
                This.SetPageContent(i, Elements.Get('page-content-' + (i + 1)), Elements.Get('page-link-' + (i + 1)));
            }
            
            var next = Elements.Get('page-next');
            var prev = Elements.Get('page-prev');

            next.OnClick.Add(function(){This.NextPage();});
            prev.OnClick.Add(function(){This.PreviousPage();});

            This.Activate(iIndexPage);
        }       
        
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////
