<?php
$start=microtime(1);

$values=array();
function p($x)
{
    global $values;
    if (isset($values[$x]))
	print $values[$x];
    else
	print "<span style='background-color:red;color:black;'>Variable $x nicht gefunden.</span>";
}
function get_data($dir)
{
    static $cache=array();
    if (!isset($cache[$dir])) {
	if (file_exists("$dir/system.data.txt")) {
	    $a=file("$dir/system.data.txt");
	} else
	    $a=array();
	$e=array();
	foreach ($a as $s) {
	    $s=trim($s);
	    if (strlen($s)==0 || $s[0]='#')
		continue;
	    if (preg_match("/^(\S+)\s+(.*)$/",$s,$m)) {
		$e[$m[1]]=$m[2];
	    }
	}
	$cache[$dir]=$e;
    }
    return $cache[$dir];
}
function dir_listing($page)
{
    global $values;
    $c="";
    $logo="";
    $mainpage=$page;
    $title="";
    if (file_exists("$page/system.description.txt"))
	$values['description']=htmlspecialchars(trim(file_get_contents("$page/system.description.txt")));
    if (file_exists("$page/system.logo.jpg"))
	$logo="$page/system.logo.jpg";
    if (file_exists("$page/system.title.txt"))
	$title=trim(file_get_contents("$page/system.title.txt"));
    $sub="";
    $titleadd="";
    if (!empty($_GET['sub'])) {
	$sub=trim($_GET['sub']);
	if ($sub=='.')
	    $sub="";
	if ($sub>'' && !preg_match("%/%",$sub) && $sub!='thumbs' && file_exists("$page/$sub") && is_dir("$page/$sub")) {
	    $page="$page/$sub";
	    if (file_exists("$page/system.logo.jpg"))
		$logo="$page/system.logo.jpg";
	    if (file_exists("$page/system.title.txt")) {
		$title=trim(file_get_contents("$page/system.title.txt"));
		$titleadd=$title;
	    }
	}
    }
    if ($title>'')
	$values['title']=$title;
    if ($logo=='')
	return;

    $c.="<div id='imagepage'>";
    $c.="<div id='contenthead'>";
    if ($mainpage!=$page) {
	$c.="<a class='pagelogo' style='border:0' href='index.php/$mainpage' title='Zurück'>"
	   ."<img style='border:0' src='$logo' alt='' /></a>";
    } else {
	$c.="<img class='pagelogo' src='$logo' alt='' />";
    }
    if ($titleadd) {
	$c.="<h3 class='contenttitleadd'>".$titleadd."</h3>";
    }
    $c.="</div>";

    $c.="<div id='imagetitle'>\n";
    if (file_exists("$page/system.title.txt")) 
	$c.=file_get_contents("$page/system.title.txt");
    $c.="</div>";

    $c.="<div id='imageareaintro'>\n";
    if (file_exists("$page/system.intro.html")) 
	$c.=file_get_contents("$page/system.intro.html");
    $fl=scandir($page);
    $a=array();
    $info=array();
    $subdirs="";
    if (file_exists("$page/system.order.txt")) {
	$lines=file("$page/system.order.txt");
	foreach ($lines as $l) {
	    $l=trim($l);
	    $i=false;
	    if (preg_match("/^([^;]+);\s*(.*)$/",$l,$m)) {
		$l=trim($m[1]);
		$r=preg_split("/\s*;\s*/",$m[2]);
		if (!empty($r[0])) $i['title-de']=$r[0];
		if (!empty($r[1])) $i['title-lat']=$r[1];
		if (!empty($r[2])) $i['title-en']=$r[2];
	    }
	    if ($l>'' && $l[0]!='#' && file_exists("$page/$l")) {
		$a[$l]=count($a);
		if (is_array($i))
		    $info[$l]=$i;
	    }
	}
    }
    foreach ($fl as $f) {
	if (preg_match("/\.jpg$/",$f)) {
	    if (strncmp($f,"system.",7)) {
		if (!isset($a[$f])) {
		    $a[$f]=count($a);
		}
		$stamm="$page/$f";
		$stamm=preg_replace("/\.jpg/","",$stamm);
		if (file_exists("$stamm.html")) {
		    $i=file_get_contents("$stamm.html");
		    if (!isset($info[$f])) $info[$f]=array();
		    $info[$f]['html']=$i;
		}
		if (file_exists("$stamm.txt")) {
		    $i=trim(file_get_contents("$stamm.txt"));
		    if (!isset($info[$f])) $info[$f]=array();
		    $info[$f]['title-de']=$i;
		}
		if (file_exists("$stamm.en.txt")) {
		    $i=trim(file_get_contents("$stamm.en.txt"));
		    if (!isset($info[$f])) $info[$f]=array();
		    $info[$f]['title-en']=$i;
		}
		if (file_exists("$stamm.lat.txt")) {
		    $i=trim(file_get_contents("$stamm.lat.txt"));
		    if (!isset($info[$f])) $info[$f]=array();
		    $info[$f]['title-lat']=$i;
		}
	    }
	} else if (is_dir("$page/$f")) {
	    if ($f!='thumbs' && $f[0]!='.') {
		$t=trim(@file_get_contents("$page/$f/system.title.txt"));
		if (empty($t))
		    $t=$f;
		$subdirs.="<li><a href='index.php/$mainpage?sub=$f'>".htmlspecialchars($t)."</a></li>\n";
	    }
	}
    }
    if ($subdirs) {
	$c.="<ul class='subdirs'>$subdirs</ul>";
    }
    $c.="</div>\n";
    $start=0;
    if (isset($_GET['start'])) {
	$start=intval($_GET['start']);
    }
    if ($start>=count($a))
	$start=0;
    $perpage=10;
    $seiten=intval((count($a)+$perpage-1)/$perpage);
    if ($seiten>1) {
	$pagenum=intval($start/$perpage)+1;
	$c.="<div id='pager'>";
	$n=($pagenum-2)*$perpage;
	if ($n<0) $n=0;
	$c.="<a href='index.php/$mainpage?start=$n'>Seite zurück</a>";
	$c.=" $pagenum / $seiten ";
	$n=($pagenum)*$perpage;
	if ($pagenum>=$seiten)	
	    $n=($seiten-1)*$perpage;

	$c.="<a href='index.php/$mainpage?start=$n'>Seite vor</a>";
	$c.="</div>";
    }
    $c.="<div id='imagearea'>\n";
    $idx=0;
    foreach ($a as $f=>$o) {
	if (!file_exists("$page/thumbs/$f")) {
	    if (!file_exists("$page/thumbs/auto.$f")) {
		$sz=getimagesize("$page/$f");
		if (empty($sz[0]))
		    continue;
		if (empty($sz[1]))
		    continue;
		$w=$sz[0];
		$h=$sz[1];
		$zw=160;
		$zh=120;

		$fac=$w/$zw;
		$sx=0;
		$sy=0;
		$nh=intval($h/$fac);
		if ($nh==$zh) {
		    $case=0;
		} else if ($nh<$zh) {
		    $fac=$h/$zh;
		    $tmp=intval($zw*$fac);
		    $sx=intval(($w-$tmp)/2);
		    $case=1;
		} else {
		    $fac=$w/$zw;
		    $tmp=intval($zh*$fac);
		    $sy=intval(($h-$tmp)/2);
		    $case=2;
		}
		$img=imagecreatefromjpeg("$page/$f");
		if ($img===false)
		    continue;
		$thumb=imagecreatetruecolor($zw, $zh);
		imagecopyresampled($thumb, $img, 0, 0, $sx,$sy, $zw, $zh, $w-$sx, $h-$sy);
		$aus="($sx..$sy to ".($w-$sx)."..".($h-$sy).")";
		if (!file_exists("$page/thumbs"))
		    mkdir("$page/thumbs",0755);
		imagejpeg($thumb,"$page/thumbs/auto.$f");
		$use="$page/thumbs/auto.$f";
	    } else
		$use="$page/thumbs/auto.$f";
	} else
	    $use="$page/thumbs/$f";
	$title="";
	$na="";
	$titletag="";
	$titlelat="";
	if (isset($info[$f])) {
	    if (isset($info[$f]['title-lat'])) {
		$titlelat=$info[$f]['title-lat'];
	    }
	    if (isset($info[$f]['title-de']))
		$title=$info[$f]['title-de'];
	    else if (isset($info[$f]['title-lat'])) {
		$title=$info[$f]['title-lat'];
		$info[$f]['title-lat']="";
	    } else if (isset($info[$f]['title-en'])) {
		$title=$info[$f]['title-en'];
		$info[$f]['title-en']="";
	    }
	    $titletag=" title='".htmlspecialchars($title)."' ";
	    $zus="";
	    if (isset($info[$f]['title-lat']) && isset($info[$f]['title-en'])) {
		$zus.="<div class='more-title2'>".htmlspecialchars($info[$f]['title-lat']);
		$zus.=" -- ".htmlspecialchars($info[$f]['title-en'])."</div>";
	    } else if (isset($info[$f]['title-lat']))
		$zus.="<div class='more-title2'>".htmlspecialchars($info[$f]['title-lat'])."</div>";
	    else if (isset($info[$f]['title-en']))
		$zus.="<div class='more-title2'>".htmlspecialchars($info[$f]['title-en'])."</div>";
	    if (isset($info[$f]['html']))
		$zus.="<div class='more-text'>".$info[$f]['html']."</div>";
	    if ($zus>'') {
		$c.="<div style='display:none' id='info-$o'>$zus</div>\n";
		$na=" name='info-$o' ";
	    }
	}
	if ($na>'') {
	    $c_add="withinfo";
	} else {
	    $c_add="withoutinfo";
	}
	if ($idx<$start) {
	    $c.="<a id='picture-$o' class='gal-thumb $c_add' $na rel='thumblist' style='display:none'>"
	       ."<img src='' alt='' />"
	       ."<br /><span class='thumbtitle'></span>"
	       ."</a>\n";
	    $c.="<script type='text/javascript'>";
	    $c.="    var e=\$('#picture-$o');\n";
	    $c.="    e.attr('href','$page/$f');\n";
	    $c.="    e.attr('title','".htmlspecialchars($title,ENT_QUOTES)."');\n";
	    $c.="    var e=\$('#picture-$o img');\n"; # thumb
	    $c.="    e.attr('src','$use');\n";
	    $c.="</script>\n";
	} else if ($idx<$start+$perpage) {
	    $c.="<a id='picture-$o' class='gal-thumb $c_add' $na $titletag rel='thumblist' href='$page/$f'>"
	       ."<img src='$use' alt='' />"
	       ."<br /><span class='thumbtitle'>";
	    if ($title>'')
		$c.=htmlspecialchars($title);
	    if ($titlelat>'')
		$c.="<br />".htmlspecialchars($titlelat);
	    $c.="</span>"
	       ."</a>\n";
	} else {
	    $c.="<a id='picture-$o' class='gal-thumb $c_add' $na rel='thumblist' style='display:none'>"
	       ."<img src='' alt='' />"
	       ."<br /><span class='thumbtitle'></span>"
	       ."</a>\n";
	    $c.="<script type='text/javascript'>";
	    $c.="    var e=\$('#picture-$o');\n";
	    $c.="    e.attr('href','$page/$f');\n";
	    $c.="    e.attr('title','".htmlspecialchars($title,ENT_QUOTES)."');\n";
	    $c.="    var e=\$('#picture-$o img');\n"; # thumb
	    $c.="    e.attr('src','$use');\n";
	    $c.="</script>\n";
	}
	$idx++;
    }
    $c.="</div>";
    $c.="</div>";
    return $c;
}
$values['title']=trim(@file_get_contents("system.title.txt"));
$values['titleadd']=rtrim(@file_get_contents("system.titleadd.txt"));
$values['description']=htmlspecialchars(@file_get_contents("system.description.txt"));

