/**
  * Render the page navigation
  *
  * @param Zym_Paginate_Abstract $paginate
  * @param int $limit
  * @return string
  */
 protected function _renderPages(Zym_Paginate_Abstract $paginate)
 {
     $xhtml = '';
     $currentPageNumber = $paginate->getCurrentPageNumber();
     $centerOffset = floor($this->_pageLimit / 2);
     $lastPageNumber = $paginate->getPageCount();
     if ($currentPageNumber <= $centerOffset) {
         $startNumber = 1;
         $endNumber = $this->_pageLimit;
     } else {
         if ($currentPageNumber >= $lastPageNumber - $centerOffset) {
             $startNumber = $lastPageNumber - $this->_pageLimit + 1;
             $endNumber = $lastPageNumber;
         } else {
             $startNumber = $currentPageNumber - $centerOffset;
             if ($this->_pageLimit % 2 == 0) {
                 $startNumber++;
             }
             $endNumber = $currentPageNumber + $centerOffset;
         }
     }
     for ($i = $startNumber; $i <= $endNumber; $i++) {
         $pageLocation = array_merge($this->_targetLocation, array($this->_currentPageAttrib => $i));
         if ($i == $currentPageNumber) {
             $xhtml .= $this->_renderActiveListItem($pageLocation, $i);
         } else {
             $xhtml .= $this->_renderListItem($pageLocation, $i);
         }
     }
     return $xhtml;
 }