<?php 
        $delay=2;

        function allowed_dir($dir)
        {
          if ($dir=="") $dir=".";
          $handle = fopen("allowed_dirs.xxc", "r");
          $ok = 0;
          while (!feof($handle))
          {
            $dira = str_replace("\n",'',fgets($handle));
            if ($dira==$dir) return 1;
          }
          return 0;
        }
        
        function _get($nazwa)
        {
          return isset($_GET[$nazwa]) ? $_GET[$nazwa] : "";
        }

	$sciagaj=_get('plik');
//	if ($sciagaj!="")
//	  $dir = substr(strstr($_SERVER['HTTP_REFERER'], "?dir="), 5);
//	else
          $dir = _get('dir');
        if ($dir=="") $dir=".";
        if (!allowed_dir($dir))
        {
          echo "Katalog niedostepny $dir\n";
          die;
        }
      
      function licz($plik, $show)
      {
	$plik .= ".licz";
	if (file_exists($plik)){
		$handle = fopen($plik, "r");
		$lx = fscanf($handle, "%d");
		fclose($handle);
		list ($licznik) = $lx;
		$licznik = $licznik+1;
		if ($show==1)
  		  echo "<p>Licznik: $licznik</p>";
		if ($show==2)
  		  echo " (licznik: $licznik)";
                $tmp = tempnam("", "licznik");
		$handle = fopen($tmp, "w");
		fwrite($handle, $licznik);
		fclose($handle);
		rename($tmp, $plik);
	}
      }
        $lang=_get('lang');
        $lang = ($lang=="pl") ? "_pl" : "";

//////// SCIAGAJ PO NAZWIE

    if ($sciagaj!="") {
        $plik = $dir."/".$sciagaj;
        if (preg_match("%/%", $sciagaj) || !file_exists($plik))
        {
                echo "ERROR!!!";
                die;
        }
        header("Location: $plik");
        if (is_file($plik))
          licz("$plik", false);
        die;
    }
        
///////////////////////////////////////////////
      $nrf = _get('file');
      if ($nrf!="")
      {
  	$filename = "$dir/FILES.xxc";
	if (file_exists($filename)){
  	  $handle = fopen($filename, "r");
	  $nr = 0;
	  while (!feof($handle))
	  {
	    list ($plik, $size, $date, $time, $remote) = 
	      fscanf($handle, "%s %d %s %s %s ");
            if ($plik=="") continue;
            if ($nr==$nrf)
            {
              if (strlen($remote)<=1) $remote="$dir/";
  	      header("Location: $remote"."$plik");
	      licz("$dir/$plik", false);
	      die;
            }
            $nr = $nr+1;
          }
	}
          
        echo "ERROR!!!\n";
        die;
      }

///////////////////////////////////////////////        
	$tytul = htmlentities($dir);
	if (file_exists("$dir/TITLE$lang.xx"))
	{
		$handle = fopen("$dir/TITLE$lang.xx", "r");
		$tytul = fread($handle, filesize("$dir/TITLE$lang.xx"));
		fclose($handle);
	}
	
	function is_utf($dir) {
           return file_exists("$dir/UTF-8.xx");
	}
	
	function start_page($tytul, $dir)
	{
	   if (is_utf($dir))
              header("Content-Type: text/html; charset=utf-8"); 
	   else
              header("Content-Type: text/html; charset=iso-8859-2"); 
           echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<HTML>\n<HEAD>\n";
           global $css;
           if (file_exists("$dir/style.css")) {
              echo "<LINK REL=\"stylesheet\" HREF=\"$dir/style.css\">\n";
              $css = 1;
           }
           else
              $css = 0;
	   if (is_utf($dir))
	      echo "<meta http-equiv=\"Content-type\" content=\"text/html; charset=UTF-8\">\n";
           else
              echo "<meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-2\">\n";
           echo "<TITLE>" . htmlspecialchars($tytul, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, is_utf($dir) ? null : 'ISO-8859-1') . "</TITLE>\n</HEAD>\n<BODY";
           if (file_exists("$dir/MAPS.xx"))
           {
                echo " onload=\"load()\" onunload=\"GUnload()\"";
           }
           echo ">\n";
	}
	
	function stop_page()
	{
          echo "<p>\n<a href=\"http://validator.w3.org/check?uri=referer\" onclick=\"this.href='http://validator.w3.org/check?uri=' + document.URL\">" .
            "<img border=\"0\"\nsrc=\"http://www.w3.org/Icons/valid-html40\"" .
            "\nalt=\"Valid HTML 4.0!\" height=\"31\" width=\"88\"></a>\n";
          global $css;
          if ($css) 
            echo "<a href=\"https://jigsaw.w3.org/css-validator/check/referer\">\n" .
              "<img style=\"border:0;width:88px;height:31px\" src=\"https://jigsaw.w3.org/css-validator/images/vcss\" alt=\"Valid CSS!\">\n</a>\n";
          echo "</p>\n</BODY>\n</HTML>\n";
	}
	
	function show_desc($przed, $plik, $po)
	{
                $filename = "$plik.desc";
                if (file_exists($filename))
                {
                    $handle2 = fopen($filename, "r");
                    $contents = fread($handle2, filesize($filename));
                    fclose($handle2);
                    echo $przed . htmlspecialchars($contents) . $po;
                }
	}