$gal="";
$content="";
if (isset($_GET['g'])) {
    $gal=$_GET['g'];
    $gal=preg_replace("/\.p$/","",$gal);
}
$pi=$_SERVER['PATH_INFO'];
if ($pi>'' && $gal=='') {
    $gal=substr($pi,1);
}
if ($gal>'' && file_exists("$gal.html")) {
    $content=file_get_contents("$gal.html");
}
if ($gal>'' && file_exists($gal) && is_dir($gal)) {
    $content=dir_listing($gal);
}
if (empty($content)) {
    $content=file_get_contents("indexpage.html");
}
$values['content']=$content;


#Menü aufbauen.
$menu="";
#$dl=scandir(".");
$dl=file("system.menu.order.txt");
foreach ($dl as $e) {
    $e=trim($e);
    if (is_dir($e)) {
	$have_image=file_exists("$e/system.menu.jpg");
	if ($have_image) {
	    $current="";
	    if ($e==$gal)
		$current=' current';
	    $d=get_data($e);
	    $n=$e;
	    $ti="";
	    if (file_exists("$e/system.title.txt")) {
		$n=trim(file_get_contents("$e/system.title.txt"));
		$ti=$n;
	    }
	    if (file_exists("$e/system.menu.txt")) 
		$n=trim(file_get_contents("$e/system.menu.txt"));
	    if (!empty($ti))
		$ti=" title='".htmlspecialchars($ti)."' ";

	    $menu.="<a class='menuentry $current' href='index.php/$e' $ti>";
	    $menu.="<img src='$e/system.menu.jpg' alt=''/>";
	    $menu.="<span class='menutext'>";
	    $menu.=htmlspecialchars($n);
	    $menu.="</span>";
	    $menu.="</a>";
	}
    }
}
$values['menu']=$menu;
$end=microtime(1);
$values['time']=($end-$start);

require_once("page.tpl");
print "<!-- Debug: \n";
var_export($_REQUEST);
var_export($_SERVER);
print "\n-->\n";

?>
