/*
JSLint Report
Global YAHOO, document

3-57 "paginate"()
Closure container_ids, createPager, handlePager, insertPagerPlaceHolders, pager
Variable _init

6-12 "createPager"()
Outer container_ids, pager
Global YAHOO

13-27 "handlePager"(state)
Variable i, liS, o
Outer pager
Global YAHOO

28-45 "insertPagerPlaceHolders"()
Variable bottom_pager, top_pager, ul
Outer container_ids
Global YAHOO, document

46-52 "_init"()
Outer createPager, handlePager, insertPagerPlaceHolders, pager
*/

/*members Dom, Event, Paginator, ath, className, containers, 
    createElement, display, getElementsByClassName, getElementsByTagName, 
    getState, id, init, insertAfter, insertBefore, ipc, length, namespace, 
    onDOMReady, paginate, records, render, rowsPerPage, setState, style, 
    subscribe, totalRecords, util, widget
*/
YAHOO.namespace('ipc.ath');
  YAHOO.ipc.ath.paginate = function() {
    var pager,
        container_ids;
    var createPager = function(lRecordsPerPage, lTotalRecords) {
          pager = new YAHOO.widget.Paginator({
                      rowsPerPage: lRecordsPerPage,
                      totalRecords: lTotalRecords,
                      containers: container_ids
                    });
        },
        handlePager = function(state) {
          pager.setState(state);
          var o = YAHOO.util.Dom.getElementsByClassName('current', 'ul');
          if (o && (1 == o.length)) {
            o = o[0];
            var liS = o.getElementsByTagName('li');
            for(var i=0;i<liS.length;i+=1) {
              if ((i >= state.records[0]) && (i <= state.records[1])) {
                liS[i].style.display = 'block'; // show all that come in the range
              } else {
                liS[i].style.display = 'none';  // hide all the ones that don't need to showup
              }
            }
          }
        },
      insertPagerPlaceHolders = function() {
        // create the top pager
        var ul = YAHOO.util.Dom.getElementsByClassName('current', 'ul');
        if (ul && (1 == ul.length)) {
            ul = ul[0];
          var top_pager           = document.createElement('div');
              top_pager.id        = container_ids[0];
              top_pager.className = 'pager';

          var bottom_pager            = document.createElement('div');
              bottom_pager.id         = container_ids[1];
              bottom_pager.className  = 'pager';
          YAHOO.util.Dom.insertBefore(top_pager, ul);
          YAHOO.util.Dom.insertAfter(bottom_pager, ul);
        }
        
      },
      _init = function(event, args, params) {
        var lRecordsPerPage,
            lTotalRecords;

        if (params && (3 == params.length)) {
          lRecordsPerPage = params[0];
          lTotalRecords   = params[1];
          container_ids   = params[2];

          insertPagerPlaceHolders();
          createPager(lRecordsPerPage, lTotalRecords);
          pager.subscribe('changeRequest', handlePager);
          pager.render();
          handlePager(pager.getState());
        } else {
          // do stuff here to tell there isn't enough  params
        }
      };

    return {
      init: _init
    };
  }();
