﻿// @TRONC /Kaley/Kaley.Pager.js

function CreatePager(idPager){

  var element = document.getElementById(idPager); 

  element.PageCount = Number(element.getAttribute("pagecount"));
  element.CurrentPage = Number(element.getAttribute("currentpage"));
  
  if (element.PageCount>200)
    element.PageCount = 200;
 
  element.Caption = document.getElementById(idPager+"_pagenum"); 
  element.Pages = document.getElementById(idPager+"_pages"); 
  element.PagesClient = document.getElementById(idPager+"_pagesclient"); 
  element.PagesClient.left = 0;

  element.onpagechange = element.getAttribute("onpagechange");

  
  element.FireOnPageChange = function(){
    eval(this.onpagechange);
  } 

  element.CreateButton = function(pageNumber){
      var btn = document.createElement("div");
      btn.innerHTML = pageNumber;
      btn.className = "page";   
      btn.Pager = this;

      btn.onmouseover = function(){ 
        if (this.className!="page pageselected")
          this.className = "page pagehighlight";
      };
      
      btn.onmouseout = function(){ 
        if (this.className!="page pageselected")
          this.className = "page";
      };
      
      btn.onclick = function(){   
        //ShowWaiter(this.Pager.id);    
        Anthem_InvokeControlMethod(this.Pager.id,"ClientPageChange",[pageNumber-1]);
        this.Pager.SelectPage(pageNumber-1); 
        //HideWaiter();
      };
      
      return btn;
  }
  
  
  element.SelectPage = function(pageNumber){
    if (element.CurrentPage!=-1)
       element.UnselectPage(element.CurrentPage);
       
    var button = this.GetButton(pageNumber);
    button.className = "page pageselected";
    
    element.CurrentPage = pageNumber;
    
    var caption = (element.CurrentPage+1)+"/"+element.PageCount;
    element.Caption.innerHTML = caption;
    
  }
  
  element.UnselectPage = function(pageNumber){
    var button = this.GetButton(pageNumber);
    button.className = "page";
  }
  
  
  element.GetButton = function(buttonIndex){
    return this.PagesClient.childNodes.item(buttonIndex);
  }
  
  
  element.GetPagesWidth = function(){
    var width = this.Pages.offsetWidth;
    return width;
  }
  
  element.GetPagesClientWidth = function(){
    var width = this.PagesClient.offsetWidth;
    return width;
  }
  
  element.GetScrollMin = function(){
    return -(this.GetPagesClientWidth()-this.GetPagesWidth());
  }
  
  element.NextPage = function(){
  
    if (element.PagesClient.tmr!=null)
      this.PagesClient.left += this.PagesClient.z;   
  
    var inc = -this.GetPagesWidth();
    if (this.PagesClient.left+inc<this.GetScrollMin()) 
      inc = this.GetScrollMin()-this.PagesClient.left;
 
    ScrollElement(element.PagesClient.id,inc); 
  }
  
  
   element.PreviousPage = function(){
   
    if (element.PagesClient.tmr!=null)
       this.PagesClient.left += this.PagesClient.z;   
   
    var inc = this.GetPagesWidth();
    if (this.PagesClient.left+inc>0) 
      inc = -this.PagesClient.left;

      ScrollElement(element.PagesClient.id,inc); 
  }
  
  
  element.AddButtonLeft = function(){
    this.Pages.appendChild(button); 
  
  }
  
  
  element.AddButton = function(button){    
    this.PagesClient.appendChild(button); 
    this.PagesClient.style.width = (this.PagesClient.childNodes.length*63)+"px";
  }
  
  element.Initialize = function(){
    this.PagesClient.innerHTML = "";
  
    for (var i =1;i<=this.PageCount;i++) {
       var btn = element.CreateButton(i);
       this.AddButton(btn);
    }
    
    this.SelectPage(this.CurrentPage);
  }
  
 
  element.Initialize();


} // function CreatePager



var ScrollSpeed = 40;

function ScrollElement(idElement,distance){
  var element = document.getElementById(idElement);     
  if (element.tmr!=null) 
    window.clearInterval(element.tmr);
  element.z = 0;                           
  element.tmr = window.setInterval("_ScrollElement('"+element.id+"',"+distance+")", 10);
}


function _ScrollElement(idElement, distance){

  if (distance==0) return;

  var element = document.getElementById(idElement);
  var terminated = false;
  
   var reste = Math.abs(distance-element.z);
   element.v = Math.abs((ScrollSpeed/distance)*reste);
   if (element.v<1) element.v = 1;
  
  if (distance<0) {
   element.z -= element.v;
   if (element.z<distance){ 
     element.z = distance;
     terminated = true;
   }
  } else {
    element.z += element.v;    
    if (element.z>distance){ 
      element.z = distance;
      terminated = true;
    }
  }
  element.style.left = Math.round(element.left+element.z)+"px";
  if (terminated) { 
    window.clearInterval(element.tmr);
    element.tmr = null;    
    element.left += element.z;  
  }
}



