<?php
/*
  $Id: categories.php,v 1.4 2007/05/08 01:48:37 ryu Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2002 osCommerce

  Released under the GNU General Public License
  
  modified for Koshoten.net2
  http://www.koshoten.net/
*/

  function tep_show_category($counter) {
    global $foo, $categories_string, $id;
    
    if ($foo[$counter]['level'] > $foo[$counter]['prev_level']) {
      $categories_string .= "\n<ul>\n";
    } else if ($foo[$counter]['level'] < $foo[$counter]['prev_level']) {
      for ($a=$foo[$counter]['level']; $a<$foo[$counter]['prev_level']; $a++) {
        $categories_string .= "</li>\n</ul>\n";
      }
      $categories_string .= "</li>\n";
    } else {
      $categories_string .= "</li>\n";
    }

    if ( ($id) && (in_array($counter, $id)) ) {
      $categories_string .= '<li class="active">';
    } else {
      $categories_string .= '<li>';
    }

    $categories_string .= '<a href="';

    if ($foo[$counter]['parent'] == 0) {
      $cPath_new = 'cPath=' . $counter;
    } else {
      $cPath_new = 'cPath=' . $foo[$counter]['path'];
    }

    $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new);
    $categories_string .= '">';

// display category name
    $categories_string .= $foo[$counter]['name'];

    if (tep_has_category_subcategories($counter)) {
      $categories_string .= '&raquo;';
    }

    $categories_string .= '</a>';

    if (SHOW_COUNTS == 'true') {
      $products_in_category = tep_count_products_in_category($counter);
      if ($products_in_category > 0) {
        $categories_string .= '(' . $products_in_category . ')';
      }
    }

    if ($foo[$counter]['next_id']) {
      tep_show_category($foo[$counter]['next_id']);
    } else {
      $categories_string .= "</li>\n</ul>\n";
    }
  }
?>
<!-- categoriesBox -->
<?php
  $cssid = 'categoriesBox';
  $infobox_header = BOX_HEADING_CATEGORIES;

  $categories_string = '';

  unset($prev_id);
  unset($first_element);
  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
  while ($categories = tep_db_fetch_array($categories_query))  {
    $foo[$categories['categories_id']] = array(
                                        'name' => $categories['categories_name'],
                                        'parent' => $categories['parent_id'],
                                        'level' => 0,
                                        'path' => $categories['categories_id'],
                                        'prev_level' => 0,
                                        'next_id' => false
                                       );

    if (isset($prev_id)) {
      $foo[$prev_id]['next_id'] = $categories['categories_id'];
    } else {
      $foo[$categories['categories_id']]['prev_level'] = -1;
    }

    $prev_id = $categories['categories_id'];

    if (!isset($first_element)) {
      $first_element = $categories['categories_id'];
    }
  }

  //------------------------
  if ($cPath) {
    $new_path = '';
    $id = explode('_', $cPath);
    reset($id);
    while (list($key, $value) = each($id)) {
      unset($prev_id);
      unset($first_id);
      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
      $category_check = tep_db_num_rows($categories_query);
      if ($category_check > 0) {
        $new_path .= $value;
        while ($row = tep_db_fetch_array($categories_query)) {
          unset($root_next_id);
          if (!isset($root_next_id)) {
            $root_next_id = $foo[$value]['next_id'];
          }
          $foo[$row['categories_id']] = array(
                                              'name' => $row['categories_name'],
                                              'parent' => $row['parent_id'],
                                              'level' => $key+1,
                                              'path' => $new_path . '_' . $row['categories_id'],
                                              'prev_level' => $key,
                                              'next_id' => false
                                             );

          if (isset($prev_id)) {
            $foo[$prev_id]['next_id'] = $row['categories_id'];
            $foo[$row['categories_id']]['prev_level'] = $foo[$prev_id]['level'];
          }

          $prev_id = $row['categories_id'];

          if (!isset($first_id)) {
            $first_id = $row['categories_id'];
          }

          $last_id = $row['categories_id'];
        }
        $foo[$last_id]['next_id'] = $foo[$value]['next_id'];
        $foo[$value]['next_id'] = $first_id;
        $foo[$root_next_id]['prev_level'] = $foo[$last_id]['level'];
        $new_path .= '_';
      } else {
        break;
      }
    }
  }
  tep_show_category($first_element); 

  $infobox_contents = array();
  $infobox_contents[] = array('text'  => $categories_string);

  new infoBox($cssid, $infobox_contents, $infobox_header);
?>
<!-- /categoriesBox -->
