<?php
/**
 *\licence GPL 2005-2010  The osCSS developers - osCSS Open Source E-commerce
 *\portion code Copyright (c) 2002 osCommerce
 *\package osCSS-2 <www http://www.oscss.org>
 *\version 2.1.0
 *\date  28/11/10, 08:18
 *\author oscim <mail aurelien@oscim.fr> <www http://www.oscim.fr>
 *\encode UTF-8
 *\group boxes
 *\file categories_tab_menu.php
 *\brief categories menu, use javascript.
*/
$DB=Database::getInstance();
global $tree, $categories_string, $sub_categories_string, $tab_javascript_counter, $cPath, $tab_js_counter_current_path, $template, $click_config;
$languages_id =$page->the_var('languages_id');
require_once(DIR_WS_CLASSES . 'category_tree.php');
$osC_CategoryTree = new category_tree;
$osCSS_Cache=new osCSS_Cache;
$cPath=$page->the_var('cPath');
$template=$page->the_template();

$click_config = 'true';  //(true ou false entre guillemet) parametre pour metre son menu au click et non au passage de la souris



  if (($osCSS_Cache->read('categoriesTabBox-' . $language .'-cpath-'.$cPath.'-type-'.'tab_menu_categories'/*.CLASSIC_CATEGORIES_TREE*/, 720) === false) ) {
    $osCSS_Cache->startBuffer();

  $tree = array();
  $categories_string = '';
  $sub_categories_string = '';
  $tab_javascript_counter = 0;
  $categories_query = $DB->query($sql="select c.categories_id, cd.categories_name, c.parent_id, c.sort_order from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = cd.categories_id and c.categories_status='1' and c.categories_hidden='1' and cd.language_id='" . $languages_id ."' order by c.sort_order asc ");
  $last_root = 0;
  $first_root = 0;


  while ($categories = $categories_query->fetchAssoc()) {
    $current_id = $categories['categories_id'];
    $parent_id = $categories['parent_id'];

    if (!isset($tree[$current_id])) {
      $tree[$current_id] = array();
      $tree[$current_id]['children'] = array();
      $tree[$current_id]['next'] = 0;
    }

    $tree[$current_id]['name'] = $categories['categories_name'];
    $tree[$current_id]['parent'] = $parent_id;
    $tree[$current_id]['order'] = $categories['sort_order'];

    if ($parent_id != 0) {
      if (!isset($tree[$parent_id])) {
        $tree[$parent_id] = array();
        $tree[$parent_id]['children'] = array();
      }

      $tree[$parent_id]['children'][] = $current_id;
    } else {
      if ($last_root == 0) {
        $last_root = $current_id;
        $first_root = $current_id;
      } else {
        $tree[$last_root]['next'] = $current_id;
        $last_root = $current_id;
      }
    }
  }

  if ($first_root != 0) {
    $categories_string = '' . "\n";
    $sub_categories_string = '' . "\n";
    $root = $first_root;

    do {
          $last_member = ($tree[$root]['next'] == 0) ? true : false;
          $categories_string.=tep_build_tree($tree, '', $root, $last_member);// tep_build_tree($root, $last_member);
          $root = $tree[$root]['next'];
        } while ($root != 0);

  }
?>
        <script type="text/javascript">
        <!--//
        /***********************************************************************************************

        Copyright (c) 2005 - Alf Magne Kalleland post@dhtmlgoodies.com

        Get this and other scripts at www.dhtmlgoodies.com

        You can use this script freely as long as this copyright message is kept intact.

        ***********************************************************************************************/

        var topMenuSpacer = 0; // Horizontal space(pixels) between the main menu items
        var activateSubOnClick = <?php echo $click_config; ?>; // if true-> Show sub menu items on click, if false, show submenu items onmouseover
        var leftAlignSubItems = false;  // left align sub items t

        var activeMenuItem = false;     // Don't change this option. It should initially be false
    <?php echo (isset($tab_js_counter_current_path)) ? 'var activeTabIndex = '.$tab_js_counter_current_path.';' : 'var activeTabIndex = 0;'; ?>
        // Index of initial active tab  (0 = first tab) - If the value below is set to true, it will override this one.
        var rememberActiveTabByCookie = false;  // Set it to true if you want to be able to save active tab as cookie

        var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
        var Opera = navigator.userAgent.indexOf('Opera')>=0?true:false;
        var navigatorVersion = navigator.appVersion.replace(/.*?MSIE ([0-9]\.[0-9]).*/g,'$1')/1;

        /*
        These cookie functions are downloaded from
        http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm
        */
        function Get_Cookie(name) {
           var start = document.cookie.indexOf(name+"=");
           var len = start+name.length+1;
           if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
           if (start == -1) return null;
           var end = document.cookie.indexOf(";",len);
           if (end == -1) end = document.cookie.length;
           return unescape(document.cookie.substring(len,end));
        }
        // This function has been slightly modified
        function Set_Cookie(name,value,expires,path,domain,secure) {
                expires = expires * 60*60*24*1000;
                var today = new Date();
                var expires_date = new Date( today.getTime() + (expires) );
            var cookieString = name + "=" +escape(value) +
               ( (expires) ? ";expires=" + expires_date.toGMTString() : "") +
               ( (path) ? ";path=" + path : "") +
               ( (domain) ? ";domain=" + domain : "") +
               ( (secure) ? ";secure" : "");
            document.cookie = cookieString;
        }

        function showHide()
        {
                if(activeMenuItem){
                        activeMenuItem.className = 'inactiveMenuItem';
                        var theId = activeMenuItem.id.replace(/[^0-9]/g,'');
                        document.getElementById('submenu_'+theId).style.display='none';
                        var img = activeMenuItem.getElementsByTagName('IMG');
                        if(img.length>0)img[0].style.display='none';
                }

                var img = this.getElementsByTagName('IMG');
                if(img.length>0)img[0].style.display='inline';

                activeMenuItem = this;
                this.className = 'activeMenuItem';
                var theId = this.id.replace(/[^0-9]/g,'');
                document.getElementById('submenu_'+theId).style.display='block';



                if(rememberActiveTabByCookie){
                        Set_Cookie('dhtmlgoodies_tab_menu_tabIndex','index: ' + (theId-1),100);
                }
        }

        function initMenu()
        {
                var mainMenuObj = document.getElementById('mainMenu');
                var menuItems = mainMenuObj.getElementsByTagName('A');
                if(document.all){
                        mainMenuObj.style.visibility = 'hidden';
                        document.getElementById('submenu').style.visibility='hidden';
                }
                if(rememberActiveTabByCookie){
                        var cookieValue = Get_Cookie('dhtmlgoodies_tab_menu_tabIndex') + '';
                        cookieValue = cookieValue.replace(/[^0-9]/g,'');
                        if(cookieValue.length>0 && cookieValue<menuItems.length){
                                activeTabIndex = cookieValue/1;
                        }
                }

                var currentLeftPos = 15;
                for(var no=0;no<menuItems.length;no++){
                        if(activateSubOnClick)menuItems[no].onclick = showHide; else menuItems[no].onmouseover = showHide;
                        menuItems[no].id = 'mainMenuItem' + (no+1);
                        menuItems[no].style.left = currentLeftPos + 'px';
                        currentLeftPos = currentLeftPos + menuItems[no].offsetWidth + topMenuSpacer;

                        var img = menuItems[no].getElementsByTagName('IMG');
                        if(img.length>0){
                                img[0].style.display='none';
                                if(MSIE && !Opera){
                                        img[0].style.bottom = '-1px';
                                        img[0].style.right = '-1px';
                                }
                        }

                        if(no==activeTabIndex){
                                menuItems[no].className='activeMenuItem';
                                activeMenuItem = menuItems[no];
                                var img = activeMenuItem.getElementsByTagName('IMG');
                                if(img.length>0)img[0].style.display='inline';

                        }else menuItems[no].className='inactiveMenuItem';
                        if(!document.all)menuItems[no].style.bottom = '-1px';
                        if(MSIE && navigatorVersion < 6)menuItems[no].style.bottom = '-2px';


                }

                var mainMenuLinks = mainMenuObj.getElementsByTagName('A');

                var subCounter = 1;
                var parentWidth = mainMenuObj.offsetWidth;
                while(document.getElementById('submenu_' + subCounter)){
                        var subItem = document.getElementById('submenu_' + subCounter);

                        if(leftAlignSubItems){
                                // No action
                        }else{
                                var leftPos = mainMenuLinks[subCounter-1].offsetLeft;
                                document.getElementById('submenu_'+subCounter).style.paddingLeft =  leftPos + 'px';
                                subItem.style.position ='absolute';
                                if(subItem.offsetWidth > parentWidth){
                                        leftPos = leftPos - Math.max(0,subItem.offsetWidth-parentWidth);
                                }
                                subItem.style.paddingLeft =  leftPos + 'px';
                                subItem.style.position ='static';


                        }
                        if(subCounter==(activeTabIndex+1)){
                                subItem.style.display='block';
                        }else{
                                subItem.style.display='none';
                        }

                        subCounter++;
                }
                if(document.all){
                        mainMenuObj.style.visibility = 'visible';
                        document.getElementById('submenu').style.visibility='visible';
                }
                document.getElementById('submenu').style.display='block';
        }
        window.onload = initMenu;
        //-->
        </script>

<?php
    echo "\n".'<div id="mainMenu">'.$categories_string.'</div>'."\n";
    echo "\n".'<div id="submenu">'. $sub_categories_string.'</div>'."\n";

    $osCSS_Cache->stopBuffer();

  }

  $array=array('title'=>__('categories menu'),'content'=>tep_output_string_protected($osCSS_Cache->getCache(),false,true));

?>