var Paginate = {};
Paginate.inicial=function()
{
    Paginate.maxRow=10;
    Paginate.maxPage=10;
    Paginate.params=[];
    Paginate.page=1;
}
//==============================================================================
Paginate.setParam=function(maxRow,maxPage)
{
   Paginate.maxRow=maxRow;
   Paginate.maxPage=maxPage;
};
//==============================================================================
Paginate.setFunc=function(fun,params)
{
    Paginate.func=fun;
    for(var i=0,n=params.length;i<n;i++)
        Paginate.params.push(params[i]);
};
//==============================================================================
Paginate.getFunction=function(page,row_count)
{
   if(!row_count)
       row_count =maxRow;
   var params=Paginate.params;
   var str_param= params.join(",");

   if(!page)
       page=1;

   str_param+=","+page+","+row_count;
   var f= "javascript:" + Paginate.func + "("+str_param+");";
   return f;
};
//==============================================================================
function changePaging(tab,page,q)
{
  var count_row=q.options[q.selectedIndex].value;
  navigate(tab,page,count_row)  ;
  window.location.href="#div_site_loading";
}
//==============================================================================
Paginate.getFunctionChange=function(page,count_row )
{
   var params=Paginate.params;
   var str_param= params.join(",");
   if(page)
      str_param+=","+page;
   if(count_row)
     str_param+=","+count_row;
   var f= "javascript:" + Paginate.func + "("+str_param+");";
   return f;
};
//==============================================================================
function navigate(tab,page,count_row)
{
  var table=document.getElementById("table_" + tab);
  if(!count_row)
          count_row=maxRow
  try
  {
      var rows= table.tBodies[0].rows;
      var total=rows.length;
      var ptotal=0;
      for(var i=0;i<total;i++)
      {
          var c=$(rows[i]).attr("class");
          if( c.indexOf("sHide") ==-1)
              ptotal ++;
      }

      //var maxRow= parseInt(document.getElementById("max_count_"+tab).value );
      var from = (page - 1) *  count_row;
      var end = from +  count_row;
      //var total=document.getElementById("count_"+tab).value;
      var pLast = (end < total) ? end : total;
      var k=0;
      var show=0;

      for(i=0;i<total;i++)
      {
         var rec = jQuery(rows[i]);
         c =rec.attr("class");
         if(show<from || show>=pLast)
         {
             if(c.indexOf("sHide") ==-1)
                 show++;
             rec.hide();
         }
         else
          {
             if(c.indexOf("sHide") ==-1)
             {
                  //rec.removeClass("sHide");
                  var j=1-k;
                  rec.removeClass("tr"+j);
                  rec.addClass("tr"+k) ;
                  rec.show();
                  k=1-k;
                  show++;
             }
          }
      }
      var tabname=get_category(tab);
      $("#t"+tab).html(tabname+"("+ptotal+")");
      Paginate.inicial();
      
      Paginate.setParam(count_row, maxPage);
      Paginate.setFunc("navigate",[tab]);
      Paginate.pag(page, ptotal , "");
      document.getElementById("t_paging_"+tab ).innerHTML= Paginate.content;
  }
  catch(ex)
  {
  }

}
//==============================================================================
function get_max_row(tab)
{
  var oSel =  document.getElementById("max_count_"+tab);
  var value;
  if(oSel)
     value =oSel.options[oSel.selectedIndex].value;
  else
   value=maxRow;

  alert(value);

}
//==============================================================================
function pagNavigator (tab,page,maxRow,maxPage)
{
//  var from = (page - 1) *  maxRow;
//  var end = from +  maxRow;
//  var total=document.getElementById("count_"+tab).value;
//  var pLast = (end < total) ? end : total;
//  for(var i=0;i<total;i++)
//  {
//      var rec=jQuery("#tr_" + tab + "_" + i );
//
//      if(i<from || i>=pLast)
//          rec.hide();
//      else
//          rec.show();
//  }
//  Paginate.inicial();
//  Paginate.setParam(maxRow, maxPage);
//  Paginate.setFunc("navigate",[tab]);
//  Paginate.pag(page, total, "");
//  return Paginate.content;
//table_0
  //var maxRow= parseInt(document.getElementById("max_count_"+tab).value );

  var table=document.getElementById("table_" + tab);
  var rows= table.tBodies[0].rows;
  var total=rows.length;

  var from = (page - 1) *  maxRow;
  var end = from +  maxRow;
  //var total=document.getElementById("count_"+tab).value;
  var pLast = (end < total) ? end : total;


  for(var i=0;i<total;i++)
  {
     var rec = jQuery(rows[i]);
     if(i<from || i>=pLast)
          rec.hide();
      else
          rec.show();
  }
  Paginate.inicial();
  Paginate.setParam(maxRow, maxPage);
  Paginate.setFunc("navigate",[tab]);
  Paginate.pag(page, total, "");
  return Paginate.content;

}
//==============================================================================
Paginate.pag= function(page,totalResult,act)
 {
        var pLimit = Paginate.maxPage;//page limit
        var curPLimit = (page - 1) * Paginate.maxRow;
        curPLimit = (curPLimit > totalResult) ? totalResult : (page - 1) * Paginate.maxRow ;
        curPLimit = (curPLimit <= 0) ? 1 : curPLimit;
        var from = (page - 1) * Paginate.maxRow;
        var pCount = Math.floor( totalResult / Paginate.maxRow );//total page count


        var paginatePrevSub ="";
        var paginatePrev ="";
        var paginateMiddle =""  ;
        var paginateNext ="" ;
        var paginateNextSub ="";
        var id="";
        var link="";

        if( (totalResult % Paginate.maxRow) != 0 )
          pCount++;

        pFirst =(from == 0) ? 1 : from + 1;												//paginate from
        pLast = (from + Paginate.maxRow) < totalResult ? (from + Paginate.maxRow) : totalResult;		//paginate to
        pLimitHalf = Math.floor(pLimit / 2);
        itemStart = ((page + pLimit) > pCount) ? ( pCount - pLimit + 1 ) :(page - pLimit + 1);

        if( act == 'next')
                itemStart = page ;

        if( act == 'prev')
                itemStart = page - pLimit;

        if(itemStart != pCount)
            itemStart = (itemStart > (pCount - pLimit) ) ? (pCount - pLimit + 1) : itemStart;
        else
            itemStart = (itemStart - pLimit) + 1;

        var item = (itemStart >= 1) ? itemStart : 1;											//starting page
        var oldPpage = item;
        paginateMiddle = "";																//building pagination

        if( pCount > 1 )
         {
            displayPages = 0;
            while(item <= pCount)
            {
              if( page == item )
              {
                   id="icon_" + Paginate.params[0] + "_"+ item ;
                   paginateMiddle += "<span class='pag_elm' id='" + id + "' > " + item + " </span>";
              }
              else
              {
                   link =Paginate.getFunction(item,Paginate.maxRow);
                   id="icon_" + Paginate.params[0] + "_"+ item ;
                   paginateMiddle += "<span class='pag_elm' id='" + id + "' > <a href='#div_site_loading' onclick='"+ link + "'>" + item +" </a> </span>";
              }
              item++;
              displayPages++;
              if(displayPages == pLimit)
                    break;
            }
            if( item > pLimit + 1 )
            {
                no = oldPpage - 1;
                link =Paginate.getFunction(no,Paginate.maxRow);
                paginatePrevSub = "<span class='pag_elm' > <a  href='#div_site_loading' onclick='"+ link + "'> &laquo; </a> </span>";
            }
            if( page > 1 )
            {
                no = page - 1;
                link =Paginate.getFunction(no,Paginate.maxRow);
                paginatePrev =  "<span class='pag_elm' > <a  href='#div_site_loading' onclick='"+ link + "'> Prev </a> </span>";
            }
            if( item - 1 <= pCount)
            {
               if( page != pCount )
                {
                    no = page + 1;
                    link =Paginate.getFunction(no,Paginate.maxRow);
                    paginateNext = "<span class='pag_elm' ><a  href='#div_site_loading' onclick='"+link+"'> Next </a></span>";
                }
            }
            if( (item - 1) < pCount )
            {
                no = item;
                link =Paginate.getFunction(no,Paginate.maxRow);
                paginateNextSub = " <span class='pag_elm' ><a  href='#div_site_loading' onclick='"+link+ "' > &raquo; </a></span>";
            }
        }

        var paginateContent ="<table width='100%' > <tr><td width='30'>&nbsp;</td> <td align='center' >";
        paginateContent += paginatePrevSub + paginatePrev+ paginateMiddle + paginateNext + paginateNextSub ;
        paginateContent +="</td>" ;
        paginateContent +="<td width='100' align='right' > " ;
        //paginateContent +="<input size='3' type='text' id='max_count_" + Paginate.params[0] +"' name='max_count_" + Paginate.params[0] + "' value='" + Paginate.maxRow +"' />";
        var items=[50,100,150];

        var tab = Paginate.params[0];
        link =Paginate.getFunctionChange(tab,page);
        
        paginateContent +="<select name='max_count_"+tab+"' id='max_count_"+tab +"' onchange='changePaging("+tab+","+"1,this)"+" '  >";
        for(var i=0;i<2;i++)
         {
           if(items[i]==Paginate.maxRow)
              paginateContent +="<option value='"+items[i] + "' selected >" +items[i]+" </option>"  ;
           else
              paginateContent +="<option value='"+items[i] + "' >" +items[i]+" </option>"  ;
         }
        paginateContent +="</select>";
        paginateContent +="</td>";
        paginateContent +=" </tr></table> ";

        Paginate.page=page;
        Paginate.first = pFirst;
        Paginate.last = pLast;
        Paginate.count = totalResult;
        Paginate.content = paginateContent;
 };

