<?php
	//So das wird jetzt ein biscchen schwer zu verstehen sein, aber was solls	
	function getdir($dir)
	{
		global $user;
		$dh = @opendir(ROOT_DIR."/".$user->user_root_dir.$dir);
		$dirlist = array();
		while( gettype( $file = @readdir($dh)) != "boolean")
			if($file != "." && $file != "..")	
			{
				if(is_dir(ROOT_DIR."/".$user->user_root_dir.$dir.$file))
					$dirlist[] = $file;
			
			}
		closedir($dh);
		return $dirlist;
	}		
	//überprüft ob ein Verzeichnis noch ein Unterverzeichnis hat	
	//prüft wie viele Linienbilder vor einem Ordnernamen stehen müssen
	function tabulator($rank,$position)
	{
		global $dir,$template;
		$lines = "";	
		for($Z = 0; $Z < $dir['rank']; $Z++)//erst prüfen ob rank 0 noch vorkommt, dann rank 1 usw.
			$lines .= (!rank_neighbourhood($Z,$position))? "<img src='template/".$template->layoutname."/images/spacer.gif' border='0'>" : "<img src='template/".$template->layoutname."/images/simple_line.gif' border='0'>";
		
		Return $lines;
	}	
	//schaut ob eine bestimmte Ordnerebene(Rank) ab einer bestimmten
	//Position in directory_list noch vorkommt
	//wichtig um die Frage zu klären, ob eine senkrechte Linie noch angezeigt werden muss
	function rank_neighbourhood($rank,$position)
	{
		global $directory_list;
		for($I = $position + 1; $I < count($directory_list); $I++)
		{
			if($directory_list[$I]['rank'] < $rank)
				return false;
			elseif($directory_list[$I]['rank'] == $rank)
				return true;
		}
		return false;
	}	
	//Prüft ob die Bilder minus_corner.gif plus_croner.gif verwendet werden sollen
	function corner($position)
	{
		global $directory_list;	
		return (!IsSet($directory_list[$position+1]))? true : (($directory_list[$position]['rank'] <= $directory_list[$position + 1]['rank'] &&  rank_neighbourhood($directory_list[$position]['rank'],$position))? false: true);
	}	
	//Initialisiere $directory_list
	if(IsSet($_SESSION['dir_list']))
			$directory_list = $_SESSION['dir_list'];
	else
	{
		$directory_list = array();
		$sortlist = getdir("");
		sort($sortlist);
		foreach($sortlist as $file)
			$directory_list[] = array("path"=>$file."/", "name"=>$file, "rank"=>0 ,"open"=>"0");
	}
	
	//Bei Klick auf ein Plus
	if(IsSet($_GET['open']) && count(getdir($_GET['open']) != 0))
	{
		$temp_list = $directory_list;
		$directory_list = array();
		foreach($temp_list as $dir)
		{		
			$directory_list[] = $dir;        
			if($dir['path'] == $_GET['open'] && $dir['open'] == 0)  //aber nur wenn noch nicht offen ist
			{
				$directory_list[count($directory_list) -1]['open'] = 1; //aufmachen
				$sortlist = getdir($dir['path']);
				sort($sortlist);
				foreach($sortlist as $file)
					$directory_list[] = array("path"=>$dir['path']."".$file."/", "name"=>$file, "rank"=>$dir['rank']+1 ,"open"=>"0");
			}
		}
	}

	//bei Klick auf ein Kästchen mit einem Minus drauf
	if(IsSet($_GET['close']))
	{
		$temp_list = $directory_list;
		$directory_list = array();
		foreach($temp_list as $dir)
		{		
			if($dir['path'] == $_GET['close'])//wird wieder als geschloßen in Liste eingetragen
			{
				$dir['open'] = 0;
				$directory_list[] = $dir;
			}
			//alles was ncht unterverzeichnis von $_GET['close'] ist wird eingeteragen
			if($_GET['close'] != "")	//bei ROOT_DIR ist parameter leer
			{
				if(! strstr($dir['path'], $_GET['close']))
					$directory_list[] = $dir;
			}
		}
	}
	
	$i = 0;
	$dir_tree = "<div class='div_directories'>";
	$dir_tree .= "<img src='template/".$template->layoutname."/images/folder.gif'><a class='".(($_GET['dir']=="")?"tree_active":"explorer")."' href='index.php'>../</a><br>";
	foreach($directory_list as $dir)
	{
		if(file_exists(ROOT_DIR."/".$user->user_root_dir."/".$dir['path']))
		{
			$dir_tree .= tabulator($dir['rank'], $i);
			if(count(getdir($dir['path'])) > 0 && $dir['open'] != 1)
				$dir_tree .= "<a class='explorer' href='index.php?dir=".$verzname."&amp;open=".$dir['path']."'><img src='template/".$template->layoutname."/images/plus".((corner($i))?"_corner": "").".gif' border='0'></a>";
			elseif(count(getdir($dir['path'])) == 0)
					$dir_tree .= "<img src='template/".$template->layoutname."/images/join".((corner($i))?"_corner": "").".gif'>";
			elseif($dir['open'] == 1)
					$dir_tree .= "<a class='explorer' href='index.php?dir=".$verzname."&amp;close=".$dir['path']."'><img src='template/".$template->layoutname."/images/minus".((corner($i))?"_corner": "").".gif' border='0'></a>";
		
			$dir_tree .= "<a class='".(($dir['path'] == $verzname)? "tree_active" : "explorer")."' href='index.php?dir=".$dir['path']."'><img src='template/".$template->layoutname."/images/folder.gif' border='0'>&nbsp; ".$dir['name']."</a><br>";		
		}
		$i++;
	}
	$dir_tree .= "</div>";	
	$_SESSION['dir_list'] = $directory_list;
?>