/**
  * Gibt die Navigation in Form eines Arrays zurück
  *
  * @return array Navigation
  */
 private function _getMenues()
 {
     static $nav_arr = null;
     /* Navigation nur Aufrufen, falls dies noch nicht getan wurde */
     if (!is_array($nav_arr)) {
         $nav_arr = array();
         $topid_arr = array();
         $page = new Page($this->_smarty, $this->_mysql);
         $this->_mysql->query("SELECT `menu_topid`, COUNT(*) as 'count' FROM `menu` GROUP BY `menu_topid`");
         $i = 0;
         while (($data = $this->_mysql->fetcharray('assoc')) !== false) {
             $topid_arr[$i] = (int) $data['menu_topid'];
             $i++;
         }
         $page->let_build_menu_array($topid_arr, $nav_arr, false, true);
     }
     return $nav_arr;
 }
 /**
  * Gibt die Navigation in Form eines Arrays zurück
  *
  * @param int $start Start
  * @param int $number Anzahl
  * @param boolean $unit_topid untergeordnete Menus eines Topid-Menus (topid = 0) nicht trennen
  * @return array Navigation
  */
 private function _getMenues($start = null, $number = null, $unit_topid = true)
 {
     static $nav_arr = null;
     static $count_nav = null;
     /* Navigation nur Aufrufen, falls dies noch nicht getan wurde */
     if (!is_array($nav_arr)) {
         $nav_arr = array();
         $topid_arr = array();
         $page = new Page($this->_smarty, $this->_mysql);
         $this->_mysql->query("SELECT `menu_topid`, COUNT(*) as 'count' FROM `menu` GROUP BY `menu_topid`");
         $i = 0;
         while (($data = $this->_mysql->fetcharray('assoc')) !== false) {
             $topid_arr[$i] = (int) $data['menu_topid'];
             $i++;
         }
         $page->let_build_menu_array($topid_arr, $nav_arr, false, true, true, array('menu_position', 'menu_pagetyp', 'menu_display'));
         $count_nav['all'] = count($nav_arr);
         $count_nav['top'] = array();
         $i = 0;
         $count_nav['top'][0] = 0;
         foreach ($nav_arr as $value) {
             if ($value['menu_topid'] == 0) {
                 //$i = $value['menu_ID'];
                 $i++;
                 $count_nav['top'][$i] = 1;
             } else {
                 $count_nav['top'][$i]++;
             }
         }
     }
     /* Hier wird nun der Bereich ausgewertet, welcher Teil des Menus zurückgegeben werden soll */
     if (isset($start)) {
         /* ist $unit_tropid true, wird eine topid = 0 und die darunterliegenden Menupunkte NICHT
          * getrennt, auch wenn die Anzahl der Menupunkte grösser ist als $number
          * Hat z.B. news (topid = 0) 10 darunterliegende Menupunkte, aber $number ist 7, wird news nicht
          * aufgeteilt, sondern als Einheit bewahrt. */
         if ($unit_topid == true) {
             $start = (int) $start;
             $count_start = 0;
             /*$i ist das Startelement von $nav_arr*/
             /* Die Anzahl Menupunkte für ein Topid (topid-menupunkt und darunterliegende)
              * sind in $count_nav['top'] aufgelistet. In dieser Schleife werden nun die
              * Anzahl Menupunkte zusammengezählt (speichern in $count_start), bis $start
              * erreicht wird. Ist $count_start nun grösser als $start, spielt das insofern
              * keine Rolle, weil die Topids zusammengehalten werden. */
             for ($i = 0; $count_start < $start && $i < count($count_nav['top']); $i++) {
                 $count_start += $count_nav['top'][$i];
             }
             if (isset($number)) {
                 $number = (int) $number;
                 $count_number = 0;
                 /* Selbes Vorgehen wie bei der vorherigen For-Schleife */
                 for ($j = $i; $count_number < $count_start + $number && $j < count($count_nav['top']); $j++) {
                     $count_number += $count_nav['top'][$j];
                 }
                 return array_slice($nav_arr, $count_start, $count_number);
             } else {
                 return array_slice($nav_arr, $count_start);
             }
         } else {
             /* Topids werde nicht zusammengehalten => einfaches Aufsplitten der Menues */
             if (isset($number)) {
                 return array_slice($nav_arr, $start, $number);
             } else {
                 return array_slice($nav_arr, $start);
             }
         }
     }
     /* Ohne Angabe von $start wird die gesammte Navigation zurückgegeben */
     return $nav_arr;
 }