<?php // charset=ISO-8859-1

$lang = 'en';

/* Select your charset
 */
$charset = 'ISO-8859-1';

/* How many images per page?
 */
$maxpics = 30;

/* Create thumbnails in this subfolder
 */
$thumbdir = 'thumbs';

/* Size of created thumbnails
 */
$thumbsize = 110;

/* Wether to show file names (true or false)
 */
$filenames = False;

/* Wether to show subdirectores (true or false)
 */
$subdirs = true;

/* Wether to show a title (true or false)
 */
$title = true;

/* Set the gallery root relative to the script's directory.
 *
 * If you include() this script, set the path relative to
 * the directory of the script, that does the include().
 */
$picdir = '.';

/* Set this to true if you include() this script.
 */
$included = False;

/* Set this to true, if you include() this script and want the images
 * to be shown inline.
 */
$inline = true;

/* ------------------------------------------------------------------------- */
switch ($lang) {
case 'de':
 $words = array(
  'gallery' => 'Galerie',
  'src' => 'Quelltext',
  'error' => 'Fehler',
  'php_error' => 'PHP Version 4.1 oder höher ist erforderlich.',
  'gd_error' => 'Die GD-Bibliothek wird benötigt. Siehe http://www.boutell.com/gd/.',
  'jpg_error' => 'Die JPEG-Bibliothek wird benötigt. Siehe ftp://ftp.uu.net/graphics/jpeg/.',
  'mkdir_error' => 'Schreibrecht im Verzeichnis ist erforderlich.',
  'opendir_error' => 'Das Verzeichnis "%1" kann nicht gelesen werden.'
 );
 break;
case 'en':
default:
 $words = array(
  'gallery' => 'gallery',
  'src' => 'source code',
  'error' => 'Error',
  'php_error' => 'PHP >= 4.1 is required.',
  'gd_error' => 'GD Library is required. See http://www.boutell.com/gd/.',
  'jpg_error' => 'JPEG software is required. See ftp://ftp.uu.net/graphics/jpeg/.',
  'mkdir_error' => 'Write permission is required in this folder.',
  'opendir_error' => 'The directory "%1" can not be read.'
 );
}
isset($_SERVER) || $error = error('php', array());
function_exists('imagecreate') || $error = error('gd', array());
function_exists('imagejpeg') || $error = error('jpg', array());
@ini_set('memory_limit', -1);
$jpg = '\.jpg$|\.jpeg$'; $gif = '\.gif$'; $png = '\.png$';
$fontsize = 2;
if (isset($_REQUEST['src'])) {
 ob_start();
 highlight_file(basename($_SERVER['PHP_SELF']));
 $src = ereg_replace('<font color="([^"]*)">', '<span style="color: \1">', ob_get_contents());
 $src = ereg_replace('</font>', '</span>', $src);
 ob_end_clean();
}
function w ($w) {
 global $words;
 return h($words[$w]);
}
function h ($w) {
 global $charset;
 return htmlentities($w, ENT_COMPAT, $charset);
}
function error ($w, $a) {
 return str_replace(array('%1'), $a, w($w .'_error'));
}
if (!$included) {
 echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
body { font-family: sans-serif }
hr { border-style: none; height: 1px; background-color: silver; color: silver }
p { margin: 0px; padding: 0px }
#pagenumbers { text-align: center; margin: 0px 1em 0px 1em }
img { margin: 10px; border: none }
a { text-decoration: none }
#src');
 if ($filenames) echo(', div a p'); echo(" { font-size: small }\n");
 if ($filenames) {
  echo(".clear { clear: left }\n");
  echo("a:hover p { text-decoration: underline }\n");
  echo('div { width: ' . ($thumbsize + 20) . 'px; text-align: center; ');
  echo("float: left; margin: 1em }\n");
 }
 echo("</style>\n");
 echo("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$charset\" />\n");
 if (isset($src)) {
  echo("<title>Darksky</title>\n");
  echo("</head>\n");
  echo("<body bgcolor='#616262'>\n");
  echo('<h1>' . w('gallery') . ': ' . w('src') . "</h1>\n<hr />\n<pre>");
  echo("$src</pre>\n</body>\n</html>");
  exit;
 }
}
if (isset($_REQUEST['dir']) && $subdirs) $dir = $_REQUEST['dir']; else $dir = '';
if (!empty($_SERVER['PATH_TRANSLATED'])) $d = dirname($_SERVER['PATH_TRANSLATED']);
else $d = getcwd();
$delim = (substr($d, 1, 1) == ':') ? '\\' : '/';
$root = realpath($d . $delim . $picdir);
$realdir = realpath($root . $dir);
if (substr($realdir, 0, strlen($root)) != $root) $realdir = $root;
$dirname = substr($realdir, strlen($root));
$dirnamehttp = $picdir . $dir;
if ($delim == '\\') $dirnamehttp = strtr($dirnamehttp, '\\', '/');
if (substr($dirnamehttp, 0, 2) == './') $dirnamehttp = substr($dirnamehttp, 2);
if (empty($dirnamehttp)) $dirnamehttp = '.';
if ($subdirs) {
 if (empty($dirname)) $ti = ': /.'; else $ti = ": $dirname";
} else $ti = '';
if (!$included) {
 if (isset($error)) echo("<title>$error</title>");
 else echo('<title>' . w('gallery') . h($ti) . "</title>\n");
 echo("</head>\n<body bgcolor='#616262'>\n");
}
if (!($d = @opendir($realdir))) $error = error('opendir', array($realdir));
if (isset($error)) echo("<p style=\"color: red\">$error</p>\n");
elseif ($included && $inline && isset($_REQUEST['pic'])) {
 $pic = $_REQUEST['pic'];
 echo('<p id="picture"><img src="' . h($pic) . '" alt="' . h(basename($pic)) . '"');
 list($width, $height, $type, $attr) = @getimagesize($pic);
 if (!empty($width)) echo(" style=\"width: {$width}px; height: {$height}px\"");
 echo(" /></p>\n");
}
else {
 if ($title) echo('<h1>' . w('gallery') . h($ti) . "</h1>\n<hr />\n");
 $dirs = $pics = array();
 $query = $jpg;
 if (function_exists('imagecreatefromgif')) $query .= "|$gif";
 if (function_exists('imagecreatefrompng')) $query .= "|$png";
 while (false !== ($filename = readdir($d))) {
  if ($filename == $thumbdir
   || ($filename == '..' && $dirname == '')
   || ($filename != '..' && substr($filename, 0, 1) == '.')) continue;
  $file = $realdir . $delim . $filename;
  if (is_dir($file)) $dirs[] = $filename;
  elseif (eregi($query, $file)) $pics[] = $filename;
 }
 closedir($d);
 $urlsuffix = '';
 foreach ($_GET as $v => $r) {
  if ($v != 'offset' && $v != 'dir') $urlsuffix .= "&$v=" . urlencode($r);
 }
 if (sizeof($dirs) > 0 && $subdirs) {
  echo("<ul id=\"directories\">\n");
  sort($dirs);
  foreach ($dirs as $filename) {
   $target = substr(realpath($realdir . $delim . $filename), strlen($root));
   if ($delim == '\\') $target = strtr($target, '\\', '/');
   if ($target == '') {
    $url = ereg_replace('^([^?]+).*$', '\1', $_SERVER['REQUEST_URI']);
    if (!empty($urlsuffix)) {
     if (strstr($url, '?') === false) $url .= '?' . substr($urlsuffix, 1);
     else $url .= $urlsuffix;
    }
   } else $url = '?dir=' . urlencode($target) . $urlsuffix;
   echo('<li><a href="' . h($url) . '">' . h($filename) . "</a></li>\n");
  }
  echo("</ul>\n<hr />\n");
 }
 if (($num = sizeof($pics)) > 0) {
  if (isset($_REQUEST['offset'])) $offset = $_REQUEST['offset'];
  else $offset = 0;
  if ($num > $maxpics) {
   echo("<p id=\"pagenumbers\">\n");
   for ($i = 0; $i < $num; $i += $maxpics) {
    $e = $i + $maxpics - 1;
    if ($e > $num - 1) $e = $num - 1;
    if ($i != $e) $b = ($i + 1) . '-' . ($e + 1);
    else $b = $i + 1;
    if ($i == $offset) echo("<b>$b</b>");
    else {
     $url = ($dirname  == '') ? '?' : '?dir=' . urlencode($dirname) . '&amp;';
     echo("<a href=\"{$url}offset=$i" . h($urlsuffix) . "\">$b</a>");
    }
    if ($e != $num - 1) echo(' |');
    echo("\n");
   }
   echo("</p>\n<hr />\n");
  }
  sort($pics);
  echo("<p id=\"pictures\">\n");
  for ($i = $offset; $i < $offset + $maxpics; $i++) {
   if ($i >= $num) break;
   $filename = $pics[$i];
   $file = $realdir . $delim . $filename;
   if (!is_readable($file)) continue;
   if (!is_dir($realdir . $delim . $thumbdir)) {
    $u = @umask(0);
    if (!@mkdir($realdir . $delim . $thumbdir, 0777)) {
     echo('<p style="color: red; text-align: center">' . w('mkdir_error') . '</span>');
     break;
    }
    @umask($u);
   }
   $thumb = $realdir . $delim . $thumbdir . $delim . $filename . '.thumb.jpg';
   if (!is_file($thumb)) {
    if (eregi($jpg, $file))
    $original = @imagecreatefromjpeg($file);
    elseif (eregi($gif, $file))
    $original = @imagecreatefromgif($file);
    elseif (eregi($png, $file))
    $original = @imagecreatefrompng($file);
    else continue;
    if ($original) {
     if (function_exists('getimagesize'))
     list($width, $height, $type, $attr) = getimagesize($file);
     else continue;
     if ($width > $height && $width > $thumbsize) {
      $smallwidth = $thumbsize;
      $smallheight = floor($height / ($width / $smallwidth));
      $ofx = 0; $ofy = floor(($thumbsize - $smallheight) / 2);
     } elseif ($width < $height && $height > $thumbsize) {
      $smallheight = $thumbsize;
      $smallwidth = floor($width / ($height / $smallheight));
      $ofx = floor(($thumbsize - $smallwidth) / 2); $ofy = 0;
     } else {
      $smallheight = $height;
      $smallwidth = $width;
      $ofx = floor(($thumbsize - $smallwidth) / 2);
      $ofy = floor(($thumbsize - $smallheight) / 2);
     }
    }
    if (function_exists('imagecreatetruecolor'))
$small = imagecreatetruecolor($thumbsize, $thumbsize);
    else $small = imagecreate($thumbsize, $thumbsize);
    $weiss = imagecolorallocate($small,99,99,99);
    imagefill($small, 0, 0, $weiss);
    if ($original) {
     if (function_exists('imagecopyresampled'))
imagecopyresampled($small, $original, $ofx, $ofy, 0, 0, $smallwidth, $smallheight, $width, $height);
     else
imagecopyresized($small, $original, $ofx, $ofy, 0, 0, $smallwidth, $smallheight, $width, $height);
    } else {
     $black = imagecolorallocate($small, 0, 0, 0);
     $fw = imagefontwidth($fontsize);
     $fh = imagefontheight($fontsize);
     $htw = ($fw * strlen($filename)) / 2;
     $hts = $thumbsize / 2;
     imagestring($small, $fontsize, $hts - $htw, $hts - ($fh / 2), $filename, $black);
imagerectangle($small, $hts - $htw - $fw - 1, $hts - $fh, $hts + $htw + $fw - 1, $hts + $fh, $black);
    }
    imagejpeg($small, $thumb);
   }
   if ($filenames) echo('<div>');
   if ($included && $inline)
   echo('<a href="?pic=' . urlencode("$dirnamehttp/$filename") . h($urlsuffix));
   else echo('<a href="' . h("$dirnamehttp/$filename"));
   echo('"><img src="' . h("$dirnamehttp/thumbs/$filename.thumb.jpg"));
   echo('" alt="' . h($filename) . '" />');
   if ($filenames) echo('<p>' . h($filename) . '</p>');
   echo('</a>');
   if ($filenames) echo("</div>\n"); else echo("\n");
  }
  echo("</p>\n");
  if (!$included) {
   echo('<hr');
   if ($filenames) echo(' class="clear"');
   echo(" />\n");
  }
 }
echo "<b><center><big>-=[ por DarkSky ]=-</big></center></b>" ;
}
if (!$included) echo("</body>\n</html>");
?>
