function showCategories()
 {
     global $mainframe, $option;
     $db =& JFactory::getDBO();
     $filter_order = $mainframe->getUserStateFromRequest("{$option}.filter_order_catgories", 'filter_order', 'm.ordering', 'cmd');
     $filter_order_Dir = $mainframe->getUserStateFromRequest("{$option}.filter_order_Dir_catgories", 'filter_order_Dir', '', 'word');
     $limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
     $limitstart = $mainframe->getUserStateFromRequest($option . 'limitstart_book', 'limitstart', 0, 'int');
     $orderby = ' ORDER BY ' . $filter_order . ' ' . $filter_order_Dir;
     $query = 'SELECT COUNT(m.id)' . ' FROM #__flippingbook_categories AS m';
     $db->setQuery($query);
     $total = $db->loadResult();
     jimport('joomla.html.pagination');
     $pageNav = new JPagination($total, $limitstart, $limit);
     $query = 'SELECT m.*, COUNT(d.id) AS numoptions' . ' FROM #__flippingbook_categories AS m' . ' LEFT JOIN #__flippingbook_books AS d ON d.category_id = m.id' . ' GROUP BY m.id' . $orderby;
     $db->setQuery($query, $pageNav->limitstart, $pageNav->limit);
     $rows = $db->loadObjectList();
     if ($db->getErrorNum()) {
         echo $db->stderr();
         return false;
     }
     // table ordering
     $lists['order_Dir'] = $filter_order_Dir;
     $lists['order'] = $filter_order;
     require_once JPATH_COMPONENT . DS . 'views' . DS . 'category_manager.php';
     CategoryManager::showCategories($rows, $pageNav, $option, $lists);
 }