var UOLLib = window.UOLLib || {}
/** 
 * @projectDescription Gerencia a lista de páginas no indice de notícias
 *
 * @author  Roberto Robson (Bode) rnogueira@uolinc.com
 * @version 1.4.beta
 * @since   1.0
 */

UOLLib.ultnotpaginacao = {
  /** ID das barras de páginação */
  idBarras : "ultnotPaginacao",
  
  /** Nome da página */
  arquivo : "index",
  
  /** Extensao da página */
  arquivoExt : "jhtm",

  /** Informa a página atual, 0 = não definido */
  pgAtual : 0,

  /** setInterval do método procuraBarras */
  procuraBarraTimeOut : null,
  
  /** Total de páginas */
  totalPaginas : 0,
  
  /** barrasEncontradas */
  encontrados : '',
  
  /** lista das 'className' */
 classNames : {
   paginas : 'uollibpaginacaoPaginas',
   pgSel : 'pag-sel',
   proxima : 'uollibpaginacaoProxima',
   anterior : 'uollibpaginacaoAnterior',
   inativo : 'inativo'
 },
  
  /**
   * Inicia a lib de páginação
   * @type {Method}
   */
  init : function(args){
    args = args || {};
    locationHref = args['url'] || location.href;

    if(args['url'])
      this.encontrados = "";
    
    lHref=locationHref.replace(/(.*?)\//g,"").replace(/\.(.*?)$|/g,"");

    if (lHref != "") {
      this.arquivo = lHref.replace(/[0-9]/g,"");
      this.arquivoExt = locationHref.replace(/(.*?)\./g,'');
    }

    this.pgAtual=lHref.match(/[0-9]/g);

    if(this.pgAtual==null)
      this.pgAtual=0;
    else
      this.pgAtual=parseInt(this.pgAtual.join(""));
    
    this.procuraBarraTimeOut = setInterval(function(){
      UOLLib.ultnotpaginacao.procuraBarras()
    },30);
    
  },
  
  /**
   * Procura as barras de página
   * @type {Method}
   */
  procuraBarras : function(){

    this.ajustaBarra(1);
    this.ajustaBarra(2);
    
    if(this.encontrados.match(/^|[1-2]/g).length==2)
      this.procurarBarrasStop();
  },
  
  /**
   * Parar com a procura de barras
   * @type {Method}
   */
  procurarBarrasStop : function(){
    clearInterval(UOLLib.ultnotpaginacao.procuraBarraTimeOut);
  },
  
  /**
   * Ajusta conteudo da barra
   * @type {Method}
   * @param {Int} n Numero da barra 1|2
   */
  ajustaBarra : function(n){
    elementId=this.idBarras + n;
    if (document.getElementById(elementId) && this.encontrados.indexOf(n) == -1) {
      this.encontrados += n;
      element={
        id : document.getElementById(elementId),
        uollibpaginacaoPaginas : 0,
        uollibpaginacaoProxima : 0,
        uollibpaginacaoAnterior : 0
      };

      for(i=0;i<element.id.getElementsByTagName('div').length;i++)
        if(element.id.getElementsByTagName('div')[i].className && element.id.getElementsByTagName('div')[i].className.indexOf(this.classNames.paginas)>=0)
          element.id.uollibpaginacaoPaginas = i;
        
      for(i=0;i<element.id.getElementsByTagName('a').length;i++){
        if(element.id.getElementsByTagName('a')[i].className && element.id.getElementsByTagName('a')[i].className.indexOf(this.classNames.proxima)>=0)
          element.id.uollibpaginacaoProxima = i;
        if(element.id.getElementsByTagName('a')[i].className && element.id.getElementsByTagName('a')[i].className.indexOf(this.classNames.anterior)>=0)
          element.id.uollibpaginacaoAnterior = i;
      }
      
      element.id.getElementsByTagName('div')[element.id.uollibpaginacaoPaginas].style.position="relative";
      ul=element.id.getElementsByTagName('div')[element.id.uollibpaginacaoPaginas].getElementsByTagName('ul');
      li=element.id.getElementsByTagName('div')[element.id.uollibpaginacaoPaginas].getElementsByTagName('li')
      ul[0].style.width=li[0].offsetWidth*(li.length)+'px';
      this.totalPaginas=li.length;
      
      li[this.pgAtual].className+=this.classNames.pgSel;
      
      elementosVisiveis = Math.floor(element.id.getElementsByTagName('div')[element.id.uollibpaginacaoPaginas].offsetWidth / li[0].offsetWidth);

      /** Margem negativa */
      mn=li[this.pgAtual].offsetLeft*-1+element.id.getElementsByTagName('div')[element.id.uollibpaginacaoPaginas].offsetWidth/2;
      margemLimite = (ul[0].offsetWidth - (li[0].offsetWidth * elementosVisiveis)) * -1;
      if(mn>0 || elementosVisiveis>=this.totalPaginas)
        mn=0;
      else if(mn<margemLimite)
        mn=margemLimite;
        
      ul[0].style.marginLeft=mn+"px";

      /** Defini Anterior e Próxima */
      pr = element.id.getElementsByTagName('a')[element.id.uollibpaginacaoProxima];
      ant = element.id.getElementsByTagName('a')[element.id.uollibpaginacaoAnterior];

      if (this.totalPaginas == 1) {
        ant.className+=' '+this.classNames.inativo;
        pr.className+=' '+this.classNames.inativo;
        pr.href="javascript:void(0)";
        ant.href="javascript:void(0)";
      }else if(this.totalPaginas>this.pgAtual+1 && this.pgAtual+1>1){
        ant.className.replace(this.classNames.inativo, '');
        pr.className.replace(this.classNames.inativo, '');
        pr.href=this.arquivo+(this.pgAtual+1)+'.'+this.arquivoExt;
        ant.href=this.arquivo+(this.pgAtual==1?'':this.pgAtual-1)+'.'+this.arquivoExt;
      }else if(this.pgAtual+1==1){
        ant.className+=' '+this.classNames.inativo;
        pr.className.replace(this.classNames.inativo, '');
        pr.href=this.arquivo+(this.pgAtual+1)+'.'+this.arquivoExt;
        ant.href="javascript:void(0)";
      }else if(this.pgAtual+1==this.totalPaginas){
        ant.className.replace(this.classNames.inativo, '');
        pr.className+=' '+this.classNames.inativo;
        pr.href="javascript:void(0)";
        ant.href=this.arquivo+(this.pgAtual==1?'':this.pgAtual-1)+'.'+this.arquivoExt;
      }
          
    }
  }


}

UOLLib.ultnotpaginacao.init();