///////////////////////////////////////////////

        function daj_url($cel)
        {
            global $dir;
            return "?dir=".$dir."&amp;plik=".$cel;
        }

        function a_href($opis)
        {
            global $cel;
            echo "<a href=\"".daj_url($cel)."\">" . $opis . "</a>";
        }
        
        function last_mod()
        {
            global $dir, $cel;
            date_default_timezone_set('Europe/Warsaw');
            echo date("d.m.Y H:i", filemtime($dir . "/" . $cel));
        }
        
        function forma($ile, $jeden, $dwa, $piec)
        {
          if ($ile==1)
            return $ile ." ".$jeden;
          if ($ile%10>=2 && $ile%10<=4 && ($ile%100<10 || $ile%100>20))
            return $ile ." ".$dwa;
          return $ile ." ".$piec;
        }
        
        function ile_zdjec()
        {
          global $dir, $cel;
          $filename = "$dir/$cel/PICTURES.xxc";
          $ile = 0;
          if (file_exists($filename))
          {
            $fd = fopen ($filename, "r");
            while (!feof ($fd)) {
              list ($plik, $size, $date, $time, $remote, $a, $b, $c) =
                fscanf($fd, "%s %d %s %s %s %s %s %s ");
              if ($plik=="") continue;
              $ile = $ile + 1;
            }
            fclose ($fd);
          }
          return forma($ile, "zdjęcie", "zdjęcia", "zdjęć");
        }
	        
        function ile_stacji()
        {
          global $dir, $cel;
          $filename = "$dir/$cel/PICTURES.xxc";
          $ile = 0;
          if (file_exists($filename))
          {
            $fd = fopen ($filename, "r");
            while (!feof ($fd)) {
              list ($plik, $size, $date, $time, $remote, $a, $b, $c) = 
                fscanf($fd, "%s %d %s %s %s %s %s %s ");
              if ($plik=="") continue;
              $plik = preg_replace("/\d/", "", $plik);
              $tab[$plik] = 1;
            }
            $ile = sizeof($tab);
            fclose ($fd);
          }
          return forma($ile, "stacja", "stacje", "stacji");
        }
	

