<?php

$homeitem = array ( 'en' => 'Home', 'it' => 'Inizio', );
	       
function treescan($dirname='.', $level='0') {

    $hidden = array ("main", "css");    
    global $MYSETUP;
    global $MYARGS;
    global $lang;
    global $homeitem;
    $breadcrumb = explode("/",$MYARGS['page']);

    if ("/"!=substr($dirname,-1)) $relpath=$dirname."/";
    if ("."==$dirname) $relpath="";

    
    if (false==($dh=opendir($dirname))) {
	echo "Could not open ".$dirname.".\n";
	return "error";
    };

    $dirlist=array();

    while (false !== ($entry = readdir($dh))) 	{
	// echo $entry, " dir-".is_dir($relpath.$entry), " arr-".!in_array($entry,$hidden), " sys-".("." != substr($entry,0,1)), "\n" ;
	if (is_dir($relpath.$entry) && !in_array($entry,$hidden) && ("." != substr($entry,0,1)) && ("_" != substr($entry,0,1)) ) {	    

	    if (file_exists($relpath.$entry."/content.php")) {

		if (file_exists($relpath.$entry."/menuentry.php")) {
		    include $relpath.$entry."/menuentry.php";
		    $menuitem=$menuentry[$lang];
		} else {
		    $menuitem=ucfirst(str_replace("/"," ",htmlentities($entry)));
		}
		
		if (empty($menuitem)) {
		    echo "$entry"." caused a menu generation error.\n";
		    var_dump($menuentry);
		    return "error";
		}
		
		$dirlist[$entry]=$menuitem;
		unset($menuitem);
		unset($menuentry);

	    }
	}

	
    }
    
    closedir($dh);

    if (0<count($dirlist)) {

      echo '<ul class="menulevel'.$level."\">\n" ;
      if ('0' == $level) {
	echo '<li class="menulevel'.$level.'"><a href="'.$MYSETUP['baseUrl'].'/index.php?page=home">'.$homeitem[$lang]."</a>\n";
      }
      foreach ($dirlist as $k => $v ) {
	if ('0' != $level || $v != "Home" ) {
	  if ($k == $breadcrumb[$level]) $cl="active "; else $cl="";
	  echo '<li class="menulevel'.$level.'"><a class="'.$cl.'" href="'.$MYSETUP['baseUrl'].'/index.php?page='.$relpath.$k.'">'.$v."</a>\n";
	  if ($k == $breadcrumb[$level]) if ("error" == treescan($relpath.$k,$level+1)) return "error";
	}
      }
      echo "</ul>\n";
    }
	
    return;

  }

echo treescan()."\n";
?>

