﻿PagingBarMgr = Class.create();
PagingBarMgr.prototype.init = function(template,target,data,mapping)
{
    this.template = template;
    this.target = target;
    this.data = data;
    this.mapping = mapping;
}

PagingBarMgr.prototype.execute = function(obj)
{
    if(!this.repeater)
    {
        //new instant of the TC.Controls.Repeater from Repeater.js
        this.repeater = new TC.Controls.Repeater(this.template,this.template,null,null);
    }
    else
    {
        //If excist, clear Previews content
        this.repeater.content = null;
    }
    //On the Parent Data Object Binding - 'this.repeater.render'
    this.repeater.onItemDataBound = function(item)
    {
        //alert(item.itemSettings.maxItemsPerPage)
        this.maxItemsPerPage = item.itemSettings.maxItemsPerPage;
        this.pageChanged = false;
        this.mapping = item.mapping;
        if(isNullOrUndefined(this.counter))
            this.counter = 0;
        else
            this.counter += 1;
        if(isNullOrUndefined(this.pageNum))
        {
            this.pageNum = 1;
            this.mapping.PAGE_NUMBER = this.pageNum;
            this.mapping.INDEX = this.pageNum;
            this.mapping.settings.lastPage = this.pageNum;
            this.pageChanged = true;
        }
        else if(parseInt(item.dataItemIndex,10)+1>this.maxItemsPerPage*this.pageNum)
        {   
            this.pageNum += 1;
            this.mapping.PAGE_NUMBER = this.pageNum;
            this.mapping.INDEX = this.pageNum;
            this.mapping.settings.lastPage = this.pageNum;
            this.pageChanged = true;
        }
        if(this.pageChanged == true)
        {
            item.skipItem = false;
            
        }
        else
        {
            item.skipItem = true;
        }
        if(item.dataItemIndex+1==item.dataLength)
        {
            this.pageNum=null;
            this.counter=null;
        }
      
    }
    this.repeater.onContentChange = function(content)
    {
       content.footer = content.footer.toString().replace('MAX_PAGE',content.items.length);
    }
    
        this.repeater.render(this.target, this.mapping, this.data);
        this.setPagingBarStyle(1,obj);
    
    
}


PagingBarMgr.prototype.obj = null;
PagingBarMgr.prototype.currentPage = 1;
PagingBarMgr.prototype.MoveToPage = function(key,obj)
{
    var goToPage = 1;
    switch(key)
    {
        case 'toFirst':
            goToPage = 1;
            break;
        case 'prePage':
            goToPage = parseInt(obj.currentPageID,10)-1;
            break;
        case 'nextPage':
            goToPage = parseInt(obj.currentPageID,10)+1;
            break;
        case 'lastPage':
            goToPage = parseInt(this.mapping.settings.lastPage,10);
            break;
        default:
            goToPage = key;
            break;
    }
    if(goToPage >= 1 || goToPage <= obj.lastPage)
    {
        obj.init(obj.template,obj.innerTemplate,obj.dataSource,obj.target,goToPage,obj.pagingTarget,obj.ItemsPerPage,obj.mapping);
        obj.execute();
        this.currentPage = goToPage;
    }
    this.setPagingBarStyle(goToPage,obj);
    
}


PagingBarMgr.prototype.setPagingBarStyle = function(pageNum,obj)
{
    var lastClickedPage  = '';
    if(isNullOrUndefined(this.lastClickedPage))
    {
        
        this.lastClickedPage = pageNum;
        //if($(pageNum.toString()))
        $(pageNum.toString()).className = 'selected';
    }
    else
    {
        lastClickedPage = $(this.lastClickedPage.toString());
        if(!isNullOrUndefined(lastClickedPage))
            lastClickedPage.className = '';
        $(pageNum.toString()).className = 'selected';
        this.lastClickedPage = pageNum;
    }
    
    var lastPage = this.mapping.settings.lastPage;
    if(lastPage == 1){$('toFirst').style.visibility='hidden';$('prePage').style.visibility='hidden';$('nextPage').style.visibility='hidden';$('lastPage').style.visibility='hidden';}
    else if(lastPage == 2 && obj.currentPageID == 1){$('toFirst').style.visibility='hidden';$('prePage').style.visibility='hidden';$('nextPage').style.visibility='visible';$('lastPage').style.visibility='hidden';}
    else if(lastPage == 2 && obj.currentPageID == 2){$('toFirst').style.visibility='hidden';$('prePage').style.visibility='visible';$('nextPage').style.visibility='hidden';$('lastPage').style.visibility='hidden';}
    else if(lastPage == 2){$('toFirst').style.visibility='hidden';$('prePage').style.visibility='visible';$('nextPage').style.visibility='visible';$('lastPage').style.visibility='hidden';}
    else if(obj.currentPageID == lastPage){$('toFirst').style.visibility='visible';$('prePage').style.visibility='visible';$('nextPage').style.visibility='hidden';$('lastPage').style.visibility='hidden';}
    else if(obj.currentPageID == 1){$('toFirst').style.visibility='hidden';$('prePage').style.visibility='hidden';$('nextPage').style.visibility='visible';$('lastPage').style.visibility='visible';}
    else {$('toFirst').style.visibility='visible';$('prePage').style.visibility='visible';$('nextPage').style.visibility='visible';$('lastPage').style.visibility='visible';}
}