///////////////////////////////////////////////
      $nrf = _get('picture');
      if ($nrf!="")
      {
  	$filename = "$dir/PICTURES.xxc";
	if (file_exists($filename))
	{
  	  $handle = fopen($filename, "r");
	  $nr = 0;
	  while (!feof($handle))
	  {
	    list ($plik, $size, $date, $time, $remote, $a, $b, $c) = 
	      fscanf($handle, "%s %d %s %s %s %s %s %s ");
            if ($plik=="") continue;
            if ($nr==$nrf)
            {
	        list ($test) = fscanf($handle, "%s ");
	        //echo "AAAAA $test AAA";
                $is_next = $test!="";
                $is_prev = $nr>0;
                if (strlen($remote)<=1) $remote="$dir/";
        
                if (strlen(_get('play'))>0 && $is_next)
                  header("Refresh: ". $delay . "; url=?dir=" . urlencode($dir) . 
 	            "&picture=" . ($nr+1) . "&play=1");
                start_page("$tytul - zdjęcie $nrf", $dir);
                echo "<TABLE width=\"100%\"><TR><TD>\n";
                if (strlen($date)>1){
                   echo htmlspecialchars("$date $time");}
                show_desc(strlen($date)>1 ? ", " : "", "$dir/$plik", "");
                licz("$dir/$plik", 2);
                echo "</TD><TD align=right><FONT SIZE=\"+1\">";
                echo $is_prev ? "<a href=\"?dir=" . urlencode($dir) . 
	          "&amp;picture=" . ($nr-1) . "\">&lt&lt</a>" : "&lt&lt";
                echo "\n&nbsp;&nbsp\n<a href=\"?dir=" . urlencode($dir) . 
	          "\">^^</a>\n&nbsp;&nbsp\n";
                echo $is_next ? "<a href=\"?dir=" . urlencode($dir) . 
	          "&amp;picture=" . ($nr+1) . "\">&gt&gt</a>" : "&gt&gt";
                echo "\n&nbsp&nbsp\n";
                echo $is_next ? "<a href=\"?dir=" . urlencode($dir) . 
	          "&amp;picture=" . ($nr+1) . "&amp;play=1\">|&gt</a>" : "|&gt";
                echo "</FONT></TD></TR></TABLE>";
        	echo "<IMG SRC=\"" . htmlentities($remote . $plik) . "\">\n";
        	echo "</BODY>\n</HTML>";

                die;
            }
            $nr = $nr+1;
          }
	}
        
	echo "ERROR!!!\n"; 
	die;

      }
      start_page($tytul, $dir);
      echo "<H1>". htmlspecialchars($tytul, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, is_utf($dir) ? null : 'ISO-8859-1') . "</H1>";
      
      $dir2 = $dir;
      while ($dir2!="" && $dir2!='.')
      {
      
        $path=explode("/", $dir2);
        $dir2 = "";
        for ($i = 0; $i<count($path)-1; $i++)
        {
          if ($i) $dir2 .= "/";
          $dir2 .= $path[$i];
        }
        if ($dir2=='') $dir2=".";
        if (allowed_dir($dir2))
        {
          echo "<div align=\"right\"><a href=\"?dir=" . $dir2 .
            "\">[up]</a></div>\n";
          break;
        }
      }
      
	$filename = "$dir/README$lang.xx";
	if (file_exists($filename))
	{
		$handle = fopen($filename, "r");
		$contents = fread($handle, filesize($filename));
		fclose($handle);
		echo "<PRE>";
		echo htmlspecialchars($contents);
		echo "\n</PRE>";
	}

	$filename = "$dir/main$lang.html";
	if (file_exists($filename))
	{
	        include($filename);
		//$handle = fopen($filename, "r");
		//$contents = fread($handle, filesize($filename));
		//fclose($handle);
		//echo $contents;
	}

	$filename = "$dir/PICTURES.xxc";
	if (file_exists($filename) && filesize($filename)>3)
	{
          $handle = fopen($filename, "r");
          echo "<TABLE>\n";
	  echo "<col width=\"33%\"><col width=\"33%\"><col>\n";
	  $nr = 0;
	  while (!feof($handle))
	  {
	    list ($plik, $size, $date, $time, $remote, $xs, $ys, $remotem) = 
	      fscanf($handle, "%s %d %s %s %s %s %s %s ");
            if ($plik=="") continue;
            $plikm = (strlen($remotem)>1 ? $remotem : "$dir/") . "$plik.m";
            if ($nr%3==0) echo "<tr>\n";
	    echo "<td><a href=\"?dir=" . urlencode($dir) . 
	      "&amp;picture=$nr\"><img alt=\"\" src=\"". htmlentities("$plikm") . 
  	      "\"></a><br>\n";
            if ($size>0)
              echo intval($size/1024) . " kB";
            if (strlen($date)>1)
            {
              $date = "$date $time";
              if ($size>0) echo ", ";
              echo htmlspecialchars($date);
            }
	    show_desc("<br>\n", "$dir/$plik", "\n");
	    echo "\n</td>\n";
            $nr = $nr+1;
            if ($nr%3==0) echo "</tr>\n";
          }
          if ($nr%3!=0) echo "</tr>\n";
          echo "</TABLE>\n";
	}

	$filename = "$dir/FILES.xxc";
	if (file_exists($filename) && filesize($filename)>3)
	{
  	  $handle = fopen($filename, "r");
	  echo "<TABLE>\n";
	  echo "<tr><td>Filename</td><td>Size</td><td>Date</td>" .
	    "<td>Description</td></tr>\n";
	  $nr = 0;
	  while (!feof($handle))
	  {
	    list ($plik, $size, $date, $time, $remote) = 
	      fscanf($handle, "%s %d %s %s %s ");
            if ($plik=="") continue;
            $date = "$date $time";
	    echo "<tr><td><a href=\"?dir=" . urlencode($dir) . 
	      "&amp;file=$nr\"><tt>" . htmlentities($plik) . "</tt></a></td>\n" .
              "<td><tt>".intval($size/1024)." kB</tt></td>\n" .
              "<td><tt>".$date."</tt></td>\n";
            show_desc("<TD><PRE>", "$dir/$plik", "\n</PRE></TD>\n");
	    echo "</tr>\n";
	    $nr=$nr+1;
          }
          echo "</TABLE>\n";
	}

	licz("$dir/index", 1);
        stop_page();
?>