diff -Naur gallery-1.5.1/add_comment.php gallery-1.5.2/add_comment.php
--- gallery-1.5.1/add_comment.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/add_comment.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,16 +17,16 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_comment.php,v 1.49.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: add_comment.php,v 1.56.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
 
 require_once(dirname(__FILE__) . '/init.php');
 
-// Hack check
+/* Hack check*/
 if (!$gallery->user->canAddComments($gallery->album)) {
-	echo _("You are not allowed to perform this action!");
+	echo gTranslate('core', "You are not allowed to perform this action!");
 	exit;
 }
 
@@ -35,8 +35,7 @@
 $error_text = '';
 if ($gallery->user->isLoggedIn() ) {
 	if (empty($commenter_name) || $gallery->app->comments_anonymous == 'no') {
-		$commenter_name=user_name_string($gallery->user->getUID(),
-		$gallery->app->comments_display_name);
+		$commenter_name = $gallery->user->printableName($gallery->app->comments_display_name);
 	}
 } elseif (!isset($commenter_name)) {
 	$commenter_name = '';
@@ -54,14 +53,14 @@
 
 if (isset($save)) {
 	if ( empty($commenter_name) || empty($comment_text)) {
-		$error_text = _("Name and comment are both required to save a new comment!");
+		$error_text = gTranslate('core', "Name and comment are both required to save a new comment!");
 	} elseif ($maxlength >0 && strlen($comment_text) > $maxlength) {
-		$error_text = sprintf(_("Your comment is too long, the admin set maximum length to %d chars"), $maxlength);
+		$error_text = sprintf(gTranslate('core', "Your comment is too long, the admin set maximum length to %d chars"), $maxlength);
 	} elseif (isBlacklistedComment($tmp = array('commenter_name' => $commenter_name, 'comment_text' => $comment_text), false)) {
-		$error_text = _("Your Comment contains forbidden words. It will not be added.");
+		$error_text = gTranslate('core', "Your Comment contains forbidden words. It will not be added.");
 	} else {
-		$comment_text = removeTags($comment_text);
-		$commenter_name = removeTags($commenter_name);
+		$comment_text = strip_tags($comment_text);
+		$commenter_name = strip_tags($commenter_name);
 		$IPNumber = $_SERVER['REMOTE_ADDR'];
 		$gallery->album->addComment($id, $comment_text, $IPNumber, $commenter_name);
 		
@@ -77,13 +76,13 @@
 ?>
 <html>
 <head>
-  <title><?php echo _("Add Comment") ?></title>
+  <title><?php echo gTranslate('core', "Add Comment") ?></title>
   <?php common_header(); ?>
 </head>
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
-<div class="popuphead"><?php echo _("Add Comment") ?></div>
+<div class="popuphead"><?php echo gTranslate('core', "Add Comment") ?></div>
 <div class="popup" align="center">
-<p><?php echo _("Enter your comment for this picture in the text box below.") ?></p>
+<p><?php echo gTranslate('core', "Enter your comment for this picture in the text box below.") ?></p>
 
 <?php 
 echo $gallery->album->getThumbnailTagById($id);
@@ -91,21 +90,19 @@
 	echo "\n<br>". gallery_error($error_text);
 }
 echo "<br><br>";
-echo makeFormIntro("add_comment.php",
-	array("name" => "theform", "method" => "POST"),
-	array('type' => 'popup'));
+echo makeFormIntro("add_comment.php", array(), array('type' => 'popup'));
 
 drawCommentAddForm($commenter_name, 35);
 ?>
 <input type="hidden" name="id" value="<?php echo $id ?>">
-<br><input type="button" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
+<br><input type="button" value="<?php echo gTranslate('core', "Cancel") ?>" onclick='parent.close()'>
 
 </form>
 </div>
 <script language="javascript1.2" type="text/JavaScript">
 <!--
-// position cursor in top form field
-document.theform.commenter_name.focus();
+  // position cursor in top form field
+  document.g1_form.commenter_name.focus();
 //-->
 </script>
 </div>
diff -Naur gallery-1.5.1/add_photos_frame.php gallery-1.5.2/add_photos_frame.php
--- gallery-1.5.1/add_photos_frame.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/add_photos_frame.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_photos_frame.php,v 1.9.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: add_photos_frame.php,v 1.10.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/add_photos.php gallery-1.5.2/add_photos.php
--- gallery-1.5.1/add_photos.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/add_photos.php	2006-01-08 21:07:15.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_photos.php,v 1.78.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: add_photos.php,v 1.80.2.2 2006/01/08 20:07:15 jenst Exp $
  */
 ?>
 <?php
@@ -74,17 +74,10 @@
 	}
 }
 
-
 $modes["form"] = _("Form");
-// todo: this mode is broken. Fix it before enabling it again...
-//$modes["form_one"] = _("Form (1)");
 $modes["url"] = _("URL");
 $modes["other"] = _("Other");
 
-if ($gallery->user->isAdmin()) {
-    $modes["admin"] = _("Admin");
-}
-
 if (!isset($mode) || !isset($modes[$mode])) {
 	$mode = isset($modes[$gallery->app->uploadMode]) ? $gallery->app->uploadMode : "form";
 }
@@ -101,11 +94,9 @@
 		echo "\t\t<li><a href=\"$url\">$mt</a></li>\n";
 	}
 }
-?>
-	</ul>
-<?php
-include (dirname(__FILE__) . "/includes/add_photos/add_$mode.inc");
-?>
+echo "\n\t</ul>";
+
+include (dirname(__FILE__) . "/includes/add_photos/add_$mode.inc");?>
 	</div>
 </div>
 </body>
diff -Naur gallery-1.5.1/administer_startpage.php gallery-1.5.2/administer_startpage.php
--- gallery-1.5.1/administer_startpage.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/administer_startpage.php	2006-01-06 07:31:30.000000000 +0100
@@ -0,0 +1,115 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: administer_startpage.php,v 1.4.2.1 2006/01/06 06:31:30 jenst Exp $
+ *
+ */
+?>
+<?php
+
+if (!isset($gallery->version)) {
+        require_once(dirname(__FILE__) . '/init.php');
+}
+
+if (!$gallery->user->isAdmin()) {
+        echo _("You are not allowed to perform this action!");
+        exit;
+}
+
+list($sort, $order, $fieldname) = getRequestVar(array('sort', 'order', 'fieldname'));
+
+$adminOptions[] = array(
+    'text' => _("Rebuild highlights"),
+    'url' =>  doCommand('rebuild_highlights'),
+    'longtext' => _("Recreate all highlights according to the setting in configwizard.<br>(Starts immediately)")
+);
+
+$adminOptions[] = array(
+    'text' => _("Albumorder"),
+    'url' => makeGalleryUrl('administer_startpage.php', array('sort' => 1, 'type' => 'popup')),
+    'longtext' => _("Sort the albums on the startpage(s).<br>(Opens an option dialog)")
+);
+
+array_sort_by_fields($adminOptions, 'text', 'asc');
+
+$sortOptions = array(
+    'name'          => _("By (physical) name"),
+    'clicks_date'   => _("By last reset date"),
+    'creation_date' => _("By creation date (works only with albums created with 1.5.2-cvs-b28 or newer)")
+);
+
+doctype();
+printPopupStart(_("Administer Startpage"));
+
+if(empty($sort)) {
+    echo "\n<table width=\"100%\">";
+    foreach ($adminOptions as $option) {
+	echo "\n<tr>";
+	if (isset($option['url'])) {
+		$link = '<a class="admin" href="'. $option['url'] .'">'. $option['text'] .'</a>';
+	} else {
+		$link = popup_link($option['text'], $option['popupFile'], false, true, 500, 500, 'admin');
+	}
+	echo "\n<td class=\"adm_options\">$link</td>";
+	echo "\n<td class=\"adm_options\">". $option['longtext'] ."</td>";
+	echo "\n</tr>";
+    }
+    echo "\n</table>";
+}
+elseif (empty($order)) {
+    echo makeFormIntro('administer_startpage.php');
+?>
+<table>
+<caption"><?php echo _("Sort albums on startpage"); ?></caption>
+<?php
+    foreach ($sortOptions as $sortBy => $text) {
+        echo "\n <tr>";
+        echo "\n  <td><input checked type=\"radio\" name=\"fieldname\" value=\"$sortBy\"></td>";
+        echo "\n  <td>$text</td>";
+        echo "\n </tr>";
+    }
+?>
+</table>
+<p>
+<?php echo _("Sort Order:"); ?>
+    <select name="order">
+        <option value="asc"><?php echo _("Ascending") ?></option>
+        <option value="desc"><?php echo _("Descending") ?></option>
+    </select>
+</p>
+
+<input type="hidden" name="sort" value="1">
+<input type="submit" name="confirm" value="<?php echo _("Sort") ?>">
+<input type="button" name="cancel" value="<?php echo _("Close Window") ?>" onclick='parent.close()'>
+</form>
+<?php
+}
+else {
+    /* Read the album list */
+    $albumDB = new AlbumDB(FALSE);
+    $albumDB->sortByField($fieldname, $order);
+    dismissAndReload();
+?>
+    <input type="button" name="cancel" value="<?php echo _("Close Window") ?>" onclick='parent.close()'>
+<?php
+}
+?>
+</div>
+</body>
+</html>
diff -Naur gallery-1.5.1/admin-page.php gallery-1.5.2/admin-page.php
--- gallery-1.5.1/admin-page.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/admin-page.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: admin-page.php,v 1.16.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: admin-page.php,v 1.17.2.1 2006/01/06 06:31:30 jenst Exp $
  *
  */
 ?>
diff -Naur gallery-1.5.1/album_permissions.php gallery-1.5.2/album_permissions.php
--- gallery-1.5.1/album_permissions.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/album_permissions.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,25 +17,15 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: album_permissions.php,v 1.55.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: album_permissions.php,v 1.62.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
 
 require_once(dirname(__FILE__) . '/init.php');
 
-list($allUid, $submit_read, $readUid, $submit_text, $textUid, $submit_add, $addUid) =
-	getRequestVar(array('allUid', 'submit_read', 'readUid', 'submit_text', 'textUid', 'submit_add', 'addUid'));
-
-list($submit_write, $writeUid, $submit_delete, $deleteUid, $submit_createSub, $createSubUid) =
-	getRequestVar(array('submit_write', 'writeUid', 'submit_delete', 'deleteUid', 'submit_createSub', 'createSubUid'));
-
-list($submit_viewFullImages, $viewFullImagesUid, $submit_addComments, $addCommentsUid) =
-	getRequestVar(array('submit_viewFullImages', 'viewFullImagesUid', 'submit_addComments', 'addCommentsUid'));
-
-
-list($submit_viewComments, $viewCommentsUid, $save, $ownerUid) =
-	getRequestVar(array('submit_viewComments', 'viewCommentsUid', 'save', 'ownerUid'));
+list($save, $ownerUid, $submit, $actionUid) =
+	getRequestVar(array('save', 'ownerUid', 'submit', 'actionUid'));
 
 // Hack check
 if (!$gallery->user->isAdmin() && 
@@ -43,92 +33,59 @@
 	echo _("You are not allowed to perform this action!");
 	exit;
 }
-?>
-<?php
-$changed=0;
-if (isset($allUid) && isset($submit_read) && strchr($submit_read, ">")) {
-	$gallery->album->setRead($allUid, 1);
-	$changed++;
-} else if (isset($readUid) && isset($submit_read) && strchr($submit_read, "<")) {
-	$gallery->album->setRead($readUid, 0);
-	$changed++;
-}
-
-if (isset($allUid) && isset($submit_text) && strchr($submit_text, ">")) {
-	$gallery->album->setChangeText($allUid, 1);
-	$changed++;
-} else if (isset($textUid) && isset($submit_text) && strchr($submit_text, "<")) {
-	$gallery->album->setChangeText($textUid, 0);
-	$changed++;
-}
-
-if (isset($allUid) && isset($submit_add) && strchr($submit_add, ">")) {
-	$gallery->album->setAddTo($allUid, 1);
-	$changed++;
-} else if (isset($addUid) && isset($submit_add) && strchr($submit_add, "<")) {
-	$gallery->album->setAddTo($addUid, 0);
-	$changed++;
-}
-
-if (isset($allUid) && isset($submit_write) && strchr($submit_write, ">")) {
-	$gallery->album->setWrite($allUid, 1);
-	$changed++;
-} else if (isset($writeUid) && isset($submit_write) && strchr($submit_write, "<")) {
-	$gallery->album->setWrite($writeUid, 0);
-	$changed++;
-}
-
-if (isset($allUid) && isset($submit_delete) && strchr($submit_delete, ">")) {
-	$gallery->album->setDeleteFrom($allUid, 1);
-	$changed++;
-} else if (isset($deleteUid) && isset($submit_delete) && strchr($submit_delete, "<")) {
-	$gallery->album->setDeleteFrom($deleteUid, 0);
-	$changed++;
-}
 
-if (isset($allUid) && isset($submit_createSub) && strchr($submit_createSub, ">")) {
-	$gallery->album->setCreateSubAlbum($allUid, 1);
-	$changed++;
-} else if (isset($createSubUid) && isset($submit_createSub) && strchr($submit_createSub, "<")) {
-	$gallery->album->setCreateSubAlbum($createSubUid, 0);
-	$changed++;
-}
+$perms = array(
+    'canRead'           => _("Users who can see the album."),
+    'canAddTo'          => _("Users who can add photos."),
+    'canDeleteFrom'     => _("Users who can delete photos."),
+    'canWrite'          => _("Users who can modify photos."),
+    'canCreateSubAlbum' => _("Users who can create sub albums."),
+    'zipDownload'       => _("Users who can to download album (with subalbums) as archive."),
+    'canViewComments'   => _("Users who can view comments."),
+    'canAddComments'    => _("Users who can add comments."),
+    'canViewFullImages' => _("Users who can view full (original) images."),
+    'canChangeText'     => _("Users who can change album text."),
+);
 
-if (isset($allUid) && isset($submit_viewFullImages) && strchr($submit_viewFullImages, ">")) {
-	$gallery->album->setViewFullImages($allUid, 1);
-	$changed++;
-} else if (isset($viewFullImagesUid) && isset($submit_viewFullImages) && strchr($submit_viewFullImages, "<")) {
-	$gallery->album->setViewFullImages($viewFullImagesUid, 0);
-	$changed++;
+foreach ($gallery->userDB->getUidList() as $uid) {
+	$tmpUser = $gallery->userDB->getUserByUid($uid);
+	$uname = $tmpUser->getUsername();
+	if ($tmpUser->isPseudo()) {
+	    $uname = "*$uname*";
+	}
+	$uAll[$uid] = $uname;
 }
 
-if (isset($allUid) && isset($submit_addComments) && strchr($submit_addComments, ">")) {
-        $gallery->album->setAddComments($allUid, 1);
-        $changed++;
-} else if (isset($addCommentsUid) && isset($submit_addComments) && strchr($submit_addComments, "<")) {
-        $gallery->album->setAddComments($addCommentsUid, 0);
-        $changed++;
-}
+asort($uAll);
 
-if (isset($allUid) && isset($submit_viewComments) && strchr($submit_viewComments, ">")) {
-        $gallery->album->setViewComments($allUid, 1);
-        $changed++;
-} else if (isset($viewCommentsUid) && isset($submit_viewComments) && strchr($submit_viewComments, "<")) {
-        $gallery->album->setViewComments($viewCommentsUid, 0);
-        $changed++;
+$changed = 0;
+if(empty($submit)) {
+    $submit = array();
+}
+
+foreach ($submit as $perm => $action) {
+    if(isset($action) && isset($actionUid)) {
+        if($action == '-->') {
+            $gallery->album->setPerm($perm, $actionUid, true);
+            $changed++;
+        }
+        if($action == '<--') {
+            $gallery->album->setPerm($perm, $actionUid, false);
+            $changed++;
+        }
+    }
 }
 
 if (isset($save) && $ownerUid) {
-	$gallery->album->setOwner($ownerUid);
-	$changed++;
+    $gallery->album->setOwner($ownerUid);
+    $changed++;
 }
 
 if ($changed) {
-	$gallery->album->save(array(i18n("Permissions have been changed")));
-
-	if (getRequestVar('setNested')) {
-		$gallery->album->setNestedPermissions();
-	}
+    $gallery->album->save(array(i18n("Permissions have been changed")));
+    if (getRequestVar('setNested')) {
+        $gallery->album->setNestedPermissions();
+    }
 }
 
 // Start with a default owner of nobody -- if there is an
@@ -136,48 +93,18 @@
 $nobody = $gallery->userDB->getNobody();
 $ownerUid = $nobody->getUid();
 
-$uRead = $gallery->album->getPermUids("canRead");
-$uText = $gallery->album->getPermUids("canChangeText");
-$uAdd = $gallery->album->getPermUids("canAddTo");
-$uWrite = $gallery->album->getPermUids("canWrite");
-$uDelete = $gallery->album->getPermUids("canDeleteFrom");
-$uCreateSub = $gallery->album->getPermUids("canCreateSubAlbum");
-$uViewFullImages = $gallery->album->getPermUids("canViewFullImages");
-$uAddComments = $gallery->album->getPermUids("canAddComments");
-$uViewComments = $gallery->album->getPermUids("canViewComments");
-
-foreach ($gallery->userDB->getUidList() as $uid) {
-	$tmpUser = $gallery->userDB->getUserByUid($uid);
-	$uname = $tmpUser->getUsername();
-	$uAll[$uid] = $uname;
-}
-
 $owner = $gallery->album->getOwner();
 $ownerUid = $owner->getUid();
 
-asort($uRead);
-asort($uText);
-asort($uWrite);
-asort($uDelete);
-asort($uCreateSub);
-asort($uViewFullImages);
-asort($uAddComments);
-asort($uViewComments);
-asort($uAdd);
-asort($uAll);
-
-correctPseudoUsers($uRead, $ownerUid);
-correctPseudoUsers($uText, $ownerUid);
-correctPseudoUsers($uWrite, $ownerUid);
-correctPseudoUsers($uDelete, $ownerUid);
-correctPseudoUsers($uCreateSub, $ownerUid);
-correctPseudoUsers($uViewFullImages, $ownerUid);
-correctPseudoUsers($uAddComments, $ownerUid);
-correctPseudoUsers($uViewComments, $ownerUid);
-correctPseudoUsers($uAdd, $ownerUid);
+// Set values for selectboxes
+foreach($perms as $perm => $trash)  {
+    $uids[$perm] = $gallery->album->getPermUids($perm);
+    asort($uids[$perm]);
+    correctPseudoUsers($uids[$perm], $ownerUid);
+}
 
+doctype();
 ?>
-<?php doctype() ?>
 <html>
 <head>
   <title><?php echo _("Album Permissions") ?></title>
@@ -188,162 +115,40 @@
 <div class="popup" align="center">
 <?php echo sprintf(_("Changing permissions for %s"), '<b>'.$gallery->album->fields["title"] . '</b>');
 
-echo makeFormIntro("album_permissions.php", 
-			array("name" => "albumperms_form"),
-			array("type" => "popup"));
-?>
+echo makeFormIntro("album_permissions.php", array("name" =>
+			"albumperms_form"), array("type" => "popup"));
 
-<?php if ($gallery->user->isAdmin) { ?>
-<?php echo _("Owner:") ?> <?php echo drawSelect("ownerUid", $uAll, $ownerUid, 1); ?>
-<?php } ?>
+if ($gallery->user->isAdmin) {
+    echo _("Owner:") . drawSelect("ownerUid", $uAll, $ownerUid, 1, array(), true);
+}
+?>
 
 <table border="0" cellspacing="0" cellpadding="0">
  <tr>
   <td align="center">
-   <?php echo drawSelect("allUid", $uAll, isset($allUid) ? $allUid : array(), 28); ?>
+   <?php echo drawSelect('actionUid', $uAll, isset($allUid) ? $allUid : array(), 28, array(), true); ?>
   </td>
 
-  <td> &nbsp; </td>
+  <td>&nbsp;</td>
 
-  <td valign=top>
-   <table border="0" cellspacing="3" cellpadding="0">
-    <tr>
-     <td colspan="2" class="popuptd">
-      <?php echo _("Users who can see the album") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>   
-           <input type="submit" name="submit_read" value="-->">
-      <br> <input type="submit" name="submit_read" value="<--">
-     </td>
-     <td align="left">
-      <?php echo drawSelect("readUid", $uRead, isset($readUid) ? $readUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-      <?php echo _("Users who can change album text.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>
-           <input type="submit" name="submit_text" value="-->">
-      <br> <input type="submit" name="submit_text" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("textUid", $uText, isset($textUid) ? $textUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-      <?php echo _("Users who can add photos.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>   
-           <input type="submit" name="submit_add" value="-->">
-      <br> <input type="submit" name="submit_add" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("addUid", $uAdd, isset($addUid) ? $addUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-	<?php echo _("Users who can modify photos.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>   
-           <input type="submit" name="submit_write" value="-->">
-      <br> <input type="submit" name="submit_write" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("writeUid", $uWrite, isset($writeUid) ? $writeUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-	<?php echo _("Users who can delete photos.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>   
-           <input type="submit" name="submit_delete" value="-->">
-      <br> <input type="submit" name="submit_delete" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("deleteUid", $uDelete, isset($deleteUid) ? $deleteUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-	<?php echo _("Users who can create sub albums.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>   
-           <input type="submit" name="submit_createSub" value="-->">
-      <br> <input type="submit" name="submit_createSub" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("createSubUid", $uCreateSub, isset($createSubUid) ? $createSubUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-      <?php echo _("Users who can view full (original) images.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>   
-           <input type="submit" name="submit_viewFullImages" value="-->">
-      <br> <input type="submit" name="submit_viewFullImages" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("viewFullImagesUid", $uViewFullImages, isset($viewFullImagesUid) ? $viewFullImagesUid : array(), 3); ?>
-      
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-      <?php echo _("Users who can add comments.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>
-           <input type=submit name="submit_addComments" value="-->">
-      <br> <input type=submit name="submit_addComments" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("addCommentsUid", $uAddComments, isset($addCommentsUid) ? $addCommentsUid : array(), 3); ?>
-     </td>
-    </tr>
-
-    <tr>
-     <td colspan="2" class="popuptd">
-      <?php echo _("Users who can view comments.") ?>
-     </td>
-    </tr>
-    <tr>
-     <td>
-           <input type=submit name="submit_viewComments" value="-->">
-      <br> <input type=submit name="submit_viewComments" value="<--">
-     </td>
-     <td>
-      <?php echo drawSelect("viewCommentsUid", $uViewComments, isset($viewCommentsUid) ? $viewCommentsUid : array(), 3); ?>
-     </td>
-    </tr>
+  <td style="vertical-align: top">
+<?php
 
-     </table>
+$permsTable = new galleryTable();
+$permsTable->setColumnCount(2);
+foreach($perms as $perm => $permDesc) {
+    $permsTable->addElement(array('content' => $permDesc, 'cellArgs' => array('colspan' => 2)));
+    $permsTable->addElement(
+	   array('content' => 
+	    "\n\t<input type=\"submit\" name=\"submit[$perm]\" value=\"-->\"><br>".
+	    "\n\t<input type=\"submit\" name=\"submit[$perm]\" value=\"<--\">"
+	));
+    $permsTable->addElement(
+	array('content' => drawSelect("actionUid", $uids[$perm], '', 3, array(), true))
+    );
+}
+echo $permsTable->render();
+?>    
   </td>
  </tr>
 </table>
diff -Naur gallery-1.5.1/albums.php gallery-1.5.2/albums.php
--- gallery-1.5.1/albums.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/albums.php	2006-01-08 21:07:15.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: albums.php,v 1.202.2.3 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: albums.php,v 1.216.2.2 2006/01/08 20:07:15 jenst Exp $
  */
 ?>
 <?php
@@ -29,25 +29,25 @@
     /* Get the cached version if possible */
     $cache_file = "cache.html";
     if (!getRequestVar('gallery_nocache')) {
-	$cache_now = time();
-	$cacheFileBaseNames = array(sprintf("cache-%s.html", $_SERVER['HTTP_HOST']), "cache.html");
-	foreach ($cacheFileBaseNames as $cache_file_basename) {
- 	    $cache_file = dirname(__FILE__) . '/' . $cache_file_basename;
-	    if (fs_file_exists($cache_file)) {
-		$cache_stat = @stat($cache_file);
- 		if ($cache_now - $cache_stat[9] < (20 * 60)) {
-	 	    if ($fp = fopen($cache_file, "rb")) {
-		 	while (!feof($fp)) {
-		 	    print fread($fp, 4096);
-	 		}
-		        fclose($fp);
-			printf("<!-- From %s, created at %s -->",
-	 		  $cache_file_basename, strftime("%D %T", $cache_stat[9]));
-			return;
-		     }
-	 	}
-	    }
-	}
+        $cache_now = time();
+        $cacheFileBaseNames = array(sprintf("cache-%s.html", $_SERVER['HTTP_HOST']), "cache.html");
+        foreach ($cacheFileBaseNames as $cache_file_basename) {
+            $cache_file = dirname(__FILE__) . '/' . $cache_file_basename;
+            if (fs_file_exists($cache_file)) {
+                $cache_stat = @stat($cache_file);
+                if ($cache_now - $cache_stat[9] < (20 * 60)) {
+                    if ($fp = fopen($cache_file, "rb")) {
+                        while (!feof($fp)) {
+                            print fread($fp, 4096);
+                        }
+                        fclose($fp);
+                        printf("<!-- From %s, created at %s -->",
+                        $cache_file_basename, strftime("%D %T", $cache_stat[9]));
+                        return;
+                    }
+                }
+            }
+        }
     }
 }
 
@@ -55,6 +55,7 @@
 
 /* Read the album list */
 $albumDB = new AlbumDB(FALSE);
+
 $gallery->session->albumName = '';
 $page = 1;
 
@@ -107,7 +108,7 @@
     }
     if ($gallery->app->rssEnabled == "yes" && !$gallery->session->offline) {
 ?>
-  <link rel="alternate" title="<?php echo sprintf(_("%s RSS"), $gallery->app->galleryTitle) ?>" href="<?php echo $gallery->app->photoAlbumURL . "/rss.php" ?>" type="application/rss+xml">
+  <link rel="alternate" title="<?php echo sprintf(gTranslate('core', "%s RSS"), $gallery->app->galleryTitle) ?>" href="<?php echo $gallery->app->photoAlbumURL . "/rss.php" ?>" type="application/rss+xml">
 <?php
     } ?>
 </head>
@@ -118,7 +119,8 @@
 includeHtmlWrap("gallery.header");
 
 if (!$gallery->session->offline &&
-  ( ($gallery->app->showSearchEngine == 'yes' && $numPhotos != 0 ) || $GALLERY_EMBEDDED_INSIDE == 'phpBB2')) {
+  ( ($gallery->app->showSearchEngine == 'yes' && $numPhotos != 0) || 
+  $GALLERY_EMBEDDED_INSIDE == 'phpBB2')) {
 ?>
 <table width="100%" border="0" cellspacing="0" style="margin-bottom:2px">
 <tr>
@@ -141,24 +143,24 @@
 /* Admin Text (left side) */
 $adminText = '';
 if ($numAccess == $numAlbums) {
-	$toplevel_str= pluralize_n2(ngettext("1 album","%d albums",$numAlbums), $numAlbums, _("no albums"));
+	$toplevel_str = gTranslate('core', "1 album","%d albums", $numAlbums, gTranslate('core', "no albums"));
 } else {
-	$toplevel_str= pluralize_n2(ngettext("1 top-level album","%d top-level albums",$numAlbums), $numAlbums, _("No top-level albums"));
+	$toplevel_str = gTranslate('core', "1 top-level album","%d top-level albums", $numAlbums, gTranslate('core', "No top-level albums"));
 }
 
-$total_str= sprintf(_("%d total"), $numAccess);
-$image_str= pluralize_n2(ngettext("1 image", "%d images", $numPhotos), $numPhotos, _("no images"));
-$page_str= pluralize_n2(ngettext("1 page", "%d pages", $maxPages), $maxPages, _("no pages"));
+$total_str = sprintf(gTranslate('core', "%d total"), $numAccess);
+$image_str = gTranslate('core', "1 image", "%d images", $numPhotos, gTranslate('core', "no images"));
+$page_str = gTranslate('core', "1 page", "%d pages", $maxPages, gTranslate('core', "no pages"));
 
 if (($numAccess != $numAlbums) && $maxPages > 1) {
-	$adminText .= sprintf(_("%s (%s), %s on %s"), $toplevel_str, $total_str, $image_str, $page_str);
+	$adminText .= sprintf(gTranslate('core', "%s (%s), %s on %s"), $toplevel_str, $total_str, $image_str, $page_str);
 }
 else if ($numAccess != $numAlbums) {
-	$adminText .= sprintf(_("%s (%s), %s"), $toplevel_str, $total_str, $image_str);
+	$adminText .= sprintf(gTranslate('core', "%s (%s), %s"), $toplevel_str, $total_str, $image_str);
 } else if ($maxPages > 1) {
-	$adminText .= sprintf(_("%s, %s on %s"), $toplevel_str, $image_str, $page_str);
+	$adminText .= sprintf(gTranslate('core', "%s, %s on %s"), $toplevel_str, $image_str, $page_str);
 } else {
-	$adminText .= sprintf(_("%s, %s"), $toplevel_str, $image_str);
+	$adminText .= sprintf(gTranslate('core', "%s, %s"), $toplevel_str, $image_str);
 }
 
 if (!empty($gallery->app->stats_foruser) && $numPhotos != 0) {
@@ -173,49 +175,55 @@
 if ($gallery->user->isLoggedIn() && !$gallery->session->offline) {
 
 	$displayName = $gallery->user->displayName();
-	$adminCommands .= sprintf(_("Welcome, %s"), $displayName) . "&nbsp;&nbsp;<br>";
+	$adminCommands .= sprintf(gTranslate('core', "Welcome, %s"), $displayName) . "&nbsp;&nbsp;<br>";
 }
 
 if ($gallery->app->gallery_slideshow_type != "off" && $numPhotos != 0) {
-    $iconText = getIconText('display.gif', _("slideshow"));
+    $iconText = getIconText('display.gif', gTranslate('core', "slideshow"));
     $iconElements[] = '<a href="'. makeGalleryUrl("slideshow.php",array("set_albumName" => null)) .'">'. $iconText .'</a>';
 }
 
 if ($gallery->user->canCreateAlbums() && !$gallery->session->offline) {
-    $iconText = getIconText('folder_new.gif', _("new album"));
+    $iconText = getIconText('folder_new.gif', gTranslate('core', "new album"));
     $iconElements[] = '<a href="' . doCommand("new-album", array(), "view_album.php") .'">'. $iconText .'</a>';
 }
 
 if ($gallery->user->isLoggedIn() && !$gallery->session->offline) {
+    if ($gallery->user->isAdmin()) {
+        
+        $iconText = getIconText('unsortedList.gif', gTranslate('core', "Administer startpage"));
+        $linkurl = makeGalleryUrl('administer_startpage.php', array('type' => 'popup'));
+        $iconElements[] = popup_link($iconText, $linkurl, true);
+        
+        $iconText = getIconText('kdf.gif', gTranslate('core', "admin page"));
+        $iconElements[] = '<a href="'. makeGalleryUrl('admin-page.php') .'">'. $iconText .'</a> ';
+         
+        $docsUrl = galleryDocs('admin');
+        if ($docsUrl) {
+            $iconText = getIconText('info.gif', gTranslate('core', "documentation"));
+            $iconElements[] = "<a href=\"$docsUrl\">". $iconText .'</a>';
+        }
+    }
+    
     if ($gallery->userDB->canModifyUser()) {
-	$iconText = getIconText('yast_sysadmin.gif', _("preferences"));
-	$iconElements[] = popup_link($iconText, "user_preferences.php", false, true, 500, 500);
+        $iconText = getIconText('yast_sysadmin.gif', gTranslate('core', "preferences"));
+        $iconElements[] = popup_link($iconText, "user_preferences.php", false, true, 500, 500);
+    }
+    
+    if (!$GALLERY_EMBEDDED_INSIDE) {
+        $iconText = getIconText('exit.gif', gTranslate('core', "logout"));
+        $iconElements[] = '<a href="'. doCommand("logout", array(), "albums.php") .'">'. $iconText .'</a>';
     }
-
-	if ($gallery->user->isAdmin()) {
-		$docsUrl = galleryDocs('admin');
-	        if ($docsUrl) {
-			$iconText = getIconText('info.gif', _("documentation"));
-			$iconElements[] = "<a href=\"$docsUrl\">". $iconText .'</a>';
-	        }
-
-		$iconText = getIconText('kdf.gif', _("admin page"));
-		$iconElements[] = '<a href="'. makeGalleryUrl('admin-page.php') .'">'. $iconText .'</a> ';
-	}
-	if (!$GALLERY_EMBEDDED_INSIDE) {
-		$iconText = getIconText('exit.gif', _("logout"));
-		$iconElements[] = '<a href="'. doCommand("logout", array(), "albums.php") .'">'. $iconText .'</a>';
-	}
 } else {
-	if (!$GALLERY_EMBEDDED_INSIDE) {
-		$iconText = getIconText('identity.gif', _("login"));
-	        $iconElements[] = popup_link($iconText, "login.php", false, true, 500, 500);
-
-            if (!strcmp($gallery->app->selfReg, 'yes')) {
-		$iconText = getIconText('yast_sysadmin2.gif', _("register"));
-	        $iconElements[] = popup_link($iconText, "register.php", false, true, 500, 500);
-            }
-	}
+    if (!$GALLERY_EMBEDDED_INSIDE) {
+        $iconText = getIconText('identity.gif', gTranslate('core', "login"));
+        $iconElements[] = popup_link($iconText, "login.php", false, true, 500, 500);
+
+        if (!strcmp($gallery->app->selfReg, 'yes')) {
+            $iconText = getIconText('yast_sysadmin2.gif', gTranslate('core', "register"));
+            $iconElements[] = popup_link($iconText, "register.php", false, true, 500, 500);
+        }
+    }
 }
 
 $adminbox["text"] = $adminText;
@@ -238,37 +246,36 @@
 if ( (sizeof($albumDB->brokenAlbums) || sizeof($albumDB->outOfDateAlbums)) && $gallery->user->isAdmin()) {
 
 	echo "\n<center><div style=\"width:60%; border-style:outset; border-width:5px; border-color:red; padding: 5px;\">";
-	echo "\n<p class=\"head\"><u>". _("Attention Gallery Administrator!") ."</u></p>";
+	echo "\n<p class=\"head\"><u>". gTranslate('core', "Attention Gallery Administrator!") ."</u></p>";
 
 	if (sizeof($albumDB->brokenAlbums)) {
-		echo sprintf(_("%s has detected the following %d invalid album(s) in your albums directory<br>(%s):"),
+		echo sprintf(gTranslate('core', "%s has detected the following %d invalid album(s) in your albums directory<br>(%s):"),
 		    Gallery(), sizeof($albumDB->brokenAlbums), $gallery->app->albumDir);
 		echo "\n<p>";
 		foreach ($albumDB->brokenAlbums as $tmpAlbumName) {
 			echo "<br>$tmpAlbumName\n";
 		}
-	echo "\n</p>". _("Please move it/them out of the albums directory.") ;
+	echo "\n</p>". gTranslate('core', "Please move it/them out of the albums directory.") ;
 	}
 
 	if(sizeof($albumDB->outOfDateAlbums)) {
-		echo sprintf(_("%s has detected that %d of your albums are out of date."),
+		echo sprintf(gTranslate('core', "%s has detected that %d of your albums are out of date."),
 			Gallery(), sizeof($albumDB->outOfDateAlbums));
 
 		echo "\n<br>";
-		echo sprintf(_("Please %s."), popup_link(_("upgrade those albums"), "upgrade_album.php",0,0,500,500,"error"));
+		echo sprintf(gTranslate('core', "Please %s."), popup_link(gTranslate('core', "upgrade those albums"), "upgrade_album.php",0,0,500,500,"error"));
 	}
 	echo "\n</div></center>\n";
 }
 
-
 if (getRequestVar('gRedir') == 1 && ! $gallery->session->gRedirDone) {
-        echo "\n<center><div style=\"width:60%; border-style:outset; border-width:5px; border-color:red; padding: 5px\">";
-        echo "\n<p class=\"head\"><u>". _("Attention!") ."</u></p>";
+    echo "\n<center><div style=\"width:60%; border-style:outset; border-width:5px; border-color:red; padding: 5px\">";
+    echo "\n<p class=\"head\"><u>". gTranslate('core', "Attention!") ."</u></p>";
 
-	echo sprintf(_('The album or photo that you were attempting to view either does not exist, or requires user privileges that you do not possess. %s'), ($gallery->user->isLoggedIn() && !$GALLERY_EMBEDDED_INSIDE ? '' : sprintf(_("%s and try again."),
-		popup_link(_("Log in"), "login.php", false, true, 500, 500))));
-        echo "\n</div></center>\n";
-	$gallery->session->gRedirDone = true;
+    echo sprintf(gTranslate('core', 'The album or photo that you were attempting to view either does not exist, or requires user privileges that you do not possess. %s'), ($gallery->user->isLoggedIn() && !$GALLERY_EMBEDDED_INSIDE ? '' : sprintf(gTranslate('core', "%s and try again."),
+    popup_link(gTranslate('core', "Log in"), "login.php", false, true, 500, 500))));
+    echo "\n</div></center>\n";
+    $gallery->session->gRedirDone = true;
 }
 ?>
 
@@ -280,14 +287,14 @@
 $end = min($start + $perPage - 1, $numAlbums);
 for ($i = $start; $i <= $end; $i++) {
     if(!$gallery->album = $albumDB->getAlbum($gallery->user, $i)) {
-	echo gallery_error(sprintf(_("The requested album with index %s is not valid"), $i));
+        echo gallery_error(sprintf(gTranslate('core', "The requested album with index %s is not valid"), $i));
         continue;
     }
     $isRoot = $gallery->album->isRoot(); // Only display album if it is a root album
     if($isRoot) {
-	if (strcmp($gallery->app->showOwners, "no")) {
-	    $owner = $gallery->album->getOwner();
-	}
+        if (strcmp($gallery->app->showOwners, "no")) {
+            $owner = $gallery->album->getOwner();
+        }
         $tmpAlbumName = $gallery->album->fields["name"];
         $albumURL = makeAlbumUrl($tmpAlbumName);
 ?>
@@ -315,13 +322,13 @@
       $gallery->html_wrap['pixelImage'] = getImagePath('pixel_trans.gif');
       $scaleTo = $gallery->app->highlight_size;
       list($iWidth, $iHeight) = $gallery->album->getHighlightDimensions($scaleTo);
-      if (!$iWidth) {
-	  $iWidth = $gallery->app->highlight_size;
-	  $iHeight = 100;
+      if (empty($iWidth)) {
+          $iWidth = $gallery->app->highlight_size;
+          $iHeight = 100;
       }
       $gallery->html_wrap['imageWidth'] = $iWidth;
       $gallery->html_wrap['imageHeight'] = $iHeight;
-      $gallery->html_wrap['imageTag'] = $gallery->album->getHighlightTag($scaleTo,'', _("Highlight for Album:") ." ". $gallery->album->fields["title"]);
+      $gallery->html_wrap['imageTag'] = $gallery->album->getHighlightTag($scaleTo,'', gTranslate('core', "Highlight for Album:") ." ". $gallery->album->fields["title"]);
       $gallery->html_wrap['imageHref'] = $albumURL;
       $gallery->html_wrap['frame'] = $gallery->app->gallery_thumb_frame_style;
       includeHtmlWrap('inline_gallerythumb.frame');
@@ -338,8 +345,13 @@
             <tr>
               <td class="mod_title_left"></td>
               <td class="title">
-                <?php _("title") ?>
-                <?php echo editField($gallery->album, "title", $albumURL) ?>
+                <?php
+			echo editField($gallery->album, "title", $albumURL);
+			if ($gallery->user->canDownloadAlbum($gallery->album) && $gallery->album->numPhotos(1)) {
+			    $iconText = getIconText('compressed.png', gTranslate('core', "Download entire album as archive"), 'yes');
+			    echo popup_link($iconText, "download.php?set_albumName=$tmpAlbumName",false,false,500,500); 
+			}
+		?>
               </td>
               <td class="mod_title_right"></td>
             </tr>
@@ -356,21 +368,30 @@
   <?php
 	include(dirname(__FILE__) . '/layout/adminAlbumCommands.inc');
 
+	/*
+	* Description
+	*/
 	$description = editField($gallery->album, "description") ;
-	if ($description != "") {
+	if (!empty($description)) {
 		echo "\n<div class=\"desc\">";
 		echo "\n\t$description";
 		echo "\n</div>";
-  	}
+	}
 
+	/*
+	* Owner
+	*/
 	if (strcmp($gallery->app->showOwners, "no")) {
 		echo "\n<div class=\"desc\">";
-		echo _("Owner:") . ' '. showOwner($owner);
+		echo sprintf(gTranslate('core', "Owner: %s"),showOwner($owner));
 		echo '</div>';
 	}
 
+	/*
+	* Url (only for admins and owner)
+	*/
 	if ($gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($gallery->album)) {
-		echo _("url:") . '<a href="'. $albumURL . '">';
+		echo gTranslate('core', "url:") . '<a href="'. $albumURL . '">';
 		if (!$gallery->session->offline) {
 			echo breakString(urldecode($albumURL), 60, '&', 5);
 		} else {
@@ -381,58 +402,80 @@
 		if (ereg("album[[:digit:]]+$", $albumURL)) {
 			if (!$gallery->session->offline) {
 				echo '<br><span class="error">'.
-				  _("Hey!") .
-				  sprintf(_("%s so that the URL is not so generic!"),
-					popup_link(_("Rename this album"), "rename_album.php?set_albumName={$tmpAlbumName}&index=$i",0,0,500,500,"error"));
+				gTranslate('core', "Hey!") .
+				sprintf(gTranslate('core', "%s so that the URL is not so generic!"),
+				popup_link(gTranslate('core', "Rename this album"), "rename_album.php?set_albumName={$tmpAlbumName}&index=$i",0,0,500,500,"error"));
 				echo '</span>';
 			}
 		}
 
 	}
-	?>
 
-  <br>
-  <span class="fineprint">
-   <?php
-	echo sprintf(_("Last changed on %s."), $gallery->album->getLastModificationDate() );
-	$visibleItems=array_sum($gallery->album->numVisibleItems($gallery->user));
-	echo " "; // Need a space between these two text blocks
-	echo pluralize_n2(ngettext("This album contains 1 item.", "This album contains %d items.", $visibleItems), $visibleItems);
+	echo "\n<br><span class=\"fineprint\">";
+	
+	/*
+	* Created / Last Changed
+	*/
+	$creationDate = $gallery->album->getCreationDate();
+	$lastModifiedDate = $gallery->album->getLastModificationDate();
+	if($creationDate) {
+		printf(_("Created on %s, last changed on %s."), $creationDate, $lastModifiedDate);
+	}
+	else {
+		printf(gTranslate('core', "Last changed on %s."), $lastModifiedDate);
+	}
+	
+	/*
+	* Amount of items
+	*/
+	echo ' '; // Need a space between these two text blocks
+	list($visibleItems) = $gallery->album->numItems($gallery->user, true);
+
+	echo gTranslate('core', "This album contains 1 item.", "This album contains %d items.", $visibleItems);
+	
+	/*
+	* Click counter + reset for it
+	*/
 	if (!($gallery->album->fields["display_clicks"] == "no") && !$gallery->session->offline) {
-?>
-   <br><?php
-	$clickCount=$gallery->album->getClicks();
-	echo sprintf(_("This album has been viewed %s since %s."),
-		pluralize_n2(ngettext("1 time", "%d times", $clickCount), $clickCount, _("0 times")),
-		$gallery->album->getClicksDate());
-}
-$albumName=$gallery->album->fields["name"];
-if ($gallery->user->canWriteToAlbum($gallery->album) &&
-   (!($gallery->album->fields["display_clicks"] == "no"))) {
-	echo " ".popup_link("[" . _("reset counter") ."]", doCommand("reset-album-clicks", array("set_albumName" => $albumName), "albums.php"), 1);
-}
-if($gallery->app->comments_enabled == 'yes') {
-	// if comments_indication are "albums" or "both"
-	switch ($gallery->app->comments_indication) {
-	case "albums":
-        case "both":
-		$lastCommentDate = $gallery->album->lastCommentDate($gallery->app->comments_indication_verbose);
-		print lastCommentString($lastCommentDate, $displayCommentLegend);
-	} // end switch
-}
-?>
+		$clickCount = $gallery->album->getClicks();
+		
+		echo "\n<br>";
+		printf(gTranslate('core', "This album has been viewed %s since %s."),
+		  gTranslate('core', "1 time", "%d times", $clickCount, gTranslate('core', "0 times")),
+		  $gallery->album->getClicksDate());
+	}
+	$albumName = $gallery->album->fields["name"];
+	if ($gallery->user->canWriteToAlbum($gallery->album) &&
+	(!($gallery->album->fields["display_clicks"] == "no"))) {
+		echo " ".popup_link("[" . gTranslate('core', "reset counter") ."]", doCommand("reset-album-clicks", array("set_albumName" => $albumName), "albums.php"), 1);
+	}
+	
+	/*
+	* Comment Indicator
+	*/
+	if($gallery->app->comments_enabled == 'yes') {
+		// if comments_indication are "albums" or "both"
+		switch ($gallery->app->comments_indication) {
+			case "albums":
+			case "both":
+			$lastCommentDate = $gallery->album->lastCommentDate($gallery->app->comments_indication_verbose);
+			print lastCommentString($lastCommentDate, $displayCommentLegend);
+		} // end switch
+	}
 
-  </span>
-<?php
+	echo "\n</span>";
 
+	// End Album Infos
+ 
+ // Start tree
     if ( isset($gallery->app->albumTreeDepth) && $gallery->app->albumTreeDepth > 0)
 	if (isset($gallery->app->microTree) && $gallery->app->microTree == 'yes') { ?>
   <div style="width: 100%;">
-    <?php echo printMicroChildren($albumName); ?>
+  <?php echo printMicroChildren2(createTreeArray($albumName,$depth = 0)); ?>
   </div>
 <?php } else { ?>
-  <td align="left" valign="top" class="albumdesc">
-   <?php echo printChildren($albumName); ?>
+  <td valign="top" class="albumdesc">
+<?php printChildren(createTreeArray($albumName,$depth = 0)); ?>
   </td>
 <?php } ?>
   </tr>
@@ -440,7 +483,7 @@
   <!-- End Album Column Block -->
 
 <?php
-} // if isRoot() close
+    } // if isRoot() close
 } // for() loop
 ?>
 </table>
@@ -449,7 +492,7 @@
 if ($displayCommentLegend) {
 	//display legend for comments
 	echo '<p><span class="commentIndication">*</span>';
-	echo '<span class="fineprint">'. _("Comments available for this item.") .'</span></p>';
+	echo '<span class="fineprint">'. gTranslate('core', "Comments available for this item.") .'</span></p>';
 }
 ?>
 <!-- bottom nav -->
diff -Naur gallery-1.5.1/AUTHORS gallery-1.5.2/AUTHORS
--- gallery-1.5.1/AUTHORS	2005-08-09 16:32:13.000000000 +0200
+++ gallery-1.5.2/AUTHORS	2005-08-11 14:55:37.000000000 +0200
@@ -1,4 +1,4 @@
-$Id: AUTHORS,v 1.24.4.1 2005/08/09 14:32:13 jenst Exp $
+$Id: AUTHORS,v 1.25 2005/08/11 12:55:37 jenst Exp $
 
 Many people have dedicated their time to making Gallery what it is
 today.  Here is a list of folks in alphabetical order who have
diff -Naur gallery-1.5.1/block-random.php gallery-1.5.2/block-random.php
--- gallery-1.5.1/block-random.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/block-random.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: block-random.php,v 1.14.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: block-random.php,v 1.17.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 /*
  * This block selects a random photo for display.  It will only display photos
@@ -36,7 +36,7 @@
  * *Nuke:
  * http://<URL to your Nuke>/modules.php?op=modload&name=gallery&file=index&include=block-random.php
  *
- * Mambo:
+ * Mambo / Joomla :
  * http://<URL to Mambo>/index.php?option=com_gallery&Itemid=XXX
  */
 
@@ -59,9 +59,9 @@
 
 if ($rebuild) {
 	scanAlbums();
-	saveCache();
+	saveGalleryBlockRandomCache();
 } else {
-	readCache();
+	readGalleryBlockRandomCache();
 }
 
 $i = 0;
@@ -71,7 +71,7 @@
 } while (empty($success) && $i < $gallery->app->blockRandomAttempts);
 
 if (empty($success)) {
-	echo '<center>No photo chosen.</center>';
+	echo _("No photo chosen.");
 }
 
 function doPhoto() {
@@ -83,20 +83,21 @@
 
 	if (!empty($index)) {
 		$id = $album->getPhotoId($index);
-		echo ""
-			. '<center><a href="' . makeAlbumUrl($album->fields['name'], $id) . '">'
-			. $album->getThumbnailTag($index)
-			. '</a></center>';
-
-		$caption = $album->getCaption($index);
-		if ($caption) {
-			echo '<br><center>' . $caption . '</center>';
-		}
-
-		echo '<br><center>From: '
-			. '<a href="' .makeAlbumUrl($album->fields['name']) .'">'
-			. $album->fields['title']
-			. '</a></center>';
+		$caption = $album->getCaption($index) ? '<br>'. $album->getCaption($index) : '';
+		$photoUrl = makeAlbumUrl($album->fields['name'], $id);
+		$imageUrl = $album->getThumbnailTag($index);
+		$albumUrl = makeAlbumUrl($album->fields['name']);
+		$albumTitle = $album->fields['title'];
+?>
+  <div class="random-block">
+    <div class="random-block-photo">
+    <a href="<?php echo $photoUrl; ?>"><?php echo $imageUrl; ?></a>
+    <?php echo $caption; ?>
+    
+    </div>
+    <?php printf (_("From album: %s"), "<a href=\"$albumUrl\">$albumTitle</a>"); ?>
+  </div>
+<?php
 		return 1;
 	} else {
 		return 0;
@@ -109,12 +110,12 @@
  * --------------------------------------------------
  */
 
-function saveCache() {
+function saveGalleryBlockRandomCache() {
 	global $cache;
 	safe_serialize($cache, CACHE_FILE);
 }
 
-function readCache() {
+function readGalleryBlockRandomCache() {
 	global $cache;
 
 	$sCache = getFile(CACHE_FILE);
diff -Naur gallery-1.5.1/captionator.php gallery-1.5.2/captionator.php
--- gallery-1.5.1/captionator.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/captionator.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,23 +1,23 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: captionator.php,v 1.64.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: captionator.php,v 1.69.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -42,7 +42,7 @@
 if (!isset($perPage)) {
     $perPage = $gallery->album->fields['rows'] * $gallery->album->fields['cols'];
     if (!$perPage) {
-	$perPage = 5;
+        $perPage = 5;
     }
 }
 
@@ -51,8 +51,8 @@
 
     if ($captionedAlbum != $gallery->album->fields['name']) {
         echo gallery_error(_("Captioned album does not match current album - aborting changes!"));
-	echo '<br><br>';
-	echo '<input type="submit" onclick="window.location=\'' . makeAlbumUrl($captionedAlbum) . '\'" value="Exit">';
+        echo '<br><br>';
+        echo '<input type="submit" onclick="window.location=\'' . makeAlbumUrl($captionedAlbum) . '\'" value="Exit">';
         exit;
     }
 
@@ -61,39 +61,39 @@
     while ($i < $start) {
         $i++;
     }
-   
+
     $count = 0;
     while ($count < $perPage && $i <= $numPhotos) {
-      if ($gallery->album->isAlbum($i)) {
-        $myAlbumName = $gallery->album->getAlbumName($i);
-        $myAlbum = new Album();
-        $myAlbum->load($myAlbumName);
-	$myAlbum->fields['description'] = getRequestVar("new_captions_$i");
-	$myAlbum->save(array(i18n("Text has been changed")));
-
-      } else {
-	$gallery->album->setCaption($i, getRequestVar("new_captions_$i"));
-	$gallery->album->setKeywords($i, getRequestVar("new_keywords_$i"));
-	if (isset($extra_fields)) {
-	    foreach ($extra_fields[$i] as $field => $value) {
-		$gallery->album->setExtraField($i, $field, trim($value));
-	    }
-	}
-      }
+        if ($gallery->album->isAlbum($i)) {
+            $myAlbumName = $gallery->album->getAlbumName($i);
+            $myAlbum = new Album();
+            $myAlbum->load($myAlbumName);
+            $myAlbum->fields['description'] = getRequestVar("new_captions_$i");
+            $myAlbum->save(array(i18n("Text has been changed")));
+
+        } else {
+            $gallery->album->setCaption($i, getRequestVar("new_captions_$i"));
+            $gallery->album->setKeywords($i, getRequestVar("new_keywords_$i"));
+            if (isset($extra_fields)) {
+                foreach ($extra_fields[$i] as $field => $value) {
+                    $gallery->album->setExtraField($i, $field, trim($value));
+                }
+            }
+        }
 
-      $i++;
-      $count++;
+        $i++;
+        $count++;
     }
 
     $gallery->album->save(array(i18n("Text has been changed")));
 }
 
 if (isset($cancel) || isset($save)) {
-	if (!isDebugging())
-		header("Location: " . makeAlbumHeaderUrl($captionedAlbum));
-	else
-		echo "<br><a href='" . makeAlbumUrl($captionedAlbum) . "'>" . _("Debugging: Click here to return to the album") . "</a><br>";
-	return;
+    if (!isDebugging())
+    header("Location: " . makeAlbumHeaderUrl($captionedAlbum));
+    else
+    echo "<br><a href='" . makeAlbumUrl($captionedAlbum) . "'>" . _("Debugging: Click here to return to the album") . "</a><br>";
+    return;
 }
 
 #-- did they hit next? ---
@@ -124,7 +124,7 @@
 $bordercolor = $gallery->album->fields["bordercolor"];
 
 if (!$GALLERY_EMBEDDED_INSIDE) {
-	doctype();
+    doctype();
 ?>
 <html> 
 <head>
@@ -132,9 +132,9 @@
   <?php common_header(); ?>
   <style type="text/css">
 <?php
-// the link colors have to be done here to override the style sheet 
+// the link colors have to be done here to override the style sheet
 if ($gallery->album->fields["linkcolor"]) {
-?>
+    ?>
     A:link, A:visited, A:active
       { color: <?php echo $gallery->album->fields[linkcolor] ?>; }
     A:hover
@@ -172,19 +172,38 @@
 
 $adminText = _("Multiple Caption Editor.") . " ";
 if ($numPhotos == 1) {
-        $adminText .= _("1 photo in this album") ;
+    $adminText .= _("1 photo in this album") ;
 } else {
-        $adminText .= "$numPhotos ". _("items in this album") ;
     if ($maxPages > 1) {
-        $adminText .= " " . _("on") . " " . pluralize_n2(ngettext("one page", "%d pages", $maxPages), $maxPages);
+        $adminText .= sprintf (_("%s items in this album on %s"), 
+		$numPhotos, 
+		gTranslate('core',"one page", "%d pages", $maxPages));
+    }
+    else {
+        $adminText .= sprintf (_("%s items in this album"), $numPhotos);
     }
 }
 
-$adminbox["text"] = $adminText;
-$adminbox["bordercolor"] = $bordercolor;
+$adminbox['text'] = $adminText;
+$adminbox['bordercolor'] = $bordercolor;
+
+$upArrowURL = '<img src="' . getImagePath('nav_home.gif') . '" width="13" height="11" ' .
+  'alt="' . _("navigate UP") .'" title="' . _("navigate UP") .'" border="0">';
+
+if ($gallery->album->fields['returnto'] != 'no') {
+    foreach ($gallery->album->getParentAlbums() as $navAlbum) {
+        $breadcrumb["text"][] = $navAlbum['prefixText'] .': <a class="bread" href="'. $navAlbum['url'] . '">'.
+        $navAlbum['title'] . "&nbsp;" . $upArrowURL . "</a>";
+    }
+}
+
+includeLayout('navtablebegin.inc');
 includeLayout('adminbox.inc');
+includeLayout('navtablemiddle.inc');
+includeLayout('breadcrumb.inc');
+includeLayout('navtableend.inc');
 
-echo makeFormIntro("captionator.php", array("method" => "POST")) ?>
+echo makeFormIntro("captionator.php") ?>
 <input type="hidden" name="page" value="<?php echo $page ?>">
 <input type="hidden" name="perPage" value="<?php echo $perPage ?>">
 <input type="hidden" name="captionedAlbum" value="<?php echo $gallery->album->fields['name']; ?>">
@@ -193,11 +212,11 @@
 	<input type="submit" name="save" value="<?php echo _("Save and Exit") ?>">
 <?php 
 if (!isset($last)) {
-	echo '<input type="submit" name="next" value="'. sprintf(_("Save and Edit Next %d"),$perPage) .'">';
+    echo '<input type="submit" name="next" value="'. sprintf(_("Save and Edit Next %d"),$perPage) .'">';
 }
 
 if ($page != 1) {
-	echo '<input type="submit" name="prev" value="'. sprintf(_("Save and Edit Previous %d"), $perPage) .'">';
+    echo '<input type="submit" name="prev" value="'. sprintf(_("Save and Edit Previous %d"), $perPage) .'">';
 }
 ?>
 
@@ -209,16 +228,16 @@
 <?php
 if ($numPhotos) {
 
-	// Find the correct starting point, accounting for hidden photos
-	$i = 0;
-	while ($i < $start) {
-        	$i++;
-	}
+    // Find the correct starting point, accounting for hidden photos
+    $i = 0;
+    while ($i < $start) {
+        $i++;
+    }
 
-	$count = 0;
+    $count = 0;
 
-	// Go trough the album
-	while ($count < $perPage && $i <= $numPhotos) {
+    // Go trough the album
+    while ($count < $perPage && $i <= $numPhotos) {
 ?>  
 	<!-- Picture #<?php echo $i-1 ?> -->  
 <tr>
@@ -228,79 +247,76 @@
 <tr>
 	<td width="<?php echo $thumbSize ?>" align="center" valign="top" class="modcaption"><br>
 <?php
-		$photo = $gallery->album->getPhoto($i);
-		list($width, $height) = $photo->getDimensions();
-		if (!($photo->isMovie())) {
-			echo popup_link($gallery->album->getThumbnailTag($i, $thumbSize).
-						"<br />"._("(click to enlarge)"),
-					$gallery->album->getPhotoPath($i),1,false,
-					$height+20,$width+20,
-                                        'modcaption');
-		} else {
-			echo $gallery->album->getThumbnailTag($i,$thumbSize);
-		}
-                if ($gallery->album->isHidden($i) && !$gallery->session->offline) {
-                        echo "<br>(" . _("hidden") .")<br>";
-                }
+$photo = $gallery->album->getPhoto($i);
+list($width, $height) = $photo->getDimensions();
+if (!($photo->isMovie())) {
+    echo popup_link($gallery->album->getThumbnailTag($i, $thumbSize).
+    "<br />"._("(click to enlarge)"),
+    $gallery->album->getPhotoPath($i),1,false,
+    $height+20,$width+20,
+    'modcaption');
+} else {
+    echo $gallery->album->getThumbnailTag($i,$thumbSize);
+}
+if ($gallery->album->isHidden($i) && !$gallery->session->offline) {
+    echo "<br>(" . _("hidden") .")<br>";
+}
 ?>	
 	</td>
 	<td height="1"><?php echo $pixelImage ?></td>
 	<td valign="top"><?php
-		if ($gallery->album->isAlbum($i)) {
-			// Found Element is an album
-			$myAlbumName = $gallery->album->getAlbumName($i);
-			$myAlbum = new Album();
-			$myAlbum->load($myAlbumName);
-			$oldCaption = $myAlbum->fields['description'];
-
-			echo "\n\t\t". '<p class="admin">'. _("Album Caption") . ': ';
-                	echo '<br><textarea name="new_captions_'. $i .'" rows="3" cols="60">'. $oldCaption .'</textarea></p>';
-		} else {
-        		$oldCaption = $gallery->album->getCaption($i);
-	        	$oldKeywords = $gallery->album->getKeywords($i);
-
-			if ($gallery->album->photos[$i-1]->isMovie()) {
-				echo "\n\t\t". '<p class="admin">'. _("Movie Caption") . ': ';
-			} else {
-				echo "\n\t\t". '<p class="admin">'. _("Photo Caption") . ': ';
-			}
-			echo '<br><textarea name="new_captions_'. $i .'" rows="3" cols="60">'. $oldCaption .'</textarea></p>';
-			foreach ($gallery->album->getExtraFields() as $field) { 
-				if (in_array($field, array_keys(automaticFieldsList())))
-				{
-					continue;
-				}
-				$value=$gallery->album->getExtraField($i, $field);
-	        		if ($field == "Title") {
-					echo "\n\t\t". '<div class="admin">' . _("Title") .': </div>';
-					echo "\n\t\t<input type=\"text\" name=\"extra_fields[$i][$field]\" value=\"$value\" size=\"40\">";
-        			}
-				else {
-					echo "\n\t\t". '<br><span class="admin">'. $field .': </span><br>';
-					echo "\n\t\t<textarea name=\"extra_fields[$i][$field]\" rows=\"2\" cols=\"60\">$value</textarea>";
-				}
-			}
+	if ($gallery->album->isAlbum($i)) {
+	    // Found Element is an album
+	    $myAlbumName = $gallery->album->getAlbumName($i);
+	    $myAlbum = new Album();
+	    $myAlbum->load($myAlbumName);
+	    $oldCaption = $myAlbum->fields['description'];
+
+	    echo "\n\t\t". '<p class="admin">'. _("Album Caption") . ': ';
+	    echo '<br><textarea name="new_captions_'. $i .'" rows="3" cols="60">'. $oldCaption .'</textarea></p>';
+	} else {
+	    $oldCaption = $gallery->album->getCaption($i);
+	    $oldKeywords = $gallery->album->getKeywords($i);
+
+	    if ($gallery->album->photos[$i-1]->isMovie()) {
+	        echo "\n\t\t". '<p class="admin">'. _("Movie Caption") . ': ';
+	    } else {
+	        echo "\n\t\t". '<p class="admin">'. _("Photo Caption") . ': ';
+	    }
+	    echo '<br><textarea name="new_captions_'. $i .'" rows="3" cols="60">'. $oldCaption .'</textarea></p>';
+	    foreach ($gallery->album->getExtraFields() as $field) {
+	        if (in_array($field, array_keys(automaticFieldsList()))) {
+	            continue;
+	        }
+	        $value=$gallery->album->getExtraField($i, $field);
+	        if ($field == "Title") {
+	            echo "\n\t\t". '<div class="admin">' . _("Title") .': </div>';
+	            echo "\n\t\t<input type=\"text\" name=\"extra_fields[$i][$field]\" value=\"$value\" size=\"40\">";
+	        }
+	        else {
+	            echo "\n\t\t". '<br><span class="admin">'. _($field) .': </span><br>';
+	            echo "\n\t\t<textarea name=\"extra_fields[$i][$field]\" rows=\"2\" cols=\"60\">$value</textarea>";
+	        }
+	    }
 
-			echo "\n\t\t". '<p class="admin">'. _("Keywords") .': <br>';
-			echo "\n\t\t". '<input type="text" name="new_keywords_'. $i .'" size="65" value="'. $oldKeywords .'"></p>';
+	    echo "\n\t\t". '<p class="admin">'. gTranslate('core', "Keywords") .': <br>';
+	    echo "\n\t\t". '<input type="text" name="new_keywords_'. $i .'" size="65" value="'. $oldKeywords .'"></p>';
 
-			$itemCaptureDate = $gallery->album->getItemCaptureDate($i);
-			$capturedate=strftime($gallery->app->dateTimeString , $itemCaptureDate);
+	    $itemCaptureDate = $gallery->album->getItemCaptureDate($i);
+	    $capturedate=strftime($gallery->app->dateTimeString , $itemCaptureDate);
 
-			echo "\n\t\t". '<p class="admin">'. _("Capture Date") . ': '. $capturedate. '</p><br>';
-		}
+	    echo "\n\t\t". '<p class="admin">'. _("Capture Date") . ': '. $capturedate. '</p><br>';
+	}
 	echo "\n\t</td>";
 	echo "\n</tr>";
 
-        $i++;
-        $count++;
-	}
+	$i++;
+	$count++;
+    }
 } else {
-	echo("\n<tr>");
-	echo("\n\t<td>");
-	echo(_("NO PHOTOS!"));
-	echo("\n\t</td>");
-	echo("\n</tr>");
+    echo "\n<tr>";
+    echo "\n\t<td>". _("NO PHOTOS!") ."\n\t</td>";
+    echo "\n</tr>";
 }
 ?>
 </table>
@@ -309,11 +325,11 @@
 	<input type="submit" name="save" value="<?php echo _("Save and Exit") ?>">
 <?php 
 if (!isset($last)) {
-	echo '<input type="submit" name="next" value="'. sprintf(_("Save and Edit Next %d"),$perPage) .'">';
+    echo '<input type="submit" name="next" value="'. sprintf(_("Save and Edit Next %d"),$perPage) .'">';
 }
 
 if ($page != 1) {
-	echo '<input type="submit" name="prev" value="'. sprintf(_("Save and Edit Previous %d"), $perPage) .'">';
+    echo '<input type="submit" name="prev" value="'. sprintf(_("Save and Edit Previous %d"), $perPage) .'">';
 }
 ?>
 
diff -Naur gallery-1.5.1/ChangeLog gallery-1.5.2/ChangeLog
--- gallery-1.5.1/ChangeLog	2005-09-22 15:08:00.000000000 +0200
+++ gallery-1.5.2/ChangeLog	2006-01-19 19:51:52.000000000 +0100
@@ -1,3579 +1,1714 @@
-2005-09-22 Chris Kelly <ckdake@users.sf.net> 1.5.1
+2006-01-19 Chris Kelly <ckdake@ckdake.com> 1.5.2
 
-	* Release:  1.5.1
+ * Release: 1.5.2 Final
 
-2005-09-22 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b13
+2006-01-19 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b9
 
-	* FixFix: b11 broke more then it fixed :-( FIXed it :-)
+ * Change: "sanitize" fullname in new_password.php also.
 
-2005-09-21 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b12
+ * Change: removed html/errorRow.inc, move this into lib/messages
 
-	* Fix: Urls for Gallery embedded into CPGNuke didnt work.
-	       So we do the same for cpgnuke as for the other *nukes done in 1.5.1-RC3-cvs-b3.
-	
-2005-09-17 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b11
+2006-01-18 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b8
 
-	* "Fix": Cach invalid input for $page and set_albumListPage in view_album.php and stats.php
-	Found by Andrew Khlebutin
+ * Security-Fix: Fullname for users was not sanitized.
+                 Thus an unnince user could do a XSS injection
+	         as the fullname is displayed when owner is displayed.
+   Thanks to Peter Schumacher!
 
-2005-09-17 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b10
+ * Fix: 'fitToWindow' was broken for Internet Explorer.
+   Thanks to petorian from forum.
 
-	* Fix: fs_opendir leaks resources.
-	  Found and fixed by David Faulkner
+2006-01-17 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.2-RC3-cvs-b7
 
-2005-09-17 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b9
+ * Fix: applets work again in Joomla-embeded mode. Thanks Mike Henin.
 
-        * Fix: Make changeToAlbum emails HTML-mails, so links work correctly.
-	  Thanks to Ansolon.
+2006-01-13 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b6
 
-2005-09-15 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b8
+ * Change: Added css for subalbumtree and tree element to have same appearance as in 1.5.1
 
-	* Fix: Typo.
+2006-01-13 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b5
 
-2005-09-15 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b7
+ * Fix: Substitution function for glob() for PHP<4.3 returned . and .. which broke zipdownload.
 
-	* Fix: Turn of verbose display of exifdata with jhead.
-	       This caused problems as verbosed data has different structure.
-	
-	* Fix: First line of exifdata was always removed,
-	       regardless wether jhead or exiftags is used.
+2006-01-11 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b4
 
-2005-09-13 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b6
+ * Fix: Due to my regexp UNknowledge Pelles hints in RC2-cvs-b16 broke upload with netPBM.
 
-	* Change: Added paramater to gallery_mail() to send mail as HTML-mail.
+2006-01-11 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b3
 
-	* Fix: Make comment emails HTML-mails, so links work correctly.
+ * Fix: fitToResize in view_photo should not be applied to movies :)
+   Thanks rebdrew from forums.
 
-2005-09-12 Dariush Molavi <dari@nukedgallery.net> 1.5.1-RC4-cvs-b5
+2006-01-10 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b2
 
-	* Change: New address for Free Software Foundation in GPL header.
+ * Fix: OOoops, german in config wizard.
+   Thanks to Bart.
 
-2005-09-12 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b4
+2006-01-10 Jens Tkotz <jens@peino.de> 1.5.2-RC3-cvs-b1
 
-	* New: Added function urlIsrelative().
+ * Fix: galleryImage() in setup/check_versions.php should be gImage()
 
-	* Fix: Relative URL in $gallery->app->photoAlbumURL did not longer work,
-	       due to new full url schema added in
-               1.5.1-RC2-cvs-b14 + 1.5.1-RC3-cvs-b3.
+ * Fix: check_imagemagick.php and setup/check_netpbm.php just check for existence of config.php,
+	instead of doing proper test. Using gallerySanityCheck() now.
 
-	* Fix: $name is not set when Gallery is startpage in *Nuke.
-	       So we try to extract it from $modpath.
+ * Change: Removed function error_row_wrap(),just use gallery_error() in confirm.inc.
 
-	* Fix: Url in stats-wizard was not generated on first load when embedded.
+2006-01-09 Chris Kelly <ckdake@ckdake.com> 1.5.2-RC2
 
-2005-09-12 Rasmus Lerdorf 1.5.1-RC4-cvs-b3
+ * Release: 1.5.2-RC2
 
-	* Fix: Some functions taking arguments by reference for no real reason
-	       in gallery_remote2.php.
-	       It breaks under the latest versions of PHP because
-	       the reference checking has improved.
+2006-01-09 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b16
 
-2005-09-08 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b2
+ * Change: "pimp my code" in lib/imageManipulation.php
+   - Use separate internal var $stripProfiles instead of override $keepProfiles
+   - Use technically correct escaping in regexp. Thanks to Pelle.
+   - Use execwrapper instead of exex_internal.
 
-	* "Fix": As we use now (1.5.1-RC3-cvs-b12) verbose output for exifdata, 
-	   we now show only fields WITH data.
+2006-01-09 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b15
 
-2005-09-08 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b1
+ * Fix: "Set as highlight" for subalbums were broken in 1.5.2-RC2-CVS-b6
+   Thanks to mastrboy from forum.
 
-	* Fix: Issues with setup/functions.inc which not longer exists.
+2006-01-08 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b14
 
-2005-08-29  Chris Kelly <ckdake@users.sf.net> 1.5.1-RC3
+ * FIX: rar cmdline tool can only handle RAR.
+	- NOT handled: 'cab', 'arj', 'lzh', 'tar', 'gz', 'bz2', 'ace', 'uue', 'jar', 'z'
+	- Adjust text in upload form.
 
-	* Release: 1.5.1-RC3
+ * Fix: Supported archives were not showed in selected box for url upload.
 
-2005-08-29 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b15
+ * Fix: AcceptableArchive() should be acceptableArchive()
 
-	* Fix: Poll Properties were not set recursively.
+ * Fix: Dont extract content of rar archives with full path.
+        The results in problems when content files have spaces.
 
-2005-08-29 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b14
-	
-	* Merged b12 and b13, language syncronisation for RC3.
+ * Fix: Use of gTranslate in layout/adminAlbumCommands.inc
 
-2005-08-24 Jay Rossiter <cryptographite@users.sf.net> 1.5.1-RC3-cvs-b13
+ * Change: Added a lot more debugmessages (sorry translators)
 
-	* Fix: Prevent file exposure bug in stats module (thanks to ilia)
+ * Change: Some layout regarding to upload process.
 
-2005-08-23 Jay Rossiter <cryptographite@users.sf.net> 1.5.1-RC3-cvs-b12
+2006-01-06 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b13
 
-	* Fix: Prevent HTML tags inside EXIF info from being displayed without
-	  escaping.
+ * Fix: getLanguageAlias() was buggy,
+	but appeared only in some environtments in combination with Joomla! and/or Mambo.
 
-2005-08-19 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b11
+2006-01-06 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b12
 
-	* Fix: Make it possible to have Gallery as startpage in Postnuke or phpNuke.
+ * Update Copyright to 2006.
 
-	* Change: Url to w3c html validator.
+2006-01-05 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b11
 
-2005-08-17 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b10
+ * Fix: When Magic quotes are on and Gallery runs on Windows,
+        \ in pathes was erased by stripslashes.
 
-	* Fix: When using do_command.php e.g.for creating new album and Gallery is embedded,
-	       "Attempted security breach." occured due to new full url schema added in 
-	       1.5.1-RC2-cvs-b14 + 1.5.1-RC3-cvs-b3
+2006-01-04 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b10
 
-	* Fix: After creating a new album, with debug and email on, 
-	       an Error occured and dismiss button didnt work.
+  * Fix: Adapted init.php to fit with phpBB2 2.0.19
 
-2005-08-16 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b9
+  * Changed: Removed phpBB2 Patch, as it only would fit for a couple Versions.
 
-	* Fix: Moved and adapted setup/functions.inc to lib/setup.php.
-	       Some functions in this file are also used outside setup, 
-	       so when user protect the setup folder some functions where unavailable.
+2006-01-01 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b9
 
-	* New: Added functions fs_is_writable
+  * Fix: Bug #1379746 ] search.php wrongly matches albums
 
-	* Fix: .htacces is optional, use function above to check to prevent error message.	
+2005-12-31 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b8
 
-2005-08-16 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b8
+ * Fix: Albumtree used not the url, but the name.
+        Thanks eliah from forum.
 
-	* Fix: Wording. 'strg' is german ;) 'ctrl' is more international.
+2005-12-31 Kai Tomalik <kai@gallery-addons.com> 1.5.2-RC2-cvs-b7
 
-	* Change: Some indenting.
+ * Fix: No hardcoded table prefix for mambo and Joomla!
 
-	* "Fix": Change some <td nowrap> and put it into css class.
-		 Affected are class "head" and "title".
+2005-12-30 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b6
 
-2005-08-14  Alan Harder <alan.harder@sun.com>  1.5.1-RC3-cvs-b7
+ * Fix: Item Owner couldnt delete their own item when 
+        they had no delete permission for the complete album.
 
-	* Allow access to hidden photos via direct url.
-	  (rollback change from Gallery 1.3.1)
+ * Fix: Item Owner couldnt watermark their own pictures.
 
-2005-08-14 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b6
+ * Fix: Item Owner couldnt resize their own pictures.
 
-	* Fix: Use makeGalleryAlbumHeaderUrl() in links in Emails.
-	       - edit_appearance.php
-	       - classes/Album.php
-	       - lib/mail.php
+ * Fix: Item Owner permissions in view_album and view_photo were totally broken.
 
-	Thanks to Ansolom.
+ * Change: Layout in layout/watermarkform.inc
 
-	* Change: Some indenting and phpdocs.
+ * Change: More text when using form upload. Also layout enhancement for dynamic fields.
 
-2005-08-13 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b5
+ * Change: Reduced output in non-debug when adding items.
 
-	* Fix: Using referer for generating embedded urlprefix wasnt a good idea.
-	        Instead now use Gallery Url + script_name.
+ * Change: Layout in user_preferences.php
 
-	Thanks to Mark (SG7)
+2005-12-30 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b5
 
-2005-08-12  Bharat Mediratta  <bharat@menalto.com> 1.5.1-RC3-cvs-b4
+ * Fix: If user choosed "no caption" on upload, this setting was ignored.
+   Thanks to jobeus from forum.
 
-	* Fix: typo in albums.php 'posess' -> 'possess' (thanks driz)
+ * Fix: Removed deprecated Call-time pass-by-reference in watermarkform.
+   Thanks to Lypsik from forum.
 
-2005-08-12 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b3
+2005-12-29 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b4
 
-	* Fix: Added path to folder to the url when Gallery is embedded in *Nuke,
-	       but not in the document root.
+ * Fix: Added the two new help files to approved file list.
+   Thanks Kai.
 
-2005-08-11 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b2
+2005-12-29 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b3
 
-	* Fix: Even if clickcount display is off for an album
-	       an admin should see the click counts in stats.
+ * New: Added 2 new options for highlight and thumbnail quality.
+        Users complained about new fix quality settings.
 
-	Thanks to Lucent.
+   -> Config Version bump.
 
-2005-08-10 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b1
+2005-12-29 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b2
 
-	%!@# ZLORFIX ! i shouldnt touch RC code.
+ * Fix: Missing quotation broke previous thumbs in microthumb nav.
+   Thanks to Perrin from forums.
 
-	* Fix: Minimum width change broke ecard with pictures >= 200px width.
+ * Fix: Missing ; after &nbsp microthumb nav.
+ 
+2005-12-28 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b1
 
-2005-08-09  Chris Kelly <ckdake@users.sf.net> 1.5.1-RC2
+ * Fix: gTranslate relied on gettext, now works without.
+   Thanks to alindeman.
 
-	* Release: 1.5.1-RC2
+ * Change: removed last ngettext() call, use gTranslate instead.
 
-2005-08-09 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b15
+2005-12-28 Chris Kelly <ckdake@ckdake.com> 1.5.2-RC1
 
-	* Fix: Ecard stamp preview failed in IE, due to space in title of popup.
-	  Thanks to Dariush Molavi.
+ * Release: 1.5.2-RC1
 
-	* Change: Added minimum width of ecard.
+2005-12-28 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b61
 
-	* Change: used tidy on ecard template.
+ * Fix: Use full/resized prev in microthumbs
+   Thanks to Kai.
 
-	* Change: increased needed Debuglevel when got successfully dimensions of an image.
+2005-12-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b60
 
-2005-08-07 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b14
+ * Fix: Aurotated photos (exif) were rotated again on copy/move.
 
-	* Fix: Added urlprefix via referer to embedded urls, so we get complete urls in mails.
+ * Fix: Autorotation code was executed even if pic is no jpeg.
 
-	* Fix: Possible security hole in postnuke by overriding global $name
-	  Thanks to msandersen
+2005-12-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b59
 
-	* Change: Format in nls.php
+ * Fix: Enable ImageMaps only in resized view.
 
-	* Change: Make urls in comments mail a link.
+ * Change: AltText on tipIcon
 
-	* Fix: updated list of translateable core files.
+ * New: functions galleryLink() & generateAttrs()
 
-	* Fix: Added isset() around test for optional bins in setup to avoid warnings.
+ * Change: Added link back to photo from ImageMaps
 
-	* Change: Some language related things.
+ * Change: some indenting.
 
-2005-08-07 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b13
+2005-12-24 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b58
 
-	* Fix: Deleting comments via overview when embedded.
+ * Fix: Step 3 in Config was little bit broken.
+   Thanks to Kai.
 
-2005-08-07 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b12
+ * Change: Updated Manifest.
 
-	* Change: Postnuke related adaptions for new Versions.
-		  - urls
-		  - user / userdb
-		  - language
-		  - stylesheets in wrapper.header
-	  Thanks to msandersen
+2005-12-23 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b57
 
-	* Change: Little more info in footer in Debugmode.
+ * Change: Added display of creation date in albums.php
 
-	* Fix: Ecard preview when embedded.
+ * Change: Wording in register.php
 
-	* Fix: Stamp preview when embedded.
+ * New: Added method getCreationDate() in classes/Album.php
 
-2005-08-06 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b11
+ * Change: length for email and fullname field in html/userData.inc
 
-	* Fix: Check for NetPBM and ImageMagick was not fully correct.
+ * Change: change of bars002 skin.
 
-	* Fix: Separator for PATH var under windows is ; not :
+2005-12-19 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b56
 
-	* Fix: Added message for partially found ImageMagick.
+ * Change: Some css in config.php
 
-2005-08-04 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b10
+ * Fix: Disabled "Show the add vote link" in stats-wizard,
+        as this functionality is not implemented yet.
 
-	* Fix: Padding for current flag should belong to the td not img.
+ * Fix: removed redundant function galleryImage()
 
-	* Change: Added columncount 20 to flags table. removed old unused code.
+ * Change: simplified form_choice(); lib/setup.php
 
-2005-08-03 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b9
+ * Fix: Some HTML fixes in config wizard.
 
-	* Fix: Fix in b7 was not good :-|
+ * New: Show h0bbel(legend) for status appearing in step1 check page.
 
-2005-08-03 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b8
+ * New: Added Js to switch graphictoolkit settings.
 
-	* Change: Just added a new frame. Thanks to 'demonhood'
+2005-12-19 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b55
 
-2005-08-03 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b7
+ * Fix: Thumbnail in Successmessage for eCards got lost.
 
-	* Fix: A link to mainpage was shown in slideshow breadcrumb,
-	       regardless wether return to was off.
+ * Fix: Remove commentspam blacklist entries was broken.
 
-2005-07-30 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b6
+ Thanks to Kai for catching this.
 
-	* Change: Mailing
-	  o Moved Mail related functions into new lib/mail.php
-	  o Removed gallery_validate_email(), now only use check_email()
-	    - login.php
-	    - register.php
-	    - lib/mail.php
-	    - classes/Album.php
-	    - setup/check_mail.php
-	    - setup/functions.inc
-	 o reordered Notification mail. First now the message, then the disclaimer.
+2005-12-18 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b54
 
-	* Fix: Mailing
-	  o Recipients ($to) for gallery_mail() where mixed in some cases.
-	   Now always a proper array.
-	  o Emailprefix should be a prefix, not a suffix ;)
-	  o emailLogMessage() was not compliant to gallery_mail(). Tweaked both.
-	  o unhtmlentities() on some email subjects
+ * Change forgot to commit new icon images.
 
-	* Change: Lots of intenting.
+2005-12-17 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b53
 
-	* Change: Added "done" Button in manage_users.php
+ * Change: Code and html nicify.
 
-2005-07-29 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b5
+ * Fix: Button value in move_photo.
 
-	* Fix: Added missing { in classes/Mail/smtp.php.
-	       Bug sneaked in in php 4.4.0 fixes in 1.5.1-cvs-b61.
+2005-12-17 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b52
 
-2005-07-29 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b4
+ * Change: refactored printChildren and printMicrochilder
+	   o Added nice tree pics (ready for rtl)
+	   o Created function createTreeArray
 
-	* Fix: In Photoview, stay in the viewmode (full or normal) that the current photo is.
+ * Fix: Removed debugmessag in save_photos.php
 
-2005-07-26 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b3
+ * Fix: Use gTranslate as some places in classes/Album.php
 
-	* Fix: Fix in RC2-b1 "fixed" too much.
+ * Change: Reword metadataOnUpload help messag.
+	   Thanks to Christian "H0bbel" Mohn.
 
-2005-07-26 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b2
+ * Change: Nicified add_form.inc
 
-	* Fix: CSS Stylesheets were displayed to early when embedded.
-	       This caused warnings etc. when Environment sends headers.
+ * Fix: removed add_admin.inc from list of translateable files.
 
-	* Change: Added ... in Navigator to jump to the next Block.
+2005-12-15 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b51
 
-2005-07-24 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b1
+ * New: Added help for metadata on upload.
 
-	* Fix: Embedded Urls where generated wrong.
+ * Fix: Metadata on upload.
 
-2005-07-23  Chris Kelly <ckdake@users.sf.net> 1.5.1-RC1
+ * Change: Removed not need 'admin' tab in upload photos.
 
-	* Release: 1.5.1-RC1
+ * Change: Some text changes in administer startpage.
 
-2005-07-23 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b65
+ * Fix: imagemaps were not working inside Geeklog
+   (Thanks Georg)
 
-	* Fix: CSS is now loaded correct when embedded.
-	       Now base and embedded.css are loaded when embedded.
+ * Change: No fix amount of upload files, instead use dynamic count of files.
+   	   Used script from  Stickman -- http://www.the-stickman.com
 
-	* Fix: Typo in ecard_form.php
+ * Change: Added more debumessages in util.php
 
-	* Fix: Colorpicker in albumproperties didnt work when embedded and configured.
+ * Change: Set quality for thumbnails sticky to 50
 
-2005-07-22 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b64
+ * Fix: Typo in css/base
 
-	* Change: translations in ecard_form
+ * New: Added function gImage that generates a complete <img ...> html
 
-	* Change: topNavBar in view_photo is now a <div>, not a <table>
+ * Change/Fix: Internal param use for ImageMagick. (e.g. cropping for IM5 was broken)
 
-	* Change: simplification of checks for mircothumbs in view_photo
+ * Change: Updated bars002 skin.
 
-	* Fix: Borders around bottom Navigation when Mircothumbs off.
-	Found by (Flori)Dave
+2005-12-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b50
 
-2005-07-20 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b63
+ * New: Added help/ folder
 
-	* FIX: When an admin changed something in his/her userdata, he/she lost the admin status.
-	Thanks to Iain Lea
+ * New: Added help (questionmark) icon
 
-	* Fix: Translated JS messages in ecard_form.php
+ * Change: Added help for imagemap.php
 
-	* Fix: Added ecard files to translation list.
+ * Fix: use gTranslate, not gtranslate in setup/configdata
 
-2005-07-20 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b62
+2005-12-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b49
 
-	* Fix: classes/Album.php
-	  - missing $ before a var
-	  - $wmAlphaName is not used when watermarking is wanted to during upload.
+ * Fix: Bug #1299951, custom field options are not applied to nested albums
 
-	* Fix: removed/changed debug Code in lib/url.php
+2005-12-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b48
 
-	* Fix: size attribut in drawSelect2 was not correct handled.
+ * Fix: Bug #1281140, charset in emails.
 
-2005-07-19 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b61
+2005-12-09 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b47
 
-	* Fix: util.php
-	  - Previous change to _getStyleSheetLink failed when setup called from embedded at first time.
-	    Now uses getGalleryBaseUrl()
-	  - generating thumbnails of animated gifs with IM were broken due to wrong order of options.
-	 Found and fixed by Donald Webster.
-	  - where_i_am() now correctly returns "core" when GALLERY_OK is false,
-	    but where are at startpage with an error.
+ * Fix: Zlrofix JS. reverted to former JS and fixed it via PHP.
 
-	* Fix: PHP 4.4.0 fixes in:
-	  - classes/Album.php
-	  - classes/Mail/htmlMimeMail.php
-	  - classes/Mail/smtp.php
- 	Thanks to Andy Staudacher and Donald Webster
+2005-12-09 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b46
 
-	* Fix: $style was undefined in lib/lang.php
-	Again Donald ;)
+ * Fix: Display of ImageMaps was broken when Imagemaps in the middle where removed.
 
-	* Change: Watermarking
-	  - edit_watermark.php
-	  - watermark_album.php
-	  - layout/watermarkform.inc
-	    o indenting
-	    o added some phpdocs
-	    o added for gifs that watermarking on animated gifs is not supported.
-	    o HTML 4.01 validation
-	    o correct validation link
+ * Fix: DebugMessage in lib/lang prevent login
 
-	* Change: util.php
-	  - indenting on some functions
-	  - added some phpdocs
-	  - more use of debugMessage()
-	  - moved getGalleryBase() to lib/url.php and renamed to getGalleryBaseUrl()
-	  - moved getGalleryPaths() to lib/url.php and renamed getGalleryPaths() to setGalleryPaths()
-	  - gallery_validation_link() now uses always referer instead
-	    of given filename when not configured.
-	 - added Parameter $keepIndexes to function array_sort_by_fields:
-	   if set to true, then uasort instead of usort is used.
+2005-12-09 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b45
+ 
+ * Change: New icons for navigation, placed into images/icons
 
-	* Change: removed / from GALLERY_URL constant in index.php
+ * Change: Moved icon definition for navigation into includes/definitions/navIcons.php
 
-2005-07-15 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b60
+2005-12-08 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b44
 
-	* Fix: colorpicker was not working in very first setup
-	   - Tweaked makeGalleryURL to return valid URL in config on first setup
-	   - Tweaked makeGalleryURL to work without target
-	   - Tweaked getImagePath() to work with makeGalleryUrl. Also moved to lib/url.php
+ * Change: Added sort parameter to makeSectionTabs
 
-	* Change: Updated Manifest.
+ * "Fix": Translate "No Skin" in confwizard.
 
-	* Fix: Removed <> around From when sending via smtp.
+ * Change: Move checkImageMagick() into lib/setup.php
 
-2005-07-12  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b59
+ * Change: Beautified setup/check_imagemagick.php and added check for optional bins.
 
-	* Fix: Prevent non-integer data from being passed into get*Tag functions
+ * Change Beautified setup/check_versions.php
 
-2005-07-12  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b58
+ * Fix: More use of gTranslate in confwizard.
 
-	* Change: Create a new session after destroying the old on logout,
-	  and set $gallery->session->gRedirDone to true to prevent the 'you must be logged in'
-	  notice when logging out of a protected album.
+ * Change: Little css Change in config.css
 
-	* Change: Move some of the session creation logic into createGallerySession()
+2005-12-08 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b43
 
-2005-07-11 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b57
+ * Change: Params of ImCmd
 
-	* "Fix": Added function addSearchForm() that return the Form for entering the searchstring.
-		 Benifit is unified layout and reuseability.
-		 While doing this created functions langLeft() and langRight()
-		 which returns "left" or "right" according to direction.
+ * Change: ImCmd optimized for IM6
 
-2005-07-07 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b56
+ * New: Optimized thumbnail creation for IM6
 
-	* Fix: Subjectprefix for emails got lost in b47
+ * Change: removed unused function vd() (sorry joan ;))
 
-	* Change: search.php
-		  - Name of album / photo is now searched also
-		  - lots of indenting
-		  - layout unified like tools/
-		  - removed html_wrap/ header and footer and use comman gallery h/f
+ * Change: Added posibility for negative test with ! in testRequirement()
 
-2005-07-07 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b55
+ * Change: Adde case 'albumIsRoot' to testRequirement()
 
-	* Fix: if useIcons set to no, options in viewphoto dropdown had brackets []
-	  Thanks to Iain Lea again :)
+ * Fix: Splitted "delete album" in view_album into delete root album and delete subalbum
 
-2005-07-07 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b54
+ * Change: Only popup option are available in selectbox in view_album, ALL are available in view_photo
 
-	* Fix: Missing closing bracket in a gettext call
-	       when creating subject for a mail in classes/Album.php
-	  Thanks to Iain Lea.
+ * Change: renamed compress_image to compressImage and changed params
 
-2005-07-06 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b53
+ * Change: Optimized compressImage for IM6
 
-	* Fix: IP of Commenter was showed to everybody in comments overview.
-	       Now only admins or album owner can see it.
+ * Change: general code nicify.
 
-2005-07-06 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b52
+ * New: Added HQ Paramater for ImageMagick, if yes, then resized have a slightly higher quality.
 
-	* Fix: Some Titles in stats where switched.
+2005-12-05 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b42
 
-	* Change: enhanced detection for nextId
+ * Change: Sort albumProperties alphabetically.
 
-	* Change: Lots of indenting
+ * Change: Added size 50 for album titles for better readability.
 
-2005-07-05 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b51
+ * Change: Moved "voter class" at first position in album properties.
 
-	* Fix: When deleting on photolevel, jump to next (or previous if at the end) photo.
-	  Thanks to Iain Lea.
+ * Change: Some code nicify.
 
-	* Fix: Sorting in stats was switched.
-	  Also thanks to Iain Lea.
+ * Change: Updated bars002 skin.
 
-2005-07-05 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b50
+2005-12-04 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b41
 
-	* CHANGE: save_photos.php
-		  - Do the copy to local temp dir only for accepted formats (images, movies, archives)
-		  - Use fs_file_get_contents to get the content of the URL
-		  - Changed Regexp to catch files from an URL. (Thanks Valiant and Signe)
-		    o changed acceptableFormatRegexp() in util.php to fit with new regexp
+ * Fix: administer_startpage.php should open itself as a "real" popup when embedded.
 
-	* Change: phpdoc changes.
+ * Fix: Changed Windows lineendings to unix style in ecard_preview.php
 
-2005-07-04 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b49
+ * Change: Moved some functions from util.php into lib/album.php and lib/imageManipulation.php
 
-	* Fix: Language was not correct set in popups when embedded into mambo
-	  Thanks to Kai Tomalik.
+ * Fix: ecard parsing must be different for preview and final mail sending.
+   And again Kai did it :)
 
-2005-07-04 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b48
+ * Change: Some intending and code nicify.
 
-	* Change: Added 4th to array_sort_by_fields: caseSensitive
+2005-11-27 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b40
 
-	* Change: Display watermakr files alphabetical case insensitve sorted.
+ * Fix: Imagemaps were not working embedded.
+  Thanks again Kai.
 
-2005-07-04 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b47
+2005-11-27 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b39
 
-	* Change: 3rd Param of array_sort_by_fields is now 'asc' or 'desc' instead of 1/-1.
+ * Fix: Since change in b28 amount of views was no displayed correct.
+   Thanks to Toastmaster
 
-	* Change: itemOptions in view_photo.php are now a dropdown when no icons are wanted.
-		  Settings at file beginning can force dropdown with icons on.
+2005-11-27 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b38
 
-	* Fix: Found untranslated text (!) in classes/Album.php
-	  Thanks to Gekow.
+ * Fix: Add imagemap.php to $safe_to_include array
+   Thanks to Kai Tomalik
 
-	* New: Use phpDocumentor compatible documenting. Will be completed step by step.
+2005-11-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b37
 
-	* Change: When embeddd into Mambo $mosConfig_lang is now checked.
+ * Fix: Watermarking with ImageMagick was broken since b19.
 
-	* Change: updated Manifest
+2005-11-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b36
 
-	* Fix: reworked bulk user creation.
-	       - register globals
-	       - email problems
+ * Fix: Commenting was broken when comments_addType was 'inside'
+   Thanks to Toastmaster from forums.
 
-	* New: Added two more possible formats for bulk user creation.
+2005-11-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b35
 
-	* CHANGE: moved gallery_mail into a wrapper for MAIL class. Removed gallery_smtp
+ * Fix: Missing formvalues in view_photo.php when only one Service is selected.
+   Thanks to icerunner from forums.
 
-	* Fix: use of gallery_error instead of errorRow classes/gallery/UserDB.php
-	       when creating new user.
+2005-11-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b34
 
-2005-06-30 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b46
+ * Change: Got almost definitely rid of an old relict :)
 
-	* Fix: Fieldtype for Comment Overview in Setup.
+2005-11-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b33
 
-	* Change: moved /errors/ to includes/errors/
+ * Change: Little performance tweak for ImCmd(). Use static var for IM Version.
 
-	* Change: Added multiple headings in properties to reduce tabs.
+2005-11-23 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b32
 
-2005-06-28 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b45
+ * Change: Add possibility to delete album via "main" album options selectbox.
 
-	* Change: Better Text in edit_appearance.php
+2005-11-22 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b31 "Holly Release Part 2"
 
-	* Change: Tweaked placeholder replace.
+ * NEW: Added possibility to add imagemaps (areas) to a photo.
 
-	* Fix: Removed check for number of custom fields, as it has no default.
+ * Fix: Alignment breadcrumb
 
-	* Fix: Added lib/messages.php to list of translateable files.
+ * Fix: Missing echo in drawCommentAddForm().
 
-	* Fix: function for displaying errorRow was broken.
+ * Fix: Sorting content of album was broken.
+   Thanks to Brian Rademacher !
 
-2005-06-28 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b44
+ * Change: Layout of icons in view_photo.php
 
-	* Fix: removed some more <> inside a Mail header (see b39)
+ * Change: Added 'pure_text' field to albumItem options for sorting.
 
-	* Fix: Wrong description in css/screen.css
+ * Change: Prevent unnecessarey Javacript when getting albumItem options.
 
-2005-06-27 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b43
+2005-11-06 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b30
 
-	* Fix: Browserlanguange 'en' was not correct mapped to en_US.
+ * Change: Lots of translation related things.
+  - Change a lot _() to gTranslate()
+  - wording
+  - introdcued common translation file
+  - added download.php and includes/add_photos/captionOptions.inc.php to list of translated files 
 
-	* Fix: Custom Fields were broken in edit_appearance in b39
+ * Change: Little Layout change in delete_album.php and rearrange.php
+ 
+ * Change: Wording and checks in download.php
+ 
+2005-11-05 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b29
 
-	* Fix: Code for gifified. from b41.
+ * Change: List of owner is now sorted again alphabetically.
 
-2005-06-27 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.1-cvs-b42
+ * Change: Mark Pseudousers with * around in permission dialog.
 
-        * Fix: fixed the warning in breadcrumb.php when album disallows
-	  upwards navigation.
+ * Change: Wordings.
 
-2005-06-26 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b41
+ * Fix: xgettext keyword parameter to catch gTranslate.
 
-	* New: Added icons for item actions. gifified by famous Volksport.
+ * Fix: Missing , in setup/check_versions.php
 
-2005-06-26 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b40
+2005-11-04 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b28
 
-	* Fix: Added  lib/colorpicker.php and  rearrange.php to safeToInclude list in index.php
-	  Thanks to Kai Tomalik
+ * New: Added creation date to album fields
 
-	* Change: Added modified Patch #1085388.
-		  Now we use a multi-select for selecting which items found in url.upload should be uploaded.
-	  Thanks to Jonathan Dowland
+ * New: Added sort by last reset date and creation date to mainpage albums.
 
-	* Fix: rearrange.php opened wrong when embeded.
-	  Thanks to Kai Tomalik
+ * Fix: Album permissions were broken in b17
 
-	* Fix: Again moved Javascript in view_photo.php as it were broken when embedded.
+ * CHANGE: removed function pluralize_n2 !
 
-	* Change: Tweaked Javascript for (de)selecting all/inverting to work with multi-select.
+ * NEW: Added function gTranslate to lib/lang.php
 
-	* Fix: removed Testcode in setup/config_data.inc that broke config wizard.
+ * NEW: Added third translation file for common phrases used in config and core.
+        NOTE: only german is updated !
 
-2005-06-25 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b39
+ * CHANGE: --keyword=gTranslate:1,2 in po/create_po_template.sh
 
-	* Security FIX !!!: Added check for invalid input for values for sizes in edit_appearance.
-	  	   The values are used in exec() command.
+ * Change: Some wording.
 
-	* Change: outsourced albumProperties from edit_appearance into includes/definitions/albumProperties
+ * Fix: breadcrumb in captionator
 
-	* Fix: removed <> around some header fields when sending mails.
-	       This caused Emailadresses to become <Someone <someone@example.com>>
-	       Thanks to JohnH from the forums.
+ * Fix: Better handling in save_photos.php for unreadable dirs and files.
 
-	* Fix: Javascript before doctype in view_photo.php
-	       Thanks to Gaille.
+ * Change: moved function createNewAlbum() from util.php to lib/album.php
 
-	* Change: Some CSS for tabs
+ * Change+Fix: tweaked array_sort_by_fields() to handle album fields (sorting by subarray)
 
-	* Change: lib/albumItem.php:
-		  - removed unused ifs
-		  - Text changes. Removed %s (label) at a couple commands.
-		  - Added icon for watermarks.
+ * Fix: Element counter on mainpage was broken.
 
-	* Change: Tweaked infoLine() function. Now also acceptes array of messages.
+2005-10-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b27
 
-	* New: Added function sanitycheck in lib/valchecks.php
+ * Fix: naming in b26 was wrong
 
-	* Fix: Added more missing files to translation list for core.
+ * Fix: added administer_startpage.php to safe to include list.
 
-	* Changes: Change from "off" to 0 for no image size limitations
+   Thanks to dmolavi for catching this bugs.
 
-	* Fix: Display of voting values.
+2005-10-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b26
 
+ * Change: Changed button for rebuild highlights to "Adminster startpage".
 
-2005-06-23 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b38
+ * New: Added popup "Adminster startpage".
 
-	* Fix: Bug #1217095, removed double stripslashes that breakes e.g. chinese.
+ * New: Added possibility to resort albmorder on startpage.
 
-	* Fix: Added missing files to translation list for core.
+2005-10-26 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b25
 
-2005-06-23  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b37
+ * Fix: Some php4.4.0 fixes in Richards Heyes' htmlMimeMail.php
 
-	* Change: getRequestVar to stripslashes recursively into arrays
+ * Change: Added Alias before receptient adress in ecards -> Jens <mail@example.com>
 
-2005-06-21 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b36
+2005-10-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b24
 
-	* Change: Possibility to set columnCount to -1 for ALL elements in one row.
-		  (Fixes unnice lang selector with flags)
+ * Change: Standardified a lot texts.
 
-	* Fix: Comments display was borked when not logged with admin/owner permission.
+2005-10-22 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b23
 
-	* Fix: added <br clear="all"> under language selector for proper table rendering in FF
+ * Change: Some more little changes in random-block.
 
-2005-06-21 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b35
+ * Fix: added quotes around filename in function downloadFile()
 
-	* New: Added slightly modified Patch #875893 from Alan Harder.
-	       This adds a popup in which you can nicely reorder your item via clicking.
+ * Change: Some more space saving in config wizard.
 
-2005-06-21 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b34
+ * Change: Moved function getCheckStatus() into lib/setup.php
 
-	* Change: enhanced fitToWindow for panorama photos.
-		  Found by 'bolet' from the forums.
+ * CHANGE: Use of chmod in platform functions instead of umask as suggested in php docs.
 
-2005-06-20 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b33
+2005-10-20 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b22
 
-	* Fix: Override in getIconText
+ * Change: renamed readCache() and writeCache() in stats.php and block-random.php 
+	    to more unique names, to avoid conflicts.
 
-	* Change: css class in layout/navmicro.inc
+ * Change: Change html output of block-random.php. Uses now <div> with classes instead of <center>.
 
-	* Change: css for iconLinks in view_photo.php and removed sorting for actions.
+ * Fix: Do not send headers in initLanguage() if headers were already sent.
 
-	* Change: replaced "delete comment" under each comment with a little icon to save space.
-		  And css change.
+ * Change: Display columns in view_photo_properties left/right aligned according to language direction.
 
-2005-06-19 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b32
+2005-10-20 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b21
 
-	* Change: moved some messages functions into lib/messages.php
-		  created new message functions for:
-		  - infolines
-		  - debugmessages
+ * Fix: New Images were not committed in b20.
 
-	* Change: Added infoline and tweaked Emailtext in create_user.php
+ * Fix: Use correct gif, instead of non existing png in check.inc and js/toogle.js
 
-	* Change: Added infoline in modify_user.php
+2005-10-18 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b20
 
-	* Change: Modified config var "debug" yes/no to "debuglevel" 0 means no debug.
-		  Tweaked isDebugging to recognize the level.
-		  Now you can give a Parameter to ask if debug in in given level.
+ * Change: Pimp my configwizard step 1.
+	   - New Layout
+	   - Changed wording
+	   - Combined some test.
 
-	* Change: stats-wizard.php, var 'sgr' renamed to 'showGrid'
+ * New: function galleryImage() in lib/content.php
 
-	* CHANGE: stats-php
-		  - lots of indenting
-		  - The complete statstable is now generated via class galleryTable !!
-		    o Thumbs are now just as they are, not anymore like in the albums.
-		    o show Commentes code tweaked to work with galleryTable
-		  - readded Grid mode, old code removed as the rendering is now done by galleryTable
-		  - replace debug code with much smarter debugMessage()
-		  - remove all 7 usort functions, replaced by one new
-		    array_sort_by_fields() function in util.php
+ * Change: Added more detaied description for thumbs ratio.
 
-		  - renamed var 'rev' to 'reverse'
+ * New: Added js/toggle.js
 
-	* Change: util.php
-		  - lots of indenting
-		  - tweaked getIconText(),
-		    o new parameter to override the iconMode
-		    o new parameter to use the [] around the Text when no icon is used.
-		  - Tweaked makeIconMenu(), added parameter to force a linebreak after the half of elements
+2005-10-17 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b19
 
-	* Change: Added lib/AlbumItem.php
-		  - New function getItemActions(),
-		    returns an array with all possible albumItem actions
-		  - New function showComments, return HTML with all comments for an item.
+ * Change: Different param order for ImageMagick.
 
-	* Change: view_album.php
-		  - Use of getItemActions() under each thumb.
-		  - Show Navigator only if there is something to navigate.
+ * Change: removed function removeTags(), which was just a wrapper for strip_tags()
 
-        * Change: view_photo.php
-                  - Use of getItemActions() under each thumb.
-                  - Show alle item actions as links (with or with out icons)
+ * NEW: Added ratio for thumbnails (per album) and highlight (startpage).
+        0   - Ratio as the original
+	1/1 - Square
 
-	* Change: Tweaked class galleryTable
-		  - setAttr
-		  - setColumnCount
-		  - setHeaders
-		  - setCaption
-		  - adapted render()
+       -> Config version bump
+ 
+ * New: Added "rebuild highlights" for admins. It rebuild all highlights on startpage.
 
-	* Change: Added infoline for debug info in html_wrap/wrapper.footer.default
+ * New: Added "Paranoia" debuglevel, not useful for normal debug ;)
 
-2005-06-13 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b31
+ * Change: reworked function getDimensions(), removed second parameter.
 
-	* Fix: When copying a photo to an album where "add to beginning" is enabled,
-	       the additional Data was still added to last item.
-	  Thanks to Johnstar.
+ * Change: create lib/album.php and lib/imageManipulation.php, moved functions from util.php.
 
-2005-06-09 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b30
+ * New: method getHighlightRatio() in classes/Album.php
 
-	* Fix: Navigator change was in albums.php was wrong.
+ * Change: modified method makeThumbnail() in classes/AlbumItem.php to hence thumbnail ratio.
 
-2005-06-09 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b29
+ * New: function cropImageToRatio() in lib/imageManipulation.php
 
-	* Change: Only show Navigator if there is something to navigate in:
-		- albums.php
+ * Change: Some css changes in config to save space.
 
-	* Change: Add Errormessage for more info to user in copy_photo.php
+ * Fix: Frames were broken due to wrond base url.
 
-	* Change: Tweaked confusing mailmessage in multi_create_user.php
+2005-10-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b18
 
-	* Fix: Show "Apply to nested albums" only if we are resizing all elements of in album in resize_photo.php
+ * Change: Added subgroups in configwizard.
 
-	* Fix: Highlights of albums where the higlight comes from a subalbum
-	       with non ascii chars where broken because the URL was not urlencoded.
+2005-10-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b17 "Holly Release Part 1"
 
-	* Fix: Typo in layout/navmicro.inc (found by Gaile)
+ * NEW: Support for albumdownload as zipfile.
+   - Added new permission for zipdownload per album.
+   - Tweaked albums.php, when user is allowed to download and zip is installed, 
+     a little zipicon appears.
+   - Same for subalbums in view_album.php
+   - Added download.php. This is called when user presses icon.
+     User can choose between full, or resized download.
+   - Added Path to 'zip' in config wizard.
 
-2005-05-27  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b28
+   - new method getImageName() in classes/AlbumItem.php and classes/Image.php
+   - new method canDownloadAlbum() classes/User.php
+   - splitted canHandleArchive() into canDecompressArchive() and canCreateArchive()
+   - new function createZip()
+   - new function getMimeType()
+   - new internal function createTempAlbum()
+   - new function rmdirRecursive()
+   - new function downloadFile()
+   - new function arrayflaten()
+   - new method getAbsolutePhotoPath() in classes/Album.php
+   - new method numItems() in classes/Album.php
+   - new method getAlbumItemNames in classes/Album.php
+   - new method getAlbumSize() in classes/Album.php
+   - new function formatted_filesize()
 
-	* Fix: edit_captions was not displaying error messages due to variable
-	  misnaming.
+2005-10-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b16
 
-2005-05-24 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b27
+ * Fix: manage_users.php were broken in in b12
 
-	* Fix: use_exif was not broken in album properties.
-	  Found by Johan Nenni
+ * New: Its now possible to have an sorting by photo/Album, after normal sorting.
 
-	* Change: removed class tab-text, the font color is now controlled by the tab itself.
+ * Change: Numbers of pages in navigator are now centered.
 
-2005-05-23 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b26
 
-	* Fix: register globals in setup/check_versions.php
+2005-10-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b15
 
-2005-05-23 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b25
+ * CHANGE: outsorced a lot functions that create output from util.php into lib/content.php
 
-	* NEW: Added Donald Websters Microthumb Code. => album version and config bump.
+ * Change: Images in ecard are now embedded.
+	   Benefit is more privacy and image dirs can be protected via .htaccess auth.
 
-	* Change: removed ml_pulldown.inc,
-		  instead created function languageSelector() in lang.php
+ * Change: Added default name 'g1_form' to makeFormIntro()
 
-	* Change: Unified layout for all admin pages.
+ * Change: Lots of indenting.
 
-	* Change: Enhanced classes/HTML/table.php
 
-2005-05-20 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.1-cvs-b24
+2005-10-11 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b14
 
-	* Change: Applets version 1.4.2-b20.
+ * New: Better Support for Joomla!
 
-2005-05-10 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b23
 
-	* Change: Change input for count of files/meta files a input box instead of comboxbox
+2005-10-05 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b13
 
-	* New: added file:lib/valchecks.php with function isValidInteger. Its included via util.php.
+ * Fix: phpBB2 people changed code a little. So patch didnt work.
+	Made Docu updates also. G1.5.2 works now with phpBB2 from 2.0.6 - 2.0.17
 
-2005-05-09  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b22
 
-	* Change:  Config wiz typo
+2005-10-05 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b12
 
-2005-05-09 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b21
+ * "Fix": Adjust layout of captionator.
 
-	* Change: Merged Poll options and Custom fields into properties
+ * Fix: Errormessage when nothing was entered in login.php never occured due to register globals.
 
-	* New: Made folder include/definitions, which is supposed to contain static definition.
-	       Currently added: (print) Services
+ * Change: use of function to draw userlist in manage_users.php
 
-	* Change: Minor GUI changes.
+ * Fix: Background of higlihted tab in config was broken.
 
-	* New: Added a classes/HTML folder, which is supposed to contain classes and method for html handling.
-	       Currently added is only a very rudimental table class :)
 
-2005-05-08 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b20
+2005-10-04 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b11
 
-	* Fix: Custom fields were not set recursively (register globals issue)
+ * Change: Made "post" the default method for forms.
 
-	* Fix: remove Debug Code.
+ * Change: A lot indentings and use of default forms.
 
-2005-05-06 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b19
 
-	* Fix: RFE #1192462  (catch invalid manuell input of $set_AlbumListPage and $page via URL)
+2005-10-04 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b10
 
-	* Change: minor tweak of getAlbum
+ * Fix: Urls in at least phpNuke 7.8 where generated wrong.
 
-2005-05-02 Stupid Tkotz <jens@peino.de>  1.5.1-cvs-b18
+ * Fix: When "returnTo-Link" is off, you should still can go back to thumbnail view.
 
-	* Fix: More typos. Sorry, next time i pay more attention.
 
-2005-05-02 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b17
+2005-10-03 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b9
 
-	* Fix: typo in classes/Album.php introduced in b16
+ * Change: NOW use favicon.ico from gmc. :)
 
-2005-05-02 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b16
 
-	* Change: Added 'nobody' as default permission set.
- 	Thanks to Andrew A. Chen for this idea.
+2005-09-29 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b8
 
-2005-04-28 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b15
+ * Change: Rewrite of permission dialog code. MUCH simpler now.
 
-	Fix: More spelling and validation fixes by Gaile in base.css
+ * Change: Removed a lot set*** permission methods as they were redundant.
 
-	Fix: Initialtab was not correct set in edit_apperance
+ * Change: lots of indenting in classes/Album*.php
 
-	Fix: When editing properties via startpage the properties page broke after 2 apply.
+ * Fix: forgot one user_name_string() in classes/Album.php
 
-2005-04-27 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.1-cvs-b14
 
-	* Fix: htmlMimeMail.php was checked in with the wrong line endings
-	  which was causing the CVS build to fail on Windows.
+2005-09-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b7
 
-2005-04-25 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b13
+ * "Fix": breadcrumb in view_album was also showed if there is no content.
 
-	* Fix: typos
+ * Fix: Bug #1299959. Title text in alt and title tag of image was not escaped.
 
-	* Fix: Missing quoting in colorpicker.php
+ * Fix: Some HTML 4.01.
 
-2005-04-25 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b12
 
-	* Fix: css and html fixes. (found by Gaile)
+2005-09-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b6
 
-2005-04-22 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b11
+ * Fix: Typo in function emailComments() caused link to album to be wrong.
 
-	* New: Added nice colorpicker for easy color setting.
-	  Note: Coded and pictures were taken from the Horde Project (http://www.horde.org)
 
-	* Fix: Use of depricated var in html/userData.inc
+2005-09-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b5
 
-	* Change: Added hidden fields for sectionTabs that contains the current tab.
-		  This enables us to highlight it, when reloading the page.
+  * Fix: Bug #1235007
+         html_wrap/stats.header.default does not contain a block to optionally
+         include a stats.header.tpl file, unlike every other *.header.default file.
+         
 
-	* Change: Little Layout change in layout/commentdraw.inc
+2005-09-25 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b4
 
-	* Change: former solution for Jmullan, broke HTML validality.
-		  New solution: tweaked getPhotoTag() to accept attrs.
+ * Change: Removed function user_name_string from util.php.
+           This is now all in method printableName() of classes/User.php
+   
+ * Fix: Bug #1199064. Tweaked method printableName(), 
+        so that not the username is returned if no fullname is given.
+        
+ * Change: Some indenting.
 
-2005-04-21 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b10
 
-	* Fix: eCard setting from setup was not used for new albums (thanks Judith)
+2005-09-24 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b3
 
-	* Change: Added tabindex order in eCard Form and focus on first field.
-
-	* Change: Admins can now created directly as new user.
-
-	* New: New flag for user to allow or disallow them to change their password.
-	  Note: User version bump. "Old" user automatically get this to true.
-
-	* Change: Stay in modify user view after having modified a user.
-
-	* New: added id="galleryImage" to img tags in view_photo (for jmullan)
-
-	* Fix: View Comments for not loggedIn User where displayed even if setting in setup was off,
-	       but everybody is allowed to see comments.
-
-	* "Fix": removed select:focus css (except in Jenskin) as FF on Linux is buggy on this.
-
-2005-04-20 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b9
-
-	* Fix: Create user were b0rked since b2.
-
-2005-04-20 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b8
-
-	* Fix: Wrong use of check for itemOwner caused error
-	       when user wants to see all comments in some circumstances.
-
-2005-04-19 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b7
-
-	* Fix: Wrong require in setup let Gallery config break on debian (thanks to tomukas)
-
-	* Fix: critical typo in classes/Album.php
-
-2005-04-19 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b6
-
-	* Change: Use Name and Email of logged in users as default for Sender in ecards.
-
-	* Change: Added Subject line for ecards.
-
-	* Fix: ecard enable/disable setting was not set for nested albums.
-
-2005-04-18 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b5
-
-	* Change: Added new parameter to makeIconMenu for alignment
-
-	* Change: Use IconMenu in view_photo for adminText
-
-	* Change: Make eCards an album option. (needs album version bump)
-
-	* Fix: Added ecard_form.php to allowed include list.
-
-	* Change: Little layout, text and css and html validation for ecard_form.php
-
-	* Fix: ecards opened popup with environment when Gallery is embedded.
-
-2005-04-18 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b4
-
-	* Fix: removed little debug code.
-
-2005-04-17 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b3
-
-	* Fix: invalid css in standalone css and some skins. (Thanks to pixelpoet)
-
-	* Change: Added cellpadding="0" cellspacing="0" to starting tables in html_wrap/*.header.default
-
-2005-04-16 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b2
-
-	* Fix: HTML validation in view_photo.php, login.php
-
-	* Change: Added parameter to drawSelect for pretty printing.
-
-	* Change: Album properties are displayed in tabs.
-
-	* CHANGE: data structure of print services.
-		  reconfig forced and album version bumped.
-
-	  Note: code not finished ! Previous Values from config for print services not used.
-
-	* Change: eCard template changes
-
-	* Change: Modified eCard feature...
-
-	* Change: Show Albumnames in pulldown for reorder album.
-
-	* New: Added eCard Feature. (not completed yet.)
-
-	* New: Added more placeholders in Welcome Msg. Used Patch #847436 as inspiration.
-
-	* Change: Inform user when display of exifdate is enabled, but nothing found.
-	  (to avoid confusion)
-
-	* Change: Added Patch #842580 from Kennichi Uehara 'email transfer encoding to base64'
-
-2005-04-14  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b1
-
-	* Fix: Address PHP5 behavior change to unsetting string values
-
-2005-04-13  Chris Kelly <ckdake@users.sf.net>  1.5
-
-	* 1.5 Release
-
-2005-04-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b10
-
-	* Change: New breadcrumb needed updating in slideshow and view_captions
-
-2005-04-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b9
-
-	* Change: Remove EZPrints as an option for print providers at their
-	  request.  Migrate all EZPrints users to Shutterfly.
-
-	* Fix: Bypass annoying PHP5 bug for isset($var->unset['unset'])
-
-	* Fix: Modify fs_file_get_contents() to simulate file_get_contents
-	  if it doesn't exist.  GR was using file_get_contents without verifying
-	  support first.
-
-2005-04-13  Jens A. Tkotz <jens@peino.de>  1.5-RC4-CVS-b8
-
-	* Fix: Album Navigation ignored returnto=no in the middle.
-	       Result was that anytime the full line was showed.
-
-2005-04-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b7
-
-	* Fix: getFile() failed to call fs_import_filename on Windows when
-	  using file_get_contents - this caused problems with the old UserDB
-	  format.
-
-2005-04-09  Jens A. Tkotz <jens@peino.de>  1.5-RC4-CVS-b6
-
-	* Fix: gallery_mail added unneeded (and invalid) second to: header.
-
-2005-04-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b5
-
-	* Fix: Setup was using an incorrect string value for the thumbnails RSS option
-
-	* Fix: Captions were not being properly included in RSS when thumbs-with-captions
-	  was selected in the config wizard.
-
-2005-04-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b4
-
-	* Fix: When displaying a single column in view_album, don't try to
-	  pad the row height to match other columns
-
-2005-04-07  Jens A. Tkotz <jens@peino.de>  1.5-RC4-CVS-b3
-
-	* Fix: $iconelement was not correct initialized.
-
-2005-04-05  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b2
-
-	* Fix: Incorrect variable being referenced when setting a movie as
-	  highlight resulted in a missing highlight thumbnail.
-
-2005-04-05  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC4-cvs-b1
-
-	* Fix: lib/Form.php - remove the newlines from selectOptions.
-	  The High slideshow uses selectOptions in JS with document.write
-	  which is incapable of handling newlines in its data.
-
-2005-04-04  Chris Kelly <ckdake@users.sf.net> 1.5-RC3
-
-	* 1.5-RC3 Release
-
-2005-04-01  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b23
-
-	* "Fix": highest rating code in stats was broken -> commented out
-
-2005-03-30  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b22
-
-	* Fix: Logged in users now no longer use the stats cache - this will
-	  prevent issues when using stats filters (which only logged-in users can see)
-	  and should alleviate a possible caching-permissions/exposure bug.
-
-	* Change: Removed some dead, commented code.
-
-2005-03-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b21
-
-	* Fix: check_mail.php now uses gallery_mail() instead of calling mail()
-	  directly.
-
-2005-03-28  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b20
-
-	* Change: Wording on view_album.
-		"admin options" -> "album actions"
-		"edit ..." -> "... actions"
-
-2005-03-27  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b19
-
-	* Fix: madmod1 skin had unquoted keys.
-
-2005-03-27  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b18
-
-	* Fix: admin-page.php, stats-wizard.php, tools/despam-comments.php and
-	       tools/validate_albums.php gave errors when embedded.
-
-	* Fix: Show manage user link in adminpage only when not embedded.
-
-	* Fix: Added tools/validate_albums.php to securelsit to allow running embedded.
-
-	* Fix: Typo in tools/despam-comments.php.
-
-	* CHange: Moved some css from adminpage and stats-wizard into base.css
-
-2005-03-24  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b17
-
-	* Change: Upgrade GR Applets to 1.4.2-b12
-
-2005-03-24  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b16
-
-	* Fix: multi_create_user wasn't globalized
-
-	* Fix: Variable typo in manager_users
-
-2005-03-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b15
-
-	* Change: Don't update the album's mod time when users request mail
-	  notifications.
-
-2005-03-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b14
-
-	* Change: An attempt to bypass the Zend problem of reversing breadcrumbs
-
-	* Fix: IM5 strip logic was backwards, too?  *confuzzled*
-
-2005-03-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b13
-
-	* Fix: stats wouldn't filter by day, month and year.  Only one at a time.
-
-2005-03-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b12
-
-	* Fix: check_mail.php wasn't globalized
-
-	* Change: rss.php - use <pb:width>... instead of attributes
-
-	* Fix: Custom regenerate_session_id didn't work on Win32
-
-2005-03-18  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b11
-
-	* Fix: Forgot a $ in b10 fix for the b4 fix.
-
-2005-03-18  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b10
-
-	* Fix: The headers in the b4 fix was not concatenated.
-
-2005-03-17  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b9
-
-	* Fix: b8 was senseless. Also removed a second senseless check.
-
-	* Change: Moved backup_albums.php to tools/ folder.
-
-2005-03-17  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b8
-
-	* Fix: Adminpage can be there for non admins, but for user you can modify users.
-
-2005-03-16  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b7
-
-	* Change: A Sentence in album_permissions.php was not translateable.
-
-2005-03-16  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b6
-
-	* Fix: Dont show warning message regarding permissions after having logged In.
-
-2005-03-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b5
-
-	* Fix:  The logic for determining whether to strip EXIF in IM6 is
-	  the backwards of IM5.  As so elequently put by fryfrog:
-	  "<fryfrog> so in 5.x they always dumped exif but had an option
-	  to preserve and in 6.x they preserve with an option to dump?"
-
-2005-03-15  Jens A. Tkotz <jens@peino.de>  1.5-RC3-cvs-b4
-
-	* Fix: Added Minimum Headers according to RFC 822 in gallery mail.
-
-2005-03-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b3
-
-	* Fix: Unquoted array refs, global scope issues, html comments
-	  surrounding script tags.
-
-2005-03-12  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b2
-
-	* Fix: Attempt to address phpBB unset()ing the op/name/modload vars
-	  before we use them by not setting them until after we include
-	  phpBB's files.
-
-2005-03-12  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC3-cvs-b1
-
-	* Fix: Unset array ref in do_command
-
-	* Fix: Correct view album div sizes in situations where the thumbnail
-	  size is zero or blank.
-
-	* Fix: session_test wasn't referencing 'destroy' from $_REQUEST
-
-	* Fix: Update phpBB instructions to include new CSS file
-
-2005-03-10  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b32
-
-	* Fix: Removed linebreak in translateable text.
-
-	* Fix: Test for sending mail to new users failed, was sending anyway.
-
-2005-03-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b31
-
-	* Fix: Only try to watermark if the item isn't an album or a movie
-
-2005-03-09  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b30
-
-	* Updated Copyrights to 2005.
-
-2005-03-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b29
-
-	* Change: PhotoWorks URL needed updating
-
-2005-03-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b28
-
-	* Fix: Make sure that the 'Hey! Upload some photos!' link knows it's a popup
-
-2005-03-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b27
-
-	* Change: Add 'validate_albums.php' to assist with migration to
-	  Gallery 2.0
-
-	* Change: Add validate albums to the admin page
-
-2005-03-03  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b26
-
-	* Fix: Show "See full poll results" link only to admins and owners
-	       otherwise normal users get an errormessage.
-
-2005-03-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b25
-
-	* Fix: Ensure that mail is sent to 'other' users when adding a new
-	  subalbum
-
-2005-03-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b24
-
-	* Fix: Revert jpk's change to lib/url.php - we have to use
-	  GALLERY_MODULENAME instead of hardcoding 'com_gallery' because
-	  it's possible to have more than one Gallery installed.
-
-2005-03-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b23
-
-	* Change: Change .pcaption to inherit font-size when embedded.
-	  It was showing up too small when embedded, for some reason.
-
-2005-03-02  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b22
-
-	* Fix: Adjust skins:
-	  - lilac
-	  - paint
-	  - slick
-
-	Note: Now all standard skins shipped with Gallery are converted.
-
-	* Text adjustments.
-
-	* Added "return to admin-page" on tool pages.
-
-2005-03-01  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b21
-
-	* Change: stats.php text change
-
-2005-03-01  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b20
-
-	* Fix: Disable 'grid mode' in stat.php - there's no way to address the display
-	  issues that it has during RC.
-
-	* Change: Update 'embedding' text to mention the 'Ignore register_globals' option
-
-2005-03-01  Pierre-Luc Paour  <paour@users.sourceforge.net> 1.5-RC2-cvs-b19
-
-	* Fix: Mambo support for the upload applet needed a new cookie to be passed.
-
-2005-03-01  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b18
-
-	* Fix: Adjust skins:
-	  - greenpurple
-	  - hotred
-	  - white1
-
-2005-02-26  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b17
-
-	* Change: Fix the 'No images uploaded' condition
-
-	* Fix: Destroying the session at logout also prevented album redirection because
-	  $gallery->session->album was empty
-
-	* Fix: User input checking
-
-2005-02-24  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b16
-
-	* Change: css enhancement for better readability of links in attention messages.
-
-	* Change: Make "Hey! Add some photos." a link to add photos.
-
-	* Fix: Added width for adminbox in base.css.
-	  So "return to gallery" is correct aligned in tools/despam and tools/find-orphanes.
-
-	* Fix: Show public stats link only when there are accessable photos.
-
-	* Fix: Only check Files for EXIF Data on uploading that may have it.
-
-	* Change: Added more Debug messages in upload.
-
-	* Change: The blue bar is now only in standalone, not in base.css for all.
-
-2005-02-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b15
-
-	* Fix: Switch use_exif back to what it was supposed to be.
-	  The change in behavior was based on a user comment making me
-	  misunderstand what the old behavior was.
-
-2005-02-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b14
-
-	* Change: stats link descriptions
-
-	* Fix: phpBB modules.php was relying on globals that didn't exist
-
-2005-02-21  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b13
-
-	* Change: Texts in setup/config_data.inc
-
-	* Change: css consolidation in setup/config_data.inc
-
-2005-02-21  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b12
-
-	* Fix: css class in EXIF Table
-
-	* Fix: adjust skins:
-	  - bpurple
-	  - bred
-
-2005-02-18  Jens A. Tkotz <jens@peino.de>  1.5-RC2-cvs-b11
-
-	* Fix: css classes:
-	  - captionator.php
-	  - view_album.php
-
-	* Fix: adjust skins:
-	  - bblue
-	  - bgreen2
-	  - bluemod
-
-	* Fix: Changed [] in stats links again to work with rtl languages
-	  (error appeared in FF)
-
-2005-02-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b10
-
-	* Change: Add extra session security by preventing session fixation
-	  attacks.  Session IDs are changed on login and logout.
-
-2005-02-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b9
-
-	* Fix: stats.php was outputting an HTML comment before loading the embedded
-	  header.
-
-	* Fix: getIMVersion() was returning a full string instead of '5' or '6'
-
-2005-02-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b8
-
-	* Change: Add a new config option for bypassing our register_globals-disabled
-	  emulation.  I do this unwillingly, and it is not a supported
-	  configuration due to the potential for security issues and other problems
-	  bug some people require the option.
-
-2005-02-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b7
-
-	* Fix: Move SMTP execution into its own function to be
-	  reused in emailLogMessage()
-
-	* Fix: Remove admin page link for non-admins
-
-2005-02-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b6
-
-	* Fix: Print providers didn't display correctly if only one was selected
-
-2005-02-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b5
-
-	* Fix: Correct the directory name for CPGNuke includes
-
-2005-02-15  John Kirkland <jpk@bl.org>  1.5-RC2-cvs-b4
-
-	* Fix: the mambo breadcrumb query in init.php was not quite
-          specific enough.
-        * Fix: the mambo component name, com_gallery, was being set
-          by a variable, but this doesn't work in all cases.
-
-2005-02-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b3
-
-	* Change: Move PhotoWorks/PhotoAccess down in the list, to preemptively
-	  resolve some issues.
-
-	* Fix: Make some changes to the logic surrounding when EXIF info is displayed
-	  with images.  (If use_exif is set in the album, display it under the photo.
-	  If use_exif is disabled, but exiftags or jhead is present, display the
-	  "photo properties" link instead)
-
-2005-02-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b2
-
-	* Fix: ML_mode 0 caused error when gettext wasn't installed
-	  due to duplicate function declaration
-
-2005-02-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-RC2-cvs-b1
-
-	* Fix: backup_albums.php was not globalized
-
-	* Text: Add the [] around the stats links for readability
-
-2005-02-14  Chris Kelly <ckdake@users.sf.net> 1.5-RC1
-
-	* v1.5 Release Candidate 1
-
-2005-02-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b346
-
-	* Change: Remove link/image border from new menu icons
-
-2005-02-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b345
-
-	* Typo
-
-2005-02-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b344
-
-	* Fix 1079796: Rebuild thumbnails reloads wrong page
-
-2005-02-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b343
-
-	* Fix 1082661: New user email not being sent
-
-2005-02-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b342
-
-        * Fix: Incorrectly aligned parens render the do_command XSS fix
-          useless
-
-2005-02-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b341
-
-    * Text: Typo in config wizard
-
-2005-02-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b340
-
-    * Fix 1103572: Exclude ppmquant from using '--quiet', which
-      it doesn't like.
-
-    * Fix 1099659: Add exiftags support for autorotate
-
-2005-02-10  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b339
-
-    * Fix: css in a form in albums.php
-
-    * Fix: no class "admin" for admibox in view_album.php
-
-    * Fix: docs link in config was broken
-
-    * Fix: Adjust skins:
-	- butterfly_green
-	- suit
-	- yellow
-
-2005-02-03  Bharat Mediratta  <bharat@menalto.com> 1.5-cvs-b338
-
-    * Added multisite support for caching albums.php.  You can now create a
-      file called cache-domain.com.html and it will use that instead of
-      cache.html.
-
-2005-02-01  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b337
-
-    * Change: removed unnecessary css definition in add_photos.php
-
-    * Fix: css classed in watermark_album.php
-
-    * Change: Removed unnecessary use of css classes and code indents in:
-	- includes/add_photos/add_admin.inc
-	- includes/add_photos/add_form.inc
-	- includes/add_photos/add_other.inc
-
-    * Fix: madmod1 skin was broken
-
-    * Fix: Adjust madmod1 skin
-
-    * Change: Applied RFE/Patch: #1032662, show navigation links to album in search result.
-
-    * Fix: Do not use htmlentities in alt text in albums.php and in general (classes/Image.php)
-
-    * Change: Adjust function to detect only skins that use new naming.
-
-    * Change: Added ltr/rtl checks for iconmenu and adminbox
-
-    * Change: Modidified display of print/mobile services and indenting in view_photo
-
-    * Fix: removed [] around public stats links due to problems in rtl languages
-
-2005-01-31  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b336
-
-    * Fix: Prevent hidden image from being automatically selected as
-      a new highlight when the existing highlight is deleted
-
-2005-01-31  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b335
-
-    * Fix: Prevent error if the user requesting the new password link
-      doesn't exist anymore.
-
-    * Change: Received the mPUSH associate account creation link from
-      Jon, and was finally able to link it up in the config wizard
-
-2005-01-31  Christian Mohn <h0bbel@p0ggel.org> 1.5-cvs-b334
-
-    *  Fix: Typo in setup/config_data.inc (Thanks bytenik)
-
-2005-01-30  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b333
-
-    * Fix: Ensure that if $album->photos is not empty, we save it to
-      photos.dat - don't simply rely on transient->photosloaded being
-      true, because if the photos somehow got stored in album.dat, this
-      would fail.
-
-    * Fix: Couple more possible unset-varaible issues
-
-2005-01-30  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b332
-
-    * Fix: Several unset variable issues
-
-2005-01-26  Don Willingham <donwillingham@users.sf.net>  1.5-cvs-b331
-
-    * Fix: Bug#1108825: [G1] pnmcomp renamed to pamcomp
-	pnmcomp configured like pnmtojpeg
-    * Fix: pnmcomp new checked in check_netpbm.php(diagnostic)
-    * Fix: pnmtojpeg properly checked in confirm.inc
-
-2005-01-26  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b330
-
-    * Fix: bubbles skin
-
-    * Fix: broken html in stats.
-
-    * Change: use of '"' instead of "\"" and some layouts in stats.php
-
-2005-01-25  Christian Mohn <h0bbel@p0ggel.org> 1.5-cvs-b329
-
-    * Fix: Bad grammar in setup/config_data.inc (Fotokasten)
-
-2005-01-25  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b328
-
-    * Change: Way of css.
-              css/base.css is loaded EVERYTIME.
-	      css/screen.css is loaded in standalone, no skin.
-	      css/embeddeded.css is loaded when embedded.
-	      <skin>/css/screen.css is loaed when standalone with skin.
-
-      - css/embedded_style.css.default is now EMPTY per default
-      - removed css/standalone_style.css.default.
-      - modified getStyleSheetLink(), _getStyleSheetLink().
-      - outsourced/created getGalleryBase().
-      - adjust jenskin.
-
-      TODO: adjust other skins.
-
-    * Change: Iconified Slideshow(s)
-
-    * Change: refactored available_skins(), output is now sorted.
-
-    * Fix: set margin:0px for all forms via css, because IE render them bad.
-
-    * Fix: Translations in slideshow where to much english.
-
-
-2005-01-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b327
-
-    * Change: PhotoAccess changed its name to PhotoWorks - all of the backend
-      variables are remaining the same because I don't want to force an album
-      upgrade simply to rename a variable.  Only the public-facing text is being
-      changed. (Select boxes, config wizard text, etc.)
-
-2005-01-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b326
-
-    * Fix: die() requires parens, and when comparing the URL, use && not ||
-
-2005-01-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b325
-
-    * Fix: Address several instances of improperly sanitized user-data
-
-    * Change: Remove adv_search.php, since it doesn't work and isn't being maintained
-
-2005-01-19  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b324
-
-	* Fix: Per Album rss was broken.
-	  Caught by: GeekLog Georg.
-
-2005-01-18  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b323
-
-	* Fix: Sorting for capture date in stats.php was broken,
-	       because it was based on old structure, not timestamp.
-	  Caught by: Michael Dayah
-
-2005-01-11  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b322
-
-	* Change: New standard theme. its now blue.
-	 TODO: adjust skins
-
-	* New:  Added Icons in albums.php, view_albums.php and view_photo.php
-		Choices are: only icons, only text, or both.
-
-	 	- new getIconText()
-		- new makeIconMenu
-
-	* Change: Layout on: adminpage, slideshow, upgrade_album, user_preferences
-		  view_comments, layout/adminbox.inc
-
-2005-01-04  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b321
-
-	* Change:  Temporarily disable the session hijack prevention until we
-	  can re-think the detection method
-
-2005-01-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b320
-
-	* 1074480: $wmName was missing from globals in layout/watermarkform.inc
-
-	* Fix: canModifyUser() is true when the user can modify themselves, so
-	  we shouldn't use this as a key for displaying the admin page link
-
-2004-12-28  Christian Mohn <h0bbel@p0ggel.org> 1.5-cvs-b319
-	*New: Added per-album RSS patch (RFE #1020449) by
-	      Don Willingham <donwillingham@users.sf.net>
-
-	* New: RSS's alternate link tag added to view_album.php.
-	* New: Added getSubAlbums to Album.php.
-	* New: Added getAlbumsByRoot to AlbumDB.php.
-	* Change: RSS link on bottom of album has ?set_albumName={albumname}
-	  appended.
-	* Change: rss.php now obeys ?set_albumName, if set only items of named album
-	  and children albums are generated.
-
-2004-12-28  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b318
-
-	* Fix: Bug 848309, moved JavaScript blur() to prevent
-		main window from possibly having focus when a
-		popup window is in the foreground.
-
-2004-12-28  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b317
-
-	* Fix:  Bug 1079201, resolved JavaScript error
-
-2004-12-20  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b316
-
-	* Change: Remove debug code
-
-2004-12-20  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b315
-
-	* Fix: Voting in view_album.php  was broken (register globals)
-
-	* Fix: HTML 4.01 changes to
-		- poll_properties.php (not yet 100% valid)
-		- view_album.php
-		- poll_results (also added better footer)
-
-	* Fix: Poll result were viewable for everybody. Now only admins or owner can see.
-
-	* Fix: Language init in fresh installations didnt work.
-
-2004-12-19  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b314
-
-	* Change: Removed debug code.
-
-2004-12-15  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b313
-
-	* Fix: Delete comments through stats.php didnt work,
-	       because comments of different albums are showed and so $gallery->album is not set.
-	  - Added Parameter $albumName to viewComments()
-	  - Use of viewComments with this parameter in stats.php
-	  - This is caught by do_command.php due to layout/commentdraw.inc
-	    and $gallery->album is generated.
-
-	* Fix: admintext was not displayed in stats.php
-
-	* New: Public links are now also displayed in stats.php. (RFE by Floridave)
-
-2004-12-15  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b312
-
-	* Fix: view_photo.php produced an error when no printservices is used.
-	       Introduced in b311 with the sorting.
-
-2004-12-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b311
-
-	* Fix: Remove GALLERY_URL define from Mambo's section of index.php
-	  This caused a bad path when displaying the 'unconfigured' error,
-	  and wasn't used anywhere else.
-
-	* Change: Text changes for the service providers list, sort the list
-
-2004-12-14  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b310
-
-	* Change: if $type is not set when stats.php is called,
-		  we assume stats.php was called directly and display a default view.
-
-2004-12-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b309
-
-	* Change: Minor visual tweaks to stats and albums pages (removing/adding whitespace)
-
-2004-12-14  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b308
-
-	* Fix: statslinks for normal users are now optional
-
-	* Fix: Added <span> around current page in navigator.
-
-	* Change: Adjust layout for adminbox. Now nicer displayed in IE.
-
-2004-12-13  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b307
-
-	* Change: removed unnecessary <span class="admin"> around admin text and commands.
-
-	* Change: removed unneeded $adminbox["top"]
-
-	* Change: removed permission check in stats.php. Now EVERYBODY can access it.
-
-	* Stats changes:
-	  - New: Added possibility in config setup to define public links to stats. (config version bump)
-		 Links are displayed on mainpage.
-		 Links are created with a function that can be placed by the user.
-	  - New: Added Javascript in stats-wizard that generates statsURL for copy/paste
-	  - Moved definitions and function into a separate files. (includes/stats/stats.inc.php)
-
-2004-12-11  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b306
-
-	* New: Added support for exiftags. (RFE #810284)
-	  - Added function getExifDisplayTool()
-	  - Adjust function getExif()
-	  - Adjust getItemCaptureDate()
-	  - Added exiftags to confiwizard. (Bumped config version)
-
-	 Note: So exiftags is only used in above cases ! (e.g. not for autorotation.)
-
-	* Change: Tweaked optionals tools in config.
-
-2004-12-10  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b305
-
-	* Fix: function getImVersion introduced in b300 was total b0rked. (Sorry.)
-
-2004-12-10  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b304
-
-	* Change: Added target="_blank" to powered by link. (RFE #1020347)
-
-	* New: Added login/logout link to view_photo. (RFE #582856 / #976764)
-
-	* Fix: comments_addType was broken. (since b295)
-
-	* Fix: Position of the add vote and add comment links was not used in stats.
-
-2004-12-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b303
-
-	* Remove debug code
-
-2004-12-09  Christian Mohn <h0bbel@p0ggel.org>  1.5-cvs-b302
-
-	* Fix: Typo in watermarking section of setup/config_data.inc
-
-2004-12-09  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b301
-
-	* Fix: do not reload page when clicking on Emailme in view_photo.
-	       Instead load the page new.
-	       This fixes an "out of bound" error on Macs.
-	Thanks to: Randy J.
-
-2004-12-09  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b300
-
-	* Change: Layout
-		- admin page.
-		- Checkbox for emailing in view album page
-		- layout/navigator.inc (we use now a table for the numbers)
-		- tools/find_orphans.php (added nicer errormessages)
-
-	* Change: Code cleanup for
-		 - create_user.php
-		 - slideshow.php (BIG changes)
-		 - includes/slideshow/high.inc
-		 - includes/slideshow/low.inc
-
-	* Fix: Made valid html 4.01:
-		- create_users.php
-		- delete_user.php
-		- manage_users.php
-		- modify_user.php
-		- includes/slideshow/high.inc
-
- 	* Fix: Mambo calls rss.php in the way that HTTP_USER_AGENT is not set.
-	  Check added in init.php to prevent warning message which causes rss.php
-	  to produce invalid rss.
-
-
-	* New: Added function getImVersion() to detect version of ImageMagick.
-
-	* Change: removed Config Option for that Version.
-
-	* Change: Checkbox for emailing in view_photo is only visible, when disabled in album view.
-
-	* Change: function getEmailMe() from classes/Album.php return now true
-		  when emailMe is set for photo OR album.
-
-	* Fix: Slideshow low was broken (register globals)
-
-	* Change: fs_unlink surpresses now the warning message. So we can show our own (nice) message.
-
-	* Change: Configwizard:
-		  - Added Tab own tab for watermarking.
-		  - Text changes in statistics tab
-		  - Added possibility for empty desc
-
-2004-12-03  Andrew Lindeman <alindeman@users.sf.net>    1.5-cvs-b299
-
-	* Use htmlentities() on the caption fields for photo print
-	  services, to prevent invalid HTML when the caption contains
-	  quotes.
-
-2004-12-02  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b298
-
-	* Fix: Make view_comments html4.01
-
-	* Change: Only show subalbums in view_comments that have comments.
-
-	* Change: Enhanced general footer.
-
-2004-12-02  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b297
-
-	* Change: Enhanced albumtree. Now the depth can be given.
-	  This covers RFE #964594 and #1027307.
-
-2004-12-02  Christian Mohn <h0bbel@p0ggel.org>  1.5-cvs-b296
-
-        * Fix: Typos in admin-page.php
-
-2004-12-02  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b295
-
-	* Fix: "show pictures with most/less comments" were broken.
-		(thanks to Marjan Laznik)
-
-	* Change: Wording in stats and stats-wizard. (inspired by C.M.)
-
-	* Fix: Add comments in stats now is always popup, regardless the default from config.php
-
-	* Change: adjust layout in despam-comments, stats-wizard and find-orphans.
-
-2004-12-01  Christian Mohn <h0bbel@p0ggel.org>  1.5-cvs-b294
-
-        * Fix: Spelling in albums.php
-
-2004-12-01  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b293
-
-	* Change: Text change
-
-2004-12-01  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b292
-
-	* Change: Present a warning text when redirecting a user from an
-	  album/image that doesn't exist, or they don't have rights to
-	  view.
-
-2004-11-29  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b291
-
-	* Fix: added isDebugging to a place it needed to be in util.php
-
-2004-11-28 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b290
-
-	* New: add css to define text in add_photos.php
-
-2004-11-28 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b289
-
-	* Fix: restored css for the tabs in add_photos.php
-
-2004-11-28 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b288
-
-	* Fix: typo admin_form view_photo.php
-
-2004-11-28 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b287
-
-	* Fix: CSS class.
-
-2004-11-28 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b286
-
-	* Update: CSS cleanup, minor changes.
-
-2004-11-28  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b285
-
-	* Fix: Used adminfrom (introduced in 1.4.3-cvs-b12) also for printservice dropdopwn.
-	       This prevents unreadability in some skins.
-
-2004-11-28  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b284
-
-	* Change: Call by reference for blacklisted test.
-
-2004-11-28  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b283
-
-	* Fix: admin-page is now html 4.01
-
-	* New: Added general footer. Optional you can set $validation_file.
-	       That file will be used for validator.
-
-	* New: Added blacklist test for new comments. if blacklisted, then the comment is not added.
-	  Moved some functions from tools/despam into util.php
-
-2004-11-27  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b282
-
-	* Fix: Wrong test in confirm.inc enabled all features (zip, rewrite, mirror) any time.
-
-2004-11-27  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b281
-
-	* Change: Added admin-page.php to save space on first space.
-
-2004-11-24  Andrew Lindeman <alindeman@users.sf.net>    1.5-cvs-b280
-
-	* Fix: Don't quote literal variables
-
-2004-11-23  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b279
-
-	* Fix: Added stats/-wizard to safeToInclude List
-
-	* Fix: Radiogroup in stats-wizard
-
-	* Change: Layout Tweak of stats/-wizard, especially when embedded.
-
-	* Change: tweaked function for validation to use referer when no file was given.
-
-	* Fix: Added correct header and footer to stats-wizard and made is valid html 4.01
-	  ToDo: make stats valid HTML
-
-	Thanks to Kai Tomalik.
-
-2004-11-22  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b278
-
-	* New: Added stats.php by Jeremy Gilliat.
-	  - Added stats-wizard.
-	  - Modified stats.php to fit with Gallery 1.5
-	  - Added new Tab in Step 2 of config for caching settings.
-	    (Config Version increased)
-
-	* New: Added Parameter: $newestFirst for ordering.
-
-	* Change: Added check must-be-integer and modified must-be-number in confirm.inc
-
-2004-11-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b277
-
-	* Fix: publish_xp issues with register_globals, and debug error display
-
-2004-11-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b276
-
-	* Fix 1069232: Big applet didn't work embedded
-
-2004-11-19  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b275
-
-	* Fix: Regex in despam comments were broken.
-
-	* Change: Tweaked Layout of despam comments.
-
-2004-11-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b274
-
-	* Fix: Try and detect a corrupt albumdb.dat and rebuild without
-	  displaying numerous errors to the user
-
-2004-11-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b273
-
-	* Change: Allow session-sharing in devMode so that pages
-	  can be validated using the W3 validation links
-
-2004-11-12  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b272
-
-	* Change: Never put case statements after default ... dur.  My bad.
-
-2004-11-12  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b271
-
-	* Add:  New print affiliate "Fotoserve"
-
-2004-11-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b270
-
-	* Change: Use file_get_contents (when it's available) instead of using
-	  the while loop to fread.  Could be internally faster.
-
-	* Change: Modify the version ranges to be 5.x and 6.x for the IM issue
-	  and add a link to check_imagemagick for users who don't know what
-	  version they have.
-
-2004-11-11  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b269
-
-	* Fix: fitToWindow failed on PHP where . was not in includepath.
-
-2004-11-09  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b268
-
-	* Fix: Only try to send email after saving album data, when email is activated.
-	       This prevents an errormessage when creating album with debugmode on.
-	  TODO: better way of debug output.
-
-2004-11-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b267
-
-	* Change: Refine the search regex to be faster and more accurate
-
-2004-11-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b266
-
-	* Fix 1061778: Tiny typo
-
-	* Fix 1062609: ImageMagick 6.1.0+ switched its parameters again,
-	  we're now going to have to require users to specify which version
-	  that they're using.
-
-2004-11-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b265
-
-	* Fix 973081: Add some complicated regex to search.php to prevent
-	  our highlight routines from breaking URLs when a portion of the
-	  href matches the searchstring.  Still can be enhanced to work with
-	  non-<a> cases.
-
-2004-11-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b264
-
-	* Fix: Don't display rss.php in offline mode
-
-2004-11-05  Beckett Madden-Woods  <beckett@beckettmw.com> 1.5-cvs-b263
-
-	* captionator.php: fix photos-per-page count to work with
-	  register_globals off, and also when linked to from
-	  albums.php
-
-2004-11-04  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b262
-
-	* Text: Update the Mambo HowTo.txt
-
-	* Fix: Integrate the relavent portions of 1.4.4-pl3/4
-
-2004-11-03  Beckett Madden-Woods  <beckett@beckettmw.com> 1.5-cvs-b261
-
-	* Edit grammar in do_command.php (modifying text string).
-
-2004-11-01  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b260
-
-	* Fix: Uploading compressed files were broken due to wrong test.
-
-	* Change: Lower extension when testing supported tool.
-
-2004-10-31  John Kirkland <jpk@bl.org>  1.5-cvs-b259
-
-	* Change:  Fix XP Publishing Wizard with register globals off.
-
-2004-10-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b258
-
-	* Fix 971760: Clear autorotate flag after rotating
-
-	* Change:  Correct the 'canViewFull' behavior - we were
-	  allowing users to see the full image if there was no resized
-	  available, however this was not the original intent.
-
-2004-10-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b257
-
-	* Fix 1055656: Return array() instead of NULL
-
-2004-10-29  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b256
-
-	* Change: Updated manifest to remove serious warning in config/Step1
-
-2004-10-27  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b255
-
-	* New: Added resizeAllPhotos() to classes/Album.php
-	       Used in tweaked resize_photo.php. It has the possibility to do the resize recursive.
-
-	       Mostly done by Dell'Aiera Pol <dellaiera.pol@gmail.com>
-
-2004-10-26  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b254
-
-	* Change:  1.5 has been re-versioned to 1.5 due to the vast
-	  number of changes, and in preparation for G2.
-
-2004-10-26  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b254
-
-	* Change: Albums now generate notification mail when they're
-	  created for the first time.
-
-	* Fix 1054337: Logic in extra_fields thought it was inside a foreach
-	  ... but it wasn't.  It skipped counting a field if both Title and
-	  AltText were enabled.
-
-2004-10-25  Chris Kelly <ckdake@users.sf.net>  1.5-cvs-b253
-
-	* Fix 1052876: Corrected CSS for RSS button
-
-2004-10-24  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b252
-
-	* Fix 1034893: Fix the print dropdowns in 'suit'
-
-2004-10-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b251
-
-	* Fix 995510: Better animated gif support under ImageMagick
-
-2004-10-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b250
-
-	* Fix 1052559: Regex error in gallery_mail() caused the char preceding
-	  or following a bare \n to be removed during conversion.
-
-	* Change:  whitespace/readability.  No flow changes
-
-2004-10-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b249
-
-	* Fix: fitToWindow didn't work with image frames, since the frames themselves
-	  were never resized to match the new image height.
-
-2004-10-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b248
-
-	* Change: Fix margin on Search form for IE.
-
-	* Fix 783843: Get rid of width=3000 and width=4000 - all of the recent
-	  layouts have finally made this unnecessary!
-
-	* Fix 839037: Allow relative URLs, but warn the user that it will break
-	  some features (printing, etc.) since the printer will not be able to find
-	  the Gallery install.
-
-	* Fix 930742: Prevent repetetive automatic re-highlighting of an album
-	  during delete.
-
-	* Change: register_globals issue - canCreate, isAdmin and Cancel on
-	  the modify_user page
-
-	* Fix 1047814: Renamed the 'action' field to 'formaction' to prevent JS/DOM
-	  naming conflict
-
-2004-10-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b247
-
-	* Fix 1003564: Custom textcolor not applied to captions
-
-	* Fix 1023569: RSS was removing "non-print" characters, which b0rked
-	  non-US languages.
-
-2004-10-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b246
-
-	* Fix 1006567: If an image filename is stripped of disallowed chars,
-	  and the new filename is blank, use newPhotoName() to get a unique name
-	  from the album.
-
-	* Change: Code tweaks in sortPhotos .. no flow changes.
-
-2004-10-22  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b245
-
-	* Fix: Multiple deletion of comments failed.
-
-	* Fix: Prevent errormessage on reload after deleting multiple comments.
-
-	* Change: If someone tries to get a not existent comment, return null instead of throwing an error.
-
-2004-10-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b244
-
-	* Change: Missing echo in login.inc
-
-2004-10-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b243
-
-	* Change: Migrate the config wizard to use the Gallery session for
-	  data storage instead of making gigantic, problematic forms.
-	  (This solves such issues as urldecoding too many times.)
-
-2004-10-20  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b242
-
-	* Change: Added dir="ltr" around image frames. Next step in Bug #869641.
-
-2004-10-19  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b241
-
-	* Fix: Breadcrumb in search had no Border.
-
-	* Change: Rewrite of search.php
-	  - We looped twice through complete albumDB. Now only onces.
-	  - All search results are now in an array, therefore we can separate
-	    code from html output.
-	  - Little Layout change.
-
-	* Change: Adjust layout/searchdraw.inc to rewritten search.php
-
-	* Change: intented search header
-
-	* Fix: Added cpgnuke to header and footer wrapper
-
-2004-10-18  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b240
-
-	* Change: Reverted Change in ml_pulldown. a combo or flag for 1 language makes no sense.
-
-2004-10-18  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b239
-
-	* Change: Present a URL to re-login if a session hijack is detected
-
-	* Change: Don't detect a hijack if there is no remoteHost defined
-	  in the session (upgrade scenario)
-
-2004-10-18  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b238
-
-	* Change: Extra security for sessions.
-	  When the initial session is created, we store the REMOTE_ADDR
-	  taken from the server, on each load, we compare the stored address
-	  against the information in the current request.  If the address
-	  has changed, we die with an attempted security breach.  This prevents
-	  hijacking of sessions simply by knowing/sniffing the PHPSESSID from
-	  cookies.
-
-	* Change: Use !empty() instead of "sizeof() > 1" in ml_pulldown
-
-2004-10-18  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b237
-
-	* Fix: Modified Skins to look better in rtl languages. Fixes partly bug #869641.
-
-2004-10-18  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b236
-
-	* Fix: Add useLoad to getRequestVar in rename_album
-
-2004-10-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b235
-
-	* Fix: initLanguage does need to be called early, so I've added
-	  some extra logic to prevent the functions from being initialized
-	  multiple times, so that we can call it later to pick up user prefs
-
-2004-10-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b234
-
-	* Fix: Comparison typo
-
-2004-10-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b233
-
-	* Fix: Config wizard properly handles smtpPassword now.  Previously,
-	  password values were never saved in the config file, so this was an
-	  unseen case.
-
-2004-10-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b232
-
-	* Fix: Tested and fixed SMTP code
-
-	* Fix: Prevention of bare linefeeds in email messages, which could
-	  cause errors with strict MTAs.
-
-2004-10-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b231
-
-	* Bug 1048609: Escape "&" in navigator URLs
-
-	* Fix: Modify getParentAlbums() so that array_reverse() isn't used -
-	  it caused failures when any of the album names contained only
-	  numbers - it would reset them to a zero-based incremental,
-	  thinking that they were array refs, not strings.
-
-2004-10-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b230
-
-	* Change: Update opendir() calls to fs_opendir()
-
-	* Change: Remove reliance on the "Get rid of resized" string as
-	  a parameter in Image->resize() due to the fact that translation
-	  issues could cause the button on resize_image.php to fail
-
-	* Delete: Remove the Mambo Popup Template, which was never used.
-
-2004-10-17  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b229
-
-	* Remove invalid html from navigator
+ * Fix: Voting instruction texts in some skins. Bug#1249919 .
 
-2004-10-17  Chris Kelly	<ckdake@users.sf.net> 1.5-cvs-b228
 
-	* Show if images are hidden when editing captions.
+2005-09-24 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b2
 
-2004-10-15  Pierre-Luc Paour  <paour@users.sourceforge.net> 1.5-cvs-b227
+ * New: Its now possible to set "browser" as default language. Covers patch #1176481.
+ 
+ * New: New function getDefaultLanguage.
+ 
+ * Change: use of new function. Some code cleanup.
+ 
 
-	* Removed references to JSX in applet instanciation HTML.
-	* Added metadata-extractor JAR, to support big applet.
+2005-09-23 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b1
 
-2004-10-15  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b226
+ * New: If selfregister is on, then inside the login popup is a link to register.
+        This covers Patch #1042354.
+        
 
-	* Fix: uncritical cpgNuke Fixes.
-
-	* Fix: uncritical fix for getEnvLang, it was possible that nothing was returned.
-
-2004-10-14  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b225
-
-        * New: CSS :focus for input, textarea and selectboxes.
-	       Used in config, "none" and "jenskin".
-
-2004-10-14  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b224
-
-	* New: CPGNuke integration.
-
-2004-10-13  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b223
-
-	* Fix: Bug #1023285
-	       Language was initialized before user were set.
-	       Thats to early, because then usersettings are ignored.
-
-2004-10-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b222
-
-	* Change: Return "" if string is empty in unhtmlentities (issue with older PHP?)
-
-	* Change: Attempt to speed up the config wiz by a little bit.  Converted all
-	  item names to use '' rather than "".  (Next will be the values themselves)
-
-	* Change: Add mPUSHAccount setting, so the user can setup their own affiliate
-	  account with mPUSH.
-
-2004-10-07  Don Willingham <donwillingham@users.sf.net>  1.5-cvs-b221
-
-	* New:  Add ability to only watermark the resized or full or both images.
-
-2004-10-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b220
-
-	* Change:  'Refresh' button causes the confirm page to post back to itself
-	  This prevents the annoying "Refreshing this page requires a POST" browser error
-
-	* Change:  Add a description field to the print services in the config wizard.
-
-	* Change:  Correct the account for mPUSH
-
-2004-10-06  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b219
-
-	* New: Possibility to rebuild thumbs recursivly.
-	       Code changes in do_command.php and classes/Album.php
-	       Mostly done by Dell'Aiera Pol <dellaiera.pol@gmail.com>
-
-	* Change: Tweaked do_command.php. Use of switch/case instead of if/else/elseif
-
-	* New: Added function printPopupStart() that prints the HTML output for Popups.
-
-2004-10-03  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b218
-
-	* Change: Put popup related functions into lib/popup.php
-
-	* Change: Put URL related functions into lib/url.php
-
-2004-10-03  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b217
-
-	* Fix: Missed a forgotton Popup.
-
-2004-10-03  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b216
-
-	* Fix: Reloaded Popups e.g. in Mambo were embedded.
-	  (Caught by Kai Tomalik)
-
-2004-10-03  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b215
-
-	* Change: Tweaked the multiple comment deletion with using array_reverse()
-
-2004-10-02  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b214
-
-	* Fix: Added doctype to view_comments and make it valid HTML 4.01
-
-	* New: Added possibility to delete muliple comments.
-
-	* Fix: De-globalize modify_user.php
-
-2004-10-02  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b213
-
-	* New: Added rar support. This means Gallery can now handle following archive formats:
-		'zip', 'rar', 'cab', 'arj', 'lzh', 'tar', 'gz', 'bz2', 'ace', 'uue', 'jar', 'z'
-
-	* New: Added archive handling functions.
-
-	* Change: Added some Comments in save_photos and adjust to rar support.
-
-	* Change: Replaced some
-			$url = eregi_replace("^[[:space:]]+", "", $url);
-		with	$url = ltrim($url)
-
-	* Change: removed some unused vars.
-
-2004-10-01  Beckett Madden-Woods  <beckett@beckettmw.com> 1.5-cvs-b212
-
-	* Change: index.php: Added "rss.php" to $safe_to_include
-
-2004-09-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b211
-
-	* Fix: Small tweaks to mambo xml, maybe to alleviate uninstall issues?
-
-	* Fix: fullOnly URLs were using do_command?  No idea why, but fixed.
-
-2004-09-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b210
-
-	* Fix: Update the gallery.xml to work with Mambo 4.5.1
-	  (Mainly, remove the 'template' section)
-
-2004-09-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b209
-
-	* Change: Minor flow change in mambo section of init.php
-
-	* Change: Addition of 'sessionStart' variable to $gallery->session
-	  to help debug session issues
-
-2004-09-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b208
-
-	* Change: view_album doesn't need to reference the current album
-	  in breadcrumbs - it's confusing.  view_photo does
-
-2004-09-26  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b207
-
-	* Fix: Don't unset the mambo session vars immediately after setting them.
-
-	* Change:  Correct a couple popups in view_album
-
-2004-09-24  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b206
-
-	* Change: If we're in mambo, just set the session info all the time.
-	  Only setting the info when popups were created tended to yield errors.
-
-2004-09-23  Andrew Lindeman <alindeman@users.sf.net>    1.5-cvs-b205
-
-	* Fix: Also replace this instance of printf (see log message for b204)
-
-2004-09-23  Andrew Lindeman <alindeman@users.sf.net>    1.5-cvs-b204
-
-	* Fix: Use sprintf instead of printf in the watermark form when setting the
-	       error message to a string
-
-2004-09-23  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b203
-
-	* Fix: removed \n after view comments. it was in a single quotes.
-	       (caught by Christian M.)
-
-	* Change: Owner can now always see comments. global changed in classes/User.php
-
-	* Fix: view all comments was not working proper.
-
-	* New: Added css class commentIndication. (Currently only used in 'none' and 'jenskin').
-
-2004-09-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b202
-
-	* Change: Link movies to view_photo so that users can leave comments
-
-	* Change: Update printChildren to use some better HTML (fewed redundant nestings)
-
-	* Change: Add some more comments to find_orphans to alleviate (my) confusion
-
-2004-09-23  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b201
-
-	* New: Added new method 'getParentAlbums' to classes/Album.php
-
-	* Change: use new function in view_album.php and view_photo.php to build the returnto links
-
-	* Fix: Allow admins to change albumname even if they are not owner.
-
-	* Fix: removed unneccessary index parameter when calling rename album from view_album
-
-2004-09-21  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b200
-
-	* Fix: removed warnings in find_orphans
-
-	* New: Added function for recursive counting of array elements.
-	       Code by Andrew Lindeman.
-
-	* Fix: corrected count of orphaned images. (use of the new function)
-
-	* Fix: Added tools/despam-comments.php to list of translateable files.
-
-	* Change: Layout of find_orphans.
-
-2004-09-20  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b199
-
-	* Change: Don't play with un-initialized vars in config wiz.
-
-	* Change: Try and use (include|require)_once where applicable -
-	  the original thought was to try and allow block-random to be able
-	  to be called without using URLs, however I'm beginning to think that
-	  it's not possible.
-
-	* Change: Extra config var so that users can tweak some more random block
-	  settings (number of times we attempt to find an image before giving up -
-	  they can choose performance over 'find an image every time')
-
-	* Change: Add some more extensions to the acceptableMovieFormat list
-
-	* Change: Remove "session.bug_compat_warn off" from the htaccess.template
-
-	* Change: Add "register_globals off" to the htaccess.template
-
-2004-09-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b198
-
-	* Change: Mambo updates.  We can't use _() in gallery.php, because
-	  that's a Mambo file, not a Gallery file.  We don't know if gettext is
-	  enabled, and we haven't loaded our shim yet.
-
-2004-09-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b197
-
-	* Change: Further popup support work (save_photos)
-
-	* Change: Remove extra veritical whitespace from the DOCTYPE header
-
-2004-09-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b196
-
-	* Change: Modifications to make popup support better in Mambo
-
-2004-09-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b195
-
-	* Change: Make orphaned items links to the item.  This will allow
-	  users to view the album they're re-attaching (or the parent),
-	  as well as the images they're about to delete.
-
-2004-09-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b194
-
-	* Fix: view_album now honors the 'Email me when' form
-
-	* Fix: watermark_album de-globalized
-
-2004-09-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b193
-
-	* Add: Flesh out the findOrphanedImages(), add deleteOrphanedImages()
-
-	* Change:  find_orphans can now identify and delete orphaned images
-	  which were the result of a failed upload, or other catastrophic issue.
-	  For some users, this could clear up a lot of space.
-
-2004-09-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b192
-
-	* Fix: Use of dirname(dirname()) in setup was incorrect.  GALLERY_BASE
-	  should be used instead, due to Debian.
-
-	* Change: Rename findOrphans() to findOrphanedAlbums()
-
-	* Add: Stub function for findOrphanedImages() in find_orphans.php
-
-2004-09-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b191
-
-	* Fix: Change 'delete' to 'deleteButton' to prevent the JS errors
-	  onsubmit
-
-2004-09-15  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b190
-
-	* Fix:  Added putenv("LC_ALL" ...) in lib/lang.php to fix problems on FreeBSD 4.10
-
-2004-09-12  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b189
-
-	* Change: HTML cleanup
-
-	* Change: Move the adminOptions form tags inside the table, and apply the necessary
-	  CSS (margin-bottom:0px) so that IE displays it correctly.
-
-	* Change: Applied form CSS in a couple other locations to try and unify IE/Mozilla
-
-	* Fix: Remove duplicated globals call from breadcrumb.inc
-
-2004-09-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b188
-
-	* Add: Add support for 'Coral', a peer-to-peer webcache to init.php
-	  http://gallery.menalto.com/index.php?name=PNphpBB2&file=viewtopic&p=94428#94428
-
-	* Change:  Correct several uses of preg* to ereg, to stick with the G1 standard
-
-	* Fix: Inline comment posting in view_photo
-
-	* Change: A bit of whitespace fixing
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b187
-
-	* Fix: Missing paren in init.php
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b186
-
-	* Fix: Badly renamed button in resize_photo
-
-	* Change:  Make register_globals a "Serious Warning!"/"Continue at own risk..." in
-	  the config wizard.
-
-	* Change:  Internally "disable" register_globals in init.php by calling unset() on
-	  each $$key from $_REQUEST.  The idea is that this will be a workaround for
-	  Geeklog embedding, but it will still give us the extra security we need.
-
-	* Fix: Correct the 'Warning' code in check.inc to behave like the failure code,
-	  and remove the 'nocolor' flag, which was unnecessary.
-
-2004-09-11  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b185
-
-	* New: Added images/favicon.ico as favicon. Inserted via common_header()
-
-	* Change: Little html output beautify in albums.php and view_album.php
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b184
-
-	* Fix: poll_properties and reset_votes
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b183
-
-	* Fix: Set Nested Properties
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b182
-
-	* Fix: Last second bug.  You can't empty() a function call.
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b181
-
-	* Fix: gallery_remote2 now works with GR, fix a lot of small PHP issues
-	  (unquoted array refs, etc.)
-
-	* Fix: Get rid of the ugly foreach loop and just make save_photos use $_FILES
-	  directly
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b180
-
-	* Fix: variable typo in resize_photo
-
-	* Fix: Don't try to use header() when debugging, because we've already sent text
-	  (captionator)
-
-2004-09-10  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b179
-
-	* Fix: Caption options in upload via form was ignored.
-	       Fixed with de-globalize setCaption in save_photos.php
-
-2004-09-10  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b178
-
-	* Change: Make "Layout" the first tab in Step3 of config.
-		  This avoids confusing. Because is initially selected, but was 2nd tab.
-
-	* Fix: Creating Subalbums did not work.
-	       Fixed with de-globalize do_command a little more (parentName for subalbum)
-
-2004-09-10  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b177
-
-	* Fix: De-globalize sort_album.php, view_photo_properties.php, extra_fields.php
-
-2004-09-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b176
-
-	* Fix: Some popups in Mambo were still displaying inside the UI
-	  because they were not built using 'type=popup' for makeGalleryURL
-
-2004-09-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b175
-
-	* Fix: Admin password correctly stored in config wiz.
-
-2004-09-09  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b174
-
-	* Fix: removed Warning in classes/Album.php
-
-	* Fix: completed change albums permissions fix.
-
-	* Change: use strict html 4.01 in albums.php for <link> to avoid confused Validator
-
-2004-09-09  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b173
-
-	* Fix: De-globalize do_command.php, album_permissions.php
-
-	* Fix: initial admin user was not created in setup, as the password were not global.
-
-2004-09-09  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b172
-
-	* Fix: De-globalize manage users, create user, edit_field.php, add_photos.php, save_photos.php,
-	       add_form.inc
-
-2004-09-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b171
-
-	* Fix: view_album wasn't honoring $page
-
-	* Fix: PHP notice about unset watermark var in view_album
-
-	* Fix: Correct save_photos when using methods other than Form
-
-2004-09-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b170
-
-	* Fix: Bug in view_photo prevented inline comments from operating
-	  if the user didn't have View Full rights.
-
-	* Fix: Add missing var to add_comments.php
-
-2004-09-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b169
-
-	* Bug 1000425: Use 'deleteButton' instead of 'delete' because
-	  of a JS keyword
-
-2004-09-08  Christian Mohn <h0bbel@p0ggel.org>  1.5-cvs-b168
-
-        * Fix: Closing bold tag in displayPhotoFields
-
-2004-09-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b167
-
-	* Change: Remove duplicate and unused options from despam-comments
-
-2004-09-08  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b166
-
-	* Change: De-globalize gallery_remote2
-
-	* Fix: function typo in despam-comments
-
-	* Change: Use dirname(dirname()) instead of '../' in build_manifest
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b165
-
-	* Change:  Remove session_register(), which is deprecated (and not
-	  necessary, since we use $_SESSION)
-
-	* Change:  save_photos - Don't save the album if there were 0 photos
-	  uploaded.
-
-2004-09-07  Andrew Lindeman <alindeman@users.sf.net>    1.5-cvs-b164
-
-	* Prevent a possible PHP error (pedantic)
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b163
-
-	* Fix: Incorrect function pluralization
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b162
-
-	* Fix: De-globalize find_orphans
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b161
-
-	* Fix: I brokeded the config wizard.  Now working and de-globalized
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b160
-
-	* Fix: Add register_globals check to config wizard
-
-	* Fix: De-globalize login.inc
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b159
-
-	* Fix: De-globalize delete_album and new_password
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b158
-
-	* Fix: Initial commit of the gallery-wide conversion away from
-	  register_globals. This commit does not address 100% of the
-	  codebase, however it covers everything that I found in general
-	  use.  There will be broken sections, and it does need lots of
-	  testing.
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b157
-
-	* Change:  Recursive permissions in ælbum_permissions.php
-
-2004-09-07  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b156
-
-	* Fix: one more stray invalid css class name
-
-2004-09-07  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b155
-
-	* Add: Initial implementation of mPUSH content service.
-	  (Currently displayed as a print provider, but mPUSH actually
-	  allows you to send images to a user's cell phone.)
+2005-09-22 Chris Kelly <ckdake@users.sf.net> 1.5.1
 
-	* Fix: global $gallery in numAccessibleItems
+	* Release:  1.5.1
 
-2004-09-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b154
+2005-09-22 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b13
 
-	* Change: Versioning is moved to a comment (immediately following
-	  'Powered by') unless the gallery is in debug or devMode, or the
-	  logged-in user is an administrator.
+	* FixFix: b11 broke more then it fixed :-( FIXed it :-)
 
-	  Defaults to "v1"
+2005-09-21 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b12
 
-2004-09-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b153
+	* Fix: Urls for Gallery embedded into CPGNuke didnt work.
+	       So we do the same for cpgnuke as for the other *nukes done in 1.5.1-RC3-cvs-b3.
+	
+2005-09-17 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b11
 
-	* Fix: Switch edit_caption to the new timestamp format, instead of
-	  the old array
+	* "Fix": Cach invalid input for $page and set_albumListPage in view_album.php and stats.php
+	Found by Andrew Khlebutin
 
-2004-09-03  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b152
+2005-09-17 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b10
 
-	* Change: Text changes.
+	* Fix: fs_opendir leaks resources.
+	  Found and fixed by David Faulkner
 
-2004-09-03  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b151
+2005-09-17 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b9
 
-	* Change: Add class='admin' to the admin urls embedded in albums.php
+        * Fix: Make changeToAlbum emails HTML-mails, so links work correctly.
+	  Thanks to Ansolon.
 
-2004-09-02  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b150
+2005-09-15 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b8
 
-	* "Fix": Made "points" translateable in poll_properties
+	* Fix: Typo.
 
-2004-09-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b149
+2005-09-15 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b7
 
-	* Change: Don't require .htaccess file creation in config wizard
-	  but notify the user that features will be disabled, and disable
-	  rewrite support.  This is to allow installation on servers where
-	  dot-files are not allowed to be written at all.
+	* Fix: Turn of verbose display of exifdata with jhead.
+	       This caused problems as verbosed data has different structure.
+	
+	* Fix: First line of exifdata was always removed,
+	       regardless wether jhead or exiftags is used.
 
-2004-09-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b148
+2005-09-13 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b6
 
-	* Fix: Add mod_php5 section to setup/.htaccess
+	* Change: Added paramater to gallery_mail() to send mail as HTML-mail.
 
-2004-09-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b147
+	* Fix: Make comment emails HTML-mails, so links work correctly.
 
-	* Fix: addslashes() to DIRECTORY_SEPARATOR prior to adding it to
-	  the mambo database.
+2005-09-12 Dariush Molavi <dari@nukedgallery.net> 1.5.1-RC4-cvs-b5
 
-2004-09-01 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b146
+	* Change: New address for Free Software Foundation in GPL header.
 
-	* Change: css changes to finish up new skin mods
+2005-09-12 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b4
 
-	* New: madmod1 skins that takes advantage of the skin mods
+	* New: Added function urlIsrelative().
 
-2004-08-31  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b145
+	* Fix: Relative URL in $gallery->app->photoAlbumURL did not longer work,
+	       due to new full url schema added in
+               1.5.1-RC2-cvs-b14 + 1.5.1-RC3-cvs-b3.
 
-	* Fix: two more popup css changes that got left out before
+	* Fix: $name is not set when Gallery is startpage in *Nuke.
+	       So we try to extract it from $modpath.
 
-2004-08-31  JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b144
+	* Fix: Url in stats-wizard was not generated on first load when embedded.
 
-	* New: Added class vapoll to voting output (allows more control over the text)
+2005-09-12 Rasmus Lerdorf 1.5.1-RC4-cvs-b3
 
-	* Fix: Calculate minimum width for $divCellWidth if voting "rank" is selected
+	* Fix: Some functions taking arguments by reference for no real reason
+	       in gallery_remote2.php.
+	       It breaks under the latest versions of PHP because
+	       the reference checking has improved.
 
-2004-08-31  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b143
+2005-09-08 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b2
 
-	* Change: remove array_search substituin from util.php as we require the use of PHP >= 4.1.0
+	* "Fix": As we use now (1.5.1-RC3-cvs-b12) verbose output for exifdata, 
+	   we now show only fields WITH data.
 
-	* Fix: remove Warning in tools/despam-comments.php
+2005-09-08 Jens Tkotz <jens@peino.de> 1.5.1-RC4-cvs-b1
 
-	* Change: Layout adjustment in tools/despam-comments.php
+	* Fix: Issues with setup/functions.inc which not longer exists.
 
-	* Fix: Made 'description' translateable.
-	  (Note we need a better way translate fieldnames in editField()
+2005-08-29  Chris Kelly <ckdake@users.sf.net> 1.5.1-RC3
 
-2004-08-30  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b142
+	* Release: 1.5.1-RC3
 
-	* Change: Content of popup for uploading photos is not hardcode centered.
+2005-08-29 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b15
 
-	* Change: No Alttext "No Caption", when Picture has no caption. RFE #962176.
+	* Fix: Poll Properties were not set recursively.
 
-	* Change: HTML Output beautify for add_photos form.
+2005-08-29 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b14
+	
+	* Merged b12 and b13, language syncronisation for RC3.
 
-	* Change: Update Jenskin.
+2005-08-24 Jay Rossiter <cryptographite@users.sf.net> 1.5.1-RC3-cvs-b13
 
-2004-08-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b141
+	* Fix: Prevent file exposure bug in stats module (thanks to ilia)
 
-	* Fix: Shorttags in watermark_album
+2005-08-23 Jay Rossiter <cryptographite@users.sf.net> 1.5.1-RC3-cvs-b12
 
-2004-08-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b140
+	* Fix: Prevent HTML tags inside EXIF info from being displayed without
+	  escaping.
 
-	* Fix: Shorttag at the top of block-random
+2005-08-19 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b11
 
-2004-08-30  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b139
+	* Fix: Make it possible to have Gallery as startpage in Postnuke or phpNuke.
 
-	* Fix: Remove PHP Warnings in view_album, Fixes SF Bug #1018848.
+	* Change: Url to w3c html validator.
 
-2004-08-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b138
+2005-08-17 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b10
 
-	* Fix: Always use the correct functions and import your globals
-	  before trying to use them.
+	* Fix: When using do_command.php e.g.for creating new album and Gallery is embedded,
+	       "Attempted security breach." occured due to new full url schema added in 
+	       1.5.1-RC2-cvs-b14 + 1.5.1-RC3-cvs-b3
 
-2004-08-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b137
+	* Fix: After creating a new album, with debug and email on, 
+	       an Error occured and dismiss button didnt work.
 
-	* Fix: Remove half-written debug code
+2005-08-16 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b9
 
-2004-08-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b136
+	* Fix: Moved and adapted setup/functions.inc to lib/setup.php.
+	       Some functions in this file are also used outside setup, 
+	       so when user protect the setup folder some functions where unavailable.
 
-	* Fix: Remove the block-random cache file whenever we delete photos
+	* New: Added functions fs_is_writable
 
-	* Change: Separate the mail headers so that it's easier to read.
+	* Fix: .htacces is optional, use function above to check to prevent error message.	
 
-2004-08-28  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b135
+2005-08-16 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b8
 
-	* Fix: remove tr that was causing netscape problems
+	* Fix: Wording. 'strg' is german ;) 'ctrl' is more international.
 
-	* Change: vertically align albums at the top of the table cell on the front page
+	* Change: Some indenting.
 
-2004-08-27  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b134
+	* "Fix": Change some <td nowrap> and put it into css class.
+		 Affected are class "head" and "title".
 
-	* Fix: one more stay "popup" css class removed
+2005-08-14  Alan Harder <alan.harder@sun.com>  1.5.1-RC3-cvs-b7
 
-2004-08-27  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b133
-	* Fix: one popup had the wrong class tag for its body
+	* Allow access to hidden photos via direct url.
+	  (rollback change from Gallery 1.3.1)
 
-2004-08-27  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b132
+2005-08-14 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b6
 
-	* Change: new popup CSS and class tags in all popups  to reflect
-	          this. see embedded_style.default.css for what they do.
+	* Fix: Use makeGalleryAlbumHeaderUrl() in links in Emails.
+	       - edit_appearance.php
+	       - classes/Album.php
+	       - lib/mail.php
 
-2004-08-28  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b131
+	Thanks to Ansolom.
 
-	* New: Added optional Parameter $extraJS to popup_link()
+	* Change: Some indenting and phpdocs.
 
-	* Change: If you click on the link to view a screenshot for Skins,
-	  its also selected in selectbox.
+2005-08-13 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b5
 
-2004-08-28  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b130
+	* Fix: Using referer for generating embedded urlprefix wasnt a good idea.
+	        Instead now use Gallery Url + script_name.
 
-	* Fix: view_album was a little b0rked when frames around thumbs and subalbums where different
+	Thanks to Mark (SG7)
 
-	* Change: Skin bars002. Its a side by side layout.
+2005-08-12  Bharat Mediratta  <bharat@menalto.com> 1.5.1-RC3-cvs-b4
 
-	* Fix: There was always a "." when Date of last comment was enabled.
-	  Caught by Dariush.
+	* Fix: typo in albums.php 'posess' -> 'possess' (thanks driz)
 
-2004-08-26  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b129
+2005-08-12 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b3
 
-	* Change: Remove class .vaspacer from all skins.
+	* Fix: Added path to folder to the url when Gallery is embedded in *Nuke,
+	       but not in the document root.
 
-	* Fix: Corrected invalid CSS and removed margin-left inside a centered div.
-	       (fixes alignment in Opera 7.x)
+2005-08-11 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b2
 
-	* "Fix": Vertical center thumbnails again.
+	* Fix: Even if clickcount display is off for an album
+	       an admin should see the click counts in stats.
 
-2004-08-25 Christian Mohn <h0bbel@p0ggel.org> 1.5-cvs-b128
+	Thanks to Lucent.
 
-        * Change: Replaced "header" with "footer" in html_wrap/ footer files
+2005-08-10 Jens Tkotz <jens@peino.de> 1.5.1-RC3-cvs-b1
 
+	%!@# ZLORFIX ! i shouldnt touch RC code.
 
-2004-08-25 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b127
+	* Fix: Minimum width change broke ecard with pictures >= 200px width.
 
-	* Change: Use divs instead of tables for view_album.php
+2005-08-09  Chris Kelly <ckdake@users.sf.net> 1.5.1-RC2
 
-2004-08-24  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b126
+	* Release: 1.5.1-RC2
 
-	* Fix:  Long filename / disclosure fix
+2005-08-09 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b15
 
-	* Fix:  Sorting by caption ignored albums, because they have no "caption"
-	  It now sorts them by their titles.
+	* Fix: Ecard stamp preview failed in IE, due to space in title of popup.
+	  Thanks to Dariush Molavi.
 
-	* Change: Add getGUID() to prevent code repetition
+	* Change: Added minimum width of ecard.
 
-2004-08-20  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b125
+	* Change: used tidy on ecard template.
 
-	* Change:  different div tags in login.php as well as centered text
-		boxes.  This is a temporary fix until the full review of
-		ideas for CSS is finished.
+	* Change: increased needed Debuglevel when got successfully dimensions of an image.
 
-2004-08-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b124
+2005-08-07 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b14
 
-	* Change:  Minor wording changes
+	* Fix: Added urlprefix via referer to embedded urls, so we get complete urls in mails.
 
-2004-08-19  Pierre-Luc Paour  <paour@users.sourceforge.net> 1.5-cvs-b123
+	* Fix: Possible security hole in postnuke by overriding global $name
+	  Thanks to msandersen
 
-	* GR protocol: now returning the max image size for albums in addition
-	  to the intermediate size.
-	* gallery_remote2.php: removed output buffering.
+	* Change: Format in nls.php
 
-2004-08-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b122
+	* Change: Make urls in comments mail a link.
 
-        * Fix: Make doubly-sure that we're setting mambo session vars when
-          embedded, to prevent the 'No info' error.
+	* Fix: updated list of translateable core files.
 
-2004-08-19  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b121
+	* Fix: Added isset() around test for optional bins in setup to avoid warnings.
 
-	* Fix: Typos.
+	* Change: Some language related things.
 
-2004-08-18  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b120
+2005-08-07 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b13
 
-	* Change: Extra whitespace in despam-comments
+	* Fix: Deleting comments via overview when embedded.
 
-	* Fix: Missing echo in save_photos
+2005-08-07 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b12
 
-	* Change: Prevent non-admin users from changing their own usernames via user
-	  preferences
+	* Change: Postnuke related adaptions for new Versions.
+		  - urls
+		  - user / userdb
+		  - language
+		  - stylesheets in wrapper.header
+	  Thanks to msandersen
 
-	* Change: Use & refs in get*Vars to save a miniscule amount of memory
+	* Change: Little more info in footer in Debugmode.
 
-2004-08-18  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b119
+	* Fix: Ecard preview when embedded.
 
-	* Fix: Added a setup option for "slowPhotoCount".  The accurate photo count
-	  on the Gallery index page was a much requested change, however it proved to
-	  be so slow on some machines/Galleries that this will disable it unless
-	  explicitly enabled by the user during setup.  (Galleries with vast numbers
-	  of albums or images could take as long as 30 seconds to load the index, by
-	  user reports)
+	* Fix: Stamp preview when embedded.
 
-2004-08-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b118
+2005-08-06 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b11
 
-	* Fix: Variable ordering bug in user_preferences
+	* Fix: Check for NetPBM and ImageMagick was not fully correct.
 
-2004-08-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b117
+	* Fix: Separator for PATH var under windows is ; not :
 
-        * Fix: Navigation bar width was dependant on whether images were resized or not...
-          this caused albums where resize_size was off to have the table width set to 0.
+	* Fix: Added message for partially found ImageMagick.
 
-        * Fix: Extra-long filename prevention in save_photos.php, as well as verifying
-          that the uploaded file is a valid image format before saving to the temp
-          directory
+2005-08-04 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b10
 
-2004-08-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b116
+	* Fix: Padding for current flag should belong to the td not img.
 
-	* Fix: Enable slideshow in albums containing only sub-albums when
-	  slideshow_recursive is yes.
+	* Change: Added columncount 20 to flags table. removed old unused code.
 
-2004-08-17  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b115
+2005-08-03 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b9
 
-	* Change: Code cleanups in util.php
+	* Fix: Fix in b7 was not good :-|
 
-	* Fix: Moved return out of if clause in getFilesVar() and getEnvVar()
+2005-08-03 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b8
 
-2004-08-17  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b114
+	* Change: Just added a new frame. Thanks to 'demonhood'
 
-	* Fix: Added missing ) in classes/Album.php
+2005-08-03 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b7
 
-2004-08-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b113
+	* Fix: A link to mainpage was shown in slideshow breadcrumb,
+	       regardless wether return to was off.
 
-        * Fix: If 'shutterfly' is set, but not checked, unset it during the
-          album upgrade.  This caused shutterfly to appear even though it wasn't
-          really enabled.
+2005-07-30 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b6
 
-2004-08-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b112
+	* Change: Mailing
+	  o Moved Mail related functions into new lib/mail.php
+	  o Removed gallery_validate_email(), now only use check_email()
+	    - login.php
+	    - register.php
+	    - lib/mail.php
+	    - classes/Album.php
+	    - setup/check_mail.php
+	    - setup/functions.inc
+	 o reordered Notification mail. First now the message, then the disclaimer.
 
-	* Fix: bharat's cache code - Use getRequestVar() instead of
-	  HTTP_GET_VARS and move the return inside the fopen, so that
-	  if it fails for any reason we don't return a blank page
+	* Fix: Mailing
+	  o Recipients ($to) for gallery_mail() where mixed in some cases.
+	   Now always a proper array.
+	  o Emailprefix should be a prefix, not a suffix ;)
+	  o emailLogMessage() was not compliant to gallery_mail(). Tweaked both.
+	  o unhtmlentities() on some email subjects
 
-2004-08-16  Bharat Mediratta  <bharat@menalto.com>  1.5-cvs-b111
+	* Change: Lots of intenting.
 
-	* Modified block-random.php to put the part that retrieves a
-	  photo into a function so that sites can easily modify it to
-	  generate 2 random photos (like we do on gallery.menalto.com)
+	* Change: Added "done" Button in manage_users.php
 
-	* Fixed tools/despam-comments.php to work properly inside
-	  Postnuke (and hopefully all other CMSen)
+2005-07-29 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b5
 
-2004-08-16  Bharat Mediratta  <bharat@menalto.com>  1.5-cvs-b110
+	* Fix: Added missing { in classes/Mail/smtp.php.
+	       Bug sneaked in in php 4.4.0 fixes in 1.5.1-cvs-b61.
 
-        * Added a tool for finding and removing comment spam from your
-          gallery.  You can import and maintain your own blacklist.
-          It's very inefficient, but it works.
+2005-07-29 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b4
 
-2004-08-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b109
+	* Fix: In Photoview, stay in the viewmode (full or normal) that the current photo is.
 
-	* Change: Corrected Userfile check again - checking is_writeable()
-	  by itself wasn't sufficient.
+2005-07-26 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b3
 
-2004-08-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b108
+	* Fix: Fix in RC2-b1 "fixed" too much.
 
-	* Fix: The 'Userfile not writeable' error completely broke new installs where
-	  the userfile doesn't exist yet.
+2005-07-26 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b2
 
-2004-08-15  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b107
+	* Fix: CSS Stylesheets were displayed to early when embedded.
+	       This caused warnings etc. when Environment sends headers.
 
-	* Fix: Remove Debug Code.
+	* Change: Added ... in Navigator to jump to the next Block.
 
-2004-08-15  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b106
+2005-07-24 Jens Tkotz <jens@peino.de> 1.5.1-RC2-cvs-b1
 
-	* Change: Use timestamp for itemCaptureDate. This required a album version bump.
+	* Fix: Embedded Urls where generated wrong.
 
-	* New: Possibility to use capture date as caption.
+2005-07-23  Chris Kelly <ckdake@users.sf.net> 1.5.1-RC1
 
-2004-08-13  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b105
+	* Release: 1.5.1-RC1
 
-	Change: Initial commit of a little Block for Caption Options during upload.
+2005-07-23 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b65
 
-	Fix: strftime uses different format then date (for captions)
+	* Fix: CSS is now loaded correct when embedded.
+	       Now base and embedded.css are loaded when embedded.
 
-2004-08-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b104
+	* Fix: Typo in ecard_form.php
 
-	* Change:  Porting a missed fix forward -
-	  phpBB2/modules.php needs to extract variables even when register_globals
-	  is enabled.
+	* Fix: Colorpicker in albumproperties didnt work when embedded and configured.
 
-2004-08-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b103
+2005-07-22 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b64
 
-	* Change: Support the new-style phpnuke embedding (no 'modload' passed)
+	* Change: translations in ecard_form
 
-	* Change: Correct the sample phpnuke random block
+	* Change: topNavBar in view_photo is now a <div>, not a <table>
 
-2004-08-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b102
+	* Change: simplification of checks for mircothumbs in view_photo
 
-	* Add: block-Random_Image.php.sample for phpnuke
+	* Fix: Borders around bottom Navigation when Mircothumbs off.
+	Found by (Flori)Dave
 
-	* Change: Added gpl.txt to phpBB2/modules.php
+2005-07-20 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b63
 
-2004-08-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b101
+	* FIX: When an admin changed something in his/her userdata, he/she lost the admin status.
+	Thanks to Iain Lea
 
-        * Fix: Print fatal error message instead of obscure PHP error
-          when userDB fails to init before we try and use it.
+	* Fix: Translated JS messages in ecard_form.php
 
-	* Change: Print the correct graphics package path in check_imagemagick.php
+	* Fix: Added ecard files to translation list.
 
-2004-08-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b100
+2005-07-20 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b62
 
-	* Change: Add 'properties' link to the main page for
-	  each root album
+	* Fix: classes/Album.php
+	  - missing $ before a var
+	  - $wmAlphaName is not used when watermarking is wanted to during upload.
 
-	* Change: Make 'apply to subalbums' text clickable
+	* Fix: removed/changed debug Code in lib/url.php
 
-2004-08-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b99
+	* Fix: size attribut in drawSelect2 was not correct handled.
 
-	* Fix: $i got removed from makeGalleryUrl()
+2005-07-19 Jens Tkotz <jens@peino.de> 1.5.1-cvs-b61
 
-	* Change: check isset() on request vars in index.php
+	* Fix: util.php
+	  - Previous change to _getStyleSheetLink failed when setup called from embedded at first time.
+	    Now uses getGalleryBaseUrl()
+	  - generating thumbnails of animated gifs with IM were broken due to wrong order of options.
+	 Found and fixed by Donald Webster.
+	  - where_i_am() now correctly returns "core" when GALLERY_OK is false,
+	    but where are at startpage with an error.
 
-2004-08-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b98
+	* Fix: PHP 4.4.0 fixes in:
+	  - classes/Album.php
+	  - classes/Mail/htmlMimeMail.php
+	  - classes/Mail/smtp.php
+ 	Thanks to Andy Staudacher and Donald Webster
 
-	* Change: Make several files ready for register_globals
-	  photo_owner
-	  search
-	  user_preferences
-	  index
+	* Fix: $style was undefined in lib/lang.php
+	Again Donald ;)
 
-2004-08-09  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b97
+	* Change: Watermarking
+	  - edit_watermark.php
+	  - watermark_album.php
+	  - layout/watermarkform.inc
+	    o indenting
+	    o added some phpdocs
+	    o added for gifs that watermarking on animated gifs is not supported.
+	    o HTML 4.01 validation
+	    o correct validation link
 
-        * Fix: numAccessibleItems was incorrectly checking isHiddenRecurse()
-          for albums.  It needed to just be isHidden()
+	* Change: util.php
+	  - indenting on some functions
+	  - added some phpdocs
+	  - more use of debugMessage()
+	  - moved getGalleryBase() to lib/url.php and renamed to getGalleryBaseUrl()
+	  - moved getGalleryPaths() to lib/url.php and renamed getGalleryPaths() to setGalleryPaths()
+	  - gallery_validation_link() now uses always referer instead
+	    of given filename when not configured.
+	 - added Parameter $keepIndexes to function array_sort_by_fields:
+	   if set to true, then uasort instead of usort is used.
 
-2004-08-08  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b96
+	* Change: removed / from GALLERY_URL constant in index.php
 
-	* New: Delete of multiple users.
+2005-07-15 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b60
 
-	* Changed: Added possibility to transport an array via makeGalleryUrl
+	* Fix: colorpicker was not working in very first setup
+	   - Tweaked makeGalleryURL to return valid URL in config on first setup
+	   - Tweaked makeGalleryURL to work without target
+	   - Tweaked getImagePath() to work with makeGalleryUrl. Also moved to lib/url.php
 
-	* Change: Comment out a button disabling due to JS error.
-	  Note: This needs to be fixed correctly !
+	* Change: Updated Manifest.
 
-2004-08-06  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b95
+	* Fix: Removed <> around From when sending via smtp.
 
-        * Fix: Prevent foreach() error from being displayed when previewing
-          watermark previews.
+2005-07-12  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b59
 
-        * Fix: Logging into Gallery as a non-admin and then trying to reset
-          the admin password failed.  The logged in user was used and the
-          resetadmin file was ignored
+	* Fix: Prevent non-integer data from being passed into get*Tag functions
 
-2004-08-05  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b94
+2005-07-12  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b58
 
-	* Change: Only call srand() once, instead of once at each rand()
-	  location.
+	* Change: Create a new session after destroying the old on logout,
+	  and set $gallery->session->gRedirDone to true to prevent the 'you must be logged in'
+	  notice when logging out of a protected album.
 
-2004-08-05  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b93
+	* Change: Move some of the session creation logic into createGallerySession()
 
-	* Fix: Quote URLs in  block-random for better HTML compliance
+2005-07-11 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b57
 
-2004-08-05  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b92
+	* "Fix": Added function addSearchForm() that return the Form for entering the searchstring.
+		 Benifit is unified layout and reuseability.
+		 While doing this created functions langLeft() and langRight()
+		 which returns "left" or "right" according to direction.
 
-	* Fix: Adjust Subject changes also to SMTP method.
+2005-07-07 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b56
 
-2004-08-05  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b91
+	* Fix: Subjectprefix for emails got lost in b47
 
-	* Fix: Use unhtmlentities for subject and msg in gallery_email()
+	* Change: search.php
+		  - Name of album / photo is now searched also
+		  - lots of indenting
+		  - layout unified like tools/
+		  - removed html_wrap/ header and footer and use comman gallery h/f
 
-	* Fix: Add header for content charset in gallery_email()
+2005-07-07 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b55
 
-2004-08-04  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b90
+	* Fix: if useIcons set to no, options in viewphoto dropdown had brackets []
+	  Thanks to Iain Lea again :)
 
-	* Change: When user wants photo captions to be filedate,
-	  then now the format from config is used.
+2005-07-07 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b54
 
-2004-08-03  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b89
+	* Fix: Missing closing bracket in a gettext call
+	       when creating subject for a mail in classes/Album.php
+	  Thanks to Iain Lea.
 
-	* Fix: Bug #1002883  Albums could be renamed to include a
-		% character in the name which is interpreted as
-		an escape character and causes all kinds of issues
+2005-07-06 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b53
 
-2004-08-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b88
+	* Fix: IP of Commenter was showed to everybody in comments overview.
+	       Now only admins or album owner can see it.
 
-        * Fix: Extract _FILES in phpBB2's modules.php
+2005-07-06 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b52
 
-        * Change: Remove modules.php.gz, add modules.php so that we can track
-          code changes.  There's no real reason for it to be gzip'ed.
-          - Updated HowTo.txt and removed 'unzip'...
+	* Fix: Some Titles in stats where switched.
 
-2004-08-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b87
+	* Change: enhanced detection for nextId
 
-	* Fix: multi_create was b0rked
+	* Change: Lots of indenting
 
-2004-08-02  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b86
+2005-07-05 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b51
 
-	* Change:  Modify all popups to have the same CSS tags so that
-		they will look more uniform and look better with skins.
+	* Fix: When deleting on photolevel, jump to next (or previous if at the end) photo.
+	  Thanks to Iain Lea.
 
-	* Fix: misc. html cleanup including removing center tags and
-		replacing with align="center"
+	* Fix: Sorting in stats was switched.
+	  Also thanks to Iain Lea.
 
-2004-08-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b85
+2005-07-05 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b50
 
-	* Fix: Correct logic in _getStyleSheetLinks
+	* CHANGE: save_photos.php
+		  - Do the copy to local temp dir only for accepted formats (images, movies, archives)
+		  - Use fs_file_get_contents to get the content of the URL
+		  - Changed Regexp to catch files from an URL. (Thanks Valiant and Signe)
+		    o changed acceptableFormatRegexp() in util.php to fit with new regexp
 
-2004-08-02  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b84
+	* Change: phpdoc changes.
 
-	* Change: Added "Return to Gallery" link to find_orphans.php
+2005-07-04 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b49
 
-2004-08-02  Pierre-Luc Paour  <paour@users.sourceforge.net> 1.5-cvs-b83
+	* Fix: Language was not correct set in popups when embedded into mambo
+	  Thanks to Kai Tomalik.
 
-	* Fixed phpBB2 integration (I'd missed the big superglobals change before).
-	* Fixed version number (b82 didn't bump).
+2005-07-04 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b48
 
-2004-08-02  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b82
+	* Change: Added 4th to array_sort_by_fields: caseSensitive
 
-        * Fix: Correct the check_exec function which was being a little too liberal
-          in its regex for exec.  (shell_exec was incorrectly labeled as 'exec')
+	* Change: Display watermakr files alphabetical case insensitve sorted.
 
-        * Fix: Don't display clickable dimensions for movies
+2005-07-04 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b47
 
-        * Fix: Stack the custom fields on top of each other - users were
-          really displeased by the side-by-side view
+	* Change: 3rd Param of array_sort_by_fields is now 'asc' or 'desc' instead of 1/-1.
 
-        * Fix: The admin options on root albums were displaying inside the
-          Mambo UI.
+	* Change: itemOptions in view_photo.php are now a dropdown when no icons are wanted.
+		  Settings at file beginning can force dropdown with icons on.
 
-2004-07-31  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b81
+	* Fix: Found untranslated text (!) in classes/Album.php
+	  Thanks to Gekow.
 
-	* Change: Make edit_appearance compatible with register_globals being
-	  turned off.
+	* New: Use phpDocumentor compatible documenting. Will be completed step by step.
 
-	* Change: Make sessions compatible with no-register_globals
+	* Change: When embeddd into Mambo $mosConfig_lang is now checked.
 
-2004-07-31  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b80
+	* Change: updated Manifest
 
-        * Change: edit_appearance needs to properly handle the empty variable
-          without issuing any PHP notices/warnings
-          (Thanks for finding the issue, Tim)
+	* Fix: reworked bulk user creation.
+	       - register globals
+	       - email problems
 
-2004-07-31  Jens A. Tkotz <jens@peino.de>  1.5-cvs-79
+	* New: Added two more possible formats for bulk user creation.
 
-	 * Fix: Disabling ALL print services in edit_appearance (album properties) did not work.
+	* CHANGE: moved gallery_mail into a wrapper for MAIL class. Removed gallery_smtp
 
-2004-07-31  Jens A. Tkotz <jens@peino.de>  1.5-cvs-78
+	* Fix: use of gallery_error instead of errorRow classes/gallery/UserDB.php
+	       when creating new user.
 
-        * Fix: Removed shorttags in classes/phpbb files
+2005-06-30 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b46
 
-2004-07-30  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b77
+	* Fix: Fieldtype for Comment Overview in Setup.
 
-        * Fix: The admin options on root albums were displaying inside the
-          Mambo UI.
+	* Change: moved /errors/ to includes/errors/
 
-2004-07-29  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b76
+	* Change: Added multiple headings in properties to reduce tabs.
 
-	* Fix: view_comments would display albums without read permissions
-	  (user could not see anything except highlight image and album title)
+2005-06-28 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b45
 
-	* Change: Prevent the old 'example' geeklog_dir from causing a
-	  security violation
+	* Change: Better Text in edit_appearance.php
 
-2004-07-29  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b75
+	* Change: Tweaked placeholder replace.
 
-	* Fix: Typo in config data.
+	* Fix: Removed check for number of custom fields, as it has no default.
 
-2004-07-28  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b74
+	* Fix: Added lib/messages.php to list of translateable files.
 
-	* Change: Switch from rand() to mt_rand() because it's faster,
-	  and more random.  Also, add mt_srand() in places where we
-	  were missing srand() originally.
+	* Fix: function for displaying errorRow was broken.
 
-2004-07-28  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b73
+2005-06-28 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b44
 
-	* Fix: Typo in register.php prevented user registration
+	* Fix: removed some more <> inside a Mail header (see b39)
 
-	* Change: Unset the old invalid geeklog_dir during confirm
+	* Fix: Wrong description in css/screen.css
 
-2004-07-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b72
+2005-06-27 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b43
 
-	* Change: Completely eliminate the "embedded_inside_type" variable,
-	  since *everything* is auto-detected anyway and it really wasn't used.
-	  GeekLog still requires one variable, but it was already dealt with as
-	  needed.
+	* Fix: Browserlanguange 'en' was not correct mapped to en_US.
 
-2004-07-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b71
+	* Fix: Custom Fields were broken in edit_appearance in b39
 
-        * Fix: Prevent the random block from grabbing an album highlight as its
-          image.
+	* Fix: Code for gifified. from b41.
 
-2004-07-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b70
+2005-06-27 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.1-cvs-b42
 
-        * Fix: Mambo popups failed to operate because the option var wasn't
-          set on systems with register_globals disabled - how did this
-          ever work?
+        * Fix: fixed the warning in breadcrumb.php when album disallows
+	  upwards navigation.
 
-        * Fix: Eliminate two shutterfly/print_photos notices in edit_appearance
+2005-06-26 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b41
 
-2004-07-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b69
+	* New: Added icons for item actions. gifified by famous Volksport.
 
-        * Fix: I believe that this should fix the issue that some users have
-          had with extremely large Gallery installations during the upgrade
-          script, where the albums just don't show up on the page at all.
+2005-06-26 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b40
 
-2004-07-27  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b68
+	* Fix: Added  lib/colorpicker.php and  rearrange.php to safeToInclude list in index.php
+	  Thanks to Kai Tomalik
 
-        * Fix: Display the 'view comments in nested album' links for all users
-          in commentboxtop.inc.  This was restricted to admin/owner only, so it
-          broke navigation when view comments was allowed for all users.
+	* Change: Added modified Patch #1085388.
+		  Now we use a multi-select for selecting which items found in url.upload should be uploaded.
+	  Thanks to Jonathan Dowland
 
-        * Change: Fix uninitialized variable notice
+	* Fix: rearrange.php opened wrong when embeded.
+	  Thanks to Kai Tomalik
 
-2004-07-26  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b67
+	* Fix: Again moved Javascript in view_photo.php as it were broken when embedded.
 
-        * Fix: Trim trailing spaces from setup vars where no-trailing-slash is
-          set.  This prevents the "/usr/bin /pnmtojpeg" issue
+	* Change: Tweaked Javascript for (de)selecting all/inverting to work with multi-select.
 
-        * Fix: The addition of the 'view comments' for everyone was exposing
-          hidden photos since view_comments.php had been written with only
-          the owner/admin in mind.
+	* Fix: removed Testcode in setup/config_data.inc that broke config wizard.
 
-2004-07-25  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b66
+2005-06-25 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b39
 
-	* Change: Remove bastard newlines from delete_user and delete_album that were causing
-	  jscript errors in Firefox.
+	* Security FIX !!!: Added check for invalid input for values for sizes in edit_appearance.
+	  	   The values are used in exec() command.
 
-2004-07-25  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b65
+	* Change: outsourced albumProperties from edit_appearance into includes/definitions/albumProperties
 
-	* Fix: In some strange permission sets we got non fitting error messages.
-	  - When upload_tmp_dir is not in open_basedir
-	  - When userdir and /or files in it are is not writeable.
+	* Fix: removed <> around some header fields when sending mails.
+	       This caused Emailadresses to become <Someone <someone@example.com>>
+	       Thanks to JohnH from the forums.
 
-2004-07-24  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b64
+	* Fix: Javascript before doctype in view_photo.php
+	       Thanks to Gaille.
 
-        * Fix: Redirect in multi_create_user didnt worked after successfull adding.
-               Reason: doctype header was set before redirect header.
+	* Change: Some CSS for tabs
 
-2004-07-23  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b63
+	* Change: lib/albumItem.php:
+		  - removed unused ifs
+		  - Text changes. Removed %s (label) at a couple commands.
+		  - Added icon for watermarks.
 
-	* Fix: Skins will be ignored when embedded.  This was causing a lot
-	  of display issues for users due to skin colors conflicting with
-	  embedding-system colors.
+	* Change: Tweaked infoLine() function. Now also acceptes array of messages.
 
-2004-07-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b62
+	* New: Added function sanitycheck in lib/valchecks.php
 
-        * Fix?: Revert an earlier checkin (b100?) that prevented a PHP notice
-          when first loading sessions while embedded.  Some users report not
-          getting a session at all in postnuke.  Since postnuke was the original
-          problem, I'm confused, but this will work.  Supressing the notice using
-          @session_start()
+	* Fix: Added more missing files to translation list for core.
 
-2004-07-22  Beckett Madden-Woods  <beckett@beckettmw.com> 1.5-cvs-b61
+	* Changes: Change from "off" to 0 for no image size limitations
 
-	* html_wrap/inline_imagewrap.inc: Removed showstopping typo
+	* Fix: Display of voting values.
 
-2004-07-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b60
 
-        * Change: Remove the != SUNOS line from lib/lang.php
-          We're under the assumption that it was added based on a bogus
-          bug report some time ago because all docs (and user reports)
-          claim that the LANG= line is necessary.
+2005-06-23 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b38
 
-2004-07-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b59
+	* Fix: Bug #1217095, removed double stripslashes that breakes e.g. chinese.
 
-	* Fix: Missing ]
+	* Fix: Added missing files to translation list for core.
 
-2004-07-22 Jens A. Tkotz <jens@peino.de> 1.5-cvs-b58
+2005-06-23  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b37
 
-	* Fix: Show Album Summary only if it exists.
+	* Change: getRequestVar to stripslashes recursively into arrays
 
-	* Fix: wrong html around Album Summary.
+2005-06-21 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b36
 
-	* Fix: Correct .vassummary class for all skins.
+	* Change: Possibility to set columnCount to -1 for ALL elements in one row.
+		  (Fixes unnice lang selector with flags)
 
-2004-07-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b57
+	* Fix: Comments display was borked when not logged with admin/owner permission.
 
-	* Change: Better handling of the onsubmit/double-clicking issue
-	  utilizing an 'action' input which is changed depending on
-	  which button was clicked.
+	* Fix: added <br clear="all"> under language selector for proper table rendering in FF
 
-2004-07-22 Jens A. Tkotz <jens@peino.de> 1.5-cvs-b56
+2005-06-21 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b35
 
-	* Change: Print Extra fields above comments in view_photo
+	* New: Added slightly modified Patch #875893 from Alan Harder.
+	       This adds a popup in which you can nicely reorder your item via clicking.
 
-	* New: Added css for album summary
+2005-06-21 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b34
 
-	* Change: Print Album summary above voting results and button
+	* Change: enhanced fitToWindow for panorama photos.
+		  Found by 'bolet' from the forums.
 
-	* Change: Cleanup and fixed irritating error messages in login
+2005-06-20 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b33
 
-2004-07-22  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b55
+	* Fix: Override in getIconText
 
-	* Fix: Unset variable prevention
+	* Change: css class in layout/navmicro.inc
 
-	* Fix: b0rked list() in last checkin
+	* Change: css for iconLinks in view_photo.php and removed sorting for actions.
 
-2004-07-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b54
+	* Change: replaced "delete comment" under each comment with a little icon to save space.
+		  And css change.
 
-	* Change: Partial de-globalization of config wizard.
+2005-06-19 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b32
 
-2004-07-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b53
+	* Change: moved some messages functions into lib/messages.php
+		  created new message functions for:
+		  - infolines
+		  - debugmessages
 
-	* Change: 'No files' to 'All files', and remove a stray binary
-	  char.
+	* Change: Added infoline and tweaked Emailtext in create_user.php
 
-2004-07-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b52
+	* Change: Added infoline in modify_user.php
 
-	* Change: Whitespace readability changes
+	* Change: Modified config var "debug" yes/no to "debuglevel" 0 means no debug.
+		  Tweaked isDebugging to recognize the level.
+		  Now you can give a Parameter to ask if debug in in given level.
 
-	* Change: Prevent unset variable notices from PHP
+	* Change: stats-wizard.php, var 'sgr' renamed to 'showGrid'
 
-2004-07-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b51
+	* CHANGE: stats-php
+		  - lots of indenting
+		  - The complete statstable is now generated via class galleryTable !!
+		    o Thumbs are now just as they are, not anymore like in the albums.
+		    o show Commentes code tweaked to work with galleryTable
+		  - readded Grid mode, old code removed as the rendering is now done by galleryTable
+		  - replace debug code with much smarter debugMessage()
+		  - remove all 7 usort functions, replaced by one new
+		    array_sort_by_fields() function in util.php
 
-	* Change: Prevent unset variable notices from PHP
+		  - renamed var 'rev' to 'reverse'
 
-2004-07-21  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b50
+	* Change: util.php
+		  - lots of indenting
+		  - tweaked getIconText(),
+		    o new parameter to override the iconMode
+		    o new parameter to use the [] around the Text when no icon is used.
+		  - Tweaked makeIconMenu(), added parameter to force a linebreak after the half of elements
 
-	* Change:  Simplify the output for the confirm page of the
-	  config wizard.  This allows us to use only one output buffer,
-	  requiring less memory, and chance for error.
+	* Change: Added lib/AlbumItem.php
+		  - New function getItemActions(),
+		    returns an array with all possible albumItem actions
+		  - New function showComments, return HTML with all comments for an item.
 
-	  Errors are now placed inline with the normal config.php data,
-	  and prepended with //, just like the "optional" lines.
+	* Change: view_album.php
+		  - Use of getItemActions() under each thumb.
+		  - Show Navigator only if there is something to navigate.
 
-2004-07-20  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b49
+        * Change: view_photo.php
+                  - Use of getItemActions() under each thumb.
+                  - Show alle item actions as links (with or with out icons)
 
-	* Change: getRequestVar, getEnvVar, getFilesVar now accept string arrays
+	* Change: Tweaked class galleryTable
+		  - setAttr
+		  - setColumnCount
+		  - setHeaders
+		  - setCaption
+		  - adapted render()
 
-	* Change: Correct the default value for the new SMTP option
+	* Change: Added infoline for debug info in html_wrap/wrapper.footer.default
 
-2004-07-21  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b48
+2005-06-13 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b31
 
-	* Change: show "highlight" under images when logged in as an admin
-		if the image is a highlight
+	* Fix: When copying a photo to an album where "add to beginning" is enabled,
+	       the additional Data was still added to last item.
+	  Thanks to Johnstar.
 
-2004-07-20  Pierre-Luc Paour  <paour@users.sourceforge.net> 1.5-cvs-b47
+2005-06-09 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b30
 
-	* Merged in changes made to 1.4.4 branch, except for what ckdake
-	  already merged (thanks ckdake).
-	* Fixed applets when Gallery is embedded in phpBB2.
+	* Fix: Navigator change was in albums.php was wrong.
 
-2004-07-20  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b46
+2005-06-09 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b29
 
-        * Change: Users can specificy a mail server to use other than
-		one running on the local machine.
+	* Change: Only show Navigator if there is something to navigate in:
+		- albums.php
 
-2004-07-20  Chris Kelly <ckdake@users.sf.net> 1.5-cvs-b45
+	* Change: Add Errormessage for more info to user in copy_photo.php
 
-	* Change: When editing captions, provide a popup for each image to
-		show the sized image
+	* Change: Tweaked confusing mailmessage in multi_create_user.php
 
-2004-07-20  Pierre-Luc Paour  <paour@users.sourceforge.net> 1.5-cvs-b44
+	* Fix: Show "Apply to nested albums" only if we are resizing all elements of in album in resize_photo.php
 
-	* Fix: hidden albums are now indicated as such in fetch-album-images
-	  (GR protocol)
+	* Fix: Highlights of albums where the higlight comes from a subalbum
+	       with non ascii chars where broken because the URL was not urlencoded.
 
-2004-07-20  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b43
+	* Fix: Typo in layout/navmicro.inc (found by Gaile)
 
-	* Change: Add 'alternate' link to the header if RSS is enabled
+2005-05-27  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b28
 
-2004-07-20  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b42
+	* Fix: edit_captions was not displaying error messages due to variable
+	  misnaming.
 
-	* Change: Check for fitToWindow before outputting the 'onclick'
-	  attribute in view_photo.
+2005-05-24 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b27
 
-2004-07-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b41
+	* Fix: use_exif was not broken in album properties.
+	  Found by Johan Nenni
 
-	* Change: Unglobalize login.php
+	* Change: removed class tab-text, the font color is now controlled by the tab itself.
 
-2004-07-19  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b40
+2005-05-23 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b26
 
-	* Change: Since we no longer do shutterfly donations,
-	  $gallery->app->default["print_photos"] can end up being ""
-	  which causes the key() in view_photo to fail.  This prevents
-	  the error message from key() and prevents printing of a blank
-	  print href.
+	* Fix: register globals in setup/check_versions.php
 
-2004-07-19 JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b39
+2005-05-23 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b25
 
-	* Change: New variable to pull the thumsize to create a
-		  defaultwidth and height for the divCell to align everything up.
+	* NEW: Added Donald Websters Microthumb Code. => album version and config bump.
 
-2004-07-19 Jens A. Tkotz <jens@peino.de> 1.5-cvs-b38
+	* Change: removed ml_pulldown.inc,
+		  instead created function languageSelector() in lang.php
 
-	* Change: Added link to JoEllen Drazans Skin Page in ConfigWizard.
+	* Change: Unified layout for all admin pages.
 
-2004-07-18 Jens A. Tkotz <jens@peino.de> 1.5-cvs-b37
+	* Change: Enhanced classes/HTML/table.php
 
-	* Change: Accidently reverted 1.5-cvs-b12 rereverted ;)
+2005-05-20 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.1-cvs-b24
 
-2004-07-18 Jens A. Tkotz <jens@peino.de> ; JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b36
+	* Change: Applets version 1.4.2-b20.
 
-	* Fix: Added css classes to have "old" layout.
+2005-05-10 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b23
 
-	* New: Added version number and Last Update to Skins.
+	* Change: Change input for count of files/meta files a input box instead of comboxbox
 
-2004-07-18 Jens A. Tkotz <jens@peino.de> ; JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b35
+	* New: added file:lib/valchecks.php with function isValidInteger. Its included via util.php.
 
-	* Change: Continue Skin Changes.
+2005-05-09  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b22
 
-	* New: added "bars002" as reference skin.
+	* Change:  Config wiz typo
 
-2004-07-18  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b34
+2005-05-09 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b21
 
-	* Change: Minor fix for the view_album optimizations
+	* Change: Merged Poll options and Custom fields into properties
 
-2004-07-17  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b33
+	* New: Made folder include/definitions, which is supposed to contain static definition.
+	       Currently added: (print) Services
 
-	* Change: Fix pseudo-register_globals to allow login/etc on PHP5
-	  until it goes away.
+	* Change: Minor GUI changes.
 
-2004-07-18 Jens A. Tkotz <jens@peino.de> ; JoEllen Drazan <skins@pownuke.com> 1.5-cvs-b32
+	* New: Added a classes/HTML folder, which is supposed to contain classes and method for html handling.
+	       Currently added is only a very rudimental table class :)
 
-	* New: Added possibility to use your own header footer via a template file.
+2005-05-08 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b20
 
-2004-07-17 Jens A. Tkotz <jens@peino.de>  1.5-cvs-b31
+	* Fix: Custom fields were not set recursively (register globals issue)
 
-	* Fix: bad quoting in util.php.
+	* Fix: remove Debug Code.
 
-2004-07-17 Jens A. Tkotz <jens@peino.de>  1.5-cvs-b30
+2005-05-06 Jens Tkotz <jens@peino.de>  1.5.1-cvs-b19
 
-	Change: No more $HTTP*.
+	* Fix: RFE #1192462  (catch invalid manuell input of $set_AlbumListPage and $page via URL)
 
-2004-07-17 Jens A. Tkotz <jens@peino.de>  1.5-cvs-b29
+	* Change: minor tweak of getAlbum
 
-	* Change: Switched more $HTTP Vars to superglobals. (not all)
+2005-05-02 Stupid Tkotz <jens@peino.de>  1.5.1-cvs-b18
 
-2004-07-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b28
+	* Fix: More typos. Sorry, next time i pay more attention.
 
-	* Change: Revert last change to album_permissions
+2005-05-02 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b17
 
-	* Change: Fix PHP5 - they stopped using the old-style GET and POST
-	  globals, and have switched to SuperGlobals only.  A couple session
-	  and form functions needed adapting.
+	* Fix: typo in classes/Album.php introduced in b16
 
-2004-07-16  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b27
+2005-05-02 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b16
 
-	* Change: album_permissions - if $gallery->album is not set, but
-	  set_albumName is, load it.
+	* Change: Added 'nobody' as default permission set.
+ 	Thanks to Andrew A. Chen for this idea.
 
-2004-07-16 Jens A. Tkotz <jens@peino.de>  1.5-cvs-b26
+2005-04-28 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b15
 
-        * Change: Adapted contrib/phpBB2/modules.php to fit with phpBB2 2.0.9
+	Fix: More spelling and validation fixes by Gaile in base.css
 
-        * Fix: added missing ; after a &quot in setup/configdata
+	Fix: Initialtab was not correct set in edit_apperance
 
-	* Fix: change $noHeader to sendHeader in lib/lang.php and init with true instead false.
-               Caught by Joerg Holzapfel
+	Fix: When editing properties via startpage the properties page broke after 2 apply.
 
-	* Change: Switch to superglobals in lib/lang.php
+2005-04-27 Pierre-Luc Paour <paour@users.sourceforge.net>  1.5.1-cvs-b14
 
-	* New: Added parameter for groups and fields in configwizard,
-	       that adds a little red start to notify user a required field.
+	* Fix: htmlMimeMail.php was checked in with the wrong line endings
+	  which was causing the CVS build to fail on Windows.
 
-2004-07-15  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b25
+2005-04-25 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b13
 
-	* Change: We no longer use the 'donation' option with Shutterfly,
-	  since we have an official affiliate agreement with them, now.
-	  - Remove the 'donation' option from the config wizard
-	  - Remove the 'donation' option from the album properties
-	  - Rev the album version and remove the donation flag
-	  - Fix setup text about donations/shutterfly
+	* Fix: typos
 
-	* Change: Minor text tweak for upgrade album text in albums.php
+	* Fix: Missing quoting in colorpicker.php
 
-	* Change: Fix unset variable error in print code.
+2005-04-25 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b12
 
-2004-07-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b24
+	* Fix: css and html fixes. (found by Gaile)
 
-	* Change: Don't try and create clickable dimensions on albums.
+2005-04-22 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b11
 
-2004-07-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b23
+	* New: Added nice colorpicker for easy color setting.
+	  Note: Coded and pictures were taken from the Horde Project (http://www.horde.org)
 
-	* Change: Add a couple missing parens
+	* Fix: Use of depricated var in html/userData.inc
 
-2004-07-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b22
+	* Change: Added hidden fields for sectionTabs that contains the current tab.
+		  This enables us to highlight it, when reloading the page.
 
-	* Change: Standardize on getRequestVar instead of Get/Post/Cookie
+	* Change: Little Layout change in layout/commentdraw.inc
 
-	* Change: $_SERVER is a trusted source.. no need to sanitize.
+	* Change: former solution for Jmullan, broke HTML validality.
+		  New solution: tweaked getPhotoTag() to accept attrs.
 
-2004-07-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b21
+2005-04-21 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b10
 
-	* Change: get(Request|Get|Post|Files|Env|Server)Vars() functions.
-	  TODO - Add XSS filtering
+	* Fix: eCard setting from setup was not used for new albums (thanks Judith)
 
-2004-07-14 Jens A. Tkotz <jens@peino.de>  1.5-cvs-b20
+	* Change: Added tabindex order in eCard Form and focus on first field.
 
-	* Change: Tweaked modules.php again.
+	* Change: Admins can now created directly as new user.
 
-2004-07-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b19
+	* New: New flag for user to allow or disallow them to change their password.
+	  Note: User version bump. "Old" user automatically get this to true.
 
-	* Change: Forgot a !
+	* Change: Stay in modify user view after having modified a user.
 
-2004-07-14  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b18
+	* New: added id="galleryImage" to img tags in view_photo (for jmullan)
 
-	* Change: First minor changes for 1.5.  Set the required
-	  PHP version to 4.1.0, and add a setup function to check for
-	  the status of register_globals.
+	* Fix: View Comments for not loggedIn User where displayed even if setting in setup was off,
+	       but everybody is allowed to see comments.
 
-2004-07-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b17
+	* "Fix": removed select:focus css (except in Jenskin) as FF on Linux is buggy on this.
 
-	* Change: Give clickable dimensions their own table row to prevent
-	  a scenario where they appear *beside* the image
+2005-04-20 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b9
 
-2004-07-14 Jens A. Tkotz <jens@peino.de>  1.5-cvs-b16
+	* Fix: Create user were b0rked since b2.
 
-	Fix: Use getImagePath for voting result bars.
-	     Voting bars were not skinable. (caught by Jade)
+2005-04-20 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b8
 
-	Fix: Adapted modules.php for phpBB2 2.0.9
+	* Fix: Wrong use of check for itemOwner caused error
+	       when user wants to see all comments in some circumstances.
 
-2004-07-13  Alan Harder <alan.harder@sun.com>  1.5-cvs-b15
+2005-04-19 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b7
 
-	* $album->save() after rehighlight in makeThumbnail() so new size is saved.
+	* Fix: Wrong require in setup let Gallery config break on debian (thanks to tomukas)
 
-2004-07-13  Jens A. Tkotz <jens@peino.de>  1.5-cvs-b14
+	* Fix: critical typo in classes/Album.php
 
-	* Fix: Added missing " in albums.php.
-	  This caused every link after find orphans to be b0rked.
+2005-04-19 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b6
 
-	* Fix: Added missing / to link to configwizard.
+	* Change: Use Name and Email of logged in users as default for Sender in ecards.
 
-2004-07-13  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b13
+	* Change: Added Subject line for ecards.
 
-	* Change: Add a 'rssMaxAlbums' option to the RSS page in the config wizard,
-	  specifying the maximum number of changed albums to be returned in
-	  the feed.  Defaults to 25.
+	* Fix: ecard enable/disable setting was not set for nested albums.
 
-	* Change: Try and optimize the number of times we use isHiddenRecurse and
-	  canReadRecurse when populating the RSS data
+2005-04-18 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b5
 
-2004-07-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b12
+	* Change: Added new parameter to makeIconMenu for alignment
 
-	* Change: Get rid of the 'FRAME' alt= tags because it's valid HTML
-	  with alt="", and jmullan's right.. they look like ass in lynx.
+	* Change: Use IconMenu in view_photo for adminText
 
-2004-07-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b11
+	* Change: Make eCards an album option. (needs album version bump)
 
-	* Change: Hidden images/albums could be *too* hidden (owner couldn't see them)
+	* Fix: Added ecard_form.php to allowed include list.
 
-	* Change: slideshow validation URL is based on whether you're looking at an
-	  album, or the gallery-wide show.
+	* Change: Little layout, text and css and html validation for ecard_form.php
 
-	* Typo: Another photoAlbumUrl -> photoAlbumURL
-	  (so much for variables being case insensitive)
+	* Fix: ecards opened popup with environment when Gallery is embedded.
 
-2004-07-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b10
+2005-04-18 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b4
 
-	* Typo: photoAlbumURL not photoAlbumUrl
+	* Fix: removed little debug code.
 
-2004-07-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b9
+2005-04-17 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b3
 
-	* Change: $adminCommands links now use CSS to prevent breaks in
-	  two-word links. (e.g. "[manage users]")
+	* Fix: invalid css in standalone css and some skins. (Thanks to pixelpoet)
 
-	* Change: Change 'one' to '1' to maintain consistancy
+	* Change: Added cellpadding="0" cellspacing="0" to starting tables in html_wrap/*.header.default
 
-	* Change: Clear up to possible PHP notices for use_exif being
-	  unset.
+2005-04-16 Jens A. Tkotz <jens@peino.de>  1.5.1-cvs-b2
 
-2004-07-11  Jens A. Tkotz <jens@peino.de> 1.5-cvs-b8
+	* Fix: HTML validation in view_photo.php, login.php
 
-	*  Fix: Links to config wizard and find orphans were not working embedded.
-		1.) Changed Link to wizard to direct Url
-		2.) Added tools/find_orphans.php to allowed list and modified the file itself,
-		    to work embedded.
+	* Change: Added parameter to drawSelect for pretty printing.
 
-2004-07-11  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b7
+	* Change: Album properties are displayed in tabs.
 
-	* Change: Check the UserDB for consistancy before logging into
-	  the config wizard.
+	* CHANGE: data structure of print services.
+		  reconfig forced and album version bumped.
 
-2004-07-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b6
+	  Note: code not finished ! Previous Values from config for print services not used.
 
-	* Change: Incorrect variable assignment in view_album optimization
-	  could yield hidden photos viewable
+	* Change: eCard template changes
 
-2004-07-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b5
+	* Change: Modified eCard feature...
 
-	* Change: Center the block-random image, to match the text
+	* Change: Show Albumnames in pulldown for reorder album.
 
-2004-07-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b4
+	* New: Added eCard Feature. (not completed yet.)
 
-	* Change: Update security message to mention secure.sh, and only
-	  appear on non-Windows OSes.
+	* New: Added more placeholders in Welcome Msg. Used Patch #847436 as inspiration.
 
-2004-07-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b3
+	* Change: Inform user when display of exifdate is enabled, but nothing found.
+	  (to avoid confusion)
 
-	* Change: Logout with relative URLs would return a redirect error
-	  due to doubling of the photoAlbumUrl
+	* Change: Added Patch #842580 from Kennichi Uehara 'email transfer encoding to base64'
 
-2004-07-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b2
+2005-04-14  Jay Rossiter <cryptographite@users.sf.net>  1.5.1-cvs-b1
 
-	* Change: Another case of relying on the submit button for a value,
-	  but it's now disabled
+	* Fix: Address PHP5 behavior change to unsetting string values
 
-2004-07-10  Jay Rossiter <cryptographite@users.sf.net>  1.5-cvs-b1
+2005-04-13  Chris Kelly <ckdake@users.sf.net>  1.5
 
-	* Change: (1.4.4RC1) Check POST vars for $include before resetting to 'albums.php'
+	* 1.5 Release
 
 FOR THE REST OF THE CHANGELOG, SEE ChangeLog.archive.gz
diff -Naur gallery-1.5.1/ChangeLog.archive.gz gallery-1.5.2/ChangeLog.archive.gz
--- gallery-1.5.1/ChangeLog.archive.gz	2004-07-11 07:05:53.000000000 +0200
+++ gallery-1.5.2/ChangeLog.archive.gz	2005-09-22 23:27:47.000000000 +0200
@@ -1,350 +1,426 @@
-‹©Êð@ ChangeLog.archive ¬\ksÛF²ýlÿŠ1ãŠ¤-’")YÇö-;Ž³~•eÇ_RÅ!98ƒÅ ¢˜_Ow^’’ÕJJU6"	fúqúô;ö£ÃÁèX©ÏFç¹¼/cõ9re®Ô³Œþûséuî‡Æzîò…Z]¼PãáþpŸûÁl²ôðáƒ©_ÌÅS•-³W¯&Ê—YæòBáeYª__²ˆÒTç›i®W®Ð“!nQÖ­U®‹2·^Å;‰¥/Š<šÎN¯ŒUQ:+WÓ,w™Î£ÿÛ‚*uv¡sU,s·ö*Rë(·Æ.Ôz©­J/èƒ^eÅF–öNZù-Ú¨/Î{S`‘gq¾É
-·È£l‰/*©ÌE]i²4N–ÿT‡ÃÈ&Ê§&Ñ~‰cò'åñrØ¹GÁ^µ:piTG›´g|tÅË{ÚÝAç¡¢3]Éo8w_Þi„O¼Ýlé
-W‘¦(ÞªVz¨ÔWú35‹e¡3Ÿë\ÛX{5ÓÅZCÔ¸r¥â›JT¥â„¹áÒ:8]uS¡ü™±+n¿ÒžäÕ§›s½åIŸ¹Ž¼ãå6
-’,ÓÄnxÊpçžDó¤#šWQ|“íeQ­¼Â³±—…Ù¾¯çíwž÷»ÎÍ|£±Enï°ëõ…ŽñÑQQò&èËx©ã3lîxO›Ùëlæë&s¤š—d
-ï
-½êüú2IØ6UáÔÜØdêò?‘ÊImð`;7p4óä'¬ Ù{Úê¤³™·æ\«/0S·R¯R±Dae.nÄö6K5ï$†+iU˜•veÑÚÐÑ64îlèsîð°Ž_,U™a…„f näÕšl-—¾N]”À1²Ü¸œý
-†^Z*c½ÈM±9!mwÑâu™_½¤`)ÔãàÏƒìÈ´"›L™³ñ—ô¤™f§ltüôiw9x\
-œ%›3-³ÀêW—ºb$þ¯>ÿú~[}ii{•6ü=	tÅ4£àôÌà="ëÄxzrB–Ýx‘G°	`äæò}Û~Ûv¨Ô«%Ð Ptbðß"B œñW?¯´RàdìVÝø¸wÌ[|ùíë¯Ÿ¾œ>UŸfóÒÇQ@SA‘Iá!I®½ïˆeïöbÙ;êˆå®Ü}×Õ.ø»FX$Mâ	‹}R™Òÿ)†ŠañsþæùóK;Ópø¯g®øK=ûÿœAÆn˜èK‡?lÈÁkgu8X=„§G£˜ÝZ~róå%ž…õ5ˆìŽül—Í§*ò3ôkƒ¯ÍàUY‰rÍgôdÔL Ã•)†<x€‹à²ˆ\žV¡²\V’ÙáÇ¥Á¬bÊ‚uL¼TÆ³OÂ…|9ã%›SŽï Þn¬‚`(`Meî‡é†0„™O¹X2{P5`W„CÕ†±D 
-¾ÊÀ‘£!7Ù¨e„%¯^e,_âN 5÷t‰‚Ç‡G{ã'â¿[Ð	kKÍÓhái×Agb=ü£ší‰ëÆ0lG)ihÅ·d¹>'…&®Äƒ851èÅâ*ëò[Dî9”KD39Ÿ†FTr›–ÁƒY–k½•kzÙKéƒµÑÅÎ=‰CâðñÁñd|qñÎq ,B«™±€Sè¬XFtR˜m.Šø/Ì@_®”ð<_æ"@DIFŸ,*ØBÙã‰vteó6ë³(Ö}YÁx™œcÿØ€5ZDÆö!p´`/ÕEü˜´ÆûËörCÿž4ð±,Vé" .M;0ÄiO¼1¤e1UÏ9ìî ˆnPÿ€ÍåÊ‰*l¹úÝxƒCQØôÃ âø·4I$$	zäcO2$³A0ýfÜ‹ßˆ4‰b\6¼´ÿÊ©¿ÏŽùHô
-n­¼æ–9•õ)ÔÏî”-óÈ“ù´¿í#4Gñí‰ú£Ggþñ?¥+~âÈÙY½oíyrf79îâ$$‚ÏÔÚÁ¯_?¼WH-\"Ì'  ï ‹†VD3e£s³ˆ³#Îg&›¼«q,RÖo§‚þaFììssqOgíèŽ0–Xò	"¶ãß- °¦¯?Q&$W‡Ÿ@Ö\•‰	‡ð0\¡1¼Ri—ÁÔV—Uv33›´¢ù;«Þ[^ô™è1Û…Ms†GÏrøã7°û• öìDNÚ7ÿÃ¸µŠ63ð é¶¶Óo§Cøñ‘‚¿%zúúÍðÝé§5.ƒ–òUßN—kò|Ò$­„4Ñ—¦`õW]S
-‰°PÚ¤‹oo,þˆ5K›»Ü3äCõ†‹HÈK-${wk-²\`!¶MU‡sb9ÙÔýç_ô’cX­‘G… zôH~kiàxÒÍèÏ^O%ØšÌÇá¢Í!vl@_àÒ§e²R–9_ØcxøDm9Ù#|£´{‹yR(¬"ô	ŸÎôöÍ×†Ù«í(jn7]¤n¥~§ßp¢
-/á‰´ ÑûäÎj–;<—êO[ÆÆØ’Þº@î(¯''/ »YÁYØ‡Ø¢|¡WR³¢h~¦NÊ†MÚ¦íW¹VëLhßm×\±€êåX°l6²E’A\\8—àŸÑ2‰¤sÓæ¹Öi¶±/'íCÞáÐÝZÃ·,?59ÐÂV+¤ GæN¹ž§½tÅþ”`‹½OxR¨Ò¥›NpóÑ†ÎÁ¾(œ@­\2Íõ:Örëå#Ýyöäù­fNmÿ¦·#lð-#@ºO6dº¿Ö5Øã4™ËÊŒÑÊ‘½iŽÇ@ÒÌÏªS'ÞY"–b”ÁcMO	B¸~®‰µò…Ë%ÍŽx¾…³ŠúW`coÅp¾å©@'®ãí5Ë~]:œÀÔ‹k
-×‰¬Vh³ž¥-¦=>¨% ¦:Ç°\uKbËù‚[Xó—&;\8Ãää|ÓG½JÎ!ÐØ€o!¢°¬( Ë£Gƒ»ù¹Ø¬\ ¬%º¥î¥^Zä¹kŠ	‚–…ÎÝÆ–H~ÞDKwMþ<™\“ìpRRU~)úIep"äZeÑŠ‰LÞI^$Sfï\räÝÁ4¥~	Æ‘•"%‚$•A,	´'ÈØ#»G¹µ3v©¥z]®f@E[Ò@»GªNèÆ"­A@ <f zýŠ‘ç¤Æ¸ªÅ:•ý*3›—–ù Áù¢§àEé+Žºq%9£ýÏ hf-ŒÕ÷uÄ.U½G .¶ýÚaBÙ“Bgø†Ž±,ŠìéînUŽnÕSv9JQ6öÉžþ(}†ç&ÕÏ	Â—™øÇìùÑx<Þûÿ·u’'·?É¸ËIƒ?{.çe)JJ­}õÛ'/¶î(ò%TR…‰jiPˆ”ô†]Bò!"ï	LWnuë˜âv[MAU—Îy38wéçK,UPj#¨B‚8ÖoGn[P
-±âL(ä!LnÈç8·a»ÝŽo€S”T.TUoµ>{ï÷¤i!R€»§Ýzò€Šsõ•9û+ˆ©xB",ËnZ÷5*çë¦,ËÁxÞDÌ/ì²ZòG¾Bõ„,ÕÎÞç¶zÍy½|ÙW°XjV”‘sË½`"ú3~É;®niûõþdÔ%O§È»©j‰ØU/-,ÇLÉÛwWÌLaN‚vq=‡È´—jA¸¾³ø'ËÈ†É>5FIó<€¹Ô.fš4Äqó;ÅÆê›>“°ºhU¯*jñ‚:éu·(±dŽ\°+¶°ä®”öS~Pÿáøðhr|ø—aïq¼’ŸIé…H*‹^§óŠ6KTíÄœ=È&Çqþ­©¶ó,>K@$þQ] ÁÀ$TØ¥ñdE‘›I–ž+t\2l.óJŒ:O¾ñÙ[©Š® ýÜjÅÉÔgê¥Eô0ÙÜ%e,<	7ŽZÏ›Ü­#=W› W½¬R(âv§»Sµ§Y„' ˜aw'·v–nlÒqJ§€n´©Æªl‹¯8 „†ÅN$ÈªÓÊh®ËSÕ;ò†P£+RŽ#á…eÝ>ÃáÅ,ŠÏW<øÛ@®q–¸ÐöIÝ:éq.Þƒqà“æ;IáfZWôúJqÓ‚½›ÄFlÉgŽéŸ§t4€ßGÊ_¹ª&òwÞtúêÏôIŽÊn	p¨î²«£¿Ï°¥§õxµ‘v`ÉPÁÃxRE¿œœ	­k©9‘wÄÍs!Ï5i7—û­¥P*/„áž,M
-m)gèsnÕS÷tâîÃ—¿y¸áÝÔ÷ç<JÊá84³åÎNnŠ£ƒÊ æ ?€ü¤>3³öÑ©¡/ ”‡
-=U.6‰k,¨fùÎ|¨åLU$·¶Tk¸Ét ”…3srH1Y·‹Jƒ kžªý[ç"áG.
-î‘Ú¦ÎqDd|E'U<Ï½&ê[´}ì†Q·@ÙÝÚåÉ·fœ5pr/5HQ?Gå£9ÅoÊ‘+æt„þ¯¬¢YI™G}ß%ZëšlàÊ`{õiªí‚:¶T_w\œ¨&4 –”t¦†z?Íx4kê†È»¦Uaøš-ÑLRjèDŠAµd˜J[ŸÛ„} c–-zd=ãj‡|lËPÕl»-‹{:A7Qþ|½Yòsºø}pñ„ùgÇCRÉfËE1]¦(å,ÄB›H‘Hð÷à½ý <vM±ñe(¦³ˆéPTB”Ü±Ÿ_Ëa+Df9ùXF¸¤%˜;4sFãFµŸ$UyEõ`ß4ýª¢g7o%ïèý‘ÿa…ä†P\w	6IAÁ?Ø¶ß1%–1Ráî\#‰°|d•–‡ïÐZ]‰Õ%*Ñhj!Î£2ómÑØFŽÝ*îõ¸ê0sÉ¦×ÚèíK±ããV¸?8í´Qd•!›¢\^b‡K¨ÃÏÆµk5±#ê°C¨3"<ÒæeÙ’ùWíâbmâvyc|xÓ¨4>n8¾L¥ÅÌ<óÒþTÛ§E™™dú'=páŠ0Ê¸ÓÜ^ð˜kð/?¾Vƒ6(lCý¦’gCisáid®·þ—·’iÊ4‰‡*mRœþÐ“«)Rñ€žÌéP§•­FûÛIìà=’_³—Ð ™„í")=©ê»-sn¯T• »[nÎ.¦Õ÷öüç·/ï‰pœÏÌÉC˜`]h‹ó4fK·¯/ŒŸ4û’Ã°†„¿÷8$·¿G9ƒ[¼ò†Y2ÂÅ,ª¾ßÕ_â_P´leÙàE³:R_j60<óÊJÂ´¬“aS*=vŠOÝˆ^uf™‡
-wìÜ™‘N“Œë&É4È²; Û"Ã<ËÉÑçÄè|LÜ'äøÖHàD¬èUªOÄdý)Õq¹‚HÖsFùÐª´87’ ÆÇàÄ°£Ë›ó~§ƒreñiþ’~)ÁOx*-M‹òë«ˆˆ‡2»gÙ`o”„U7R«„²™PB£5/ú9Ë‘d¥öÂN¯ž¿”J0nNÂ@Vü
-º#ž‰›™)¸š‚†ÆÌlg„ôŽöÝ!%—{ÒÌ xbQ[¿FëJ;S	;-uéddŸe^|ƒ€ŸÃ¼k“ËS0é¹ùœ]mD@^ä<¾’¢¸“8Xx¹Ò9µ‚fVà"Ò»µµ%²CÈ•ë¤`ºk£s.µÎôÂXjÁ]ûëÊ$Iªÿögmþ­S–«}-çKdi\°$3œ±$b—:ï–Ï"ìÓXAßfÒ¾ÕA)Ö¥«(]G›fdŸJÒ²½UÙâ¼\Ídwµ:o_|_ê› ÇâU:Fh‰¿¡:ùœ”š¾ƒ>’ _es
-Ë0ù€}q”™¢.Ù†]õñK»[Utõv›–ÝžGW¹e¤¶Æ£­=ëQ¡²×M‰B¯‹8ðêV«HfÁiržk'£ÑÑa{Û·çÎã£ã+lázJÅ)g:¢ jTñ¸\AÜ…JxRI	œC5Më,C_d j¦ QEíÃ\1­™K9‹ãç2¡8¥¯N^‘W¾¸_·Öå™Œ1óŠPÉ,+3sŽT™ŽÍÜ°eÎPÇè»–&0-…¨ƒç¿ÚÔ­Ú+Gå¨½PîbžÛíÓ:ü¬Kªžâh.Æ‚æñ$äïIMG×&:Õ8?qâW ¿²q©èþ†^ºiò¹ö+ —ï«’…ª”Y(J¯T*é`_†+”ß$ní~ /ª¬‹uêR_isI=øÒ¬„rÓ ptx9LŸˆ5þÅMU'2’éz¤—öO†D5>±NÏäõ…VC?3—Vø‰ N)¥\;sÜý§†YÌEÚ{Òr—W/Ml†·=Ú–]Ë5ñYJU©‚º¼4cuALrÿàþ‚à#>d®ç0Úe•6…ð7§Í…ª¹iz*JÛs“;ëo©¤'Wé9Ë)0&ÔöØ\|JAý²"UÒ4EƒQï|»ê4ðÌê2§ú­´Ò¥>Õ©¼E†@êa‘+ÕY/÷2¬^ÿcC~°¸nÚ„Üä«kÏÕÍý½ÉåR«H„éž!“¼­ò-ð%n"Äö)¨^hœ¯×ë!l8L-óg)`‡»ÐÑÞx2™iêÕn´Üá=œñÑ~Ó/Å¾Q&XGy
-_‡ÃPÏeø‹©åKüžXx3cnr i–BÕì™LÛYMhå›]‹tž;œ½Éè:€æe
-¸•^š0ÊM¨Ð°³vôRÊzéä•ŠSKdÌdlÂí’‚ˆ¹î€L<»Äctô?…KšF·JfäM¼¬Qì(³>¯(£2ŽÅør—C„ôð¹e°å	>©:ì(çÆNµ××y²ƒ€ß›7±BÜ4rK^‘D þ®OÅŽ7ûºÑüñSc–õ`'nˆù?{®ö‡“áˆN¿‹ÇVWaBôÊìk¢Âår<ÚªÀÓ¬Ç"³!ëR\BŒàûEkØ¹aNmAÞ¡Fu4¹†µYµ%¸Hmâ6}»BÚ„OK¢M&B9½«~ãÂ@G•.·ÂLgn?*jV4ùHõzI=Œ'…f€ŸH:Œá½²pk2k¿LÀó}Í;j|×Vxi‹á‡ÚíJôÆ¦Ùª½þG>ÎMV„^»´õ5šù:©h²	™}ò4ú!5Õ“¨ävÓF:áøÙªíÎÈèæ5ª£Ñe¶@ÅGãJ‘•Çi_íMÃ¸Ä£Ä¡º5‘ÓÓæw^6Bo´^&¿nQ*¨L:g¹µÙ_V¸jŠX_½¡[,ž;%%ç¥Ì¬´_Ç:¸Ë{hãÃ.-=•A6Ó»B3b°¦¢é€š‚5á-W/„[ïY\ó®a––9§iS;ÙµÕ :sÐá=áðªeÈ_qù~˜!l €'
-õ¶4iÌ<ôökü§6²*
-íâÀ%Ú7fÀÆ0iÖNHG·ïeŽ»dò•'ÕµÁŒ+!o¿½{Ý¤<Ðì½vÉ¾DLá‘g8¦¼yÉúyDõ&kæ4è^%ÍëehÄpÄÉ`¨C*ÒBâ7 ˆÄ.´Õ9½P°OtÐUòM}ÿð‰°ÃZ©k¤MB=_b4"e(Ët^Š
-ÌkÞ…VXÛ‰¿ÛÈŸ	¼Ã+ :¹–ë•VJïtd)?p~´ÛÑòkœø»á¤t­Ô3¤Ñëúã?j¹;ŒD-õÑáßToMuåg2’))áÌ÷T’»ùúªÓ¶Þ“ÕµÚ¬'p9 »à	©º‡G"»%s¢Ž4þG³«26Öã½”jFì"Yä=µ³oi“kfXç'Èð¡¡_øÿ–¢suâü¤´ô>!›®N‘v.y_OJ^gb,’ú«ë†)ó%þŸ¹]oãÈ¶DÑß®§HÃ^EÒM‚ï¤mUéBÙ¬’dµ(ÛµºVm|	 I¦ ±€(Öé½ßö¼Ç‰1æœqI€6²÷wêÛ»—™‘‘3æeÌ1bØ¶'na?Î{J³mõY¡öˆQ³·„¯ð'¶µ%0H>’¾(¼e4Ÿ!H*0,ao _ïv_ž¿:ëvlÉ“r&‰“ÂÅR¶ÃI×¹’Æ…&¥ž¢$¬¤Fa}‚Ru/Àg­BŽFÛ°¬‹Òl^KdÍlÊŒIÇëŽì4GÙ—rì|X,"Ÿ;×oòÉÜ!ÿ$CúF/@Ëº^|B&«‹Ö+!§ÜC%ÈØXº„C(ÖËgÛŸið¢Ÿp™¶|óú¹&ì¼ú hJØº—Vÿ…Ì·kƒ¸Jù)¼©Ÿ½y9ˆ!¿½ÉoÝ†ôÑ_Ò3ìÞ´Ñæ¨f{2'âµû·ÎNö—Ôÿ¬öGãŽÎÞß‰øcó.&Msóý|ÛŒ79ë8[˜(Mr}·šñbKzz…eqÒ.¢Y	×^zÞ #ªù+YÞ¾VØ.ÜÛS–€õeË)ZMënñüïúz#^OöÙ"ÎHß‚[ïŒ©Å&è‡ÒC‚=¸ÎXŸsÃ‚{WML<Úª*,äöÚçÉÒ¢úN±ËòHï÷x1*äø:ÖB0¸þå—úvsÿ00.½¢‡lÚë9p1?°ú‚vëúÑ*)sšš»IªÁ_N{Ô—°Z¸I0oß5¯&ä_¾NúÝµee…Å8¸þ`ö²ìbfÝn’CO£°7$ÇùîOÞ‡½`ùé¯ZÅHFi`ujã&4ú&;û_þpÑ¾Ä¹K3FŸ&i|(%†­3&À_«ÿ(Î—vLÙgáÂ•p“¹ˆ´zJ›eóù}VÃ(1û:ÿ-J¡I8%§·˜ÖÌZb™P÷È1Y®øXÖðºôsÒ¿Ã‹ßË¹³ËÞü&¢6ŽæÃ|æûm¯ =þÉÃ®¼S,äó¡;\\!ùè·?¾í¾ùéýùó³ÚÆÄ[èP0Ý‰-{Ýy6¸u^MÙw×šÏµz’3©èþNn”JºIdã9‹ŠNAiV»"Ò0¯Ë¨bt°µ÷‡Oëõì@¿yZfT¦›)àJ&R¿ó`gÚ
-ñÄö@Xì1´6Æ7é›ùµøø•¦k«$Â²k#pƒ¤íðX$ÒgÝM‚ ì«“ƒ““ýcZÁ÷n@èãµ."
-eP]µkšS?šû
-öûÊ")ãÇ¾«'àÂ¨o¨üXHn çO]ë›¢œJ¢[–èz§×+†Ò¯ßsŽ,)»âg|@Yê0uË˜4Ðž÷
-'³ ºð>IRø( C~%UðeoÊ lz‡lZmK±øoè^–,S¡Ù³ #"H#&¦q rkÙ]Y¯wÞxœG>ˆ°‹»ÝÃ]õ¶fÓ’‡ðo“â
-TÙ´šÉfÒ¸ºÁ9‘OgåeÞŸyh“cµºÝÚâÀ7÷ÜV×¾µ#8>ØÝ;98M+çJ}!Yª<L ·;9
-`oÜ=Á¡mJ§Ö‡”h™|éÁri~ÝÚe¿é#ÿF^®ûµÇ³îÃ–ÊUXÒµ;*P¦—,Ø-zåm”ÔÏÙ¹Áçþ€cN¿&oud%ALIÇþ"ZÄ è¤>Ý3é‰JèväÈsçñ‹\Ìr}8‚±\/±à“Kœƒ0‰ÞBÃŸDô¸@NÃ=²¼Œ±Q1Na´0¾¯Î}fÍ»øÚ ÔÌ¿ÂtÃ—·æ“ÚhãÔ)ªˆk. ­Þaqƒ5M(8OåF¿d“RAYŸª×H¿?ç£ýxù,:“55Œ±É—¥ãO) _qo(ß\[•_±lZŒ¥	5Ü„U·@ºðº¸
-JŠn„çÐ¾I¯¤ùëæc¡¦f£aËlé?Ê™f“”éIûj8—GúµÒ–d”µ2Ï•¤õ$_ÊêòYþH·>\ˆÊZéâly,#Ú›Ð~’ü£²Õ®[^Q&°´¸è^:·/°%ÈÙäÞroÜù3n¡¹+-œyÈë‡è«bÆÁ<»}#0Ð×ìé»Áä,bŒ!D9ä\š¸eµÕg»Õ»mIË»Û-›’ç)	ïÅ!xyé¼›|hv*ê]Öi¾§q°ÔprIvSÌü¸ŠËÎlRuOòX+l±ÉGŽËŽÎè{F¦ Žw+û–o:Bõ{llm8H”ô•Ç0~«MÑ<£ÉUë½B)“.&ÃHîûR†Ù¡02’Ž~¡§Œ½Ô\E¡õÓhx¾IH»{eOkÚIF®Á²%ú<mPa«Kâþ§~ï0¶ð[õ«ÙYÆ2˜Ýé£­Àäáû¶äÈŒÞèÑƒÚZ;>uŽªÁï·³Þ•ßÂrl¶¹<„[¦sùÖÞ«¾Ñ~-®¼86†H©7~¥yÒº9UcfÐÞj¦Ó½1aC†/]GoÀìÚ÷*Á¼V0Yœ«ÑVŽŠ‡“`õØíÏÃÓ.›LÐÊ%˜ƒÎ’T˜^²Êw&kvzSÚVð^1‹úGä¢#dÀ‹J+#ÚÇM÷@$ppÇñd(L<¸P1Â#X›ƒàLlOÂ ãƒýÝÍ0÷›ÓL’ÎEÔë…{BþD¤…CÐ4qþn1¨ &ßÈ¢	[=¤s°!ítÁ0‡iáÜìÞÀµkKHL	²ñ,„î!¶Ôýt‘Äµ ž™³6›ô¤=ÎìŸ4ÏE	~ßI2­sÛöæ0G+³\ãB™l+·Ø
-@«?Ôï FY?pèÇ0]Y?“3lËÊ@U×‹qëSEöãï8Q¬[Aàç3TÐ´ò›N„–ÈÝ%i³ÆâU6ìžgòþÑÂ;ˆÓtMÓ4(>
-øHë(‰Ú8¿^-ÀŽâ<ÌÆï>Žûã[PÏp·’;0{þúµmÆd‹1¶t›G¹]»‡Ï=ÉÉ†¯Ðºâl×‹Ò6½Ur›Æ³¯¼ìÒÆj{;ýÀë†ïnŠþèòjj4,ËÉš8˜Ô}7ÙÓ Y9±M”ªûÎ` 'Ê÷-Šf×¬þ nÃú5ftQÂ}ÒôZpÅ„£î‰kÏ\hPf¨0è–Ò*¢—eY1#B«-Ö®ÑúAôÛI‰Iú=ËÞ¶PØ¹¿·°–ŽˆãéKXÈ\åÆuß+´ÏÈÎ\
-³j‚ç‰o)tpÈãJ†T6|©ïÜÔ¸!‘"Mj RVš3’7úiÍ4Ìç¿\ÛÂcñíô&ˆÁ„sÝP˜b€[÷Â³ùä±ÖMšR%ƒÆÙGaŒÍÖÁ•#LÑ>§Ù€ tÏ:Íò«e\¤æX¢BàÌ¦3IÕ¬Ö…Röz@¤q-ˆ,d[7ÙÖ´ÓîðÿÝmiüf x‘Ötì(U¿@„ÏÎçñ;n¸ÏÁ¿¹—áÖÎ‰$ß'Kâ¸*˜êö¾{œ×Üü	à’ô“c"Lå-GOûý]_Â­Bp˜!¡“ët5´ÂlIG3š4Íúsê0ÿÈN3q›#€Â‚K-5;|ÅsÐðXÇmBÎÆN†H›ÙP¹zäOZ½paôdXÒÅòŽ:ëÙëjý¹=ïw{I·ûòË,Wv/¤IÖíªì·ßHÍùÇÈ+:¯p$å†K©KdÙ…öäã÷ö›q‚•¤×VÍgäjtš·‚ö² ˆìKº«Üœ¯œÈ"fyÚ~¡¨²ß~
-àƒN[êÁ;9Ç}ÏàriŒõî-’ÔÂ’Š=Ï.™tBÙ$Ã˜#€Gš§˜¨”!Ml¸ÒŸ²CuìÌšú#,ëŠwÓ[Üð]rÄÚUÚÖÜÔ™xýûD–ñ¬Ï¾•ª÷››ë:6ä¨ïï¥ºçÒT‚6œÛ%zAˆÙ³š
-{ÕïÅ€Æ`uœ¶}c1H9•§;½ÙÌÉûH·OS²Ì{÷=±œnÕÚƒ|¹7Èõƒ}\¹íÏRJKZšø^[¶K]¥ì³ùMmV–Ä>!|?Ûoïµwb óvÃAãÑuõüGhNYÖ!E‡jììˆXtþù²$ˆÌv~RÛÙ:ný{8´¬i¾’Žtã‘^ošý5Š~ÅŠ#»ã»‰à›‘6­¶¯–ú-2kT5"§¦~¤a¦>ñSViýyÜ«›öýýÏo[Ê®ƒÆ"þæäàhog'ði ùíu–¶„ÊÖ*M•²í¹ª½Z‡ÁóÐcZ¶ñ®‹á°jÿ6°»üëÊoâz!Æb>Iõò³\ÌDµøýVü>?£œ»—úçÆO…Q„ÎîI[œ/IrÎÊ™`¬‰`0ÚnÆ†I¾–ÕüÐ~æÉ?ÑRÝ{ªVú]òJÚóš­³Ù7hÍý!À4@ÛÄ=ž_Wè¿H87­€Z ´Læ¡ñŸ‡§ëEM«1Ã«.Å½%q†Ô¥q¼¥Ë{JYI¦Ÿß½Ò0Õ§„ùJØ’›Û"Å‹ÿL¹ð<Œê~¼/ú×c)Ñ}èàò(|«†ë+e³‰s»}ÙrAÛGÁ¤,úÝFØhãIÝÉ÷šøb®ÛOhÌ{¤¤þê ê¿¿ Þìýƒ<öNöRJÁÐ(~^•"B…)VÁu¹ïø¹Ñ“ÖêŒSÅŽmÑxýüÓûiÁm¨öÕåexêuö	ÌxÓ,"è]B)äm¹=ÖØÚ/
-iñ)?¨,Ö6kŒôž†J-¤Ç(Ø¢MÃÌ âÃŽh«À{
-q¯ý!‹¢1gqTu=Î¾˜Ç_';ÎÆÛÕôª9–ã¨#Vž{Y/ƒÜÐÈyÒ/!-Ã8á²A‡‚Rš)œRl ã¥T£NÚ{^NÁ/Ä”zNÐ[$[YìU¬vvº‘>Þ½§8JóýLnº¤ßv=e3r._­Ñ8Uj±ëoaS¶Sãñ½
-ÜNüå<òWy=S©€	Ö¿.7¢¥2qñRƒ"ÇßòÕñáÉŽp£®5ñ–Ë¡¢N¥˜UžÓkíÑÖ\÷úÄ[Ò”²þ—Ö†¥’­]MŠñÓqÿºšn,LsÆïšðf¦d2Ÿ(š;/Aø‡âÀÀõzÃ¯7_é‹ÞÜCŠ4»Q	÷Ÿ¿ÀÃ5®¿éfd¥Ù‹‡ybyÿ=º; -K6ÏÖëyo#7bÐÖùx ?¾#ÙÖðkŽ¶ÒÄ§Q…‰%óœJã‹t–4}‹oáV4 <íb)ã U¹;z`Mœ#	çáö+{èø él,ØúþÌ-«–æ‘4ïYE*}C«ZùÝ¦Ó'p^· d†=ç÷àõÎÅ>1ÒÖó!™ì6G1hRá5»^Ò Î…àRWBåÐfõ‹‘óµ‘TáßZ²–ï
-?—ö (ð¡½‘½¤®dv¬èHËüÈH^ã6Íù»¯mjºl„f…$mšïF9ÈÄFu´ ¬íf°fÏ//YÈuö¥K‚-Â0xx„"¬©½N)½Æ§Ÿk#KúË¢IÊ–îØ×pap®_'ô,š†ÃÌ¹(.›Í²×(·~­ªA1Fùø¯úG7z]_°fS>©3»?vvhÉ}‡L¤œ‹`Ñ(^ƒWÙ2 e`Ñ¢S	Ãã‘~ŽIJÆù{ecÃÝj4¹+_÷_ò>YäƒIZoÎ$«æ£fxþÁøŸ`rC£aµl›OŠi_È]}µßÎà¢Ökih£MSœ`ÃO”’ÄEÝ¶aÂ"º¼PáíK·ºiÑ°1±Ì†žLçBötJËù„îvå‡¤€0®Öøž8_:‹-A¾rÃ.ÍŽîû€œqg)ªÑ¼Iüã¦Ê;Ì’2Ã£Œ#rÓžzyBéÎ€Žjÿú'q´!œ!»ñ|m „š(ÙÌ¤S uz, Ëö7Fw/­‰N'rÛ^ÐFe.¶¬2ßû«%PTÕñ÷Åô·¢ùnîyWñ0¢w‘Ïg>·'<!©¶^Uëí8
-IA)$‰;çò{q0—*­Û‚¢Ð)
-‚0|¬h+eÆ^ðÛD|>c¶“Ç§ÿ}g&#	´¼n!“ˆµ1Š™Qøà{KjR7Eo+÷lq‰jaöIÂ÷"»sÃFÊhñ"ÞQ²v+ÓUM£â9æÄ¨•Ó „”()-ÎêÞ,C&’`h2ßËeØD2­ªYD…»¥<IŸ¸¬hË•Ú¦œ%óy_¯"Öwà‰mü)fÓ2T7ÓJûèõGDË&ÓBÒ/kŸPt['orÀJë§¦$^;Ø>’¬ oj†Äþ[Oå\>M :¿çK¼‡9•®BõGÞ†rW!bÖôëº(%L)	h>ã½D˜)t™ŠC Äˆµ·$w£ŽV“x¥O–•öãÌåN…z)ôÈÄ	Ó	i	Ÿ¼¦:ÃQKPÃ›ºÿ|¨hãäó 5"Î™°^>Žùˆ4CK×•2S-¤û[«!cû1Ñ,ÕtYßHBsÀÉfT`¨Çß”>Zð,rë6 2Àþ«==õËW›‡*uÉ¢Ê”‡(ì[¡zUÛZŽjb 2YMAßhkVÍÐ´RÝÙâôtÌæŸ¬{qöî—³wÙÖ“ìÇ÷ïßê?»¿<}w±¤òUuånŸœŸ.VR¿É|H¯Êã`’y¾÷
-:\Èl|Ý™÷j¿ÖOÃOÞ"ÆÉÎŒ_~PuÛ¡e.¦ó0¬ØÎAÈ< +–F·þ©~›…’ =mÌ±¬yÒ¯¼N³×xçÿ&¬0r¤#øv¾ %„FF«‰£
-Çúo,ÚôBa¬c°CØ=1ž54œÖ•·¢#xJ$Á¶ií"={;“(ñ.n¬a!‘ËîÊ ±ÃÄõ~@Í¤¡´¡­È~_Ö·5H%DÀÖªlœÝvz4„°Ú¹ýcNžÉïr÷ö5ÿñ×z>– 7½³ø8ï
-ëŸ‹a²¹‘ÑÈš€Šík)p¶Ó»¯jï$¡öpö}«Ýn·"õ)÷¿+GWOP¬•È·œ›e:Åª˜â^:ë%"èn%Ù™W†–|cÛÓxA›4‚BÓ2ÅÝnâYðÇÐN®*l3nLJæCx±îðeUwHä«¢g>Ú5ek@¼öé}_ŽÐÜA›‹öF:ë+/»fégjZ6R²±fël:›®o˜¥²lóÚöþ¢òºH°ÅÄ…aðá-ÛYB’ìƒÕ²ïðo!•XâÅìLíêg·ïó+t
-­oª0ØýÑÃ'‘×òÊ+ç`rEÊüjÒ™~½þåFB’H`!u£4¦‘mÖBÎ-‚Õ‘ˆ'iÔï&¬¾–¶Tv”_-0QT§†1¶ZàA1)Æƒ<yÇ[[“ÔZE=7ŸÎtwªx‡H½×q£!¸g¤¶0 ¸É(»÷4gÄè<kœ‰’Þß‹|ÖÄŠÄSx
-’™N…z¡ÃŒ“XFéC)wˆId
-$¨è±¾F4ƒLE%6%ßï<yËcáA²êˆX HþD
-,¡çw³þ»„ñG¾KÄ}CÃ¤d3’þQÒ©—8,*µêÎŸ¾ÐÞHš‡$ÈåÐ®ƒüccl+¯ˆÎ…Íƒê¹øKë-¡ØÒÜxk#vI¾w\SBKšç›©–\ˆÚøÝR‚ay:¼¦dízS¸î×óéP¬Œ$±3Qi4²„Ä ª´BæŠeJæÎ¡¦ùMÚ©qÿ7Ñ¸i*ß9¿ÄkÛ 3HKGí”è.-ïmàêJ«,emÞZüªüS9š2ÕúªBq(É¨œ£-áÕ”ü@¬=ç¥FP¥‡Pã¾w‘¨š°ä¤\‡ý¦Ä±.èøÏ3ÑÇHÉ¼ƒŒ5m¯½ÙÂ¹ßpzÇ˜ù¨IÅÀà…·v*q¸® b`yg¼fÄl|+_ÐÐÃ@ÅÉ‡nº±t–ë‡§¯^½ûÏî³§gÉ7$bùáì=Ã• øó5>ó˜Ê”OFPxûíN{§q·Ñ¨wEÑ¢A%ÉH—K]Ë…ni ØÕè5uH9V’RuÏE¶D$ˆ¤×_ªUM99R†Ï{îüÍýBË§Óü¶³{È¸ßÞiÐ¤óâ¼3h~¹À‚Z Rï H¹n}¹1tË”ÌçwÀ¸Ó¨‘š\n.ZZb-¥âròüéÐKwzšÎÿ¬à­¥ô]l¾`º…gG9ƒ|Èªªõ8þÊ1ZÍºô™¡h² <æY¸¿H'‰Ñ´¤ˆÌ3/UÈôXÄrèUŸüÆnØÅ˜o 7Vz}y™?’7}•Ñ$Û=¦6ôo1"28ðÃÐ·ìš|¸éÂg3K·x	df"T Lë1ˆâ`¨ƒkÐ|L1`KÐÛ³F«~òx…WÚH_ÍÂ²òSß»EE˜–ù¦ÆÊ91A¬²ï&O¢[¯ž•oˆŒØB%÷<¬»–iî!·
-/–|l$JJµß`¸qAço?Î˜—í-À£Ô[^6jS(î«TnAº•cˆ¥4™önhß=m¶°=â
-KnÐ: <^o´„o•ô¯tZ.O1öZÞ_bÜT`¢?H­Íïžø3“€‘fÉHe+7TÂt7UV¤vÅ¯ðùa9eAºyÂ!§Šµo5ðú¨¸AÚ}ZæòR°zìf±Ð.rœƒ‚]ã„S¥Óñ3Yèµ¿Òwtj7=RNrcNjºôV­&/¦|é]dð.$Qšó	“ þôP{^gúú†k¥O¾Ìâh¯ÈÖ˜pM’'»^ª©‹Î.Iƒ<¿à4à‘ÑJ²¸{¶ð"ëÙí°ø¾u]`Ÿ~÷œÍ¬Ï~}ýî]ö—'“Ot²å@-ßÔä’03(´H¬RÐ|¦Ù›GÙû‡b+KÅ2¿»éMŸpœlØö‡¦R"zÙT"E9…™ô¦Š–õ¥ßÞh:¬rˆ»{Ò¦²ÀÕ‹
-±JË¯‡`æ€Äî¨MdÑÑ2éÄ 1°™Ežâ<‘.Ø£ð¸I†Š¨.+·ŽÞ_Ø, Þ6ý½xmígÀÊæµ9'öÞÖ÷Há¸–`ÍF :v¾AÉ[¿¡˜ËoZ;œtE¸ÑjY[o@Üw­µBÁUó.¥zëé€~TCØ·ÞiIòaV÷§•ä9z·ê ™à³8pÝ¸Z™„m°ePbí-<¹5ìõX‚Ë–´°{¶Ù új¨eØ½›¬kz`¨4NTÚ
-o¥Ð¶‹uûq¦ooIVÀ·.·”YˆB˜É<s­*UÑ!iG’¯ °Éaà}ù¼WWCä¶!.šÖ/?“Ç=~ˆFä ˜/†3~	D(/®°J	á!òŽFt¿X?–ñhˆ z’·…˜y¶H¿â³ú?Ÿ7xøTL¿”P¤­2âTß£‰“Æª3§ò4|çâh|zG+Ð3ì3†¨ Aº'÷‹Frã³ÜÐì8îÆGYÁ¥B[´+{Ûò­…úªqd§‘oÓ}HBwI±J,<÷ð(ç>2×/Eg÷¯D{ÀRé˜péQo–'V— Óï³ïÆS)1‡Ì	!‚®È	Vzë˜†a{´ŸUÇ«B2üßÝ5œÃÃíÃ£UÆ· @WÖ¯¨¸t>ŽÚPˆ=l‡¯þÊ«‚‡uÐhÚ„ÂÛ6Œ~Ái-ëð(ÚÊÍÿ…¤ì£ð¶›#j¾gMþqn´¢ÞÆÍî\GWÅLÛßÞp<cÿ³§F›þînDoi›LxöŒB"Ùk´Q†Š#?ú«Ûaùp¶À`Ü;Š²Þ·º‘>¦+ùH”’<þù{,™Åm&ŒÚØ‰¿|WŽ'ó™Ž1ðiMZ•ëªûv!¹\öÿ>YF?›¹)Pò³àÜ<©Ìi£‚‡?ðC¢V)†pë÷¢Ð |rÝ½“þ7ö¯Növw7Â`wWoÃŠ…F^kÉî‘®¼·,Ò6Ù[Î¡wæÑ³Èžº%Kcv>hsÁä1ÿ„Oˆ
-ïÕšÞêŸ$Ü¦ÚžE‹q›½QØ!~èíÙïÆ‹ø[rVMÊþŸgßwÉÍÍ=íËns7K ]WQŸÍ6ûÌ¶«ñëÊÍê=±½ö>T
-?Œ’Hóœyv¾ÚK€²óŸ9ÔóKëE¹Ì‡u¡BÀCŠþ,Æ;.˜ ’:Î¬îß”x“Æè@™ãt…ý(<G"ÍMÁfRmGôMèÖmßeÏÞ_;geœ—Ã÷ùÕ&>ð*§ïsén¶ô^ T¡Ô›ËcDÛý´É•wZÏq7ïjrä-°·ŠÜrGŸâCåsAãm=)DÀ–øwf…;»•òÊ(b$yØ€ÓŒa,Oš”àÛéëb³c{†ù¦{ÌÀnÙóÁ@3WPe#ô SªÏaŠòHÌŠ]–eÔ‹ŽÚ%t±ë2×îÈ¹ÖÈÝ„a>nQ©.s[Ö£?R:½J•iI¾A}«‰Ò.^)”k˜í÷,&8‚*÷‰ôâáö16Ü=xÚÒ5z?{ÓÐ¹ ÷jO\ß¥”±Ä¾åçß'Íg)N”€¯ãÚÖ‹ówíì¨¡ÁVbÀáËiQ¬ôtiçÙùúßí)‡ÜÇÿs²óql²ßÞéˆ1ää+ÿU-|Îtg9¸]R.Ö[~ûÒ÷‰6ž²a<0:J†¹msDÙÅuQÌ€QqÛæ/O8(–µä«¢Ý·øÊï4"*
-)Ñþ²E‚+ßò^Ž¸vû–„”w„ÖóP¨èï„	Àì¬}ÕÎha³·Þg{u˜bàu«7™þ¤4}y20T ÑØY”˜XOûßÿ×ål‚4< H!ÃÍØX~(tûñzƒÇ9oÍ•1Ûó¬ÕvDN£_Ôî4<[hÍS`›ñíkr2ztgE"¢ëý‡PÃ.S˜XRˆŠ~nZ»à X{vÿËÞýröîýÙ‹hL«ó[6)UµÞýôÓûVD¼-Z½D‰4D}žÞÏk£õ!ï«9'Ä)e‡Ö)­Ããœ|{¼×Ÿ¢€ë~³ãÏ¤Îºuá_™
-ZB_Pšö¿~oúéHÎâ¤×Å&¨æRºò‡ÍX”ùy*\ÿ²Ãí€DáUðàû'ÓÏ`Êýœ)W?	šŒ0¨/xÍøJ¦¡ý^X^rulòEoµð(°™•\Ü„‰R$|‘ùÀûûJnüùdŠü£¸Mñu¼¤Q<Y«ƒÛJwFåôiS7åQUš]çä7œ‰ž&×”	øm#éýŽºƒ“Ï&_;œs‹@©âKùMtÈIÓâ
-}ò!ËÀoÆ˜›þ;›R7˜2¶M-Ôó››º–ø·9­{³qZó.ÏæW—qQ³õóO«Ììqriñî˜Ôãt±SÚ©šÒiïˆ“ø0•ýH‘>^«WôB/Ùjæ§Ä8ÂÖ…çfÀ|@ägŒ’ÕÚ”øLH@äˆfNR	^àŒòb)—Ìcþpqåù±o5ÚìÞÍÇËŽ–J‘Eê³x7B®,°-×óIñÜY8³Oµá2AhUY‡Þ•öý‹)¦¦ÉTô|týY5ÿ‘Þg(9™8Gà'´·/òË|ZjM”! ¾(ÅóÖÖØ êqF52Ï•/’§’‡°úGI\–pÿ¤-s‘1§ÖoñHÏÙÐå’uúg<ÒŸóÑä[îÝa×h¯L¬R<	Å¶Ñ»KÕ?#u ÎM·Àêƒ}¤Giú@ƒòòv9€ †3ÈÝOu¨Zó\°šÒÏïÎá}þóÝË³ìdïdgg÷_3ÊfK¦*°_®›þ’½z–r°îOeýT•“s¹'JÉQ½—Æü»}ñ#/Dý ì¿èý.î·²éýÓÌÌ$é$ T=µ Ç)¢6.)\‘`ßV¦}+Š´Ñ*CX)ÛG8xøe2väw½i¶ýCwÿõäÎƒRIÉÉInŠ!'`PN57±Ë*D¸QÍn@ˆú—'Ü©b²ØfEl·›œæ4	‡?²ïìÓþm#ÌHúL‡iü³zùö õ¨¤v¦µ¤:¾FÂWdÉñ5yÐµGÌþIó°GµÀgwÓ-[cƒÂP¶®"Âwkæs0Æ1ÀÈ1S%èíLµ˜¨ü%â•Á‹Þô¬\Ú,.NpÖtr•ùÍB“§Ö:ýmâ{¸§RÈi`ÿÒóoñ»ëz%¤gdHÊ6„ÖB¤½pÏ1ãUm`YlŽ‹¡a/:^…×¦‡*t-ÍÑKï|&_È~ê×}u²w¼{²GÄöBÃJ~[g-rê¶7ê|²5«¶(Rßòì§é³'ßwcÛigéW]§ÛÆù¥Ïf®EzÒ,ì37lB/fIK–<ìG›ÑûQˆ‹©<f—hî­6Óä=¼wÄ—kÌGKt7Þ’x°-[ÆÓJ7NÁ”<y!¯Ï¯3yŠö”‡¼äÃ…—¼w|„¨<!sšNß©g¦VoÔÛõV¥	ÓmuDöQ K½ÕÛï¹tºqŠvïØŠ©š’xxYjòýQgÈÂÇx¸Eª  Ò¶DËÌrßË­8]Ÿ— D†W Ø‘´ÂéL¶UPý× ñÔå´ˆââ°I68üÏÁéœ[ÿ3TÎÔø}‡A8—?ñQKPÖ¤!Î¨ˆDƒqB
-¿“½ýýƒ}˜D(9=yíD”š¡JÝN‰iûägãJ%Ù%í/µ@„#LÎäÎñª`$¥õ÷Ñ´/‡U…NRôÜŒH/%œRö¯ÿ”Š¿Ìæ­óŒ,Ûps]Í.Ö3Æ4â»+ÖÕO7cÉkë±1¥ÌIùØL¡‡$Œo‹‰GttO‡u?‚½M¡G\à2øxFËÏ ngðí!:ÜÙÙËâ~žiÛK]±ÎkÄó­w»/Ï_u»ÿ^kª{IŠƒˆ pëuÂþ››­À6@Õ˜/<Ø"–þ*ÆËi5˜TŒ§ˆ7¬û±µø¦² yŽgå¾½jRü¼µ
-#&Yé"ÂÞÎk9	-7ÂCÖøaÜã¥ÄòöVÒcÆ8¨BýÄ8æÐÇ¾byÇj2¢Ñj¡…‚^Ažî~È{¦#|HÁTÓ-'°¤p
-?`Võ«¡PA‚\R)5å5ÝØ}¿6§Ùë;'j]ÏËš>]IõAýwÔµ4l0Ú¹)t:Úcë‹©¬‹”‘<®µºóe¯@!?îØzGE”)»í®	•Bz¤§ó\x‘÷°»w|’ÎùŠ§PƒúÝ9T*É;Rxöë£ÓB-©2µ_çÈ”ºŠÐÌcpƒÖG	ÓG ^Æ’TÕC A~P·± ²µUsíªäã˜'©zM¯™Èc™õ¾½½=AVEomggçh•+í.ÙËÈˆ[Ÿ½u´¼{ÕŠ¯Êš~ˆë®Œã*N>’J^Ä!GW`ÂüCÑÛÍ^²Ÿ‚_Åo^ç£ž"ÿlx`Ç"•4Æú4sô’”TÚ‹£]žaýÓñ°^£2p=©+%!ës0M%Ûå^2s³,ýº0*EEZÍîõÝÖù"ce“ýù±ºyŸßÕÝÔ½(«a>–Ò­t“"—jM%á¶ŠÅ³ùhršý’öp«„æôq¹c/Òù»'NuXçÎÝð
-òô^h^¥È·
-‘JÍM2ÒLo
-—\è Ô N#n1)é¯è‡í¦nˆ\2TQ¦k¨k$0ûƒ¤Ë])Äý6ænC GøFäóZÚÏõgp°ÀîEcÕ•÷Ó-¥O‘…>a-É5òrÆ
-í68êv¤jðAÄæ—n½±ŽÔáÆOBX@‘,ÄMšn¸p“Òñy¹ÇyCGËfË;%½rŒæ{UvüD·Þ¹/zq÷p!{VÎdªÅ…ñvžGeo}ã‚
-\é™@Ñd¿ÛÙH°êÞŠY¿Aˆµ•ÆuA¢Fc»ò-)¶b{‚Fu¨mkµHoÅ4úv$”‡Jm"PÓª?ONÇ(‹ŽS<ªxAëÍçÆïbu Én„ßecè{øLðúëEYÈÇž:s´s´¿¿ñ8·ß·×‚ç2O‚zY‚1zŒì.ä,¾sá_1ìT­¾)¿˜"%úV€™
-•Âd,÷Üi‘]FoHÃ|• å#[°Œôìän¢ñ†0¼_ò©Biƒ_ú„|aYg‰íÂUžl§‘`ëîìñö_ìºÕ³“ÝeYAQ3¸œq<É@KëOòv¬MÜ?Êä‘‚$† ÿ¥í(½†e)D$Ü×˜¢IhºfÒ£Â¸W¯œU¬¯÷W}½Ï›¯Æ%šêÃ”þíþ·˜DËsWa>û°ÏÖ×†aÙ./I µÉÉˆ2›(þ!+É@Iuy›¥æöƒÆvÜpJ©„|\mMÐ‰GiU/=­¡dë“´ÎùŽ¹¯Ò7ÂðÆ#‡ß;–œè,ºûð“ôO›xçñkp)³šÞáž\ÒÉ…ËsÓ¹˜%£qÙkïDyUá:tgÏT<.Š=ÍÔ¿¯7ƒêTàñ.<þøÁ2†¸ÆÔ­¬z™Ú¹bz%±G¼&ùîÜ£ÝÀGâ–÷¼³Ê¼.2Õµ¦ÿ×°'”íxM	è qs]‰Ð¬«ü_K6PöüCuEŒ\à)šÖ]éÍ/:ÍWcÜû°¤êçv¶r’.
-E°‚Ø<ïq‰Î·D/„3b2òt¤K1F°:	ós’®â²ˆàë^ýôìé«‹®y”Wùií_Þ·’:tÌÝDº ëÉBÔ .Õãq,C½ÿnºNzÿ¢$óQâB˜§(¤d¤bÿštZnÞÞT¾þ”uã>„ôwÁWYtUyÌ6–ƒëß×u~YtgU×RpìµÐZQ4ÌÏ«CÆŒ2K4‹¨’NÒ½j"ÈÝ7ëÙtXŒ!å´õÿþ’žþ/%t?Üï4k‰¨Y?’ÿ&5™Ñyg%›2Ž1ùÕsòS;ë²0*¡Y
-¼Fë1¦­I,#èÿïå(>“é]Re´a¤0šoÜNûFtÿl{[{÷n^ýË’ê_‚Uï²ŠÍm2¹q¼‚uážïŠ¹Ûž`Á|áA»Ì€+p”«Óæ·¿]æ)›…9Ú&ºDœÿû›Ï7xÞOË0ÄðÝ‰’$}CI8G9¸eV1¾TJ©G `ýÖo'¯bÅ%‘b!õÄ«DG¯
- ç`<€ÏËBÅ0œ8:3ry†½ÚVöõ´b¢_ùd­µšÉí›²uýë­Quý×Š3íq•Ñ±M£üS…ë.=Ûa‰‚Ï.ø&&7õ€‹.æC‘Û¯˜$I‹Â ÔÔ*B‡ûl‰R…L:4„¡¾)foŸ½ÞŒRDø”ÞáëüªìCþÌ®Ù8òJW <¼{yÿÃ|Ò0 [nC.,âÎI4=fÕÄ3÷”Fé€KöæåpÐ ^QºèµÚ2¡¤¥³úµvT¥õ©=vÈ¬Î3Íñãº¤n(ê¤fÛG¡Bf^´M`”F	>Qw”ËKejäÛÑt{£M«‘æÝ»GïYãÞ>&ÈAŠ”+Šð=]÷ù•XÈõç”e@ ô·|Ð{hÑ¹çMø5“À’FèÓšh\°l‚Zpæ_L?Wu:¬tk¯6Àã¦_ãÈJI(Ÿ‡Þ¢Äz©AfƒÙBªtí«”Býå LOÁ8·¬bžTÞã+¿€D‹ròH]„å^<1úG  z¬áDŒÙöß±ò*½HÖ0?ãþ½cUÿX‡ÑcÙ¹ÿæ¾PüVÜ;'5Ê'ˆ'P¦äf{Àõ~®¥õãHKŸzÜ„lg EaÅA.[ß™ä1ûD{P|‹@øåJ$é´R6›eí™±é‘¦¿SúdŸk‘ý“5ˆœfM3Ùúšôëß·ˆÛ…=ú¡ct¬<*¢€ñaÃH3V²tUvÜX[¶¾!hí1ÌªCÎD6bÛÍlÝ¿žMëh5r(-‘l(®Ð=¢»Â•…vxÂLÚc^}I 'z_ëÑlîCðkÔyÔŒŽÅ‚›eL 6Kœáÿ)N0·ã˜¾êfÔI	ÂPÐ™Ráæµçç]íaˆ@Ñ««J°ûûG‡»ÙúÅ9U#!]èWWc¶™c‰OÍ§ëíçw\õ`çè ['TB##éI×C{>Jrg÷Ï'µòØ8…1ß µÃÊ;œK}­S Ä½Zw·˜ôF¾#MÜ«õÈµÚF»€:úÅTgC¦éÝÓMµQ°•zG7£\¢êä»,·Z®sÀ‡³âò²ù9<\èÂFHŸ–ãÎ†7â[‹´DL¶÷¹ öd@iN6ûXˆ¬Ln·ÜDnMPòqÃLneá ¢YUÙZµtÕP#Ä‹(õ"N–:*¡ëÅÄÇ-^ô× ¿?HF…½~µž‡=s#ØUÁå~HFvWù@¿qu%ˆmg,ð´¯
-7?Ó*s~„Û{Ãa5¯l‹ÂC²Õ§MßÔ=-À^õªzw>F’Úùßˆg
-·ãwV´oˆMVC‘Õî-
-7vuÈQ­6Ê4ýÜàhô-AòÁò>s+Û~ÿZpfP+ô	‹aPÎÏ_/&wNÙ[óÔ
-@y¸Üšã¼ž¦‹xrA.&ÎqñI‡(2UÆ±;Ó#ò}í*þŽæùtižNJRÍ$]3êëñ*¯PÔ‰·«Ë%Ìs{ŸÛ@¼ÔÔUA„´–ôW¬îLhÖˆµ³hQšDÈáí'îc/ÄS/¤ÁÈP
-ŒÞ¶Ñ4ÖØýÉ“­zæìí¥;ŸÞ:¿îÕÓ{ÎUþd‚ÀP©
-RaÝ{e4:òœ÷'ƒä¤l=tnÀhâ~ˆ`*W‚Çx˜ÔáyŸ×pŒœlšhüÑq§sèþIXñ~§³{Øi§ZÂ´Ü_˜\×:BùÓRÃÚ!Q!%Ð‘ãn$ð™æ2çæ’9ïŠÿž;û[Ø^ëé$w»h—œwDk"—áLD—uÛ68ÚQºÌÖë|Rvsùv»b×Ü¹ŸY‹ñQ€ÞßßM¸¿Þ”Å°Îžåõo€Qi§«ˆÐÌ’TÖîfUý£¦NŽ9¥Ò‡’Š¯Í)Í,Ù˜Ç^]F:DÛ™>a[Ì4F?¬¼n‰îÊ¦ÚÅç{7NÞÈÉ®fTB@µ¥ÛS÷¾Ü¶Ô™«™Ô«Ý5ÿ•…|ž@,¾á4lùé´C¯ú¤V†:Ìp¶›Ÿ·õ'’í±0¸ÉÞ—þäwFvn>±?¦Oß,ÎÏ/„žXAuZÕ
-'Ó'0Ò©Ã%º¼Êv!ÇŒ—×Ã•zJ+µþOÔ¥@èuGæ}…7´BjÔ¿³@CóÏìøèdoï$ûðdTdÊ@XéÜ ³RÕÆç¿ÐR.„%v•ºòƒmò`fie±o_VSr{LÊ>`­H–Ë8˜Ê’`þ¶iœåtòc
-³Ò9¾o?™Ÿ‹f¢žúPî<crHÌõN¯W-!j!7Â`v[¨“b5ø>aræ<äSç¨"•4 ùê	”Y0@ÒiÍGBfÆ™Ï¯oŠž±»œdðJ0ù´¡¾â'À}/}Õ˜ø¾Ü¼ˆiÇ¨˜KÖø~Bà£ã[‹–NÌÀLðEñ©è‹¤ÞÎ’Ë>èÝ4]²L1<}G†ÕIZ<i–å‰–K˜ÜàˆŸrÐ{é›ºROLªþÿüSú +zg»L„5`9WfkV¸£-L>FêÚP‚ŽNÉ…ïvƒFÓN6* ZÝ²cqiK¬5,õUMQ#Ñ‚Fw½h+(sÝLÆ…¾ ¨kÜW4·ÀyÓN¦æ¾çEêÍYê÷9ž[!þ‹¸Í(^4<1[¨¼­ÑÄ‚
-sü w–Z*B¦7?¿z3°¾|úêâLNhž¼Z´”¦$ÁœËDŸp÷“¨*~òÃUÊ ~6Äüaš ÌÞ¨ÕaÞN?Í”ñ«ŽÐbÀ˜uÒ98Þí\IÜvóhúI<£Ü›g3F*æfrÐ%C&Þ:4ö¬óðÝÈ*ý‹4:	{–`[ç³­êrKû¸%˜Ð¥3uß5ÒYF¯¹çA´e£¼_VÃA’‚üŒ›¥Þ^h1‹zz#ºŸß¿Ü:6 íOÛúS²n/®ó2ESŒM˜†?g”™±˜ £6EtOÒ<§þJeùþ¼ž¹µ L¯íÀWFÖùtC½$9’<»Fî¼+®LùÖ+1PJQ™ØiŠ§sðYDÐþùÄ´Êß©f# )uEGÉ,P(jì¦ðêqì1»W*,‰Õa,}*©ñãä5|þ(wêJ½'³wh³©Û6`ëôgx+‡02H’W/‡¦Ë1‚á×ý.œ°ÒØ.ÔYv‰õä)î»˜R”£›Ô†¿ºK¤¶þr¢^Äl2œ_Q@Ž\|LLóå#¡˜œ,Í4Ÿ²ÓV}.EÒã/Ûu|·ÙÝxø÷#›Jyu,Z¼‚Ul™`·u¼¡?…Ïf!Ò~¤¬ÈÑ_Ò÷=ÆêÅ¢Ž?`³“ÃÎ±veé¸-Õ&ZõðµÅr*Q¼’+ÁŸ-cqÛêŠ¤düq;ÜÊ-ªÎ‘[É/G›v½¬ œåô¹ãòB^†ÊÒ )æD³+>¡^¼Ê+wGoÆ@ß·µð }TAû·|ŠÌ„8`\eFmîuÍ'B˜2¼’ñÓHi!‚®Uw1°@<7¼=E>¿õžÁC4÷Œ‹æ†¹ìrH¤JÂ¿>tÚ7 Ç Ùn=˜U6S:IÔ,pìâ:^_°s&ûåµvÌ’Ofš;¿!Aõ·Ñ¶úL„f2Ï¾¯?;Þ?êœì[
-¯µãþ×Âô"?5+F ýžO‹¹”ÉŸ»Å¡Š"ŠEë1ïh½sr´ã‚àÃ“Y+ªÙá
-¾A†å
-”üU1r¯+Éá‘>³àÞ‰]·»NööN”,©±3313þhý/À†òšÁ%¤Ø¿Uj.¸AÒâG—åÌ47|5í=ÃNÜkÀHAû™ØÒ×ŒFâ$‰{}»»»û`&à™‹àÓ¾·¥‘ˆåÿ¢‹µeí/	ku¤a]óÏaì$¾o05éVe¸sP–Ö1hUry6½Õ®Xì#…“ûc;y {¹;G©<„Ïü36…µ*Ûamµƒòã#Mbšë¸˜aÉíÂHy<>gñdgïdï0ÛÂduÚ^$Še,0y^€,P|&º §§Š~£bY¦L®þSvØm#Í#Êæ™þFôGÝ‘ÑV¨Áˆ‡g²OžÞ(’ôò¥Ôn£yú<r½dž–ÌSçóæIt#”®£g?pé<8G£Œ™÷Ãlxg\}"¡ã¢L÷sMÁ~B!FJê~è˜}ÿ~ûÙ3+T“í^åL€Þ
-Ý!jaRcªlR¸è]±Ãâr¶=%s•ýNy !©ìà÷ï_m¿ÿÎÝõ•ûÿßm¿zõÞýÿÏ¶ß½{ïþÿgY¿À”º…¡Döïbªéð´Î;”Î‡†ãm½ªúÙÖð;‰¢¢üäX¾a4gŸ…;Š¥c>MG.ž¾j?lÆÈ“×}àÜ|y¢®­iA÷ÿÔˆ%óËbS‰Êûúýò’ð±ˆ9ÎS0ó¼~/¦­Íoæ·$ôÀÁï.ÍÜˆ˜Ç_žø–öZ;ýr«”(Ïz¥ Fó>Ó]ÃÊm4ŸÐÀê™…®ç[Uòž——Ù:$Ù7Úmm;dp1¬Týßnê°µ‹{LÿÚy{y1Ì.ú×ó!X8Üað]ÍŒú½Ò=ŽsøÏ°Óˆh•ß7þ^Z—£F°[|š¨G‘y@oïä${„!œ4F¤÷Y>OõÅÁ[6­ù`€€¼xí99N6‚®}Ç£=×‚€0^ð%TâÏ¨-e©4y€z:Ãô]Þï´>Iƒú×Ç­#\¸`òä³4§»xó“sÖ™6Ó‚Žû‡îW
-€ŒoZi€éAnZî°cj¿Ÿáì\âS<h_ž4Œæ¯4±Ÿi4ïùˆûŸù–	c
-óŠâÃ«êÊÔÏOjjŒ §W;÷znãìâ¾Ò–cqtóÁ³[H°™¾Zr§´ÎHõ
-¦[ª™òÖ}5ÉL´paÂÎ¸Y¯IÓÛi	“OÐdô˜xÎ÷>ûE§IúücUº;åˆÄf’‰®ÆžãG¥˜Ôs¦¤H¬Ã¡HnP÷AÃÚUÐž41ðÖð*êÊ,Hú½Ah¼³x‰ŽÄÌÿ:2"Â"‚F&gî|¯<ØENhÐ–¨#q›ó2[:0/\­”¶(ƒ´õ´Ø
-·o;rÈÙ¾Ž£*8LãBî"ß›_n¶gJÞTþ&Ð"ØX¦R¥HÀƒ i.¸Â }°a/ok5wú$Íæk;YUóÝk¾û\¹žNVÆù¾bqbS¦Q*è¹[#aséçRhÍ¯ôi5•¶±@/[§–mÖj	½íŒøh_cD'R~Ææòƒ@€é>.ÈýX»éÊP4î_Ë-‚Ø#›¶àw÷bR¢Âü&ñiN¾~Ž,îÀùdýâüVÓ
-tE5­ßPÞ@v&{¥ôŽw]Ôºg+ª?ŸýÿÇr:>	#Üëœìu )qî.j ¾g V§fé¯›±ˆ—ddð#¼#Ü›&Ã^‰®Œ’…TSópáQƒ-Tk‚*ªnô èù˜Í*SýÑXk7…Lða:ýcEîÍÇÆÕÍX1{špdŠ¢Ž‹QQˆå6“‚ŽÕPxA4¾…˜¡6 ƒ¸ðÊ½_8`¸*HÎqÞòÉd¹+*vÆ©a£íõÅHc‘R‰£ñÎñÑÞ®<_0zRKäSºQ½•yF)G„MõSK,kpÎiÐÀÕÎë¥-ù¶íp}IÆÀ$¾‡.K3¤6‹û7”où¤÷nýþÝØá×­r ‰Q›ž¤½oÁC[À}#S[¨†lQo_[äÂ±‰Ð‡ØÆ‰Œ"YÜxT¾ñ>JßèxR1­¬õ5}’–ë…2‘¾ÿ¯ŒòB'ÆU“h¢ÒyþâÌ˜%Zz-Ý2˜|€EPe…‹ÒöÐbm_ww¯kùQd	î‹[>NS€ÖW…7] ª¨ë%Òõ¾|¯Ëø°“œy%¤•rRç‰ã,vãíòŠ²Tt ~5"½ZhÎxµ	4ÁÈäÿðŠæ† ‹ðƒbÜ¯xæ¾wQù;ø®	t"}ä®áïÐ^e²ÒFë&ƒj=¢Ì}%+B0z¿ßcqÿ[§ÕÅ7,dÐB¿ÁÃä«“£“ƒ•ì`Éƒî|²&é1Ÿ³Á˜M®!EÕ ¸ãöÍXÈÓJù²,ðBg9>Uµ1âV2SÔ\ÔV’Oïj…µ¿\u¶…À9á/0ãÑ_£:ÿü…’Øà®úXbÅÑ>H½òçübñËt3ðÞØ]WäÁq¿ë	úå^ã¤¾ßU©Œºä«’÷vñÓë³¸—y•ÖTQV0V¼œÚ	“í 2Ôâ&k`™cÀ©ûÕGðDèÒcä•6hš&”JsõÖDäÈEîâìŸ±õãèPì®µÖ^*îkkÇ“
-©=¤ýÕ…Ã%|§ciˆÎ‚WþXÙdZ9Ã1²2kÿ¨l}@™ÐtUÏ…u®ƒ°a.m{„Ž+¥>÷ê%.ú3zAùƒ¹^¹äXb­ããýýcçK®ÃºX³ôÏaá¾ÝªFXè†ª€i¹Äc¯Ù–å
-~‹yÏú–eáÿÐb¦„Xüäõ_(m¨¢ƒÀŸn¤ÏùBëòŒÇ²¢=ÐµvwL0‚ŸÏõF¾Ö=¨úsdwb•¨/2¿?v;'1íGŠÎò ýK{Ù»¼¹ØèU1TS4;ÏJìÁÑ­Ï.i'Ý£ŒåØS$¸_ÎåÁc]Kéÿ¡m2ò\Ûg5›5²da?ÂˆŽ¢ `oçPƒ (¹ÃÒCBÚî8u0é†ÑNI(þ-ïW½ìEñÃ°šL $˜÷ûÅÄË.Öâò ØU6¨±4þÃ¤ñ•Š¨33$!^
-•î¾Ö4F9Åß}® $­î/*^æüjþøy>V…±jê?yÁª˜ð¼/zïáue!«CÀŽF¡ñŸFzà
-õÑ‰Ô˜ð%… øÄ¹³:{ìº) ÉG£¨ÊÕíihð'±)×jçß¡g'¤îWÉ4Kí¬ßµ–9G¦x¹/íœÆÁ|ª¨8B?i–ˆ¹*Æša3:d7)ÒªXw]gÑã(”çÎ–¦µ?¼ÜéJ½–¢•¤U‘à£»›÷†Ê¥Áx"ÜkbrÆgéºÿ²`1–Šš*KQ«h“ÞPª¬z;ÎÒúü·ÎEéë
-ó·<ãÁÞñ>…hjŸE ]ŠQÿl©ÓÒµH©õ/Efy3Ü¤@
-ƒ 95ž~‡í’æóò[GêÌë« ª®0@Zeë¼E†4¹d9(û b28æåÃùt¸‘Œâ~ŽÊÑ~âTãwÖ¡÷7DK8Œ&¾C‡ê¿q\°ø¾’ãÝß‰²›ÆÑgOFštg‘ÀÕš¡Ò¿ Éÿ\Êêÿt·Ÿºó/ûß"ˆò/M«¡gA‹ à×|„Îl=Á/X”(é)b÷gìÁÉÑ‰©™ØqÇbñwÛd€bE«¹D°…¶›Wùœöî‚¾¦—'Ž/Èù_=èb	ì«ãã£©êãºóê«ƒ“ãÝƒo¥Þg­VCöIÙdX]Á¬,°ªÝKÕ»¼„»¤Û.éËºßÊ?\ òo†‚¡L‡¸uQÑrÑÄ«Þ¤Ä»…ÓKÛ4ü0ïÏÊjã=^BtÓÒ¾jxµ¤öe¢•ÐÒm7ÖS|üo<h@æÑEÞA>µ¬H³	„rv+‘ÇŠMÁÍ•*«(D= !•Éß¯G£88Ú~ž±%üèñ–ÓmJŠÉ/á¬ªµ%i£‹æã”¶nYšŽ‹aÝþXé«¼çŠ;l6È{mÊH'‚à(OŠÐL1Y~Ü^y‘OË¹ó^WCwµ³RŽùA©ÃÍƒ†×¸¦ë±Ò SžgËö÷vÛMõ%8ïŠ+)Âgßg­Û¢n}+'úŠÁ¦ôšzf Õ<¾–î‘âþ«þB(8¬åúñó¬EÊáwnG\D¸ýðãóçrf•@£G[=µ–[„/ <	|Yª¼(ECRÑáFÀ¨„]}"ækƒMüŽ³ˆ5D-­Ùïx÷ðàø¿;><9Þ;Þç{P8Óaç~1E¹šJy›A! ½B¡;’V¼.†¬JEw0ï+˜(hDóáú†œÕ²q59´§A²m1¼w_ð5¢vJS.\·ã—O”ãïÐ£Ê‰m
-å˜ô`…gw°pv©“O+6E…ì¶VÐ9¿Äh=Z—+[×Ø{¯sx¼‘>Èga%,¦¬_²4%R&ÄCóº-˜´™“CÇ4«èo°¨û-6,¸ie
-­(¯À{ÂžÕ~Ð¨›®ÃÁþ¾stþ/xãT÷¾Æk"£…Õ›°­sí•«¾>Áú?›ÏÒo2¸G	‡Ù¢Œ³–|dèÓVøe¸Ï·™Ô¯&2{„þ4oÏ³|Ííä’¼H„D,Dö¸%¦ÎÒ)ñgŒëâsŠacÛÈ/©:—	ÖÁâCÿ‹ô%ÝÏà¤~Ñ{mî$ÖcÆðÇÏy»‘bÅö~JŠ®p³Qä6ÿ–v"‚XqFÌáø~DÜðs®Ï^¨ÇÉBÝ?Ú9:<t§7±@ÞÁ@˜;,û3¯Zíñ@µ-³Œ™r.e.žß&Å•üK²6¸˜p½‡ø(±­'=˜ƒ—%j_È.ð’
-…6ñµ†ÀUXó6|x ¥!IæÙ.!B1¢l:0O)!K›P†ÎgÛZ!­·ÝUÍÇ’`6à{J1ŠTÖÖk¢/ò€¾ÊÊâ<NtˆôÈ˜Í¼J1KoŸ7i"K…nÔÛóq ¸ôÙì˜ÇçTx-ˆ©AáWTB ­<ŒFdc[iZvšu×7RNù78†b€{ûqÔæ’ŠQNê¶s°$a][C½å)›½uß†¡|íÌLŸû+8}‘kâ§eu>€’ôà ŠF{z îï±¹ÆˆSºRV2³ÌãÃH©n:T$·™92^æ¾«ZÄ>Ÿ¿¾ˆ‹U^Mš-ùÊyS{ŽèÂ¸}vÔ9ÜLâC¸äŠ­Èý¥?D‹0VÎ•Ê{¡÷iDh+²Áµ¨Ö‰ûZååG!êiìÒH¼‹9&¨s€ñ¢!j€q›;( kXŠy	¼¶Ô)å#^¢ïã¸*f]ý)’ß>a*Ìµó3|B^ªÀ[[žÇøùOo^’û,ýøâìýÏo—|Žz2¼d–’M­ÏyæÓRòHICµpÆ˜‚O¥ÀÛEÆ¤‡®èp5œÏïË<oôå|J*‚¸Ýæ«ããÎáÉŽ(uYrYò©vü‡º•äÀô„–AŸ–<fú}Uaö¸Þ½•O~?éž1›\ô¯Ý]³ì»‘‹¨þÊ‹\«öM>dœŒRx÷­ºç—n{_•}ƒÍºkj¼³éª©göŒgëù¨"1ðÞÍà¸ãb `=6ÞÎÜ;Bã^<¯O¬c›ºñ8+SZ†n{4yk{tmå	ÍÆšÆµnéô´ôzé1vQ±`­½fœy«°¥ÙMÀöTÓø>¾MªN$ªy$#y PÚÍÀj{I6ôÑ¤Ž^¬zY/
-<]œÊq'“Æq ñ_@=d_|ÄHÖy‰•“ÈlcažvwO#¨«u*º§svŠN€-OÌÓØ÷këÝý¤:Q”4‘
-…AdZÌ3C,Þi[ÚÿYûn“Xj*‚¸Z¡ˆ” öXnwŒîD©—<ÍngïèTçUßÏ¸¸‚7+y¦47¨›¬^çº= &:äí.¿Ü¨ó±Ü¤õ®¨èò˜lÑH×ùmµ¦ò‡V6Íu8ƒÜÂÓ·6}MJŠDª‰ H@x¶tÆ.£ÇØß=Þ?ð¿†§…DÊƒÚvšÊÛ…¡ÿÑKß;<>9µ9fcó³f-kIŽ\ýLž«ªîÁ<:˜:._¡¬$DuH/ô„Ú¡n/ÜzçðäÈ­·_EòÝ–RÇÒ]%u}YÒNòZ¥â=“†eÛBû²ð¤	K¢~&2(Ã ½À†‰ÍƒUÙîœÅ/‚±Ú½'Úïxc’ýŸYBµªdãêÔº²µHÃT¸s{ ôfd¨ûDVµ³Êq¸§¾>€TyÑ¶ìÜÛMÏöÝºž¡.d&|õ¶ÿ§dœ)?S6’ámÈ6_Ë¦¯­Ü,	™Þ¢žqŸ…¨µ‚é{Nd$Jm	Oaœ4?2‹€j#CX?:8ØXöPêïFÏµÂCÑØñ¹øzŽ¢™Nˆ÷ùàíè”,©ër*&™.Êê.ÐQëŽÚöü³³­=Õ°–”™ÂÓË6Bÿ€"t!¦9îï9ãö,lÙÖžÎý$ðL~Fö9‹vC]À9Àl¿!ËY±
-é»¡2kÆU§ú*ŸÎ³Y‚Z;H&É¹csäü"((x_F2ÝLD5i5ÉÄ]Öê3Î?ÊiAT*yB• ÌöÅˆRr÷xS³¬s¬Õ: l`ÑL´ÍYOÜxÔÀ¨ä]¡z€¨>ºc£7öÌv_‚ˆ1ñwàªrÁÓ¨–û„²¨ !2ýîææ¦=Â?…n×i_÷%ž~ [t…SéûG€Å…¢HßvŠø²/Ð¿sXÊ‘óHtmË Ôï‹¶•g+¼ÿkß]R¥l˜ìï[íVÓ^¦‹ùÕüCžý}˜¦.HÈÃÒ±­þJbãýýe6æçJyûPt¾·+{|°wxrª'¤Ô•„ÒFÅ%¤˜.	¶¨ÖŠ¹á	%§j*…Bª´à#+ÔD”Š5i—ÔUaŒ<£Í+šMW)Ïn…ÒºÛ¢â-©¸+ÃÛßÒø%¬`ww¤fõÎ™C#K=¦ðêºßçLIž
-ì%Pd’ábÓë@­ÑErª°á6m`l¿ãÝÃ%ÚKùæ~£ÍÖÅ¢žTh‚A&†g úÕñÉÎñÎ¾¤ÝI^|šP-	ÏµàdË®ÜRŒDß¨5¾îÑÅ^…PT°˜ÙIþô—'hÂ;7ï\dŒ×´ÈÉ×@RtŽ”ÝS}†‹!až àºõgN>Sâ`»n$è°qÑÎÅÄ½Ÿ-ô3*¡ü(+ßÿº­Ÿ¶¯þ­ÕIv¦	JeHrí~¬¥Ç_Kg¦mY}[VEõ6NñÙîV—u÷¦ïí
-úÿ¦X›âLÓ­Ê¯¦…wr•ÉÚl€ÄpZqèÜ²—¶ª<•ŽïØjŸ{¾¾ÖN	${ßó¾¥ý†PCBî›cØ’f[Æ¥{úf¾P²ÒÈ1˜]^ÞÑ xQ\J~¿è´L >tSÅµ1iŒÞ¾Ê¶YgÏÝÓcºa¦î›QÝKûm¬ºõYU­/Äe—6ò4ê{ûFäã£=æîÃ6¢xbåh2T*±ñ€Å°Ucu˜®Q,P¤AÂ Å ^„Äk¨´|tÛ:cçacÜSO\tƒÓÑr¬IØæY4hŸ(2S	ÀùAÏe–8Ý”@•ç¨>æw£^=§­àœÃÔmªÛ}ÿyŠ]\«ÃG“&41ÁX4Æ{.ÉNLÜ;+á|ÇVìv_ž¿:ëv(Ü³tuVº½áf<¦ÑÇ‘îö2‡I”£–X…$içAoM^çÚVŸ¬k‰¨µOÉÖ!…æð—œyøŒ‹k&/o“¥TàÕ·Ò˜dÎzÎP¡ÛºU(HÁc…aþHáfÑë¶à|ÄÒãêC©ÍÛŠB´xÞ5ÊÊ+0Yô¥˜—óOfmµuÑŽÀDÚW©þc ÚÖÅÈRT¥Œ±š®L´`z¸±.=™¥{Uƒj4FÞBôº¸Ä?øoúG<hD[;©ÀôW‚ÔrÂ“žÑv4˜¾qÍ™_e=î¦jP††B‚Ÿpíù•‡Ÿ³¨™3{)^¦)ði®pRM&*²ÀðÎ¼(ŒF)ÉÖÝªn/\lÕú‰ÇÔ\òF`àk`”éP¶À‚¯ð}Z€4Ì‹o™E-­ÖÍ]ìp;ü÷YkÌ,0@ŽèÆÎ|7¶‘y³M=’Û‰®ú£G˜«ÚÐQª|OÔ'‹°+ñuú˜*nüÃÏç.|¹")øÙÝÚ9Y%Ë´ëõ+Q.Už¼^`=°vŒ«¢øàæ"¸5l€š"ùl&ìØF%)sù°*g‰áyhNu×—òÁ	½*ý<RÞaÂ»É³õÍ8uæ¾AEÓªM†wÏ­q-ö/«…ÝD¢ÞªÂë×³Ùät{9	I<Ý†Qùõ7àâòU8KvÕÝ
-×œÝN¤'è}(öÆWi2Y“#½‚4zÌ5ƒ¯£‡œ1Ýqn%óßdUìj³€·¢¥ûÕØöŒ°E¢èÞ)]­´B—Óþ|„Zv?ñ?wîë©7ôx˜åÙ¯îxÅxt,F'"à´S#ÉGLò§±fÑp€)>7ÊD›ŸcJP5u‡óµX9EæyÙbØøþp‚Ì|cÕÕ™J<Þ‡RÎî±â‰Ø}@.GåŒÁ±{þî ÈÝÙoÜìÁ[¼/é€«3Íßpí3qãK%nÿž¿5º¸Mnø
-÷©$ü™ÓŸ	Õyc¬Ÿ%Q¥Dþ–Ò6_™®`Âpî
-eÛqx0X-ÊPÜBÚ)z¥I2‰ÀI¬^bqÍC—µm°Û}µ#Í}ßš\Š ‰NJ.WMB)‹1×Í…³ 6Ø˜¥ò—g$K–ØKÆä‰[pp Ä-}NÜÆý^Î|‘O j·y%{6t-·³Ó$MÒœb4	Ð µ6XD}[²öøûÄYZt ›eº·ÆþŠŠ³mgÿYÍ¥¡bË™xžÚ‰wjFÿñþìõÛÿÐT¸TæC×¨¦ÅÐxJ-ôlÿ)Zf+Õ}:'Ë(*Ú
-ÞŠŽ9ÂÜyáf¸§YðéeÞ/ˆcáû7T©¯î›kÓ‹C›UœÓŠÎ¥›¶ÇŠ[?¸Qq7¹XlË)ï=vgkog¥Ç>ŽÛäŽB½9`×”¼ÂöbÕëº#`:ÛvÿYêÞ¬(ròŠoáby%¬Kç&Ðša&K¨&æ"ðŒ/=ÔfË™V_?I7 îù›ÂÖk-UÜÊ´nD†‰3<I˜ü^.&Œ^kh »u«T[É!M> l»ø|W¾îËª?¯…6+AR½¡pi”JÎ—ó3Mä°GÊqÍuPšì!âÝ	E 8¸®¬Ú*«Í½›ß f¯Œ{rZ7(­WÖ£h•«-týMMYÊ¥9SÒÇ4,?Ì¢jêŠ²%£"–R7}«§¶WXÚ”Vâ}^A”[ÁÆú/dÊ¦öúEæÙ&°DÂ\³Jw€Û S*…ù¡î>ÌÙSmŒq®ÚõìV’7Ì/qÕ”U_—ãR£dA"wo-ô4®Ï„QL{¯—>ëŸçÁ­H·„Y"¢ÈÇ·È¤ÒlÙX3f‡Ã8àð(Â¿7³ó5°£|(ÌLlÄç§nwÛsa4¯4±èÎNû„ƒ¤³Äh„Ç÷µ’óGÛùOñëº¯Ðä*+ËÊÈU¹-c¶p•üHZà— c	¶ZåR1S£¡?ÍK8/ÂîêÖú|¼!«;Ô[\­’`ºVÔìàk¤†”À<X“z½,»0lN‡ª½»wCnäšF¼´Z•}9¬’Ë§³s>Î~WÓF»Ä)c)cM®#.™màÄÐcñürÑE=Éû…'pPf±1ó`ôžºóÿüLÈ¿$DV¯GÐÐ!˜L!ŠÊÑ—n¹}€¾÷84 ïòAY©ž¦áâzŽt9¼­á÷k—¥@
-ò¡ÛWµW²c2ºþ®æE1•\7¾ƒHŒL­Jì%hÉZA•Š 2w.I¹ÍA¼Ù/´¾vœë}ë˜´Eùp Ú ½‚í¯íï°©€ž–s¸Z²Å;P|<“‰ž‚&rêöz4sÚÑ¶¥Eó8÷[“qž—óßÚ„gÊÍµf‚;‘Šò”ËBq7ÑÏ¾Ò´™Whól’Ô©R ÔñÐ²"ßØ’Oùs	ÖÍµ”F·ËŒøš€#]ü­"t¸à?V,h…nI	{–H>DÃDü¥Ž3Qû'úïk£qË:É[G–Ú9¦swËç["&
-cGˆ>šÖE¢°*7X=µä‰Í~XÁ·“r-d˜ÃPÒ{Þ“
-;Í€XÎLÉë)>Ë¯–0=h" $ê]­3òü,5¡ÆÝCø/G°aSKç0NïUŸT'jí%Ìš—S|…4¤‹»Z‘ùHÛ(TXÏ–/*ÌÁ¢4‹¬i‹.]Ì@à¬tí!a**ƒ–Ñ}=c¤Ãó"m§N'['	î†1’Iäë®Ê\ž5YÍ3cíÍræEfŸøYj€À¬0z=\`µ ¦4¯ß`W»Ó!î1!læ>q¾þ89®W	å$’ûÉ»×ù|¨LùmŒQ”+&øù/ÙèÞ%(½• aÝªw±Å´¤T/“ðEïª2%”ßâO Ù2	ÔŠÚŽ3i;áh­Ö}kº•îfãb#‘{RÀ¤¥ü ßB'8J"Ü\WÌ§`à…_R«ˆsËR+ÙD³²¿&Áç¤/ðu‹–.’cE<Sr ¹ªÐ¾þaÚ¾$òWjãL¿)üDJ¦3ÅhÈÒy€ÙK1¤(O(¯g–CV;Î$ùoŠž¨3:jÍÅbAð‰düÛÓwb#Ð{Y€Pš‘nS“î®QŸF?‘ÈEªþS­1 &ÕPU3Õ/êp|m»Æ†] :1X K…^º¼8
-ððrÌpäd™ªÝ[@#röbfSƒ¥BÚÍÇÊ\l	FKÐP¸½s‘_æSQ­E ¯Ñ·¢)"«lJ®äò>Vè9J=(£é,¡AÓÉe…œÍ//kz¾æÎngíPD*.çCßµ÷§/Ü:G¾–e_6±:Ë	Th´¯wî–bMïëË¶æA3px®•]€èoZ®8{O~ÿãOï.8Ø«ò#º|GˆzÔßÆ`ÝÜqÓ¨¶pÈJÝiqÝD‹g¾§U´˜­Uà&*Ú­´'XBÄsúT¡±|ì…ßÜÓ
-&¨i
-B's)VçÚÿ_Ã…µpz•¡:^bKÂE3ü\ìÝú^J®15?ô¶ßÓj…˜Ÿ.åf™fï†ÂA¯ß_¯:[Ph_•—‹V–¤lqOfÜGBq ·+ÒŽÙF'½Þkè#uBtrµüå¡5­‰¹&¸-u”2¹J´ y²¥G±í^Èni:jÀÃ˜¢¼9KAV’.5¼½àsEoÂ8ÜåÛñ–­ï¶wÚ‡‚¥#¬›Í]`Y=KlÛH˜õ—ä/b·¯û¥0æñL/™L†1Ï­ƒä5/Š&‘géeß£ågôBZB…Éï¦ ýÀƒúÎ^?;{ñâìE÷üÍÅù‹³îûÿ|{–}Ÿ­é!ûí†^á¬–hÃ2õ5Y~'j©¼¼ø•îfÙß*T²ú˜ò9ì;óþú›û‹[ÍîŒçõbÞ]Â3•;
-þîŽ°kT:÷î©?ò—ñ½ÿJbâ¦Çw&VDdÿêé»Î2Û¢®W^AÂÕ$ÞÜû}ýÓ»3!RÐ@æØœ*&ge’‹½ÿøŽ–F-A<Þs{cª7–¥‰xÄIsm<‚?ÌÛRróóxQ<ÛowÚ;øÆ>Ûž{Óo}âèR…p 	Â4¬o„C^yöVêTZ€àÃ½gÁ§D-|Kgmwü’µMãEöìü‡µ~ÿòXu¦…îU’$a^Q¸
+‹Ï 3C ChangeLog.archive ¬\ksÛF²ýÿŠY­«(¥DŠ¢$¿Ê×[–ce-GW’“Íæn©†À„	b<$Ñ¿þžîž¤“µª$¢@`¦§Ÿ§Èh8<è÷û»{JÎŠ¤Tÿ4iºT/£y¬çæ‡º4E9('ƒÌT¯”Ú<zôÝ÷ô[™ÔèÒ<z4
+ÖøI/Õ™-Ë¤2)–ye§…Îg¸ð•Åúg‡ûýèªìw‡¼ðáLgSóB}4×j\GE½«Ì˜ØÄªÎc]%ÙT%™*Ó$6åÌ^+Åê*1×—‘Î«Äfå‘ô¼CÑ™YØ+£Žþ}Z$YU*2eyG5±…Êé:þk¯@Xo+UÍLR<úN©ÂüQ›²(u’`ïÊ(¦íZL…ª¬:ŸÕÈœ¤Ëoþ.¹y¡Þ,s]Òn™]ÒáOßŸ¨q=å]“²4Õæã+]ô_Õ>ÿÞã_½ÿlµ+œØ8™,Õ¤¼œ$©¹œšê2²Ye°÷æí[&‹:%²Ö¾'ê“‰J*[Sf½J™›„Oòã™ºÖD;Ñ´öœºNª™­+ue
+ì{h¥²Îs[T¸½À+r2Y©^ÔÅÜV_ÔËÏøó‡Ü$™Ä&Íá/çýñ³öl¯Óq½PõU2Õ,‹dšÙÊR˜ª.²ÊþOfI_ µHâ85¢„ÎLY§£šA^:[VÉÂð½“J“Ìð×¤h&)Þ½‡f=mÉÏÞwÃDãwLÒˆH9 ¬dAÌb™edáp¿&Yl¯ÁÝ™ÉèÆý>Î cŽ4ÈˆI)Ç©YˆPøt6Õ'Pøö­EZèPÃç·“Ç“à@ ÞËËŽ£tÌf›9ûÝ$SM²+ÛÝR¥¹tàjK7EHÀ³{°÷ ¥æJz
+“M²È…‰*UV]9µac"ÎT38œÄ—êìüÜx»à¡ó1êÚFe¶RcC‹€Å¹)à9±|ZÓa¡s´ IJ-ûÄþ~ã¥ÀxV-øÑ¨’ˆ 0e’L!ª/º5nøô,ÙoOð+'ežjv'ZgRÚ8­Äñ¦škfOF_KŠHÎuÌdð¼poÓYE*õ‰fÊâ‹Â­S®P~mÚk‰}œ€`ÐZÍÜ"Ž{ù%YR%Ð¥/ËÜƒO£vëãFOà\r¢.Ì²Ï"ˆŒ…o[	#!¸ví¬I™={0îÇ¦»Ûï{¨Cì¶‡H“ñÎ;X÷ Ÿåp
+…1’_f®É»•jRØ…SÂŸE3ÙA^àž÷ /´Ø³ìÞIGúé\ÜJl£šÄ4¸.@ k÷,R$t”ž9h'
+ñ4N‰X$ÏBl×!ö¿’ÈÁ÷<*¡ÏëÈd¸û
+¸ç´@ÖÛ 7^°¤¼U!Ø#²±a Ri
+sÐÉqaçÐƒþ+|· @Ö}~ÿ½þÞð.ÒôÄ:ùÁN§¢H2Há-µ€(]cÑ
+e‘ŽðÙ‚ë$MÙzsE¦% ýÏ(!’T´ð¦ÈÎf`|Ê›ö›M#M:o¶h=rèÐá„üþUÂØFåtP’7Õûð¬øÐ™sƒ¯kxO`˜ÁW0V´ˆv1bÂvÀQâû åéèù}x˜¸Í9\±‘d^ÑÃ@†ðœdeŠHƒ)>ËäbCœ£`ÔÖÐ÷ì–:×À¿Ú"¦=lèa˜ßmèx‘xàYnÖmð—JGr‰n21Û`0ïñ¡ý¶¥ð[Ý²£p÷yË´¨°ñ®*ç e¦)ÆÿQ[ÓÜ,ËÁ=6	 Ÿ´Ÿë©!Él‹Šö]`ä+•µi¹÷”ëEß©JÉb„b60OîbÔõVÊ]SohŠÂÎÌbl³ðûœ\ßBg ƒ€@áœ}9‘GÔ‰™ðóž¾²ÆkÆANApÁ&Rè2ýÃ®)ÁWV¼XækÿŒÎ²Þ‹:´v•Îç·ô³ÌÅÂ a:ÀÝ0÷ïas»O;
+þ)ÇSð¤H#^çyj*N€vûƒî=Ô¦2EŠS%—²J0Ÿ%	çMàfšÚ±Àˆöæ_|Ì¯£E
+~0dÉ2LOÝA‡%ojq’+Žœ5¤WW@y(1qþš¼°K)Ù	‘¦Có’IiÁˆÀý¯¡ôÈO9ëèXòR"ôß&k²òe
++m_Ðêä€ÁwN±%‰$ˆêh~Ý+Ùªÿ¡Ô÷„ë/_}çNy—?N€,]ø¦ÐE\—À‡3†,·Áñ†ìbitl÷g2q@QJë5cðPDþ4}]?½4Š²t°ŽÿË|üâ:‰«Ù+òöA´‚ÄŠd\W&Àa]Vð …™šÌP=â¢óe#˜1G®m1w)ç^`Ž»·Œk»A¨Zâßc²¨ñîl¿i2¯ñ>ý9¸ÇVÃÀ?bAÉ*KŸXÉúATŠlÿÆá¦·XAP?s	]F ÒQ¯ÓÒ:ÐS¢%osƒÈ»‹ÄS“5ÔùJˆ_~¥a²|{’ÃêIÕÙí’gÖ…8X$Ô‡¯±×\Úšï^HUIt; æÉí¨é†…×HÙ©†1Ææó_àÑ›K°*tVRÙŠõ=(b\pÅÅlRpì]@NÄØŠH£ô„Ì}¦¯èÊHWi¹«k
+¬Ðâ-I±©ˆ
+¦AónìTþuüŽ¸w|ò@Ÿ‚«¿w°äàáÔ^CY­‚*"”d€¯*‡œá'Åaú‚ÝxéþzE÷bÕƒÁ­·„p®õi[½Èqjs“LXO6•QÞÜRÚc^	ÒÀOüÍœB¶U<Cëþ#€«»·“êþ*ü:»ÀÉï[ÐQä@6v;{w¨žFDœþYCIÞ'ç“GÊº(°\a&00qñªŒln\r¶­fÕ"õ	P)åS@Õ:cšË¢†èiÇøF÷ÉŠŽµa^ÇqA¾
+–÷æââòæsêˆù•&wàRÁ_é‚)h)¤j|Rº ½"£õÕ¾VgU	Ùˆ®¯q¢J»õ8!5vÀÝP
+ ¤É=¶—ÄlÊÚ@éK@ÈÁÄ!<^©Á˜ã
+h¨µ+²çì”Yf¸•j _La,wœêl yx+s.àû
+ñ©l_vÙÐþøòìè?_GÀ(ò¡À_Ô’ë‘ôK©Ø¢ÏÏ™Ÿ7‡ßhS#§ÆŠødj8„ò8'ê¸dU™›*ÌYèˆä½ cŸ@‘Dœ Z)‚oû8KÍv	GèÀðN©¿?B ê¤´‰É£j`ø1’"Z@p$í"ÉÏUùV¨¹¥ˆÔbhX¾,¨Èâ¢EÃ“Þ)z¸FÝÖéÌVöW€ºR}:û°ÚR{¨=lq¢çFq¡‡›+ÄÓÞ{³üŽÎ¾‚³Ñœ¨*ÿÖ“¬zžQs#©`øTDÊëü¡èZAq¬z_IÄ{ìð°>Ù"E¤·ë$"‘5ÿèbÃh0\[Ð¯'ºÂâä$Žë5„±‚³|k¿Ë“@®Glœ×¢Ê-þ#%ærC¸ÈåöÜ„Þ8æÚëÌˆgæ.Ô_'%u0 ô©³¾©a]ç‚ˆÃ=ƒ¢ï,€ Ëe­V°HØØ9Úô˜´ž#ˆó] )¯ÃMH3‡Š²ýÐ§!o­Ôç|Þ#pN²%¢¨Š^©Ë¶¨fT7ÂX—µâõ‡Gg¿]žüüöÓ‡£¯OŽÂlÐY>CæÒá‹‚$÷ç¸ÅJ*ßTM±2ï°°Â¦Œ3O¯{´4}ŒL6{]–ßj»N•„H%!ïU}i+å2œá¸jZ¥tÖšr@Òu3;woK óGÜ(mˆ—‡£[ZFZâÏÈk¹&Y2víCr©Žäc®“¬’ešDs<÷8ì…úH3 \Íbª~ñ8G’°e?ày¯nÐ‘–ørÜ‚t”¶–â_È¹!MèÆ¹˜¹¡¬ÔíØ)„àfx§:Â¨SÓöRäú†dŽD (óCm$Úo“’c}oZ$1å„¦ç»#Î^8¥ìQÊýX†’Ü£ëD²HS‚ýBB‰%Ü¢=;ì&ÉòôD£pGONIHÈ€•–ÂÍ1ÏPînŠKÙe¯ië†ì8MàøLÿC©SmëB©—9ýö¬ÀÇˆ`-œbÐz­ÇOôblÛYWÞ¨%êi.vúðËNeç	›=2p*ªumû[»W£õúWLbZ“åu2ä"pabù|M²ßõ{ú£ûÝ•Š/©|„?Yê;ž˜¸GF'ÝVû[¾>Õp@™
+pÈƒi´DSuÅu´ˆ—ÑpnÆÐ­ƒ}ì¼nÿ•[§ÿJî'—E©Î2 ÔTåH2J†¹@À£‘”£o#'&PõÝdø#’ž6iÇØÐÐùÂX“4©–6(”sŽA%WÑi“Ë•Šá¬FVCX5Ø€‚1$£ó—W3c®2)ì¥Æö†ës®þÏÎýÜ†ÎÌ1sƒ"·ï’ýL37Æ4%~È…I’Å}[ä Û”«–¼Ã+»²lcÜø¥Vä{‘³Èá¬…Ñ<LÑHMÉâZÈ[]irº¢n¢PŒ=–g“j°ŠæL,Ñ÷­¡I+Ïxî¼ò"Ý¨83¦)’±¦‘,n"2ùâ	VRDðmN€Î
+ËÓ¶Ê0ºc¹~Ôé'S·¢!”K)ÍèˆÕàÚyWÕä¢J:›¦íï€j¨´eW¡§[É¥è*`ã\
+eôü")ëŒÊ+tjÙÌÏ…‹=Ø‰÷×ƒžh´+$2è¹"I2¢TMe_L,LºtÍV!DA\%œ'Þ‚oë»ðŠð‚Ôh6iGÆ}.yøÉúš³À÷¥åÄ‚‡Ûþô±;S¶h¿”š:Ø‡-ç‚L-ìÈ®…“qJÆHR¾¹~?Zo4¤¿‘C£º²	N.½qºö—„’ºGî\†B5æ~¬~ÿO;æ!ÎXO5{7é00,ªT¥¸¿&÷@nröDaÞèBÜá»w[Sî4Æ5êt8Â¬ÚTè&8r™Èxé##Ý×“äFû²,Â
+\B9€owß¿-à:àUœ3vást -µ@•L{ îVnVïýÅÉ‡ÆÏ¸šbëÂM“QðÀ•Ÿ!F+O~¡>¤Í6·œ¡S“l’³g7dk½ƒ•yzOztÔgk"ó çü‚	bi¨²#ª‹5ÐÚióaÏëâAˆïXÅV¦|êŒæ|hšo¹-¥öJ¢õÜ•çeóÚÕ6âÚøjEnlèÔêœ:9hÎ¥n6ø‘R.ö"B
+ê0®€[Ó‰«…ÊñBµ¹ÓdÛhmp–údêüäâ *w¤Tæj¯ÁÑ:‹|ú:62…ÍÓ°	e¢:I?Øé‰ÄõÍ`VÚÍy·U	'®#Ö—šÊ'¨êœ®L»Ðã²#²QLYX?™ìÆGˆ¤ AøÚ·diôÑ"æIdâÆáéëyS´_å‰eêŸI1OIg^~Îç?ŒÓ’§ÕƒêhsîŒþÿQKÍƒ§=;í?(Ye©æ§ÌMD#À×¶žÎÍWkËÃ£äàN§á!3_•‘Ò³z"ÒËÃ£êfTZ¢lt~.žc÷,SÄªÒ”¥ô]øÀzßÖrwøãk†Å å:óÝîÎcÛõÞ(¿I® rÄ
+€'°[¬Øõ Ì]çî+‰MSzaŠ¡¹ë5N,9§­âb8<Jž'µy<i±(×û*O©4vªŸÅRÜNªKÝç½3AÐUê„‘çþL€náÞbVµ+cAîhò¢nb»JŒ/›º °õ@bpÕÉ‡K*Œ¨¡ÈŒÀœRòwÓ´~šâŠ_Ž‘rÐdi}Zl ŽÄ{?¹öZ>ð&·2‰BPVBÉ
+xI³rC¨‚›È]Ùm@ñ-f|…À«àÕ#uß"%÷ dq—>­ØÙ~7Uw‘€Ž°Ãz¬Æ¶ ÅäF…pÀ’ZÑ„zù Û‹ï¥É¾Y®ñ¬jwøôùÓçOèHã:Iãð%ä> T¥º.,Í6mŠ{m¾lþlôäÉ®¼ÓÅ‰#GßàÝ	²Ò`Ó;T&Ý¦0¹Ÿßñ§Ë¦@‘ãftðÆË´_õ/î‘Þ~¿–Y€À;Ls;w…@o9~ˆ³óÊÇƒl4ô±v‡{OG/ÔÑ4ƒó|ñG­©úDš,óß½~ÕT½m™Ûw^üJ“9µƒ‚u‡ÏŸ?9xîóç‚Ãº§®,<Y9ÕÏ
+å {Ïƒ%+ä·(è¥f@¨”Ü/¸/³.•ié¦¶åJ[«icðhl£²ñõ‚i†ü;·®WûŠäí½KN0éR	B¿—†&z[.PÃæÍŒ\¸:¡Š%ecJ½ó¥àXtŠÀ­|rã™ßßU¨h¢•T£Ãt7sðñ÷77´E•)UÚ‰˜Fx¦†ìé¥~la¡í>à—JPráæ9täLn~–Ï7¯Ýùžúó53ŽnÈ€^!ãÊ° )Al&üö”Dt_ºràª8Û:ÿ¦Ë¿.ýÕ—Â-éÐ4øß%˜'îU˜_¹K2Ö‡wZ¢ø#+"—jþâ&Rëÿvç_Ró	ÎÙÈÿk}o]=<b'8üÙ»£Sz§ë…ú;¼øh[æâ²öMK	î<­N•t®Mé"š¹vô ³ù[ËŸ8I*BI&a/1âJÚ7ƒö³b2¢šªMÇùã…{#`kz9`˜ùÑ rN™¤¯ÇÊKdPþ‡©Ö"óJ«b‡ê;\SCÁž£>ç‹å«OÓë¶127ÐÊÃïï,ì˜Ì†Þ’È©‘h{¯™]‹»Ã>o-ÈZ+˜—/6¯{b¹n}Ê™ånïÎAvïI‡®S÷BÑ,Ë2ÁûV$¶SX@]È¿,Ûwuéœ†ÔBÚ—á|½_Š®Ýåöc Ù½×A¾zænˆáŠ›´÷5'¢—ê4È÷xøiîNÒy?š†–¨°¦Ygð)		’³ÑÓOçïiÞÄFòâTA´•8hoaÌM·ÇO6“ÂY8< 3U»‘	ZôÁW_%íòŒQw• "œP¦þr6MúC>œNËÓVíûct_>ùj)Zm^à¬ÐÆñ²2Y2ß
+6¾3 ÙÛë+œ ¨³×è¿/éK^ÜÕÛ¦qRš<4Ã#|tÁ$«¾{ÃµLyºäV ÷çi-BøU¥Q)ZíV©Šš
+Òdô*ãh šÜ%Í»—•u•`	:Øv›kn~	Gßº.óÐÖTNã>T3Â˜ý+ÀþSøañ¨³ù9ÂÐdJ6¯À®îGâ·ü– gz¡^‚¡×ÍŸ±ángÃ7õôï@ªÏž^¨ßÜýÊ³Uj©ë…t©rÍ—}ç¿ó…LDœz¦²Ÿs3—ö7sÙ•œ¹HCÞ¶ Yù˜‘ÀfœèifaÑÖÊã²fû–w¸
+QàÂv‡-ß{†FŒëñ˜Ú—a|–/ä=S†d¾3±æ`TémôÂªöÆÿmlÈk^TÚAD²µkBùê{@ûÁ-ÝÃ¨Òß`K¨ò©â/œÄ;˜É\ƒÀl«»õ7³môlõì¿J¤åžµêüàÒNÓu…pÖ|ôËÑÙoÇ'GÍÿ‚n,#Bï+·®urY>ç|7ÂÄ+Ï®ÏJÑÏKZàÕÎWwlÞ-o¶”zšìé×ïìzYVËTö@ÇšþÇ®}trzñ½¶ ÜÍóU0ÍVë+š'ø¥B6SSÓmç3cª=›[Ûêò+WÛgIçxˆ&Þ‘„Wq£Uo ðf×Á#ñ‡g¾øùíÏM{OZëÖìà'”žûØ7Ë5ÄXà|‘¸g}L>î’¤ãH3Ê³±´nè+ÐuòÐó)Àÿ0¿ñý|NOK@9MœmCÄñQPu BÒ+«]¸éiÿj}ûê½.·Hù€¯M6M“r†‡[Ë¹s©f´–t…%eß¤®
+—þAC0IÜçãÚIó†	Žç$åC†ô*údÍ,­ÔpÅEàk-# `^dš™ëÿgî_Û9²maô³ý+ÒêZôFq§|ëºP6½ê¶²×z{õæI¤Ò%)µ•RQø]ïù¹çwœcÎ—”ÊÁ>çøyºm@ÊŒŒŒ˜1/cŽ¡W›i»¨ÓÓJO…('o]z<…é·ÝËå-\ÔÉá­ÖÉVOé”fÎ‘GÓEâ3ñ›ëY1íub+µ´Ï¹•:ÏýÄ/Z.«51¥v?­|b“öáäõ:Íû_ÿJÿæ¿ÿ;©»$^‡´ÛˆšWëñÏ|ô‘Š{Énîí ¬s„ß¿#NvWnÃ®/¤Ý^ýt.q¡vq—lîš¦…ÆAüQâ¬–©û_ìëwï†´×çŠ
+KïÝ„OÐ¤Ž)hŠ_ä3·O³ŸŠâãëêÊýÛpèÆw2è£^ŸSg2HÐÃ´Ìx
+§•ùêøä´îÚÞ«œ¦Ø i¤ÃÃ]K EhFuŽ›ó¦t‹¼d/óÛü:zšû¤d_óryœ,Œ˜Ûu4ÎFH!$&š¶”—p_}šidã\§áþz””ñˆ†óñÕ‹ëJâæ‰@¬p­u½s»¢”îŽTµ²¯Úôú€pŸCÚŒúÛaþ±À¯ß¸ˆ>yÌ×tÜ5Ÿ†.ùõ`Ž×ÍIöÀùØÃÔî™r’iûÖº:]–4HýÅÍ%šÜõ¥°ßì¬ k”³n:´H–À'¯Ëß€3pPqlÂºam)ÂIÑvÁ	@ƒH3"àÃéuíÆe ç:dA±t7÷wv6ŸfOn†oaÊ±Ð‡)c¹…¢³çów>SCùHxÎ ßaGÍ -d´W±|ëbð	V¿fwBÅkë—Dg)Lo µÆË@œ”6wH* ³³Óîn‘þã^Nt÷Ð=	÷ˆlgfÛ’W‹Ô˜üJ«'¯ŽÛÚÜÙ9\s{ÜÌÅ="°°ÝuÑgƒ¾w4A+P4¿RÖ.wÄ¦iòŽÿ¦Œ¾Þìâ™ovyö”O=¿=©ª©ÿìËçþÓþÌpÏªàOìa4©£…ó <øÎá’aÅ|ÿó?áü?„4Çp¯úÉ%­Mž˜Ì‹â¶y‘uDîðãÄšL‘8s÷”S\%ºé]—w:šÕ¢_cô
+ØNßýŸV5õÕG€mg;Û›‡ !€oþç˜žJ³§³°!ìÓíëìJç­€N6f
+n­+ù²êÍ¬“Æ}ž]Uö…Ò7ÇZuÅÄâC$ÂçðIPxÜÚì®è yfÚ¢›-¹è.¬Ûö‰ÜEŠ¾q»}1šö—*ÉÏú=‘ÅP«Ù2ÃÁŠˆdÛélv#\Ï!ôo,/ºŠcýÖ-Éîææ¿I_™Zº•ÿ¾öe«„ÄËþUTù¥ÛqÅ$ÉûÐ0&$v¸(	Ø7¸}·Uÿ¶Ã¾î	í#se™@E¨‘×ša&H³ténpm`h io/Zb÷òéh_«Ô„7_ø>©„˜ä%SÌ¾ïÚíŽ	àD‘¿dÞ_ó_s&Ä2t¦±Á&IÍÅDm	ZC©­Iº#èT± ïó‰3GxO¼Ý2ýBï(LTmt/àæñŸŒ÷±dŒ¡WJ’?üæ> ¬‘âBF…qyp©/èY¬ÚŸä7R³Â<à¹<Tl&z'Ã¾ð±=~¨‘™²ãä½”<ŒKþÅéYüÍŽœ˜îA^ªIÙÏ?kË®Î“:¥H
+ög=¾ÓØ3ª¤äãK=%‰^Cþ';Mí«ÀÚo;ÇÜtÖ9Äzi1ÆU«q´ŽEt³–ªE¶.­ ü§AŸ;Q?Û"9‹XEs$0à™\Ë7\£•Ù($gWdfÖí(U´“\gt+ébP¾ŠÐºVûF*Ð,)X7L™‡¾5æíÎ¯9X£¶0½%%ƒíKŸ—ScÀù@í|NÿøëÙ°hÄwZ_7¢8N‚sËËqe=Ê+ßL{¿ß¸G¸«×3ÒOoŠ\ê¶R;d)SqŽ¡Ç}tµ¡­·ì
+«Çy/Ù>÷™×ÍÈÅá]0,é@¶M-°á|ÐìTúÎbôƒ•@{³	ÍëXŽ«MW“f;CQ1[I›“r#·š&©	9>Š_ÃÝºµõIÓ¦·E >„ 	¾W€Š$	(ha@ëÛèøŠ/Ê6Â'ö@ÿlM«që_?xk´K*5•˜	æÃŸ¿{ùŸ<ã¥ÙÊwG
+­¤ìFmªˆúÒ¾ 3ÌþK!žVf›p[‚ÎNëÇ?	\?s«q—'{ím}x?Fs	Ê;ég,­,l2 …Be8rÅ½¸õAagîYà¥*ÁŠM’QãñRvœÕò7XQ¦xªñíÆE¹âuO«"{ÍŠpuônàPVòmÌ…G~ðâòÿ8aóà—å}ò8›{_7¢²2dà-=0ÿràbÌƒµØñ£vÑÜ‘ûøKygU5XõLáúÉÆŸ‘ŠqAÖI‡½t¾šÜÈÉÀ„U¡„ÙêsaJ—
+<ÛL¹O«ðeg–é»â?¿À±G\vöM¶Zt®:´è	J
+ké[‰%§ö¨–VÆ°Àc3qŸàb3
+.â	;jÇ
+VGâln
+Q¹è »Øœ|”äu5™ÜvÖ–EƒßOÿ|âò}ëœT5-†›"nìÜN”‰ØÞÙ_k.-vmh—®õŸF^“~}÷`ë`w/ÛÈþr¸¿·¿·)æFŸ»èp”´ÍV%…|±u¸›Ä5ui>‹¤fúÙ§jZ(T§ïûˆÄö˜ÏiÄª©6ËÌè¤J0ña(®}‡äP|ÍÈý4ô…Ï…	†Ö;l_nvç¹Ž}Ap	`XÎ\©R€MAÛ' í))öx¥"Í+°Nƒ«ŒàôØGèa^–Ÿ‰ÊZLÃ^f8[ê^»û¼É{èKV¤	(äOÜk¾ÍþÑ|ƒw~ÐÔñ“0ìâëðç8;#¥áÄóF™MUFk¨Ö¾•‹Ñ‹Ûn{]4^¸u%á~h›>—¶iMH€/nKLÖR§Æëà‰½A‘Üìn€³²E¨šDFImËžÿdýš| œIöÉ ³$ðûÂÕMš¢}ƒ
+Ób@>ä)Ÿ4TíSöŠGÚVÖÆ%¡›~ðüu–R5À9¯}¢P3bäªÀaÿóÙÙûó§G'çÏ~:z{ÖŒÑ¹4ç·)…,Ý— k3Œò·õLy´ù¦’À¿~Ý´¯I*ÞÑü(Pý’÷&¿*›L“æ¾óô]hDäcëeÓïüáâ—Ýî^n”l•²è;¾êcÁNtõÄsÀÅßP©?}’Y{9¹‰ç—èK€ü¦uQ›…{w¢ ¬¨@ç+ìr>þY.Ï´>Ÿx²Õ³	ð&9®œäuwà˜ÜÃ&o…îNtj­b¯ei)Ù»x)âú<å³™t–_ðÛÎnðÙâc £ŸLâf=ÜpÚôj|-¹\ì¶ËK»ÿB÷|dI] ôlÔŸ8ûöé ·	³ïÜò”ÿlž„‘YÝ:”8ôCõëÞªR´ÇÐeYúuô²˜;!Ý“æOÖãeÛƒiU_á±‹A%/Ebƒd‹ÉÁ~7†!“Ï,)êñ™`Ä’WG_´1UÕ~‡DYÅ|*äž´;¹È‘p„ô=üYò¸K?Çþâ«sxÓIQHü'¿ñôÚ‚¥«ò“–É%óSÁ°dôÞ÷vvwè]ÁÜw‘oct÷rq¶÷æºwàéÔžjÝ3Á/;‘ËÝâû—,£k~tXÕÓ¡åÕWÒ’¹|µ:5‡Ã­†ÉoîÉ^ç¿Æ5š]ãî÷ìM~uÆxõ¸T—úEçM'rdŸ_5@ôh\PŒÒUVqÖ•”và¹”4$SâK Úàò$ÚË”;>¥Ù—€5ð¶$én0âøìÌ½âÓq1°3$næ‰o²”¾u8O»³`=ôê).â½ôš:wÎŒ¿$¶a™<#iX…þ}¡aÀCk¡ŽÄ8r‚È”+)ZOùµ¢üKéRã%»­ÃÈÁW¦&çÍ•ãæ’0E“MBS&œ©ð”Gw?ÈþQœÏ^NòßqL òw@Žf‹FCÓÖáfpm¢Õu”+ò=!öžeïv±N¸÷%°?£á!qk~Q?ê£Óƒ:´cìòi"[–¿GTsÁ+¥Î®'‰"aX³K2„XÏ†L#«_‘Þãîfø 2Ã˜ÿÇ¤pG¬¦9ˆAx’ü5)ôx¥=«ô'Õ¸_oFR=bÄÄZ°§€@ht¹GHÓ&/€¼¸ÂPÂæá¶ÍG”"°e
+“»[âfÛñµsÐ@©>ŽjÆ¿AÝ{÷£o‡oüD9KA@Œìc<‡ùT:ÙõwQH¢¦ß±,{tOÿÈ|`Éî“éD=ÔS¢iA„ynš›1¶”Ž„K,:Pù’„dŒ©ÔöènÌø:ÑQŽåWvCó)RˆVŒ$Œ!Ì×­ôV/ySú
+ûAù*[‘TÄ#JK™äÔb‡Ë3=é	pwø1¾ïÎ².üALöÈCˆ.u6ÀéÖ“ÇùF7»GÁdkÿ0q}
+u•6|ÂxYœUÇJeýšå=_ÐÌûeäÊ¸™ª_„èc>—I²øëYAò¶S-Ð²‹L5ìãÔh;h¿!ò:bBX¶‘‹-Õ›n<®è	‘x\Ü´¾>;cCäPÜ6i¤Qè¢W/«§5ªÏb¤¯£\Yöïyé>;tü¯ûøÒûså_ît–ðîù‡·ÙOÀ å)”!ñƒ­L¢=g)fmšr¯º»Ç‚eA,ìÞúé´g[lý\FÜ­„óµÚ¶UMw„4;rOÎ¶Íe±=èâiöÄÝÌÙ‚WÜZ¸8‰ ¤>?·A¥¸6t^vû¢hâp¥¯Õ7OØ%Û·¨‹(¼’¥ÜÓýÈ+`É­¾>ÿ<ö²od.kðK	î\ÒÕ’g5jV?ž¥Qæ[ûžê(ënînmo=Íž»· l¨±äŒçôJo{ç•¹'næ?‡'DUIX·¨Þc àËæW;26ýl¢` IÜå4³±b†úlRÄ&ÊÝ¡Âº";çn%ÎÖ¦f¦¬=B4â%btÄi0õŒòdÆ¤Z_çÊ¢æžâÓdëJ‚™±Ñâi>Á8ÒûÊ:1þºÛPVg¢!/¿šÈõO -§+¨c`j
+Y"?a±3Ô“ú3H>½¹ÕG‹äÎ><Íˆ¡±èüÒìüm¡ŽJ(­è~KG§ûi5é·yàUžOB¶o½O‰Î!_‘ÉÇÜ\ãT•gøÔnŽ^°u•á aÄ8@/Q o@0ÞxÈµOMO<½”û:De°È!cÑØñ±W†ÊIgåDiÞdÜ<drÛìZi¼A²2TÖ;3žF$ÝiÌõ]mÌ^ä²¸cê¬úUñ·"áìnñþç÷Ú³Õñ•FèÂ 3Ýû>…ª­½(¦Œõ+ –¡Ì:² kÿªhI>Í×£ô8SIÎ‡ù$˜¼Å‘SC
+@«}ìM÷éWd¸ª4YÈE ÞHW¦œ,ÒR×|ø¥ù^šÓ<Ñ¤bJCó/L¥žÂB$öÃ"È’Ó:äpëîï8³^Â÷'•SøÓÖÞæáÓ¸ ãÖ{·³ù?²šd½Úfç!šJ8º.­	+
+ºª43c"F·83y!Â»Õ2“®zÙÇBÇ{»ÂÇøÂîRúúüþÈÍ÷·7ºO5ZØ„¼¬ÞGhK°ì+#‘p²[,A¢˜3xô'¯ÏžÁjþ¤…šå¨‹:ZBô	²ÓiI‚>G…åÁcNWQSµ¿Ëˆ‰ü:I;Í0ÊàQÝ±º¼¤äü0‚t)ýýæÓ)J¨ýbÔþµªú5ø‚ä××ošéœ=9¸ä¹O©„').hóJJAÈ'šSÑô1ÈuÖ•¼e™E’UXZ³‘>[ºÉiko+â›û2¥|ûsusVu¦Ÿ£¨ð^÷Ä>6)9ËFº\ˆÎFvi§=loìDCÜ~ÀTË!éÝ¨ÿ½¡^•bµOËÂ\‹×Ø½Ž¢(:ÿàéÍ±ëX”ì¨,vxÅ}ãSéQýXÐ
+»{bkIuM	P<‰,Ó/~Ð›ÂÃò'œŸ*“BSi6þã½`»kFl¿J´›D)Y´ú¢Û.£­Ã8ˆŒVwoóiöbàLEÄY–]ÐÅÓTðaˆÇS¤®8›òKYÜ¼š+ìœz1˜~ÙGñ¶º%J6b©‘È¤PÇ©j2.âûæ§­gh#øÄNò2€™È¸;)¯ÀC—l4}œÉÚŽ±ÝÝ½]r	²þN	µTûí‡×¯w½ërÞM[yL$ËížòÉ¸©Éi¢,\"Þ±z‹Gäm ÐîŸŒÛîn3 ³ïv½×‚²˜C#xêƒÂÉ,U$_‰þdrÐÉ&dË¡öŽ²G¥ÖŠ;p/×%½T»ú›ªx¼>ˆ‹[´ªVž•Å$GWOö]ßýœãÇÎ¸üýŠ†0RÑd,}~í¦9oü…ÏqQ°ÄÕV7CNü1"•þäœ/žª’î@žFjëFòå¬ÕXùLéÇÿ´Õù?0híU¤¥ÞD7YÔ¨N /‰¡«‚Š-.‘«æuÃ®ØÙÞÞ‡õM.(¦ÁË~®°Dìd°’^·WÊ~!4†EÞã1‹¸T¶¥QÁv¨¨T"žÍJ\Žk2•^9yVN…É?LYç¤¹×Lu<‘»w)ÆóÓxînìïyZh ‡À•é&M› >T.Z¹ÕÒgýîVtÏíƒÃí #a³”|n¤ƒ|‹+Ñ—mKÞÚí†ápw·ëN„çÁ8ë3º´Š*nZHŠ#gþQÆ°™Lø.Ø5%‹¥¼d^ž”*ÑÎi3ÎTt;P+œC«{…þ?;sÐ¯ã–Å)#ºÇ©Æ’ÈZÍC¾¢î¨’æ–ç[çî!¤›9zþ¥%;_ˆ¬ãa –vÞ¦‹”jã”àæäo¢Þn	ž;ñ¸ÔÃ”T*ì©6J7¹àuÈ£ó(’ÿã•
+Sò§¡²Œ-Ä~}ñûÛ;Û`£p!PÉ•=ßoonnJ÷ÜÁ	^½RÆðÄÑˆâX:P¡ ßò¿ïÁöá&L˜$÷à3ƒ4œá–°lã¨ô&Ó%õAgDk±RçëbÜ°nu)‡Jô¢ødðuáöLv œXÞ©¡z¦ép{sg+÷¹ÄÍ²'ÄÁäãIB”/±	¶¹ôhÚDG6Âæ¢¨C2zÁaÝýŠúÙ|'/Hº71²G T¥Uö{gÿ »ƒ­¼fðsV”VÔºC	‹Ã~AßþqºñòÝ§$¯¤ÛãBìé£,ÚØÑÛÜÞÝÛñbñˆVzÕ€[S&îKÙG[ÖÑ7·Ü7¥›_d7¤Ÿ,k!®æ›oÑZ¹ÇsQÆamj°ðûÃi ®|œ§i6ëÖú1×ƒ)‘RÀQiãÜeoM¿¥Ü×’f:â/²gbÝøEé3¢YWÜFêkºÍWþo·’ð\IŠÙÆƒßDbÇJ¿‘“©¸¡Î]`e12¿Í9º«Ë»LÞ€PœƒÜšXñUIoFõË„3Ó²„HíJ‹€%Öq)Àaíâ‹îUÀxÀµu“/™a™0’9…{é—×=þ—S>Ð®}£ò1×ã¬Ô‘|£,%Eïš­lx‰kwºWCð¡‰Œ9UeêÚÞJz¡ ý3¦}I?)’~’T²ëª¼Êyî­e,m&ÉË˜Æ]e>˜Ìàõv[Ôt`Ü2ô•5…ÎçÐÀuèFÚ¼áÂÖNZ±‘ø«_N¾o¦“–uHÆ'ÇEjÌ¡LŸrâ/{‡{;Ýè­ß«|¸ááž’Àmy{·óž³œ®àÁHŽe8¥dý«”N`0oJž€B*ÀôhašÁ/ŸG¬ˆ„¬t©¢˜[9tÊòø‘(|]ò¦¼. é-”’|Õ´7ÄX.ž·x]NHháSlÊ´ÑnÈp¬ù_s<þ´ÅOŸtS3!:¿N%spˆñpiÌpÏ!"n&àx™D/÷>PªÍÆûWS¼uS9œAAtÑa-ùExÑÈÁQëúC‰@&hjwÃ¢ÓÓR[»!ÙíQ¥è0å·E‘ËÅ!y“Ò‰ôÈSŠ®¢Ùf«/Û§-ËTj’iè&øçªž*ú’ç°¶ÂØV=Ÿó3óIY­=ÊC§Žò‘
+š©ò”ÈPñþ²~5Ì›jóðéªéï´Rª“£7ïÎŽÎŸ½|yBç,GÔ»¬ºN@ –!go/ ì{ZQRŽHaÇ£€ÒL=Õ‘ÐW3:zZjmMWòèl´-Ñ.ô‰Òò†ýRY>sýŽe³˜¤sF•Žâ+UÿÖ&Ë¨/nYE;=*//­ìþþç÷§G§§Ç/}Î^dhÇ2jÇß°)$MòµGU—î—?dÝVcï,¹?·}/ÅÊœ
+k{úÑjŠMfó¾$ŠH],>–_¢{‰•Â±ûš-ŒtQNäÿ"ù~á¥<årï%$äôÞ‘†%ï¹v '&[ãy¥˜p¶òou•¯~Qõñ™‰Z h9E1…d x¥Ð0ê³ü³wáxÐ¯{˜‡ž6BÂA®èµ1jœ³±ŒàÇ«eF¢RÚ¡È¬QÖ7áœ‡^~;¾|ìpyöK·7ú¤hNÇïÞm2·9á#1íÞfÌ3ÅÊ3+ÄH*°Í~ƒª¡„N«¦õ¥K ,Ü(¾çéA³ü3ÆýÄ1ÊÒéñ;ªzÒ±Üðô5"`	…ÊK·ú™¨ÀÚP- ë"è8ª
+M"cçã»ãèÍÙ³úqHü6!Û9`¡ý¨v¡i‘µþÚJÈA˜Ñhš[ìã÷à_Uª:g×lqÓ·:ÇL@Q¬4¥ÌºµyHN-	‡ Iú‰XÝú^tb%FLMisq"¢È¦=¿h¢*<þ©°³ã÷bRµ…”€E„@ù`]råè£×4&¶åFä’'91éµÐ„J¡ñ‘f»/’Šlö½rÂ¤ä€T	è“ô¿mø^¬â¸H±DâÄÚ[QÒKSu-éÌåÜM)¬˜mÿ ŸuwŽª`vÖI	¼Ê‘Î<W§.MÒ3…-ñ+‹6å0YãÝò	„Ì?A(C¿'³ø7ÌÉ`iŽû}V'ÉxÌþ}:u¶cZk€¤#/‚d¶¾¿x‹¯þôâ‰Q2{"ÒŽÍ®ò ‚P;òNš÷‰Ÿi×ÀÒíó¢ýzÖËÞç tdßño»+À¿ä¦¶yûýè	û¡‚+é§ÿÁXG £JK\ŠÏ„sGv¨Ó‘o›§è½³<;aÿ¨%ï/<ö´1ú;û*[‘KàNNç¡AãÑU1éŽt~Ðxµhr}Âq¾n…!¯òÀeëv-ëáA¹6]@÷ `Ú2šgi½c}å›§ÂIiÞ¯3ÍçÞx.M‹¤Æ&3v ‰Y‰SŽ¬u&õ
+Qh)]{kéaî„úk,‡×‘•ËÞ§Ç ædf’ )Jt"Ù3y§JÊsÞé1Ña:04«Ööï»d¸:Õé2@öµp½+øœ›¨¼!ŠˆbsiÜàeÖb|«E2S5®µ™­z£DtiU’Ù<‰«blü˜Zèg( ˆÝq#%’¨I\”SâAGS»@ÇÂ>MW­¬dîe^KC†:(Ó8Öi$%cºK¡Ž³ÖÌ‰zÎ3•ÌÑ‰Vß)"ûUªë¢”¦{¹åa¢ß–þ_\¯ñr–“6ÙÚŠÚ±Dò9Tù™ÜñMûQÅ¿ÏDÒ™J`mê©Ñ–®„o¥'v¶rR£sÅŽ=e£ðox",&Âþãâ\ûg"¯\.}G¸‹ÒÍ*"›ZzuqKJ!–D÷yöþÝéY€¤›Ú8LÒñ‰N6hÀÂå¼L5ÁZqÞQ£ŠCuìµÃìñ­7fø®f¥{^óûË1‰•6kæÜã!ô,¤¡#ýÛq&K#A4;¤7îƒ¨€R7—ÿòrDü¿ò²	—ñ­Q|Ct‰NÝy2E„ìÝä[ wƒJlàMðÃÉj¿‰ï¦Y¤÷³©4ÉK!3Y-Í‚ƒòbƒ˜KSâ«È·ýÁg“¤Ñð¾CÓe-\šðˆ*îDÎÃÒÓ¹%'…êÏÈÌf$=+Gê®
+F$¥YõÚq‹ØÚ²#Ù]¸ØXmT‚B¹‰†XZCaW4ŠûT·ºQ®@
+U”žFIæË[Ò]÷‘­î»È¢æÚ&pK(ƒÝc-¨o)©pÛk'ÏÑ-ùdÛsPµ|bnG¬ó°p/™þ§d/bdÈ¤wº¹d1ÁíøÕÊïåxe=[q×Ä¿zùþ•O~Ã¿¿_ã_SùÛÕïøÿ‹ß·ø‰^Ífü×oò‰ßWšCµ;r(d)·M¶¨£Ž©«1%FþI1uJ_*¥	ØÝh’?âbî¿zâ6qö½;{Š«Ò-3þuµõ¿þùÏ§Äº<ý×¿þGË9·îøäÚ·î;Xö½s²†«üS70-Ë³óŸòIb×ºËƒŒ»©ßçÉymªZŠ&'mß4ÎžO«sí;Ñ!l
+(r)G"&>"áød‡4,Ÿ‡ƒu÷Ÿ·…hƒŠOìqšÃ¡øÔÇy=lflaí	ÑÑô#ñFeßE&7×·Haºªó(O•À¨=¾\±V÷H	.^MèNg·ÃÎÛÕ7y9B 0	I•©fVŒœoí1FºÙ7Â0ÏÑ%ÎBJÖÜ[ž0qE«<«W‚Üß4¦(×Ï(SÙu1kSO¨ÀxqÀ‡>ezšÞ{Ob‰ï@º—]<ÂÔ™¾Œ+)¶æà.¥ÿ%‹™ËpíhôK;Û›Ñ/Õ7QQäÙ§ïFf–Á¹ùÃ¢-^héÝ’h†áÏüX')9–Ã=‘&ˆbiæf
+Å>¾Ô$[_ë™üèsù50ºä¦B‚d¿Ra®è©äcL'éø¹éj;¥Œ^ï-½~ÉÇ;}iF²˜xõXÔôKœbrW^°÷2[DPö>’{lmî¬=Êp"ÿ~w­wnÿ%—³È‘àAa#ëÁ‹Ú˜…h˜ytÔwv76£Šqÿ5ÒõJêËˆæÃ`Î¸©»¥[¥FÃfÃ["‡Tƒ}÷—›¢R_áu„[‰WdêF>fúàÝ+¶t¢>pí›€aÇJgŽ×Äë~Û7G}…Œwœ×,6‡ˆqxi±º'+š[Y‹—ðÒ ¡ÍÔ ý5´b3Ù3«`H·	æqPÄ”s‹’ø\m/LéFs6tf´ôJ§xõ²¸aŠ¶?õ¡Û7’¡i~—=—üN žFjšº	«ÃÛ53ÐQ~ïÕ:ç²Sï‹VÎcMk=+‹[:âQ<_ÌÝÝT‚™—+c]V³ …fpU§¹ŽoÕXac3q¯lI–‘Â5nö3%–Îü–$²×ˆæéFõiàÍ…pÍôyª²‚°ðü¸O3Úææü€´?‡Ö ~é_LÀ¼úÞ—Ð÷ ä.+Z.ÖÒè*I¤8CÒ°ÀÑìô|Ï‚$~ÜÅdEß’lÙêLÒÕ©J™ù´óÍˆ‡<mž½o²á*Zr*„Ý—Ìîé®õ	¿o4óËê!uSQ<¶šJx=jÇnqAFQò¬A‰¡˜£¦ÿoMå­¥¦î„÷ø¼mAûf4ë€
+s6­Ké€ÊUïcÛÍXŸ¼NWG3@”úBc¦[Üñ
+0îf#m6;éý§Û‡c%–Ý&qÆ,rÎt2Ì‰¬™—cžRMõ¯†6'Â$¨	’éxÝt¬õ…«’øèÙØO„ë½ëªróî%ÆæôLð´+éU¨ÚÄ»­ü‘öMžc2P¿ÁòŠ	 P™¯Ö¶ÔÉë8§ÿœð¨é9›ªËËV@T]OE9¢cÐÜZ‹šŠ[6¨ß·M±4çJ÷0($€›ñÌs› M7ß*ûwN¨“þ¨N©¥k£i†^D0ÅûTÉÔxÕˆ‡ÂÙð+œ¡£Å…´CK_vkàÓš¶Cñ´¾.‡‹CwÙ¸¤Û`}5›°#yR+2È]2,÷$rËN‹š¡I(¬ƒ—ï^œýçû#ó|„HcÁˆõT_Œ	ˆEãq`ŒoëQF±ÛXJ‹è8¡€ ×7a¬ã~e°=Ö¸hõë±6`º¦)b“¢í,‡Y­jÿ!e‚§kÒ† ë‚+JJ]+ööõüÖÒ'(gí¤µ†åÌ+V#R!ùq¤€ ú+ŒUÂ÷|c1}”í?Ê %X!ßÎ«¤è8lÞõßé»"v„Bß –‘9jþ-¾¯Õâ’²ºê¥Ñ81Üð.Ø„&pbbœTàƒ[c¼1³±`OÁ/ÆéVvî‚¶Ê=mO’+tz^ËôbÍî™©P3ÍÂv·üòãÕ"@Lê²PÝÃ­4TekÌNäªý{mMò(¹J¨ž—[þ&9öüÙéÏËkãÒˆ‰ïº!x^e>jæpé²†w¨íØñK5øVX §ÓÙEê^.ZMÿ4ÊÌcÖ–M£tc‚]Å™¯È"aØ¡ÿýœEØ¤Ï‹ä§šú`3ç¨ž]Ëiã]ÞÑ9ïFÎ¹•1fÎø´ÚzýâÜ½œz9(qZ¨ø>[‡¸ý³W“¢x~ú2Ûé oêG³l@Û=HVF˜J:Û°÷š[e´$Œ¦µäADôGúª•Ê§2}ÌñXUá}Ó#uNO]¬ÉŽÌ¶HÍ>Ý°¿ã#ch©	ñ“…ŒnâÍhK2é¡©9ÙÅÎA'”9¾³,ÆñÑÆ›êww$äqÕNtcfž7Ç|$Âk=Ž¤4£¦#¼‚eÃºJUÌC§1R‡ZyQMòÁÊ:°wE1iO«6þílÙH¹]}†pôétütcÃÜ'å;‡qÃ×+~ÄNþþý[÷ŸÏŸoýþÒ÷8N¦Õ¸ìýuüýáÎÎÖÁ_øÿ‹óŸ&POÔ³dÅÕßÅqÿ!X¯)ÐÇ^Qñ§®W.“}<"ßŽÕ!t˜´Hß7€.lÉžòs’Wë.¹4*ÃÌIá¸•EåFQ™øyÞÜj: opÒ£ çç@<ž9>ÏZ§JÊñ«ýß´6Z/*Äï3„@ÄßLÊú£³3€äZøG°ãÀ+×R	‘Ö‚ÞÜHwåâÖ§8˜u§Ö½mtw<yB%ol¢'ç'GÿóÃÑé}³BjKem8ZsÖŒÒ)Öþ3m­û©(>"+,tBŒ¾ßªI3ÂW·Bù”EÚ×rS°„%)2ÁéÙ*U²ÏZ­È.öGízà1?ìÛSãZÔ¨bëî
+™bhjÔ	ÞiØ‘»,sœ)âôl\æŸJ÷n;îÿà ÚPŒØ§’-VÃjt.1BÃßÒž´¨YÍ=y>£³•è„ä[G~Œ]ùºfa(‰Cd¬~”ÛE)öÓbêf”Àü÷þ¦r“È‹{³€ã^
+ö=Šaÿ)äàÐ–ŸHE±'ý÷0†È'2:i@Û¢GÝ¦}?¬Óýþ,kÎàWÔj#Ê¯³ëýôNÆp£YN€àÕàÖøW„Öo”%-aPŽ È	<9uüúèThWÅx”©ˆ¼²PuU…·9U•öC³½£BK¦Þà¨7;ðP†ƒwéÌ§.b†[k<Ð]@ÌàýB%xª±A¦4¬áf—’ƒÂZ÷;O”M2ÂÊ¸f—LqöøÇÛL¹×Ý’|l+fø	äÒÛ[Z$–ËçŸª²Ÿ“Ÿë„—DÌ²ç€¹g#Ñ¨³-ä±í7VÍS/Ô/û¾6õçó€’Ëœßª¤¨Î^J½ÁÒ/;®m'oÊ¹‹Áü®GTCÞ~=áFz,[½y4§ŽC]<Â»É±ñ&G!Ã‡cÌráÖF’“ÌÊåW ûž—_©[@šøûpò:<ÌÒÔ¦Ý˜Äú™êj™C¬'µ™ºOî~ç·tV¹ù5bV[X3¥Nv°÷“ÂU©SÎ1uëXS”0Ï`ß8Ñ1±ß!öËƒØjºÓÜ­~1	Šewû‹8…Â®Ë€Î£gIÞZE#Rš´¤lPË‡¬[ŽÎ¿I¿¸äöK¿º­/<‹H%Z’HÆÃŸÖÙÂ#ûO3¼YoÚÙuo~ðAñ4ì\š:·»yQ6Qåá™PÄ|è<åéÞ¶ž¥8^ Ÿ¤7.h6½ìø|¿‘vÑìC‰¸ÖÐ
+¯˜»|„gŽz4¡¤ª‰šöáŠ‰cRmÇ…J³.Cƒ2c1 ýdþI•ˆJ¥&²¡F”˜ì)÷.ãòåc<£2cK¦»ÚÖ®ä
+i®Ýâ“aQ…IÑœf.TÃNIv/É±.è²’c/§á¢Be>Þz9H®óŠçÒ£ÌF“¡:Íìh"ˆÍü%¾ìFmùQ†’VNCÑpÁcX¦é§«C:7°?R‹óÁáUw:+Däqn¤žÑã-‹ìî¥%›j­Wž[Â ¹~‰}I–®<éU¼	gQØkñ°ÑÊ©Zï“sÒ%¼{Û¨	Ä†¤­Î9yB9'0ºâÿ6•x™ ±Ôú:é$,…%ë*Å´±2å¡S a«ã¢OÎŸµG™öè=¶\Ô2˜M°Ä¤óö1î÷¥³.E–<Â¢séXˆ“ûÆ²˜d«2ö~L*@‹YËfjÆç²_"8èP<´/ÌT“ªêACÛ=ü’%ÒÍ²ü¹¹pÐ©çó(w>ˆWžxa0K’œ°Ûíø÷Ü2Ë¡G`”'Í¹ì˜Î)¯$¢GÒœiÿqÍ#Ý†¦ü€Ba¡€©„dL¯}cþ±óhgBv«ÒlZ –ìã$­)M·Â·#wñ}ª)rÞÌŸ
+î®ó(sºß4¢†ÂŠy÷ ÿïÅ^q<‚{t¶ww£Ð­iÜêÂƒüÖ·¹&ióãawCÁÃs„ZÁpñìÌT2ÅúµYÊÃ>Õy@ú	YpéMt1ï'·ò&õËuòÞt†”€§¯©ÆgêV½¯T&@u÷Ýq1*âT–‚^™Ov‹ÙðA3°÷ÇÀ D“´,m·ÁŸ¬šYÚ\,Q"Gkõ“ÕÊîû‹ð¸+ïA+úÂíÊšsz¼f­é‘‰		™þ)9M+çáõÛh•(aäUb±¨ aæ•|8‘­OÝÖ£LDœše_¤ÄP¦8­Hà‰ùšæÃ±¶S­G.‡Å4UÙÛ]c¾ÝË}wåqç„e÷}¿Âù^ñð1‰{'ƒÚw¦a|4˜{ô¶u•¹åæ»…³à­qUR’9EV"5’fæ·\êùw!(Mg¥cø4öAÉO¦0²I³©0Œß6ˆs=E®Y}-n)L’#JX}gŸQ¥Á¦ÉÈ¾*µZ#¥4«—ÉŒu5m‹„á‡ÑTð•FÜ—óG™ÂƒFðY!Å0ÞõmI´zÓÙxÃÏç£Ü6JOºSÛ-”úºP˜ÈËã“£gïNþÓyòïŸ<sÿ	c]Y4L»6U]åÐ«*‘‹ˆx	ãëÞKT·»“F_<Í®½þÕ%,Ø5P;°¸f+BHÝ>«ú]­Õú$Éóþ'çÌ“uUœžèË2Ö*sÜç4Žù`§7•œÆ‚©KÆQ\¹•4(.§„W	”5½ñýf)"ÿÐÆùŸrlqÂä*Á‚K-pUÏPm.€vð@à±D€8£™/òAo³ãrHéªþ”ÜÙ“~ùé…›œ_ù­é}ZÎÔ|l‘Xsø§»«=kPºjeV:œ•³ž]8On:+•šÐÄlâçZ¼ou?|Ngw'o¿ˆW_„G—NZÑâý³¯
+LÆy%"jXI-´8Ko¡«%oÑe0ÿa!xªRX†˜‰ñ­ß˜ôûT*t²/Ô‰V„«™zq^2G#x ¾vö›•wª“¦ìÛ
+RDò¶Ük…ª¥
+kïËl;ùGž»“¼:Êþr¸·ÕÝßK/GÀÓ»FÃyY:fFiØù‡ôuÂ,-­óÒÙoO¯Ýi£°ª&bóQîµ9¯LÌÜº“g.êXrlGª&…°o~ºRB–x]Y$O_KP÷à`çàQ¦v;>¥“ÍˆÇšy¸` ¬[ À5:•ú¦“[ísÐ«g”ûsÓu.Ûæ ˆÞòd»ÛÞÜÝHÄ·ƒÂL$”Ýæb”}c	Ë¤ÅÛâT)õ/Z¯=²½ E^—BRI)Ëèqîw^Æüœ¹Q'µ $µ)ÐZL…ŽÐ€”É Aš=:€å•¹Ðýà*gž;.FS•ðqÏ<¦ÔŒBp÷V[4–­(×úàn¶ÜK¬1xµÙßJY2¹ÓTI—¡ŠxQõopËô,€Ÿ%·dÓ3íŠ”M¢Z?Ösÿ¾
+–‘u±î°ÕŸózzëŽ;Õ‘í`¾0öÏÊØ¯«ìîFl®›QÊù ˆTgOXUÿÇ©06¹±Ÿ£zÚ@T_2ãÐ ©ëÇU¥=6syáFâ6ÇOúÝui¡ªEòÏœ!©m*CÜÒÏ`’
+`Ä-Fa9\UàEÁxJ¯D®:œv´~yIf€´“	þÒzssZ\5[”¥ÿzó¨rvæµØ´9ÏZ–æe.tï ©,	‚zí% }§óË|RÎêëxªîA7ÕÝJ£Rµ˜²r;Ÿr‚Q'â=bÓ×žÇò½IVÍ¿UüMÞkT™ä&ôSÔ¿}É“’ÆÊ¼Åw¨QfûÏkqôþ‹š6½¼²‘³Ë*oÏÆî]ª{Ñ„$Å½9¦—–þ–ÀeZB!O.X€ÎÁ%¿aÄòŒŽ¿N†r¯Øe+ÍJ1ìS(S`IˆQXU<Xž­¡ÓQf¯aB½*É²	½AUÃ'u¯-úà)ô0Q
+½5/ÕYz ­§xV™KÛÒO·°Ž§íÿ#„}¸œîM!N6Oéƒ6¸Ÿ>¿”°ÜèoSÅ§ŒëEì„½±ßj½%À+ñ6^
+!>Â’&*¿Ø÷•P_†”Kž¡'±šäìñûœ¡9y ôÙ(»4¢Hô}8±¼m¶Ôæ±¯±|;ãVCŽOx`P]!5ëu¬È¥7Zš˜µ«ô™?!]âü­^5xÊW.-íFé1Ì?k;*õ¿ˆAÆ‰ªd3ÚÓ+ ˆ)$]Ì¯ÂµQŒn#3Pžá…ÆeMåÖD€À~5»Ü¶¹m”å|E@EÎfžÈgÂ×ÁG0Ï`½ÙÖ³&£Ñeµ’*ÔØSÜù<ˆ¢µ³ÛqUÇZ)Ð`Š”Îè¨Ûá0€¤gÁtq¢ÚxrQ+QCç)`§ýÀÅ«‹JI;ñWÉ EŠŸÈ­‚çŒï_	–jÛôo¿äª¶
+û•3T÷fÐMÀÐ-±ÉícL`7
+9•íL[âª±oAkÕƒJä¡^`-íA0Yr	l„­@z¿²TMˆ”°Ö=ÑŒÒ0Ô!ðP¼¤,‰zó½D"Â˜.fƒ8»L‹zCîQsš“ÆÅ¤~Ã¦ŠÏ ³”(ƒ©Ï£Ö_ÑI"°ÆÇÏk¸8Ïdƒý¹ÄdÀë—r˜46"ß	=¨Èžmo*p]¥!4zàÄ¸CëÖºkq à`Š’HKÓžw»Qÿ‹µ)ÄCT0]øöy²4áÆûs&ê­Ð}c=9wV“™Xý„ëàdñfÙt.‰?‰ØfGÕ´ÓéD&KZI…Í>ñ¦ŠNËŽ»T——AƒÞ‡¥2
+RBUÙfgnÐ4&íAâžŒƒ´À<Â{=>œÑmNåìdÀ"’FR<ªÅÉU½(a6Ðì‰»‹g‰(x¤G—xj–îDŽù8¸AÜ¶s®A}­ÚM2É*
+Àä6©²fí0ÿ<5ý×Î;Š{ÌÛ"1û÷;î6:…VÚ.¸¯)èÈ¾+1;É¦•¾¤¼DBÔ;í+xÒnw wdÔW–sþ¼ì0ç(<È¸ölò#¼¶í¹µ{–¼ë×—ƒÛ©
+L×­Ä'(öF`CŒÊ×auIx«BJæYêŽ—gEj<F37é„>%ˆGœL5Ô~öôÌê2äÌc"ŽNz›Gl¢|“ˆa¹þ|vöþü§£³ó_žH”éó{º~"èý%D"¼œŒB\ÝÃ^2L¤'9B[O—#ÕÐëä"ºØÈ€áéŸsìÙçcNÀ£ ‚MþêïQOjúäâRyñ¡8iÝÐc¥€ÖØ7w¦A$/§_Â³›dÁQ÷”eñ.„< )HÈ²Š ‰¯<ziê-ã˜ÑÀ*ûýøø°íúk}½ëÏhŠHòáåläMàÞï«zJõ5""¯Ýß×ÜŠÈ,O’oN‹ÑÚƒçy3Þ_æ%aÈ¾Aßðt^<Ôò+x ñ‘v‚Mˆoc³º0û–4±’P‡SéVMï#¨nâðKý“øXÅå¥sm(6i­hL‹·ØÒd
+Ï›mà
+ˆêcŠª³øI€7çÄ`·;“
+gîVIÙ6_Ïlà3Ôƒ$–­ø!²=É£ÁŒol¢®,…’`."/d¤žTùLènîGr°9_¿xÉ’·¥/º7^$ ¼ è"EdD¨%[,l1ú†@tÿ=Ž8Ìñ8I{r±Œ>Æ±üà>p!r^úðZÒçYŸÃÚIÊB³AÆ± G™8Y;g¸žN.1Ò„Ò,êlQƒ°Škš^Ll<–æ+Ølä?Þk&+§s@7*+7Ðíj‹UÓÀ†³¶³4¢±-ò"ã;0k9u™ãmBDEAhÑy»tïÚf
+8UîE”µYXÀøi™}Ãy¶:ª²÷<x'+ì+*úk‹ÌŠ@Còá8ºLB_öÏ°ð”rjžðçÇ¦¢ÔÑ`-è(š‰A]Œégóo,tùÞ:PC6\»÷Dl^æÎD5xS£ômuQ÷°'=–>:5nLïååsõY”ÃŽ›"0ÀSn“Ë âZ°<GÊ½É84Ey DšÊý¯ì}|´yÙœKÓ®TÝŠ/iYu$éeC`õ¤ªŒyy®¿vEYXªP§Ya’UjQ»=ü!£ÔË“’ð$KÒaˆ;5'ƒFmL\XáŒ°|ŠgHôä%1Ò=ÈFi"H=iÖ6Ìy$µdòA€ˆ,é‘¤H‚íþƒžOCÌãŽSâ'÷Î#×ågÊˆ	®ÞKØA![Ü‘ŠBQ(4[ò/
+ÿí8ŽÜ¼G¥Q¹ãxä¾T–®Ë E!Ï½”þÄXR·Rù”L—VÃ
+‹ãJ|•¬H6÷Bxe\O¬±/õTÜH]ªÏ¦ö›h*–öwØCIÏ*=‚Ûb#aÐ€yo©|¤¹™Ð©®ç3B¯+rH´déM¦4Cn8g¡Q°½y#IÙ·×ªZ½äU;né9a>©Uô2Ïye¹”€N[A4ÙË:Ó‡©ÛBZtÒ:Õ8ivzÅzrì Í9Sbaù!Ã÷ò†KˆAÝ£LvAÚÿ'Ø3D|Á=w
+À!ÝyDýLÿž¢ù¸ë>ÜŠÓ9ÜÝ§³‹ßpè¶”(÷–)D*¹%o•Hà·7tÐ”7gX_EÄŸçT5]M	€M”œ­B
+Ý¸'Ìù,øªõ=dðÓ£øWó.ÜbDC°ÖÔö¦Á­vèNjp%Ü„’\¡7.µ¨—²üãIÝ¾×â9ˆZ…Êmn€ßšJîg¼RtˆHŒ$ÉWÿÆIs>·psÒÕÍI©Ý™¬:»AVwŠ}…„‰ ¨Â7‰Üá2l"wÊôI–
+Q,'?˜o>ÒXAø`Ø€@?u@äÈS_k 6¢Ou®~òÉ8*iˆ*ãn#Õ‹dÃ¬wlE5Üó%É$,Õµq1¼îp•¶ÂGûÙÏÕÍYE—;†‚¬ÌFøª0‹QTÎ÷\Ù`\Ü“Þå>+1ÎMÎ7BpÅeŠkõx¢ |¾ñ+aû@•‹*ã„¿¢|5˜–X{\ô‹àuö:Bf¡)t]îBµn),…Ààæî²îÆ¢>A•O*¿Oó}K>×zŒ©Ð‰Šü·[¸çWÅôÁåéuQL_/ý²ïagA0×R]Êp¶·|ñ%²M¹óÒ`…@¢×;3‹D³Õã•¾å6uæ°ž¹('tÓ’ÆD·µN¸˜¥o”Þ{õâ`ËØÑY{”2Eˆcx	þŠÏE/ä•—›xf>›3­(VÇVÓ°ñÇL]\"C‹«¡4[_»×,×nzðƒü¢H{ã
+> ’ñÆ(¥EJ½ÂÓ¹ßrœT9”©˜ûöé”ê’ð©§p:ÈÁÀ²·@_éþHº­`3çë BA¥l-D#·Ý¾¸m³Ú 7tîögÞ{4D>šÕºéBÖ h B3ôáØ¯ƒ}iYjtçÃC6JQˆDðBÀ^JÝuz=ßÎõ@w€ÒÁ¨ÙvEÚØÛ¼Þ¨jÏEžðd›‹ŽÆæ³ù Ç×(®E´ŽLŠTµµ\]p¨> Ž)ÜF\1õ†iQD_Y=sþX'U	àA¬gge ÊÚ¿OÏ9Ñüæð±Þ³×¯h—6Ÿ~UòÅ!û²Ö`[jDó®Œ)m×q«‡ÕSí¼¸0\¤¿ß²ùÁýùÔÁÿ±]·tCBÌ!–jCÞÐ5ófãÓå†LMÜ"/”„ð×ÅÆ{RÜ-G!(>Cu!».¯® êQŒ‚bÿ¸ÉµFŠ0àÇÐ>ì1Ó©+Ù•0‘ž÷KÐ­å —ÌŽ~*«ABÄ!u#>f%;SF(Ð#¿eÁSû©¡­Ö|*Áò?=×œÊŽŽË¦ÊÓŸF"ŒR_êjOÏ-Ø†ï¨°\nX™â²3ˆËUÈdpû(¹=?“fk6(1]I;__\‹òºrX†ëŽW„VnTÓ9û²`¤ýf[/÷ƒÒífk½iùÆÙ·ç Íky³Í÷$;\#rg6­Ú}wMDÝ®AŸ ’`è)¯•N	b•÷uu¥ü~^hí%þ†¾ˆK(¿¤Wûîr*ÿ×ÂþSÄt<™§Eu†°‡ãú‹,pwÅ‹9¶Ô‡lŸ[´2ÌÍèW˜TžT› Âåc%DˆpC4‚Ql˜‚•	ÜÃm-iá…>Šµ½;¯ˆ(sÀ Å(Zv|¹cïÇùP<,¸›*BÏlðˆµÎI=ý´0} <kŒêØÍÐ p@©b(JzïBá ^ÈQjôàèˆâ¤¡:Y:â.à‰P ¡í¿ŽÐF†.Šß»s×ÕÎyfªZ²ë§!$(Õ‘Â[®Š&!ÀC&jÞýx©Ç)!Ñ‰„ MÊÊq®¨ ŠT	2_iP£_½¨>»ˆüF^q%G´#l“ÊW§cƒµ¢í<*ã¥«À… ±d’;¢˜aQHÆÕYäà¾b³@CwK ¤²>£)^6“¿·ÀÇš”CdJzŸp+ÊZÉ['+DÛ>Ø&mB–lC÷y›Q=œ„¿¥µ1«'ÎneãÑpZý6.®Z²À¿àñÕÙù/„ª<`»ÙJõyL¾¾xg°d°(9Dg(öÏE2¾6¯r3á…7
+\	âŠ‚>Á…ñŠ_6×ß ÜÓìß…óR€I7 yôŒäËâaddÎMˆÙ@ˆg‡ƒê7ÙÒª‚q¿rGÞeÔˆ§C¿cÎy/rîŽ—¹àÛb ¥ÕòŒ¥tC$esÑækkâš˜‘óépLDìéõ£sk¸_ÇŸws€b6*íÌ’´ÙKôw?ï=rì Ëk,Ï“B ¿\QšR^R=Á*‰LïŒ¥O¶þHœbå?'LÇ>õªóZ=ÀÂÆù¨ð€‰ÝYþ?Ò²>15{8=ÓŒuxÑ¦™“[K?€hLaùúHf]¸xhiõ’Ä#ÔBì³¶–Õ$@ÀP+mñô³ñ“.›3ÛkæÌ~Ä«DGuFåd€Fo­Bg«@:ü¸&›*¸Ùy”(h;„Üˆ"|¾äæõÁhOÃQ.]¤”»ÒÎ¡ÜwÉñ*$F¼ÄehÏì¢˜I)FÔVòuŠ9²ø¹¡mƒƒ "PØ™‹ ô¹³†eý»1fÂHMW×Ò×³¤h½’)†¦Ka¸~ã:ÉFÜÔîs¬.:zŒ5²0ëq|ó}vúáí»ÓŒÜ»´É±
+R4E¿²l6ê+ÏLîvÄPYÀ„]@\&ÀiÞàQåÙEu5‹T u™ÐØH—_UÞ¿ÆÊpf£,nÚÌ.Óäå0´A¼~öö§ïå!ˆhj{<`c²GkôúWrÝ?¶½áB ôN'k†n…‡è«d„à¿‰Ë,ÂÀ2‹v€'ß] ¦‚ÆèZ¯,­Òæ¬Y	çá“öþ>—2–ª\Ëý«ò]ì+,ÚÌ‘,¾ ;.x-×p%ï	›N9àÜ×EMéZÚ|¤a$ÈË)¸„V×OCÙ»¿¡½Fî	KéÔÌ|~QEBÒ“òÙß“éËXpƒgñßõÊÄ$jyÒè/Ï˜&!´ä†?F¦œ8ÿ _àšøÖßÇxñ‘Ï$™ïÔ‡®¦¨•Bh 9—ä“ÐÈÁgÙÔzƒ­ñ½³à úF„´ž×²)¹ôð{§Vt¸Òq‘»gEµ­¬ÇÒD¹²|ºèAEÙPÚ”á¤Iª_Cû*ò>¹¢¹|›ô‚<ë,}Ÿ–DàÉà\…Çc÷ÿW7Ná%Îá ¢G)
+µÅúRÅF5o(Ù€˜ù6%A=¡c›Õc§%G—ôm¯«!RtØžd•î[Yx+=	[{´ûÂ‘Ä9Â_x“)Åƒrå{‘·°.“jAˆÌ´Ï	'´š¦ ²±±.	/¤Õ2bÖ©‹äxX¶ôÑ “LÚ¦ÖCÜzÜ<Çgqf
+eàL Ô°nä^CiXygÐô8+üëCïQTò\éâ¹Gê'…«2UÔòéÉ–ºCÖe
+§9 îò@Ô
+Z9¥âÁ6M™t®—F (ä›b¢0XÙTuniv;;ì)Àëu+Æx®™¡è•$ñP®´:•R¡| F ÛÌ¸î³s)'ª@ëé>o`o‘ûÑ`Bõ¸èAù-`½P¿½ž…{Ø’“ÙHÛM…¨E‹6?`”»»[HÒ•%¬­72ê‰~YhƒûŠKLÊ÷¿›¤Üc-¨¡TSIF·¥Ö…`Q@œŽÞzÀA‹iïZºrÛAÖw5bÅX{k‘¤„áçŠ B%#Fák.Áí¨aÑž”ÇE£ÈCh¼ÔÈ§gÕ¯n~Ü,iòBŒûÔ"Ë•jD×s…[hêŒ—sØŠÔCŒØÒ¼;ÝF%¬ÉqaŠr›ô°<5IˆQE.$†âÒré’ç¡cÝíœhÿ FúŸ­¸@Ñú—tƒ"È+ˆ§Õ
+>½1·‹[ñ#á@©Ü~o&g­Ç.íg¡!WÑóP2¹+ÚO+ðË¯'ÅeúÆîC´..ˆ„îÐM;ðB‘^ ØVæÔZÓIn¶¥¬‰Ù§ä­B‡î¼ˆz6nünñÏöAsÒo—­—>|-”bï¥[,£ÎóøµéWwî|ë4˜|ÖëQ_œ
+­ŸD63âjq¿ô¿því÷ûö~ï0F„˜N‘"`ÙªýVB ôÞ#å'•ÅhïF<þØÏÐd;P]Z¾¾ž<ÝF-ù›–RÅµ2V‘´©&KW÷—çŠÙN#6!qÒÎE®íˆÜPC¸‘³4©ÈvzÐ @5®‹YõˆÆiX7Ü9·Á#»L[«4pØ7ùíÿÁ—¸Õ\Wîø:¾ÃÛCõIñ†.áïRºá¤vàæñ®¥ƒí¨©à"ïgÐU®e£ÌXòÂ›QŸî[¥Þ~&…¿-wÁc ÀiŠ~táÌS#EØZK™šŽMÊ²eÉ†‚·¦æ5÷Áú×WCRdnqb¹emá¡cz˜àó:œéÑ>ÙŸŽÎh]Þ¿;=#‚<“Ä–´SµMŒû']çˆW2ývM†[ôH4x éÕµ¼¿6â"{ÈT¥ÆnRÜó;o/r*D^ªVˆ™êKµ8©ûYº§'ER9MGyçu´0øx†'g?Ú^ÞÆ‚kâ¼`£`ì­Îfg4‘'Ä.ßj-ÏþŠÍåE7$°GL¶ .¢'£êgÙïª§¢?!ÏeòH4²AM'³Ðå{éA1WÂüÿ¨ÜÉ~®¿çãËb°`o5wRóîsÖËÓ·Ââ_M*@n$‹É4«GØI¦%12áƒ€÷FMeBE'¤ ¨Dó1ZË·‹¿Æ±ƒVÌ^1œ§üÔ;Ëì¦½™#=	ö
+¨jºÿ0¿š…«j¦g¸Ž@MëÌQgþžtyç„»îóÅ&×¾û)ú«W—J…×í¢Ô]—ïÁ–	ø‚íÏ"`é£†J,pøéM‘Tözâ|4Š?6ÔW6´‘[”Ø É	úù½˜#Ã­eÉHÜ”A¯šÙ=qívT~ð1Šù@:7Ãnv†ÚÈõcÜ,—O§îQÝ*C8SÒ”_ÜÜùS1Ý åÎÆ‹ªúX¦tÐ<ùåèDiG'3Â¡$«Ñé`»QL¬†€ýþ8ï.ªÝÈWuèÿíûßì3IùßG£Oÿ}ÊÓ|Qú£‘ÛòìÝËwn¹cÞÿãôîÖ”<yÉ ï| ¥Qø¶@‘¶Í¥dÂ˜‚nê4½ª& »ä¡Ùú!×>hìI †ÜÛ–¥ÄÆvŸGÉ^¡½f½IÐôó{okÜ«§ø‡¸6y?MáÎJi”§	µi>±MrNý.zÂ¥µ£Ræ§òÓ6{`÷îÀ	ò}ž'•>WV÷Š‘3VUÀ-Þ-Úß.
+ Šÿ²ÉK-,òóùö`·ÜIWò>We˜¤üHÞp£ÀþEþr‘k'’¸`.t!&)[í¯Á™è5»‹ùLñÊUB”È9ŠßÂ3ç;d?ç`™„h>ê\ó‡¿×³Ñ¯–œÊO$IùÈ‘é¡/5)¢~ƒù
+ÎŒŠÛ}¨®D}&€U÷Õ~s=ÜYyåK„}­ô|;à1s#‰4Zr2mÔfV©¢v¾t‹òjª&öeq/:SV&uý&ÿüLIMªD™Ù±æ†æœñ˜¸¿X”©N¤yÔjµâ¯9j™á¾ciÁöõeAR,·µ›6|é!¬¹ñQÂÈjez·¶éWÍª<q§—ýVØª1¤•ìðÌâ¢û	_šç)=WÝ”MÊ¾ÇŽ¾:yöæhÅÍÌô{iªMB¤¤L¦JíôûVKæoÃÙÀm'÷Aªe»3•ö…­¾,,ÿývƒ*—–ôh•ÙÕšÙFÞh›ÿÛ´ªþfÕ‰UÁ*óDj"ù’v^Q>¸øN^c;{’ÂÞV3À˜ð°,.+'5/êàhú)ÑPÅ¥e9¡eÅ­þ‘•˜†æêÿ0díâ_œpêWq!C1MªçØ’Tw/'uhsaêN‹µÇ˜êÍhœÉph¦“?ÂíR‡á	K }ÉAG ÈuT•°0Ù{ØÀ/œ7ü±¶M|SµI]Â¯¸3¤è\u²Ö?Ýu`Ax÷µ_ü®T£B ]þË³:{S»3>õÒxˆ¢ÉD{¼ <Ï‹Ïåeè$e ÑÜwKl‹ç£¬/œ“¦b±¾‘Å÷«	,{´å×_}Õí¬U/H^K¹û/ÔâõÕ–û¨ÂŠÙì=÷N…çh™’€NM€Hh×Y•È<fÓÃWÒ~ãåÚýA¹Å„tÄÞ¨Uà‰Ž_Bø,Íð–BÂ‚Ú·&¹ŒÄ@¾¹ðŒÜ-R(?¾S=`¸l¿i4Ô¥h}×eÇ0}£Â0€4Ö2‡ïÆ´‚î¬ì×ü[Ñ©¯åxb£,²ø»(T£¶”^ëìÝiNYz”©CóººB6B[µp¤RZ i€õŒ»°.Lx¨Ò	œàÆõø%S»ìxSÀŽ ž!h·¨A —Š$Qð1ë¦ÍJ?aÄÆ³ºQ;_ž
+1â*Ñ&'/ºkº‘—–¾JO)Žï0}	óà*¯|ýõ«w'ÙÙÏGÙÉ‘»À»Wüï??{ûÓÑëw?­g§GGzS÷; ƒs/¯sõ» Í¥4@Üà-«Áv5\QMZ™ZÁø,òˆDCjÏtHîÍóïÔ¤w”mûÃZÒqz=Á¾È3mòWRY””2_'3r¿WÍFjª;E¨¼ÆŸÈÊ×i„üÒùhâ! =1ï]?ÒèRkM¢£G–rØºÌ†þ$h B3ìƒOäCU©Çó!~4ª×½¸éMAŠòbhqS‘<ÌæC5ÄóÃ
+òÚù…ÏÃ×ëørÄbTËþ½Õ¶I2¬P ýQ¦&=žç½ ‰­%Ï$dÄÈêcÝoNC‰ùo¸"‘4SW¼*Ã593
+|/Œ;4˜ÔÞ[ï9ôñ´Î…·‹Øz2I½4œ7Ñ+užïcm°­ùD’PÊ*Oq®˜)³wD„llõhÝèÞ•úh@M¼.›oä°”L<,MÛ|ø®²r‰rq
+ÊM«’!ð„È9<RkñRšzÓ¬³u¬YÔ„ƒó!¸Ç„‡•Z/ûwüôiz9œš%›å•1ìJóŽé¥šFÌ'Óç¢†¤ÈP?ÒäÏ³Óæ!µi»ÇsSJOyï"Õ×~¶?r‘7÷ïLiQNÏ>œýüîäôiöîârV+Šp0ÈÈˆ,-Ú°’i¹w6*ºgšOF˜°qœ¾]<ð¯©#}aUñ¿g9°Åßó7ß¿Ö¢»/…vÑ@"Š·—À—z¶µ˜Á6Åä‘%ëŽ—ß‹¢Geo¥z’È~DDrA±Î/ƒçôÿÝ‰ô	
+‰p„ÁäWÏgdÜ›J×y€¿“$]®ÐÑRcº,¡1ÇèèsÆ«éÞ±`ôØéYõRe/Tþ˜°ÙˆžÄAˆ õ¶€q´:<	Þ^‹†ŠV¾)<ÌYê¯ž¿Ÿ¾SÄÿ÷À'‘Sðpÿ`»»«°VëˆZau´–¨]4¦æ¼÷ZÛœznaSM`Œ:N¥4Úªæ½®úv4Í?‡¢gÞÿ¤âët%Wc¡J½‘¤š*Ê¤¤0ÁÚ#M‡œÃ‡{‡[Ý7SÀ’¦ÉãÿDÛuØ ã%¹H×ÀÐ°7‰øúä:™zÍ”â±L¯$B·#›Ð³®Ld¤us¢…&”P\[—pI×‹zu¹BÇÍÞ7×Ë÷wD
+Ë>QR´Þž÷Ò]RbêÃÙô²}`÷Ù[‚”*ºqƒh¥¸J^Åh6ü¥ÄÖnÚæW€dÃç¡v;áíÅbÙ¸ÃôC)dC^îfPU!¶Íï0O:(	Ô¥p¸.ýÂ'2"K5pnÒv=É‰ÔŒ»ž1‘eå…ÿjá™‰·ù–'grxôu4æûsl…‡ØZ¨}’}—ý€dØ…U_1u¾KZ&¶†f+ò‹˜ªCàˆcm/Q¿+-,Õv½`2snvÊ¤>Ê³6xÞÙöfùa@¯Ä-`×ýú"!E£ÊŸâ¤^¡½˜Ac>‡:]ëR6_ÙÝ–ÙVtš]}^§£Goì…ÆŠ\™ôôÓµÓHÅ:À•†ù-‰Š§ÎÖŽÎ?œvÜ>>@©¡_œ¿<êŸ¾Cj€k™ÿ¦>t>3›£¯ÞÙ‚RêÆvS)_¢)8µoG#6”I£*vùÀâØìHù³BœKãùŒ5!ÑÐþ2îŸ¿áŸ„ª½œÃ7ßÈß¢7ð x+è£ôj;j„ÃeôÉçE1²ýû`Ö¿Rcèìïf«'/¶×^¹2‰Ð\*ò¨ò* W†Îj>Èç@këÁ'ÆÜ˜†NØ	„_ù§Í­Ì œ¯Ý/ÍWœŽ–õ@V%­À]ÜºStò1{1ë$Þ6A¤kõÝêD«ÅñÊ'ï+‚j!‹a¹˜“óUU	}°$I•Œ­VŒ¢ø]HÿN^Ä}o@wôÐ“Î>ÏBh„ÂöRLuþ97Á
+wŸ©9)	lr¸Õ¹Ö«sM¡æ¨–œO
+²²4Tmõ‘îhy"Úá![}å<½5ñöÛH&#î>ÖÐ(¸û7…7öÈ;³±Ì/
+žÇ‰A§™÷èd§•üWûx$téD+¬­@ Ì¾†?‡6±zJ"¢S…ÐC¢
+=úSI¥t ‡.{v]±j/&¬×6û	õùZÒåÚÒO@Ëa!"ì+BYãÞ_u5bÝ@òû´aòä	 UŽÀæTÖ	H‘M
+À™`]¡*êZoÜ‚Ž^÷^–=¹8÷'GßZ#÷Î«ÛÊ™%wüý6¿®ÄÏ;J,ó+œúŠV¬T†OÎD¯×$Ž0a*Æè†U¬´8’$%Ù¸¦Òì«2ÂnÓIeéÍ˜º–ÙKà, eâ†T8k÷Mæºv SðÎËçLDÓ³\lE£¢Ñ_Û–™½:ª^Y_íõD™Ÿ¬%Þ[¼âÏ>b£“¼õÈç<ûµF‡²%‰Nýãz:?ÝØX _¸áv~ÄIöýû·Rgø+ª¯ßÃ„O«qÙûëøûƒn·»ýþô$÷3‡'i€þ<ÉÒyã·Ì2RÉEÎ:R~DJÑk.IJ¯Ó¤]ž²­¯ÖRÕJšÇ”m·ªR h<çÝÌioøŒXñBzî§rˆ§µZ–-¨=J”Æ.‰m’nòûhÿv
+AåUæM•²{>Ò›GŠBeI>¹­Mô UÁº§§BípwÙÒiàE{Ìë|ãFû‡+%ñ£à5Zâ,ùÍÞ’Í=*n<çåóuÅÆk/ŽaÊ™A~ðbPÖ×±}%Þ×÷Æ¨Fs”:O¤CÖ’hd/G$qFë\Ä²’&Óuô¨h÷9ò9d…l~>¹85p¿E—0÷Ô¹î0Í—jÌ%wáÁ™¶–ëoÖ…ïÊj€£¬eI-^°è·}°<‹3‡ƒ+‹Tt8m°’ÓYŠpŽA9Ü?Ø:Üÿ–iØök÷x3ShgÚ1ÿ¤™E HÌmî{ÒH?‚í;tÜ§™W+F•áû¯ÿ\Æ‡w¾ó³'*>1 Å3pÏäÃ\Ä]¦“ª?²ŽÌ}q3ºßRBÑ |#¶ªÖ²„oPH³|9vÍs4`~~äN:’¥7Kz†pá”.%›õœ7é.®X“Ê£»HPÖÉÍ¢8Ô^üX¯¨|È¼°\—Ø†KØ‹Š*TD…Ë¶|¦ÁZý-Æâ- \ªW¡_ÆÅÜ'ZëY1í…ìÃfLÅo±g÷ñÕµñc·³
+ƒ¾ü÷$T”«ECÓn}g‡’ƒá!£:ør„-5­'Ã[)7¬@ç^…çkŽô«ý{êå“	Å+eãðN{Ù¬·ÎFmiæ÷Åu9pN4éñ×VNã±GzâÃpò…›gŽÛÝD³rd$¯ÑHîj=TQ×-€K¿î9¿`ï[åûîme´?(³ŒÖT™l’­Av™ã‘3>(9#‹¤bˆ33é(iáq1apˆ3¹ˆ“Jm}×4<Vþõ±ˆþQ»u¾ÉVQ9Î/¨ü=1R¥šµ&Ô-â=ö€
+ÃæœÐŠ}Ð-’XQ „JßFÁ=
+—æ—”Ÿ3D•@m¡ÌÉ/fuÑ¾5ÜZQ^bf0¾úù ]©xi°Ò£XÄFPhoÈÀìM_³»¹¹)kGš˜(Ã`œ[ù…„ÔžbÛÏL$yH¡z`±àkõtm„|ìMUv<ôi ü~ñ²”ŽÒbúÖ½&Oè&ËQƒJ.[Öóªx¦r!eB8a^É3jI^×—Ç­)kÜ7E
+^aÐÌM%w¥¸rCéQÜ­‰ë|p¿Ús6£Æüwª<G>¸Ž:5é™Æ­Ø­ÿšü×HýpM4Wµóu…J@ Ý\	«ÇÓ¦¤máæ»3;&ô±áU¢~Zšèiç!¡÷Ç•Q‚iÿjÔFî>Àƒ]Ìh9jÅÉ½³Uÿ¶tùTl÷0:î÷7wö¢‡¨‘ù¾Q Ãf†ñ¦ŠŠØùTä0/TaÊNØ˜¯åâéMÙ‹ÓÆ–ðç§R÷08>H‰ïZÊŸÙêét6.ûç¿á†¢-(c¤‰æ|æàŸ½}™=±¦gáz^xû5µyUyÖÞèÜºÏˆ¹{	_ËZõÃ‹þÑ¥\ÚbT÷Tp:±ær3¶ˆâ¼ÚçÇÉ•åFvÑU•:gU7RÎ%K¦CÏ.7F…ê×ÿ‰ŽœÜÖÏ'ÁM˜Ø:-‹MÁòù…îa¬¸§üh¥‘€¿õDƒÛ_ò	’-ÂU¤3#^£,‹…`þ¸:o2L…«+o`à‘ºBø£hÙj¤‚²E;I>¥'z"¯î;•yÊ	\·ß7¡ 9ÃÄrzFztu¾ÆÒ
+:˜iË^µÞÑÝ@®Ž<®ðb¹Õó‘}"—îjÈ2Íî­|ÚIÞå—óN“Ÿ¡šMß]¾t3ýÌ7ß=ÓLK(Qó}¡ÝFL½Ì˜´\f_$_ƒ°¥áO¸fêWTƒ#ÏZ
+Ò	j‰’	v_îç^Cøfº¥ø¢¼º"ÁüÄèýÐ”@H¸¾S)¶ÜnÀ Ôð¢’Ûz|ŒúL;]‰z¹·Ôèàéö^ðâ·îÀGsl[ØÂx˜´ªËKnµM!`pçòDCÊS7˜^æ*§Ò !]ZíˆÈÜ¯öŽ÷ë‘+Ÿ“„éÆ(ÿÄTëEV:w÷…–ýþ øâŸ‹QŸKÒr~¯pŽ_O¿qÁ™ Ï¾ð&óg™7Îr¤Ä”iUd}ê*Üä·²OêbýkýÞd6¼Ñù×¹|ò±{Ø¨›8;ÖŽEúÿí^ü¬-'$º(œ})«‰t`/ªíëåãr¸}ß,—Æl´aÝb5vË–÷Î»ñfkînÆ­Á-$*[iH¤µ6&qÌð7©Gä<s'››ûñ°—÷»‡sÞ$H„PY<g¤#/ …*ë˜ë1¥áî4SR25"¤¦QFñyìµRèëLª×œH:‹çAÍ4¡lJÏ[hÎ+?¼îKërOÚ˜Ks¨ËJÏœ'•2¡2v­Jª1=å™ÊÜ©ãîÿüÖ—jç•1P|¡IÕ#nw×á½äu›yšK¥q
+<ž¹GzM	¢Áàüð¦?[Ë#é.\î>ž‹[ šß³`ÁR™PT%fÒEÖÕMé9·6ÞàuñŠ2Ûl4)Æ’n`=Ü¤Üõ P9éè˜ÖÅh	]d$"*<¤ãÇBBŽOVÃ3i_ˆÌ ~. ®'öÓtøÙ‹ê3«ÿ(˜õ˜¤}¤·œúÕ×%·«jusM¼œž¸k“þ,BÕšlºÚÈ«‚˜÷7Õïnâs>ä¤¸t‹öÚÂ&=þH´ Yó2ÔT²bô©œT£zÉ—´;ïžsžL„•ç|ÂH3@!¬Òœ*©
+Çjç«^›˜Õ59ù®´‰›]Ô©N¥‹FA ,òE‚æf-LÄ`l;sÊ°IlòÁêEÍìæÎöV3Õ*3B÷´GDòFéÿA~þo·äÄ±}ê\=-œßÜÜtÜÚqv%óÜ=TÏ6Ü;Úînmmu¨Žñ—,.´< §«ÂÞ¬—ºq·ó~?´ªFÎ“þ¢Óé˜ÚÝû¸þ¶—Ø'¦¢¬C.wÃž	ÚÎ—lŒ ÈƒŠFà»ªUÏSkiâQ¶PØ¹¨Ð”rs]IËp\äXë=œ›©œN,óŽ¼¢›°x—7ÖîXSfØM¼l¶)”;Ò³+P™Š…bÐÕñˆPa±KÉ¡êI'y9wÞTÛ)^ÇÚÞÕþý:±ýº%ÈGØ“é˜L9‹+ðlg—¸Ùfoß…eéHÜÀóÿîûl§³ÕÙÄÓC¬Ë WŠÃ¾ö3Ep!–#´UHï2p%ä4r©‹‹azæØ9xNñD> Gu°µÀke+bQ&ŽÝ·9§Müi	´±DÓWöñc*tX¸3	n_…|0ÖsczÒö’ ÈÎDsq£jSJNi®~Ù¿ˆ›	ˆï=jüÖŠi@QÓ·›Îè—f”{ýGþ)Wy:èçé†’åµ*B4!Ø'½KN5P.²îþ<ÊÞÄ•‘Í»ç¨6›Þ’e5“yCzãŠÝàqNs" Z·¿ó
+HM—&˜¼yÜ¸ÅLe?y–¥—íþá‚c…YSOVñl¸ûBŒw:™)O[ÔŽµ÷>´î~ê–*&Ù„ÚÍ‚BÁP)cD pÔÎ†Ïh„£>‹½†ãÁlÂ0í|´µ12 :}ÐÎ#=ÂþüÐ<SÉºbƒ Bašý4+yÒ¨ÊEdÿ…@¤öÇ ¸]<˜¢˜<dßfq@º¹|-³»Ÿ:“G#9ã$»Öf Ÿ>¿á aaì-ÕF®gîL!äÙmLé†l¬>ÐjÀ”—— :j+iDØäö»q™k¦T‚^ž…NìU1*&h(RÛ'ï }ÉwÝûû»â6y%Ÿ/g´ˆ4s+¿ªçuKGq?Ç›8co#ž©4%«?}½ÙHRïÔ³dúñÑFò–_º'þµdPz³ï\}ãüÃ·œ‚‘PRßÜßÉóÖ|Ôa>ù(LY‘rœÕ­¬?©Æ.^¿ŠdÖy¤U•Y_$ÇeÛy"ƒ(]28»3ú pÿvU`cë
+ï%ƒ·È8¯k”³—\[_bøÎ_¸ß½¡W¤¥H>Ý¯ê­ÙÈH\7Ü§.,LiT<RrÑã”ø_-?â0æÔJÄ°m;NÜÂ~œ÷”fÛ,ê‰„4Ì1jö–ð5þÄ¶¶ÉGÒ…·Œæ3ÏqŒâ"ìä«çç¯Ž_Ÿ(Ø’'åT't²…2/Áu®êiMJ=EIX©H­ö	JtÁIÍZ…MaŠD™–fóZ"kfCPfL:*/I…²	.%ŽóƒÈgÎõ›„|c2wÔäþftxŠÏè‚¡ÁÁd£µÄJÈ)7Æ@	2Ö.áŠ]äÓÏ4xÑßp™¶|óê±&ì¼ú(hJØº—VÿHæÛ•~Ü¥üÞÔOŠ‹Y9è‹!¿½Éo×…TïÇô»ó]L÷:žñzþïì-¨ÿYíÆ½ñ?ÆæÙ›Ošææûø¶+nrÖqÚ˜(Mr}·šñbKµ/×µa´±iÑ¬„k/<oÐÕü•,o_+l§à–€ÕEË)ZM«nñüw}½¯'ûÝ<ÎHßÒS‹MÐ_J	öàj¬ñ¹fÁ‹½«&&mUr{íódiQ}§Øey¤÷{0ò|k.\ýæ›5}»¹J‘×aÝ^gÈ‹ù¡bšl$]?Z%eNSswCI5øËEJVw!	ÓÏšWò/¢<õ=‚b”++,¾À!Àõ'š|§Sëv+z…½!9Îg(!ô8e%^÷‚åC¤¿j#±¥Õ©›Ðè›4lvï~ù½yûç.Í}NiÖµäÏð¡EÑÂìúâ|iÇ”ý.<C¸  n2‘–Oi³èaîßgÕ…Þßä¿E)4	§äô¶Óš9CK,ê9veª5°*ýœôïðâ×ärîì²7¿Žè†Ã@ëÌí¤æ(÷Â¶ÐÝK±žû’ùè÷?¿?ûîìøÅQ½¤÷ `ºm{ÝyÖ¿u^MÙs×šÏ´z’3©Xö(‡IÎöO&ùªIäØ¬FGwÀ—QÅh·½ý‡Oëõì@¿yZfT¦3-A˜Hý^˜EnÌÅ}!`±ÇÐÚß¤oDlbHäÛâãW1	´¥S/%iÛû3‰ôY·’ (ûËáîááÎòLçJ:Úê»Hˆ(”~uÕz¬iNýhî(Øï+‹äËÚQ9NÀ…QßPIofó¹Ö7E)²e¹®7/.ŠtÀëçFÊ¤?ãÊR{©[Æ¤ö¼“”:WŠU0
+dÈ¯$²5Þ”Ø¤Â…ºM—Uèd™
+ÍœA11•[Ëîj‚§¼óÚã<òn„]Üêním©ÐžNJÂ¿‹+Ped“jªòÊW7Éì'ÓòšÞMS±Tq»û¨oîTù~»[Û‡»OÓÊ¹R_H–* ÃUßT,„*p²S
+ëCJ´L¾\Àri~ÝÚeÿF®Ö¿ÉË%s½Z~‘Í5à°¥r–tíŽ
+”é%v‹^yeõsvnð¹?Rmó2BˆE¬»¹AW‘C®¦Ñ"~ 1@w7õéT­=¡Û‘#ÏÇ/Uš¹>ÁX® YO3Ç Lb„7×ðç=.Óp¬DêBFÅ8…ÑÂè6¼:÷;kÞÅÇ„nupk€0Ýðås/^ª¯8uŠ*âŠH«,Î¢¿¢	ç) Üè—lR*(ë§ê5ÒoÅ×ùÁÀ¨ÅB?^>‹ÎdDc$dDòaéøSJ#ÀWÜ[Ê7×Vå×,›Šbi|VÝ>é"B¡î*()º5žCûnP$½’æ?¬›O…BD˜š†-³¥?”SÍ&)Ó“öÕôq.õk¥-È(›¸V’Ö“|)ë<&Íà­÷æ¢²Vº8[Ëˆö&´Ÿ¤ÄþnT¶ÚuË'¢-.ºWÎíÄl	²F`6¹÷£ÜwþŒ[hîJõˆBôU1å`žß¾èöÆôÜ`r1HÆ¢r.Ý²j÷˜Àn]Ü¶¤åÝí–uÉó”„÷ÆŠRj§¢Þeæ;ú»@7!ç”a×ÅÌª¸ìÌ&U÷$µÂæ›|ä¸láèŒ^±gda
+Ú9à'ä¡§!Fjnˆê%öØÈÛp(é+a|W›¢yF“«Ö{…R&O†‘Ü÷•)²Cad$ýJO{©¹ŠBë§Ñð|“v÷ÊžÖ´“Œ\ƒeKôy$Z¿ÂV—Ä?uºäãx‡é°…Øª7ÔýüôI³u(}´˜<|ß–™ÑÝP[kw×§ÎQ5øãvÖ?’o¶¹î>„[¦»ùÖÞ«¾Ñ~-®¼86†H©7~¥yÒºUcfÐÞj¦Ó½±iäÑuôÌ®}¯rÌj“Å¹Íaå¨Øx8		àåð´Ë&´t	f·» ¦…—¬òÉš^—¶¼WÌ¢þ‘”a¢_V&íˆ?ÖÝ‘ÀÁÇã0ñàR@Å`m‚3±ìîl­‡á¸ï<Í$é\D½^‘Ô‚âCÐ4vþnÑ¯ &_Ë¢	[ž=¤»»!ítÁ0‡IáÜìÞ€×.ª-!1!ÈÆ³º‡h«ûé"	»xfÎÚlÒ“ö8O°sØ<%ø}7É´ÎmÛ›*Ê‚k\(“må[á¥Abï FY?pè0]Y?“3¬me ªëù¸õ™"ûñwœ(±:½3’¨ iå7-‘Oê:’­o¾“;žÉ;ûsï NÓ5MS¿ø$à#u¬£$jãüz=;ŠG¸û0¿³÷86þýÏïA=ÃÝJîÀìÅ›SÔn´“-ÆØÒåvIì>÷d('>BëŠ³]/*2ºJnÓxö¥—]ÚXmo§xÝðÝMÑ]^MŒ†e1Yó“ºOâ&{4+'vˆRuŸé¨H6ÐL®å0üêŽ—–¨á>iz-¸bÂQw„Ä€µg.4(3TtKi©¾´ Î˜‘Œ¡U›5¤k´>EýNRb’~ÏòbC(ìÜß[XK
+GÄñDÙl!s•ÔýE¡•x@væR@˜Vc<O|K¡ƒCfW2¤²áÓH}ç¦Ê®£+«JYiÆHÞè§5_Ðx0_ür*l{Å·#ÐóJu3PaC`jˆVlÝÏfãÇZ7iJ•6zgŸ„1
+Ú£¶0E¯ùœf#ü‚Ò=ëd
+í²ùXÑ;–¨8³	}–i­	
+¥ìõ€H	âZYÈÚ7Y{Òítùÿ[-ß Ï"ò¼Óú€Ž¥êˆð±Àù<~Ç÷ ø§C÷2ÜÚÀ9ñ“äûdI<7m23›÷8o¸ùÀ%ÿè'G‘PÏ Ñrô¬×+Ñõ%Ü*ä ‡:¹ž@WC+L[
+‘¶éG“¦Y?¤³ÈZ‹Ûæ\j©Ùá× P<uLÑ&älìdˆ´ž”«Gþ¤ÕF%],áˆ¤äZmEÏû äÝvREÇí¾ù&ËÂ•Ýi’uû‚ª ûí;’Esþ1òŠÎ+J¹A”¡¨ª=ùø¾}g”`%éµU³)¹šæ­ },("{’î2)$«œÈ"fyÚ¾¡¨²ß~àƒN[êÁ;9Ç=ÏàréU¶ w<­}RñÂs„K`&P6É0æà‘…æ)&*eH®ô§ìPy ³¦þÊ ñ'˜q7½ÅªLæµoWé Xcp#Pgâqô;î7²Œ§=ö­T¿¹¹®cCþ€úþvCoMšªCÐ†s»D/1{VSa¯U»Ü€D=3(™Ž#f)§št­¿ÙÌÉûH·OS²Ì{÷<±œnÕzA÷´¢j¢ÜöÆg)¥%/ðžG¹b)Ë›Ï#fîÂ÷³Îvg3`1o7è7]W¯Á„æ”eùPt¨Ft#µ	€W‚È,aç'µ“­âÖ? s`‡–5MSlLFºöH¯7Í‚þE¿bÅ‘ÝñÝDðÍH›V[WK}–F™5ª‘SS?Ò0SŸø™	«´þ:º¨›öýúŸß¶”]EüÎáîþöæfàÓ òÛë,µ…ÊÖ*M•²í¹ª½Z‡ÁóÐcZvð¯ëb0¨:¿ì.?]¹àM\/¤ÂXÌ'i¢^~š‹™¨³?ßŠßç=Ê¹Û©nüTØEènvÄù’$ç´œ
+ÆšØ	£fl˜äkYÍígžü-Õ­‘'¡j¥Ÿ%¿¡¤=¯ÙÊø0›}ƒÖüÑ¨–¬ß¸Ç‹ë
+ý	çz P€–É¼/4þ³ÁÀãt}ã¡¨i5fxÙ¥¸HàXêÒ8ÞrÎ{JYI&‘Ä®÷)a/¸*):6·EŠÿ@¹ð<Œê~œ½ëƒ‡”è>tpy¾UÃõ•²ÙÄ¹ÝÎ¾´]ÐöI0)ó~·Q6ÚxRwòEãí&¾˜ëö3óé©¿Ú¯zg·cÔc½ÿ Ïc·³™AÊA)ÅÏ«RD¨0Å*ø .÷¾nô¤µ:ãT±c[4^?ÿt6)¸µÓ¾º¼Oý Â£îö<á‘ošEÝ¢K(…¼¶Ûc­ý²ŸòSˆÊbm³ÆHïh¨TÑBzŒ‚-Z7ÌÕdÑmxO!îµÿ"dQ4†ƒ,î€ª®GÙwóøûxÓÙØA§š\5ÇruÄÊs÷#ëe9Oú%¤e'üB6èP0@Jó"…SŠ­`¼”jÔI;£áåüBL©ç½E²•ÅQÅêdO×ÒÇ»óGi¾¢ö÷Û®¦lFÎ…à«5§J-v½äÍ#,`Êvj<¾WÛ)€¿œGþ:¯§*õ0Áê“r-Z*c_!µÑ/rñ=Q 9Ø;ÜÔnÔµ&Þr9PÔ©ÔÁ³Ê3cz­=ºÓš‹ã~CŸxKšRV\óamX*Ùê“j\Œžz×Õdmnú›3þ¥	ofJÆ³)€¢¹óÄ€,n\­×üzó•¾ð·èÍ=¤H³•pÿù<\ãúû—nFVš½x˜'–÷Ÿ£»Ð²d`ólµž]¬åFÚ:õáÇáa$Û¾íÏÑVšø4ª0±džSil|‘Î’¦oñ=ÜŠ”§],e *wçÏXSçHÂy¸ýÊ^ :>@:v¾?sK£ª¥y$Íß{–DÑŸJßÐ²V~«éô	œ×-¨™á…óûúðzgbŸiëù!™ì6GÑoRá5»^Ò Î…àRWBåÐaõ‹‘ã•¡TáßZ²–ï
+_—ö (ð¡³–½¢®dv¬èHËüÐH^‚ÐÍù»«mjºl„f…$mš?r‰?ŒêhAY;ÛÍ`Íž]^²ëìË¹(P†ÁÃ#aMíuBé5>ýlTY‚Ð_MšP¶tÇ¾…¦åã„žEÓ°—9ÅE`Óiö¥³Qû×ªê×c”_ÿ]ÿ=¼™Ó“ènù‚5›ªèôIÙý±»%@Kî;d"å\4 ‹Fñ¼Ê–-‹Æ˜Hô>&)ç•5w«Ñä®|}ÜÈûd‘&u"h½9“l²ì’áù®Àÿ“z«eÛ|\LzBîê«ý>pµ^KCmš‚à~¢”$.
+}nÌTtx;¡ÂÛ”nuõÓ¢acbÿœ=™Î¹ìé„–ó	Ý+<—/’ÂT\¸Zã{î>à|éÎ·ùÊ}¸47:ºïrÆÝ…¨FóR$ñ@Žë*ï0MÊ2ŽÈM{æå	¥;:ª½ëwâhC8CvãñJ_	5Q²™J§ êôX@–íoŒîNZÝnä¶½¤Ê\lYe¾÷WK ¨ª70âgÅä·¢ùnîxWñ0¢w‘Ï¦>·'<!©¶^Uê8
+IA)Ý$‰»çâ{q0—*­Û‚¢Ð)
+‚0|¬h+eÆ^ðÛD|<e¶“Ç§ÿ}g&#	´¼¶‘IÄÚÆÌ(|ðí5©›â¢{¶¸D57û$á{Ý¹aCe´øï(YÛÎtUÓ¨xŽ91jå$ !e#JŠG‹³º7Ë‰$šÌ÷r6‘LªjQá¶•'©ï·ƒm¹RÛ”Ód>ïêUÄú<±¿!0Å¬[†êfRIc½þˆ¨a1ÂdRáOúaíŠnkâäMXiýôÏô€Äk·ÛA’äMíM‘Øï©ÜƒË§	Tç÷|ƒ÷ð2§ ÒU¨þÈÛPî*DÌš~]¥Dƒ)%Í=ÞK„™B÷‘©8JŒX{±-¹u´šÄ+=²¬tg.7#(Ô+¡G&N˜NHKøä-0ÕŽZ‚ÞÔÝçCE'©iltžÈ˜õòQÌG¤Zº®”™jq ç¿µ2¶ÍR}1A—Õµ$4· œ\`F†ÚpüùG™áý9Ï"·n"ìo°Ú§OýòÕæ¡Jg]²¨2å!J'ûV¨^Õ¶–£š€¾†LVSÐ7ÚšVS4­T_lqz6bóOv~ztòËÑIÖþ!ûùìì½þxþË³“Ó}”¯«+wûäüt±’ÒøgzU“ÌóWÐÞ\fãIsdÞ«}¢¿_y';2~ù~uŽØ-sa0Ý‡aÅ6w£@æX±Ø0ºõÏôÓ,”íicŽe%È“~åuÒ˜½úÓ‰ÿ›°ÂÈ‘ŽàÛù”P­&+ëk¼±hÓ…±ŽÁa÷ÄxÖÐpZWÞŠáU(edØ¦E´‹ ôìý L¢Ä»¸±†…D.¸+}Ä×û5“†Ò†¶"û}YßÖ •[«R°qvÃEèÑ6ÁjçvôÏ9y&¿ËÝkþð÷z6’ 7½³ø8'…õÏÅ0ÙÜÈhdM@Åöµ8;éÝ—µ7“P{0ý¾ÕétZ‘ú”{‡ß•Ã«P¬•È·“›e:Åª˜â^:ë%"èn%Ù©W†–|cÇÓxA›4‚BÓ2ÅÝnâYðËÐN®*l3nLJæx±îðaUwHä«¢gÞß2ek@¼öé}_ŽÐÜA›‹ÎZ:ëK/»fé5-)ÙX³u:™NV×ÌÒY¶Ym{^y]$ØbâÂ0ø‡ð–m. IöÁjYˆwøÓÊ,ñ§bz$võóÛ³ü
+B«k†*Œvwôðaäµ¼¶ÄJß9˜\‘ý2¿t¦W¯~³–$XHÝè Mã‚idc›µPƒóG‹`sy$âaõ»	«¯¥-•åW'LÔÕ©aŒ­¸_Œ‹Q?OÞñÆÖÀÖ$µVQÏÍ'SÝ*Þ!RïuÜhîéŸ-(n2Êî=Í1:Ïg¢¤·ÀãwÊ"Ÿ5±"qÃž‚$D¦S¡^è0ãÅ$–QúPÊâ×¤2’TôXO#š~¦¢ë’ïwŠ¼å‘ð YuD, $"–Ðó»YÿCÂxŽ#ß%â¾¡aR²Iÿ(é†ÔËû•ZuçO^jo$ÍCärà×~þ©1¶¥WDçBŽæ~õBü¥Õ–Ð
+´57ÞZ‹]’'âŽkJhAó¼`3Õ’Q_ [J0,ÏFý×Â”¬]o
+×}2›ÄÊHÛ9•F#HZ¡J+d¡X¦dîz’ß¤w£›¦òóK¼¶-Ñ	:ý´tÔI‰îÒòÞF ®.µÊRÖÙæ­Å¯Ê?—ÃÙ0S­¯*‡Ò™ŒÊ9Ú^MÈÄÚsþIjÔ	UÚq5~á»q©ªù	KNÊuØoJ|ë‚.€ÿ<}Œ”Ì;ÈXÓ&ñÚ›-œûWàâ 3Õ!©¼ðÖžJ®+¨è[žÄ¯)1ßÊ4ô0PqòK7ÝÎX:ËõÓ³×¯Nþóüù³Ó£ä±üttÆp%þ<Áï<¦2å“ÞN§ÛÙlÜm8¬Fç¢hÑ †„d¤Ëƒ¥®åB·4Pìjôš:¤ìK+I©ºç"["DÒë/Õª¦œ)ÃgîüÎüBË'“üö<f÷"q§³ÙÙ¥IçÅxfÐü>rµ ¤Þ
+*rÝ4úrbè)™Ï¾ ãN£Fjr¹¹hi‰µ”vŠËÈó'/Ýéi:ÿXÁ[é»Ø|;*ÀtÏŽrù€U9Tëqü•#´šÓg†¢Éð<˜gáþ"$FÓ’"2ÏL¼T!;ÐcËá¢úì7vÃ.Æ|¹±ÒëËËü‘¼î«Œ&Ùî1µ¡\x‹ñ‘Á†¾%`×ä—ë.,p6³t‹—@f&"AÀ´ƒ€(v:¸­ÁÇÚ‚Þ^{œ52_õ“Ç+¼ÒFújæ”¥ïœúÞ-*Â´Ì75VÎ±	ê`•}7þ!ºõòYù†Èˆ-Tr/ÀÃúÒ2Í=äVáÅ’DI‰C¢ö7.èüíÇóÁ¢½x”zË‹F-p
+Å}
+Ã-H·’b±”&ÓÞí»§Í¶G\aÁmÚAg ”Òò7íá[¥=Æ+”sÂSŒ½÷—7˜èR+Có»'þÌ$`ä†Y0RÙÊÍ•0ÝM•Õ©]`ñ+|~XNYnžpÈ©†bí[Í¼>,nvŸý™¼¬^{ Y,t€‹g¿`×8áTét| Ë½ö×úŽžÚMc”“Ü˜“@ƒš.½e«Éó)_z¼‰E”&Á|Â$¨À¯¿âjÏ‹àL_ÏpÃôÉYí¹Á®I2ðâd`×K5qÑÙ%i‚à|‚<2ZIwbÏ^d=½ß·®lã§ßýˆ³™õÙ'×''Ù?Œ?ÓÉ– I´|R“KÂÌ 4Ò"±JAó©foeïïÍˆ­,ËüîæbòÇÉ†mX`*õ(¢—M%"Q”S˜ÉÅD±Ñ²¾±ô;kM‡UqwOÚÁÔAö¸|Q!ViùUàÌ¸ÑµÃ±l!:Z&4Ö³HâÏSœ'Ò;q7	ÁPQÀÕÅ`åVÑû›ÄÛº¿¯­ýXÙ¼6ç¤ÛÙnÿài-×¬Ù¤CÇÎ7(y«âW?³qùuk‡“®7Z-k«£áˆû¬µV(¸êqÞE£To=ÐjûÖ2#I>ÈêÞ¤’<ÇÅ­:H&ø,\7®V&alT XyOn{=–à²%-ìžE6¨¾jöA/Â&ëš€*•¶Â[)´í¢@ÝyœéÛ^ð­FÆ-e¢frÏ\«JUtHÚ‘ä+(lrè{_>¿¨«rÛMë—÷äq¢9(æ‹áŒ_ÊËƒ+¬RBøEˆ¼£Ý-Öe<"€žäm.fžÎÓ¯ø¬þ‡ãf¿“Ç%iËŒ8Õ÷hâ¤±êÃÌ©<ß¹8Ÿ~¡è9öCT€ ÝzE#¹qï74;$Î…»ñIdp©D£ÐÂV íÊ‹ùÔ\}Õ8²ÓÈ·é>$¡»¤ÀX%ž{x”Œs™ë‡¢³ûW¢=`©tL8Œt¨7Ëëœ Ó³ïÆS)1‡Ì	!‚®È	Vzï˜†a{´ŸUÇ«B2üçË5œ½½½ýµeÆ7§@WÖ¯©¸t<ŠÚPˆ=ì„þÊ«‚‡uÐhZ‡ÂÛŒ¾Ái-ëð(ÚÊÍBRöQxÛÍ5ß³&ÿ¸@7ZQoàf_\GWÅTÛßÞr<#ÿµgF›~ïËˆÞ&Ò6™ðì9…D²7h£
+Gþêïn‡åƒéƒñÅ~”õ»%pécš±’_‰R’Ç_#%ó±¸Í„±C;ñ—ïÊÑx6ÕÃ1†>«I«r]#ß.$—+Ãþß!Ëè½Ù˜›%äæIeN<ü¿$j•b·~/
+ZßW!WÝ;é}tcÿËáÎîÖÖÁZìÖòmX±ÐÈ-Ù=Ò•·EÚ&›bË9ô.Ð<z¹§OÝ’¥1;îK4†¹`ò˜Âoˆ
+ïÕšæÞê×nSmÏˆ‹¢Å¸ÁÞ(ì€‰zÿVöû_ñ"¾Ç–œVã²÷×é÷Ý=r…DssGû²ÕÜÍH×UÔg³Á>³jô¦r³„zÏ\l¯½•Â£$Ò<Gž¯ö ìügõøÒzQ.óA]¨ð@‡¢_‹ñŽs&ˆ¤ŽS+†û7%äÞ¤1:Pæx]a?
+Æ‘HóES°žTÛ‘}ºu;_²gg×ÎYååà,¿ZÇ/¼ÊéY.ÝÍ¶‚ÎJJ½¹<F´Ý@ÛØ\9ÑzŽ»ù¹&GÞ{«È-÷ëè·ø¥ò¹ ñ¶"`Kü‹;³ÂÞJye1’<lÀiÆ0–…'MJðíôu±Ù±3Å|Ó=f`·èùÀ` ™«@¨²–úÐ)Õç0Ey¤¦ÅË2êEGíºØu™kwäLkäîB‡0ÚTªËÜ‡õ¨Å”N¯ReZ’OPßªo¢´óW
+åfû=‹	Ž ŠÇ}"½8F¸}cŒ7Å<m„é½›½iè\{õB\ß¥”±Ä¾åýï“æ³'ÊÀ“¸¶õòø¤“½54ØJ8|9)Š¥ž.Íâ<?þIÿ»#åûønþ[›ìt6»b9ùÊUË_0ÝYöo”‹uÄ–ß¾ô}¢§lŒŽ’anÛœ"Qvz]S`TÜ¶ùñŠe-ùh£h÷->ò¤ˆŠÂAJ´¿l‘àÊŸx¯9G\»}KBÊŠ/„ÖóP¨èï˜	Àì¨sÕÉha³÷Þg{µ—bàÿV¯3#üYi"úòd` ¨@£±³(1±žößÿër:F¤áfì?(?ºýx½þã
+Š÷æ¿Ê˜íyVj;"'‚Ñ/jwž-´æ)°Íøö59=º³"ÑõÎC¨a)L,(DE?7­À]pP¬=»²“£_ŽNÎŽ^FcZžßr¯IÁÀ¨ªuòîÝY+"Þ­^¢…D¢ƒ>OïçµÎÑú÷TŠˆœâ”²Cë”V‹áqN¾=ÞNŠëÏPÀußiÃø3©³j]@øi-SAKèJÓþ·Ñ÷M?ÉYœT£ºXÕ\JWþ°‹2?Ï„ë_v¸(¼
+|çcú@¦ÜÏ™rõ“ Éƒz‚X¯dŠÚè…å%WÇ&_ôV	›YÉÅM˜(!EÂW™¼OÜPrã×ÇäÅmŠ¯ã%âÉZÜÖPÂøbTNÿ˜6u]EQ¥ÙuN~Ã©èirM™p‘ßÖ’‘Þí¨Û=¼Ç¸0ùrØáœ›÷ šH_Êo¢C¾¨‘4)®Ð'²üdÜ‰¹î?³.uƒq c[×B=?¹®k‰?¸ÍiÝ›Óšwy>»ºŒ;ˆš­Ÿ_/3³É¥qÄ»cRÓùNiO¤
+hJ·³)Nâ€©ìDŠôñj\¾¢ßxÅV3?%Æ¶*ô87ë æ"?e”¬.ÐºÄgB"G4s’Jðg”K¹dcð{ó+Ï½Ýh³;™-•"‹Ôgðn„\X`G®!ç“2â¹³pj=0žjÃe‚Ðª²½+íûSLM“‰èùèú³jþ#½ÏPr<vŽÀ;´7NóË|RjM”! ¾(ÅóÖÖØ êqF54Ï•/’§’‡°úGI\–p¿VŒ–¹È˜ÓSë·x¤çlèrÉ:ý+é¯ùpü-÷îàÜh¯L¬R<	Å¶Ñ»KÕ?#u ŽM·Àêƒ}¤Giú@ýòòv1€ †SÈÝOúu¨Zó\°šÒ‡“cxŸÿ<yu”nnnnýëqFÙlÉTöËUÓß@²WÏRÖý©¬Ÿ© Ò|r.÷D©19ª÷Â˜ÿ°£/aä…¨”ýý±¿ÂÅýV6]£š™™$€ª§ôÂ"e@Ô¦À…+ì!ðkgÚ·¢H­2ô•²}„ƒ‡¶!cG~w1É6~ÀÐÝýðÅƒRIÉÉInŠ!' _N47± Ë*D¸QMo@ˆúãÜ©b²ØfEl·›œæ4	‡?²¿Ø=¦ý9Ú8F˜‘ô™ÒøgùòínêQI=íL+I-:t|…¯È’ã+ò +2˜ÃæajÏî¦m[cýÂP¶®"Âwkæs0ÆÀÈ1S%èíL´˜¨ü%â•Á‹^÷¬\Ú,.NpÖtr•ùÍB“§Ö:ýmâ{¸§RÈi`ÿÒóoþ³«z%¤gdHkÊ6€ÖB¤½pÇ1ãUm`YlŽ‹¡a/:^…×æUèZš9¢—Þ½'_ÈNê×ýåpû`ëp›ˆí¹†•ü¶ÎZäÔmnÔÙ¸=­Ú©oyöÓôÙ“Ï»±mv²tÈË®ÓˆmãøÒg3W"½év©›	6¡Ó¹¤%Kö¥õèý(ÄÅT³K´N÷V›iò¼wÄ—+ÌGKt7jK<Ø‘-ãé¥Œ§à‹>Jž¼×çÇ™<E{ÊC^òÞÜKÞ>ØGTž¹	M§ïÔ‹3SË7êíÄz«Ò„é¶:"û(€¥n_lƒ÷\º	Ý8E»wdÅTMI<¼,5þ~¿»dác<Ü¼ UéX¢ej¹ïÅVœ®Ï+F"Ã+ ìOHZát&Û*¨þk€xêrRDqñØ$þÇàtÎ­ÿ*gjü¾Ã œ‰ËðQKPÖ¤!Î¨ˆDƒqL
+¿ÃíÝ˜D(9=yíëG”š¡JÝI‰iûäk£J%Ù%í/µ@„#LÎäîÁ²`$¥õ÷Ñ´/U…NRôÜI/%œRöÓJÅ_fóÖyF–m¸¹®fëÇcñƒÝëêÝÍHòÚzlÌD)sHR>6SèÄ!	ãÛbâíßÑaÝ‰àGïSè¸Œ>žÑ2Ã3¨;|{gˆö67·³øÆ{÷3mÛ©«"ÖÃyx¾ÕóóWÇ¯ÎÏ%"þ£ÖT÷’Aà2Ö#ê„ü77[m€ª1_y°E,ýUŒ>•“j$0©OoX÷ekñM;eAòÏÊ]{Õ¤ø§x>jFL²Ò?D„½×rZn„=†¬ñÃ¸+ÆK‰åí­¤ÇŒqP…ú‰q,Ì 	Ž}ÅòŽÕdD£ÕB½‚<Ý}‘÷LGø‚©2¦[N`Aá~À´êU¡‚%¸¤RjÊkº±û:m N³×wNÔº$ž”5}º’êƒúÏ¨ki4Ø`´s+Rèt´ÇÖSY)#y\kuç	Ê^B:Ü±)ôŽŠ(QvÛ]*„\žÎsáEÞÃÖöÁa:çKžBêwçPíª$ïPâÙ¯Nu´¤Ê@nÔrt9˜!SÚWè*B3ÁZ%L.xRUy€ùE@ÝÆÈÖVÍµ«Nbž¦ê5½f"e2Ô»Bô¶·Y½µÍÍÍýe®´µ`/##n}öÖÑrò:ª_•Ÿ4ý×]ÇU"œ|$•¼ˆCŽ®À$„ù‡¢·›½b??Šï¼É‡Šü³á‹TÒëÓÌÑKRnPi/Žzty†YôOÇÃz]ŒÊH0Àõ¸R¬”„¬/À4‘l—{ÉÌÍ²ôë6P4Â¨=i5»×wíäƒŒ•Möççêæ,1¾Ë»©ÛQV	.Âl$¥[é&E.Õ
+šJÂm‹ç³áøiöKÚKÀu¬~˜ÓÇä¦½Hç?nv»AÖa•;wÍ+ÈÓ{¡yý•"ß*D*57ÉH35¾.\r¡ƒRƒ8¸Å¤¤S¼¤¶•º!6pÉPE™®®‘Àì’.w¥dwÛ˜[áêQÏkio<×ŸÁÁ»Õ¹¼Ÿh)}Š,ô	kI®‘—3Vh·ÁQ·#Uóhˆ_Dl~éÖ‹p«H®½ÂŠd!nÒtÃ©›”®ÏË=ÎÚ_4[Þ)¹(Ghn±WeÇOtëÍ»¢·öæ²gåT¦Z\içyT^l o\P«¯<(šì·ºkÉ –Ý[1ëw Ñ£¶Ò¸.HÔhl×BÞ¡å1ÅVìaOÐ° îµm­©á­˜FßŽ„rà@©MjZõfÉéeÑqŠG/h½yâÜø],4ÙŠð»±l}Ÿ	^}“£(ùØ§Îmîïì¬=Îí·Ãíµàãù€ƒÌ“ ^`Œc[s9‹ï\øW;U«gÊ/¦H‰¾`¦B¥0Ë7FZdWÑÒ0_%hùÈ,bE@#ý);9A£›h¼áÞ/ùD¡´Á¯ü¯„|aQg‰íÂežl³‘`ëîíìnóö9Ür«g3û’dEÍàbÆñt$-}¬ïäíX›¸ :•É#IþKÛQzËRˆH¸¯1õE“ÐtÍä‚
+ã^½pV°¾Þ_õõ¾h¾^—hª÷Rú·/ð¿Å$Zž»
+óØ‡}¶¾6ËvyIj­•HNF”ÙDñYÁHJªË,5w4¶ƒ†SJ „à£ª=F'¥U½ô´v„’e¬GÒ:ç;æ¾JßÃ—~§ìXr ³èî—{œ¤GxÚôÀ;Ž_ƒ{H™Õôwä’ÞM.ük\ž›ÌÄ,Ëvg3Ê«
+×¡ð({®âqQ< èÑ h¦þ}½T§ÿáñÇ1Ä5¦niÕËÔÎ“+‰=â5Éwçí>·üÉ‹î2ó:ÏhT×šþ_ÁžP¶ã% ƒvÆÍu%B³¬òŸ–l ì?þã?T×PÄÈž¢iÝ¥Þü¢ Ó|5VÁ½_ KÚ¨~lg+'é´P+ˆÍó2Ñù–¨ó¥ÐbFLFžÎ€Ô`)ÆV'a~NÒU\Ñ<ùéõ»çÏ^ŸþsÅ£¼ÊÏ+ÿò¾•Ô¡cî&Ò]G¢p©bê‡pÓuÓƒø%™Â,8E!%#û7¤Óróö¶òõß ¬ô!¤¿s¾Ê¼«Êc¶±ì\ÇøžÔùeq>­Î-Ç^­EÃ¼_2f”Y@ ÑŸG•¤p’†èUAî>YO'ƒb)§öøùz2ø9^þJþè¾
+¸ßÓ¬%¢f-|Iþ›ÔldFç•lÊ8Æä[/ÈOí¬ËÜ¨„f)H`ð­Ç˜¶&±Œ ÿ¿—£øiœL?'UFF
+£ù›ÛiÝ?Çv{ûÎÍ«`YRýK°ê]–£B±¹M&7ŽW°.ÜóçbîÀö‚'˜³_yÐ.3à
+\#åê¤ùéoyÊæBa¤¶‰.çÿþæóã^ƒ³Iù	†¾»3Q’d¢o(	ç(·È*Æ—J)õÈã ¬ßúäU,¹$R,¤ž‚x• ’èèUtîŒp¿,TÃ‰£3#—gØ«meO&ýÊ'chÝ¨ÕLnß”­ë]·‡Õõß+rÌtFUZD›Ç6óÏç(\ŸÓ³”H!Hðì‚ohrS÷¹èb>¹ý’I’´(JM­"Dq¸Ï–(EQÈô c@@êÛbúþù›õ(E„ßÒ;|“_•½aÈ÷ìš#¯tÅ° ÊÃû"ï}œÏ#hÛmhÁ…EÜ9‰¦Ç´{æžÒ(pÉ‹Y9è7ˆW”.z¥¶L(ié¬~­Ui}j›2ËóLs<Â¸.©Š:©ÙöÑ_¨™íE¥Q…Ot>ÌGå¥25òíhº½Ñ¦ÕHónß¡÷¬qoŸä EÊExF×ã,¿¹ú‚²€þ‘÷Úa-:w¼i¿fXrÀ}Z³k–MPÎü‹éçªN‡•níåxÐôkÜ Y)	åópÂ[”X/4Èl0›K•n³½c™R¨£”	ã© ¸ç–UÌ“Ê›`|åhQN©‹£Ü‹g!Fÿ `_5œˆ1Ûþ	+¯Ò‹dsñ3îÜ9Võµ=–û?2÷…â·âÞ9©Q>A<2%7Û®÷¾–Ö#-}êq²`L5„¹l}g’GTìíAñ-á”+‘¤7ÒJÙl–µgÆ¦gDšþNé“Ý×"û'k9Ìšf²õ„ôëß·ˆÛ…=ú©kt¬»<*¢€ñaÃH3V²tUž7¸±Ú¶¾!hí1ÌªCÎD6bÛõlÕ¿žuëh5r(-‘¬)®Ð=¢»Â•…vxÌLÚc^=I 'zWëÑlîCðkÔyÔŒŽÅ‚›eL 6kœáÿ)N0·ãˆ¾êzÔI	ÂPÐ©Ráæµçç]îaæˆ@Ñ««J°;;û{[ÙêÄ9U#!]èUW#¶™c‰OÌ§ëíç_¸êîæþn¶J¨„FFÒ“®‡öl2äN?6î÷'µòØ8…1ß µÃÊ;œ}­§@‰{µên1¾úŽ4q¯V#×jMíêègP™¤OtG7ÕDÁV"èÜs‰ª“Ïv±4Üj¹ÎÎŠËËBäwäðp¡!I|ZŽ>9/BJÜˆo-Ò1AÚö}AíÉ€Òœlö±Yß¶ÝD¶Ç(ù¸áŽÇ·²ŒpÑ,ªl­Z:†j¨âE”z'K•ÐõŽbâã/ú	èïû’Qa¯ß\­çaÏÜvUp¹’‘ÝU>Pço\]	bÛ<íëÂÍÏ¤ÊœáöÞ`CÍ+kSxH¡ú´é›º£ØN£¾~UoÍFHR;_àoâ™ÂíøƒíÁb“ÕPdµ{‹BÅ]rTË2ÍE¿08}K|°¼ÏÜÊ†ß¿œTÄ
+}Âb”3Âó×óÉ§ì­yfÈF… <\õoÍqn‡„„§ià"ž£\‹Iƒs\|Ò!ŠLÕØ£qìÎôˆ¼D_`»Š?£ùC>]š§“’T3I×ÌBG„úz¼Ê+uâêróÜö}’—šº*ˆV’þŠÃ	Í±v-J“9|£ýÄ}ì…xê¹´1JáqÁÛšÆ»?y²eÏœíítçÓ[çÇ½zú…s•?™ 0Tª‚CX÷^††Ž<'Æ=ÄÉ 9)[0»/"˜ÊUà1&uxÎòú#ŽñýÝÃuß?èv÷Ü„ït»[{ÝNª%LËý•Éu­"”O0-5¬¢R9^áZò÷<097¯‘Ì9)þ÷ÌÙØçØÂî<ðÊXÏÆ¹ÛE[ä¼#Z¹g"ÎY·í€£¥ËlµÎÇåy.ŸîôPìš9÷3"k10>
+Ð;;[	÷×Û²ÔÙó¼þ0*ítši’ÊÚúÓ¬ªÔÔÉ1§TºóPRñµ9¥™%óÈ«ËH‡h'Ó' l‹™Æè‹•×-Ñ]ÙT»¸ÿ°·âä}ŸœìjF%T[º1qïËm[q@y°šI½Ü]ÓøßPYÈç	Äâoœ†¶ŸNA;\TŸÕÊ°@'‚Îvó÷ýŠd;D,Lnò‡³²ÃŸãÎÈÁÎÍÆöÇÀôé›ÅùûS¡'VFVµÂ	Æô	Œ‡têp‰.®²Ê1ãåõðE¥žÒJ­ÿu)z}!ó¾ÄZ"5êßY
+ ƒ¡ùgv°¸½}˜ýx2ª 2e ¬tnP„Y©jã‹Ó_h)çÂ»J]	ùÁ6y0³´²Ø·¯ª	¹=Æe°V$ËeLeÉ04Îr:ù1…YéÜµŸÌÏE3QO}(wž19¤Fæzóâ¢XBÔBn„Áì¶P'Åjð=ÂäÌyÈ'ÎQE*©òÕ¯(³`€¤Óš„ÌŒ3ŸOnŠ7bw9!Éà•`òiC}ÅO€û^þúê¼oâOøpó"¦£b.Yã;ø
+^ŒonL,Z:13ÁWÅç¢'’.x;.û w³Ût9Èn0ÁðôV'iñ¤Y–w&ZBþ-arƒ#V|ÎAï¥oêRH=1©úüøuú Kzg[L„5`9W¦=-ÜÑŽ&#õNm(AG§äÆÂgÏƒFÓf6, ZÝ²cqiK¬5,õTMQ#Ñ‚Fw½h+(sÝLÆ…¾ ¨kÜW4·ÀyÓI¦æ®çEêÍYê÷%9^X!þ«¸Í(^4<1[¨¼­ÑÄ‚
+sô	 w–Z*B¦·^¿ŽX_={}z$'4O^-ZJS’`Î‡e¢O¸ûJÔ?ùÞ2e?âþ4É‡fïÔjŒ0o'ÇŸ§ÊøUGh1`ÌÿrØÝ=Øê\IÜvóhúI<£Ü›g3F*æfrÐ%C&Þ:4ö¬òð]Ë*ý‹4:	{–`[gÓvuÙÖ>n	&ôKéLÝut†Ñ+îyCí_Ù0/G—Õ Ÿ¤ ïq³ÔÛ-fQOo¤B÷áìUûÀ€T´?lëëdÝž^çe&Š¦›0ßg”Ý™ÑL€Q›¢:‚'i–S¥€²|oVOÝZ¦×Nà+#ë†üvM½$9’<»Fî¼+®LùÔk1PJQ™ØiŠ§»{/"hÿ|âFZåï©f# )uEGÉÌQ(jì¦ðêqì1»U*,‰Õa,=*©ñåä5Ü”Œ;u¥ÎÈlÀ]Zçlâ¶††Ø:½)ÞJà!Œ’äÕËéraøu¿'¬4¶u–]bu-yŠ».¦åè&µá¯®Æ©‡¿ÜÝ¨1fW#S“üFùH(B&'K3Í&ì´UŸK‘ôøË?¶œ_Åm¶Ö>ÂÈ¦RB‹ïw°Š-ì¶Ž—  ôuhñl"íKÊŠ½ð}ÿÑc,_,êú6;ÜÜÛìhW–ŽÛRa¢U_[,'Å+¹ðé"·­®HJÆ/wÂ­Ü¢êî+°•ü²!q´n÷ÐË
+ÂYNŸ/\^ÈËÂPY$ÅœhvÅ'0Ô‹—yåîèÍXèù¶ g@t~Ë'ÈLˆÆUfÔæ^×|,„)ƒ[!‰?M€”"èZuÀsƒÛ§¨!Ðç×£Þ3xˆæžqÑÜ0—]ˆTBIø·þÇn§kàä4Û­G ³Êfê@'‰š®ƒ]\‡BÀ›SvÎd¿¼ÑŽYò‰áÏìCsç7$¨þã}´­î‰ÐLæÙ÷õg;ûÝÃKáµ6Ý?-L/òSÓbÚïÙ¤x™K™ü…[ªØ!¢X´ñŽV»‡û›.Þ;\“µ¢Jð˜®àdX®@ÙÀoC÷º’|éž÷nì*¸Ýu¸³»ýÔHÉ’;3SãÖ_ò¸ÀP^3¸„{à·ŠAÍw HZ|é²œ‚™æ†¯¦ó gØŒ{)h?[úšÑHœ$q¯okkkÌ<s|ÚçÚ‰Xþ/ºXçQVÑæÁ‚P°VÇ@Ö5ÿÆNâûS“nU61€;eaiƒV¥!—§“[íŠÅ>R8¹?¶“ºã‘»¹ŸÊCøÌ9cSX«²ÖFPÛ/?=Ò$¦¹ŽÓ)–ÜŒ”Çãs7··÷²6&«Ûñ"Q,c	Èódâ3ÑxúT±ÁoUÌ"Ë”ÉÕÿV„¶:Hóˆ²y¦ßýQwd\*Ô`ÄÃ3Ù'ÏNoIzùRj·Ñ<Ý\/™§ÝóÔ½ß<‰n$€ÒuôÌâ.œçh”1ó~˜ïŒ«O$a\”éãÞ×ì$b¤¤î‡ŽÙ³³çÏ]¬P7.*g" ôVèQãÂ¸Se“ÂEçèŠ—Ó	™«ì{ÊÐ¯Ie_( p Ÿ½Þ8;;qw}íþw²ñúõ™ûßó““3÷¿çY¯À”º…¡Dö{1ÑŽôSxZçHçÃÃ‹Ñ†	Š‹ªúÙÖð=‰¢¢ü	äH>a4gŸ…;Š¥c>M†.ž¾ê<lÆÈ“×=àÜ|y¢®ö¤ ûÿÔˆ%óËb]‰Ê{úùò’ð±ˆ9ÎS0ó¼~/¦­Íoæ§$ôÀÁo-ÌÜˆ˜Ç?ø–öZ;ýr«”(Ï.JA8g=¦»•Ûh>¡Õ3]'Î ¶ªä=//³UH²¯u:ÚvÈàbP1¨úÜÔak7&ö˜þóöòbö®g°p¸Ãà»š?{ï¥{çð7ža³Ñ*¿;nü?,¼0µsŽÁnñy¬Eæ½‡‡Ù#éð°1"½ÏâAxª/¶hÛ´æý>òâA¶çð ÙºöYö^ÂxÁ3”P‰?£^´”¥ÒäRèéÓwy·Óú0êß<¶ŽpNâ‚É“·ÎÒ<¥ØÅÛwVÌYeÚL:îÝ¯ Ý1´Ô ÓƒÜ´ÜaÇÔ~?ÇÙ¹À§xÐ¾<ÜmÍ_ibïi4ïøˆ;÷|„1…ùOEññuueêg†'55Æ9SŠ«y=·Qvú?_kË±8ºyÿù-$ØL_-¹SZg¤zÓ‹-ÕLyï>ƒšd&Z¸0aGÜ‡¬×¤éí´„É'hH2úL<çÛ÷~Ñi’>ÿT•îN9"±©d¢«‘çøQ)&õœ))ëph#’ÛÔÅ}Ð°¶´'M¼5¼Šº2R‡>doo Âl^¢#1õßŽŒˆ0‚ˆ ‘ÉÙ£;ß+Ov‘Ôu$ns^¦­óÂÕÚAi‹2H[OŠv¸%xkØ‘CÎöUUÁa*pùÞüp³=Sò¦ò7€ÁÀ2•*EM3ÁèƒÍ{Ùx[Ë¹Ó‡i6_XÛÉªš:¿fá»Ç•ëédeœg‹ëšð0RAÏ}l…Í¥œK¡5¿Ò§ÕTÚÆ½l•Z¶Y«%ô¶Sâ£}MHEø›Ë¦ûÅ pAî§bèØMW–€¢QïZnÄÙäø°¿Ù0¸§ãæ·‰O›pòõrdqûÎ'ë·¸à·šnP +ªÙhý†šðF €²3ÙÃ(¥w°å¢Öm[Q½Ùôÿ?–ÓÁaáv÷p»H‰swQñ=±:5K×xÝŒE¼,€$#ƒ¡àáÞ4öJte”,¤š˜‡l„zl¡ZTQ½p£@ÏFl¶P™êO†äÀZ»)Œ`‚³Ûíî(ro6ú8ªnFŠÙÓ„#Su\ŒŠB,·™t¬†Â¢ñ-ÄüµÄ…Wîý:ÀÃµPArŽËà–O&Ë]iP±³¨0Nm¯/†‹”JÄeˆ7ö··äù‚Ñ“Z"ŸÒê½Ì3J9Òp l*¨ŸŠXbYƒsNƒæ ®v^‡,mÉ·m„ëcH2&ñ=tYš!µYÜ¿¡ |È'Í¸wìû'zt[ -Â¯ír ‰Q›ž¤½oÁC[À}#S[¨†lQo_GäÂ±ŽÐ‡ØÆ±Œ"YÜxT¾ñ>JÏèxR1vÖzBŸ¤åÂz¡L¤ï¿Æ+£üŸÐ‰qÅ$š¨t¿<2f‰–^K·&`‘>TYá¢t<´XÛ×ÝÝëZ¾Y‚»â–Ò õU!ÁM€*êz‰t½/ßkÇ2>lÀ8g^	i¥œÔy"Â8Ýx»¼¢,Ý¨_H¯šóŸ^¯Mð2ù?½¦¹!À"|¡õ*ž¹ÏVþ¾kÂ H¹kø;t–™¬4„ÑºI¿šA(sÉÊ~ ‡ŒÞ÷XÜýÖiuñ-´Àoð0ùËáæþáîæR¶»àÁú_|²&é1Ÿ³Á˜M®!EÕ ¸ãöÍHÈÓJù¢,ð\g9zªjcÄ­d¦¨9¯­$¿ýR+¬ýåªÛÉiþ¥ÐùcðJbƒÏÕÇû(.ˆöAê•ïóùÓÍÀ/ðÆ¾tEw»ž _î4NÚá»]•Ê¨>úµ¼·ÓwoŽâ^æeXSEYÁXñrê$LV´ƒÈP,ˆ›¬eŽ§î[Ác¡K›‘—Ú išP*5ÎÕ[‘#¹‹7°s¸»ÏÖý=±»Ö6Z{©¸'ÖŽ'R{Hû«	øNGÒ¯ý10?²ñ¤r†cheÖþQÙúˆ2¡%,èªžê\aÃ\ØöÒ5VJ}qòú.ú½@„ üÉ\/Ýr ±ÖÁÁÎÎó%WŠA]¬Xú‰ç0pO†·ªº!…*`RG.ñÈkv e¹‚ßbÞs„¾%DYø?´˜)!V?yõJªè ð§késÞCh]žñ@V´š£ÖîŽé!FðáXoäkÝýª7Cv'V‰ú*óûc«{øÓ¾¯è,Ð¿´·äõÐÅF¯‹I¿š ÙyZbo}vI;ée,ž"Á}s&ëZJÿm“‘çÚ>«Ù¬‘%ûF´Û›{@É–ÒÎ8pÇ©„1H7ŒvrHBñy¯ºÈ^?ªñB‚y¯WŒ½ìb-.ÿŠ]eƒûAãßA_©ˆ€:3SA@âe¿PéîkMc”üÝç
+@Òêþ¢âeÎ¯æ—_ä#U«&þ7/ÙBžW£E¢Ag>^W²ú8ìèaÿi¤®PH	RŠOœû0{¿»Í®›|4Šª\Ñž†Ò›r­†qþzvBê~•L³ÔÎú]k™ƒqD‚—Û÷bÑÎiìÏ&ŠŠ#ô“f‰˜«b¤6£Cv“"¡Šu‡Ñu=ŽByî´0¨ýÁe[¤+õZŠV’jHTE‚în~1P.Æy¿ï^“3>û0H×ý‡”• ‹±TÔTYŠZE›ô†ReÕÛqÖÖçÏ:¥¯+DÌßòŒ»Û;>¢=ª}t!\(rDý³¥NË¹EJ­)2Ë;˜áæ Å R4 È©ñ´ð;l‹Œ0÷Ëoí«3¯¯ºªºrÀ i•­òÒä’å ìƒˆÉà˜—_Î&ƒµdwsTöww X‡Þ;Ü-á0šøª?øã‚Å³JŽwO|'Ên~û÷žŒ4éÎ"%ª5C¤~A“ÿ±”Õÿén?qç_öß"ˆò/MªgA‹ à×|„Î´À7X”(é)b÷gìîáþ¡©™ØqÇbñwd€bE«¹D°…¶›×ùŒöî'‚¾&k—'Ž/Èù_=èb	ì/››û»(RÕ!ÆuçÕ_v6·v¿•zŸ´ZÙge“au³2ÇN¨v/Uïòjî’n»¤/ën+oŽTÈ¿
+†2âÖEDEËE¯z“2LïN/lÓðÃ¼;+«÷`ÑMKûªàÕ’Ú—‰VBK·ÓXOññ¿ö ™GCy?ùÔ²"Í$Êé­D6[(67;Tª¬¢õ€„T&¿¿bwMúyF–ð£Ç[N6ü))&¿t†³ª>Ö–¤.šúRÚºei:.†1DltûcE¤¯òŽ+n¯Ù ïµ)#‚£<=(BB3Ådùq{åe>)gÎ_xSÜaÔÉJ9æû¥7J^ãš®ÇRƒNyœ-ÛÙÞÚë4Õ—à@œWR„Ï¾ÏZ·EÝúVNô!ýu/&è59ôÌ@ªyt5(Ý#ÅýW½¹P8pXËõãçÙ]"ŠÚ“ÃïØŽ¸ˆp;ûéç/äÌ*F¶zj-·_ xø²8 UyQŠ†¤¢Ã€Q	ºúDÌ×›.øgkˆZZ³ßÁÖÞîÁ¿w°wx°}°&Îw¿p¦Ã Ï½b‚r5•6òÞ46ƒB@/
+…îHZñº°(Ýþ¬§`¢ Y|Ê«krVËRÄÕäHÐBœÉ¶ÅðÞ}5Â×ˆ:)M¹@pÝ
+<ˆ_þQŽ@¶''¶)”#ÒƒžÝÁÂÙ…N>­Ø²ÛZAçü2£õh^®lUcïíîÞÁZú ÷4ÂJ"XLX¿diJ¤0Lˆ‡æuC0i3'‡ŽiZÑß`Q÷[l0XpÓÊZQ^3€·…=«ó Q7]‡Ýçèîïþ^ðÚSÝû¯‰ŒVoÂ¶ÎµcTz¬úú{èÿl>;H¿ÉLà%>d‹b42ÊZò+Co<m…o†»ñ|›Jýj,³GèOóñ<ËÇÜŽ@.É‹DHÄBd[bê,=%þŒq]|N1lL`ù%Uç2Á:X|è¿‘¾¤»üÝÔ/:Óæþ@òg=füœw)Vlà§¤è:7Enóoi'"XgÄŽïGÄïëtÝ{¡î$ugsoÏÞÄyaî ìM½jµÇÕ¶Ì2fÊ¹”¹x~Wò“dmp0àzñ~2b[Oz0/KÔ¾]
+à%
+mâk«°æøð@?JC’Ì³]B„bDÙ´ožRB–6¦;Ï6´BZo¸«š%ÁlÀ÷”b©¬­ÖD_ä}•”Åyœè¹ c6ó*Å4½}Þ¤‰,ºQoÌFâÒg³cŸ§ÂkAL
+¿š måa4² ÛRpÏ‚´§ÙùêZÊ)báÇPco?ŽÚ\R1ÊIÝq–$¬kk¨W¢| e³÷îÓ0”oœÙƒésß`§/cMü´¬ÎP’îîFÑè…ˆ;Ûl®1â”s)+ÈYæña¤T7(’ÀÛÌ/sßU-bŸ/ÞœFŽÅ2¯&Í–üÅySÛÝ®èÂ¸}¶ßÝ[OâC¸äŠ­Èý¥?D‹0VÎ•Ê{¡÷iDhK²Á5¯Ö‰ûZååg!êiìÒH¼‹9&¨s€ñ¢!j€q›;( kXŠY	¼ŽÔ)å#^¢ïã¸*¦çúU$¿}ÂT˜5jçgø„¼TÛmÏcüâÝÛWä>K}ztöáý‚ß£ž/™¥dSësžù¤”<RÒPmœñ¦àS)pçv‘€1¹@Wt¸šGÎýû2wÅ}5›Š n·ùËÁAwïpS”º,¹,ùT;þCÝJr`zBK‹ ÏGK3ý¼ª0{\ï^K†§s_ˆŸtÛ˜MN{×î.ýiöÝÐETçE®Uç¦N2NF©?¼uˆVÝãK·½¯ÊžÁfÝ55ÞY÷ÕÄ3	{Æ³Õ|XƒƒHxï¦pÜqÑ°o§î!Žq/ž×'Ö‡±MÝxœ¥)-C·=š¼5È=õÏmå	ÍÆŠÆµné\héõÒcì¢bÁJgÅ&8ó>VaK³›€‰¦;ðy|šTHTóHFò@¡´ëÕö’lèÃq½X5ô²^"*xº8•ãN&ã â¾€zÈ¾øˆ‘¬ò6+'‘ÙÚÜ<íìnm= ®Ö©èžÎÙ):¶<1O#ß¯­7vsôNu¢(i"
+ƒÈ´˜3f†X¼Ò¶´ÿ³öÝ&±ÔTqµB)ì±ÜîõÝ‰R/xš­îöþSW}?£â
+Þ¬ä™jÐÜ nb°zëNŸšè¶»ü6t£ÎGr“ÖIQÑ#ä1Ù¢‘®óÛ:kMä­l’ëp¹…§o­ûš”7ˆTA€ðléŒ]F±³u°³ë¿Oˆ”µí4•·Cÿ³—¾½wp¸ +3ÌÆ
+ægÅZV’¹ú™<WUÝƒyt0u\2¾BYIˆê^¸j‡º3wëÍ½Ã}·Þ~ÉCv[JKw•ÔõeIS8Ék•Š÷L–íËÂ“&,ˆú™Èh ô&6Veûâ,~ŒÕÖyÐþÀkì`	Õª^«SKèÈÖ"=SáÎí¾Ð›‘¡bä¿YÕî2ÇáNœúnø RåEÛ²so×=ÛwëzŠº8™ðÕ;þGÉ8)R~ªl$ƒÛm¾–M_[¹Y"2½E=ã>QkÓ÷œÈH”,ÚžÂ
+8i~d	ÔF†°º¿»»¶è¡Ôßžk‰‡¢±ãs=ðõìG3ïóÁ=ÚÙÕ)YPÖåTŒ3]8”Õ££Öµá:ø½³­ª`-)S…¦—m0„þ	EèÎ\LsÐ=ØÞwÆíyÞoÛÖžÌý$ðLþŽìsí†º€s€Ù~C –³bÒweÖŒ«NõU>™"f³µv,L,’s	úÆæÈùEPPðßŒdº˜ˆjÒj’‰».¬Õg”’Ó‚¨Tò„* ˜íƒ¥äÖÁº&§Y÷@-*ªt ØÀ¢™h)š²ž¸ñ¨€QÉI¡z€¨>ºcãb6¸0Û}	"ÆÄÜ|€7¨ÊÏ¢zXîÊ¢‚„Èô»›››Î?
+Ý ¯Ó¾îK<}_·è
+O¥ïŠ"};)âË>@ÿÎa)‡Î#Ñu¶!ƒP¿/ÚVž­ðî¯}kA•²a²¿ouZM{™.æ×³yöïƒ¼?qA@B–ŽmùW2{ììt‘(³1¿8=UÊ‹Øï€¢ó]ÙƒÝí½Ã§zBJ]I(mT\BŠIà’`‹j­˜žPrª R(´¡J>²BMt@©X“v	I]ÆÈ3,Ð¼¢ÙtE‘òìV(­»-*ÞâŠ»2¸ýã'_ÂvwSjV'ÎBYêi0…W×½gJòT`/"“›^jÝˆ.òS…·	lcû§è.ÑvÊ7÷Çm¶.õ¸B#21t80Ð¿nlîHúÐäÅç1Õ’ð¬QN¶èÊ-ÅHôŒZãÉ]üÕ@ØE‹™äO?þÐ€&œ¸é8q‘1^Ó<'_IÑÝPvOõN„y‚|€ëÖŸ9ùT‰ƒqìº‘ ÃÆE;§c÷~ÚègT6BùIV¾ÿvGÛ¹ú]«“ìL!”Ë äÚýTK¿–Î$L:²úÚVEõ6NñÙîV—õùM9ÚÞôÿM±2Á™2¢[•_M
+ïä*“µY‰á´âÐ½+e;mUy&9Þ±Õ:>÷|}­:2Hö6¾ç]Kû¡†„Ü6Ç°%Í¶ŒK÷ôÍ|¡d¥‘c0º¸¼£Að¼
+¸”ü~Ñ#h‘ 6|è¦ŠkcÒ¼m°Î ž»§þ›éN„™ºkFu;í·±êÖ½ªZ_‰Ë.mäiÔ÷þ­È?ÆG{<Ì­‡mDñÄNËáx Tb£>‹9`«*Fê0]£X Hƒ„AŠ@¼‰VPiùä¶u<ÆîÃÆ¸­ž¸6è§£åX+’°Í³Þ°ß)>Sd¦€óS=—9XâtSUž£ø˜cÜŠNxõœÚ7À9‡©[W·û*þó»¸V‡&Mhc‚±hŒw\’Ý&˜(¸wV$ÂùŽ­x~þêøõÑùù…{vê‚®îR·×#Ü,€Çôà#úØ ÒÝYdà°#‰2`Ô«„!m>è­© À›\Ûê“u-‘µò	Ù:¤Ðü	þ’3/Ÿ1B`qÍäå­³”
+¼: ðV“ÌÙ…3Tè¶®†
+R@ðXa˜_R¸YôÅº#8$1ƒô¸úXjóöÇ¢Ð-žw…²ò
+L})æåü“Y[m]t"0‘öUªÿ¨¶u1²U)c¬¦+$-˜n¬KOfé^U¿Ž·½..ñO~ƒ7ý34¢­W`ú+Aj9æIÏh;Lß¨æÌ/³·R5(CC!ÁO¸öìÊÃÏYÔÌ™½/Óø4W8®ÆcY`x	g^F£”†dënU·.¶jýÄcj.y#0ð50Êt([àKÁWø>-@fEƒ·ƒÌ¢–V;Ï]ìp;ü÷YkÄ,0@ŽèÆÎ|7¶‘y³M=’Û‰®ú³G˜«ÚÐQª|OÔ'‹°+ñuú˜*nüÓ‡c¾\‘”
+ülµ7—É2myýJ”‡K•'¯çX¬ãª(>º¹Hn ¦H>›1;¶QIÊœG>¨ÊibxšSÝò¥|0†GB¯J?Ôƒw˜ðnòlu}-N¹OPgÑ´j“áÝqkìfóýÀËja7‘¨·ªðêõt:~º±œ„Î$žnM‹¨üø[pqù*œ%[ên…kNoÇÒô“¾{ã«4‰,É‘Þ
+A=fšÁ×ÑCN†˜î8·†ùo²*¶´YÀ[ÑÒýjl/Œ°E¢èŸN”®VZ¡ËIo6D-»—øŸ›wõÔz<ÌòìWw¼‡â<:£pÚ)Œ‘ä#¦ùn¤Y4`ŠÏ2Ñæ'Ç˜TMÝá|-VN‘y^F¶4>ÿœ SßXuu¦÷±T€³{¬x"¶ËQù cpìÅž¿»r7w7{ðÆïK:àêLó7\ûLÜøR‰Û¿Çï.n¾O§ÂýVþÌÎé×„ê¼1Ö{IT)‘¿¥´ÍW&ƒ+˜0œ{…BÙFÞV‹r
+·vJƒ^i’L"p+…—˜@\@óÐem¬Ãv_íHsŸw††&—"@¢“’ËÕD“PÊbÌu³Fá,€6f©üåù)É’%öÒ1yâ±EŸ·qß—3_ä€Úm^Éž]ËìéZ’Ç&iN1ÃhZ,¢¾­Yû7üýßâ¬-:õˆ2Ý[cEÅÙv²ÿ¬fÒP±åL<OíƒÄ»
+5£;;zóþß4.•9ÁÐÇ5ªI10žR=;_GËl©ºO÷p‘EE[Á[Ñ1GØ‚;/Ü_h|r™÷
+âXøþUê«ûæãÚôâÐ¦E•ç¤¢sé¦-Ç±âÖ.C”GEÂM® ÛrÊûcÝmoo.õØÑc›ÜQ¨7ìš’WØ^¬.ÎÝ0™n¸ÿ€,õÅ¬(rò÷‹oáby%¬Kç&Ôša&K¨&æ"ð‘Œ/¨Í–S­¾~–n Üó'6ö…­×Zª¸•#hÝgx’0ù¾<\L½ÖÐ@wëV©4¶’Cš| Øvñù®|Ý—UoVmV‚¤zCáÒ(•œ.çg<šÈa”ãšë 4ÙCÄ»:‹@pp]YµUV›{7¿AÍ6^wä´nPZ¯¬GÑ2W›ëú‡š.²”Ks¦¤iP~œFÕÔeKF#D,5¤nzVOí,3°´(­Äû¼ ƒ(·‚õ_È”Míõ«Ì³MÎa;‰„¹,¦•î ·&T
+óCÝz˜³§Ú*ã\µ):8êé­$o˜_âª	0(«¾)G¥FÉ‚Dî+îÞZèi\
+£˜ö^/|Ö¯ççÁ­H·„Y"¢ÈG·È¤ÒlÙX3f‡Ã8àð(ÂÏëÙñ
+ØQ>f&ÖâóS·»í¹0šWšXtg§}ÂA
+RŠYb4ÂãûZÉù£íüuüºî*4¹ÌÊò†2rUcnË˜-\%?’øÀX‚­–y€TÌÔhhÁOó
+Î‹ð@§»ºµ:­IÄêõ×C«$˜®5;ø©!%0Ö¤^/Ê.Œ†Ó¡jïîÝP€¹¦!oÇ­VeO«äòéì²ß‚ÅÕ´ÑqÊXÊX“«HƒKfø1ôXG<¿\tQó^á	”YìTÌ<½'îü?>ò/I#‘•Ãë4tÆˆâ€rô•[n¡ï=J ÁIÞ/+ÕsÀ4œ^Ï°ƒ.·5ü~í²HA>pûªöJ–`LÆA××?ÀÕ<-&’ëÆgÉƒ‘‚©U‰½d -A+¨RDæÎ%)"w"ˆ7û•ÖãÁ×Žs½Çb“¶(öU;¤W°ýµ}ãL›
+èi9‡«%ÛX¼ÅÇ9™è)h"§î|õõ£™Ó®¶-}*šÇ¹ßšŒó¼œgøÔ:<Sn®Ü‰T”§\Š»áˆ~ö•¦Í¼B›g“¤N½ Ž‡–ùD[~Ë¯K°n®¥4º]fÄ×éüw¡Ãÿ©úh‰@#(tKJØ³Dò!&â/½pÔ˜‰Ú?Ñ?x_k[ÖIÞ:²ÔÎ1¹[¾8=m‹˜(Œ5!úhZ7IˆÂªÜ`õÔ’$6ûaßnÊI4—aCIïyG*ì4b93%¯§tú4¿ZÀô 1ˆ \¨w5²ÎÈã£Ô„zwá¿@Á†M,Ã8ý¢ú¬jd8Qk/aÖ¼œâ+¤!]ÜÕŠÌGÚF¡Âz¶|Qa¥YldM[tébg¥k	SQùü³ˆîë9#µži;u»Ù*Ip×Œ‘L"_wUæò¬©Èjî˜˜)ko–3/2ûÿ’¥Ì
+£×ÃVbŠ@óú&qµ;âBÁ¦î7Î×%ÇõÞ2¡œDrïÜ¹{Ï:À”?ÐÆE)0°b‚_üršî]ò€"Ð[	Ö­z[LJJõ2Ù _$ð®*SBÙ÷-Îpñš- s‘@­¨í8•¶ÞÖjÕ·¦ËQén6*ÖÒ¹#LZÊú-t‚£$ÂÍuÅ¼q
+ž+ñ%µŠ8·,µ’u4+ûk|Nú_·hiá"¹0VÄs%ë 
+íë¦íK(¥Îô›ÂO¤d:SŒ†,˜½CŠò„øz&a9„aµãL’ÿ¤è‰:££Ö\ü(/‘HVQÀ<;ÞËt€ÒÌˆt›štwúiô‰\¤Úè+£5Ä¤ªj¦úAŽ¯mbcWƒØ°@'œS¡—./Ž<¼39Y¦j÷ÐÈƒÜ½˜éÅ`i€¶d³‘2[‚ÑÒ4nïœæ—ùDÔEkÈkô­hŠÈ*›Ò‡ë¹¼‡zŒRÊãh:KhFÐtòQY!§³ËKÁš¯¸³ÛY;‘ŠËÙÀwí}ý•[çÈ×²ìËÂ&Vg9†
+öõÎÜR¬é}}³ÄÖÜmorÀµ²SýMÊþgïÙ‡³Ÿßœr°Wå'tùõô©¿Áº¹ã¦Qmá0¥ºÓâº‰Ï|N«h1[«ÀMT´[EÐž`5
+ÏéARU„Æò‘~sO(˜ ¦)5Ï¤XkÿÔÂéUêx‰-	™Ìðs±}WèCx)¹ÆÔTüÐSØ^ü…þ¨bþv,7Ë4{7zýü\ÈxÕmC! sU^Î[Y’²Å=™q	ÅÜ®H;fôz¯ŒÔ	ÑÉÕò—„Ö´r$æšà¶ÔQnÈä*Ñ‚äyÈ–1Äv–x![aü¥é¨cŠòæ<,YIºÔðö‚Ï½	ãp—OÇGX¶ºÕÙìì­	–v†°n:se!8ô,±mCa6Ôo’¿ˆÝ¾î›Â˜Ç3½d2uÆH<·’×<-šDž¥—}–Ÿ=ÒKi	&¿›‚ö7z ê;zóüèåË£—çÇoO_Ÿýçû£ìûlEÙo×ôzgµD–©¯Éò3QKmäåÅ¯t+ËþQ¡’ÕÃ”—Èidßiœ÷÷ßÜ_Üjvgìx0«çóî^À˜©ÜQhôwwìƒ]£Ó¹wOý‰ßŒïý§P7=øbbED¦ñø¯Ÿüt”	Øu½ò
+®&ñæÞï›w'GB¤ (Ì±9UL:OË${÷ñí/ŒZ‚x¼çöÆT¯-Jñˆ“æÚxš¶¤äæÇñ£x¶Óév6ñ[sølÛîM¿÷‰£KÂ$Ó°ºyIpäÙ{©Si€÷žŸBµð-uÜñKÖ"4ÙóãŸvQÔþpöê@u&…îU’$a^Q¸
 “ëâ
-´Ý)ûïlæs¯°Ý7€¾3ú¹bÞ§Nõlrg|Ï8ƒGñ&,eç6üpèvCüvöÀó¿‡ž·Ù_l1:<8ÜÙ“–p<ªú¹ˆN–4&zÁHß™h“MÖŒ!
-?b}4õÞjþ²?v0w[&Ž7ª«k…‡Ë•TÜÆþè«çbë±uW² :WÝê+0ñÏ'‘°d þyñ¬ñhŸáy5dÙbF³F[‰§‚Êßf&¨<S‡š´nó™4~–ØñR¥ckŒ½—Øñ2¥ãÇ+ÌCQæã|F­´jä,¹ðQØ÷Ç'¸•æ¬š}¥%ß¨ûÆñé(Z¬ŒÞ„»±=7z¥;+&µì™âF!é	†,R”'”7åÙÓ¿¥+´úµì>«úÕPW¨ÊùL·Ò]Æ?XàSpÿ»ƒRÁF+)¸Ò,”UóÜŒPhIUsÜKœ0"#‘ÜfÉè}ÃXþ0`ÙMH5/œ[îŒô‘¨âº¨YÉzãùÊC\xXv4ý\ò1<fµ9:<7Ë£½11Hã kgº|,]ÚˆâÇ]ïL;Iî1å–I’¯á¹*GyÖS`¦Œ³@%~äÒ)èË%ucB°ÚãN^Ó!¡K¤¯uÂ)‹§X‘\@©WÕ„¥4¹[ë~2À•,Ëáa4® hX¢Qäî³çÌ×Vçd•£õð ¹OŒØ<·f‘O‡e1k8èª<ôîû)vêèŸfBÄò1óìÛµ+‘÷qgP®ÉmtèRbŽë)¹sD¦pSû×sHÊ	äVí­‡-Çû0×\e’PïFž«–ínëâŸùìÚ9ÿ˜‘Xc†ƒø½WwÇ±7¥ê×O¨ºÊÄ=ÌZî%PÀe$ÁŸøi‘:©¥¥Ï““ ´æf‘\„õÜÓ4–WÞ
-É ïë7¦ª Ú5…\ •%¢«î¬¶†:Ñ;‹fËÄ8ÖB’ãíáJ“:ÿ¸.gL"!ÃæžÏ¸³ˆ@™Î†’P‹JÎÒÐ6mt‚¥ülVÝùn{6x’~ÑKñðêû´–v…0s7á?üÙ¹EYËc/[ku¶þ—¿|ùå wå AøP™uw¾gÃ´ÝîxY]‹ ãõyÄ¸ÝOmZO$]Û&ìÀ°¡<¥>™ãÁrä<yµF å¦ï4;>Ø;>8L{EŸßöÐ‹Š“…ìG˜å£FƒšÓ´PZXaó,Ö{;qŽhc3Fu!×"š¤ãó™,XGËÅŠ^©œ£>^Ó…oD‚²=dnP†`Ô ßô³®wz½bè3­¦Çy+6Øh·5å·}“íF4‰Ç™D9=ßšlÑA‰Âè!*K{“é9”è¢	ŽéÂåámÄ±x²P4¦ÎS–µsn«™Ëÿ#¨ûž'!ÛÜŠi4 Ã‡h¿±ÅiéØYq=Ž­äŽšë1#Šô3ag[L´äç±y8¸§mRø±iÔ6}pýh$§`žKM…å^>}ýãû÷o»gï~9{×ýåé»‹¶ðÉU.‚ÜEá~”¥ì\2tÌÚ‰Õu¥
-6<~°ý%vO–Î_';.B!v{ÄÝÄÛ¹)³ëï;;;ÿñ‡.;™fFBgg>«È5*–MúåM@&Üãž4¤µÐ­úºtÑ^´5Q ÒÞ2!üæ;LqõeÖi,³¸hk&+»U›Ñ.µÅ.úš1u»f®T•iÿh4“-ôå¨K×iyš™øüŒö¢ëÓÛ4Ÿ'‡;IÆý"}Í÷\¿©âN¾h Ò°p­Uašé1ÆŸßg;MãŠ‰5RßÀéÛ£ÎçÇ€Êuƒm²?'ÿÜšLçcÕý’’ ãu7^ìsV®¦‚[Pd,T@‡íï!mÀÎOòE?ðbN,çÁ²EU÷Ê­—`Ý
-»ÇG<ñ4Á_¼©”Z§––¥ŽêaäÔ§L~>tØGÉ2\‚°²a.Î»éÐRw>
-ï[¿K‰«ù—(ýéþÙ¸ú¡Í¸5É; ÷FRæ£@Îq’3œßÆü©Ì(³½ö·[RÐ-)Äˆ¤ÌäÃ£kióÙÂµtõYÓ…‡Ê<äé}h¬­žà¬ïœ$¹×Ù?Î_‚]*'|Ñ8œUiK°œ’»CO*y.ÞBE%4ÀÄo	Ëy¥òldf¬ôàµ•;AQá6P¯‰M¶ËÂ´°yŽ³¢IMŠùXý=>È <‚kÎªhÕÉ£g¬íš¼å^	OV@pÙæt¤)ƒÎ$~Ë–ãÿsÎ$WváâŠëè¥í~^Ï¬½´¥-ŽZÆÛæ
-åxOVçVšÈi)<R–+—£é;ŒµKS÷nB7³à3þÞC¬|„*‹Vä©ÑQ+ÈBOBñ”nÙ¤ÄmXÇ/ˆ®S27î82{em%2‰Üã	®èÁGIg,Òö²A€Üœ,|Kå‚!\G\¤¿e®‹;ÅúLªm,,ÚV™
-ê®¿ðîE”Vå3@ÐQC'Â(¯ˆ½?”	³ÉO3“j8ìZö‘ KQKÀ¤Ë÷Bê‹Fí÷IK’!Rø˜bÁ{ùÔÔ—ß
-yÉ¯EÍÖdHkbõ•f “ŒÎÙ§‘¶kÖ”fã{Gàð¥Fs@$ºÀ;“³¾H >†ªædÑ÷© ìë/µ»°NÇ¾ŠMØ‰rd(ãƒªf.]C7U”þ¥"Æj×²ÕøÛå0¿
-êX£¯6${c£¿Œ‡}ô + ”\o+Õc5ßFÛÙ{‚ú*c×%ìæ÷{ß{)
-à×jj¸|1< ë¡Ä)z³²Š!†×ÝÉîŽÚ‰AññuƒÐÑ»qVœþAÄCÜR¢ºÑ–V5vC¤Vá¼À¹3†Qr˜Fùå#6žExß"PƒWêÝÝ©ºÏ¹hÚÖŠSÕZ°ÿc³þ—±Z”vƒsrÿ{ÃâqÝ7RßK%^';82Y*a	‹å&ùR¸›R³Î½çˆˆ¨E¬¶2/gáj®K‹ë¹ä(äÏò!­Š´‰~×{"&Äý‡]=~à‡„·{g3¯šð301È5Ç)˜Eæô›GneLoÓAÜsÖwg}çµ53?Ð#.`SìC«¥‰#ui°Ôîu6VM'e@Éoõe’ŸåßRJ&àÒÄf{Í¦¢P*pN…[?¾ýJ…Kõ¯\ù. Š'tw1Dûý mÏ¶ªé•óþ½¼ŽâüÖ³\‰$·rƒ~E&Of¢â{ð”|À+H‰Ä-S))†³Š¡1ú•×¤?]L
-ò:X$^ÄyÐÉÒLJN$„tjfJ1g{UIÍ—)•¿D\‰Öxœ«ÎþWöýmµ0™CÐ…nOßž/:ˆít«OÑ‘vqÁX ÊëI¨—‰7g£íÆq=wfIÅ…{>ÖÝtI«K¯5úÅýçË™´·ä#‰N-l§p}M¡h6:‰l@D£PàÌ÷é&#£seÌ=,ËV¸:Jšê7üµ˜ÇœO ‰D_O«ÊÄ!›ÀX§Td3cÁ'²Öó1„`BÉ8 ÒÉ €ûµÔ¬cGéö·¢Â¦±¨»hÉ¼DÑâ‹„©0%…ôéŸlýëzÎÐf3ûø~÷àþl¤)euˆèšóJ¨Ò'7²fµÐYÛÎŸh)ÔOåúÃÂ®iì…-˜8^ä#˜F­C&Oùžó¤GÕÀœª0uÄ}t&Côë¾ñ‰R2Op;¸ŽçŸÖni}W*§\þ[ÐÄ"•B;§¸mÁê¸÷3ü§¶ä¦”æ3Ø'Œ28ZÑ’¹<òGwé;/"àQe‹¼"P;\«zVöÕ¢˜xšŽbˆ=nM–ŠÆT\mp¤Ý}X‚æBÎ\"a€¥I¦t0÷|gx!<+£,[û>à˜ŽH2ì^NØÞÔ¹3Ú(÷˜†aœÅM<¦ƒ‡¨¥î)=¥ºƒj’×5ÔÜ„6AäæcÔ¸	8>ËRlÞ)¤°
-{‚á¹º¦TÚ¸¨ÂŒGazG}ßGy e®Q ½¹PKFÛÝóI7ÊqaÈ&
-‚Ë.â4É‘%-cwƒå¯`r©4’4¾‰ÌZxT°(!º
-D´`þŠröâÓÅ5dX¹Ôí±hÅ@¬¶ÊFk¸öeUAuLÅkº»œ ñ¦Ùå¾m?S_í‘¨VíG³¢ðœçð>0!zDË*š‰ËEßlÉÑBÌ‹Ý;êÞÖŸ	*’G\}Âã2;³;
-u;ŒUÇÊ•ÛÅ³jDO?9ÒVO¹áŒÐ/rÿ‚Pœˆj7÷èƒžAë÷åàítÎ[SJeV°mJâ k!®k¯–¼†¨õH}†.üÖ»çû[½“GêžgCP‹Ö‘[CmÁÅ&Ãßqï!w”#ë\€þŠC4È9Rã[Sf|úÉíïwHuÒÄ§2C±›žÎpÕâJ ýô…¶kPèotºù¸qä¾áüHUžBwQí?o“aàµñl‹ƒÙÂm’>°äÌ·EH[»’ºnÞ;çŸGU”ÚÞ’y˜€ÿ¶Þy‹ù8í~Ñ{p	mþžÙ|§ °¾*´›æ„b¤ËÑr mó?MŠi¾¤+(ËQ!¡˜ídëoªìõ+TªÝ
-„>x1Ýê‘Ïa.šùgZŸÊêê±éÚtK‘y„œ£{Ëá²„ÆÕMc7¬ìÀ)óÄ[”c;xü]¡*ÆK›Lá~>¼w©½CÆÔÂzØ÷­v»M¢q÷ZH'¡1FÎ÷ÞfßåO2]wø±R˜lêÂ$)¿™‹L&èîêäÑŸë¯/ÔÕA˜`Î«<Ûãüã6åï²^õI(GèÎ¾D’†G]aŸúùTÄ³*H#S<ßI­œ¤£Xô–"\p.^*r9u9›KGc~CÌÃµôéôâ>Ž\ù4£p½EÛ£ýÖf‚Õ•ú­‹0CËå|r5eàÁ~J”[\Î“ ]¤uä‚¬¡IT,?c7·±üð ÇoR:†^áÇÇßƒc®ám®\"€ªTQeŸ1b.¢¦­éŸîeâs°n]etÓÌgàÝö7‘>ŸZ³¼`?56«Øi]ˆýe!ˆ£Ùrç°²hÞ³–8ÿ„±{ìe
-k/xÓèÚi«?Æ7§(+â†9A]H†pùküîÅ³­'Îý\^•5kkÉc}^âó(r™´¬=r¡°MBÌc,`…¢ŸKA¢Kà}ü(ïãpiœÆ=cZ£\ŠÑÖP*;÷ÉÚ íUŠg¹ð®OXÕöú÷Õ´¸J)åôâUºF‡*=âE²¨eú 5ÏQ*úøNµÆ‹[ù ˆÛ7ØuwzêÖÇûüJ³§f@ŠÊ·ÍÆ>»ô5_™à9µ³®X"®d”íl¡/¤µÁ_Ûè”Å8	ÿs^›+­é¢ÄJ¯ÕjÈ!
- 8îHoiY#ô%¯•ŠŠ¹©k{·´P|mKÚs;ûèeYNÌ -•ÙKIj4ŽPzg{ÑÛAÀÊ ŽÈI6)?*Ä¹¯(Õ™~nÅÈÌ§PO¢®DH@ØÙ0++¤¥ó^ƒªÛO‘¡wÅ¤Öä‰Á›VÒJ–7]ý•Zô¦#´n°ø>µú’QvJF™­ðM#¨e,ñ66NR6Êy?qOj!úî`3É/ÝœöÊ©Àíò>Ž®›¼T©‘
-¾”T±ïB|b$Ãú#Žµæ™äÂDÖÁ0Õ¶Fù‹ðÏ3_þ÷¼àWjEÒe6_gxm¯½ü4¹K’ÏJ‰CU×Ã˜Lð³)8X¦-F¦³³íÎp·¥ASÜYO†XÁ4À*[ÏÖþÎNz7ü=µÐ$o:*r;Q°àFmSç~?›¨q%JrÊ8¶÷ùZp¼ÊÍ¤¿ ºŒO,>?ã0dgàê
-7ÄïoïÇ¯q%5>óß“4è|4Y0‘¾z¡°aÜ‡ôšQ=ÜHGõA®ÿÝQ<‹[Ï§LS`2pA’ˆ6¹@è;%:øÖ'­´]SDjmBd¬×|¤Ä-­Á´”á·‚C5.ZI•ÀÂµS«üPLÑ¶>(º/Î6ú"Âô%™:ÒLlxdïKiæÎ®^AÍ›\¥/£mèÊ<O<­4ñ*­1Ÿ0ûÑšã¾å"[Ó,NUÑ!\|l¢RX'*
-N4Áâ÷ôY=t~b¹/"‰”ºŠ8‚‹²ÀN±äQT®ÛÉ›q$ä&‡í7ÖyïÐv=G?t:âÏ7‡~Üî¹¬²)ÎÛ¤?f}ÿ.ÆÔ& ãmd2C ÷y´‘î%ëÆ%în¡±1Å h=Î½µÜsþÉ#%Ïf™,/¤d }¨ ›îÚ´”Ö‚6ÒNÕ³#_=€N“L:õC½ð7H0ç.;‚ÿƒå´³Ü&½$èÆâr¥ØÈÍìâvLE«ˆ7ª–ØÎ²ñÝÛÔ¹+Î«Q	UôîËóØòý!\Çcçäÿåû§\œIeK^è¯ºþ£Þ»‹b–Ç7üÃ”­¿¡³Í'¤âžlâJ}­u÷ìÂ}Ð<U¢cË.á‡ïÎž¾x}–ïsà¨~¬rä@Ì&€Gq¸"€u†ê§I1~vñBcY-Ò¹Õ¯RâŠBVnô~a:Œ¹ÛÚ"=fB›ØÑW•ª4 •{9¬Ü`×‹«¬åNq÷¿Ö†¥Uª”S®fÓÚð~t<î¬rÙb.jKÐñ.vÜÊ·xÑ ™·òº×V}Ð\¥üI†¶› TEÇb¨¦<›—îô_Ï§Wüx4±µgÄ³M°¯©^ÒRºq¢ðê4‚ÂaªxTmuRåîÛlkKZ(nÌXF;Õ=Üïé¸®Q^ï«ˆ¾SkÏøH(¾ÂÇŠYrcòxªwï½kö—ïNñKYÌHfQdë¿åÝ¿½ïùÎ¬rÕ»güèo¹ÛTñ×’FÎ¤¿=ÒíýË“°øÝ‚]ò£ñ°ÎÎÇ—šD+ÆÝŸ/þ”<å*žÎÎÞx:wù8˜ô#çà4öKêñ¤*§L…¼|ÿå|äÕ-âµsÏ‚Kpˆ2ðq7‡Túî¯&Ñ±LÆ©ÔV>tw´´ÖL†lJ	‘+M’Z—Y$Zöz¹”'«Ý~*ÆHÎÌâd{ž·¤çyPHUŽÙ'6@3ç "¼4â÷Gz¤f÷©V»µéþŸ¶êH­²¥fÂàçÖtÚz:£?V)©|	¹1·6£ôv]Äw­„Ö'L‡,`<ló!÷vš9Û;R¶þÁvbFà‹Z—÷—ÿ&‚Øi¿¡§lºsý!)FÇð&'Ó²¥>7Å2Ç)¨ˆÿä}'ÿ;ï<³ëSïÔ?uÑ¾ÛS*…2—` ®W{šã…§Y>˜M4jÐ>N†Ý·¯6üØÅ´¹ï¿#¯Ä#-ôÎ‰ø=/X¯±Œ+é‘´`"½ßÓÂÄ*Ý!ýÇÁÃ”XƒàtŠE0·ÃnBJÌj8|¬=Û9iæòQ
-YÈ_I®K˜²UnenDñ;ðý)#**FÀ“ÏøÌ®@3ü›ü(V‚®WûÈ«WÜ½FžÍ‡WðÑÜG½«î³6k
-}k†"×µ»Àná¦ô—òß§ÑâQéÂº ’|9ä±VóAW¬ÞÄÀ7 Šp A7;wTóœ*Å`CaÝháw«A•Ôzá[ÿLS,«Ž_twÂgQ/º’ž;#,âÄn–:”ï`¬sI J__KÁ`ººÝ¨u‡Aš8PžC\=•?’Ç	ÇHbL…WÝ.¹–ª¯5çcˆ³bê)E}i‹b.¨žë÷k=Ø?ÃQý4.8H
-G-J‘PôfD£œæßõ¦OÜj«Ý˜£c)¹ÒâÞ[êf±+ø±ìþòfc¥«§ºAzŠ†&©;¢*Ž‹öÂ1a!¶hÂýÁ|¤'J‘Bo*ßÄä–e‹€VöÓÅ¦ÕàYNˆa Ÿu³;BÜ…è½á¢‡{}ù¹Ýøx©ê!v‚Ó
-è#ËØ¥·SSE‹ÌÐ¥ª³pe±¤çÛø“’åÄ¤dJ9§-w¥- }Œ¿a,²¨õRïy\Næ²K6ÚÉcßsŠù÷aáYcš¥åÕÂB”DÏ-ÅWÎßœ»¡ã³á¬ûê}ƒÀx+æ‰|e4»r¾)]/‚?$Ó_Ìn’RlIA+WA<WVª¥µ×%ÌÙž;†®ÇÙßËé‡!Ëï~›|øk/"µñsóZý3;Þ=ÙÝïdÿ¥¤q!¬ºæoæé'ìƒ€FBzã{¾¬Ã…—%ÕnoÙj& ¢þuy-´‚€m©{Qj¼B¸è“Ê”R£·x°’—Ùx—)îìå0W=ù`¢$«Š†U1î™x¥Þ7rï7ÝÐÅÐM»¬¥zØ½8ox1¦úHµ¿ƒøF}c€bD·HÓÎŒ|(nåLÐÚTÇÉ4„ß®ÕþÝïi—IæÙvtaR/.ô¿o.öà_ò¨ö êTðÉÖåœéÝf?¦Ô_Ÿ5ÄÝÆQÜÃ¿p?»óÍ&ë¤²¨ ê‰ðÂnç ™ÚîÞiÜ,„Úáv#‚	 .Jç„n}•kjùéâñk9j¿ŒßÜ´ûàª±ìÏp%ày$÷XA¯ŽdL#¢¤„¤‹>\ÈÛh¡R6§Ö	] 5¿J“=üÆb=!|Mš¦– Ä¥4GJ­µ¬P~˜oÙm$Ä67…¹¨èégX¡S ÁZ9Í|žô¶ÉãˆÛr¯Õ9¾eÝÇ$N¿Ž·ÚÎæüè$I™ñ&k°ÝMQ$\±×ùdrÛ~¬û§m£¯ã»RuE¼l±Ú\pÈäœ ßÛó_.´ÅÎsÃT}}>P:;uà§ª¤x‰ˆá|‘Êõ¡©©ÖŠçîa‹\;<W–¼vhz5í
-c§¸À*®­@‰<¶Æ-1»N_è¯	óvñ†B?x:3Ç‰…ŠE¬ånk=ÂÓ“oü(ÌO†`
-õü€ÀH_[Þ¸£øÔr;·Æ!#zZYø¤'­—R,îD8ˆÁ–ÐÈã9IÜÀ Dbþ6„KqJŽ>¨rÙé1¨Ü8Ýr«„¿t+#†Ø —”^ên	éZir\]ÌÎq¶J6ºs”Ð<ETÛ«RERbGqñuÛ­ƒoÞÌ?êp÷U½ŒSèXn"Ytb¾†ÚpwVuu»´¤”j \°±;l¤ßs·ŒMÿ„	xIý(’3­³ñ•ä»~¾Øhùƒ‡+¡°Ój1Ñrtò)<ï „Í‘nNlêˆÞí‰ªLÄs¥@ÌZXWZ=iÅCù4°¦š¸XBs„ƒ‘á<èbðº£òJG	Rd:Yÿ¥s
-””ˆñ…}ö·T½UTè)¼Nî‰©¥g¿AZhÎ)‡º«öØRÓEKý\4 ¹(µ­ÜŽûý½ÿ÷¼@MüÏÎãþ·³ùc,ËX;:„!í…mú:¿Bü¥ÍUÄ“.H×°Q @ç9à žô(Zà§ÐzÆ³÷Ãý¸'Þå5ùåá}µÚ"äø?&ÓŠPòµoÖt;ª	¶Ê­˜jø1jÇÝaìê¶?–‘X¿6„{RT…ÅO½(Œ£¶šÉ+ 3«èî(rD¡")R} ~mïK¢·"«_ûw¶Ml>gÚ"N F­ Î>‘\3[_Jˆ°-Ô™­R·ùšnIð×
-=
-P®¾.Ù²&RQîr'·[Oœ/±õd”*Gó3/Š	d>*eáWäŸèîÈ¾•Ì\4	 ¶O_3ÔËYyÒÑ$+ìž~÷QÓïþCX¦R|)m™b9»Æe"Q[º~¬5¨,( ™ò‚§ÃãÇZãª“±~6(™fï¹öF)7Cz?qß’GRwo=öþ[µ’Íer×ùJå„•Z?ëJœ"gæ€’ê„ãÉKæo½î‰I‘ËoÎx]ÍC3;>SV;m@p•ež‰J¸:Eëéžø˜OëtbVG<vRÉÄ‰¡Å‘Ž´5y°!?Z$byèëÑ†äÚÈ©;ù6Ð°êÌÈ?Þ³1Š±ýìñvõ¦v	¸ÿ ò2¾ïçÉíú¦|”Æü"ÔíaZ“û<`V÷"s-–T×fh?"<^7–&Ô$ûÓ²Wx2;I¸zïÈ½–m·aÌ	‡JþnÝJl²ÂÝñ3düàbÞûííÔ
-½+°€à)1rÓ‹ÍUúÓmI£†\†YöÖŽàˆt•jVn·æõÐ~	MÔÂŠf½Z"D~9B­[_Á_ö[˜¼ÝDê|<7ýTñ"âüu9HêT_ãlü”À¼€,ŽO©’EVºòîy¦–§ñ.²`_ë[VÓï(_Úé¢•ôßÏtþ~eÕ½ÒIöŠèi‰„aEC)­8 t`I"õÆs^²V†´•PQBëbi0òFOqð K3ˆŒòšÌã¢>jÊBôAO™Niu[îyU£ûùüEPùØ<(¦R#i|Í¤‹­=À­©«¡°¨IëfÞ—R	AÃCƒ“-Ø‘~Ç%Þ¸‹KúQZß¶ã7*QQ¯´Bš¨K[,S—u“sn\Ì&½QóŒ:Xi%'+1â™”Da‚¾'`°kE]¨ñZ-S;ì×ìþÜÑVV³0Í_§Þ¯az"})¯ÅÏzï2×Aª§¹K>AtüäŒñHœVNYÛ³Û2o^](Éc:ÄpeÊâ—uÈÞ¿³ë¨‰ÐtHÔÎ4CÜ²ÑD’ò¾»w©«uDÜ¥Õ]×<«B½õö®3Í¼ü=ë©‹º%5Ö/é?¿sAÛøIÛýï»mþ'žé±|1AF‘Ëò–ƒ19öà¨pŠV^ J›«¥?òF„u+æûz·‰¹Q|6z¼`;Y¯óQƒŠyœ×³ÛìÏùhò­j I¿ºv:¾¶:~É>äËÇcg¦\ÀëümâP°uÜZs#¿x‰»Ô<~…Ž¸¡¨î·[Ù}9½#æR<OÁbG­o¤Q”LXá]øgá®^È”‚J4q
-©¥*¢K9ÏG”Dð²¾[ìD8IÐYý³Ê´­…þ]ˆž›[Hˆ–„˜£¶to¡d¡APaP$¶Ã‹¤!Gã¯û[ÓˆÊÌBxã½ Æ2|À±xã¹G·nzœ}œÏ¶Æ[¤¿Ü¤ºë†igäs{ºÖÐÌGZ‰àJojÍ/Iä'Ø~S­SøC·EN	ÃGòHà²LH î³çq½+ª¿ëžxíìäQ>ÝÈÞçõ‡ì«ãý£ý“M©vvŽ`Â0‰1CIŠl{¬a‘dk9*^í^þ¸íŒáÍù÷
-gIwÝÕ£Å¾:ÞÝÝÛ;9]Lø•QejU6WýIÔ;?³œö÷:îÒù/wÝò©ó\ÆƒËùÌ®tó¤:^îšõÐ½ÎîföÕÁÁÁîñm^5êZã7¢xŒ6œÈbÉç-YC2Ý|7<ñD'$µB?Åƒ/.¶‰l6v(ÕÊÔí&^²¡•‘Èe+£ïTÔaþÑ…;,Î(¸«!-£mÐ\Ï§§î—dñ[ÏìíŽIí¥ìŽ_^ß`ýÃJ=Ý¤Ø0˜Hñ Xráæ«.ä ¤«¿y9‡XC;{[L¯ó‰oó„lÐ”ý¾+Ö“MI.POs:„£Nòi¤ÂqGÏÔXïð¶ãÄZ[a.DØkyMVK\aÄc œJ|ø¤qòÝÓ³Y`;Íþ^œ­¨º·±Ò¥Sf±`_wv;ÎýåV˜'ñFš'»¬ÍÅÀiÓ{SÃß	vH›+žAë‚žÂ£·Ž·‚z4`£(;Yí½¤‰±—ù%¹ž¶¼I÷”Qæ%¶¡I‚´²Í¤Û!Ä/åƒØ¹TÊ(-Z²ÄJ.Ç—Ž·üƒKí–á7]ôZ—ß_o×ÅÝ÷×$£øçšýtí_Éy¦!–­Šû-¿ÏQû'É8Ò…©:lüOB!ÚK¿­ÊÆ7lÛÿƒÞ?#]óm ô²²Íó{•lxó§÷ÄHÆsõyz½~ââÉãÎÉÑÑÎiÖzž$-U!	‡|x“ßÖ …ÃYª¢äí«ÝiAöµÖŸþ”äBF’éÎ7¶xÊ âQ…åC=’X¡ÈÈp¢‹Ú&ûØØî˜öUb‘RøC#çËùTµ³Èì)&ëñÒàóîI2+d/:•÷¾í§±«:a¨â^uGùÌ4·Ý?£«?q¤"X!˜-XÙMikœˆÒ¹ó¨ž¦l¿ÖHå"„jN6vÑ«WQ¦6®ŽùPi¤¬9lŒŸ}¥jé~Úx^tœ“lˆä6ÉKí.ÅÜi¡‘NÐ§É°bÆ×-Ë²/ÌB¡€§ÝG¥Ò+¼«·	×<ÓH-Ç¿ýFgÒÃÞqÒ7ay0!µ¢Æ†òºˆ™¦,;¥0Àøš{xt(˜ì‡’BŸá1æo@]AðÙëoŠ²J!­Ø7mk¦ÍÈ†äž" àXŠÇ§P±Ñ‡4Ê
-ÒLGsÑ—Ð¶wFÕ­å¹hï´æ“šN«›Ö¦?"¸9¤Cäç·-fŠðUEa€½NšøŒ¯Ü7Å?‡¿{ê4µÌ?ë	Sü?™&Ù£²Æ»æû:oòÚ°' ÀW®`©séáeõ^›HŸ²ž3CFP%ÿ˜RKÚÿž•K{Äíì¤‹ñâþNbzé}{·Ù¨ˆòÈRðô'ˆ1œKæ 0GLŒJ³	UÁFb|oµÊ*„¾’GÒGÒ³QUÈX(£7B–’´d²ã‘¤ª”ŒÞÕäb9Ît‡Ç3	æã=KZfà	;rßK×CƒÓ‡96ôÏóÃöäÐF¬öÂVbŒòvè$9"â;¶¤/2k1e×²Dšó©üøª°÷¦ê¨ªTs/þdUbècAŸË:ÂÜùpš¡:FfL8«&õ.&ne•
-ÀþAÄš#ö\‘øÕú'o2ÙÜ1ÄßÍYÿƒ[P¦Êû¬fLÜ±¨˜BLöx0´>3¼&ÅgOŠiGx_*ÔíTÍ…©”¡2+QN`RBG}<’™X†‡èéu½—	ÔÆÓúÿÞaäéh••ûl )XìøÚ# 1I¡"ºÅeßœyó¼¼»Å¯„ä¤-c2d„H¹Á]Ë’Fþ•Ü¸£bzU<ÚÃ4œÿ†ÈRg
-©îQ/€á» oò+!ÏÅ*ºtTí;ü•4
-ømá4õ´ð¬ËQý£½)
-Åýãà1sfB“ÓâÒ¹E×Æ a]’I";ïºõ˜'= =Ä	Àßù2œwcBàï>È¾ÁtØ£€Â«¸ðo›ÀDl·’;Ã%ÉüÉºr{ëýI<ÍV] rÚÑ¬Þ»¨¹—ºlæ»[[‚[ïÐûhßùceV#w€ºÚgÏ~w&ë"’•;¸ç—|M
-jMû$\èuÜ‹«”+<­åÁ.¯B"¢?Ÿmƒˆ×´¼Ç K»M>FŽ KÌÛ±dJró8$ªEöÞ0©Ï?‘ýÍF,fÑ‹Ð<ÉP²Œ sÉìS†Š´0;†’äûpGªå@Ó;ÂäAÈ½³.\ßÎ’ÓôÄ[¢á©¼‰/ö7=2Î­É#nÒ%åkq[v¡V&ócˆ;Er#ÿ«Tá¯©êŠ©‰ÊÄ•Öž=uçääèXâ-Hììœìá-KQckkë‰a’å Tça­»&\ËÖDs£ú @¢Ê-@¦Ð¦‰*žÇ„Š£À:-6…ïTaÑnŠ”2d!R§dÖ[¿î•Ìð.ÄÔ¸(“Miõl:—½ê²n­žøT§ZÆß7\2ëè„ÿâk{´ïõç_ÛŸ=ÿ&t¹ñmZbÙD‚)û”Ù–ÅjèNÅg$ñVzT@èàÄMW–¤MÐ9¾Sàió9ÚQspëØñ­ßZf¯vN¶vVô÷RÞídšh)ÇùíÜ¤ëmgYÄ·måý‡låÝ„¦ì5ŽèAöâì—n§»ïþ§˜·ØLÖó	2’Îåß[–€p;uäcIÃ-H¥¢.†º¢^]E·±M	)†0ËÅ‹i~Ui[µ°FÒñ`4 ñ0à†A<KÄØmÚ±ÐNfçžVV¥ò„;XúíÆÎ¢òÜ­'Õ˜;ÂúøÆÂo?Úë0›-æíðôÄ*³•+pv=­æW×\µ›Yñ‰2 žAID¼|«Âac<aƒˆ›¿ŽBœ´‡=ŽQ}†Ò>Ýe´ÆÿÜ“;2Úö¬‡Y¯šAô¼®Ÿ®§/óž)^o«¿¼9…À@§B’:XóÉ¤ì£ngRn2[ÔJÌÐÅäBÚ„ßÝ›+[Q ’’'…ÙºN	øX«z“»âM¾‰:èþ{^š`‹y7"µ!K¡†ßnx¢ÚoÖd-×|œù…mŸßJŽ\wÉñ÷-™ï–´-éÚpãÊErr(‡;v²„OõÁ+Nerþ²¸²!³1(jòwYä’÷ëîóÿÅ”,þ£]’ß‡Ï
-'–ögË0Òv‡ÛL[Äà¨ƒ1Í=Ý­è`É¥‘èóWÝ:>>8iï¶²õ¿lÄ+$j•C¦]Ð .€¸.¤Ðß›zq*í7ZD¡UÇÓ×ÎgõÉlK9›f µ¦a7|%@w‚ÃÚÝ]ˆ¢—âÁ}H-pòC/’Ø½ö5@Ü¥tèYüÜNÝ’fWü¶ÌØ×ÿŸÆçÿ·àL	7\ð¡CÃ>ÌèÙ?Î_fªCé_pëìÔ§b(yš÷ïÚWå¥ÑDåÓª$¤•Tü4ÆPá(Ò´‰i'Ã‚¤l ¢ûT×ÑRn'oþÞç÷NZÄ÷¨À‡pm<Ó
- |Æ9¤û3í€[<1ïuñ0NèŒÌyi^q…§TUÁç?>}óÃÙiö¶BU¤ÛžGCiŒN#hLTÅFÉ(PÊ“¬
-RÎž1Ï&âàÉ$üràœýzÊ[ÿ4òš§«‘çK2$é–r6åU„ËÇåìö9Ýõ´t³DÕåúNþÜ÷Ö‘æ:w‘RÈ1ÿ}Ý}ÿëÆfü¸îBôïrƒí<¤Æ¥‰’7‚°M17KSlÃŠ,³Ñþ¶Ñùå%jÊH)ˆA[zñ÷ó7ÎêæãþuÛ¼€É|8„SWÇvnä=Â—ª¶±#%/zñQgrJù1ñš^üôüý¾=ã' f­?·Äâivû±&Sµs‚d)qèÚC¶9’ªå——¨îo˜ƒÞT±>9q­V¾.GØ!ø1ÛâdÃÂyáÌjT Ýê7{ý4ú8'~òkM¤†d¼:sÖÚ‡Ì@ùx7?ø?0³^õó“Û<1Cé[ø=šËPE[­=H£Œ qÒ¨lµ4Ò)¦Çà’ž×@ŒóÙ×Îk\‹ïõôÕûè³ðïí¬ðw¾ªau{&Ï7RÊÄû½µGú&¿U­ƒ›-­†‘ûV¶›‹ ¬hn¨	UÌëŒòVÐ7ñÍÚ½ÙÔynnßSf¸>çêžB'n‰ëQÎô×÷-zü­'ßmçO< £Av$+L"½JŠ&ôjdëï^že_îìïî¥*Ü4©¢@‹t/ô²õµïþ²–!–­‘yM~ôƒ3£ÒíŸ[íN7OAFšh8f2¿
-EÛ-…[·U§I£^Îþ¨¡›”"âTr,Äƒ‡E„VMG‹,Ê/ºW¸+NÕ+·Ú=—Tb	Ö|íLs,3[•îµIž¼ÞÝ“½ÞXG(í°!¾ÝÔ:Ïf/[/JèÑ¸GÃK é;¸_o´³¿½=û!i†î/'—yöéG©éÝµg°eÂÏèâ0ß‹~^Ä¹5ÿ¼)foŸ½–ëýÆ6ýpÅO#í´Ç;²”Î£àÎðÖk.šÄªÜžj!Œ‘%ý"o0ÓNßÐü¼h¢o,'Äe¾¥‚$èî÷íË¨î)ÄKxŠñ5á(µ°æ	ÀÒÀ­|_—7yñ m*ƒ½åh¿::8Ú;Ù‰e½ä1l¹ÈKIVÀh/æH&˜ZŸ 0ê,„ôÍæí¼éEâx=8GxŽð¸=P/Ec=ÚÙ;:”±^¸hz½|Ž‹JQÚ`¯G/‹v—%ËæWVÝ<‘Ž°ÔozÆDôþ­y›Ýú¦µ&äRÞçÅ­Ù¨‚Z²€¸sbúœÓWâÐN%ˆ<Ô4°¤, ‡ÚÙõ>¹UIWàÌÊ0”÷öO6’=ý  ÉÝÅ'œÁl¡Œ:àD0½QÞq”‚(·D© bã+0L±ûÞøKÉP 9¾V#?6Réªw“‚ÍP®{NH¹yÖ®f,g©ÞæêµpÅªW_Îµ©âšÊ· Ž›ÞNŠˆ5VÌ¯%ØzE {·Ìiröõ‹·€„ã#•nz¬ì—³E_G3BB—kY^žlœ‚m¨.É$DBÑõ­—æ<Dýjìï[î4ƒ-ƒ#1µûïõ/7B¤y¯à,E£\\xdN…$Ræ)†GÛŽÛ½UÜõ¼·²U‹U÷þ±1îIÝ¯ŒH†Ð‡¤%Ó®7ß’.X¨„Ô0ÙúeùJþº%ÕrOåÛÀ4)†'á+e¹°UWnµ²õó3ñ†ÑÍò–Wª¸!Úd¾Ûvÿ;/"i<Ÿgcó‡ñjcsü¢`vRÈR®zZ“Æ¼Ð˜þÁÌà¡(l¤C˜n
-ÓQ?ÀÙiBÀMÇø†ìW[¬nÜÏ­I‚«Ž¼3ž<m¿+GW¢¿œýƒMR8-Ü\ºuŸB‰¬äM¸NGF
-« Uñ_Ž®óxªlulY—jVºukIŽ9‚<šð€iÀ˜Ô•–(Õ˜þ=ëQ5u#êH#×uþ1—^ñN,ÓúÍýAª$§-,‰(jP¯"«Xë¼Ôw²ƒáDi»²q‘-Fö${ø¦ ®Œ+ÙrTºs¢+$÷S§	R„ªAÊ…Ëv.éìã4ãƒ÷Žï© @O!i–"b»LÓú–«%0Æò¶^…Yñhì¨çµxÀÑàŠhgÁP‰`ãÇ|lÉt$¤ˆfuòÍŠÝ¶vÆ,žÊ{ÆìðšcvD¾ã©níÛ½Â_±ôô('ªÃøV˜ó‘µ¾ù‡}Äe'æcskÙ%uñà¾gÿKp,µebPK\9É›–¦£«éÚ‰\¹Ù¯¤«`\<Þãì-Ä+ñƒxã’çp~¶;&‡|eélf ÷ýˆºàÌg|†Uˆ+¥ís11Aƒpq*^ ¾;Áš‹›ÚfNÐ©¢ø”x{ñ¤ÝÓùÙI›Ÿ“´Ãù[k£ü¶W¬q­­ÍÇ>£¾fèýägÊþ_­@<Ð]o2",ïÊN76š&Àü LÅPžW“Û©B¥%¬P‡,~ôÏºé$
->ÀpgÓ
-‹–¨Ü îI1°šîóÀ*(dHÑ*Dãu¼-‡Wl½š÷7 `öÝÿ÷¯"y!Ì«`-ÚãbÖaÜÓ(c|'CÄIçþÕÕ/-Öm¦iî8ãR“­»©ùÄ°ÿ¿`¢ý€YUQž…l‰;ÛÆóLÙ£ÁÉÂh	±ÒÂVß1è¢ˆ¯åpz–ú˜
-DxqdùÚeÄÞ¥î
-æ÷ßg­A5«[«g¹jàbf)!MøŽ¯øÜð«¯÷spÙÜÑË¨Ý‹žÄ/š‹6Ýdõã™Q(RDKÇ×.K††Ú¡žÎÇÊ­Šò@Ò-Õ«©3äºd½höxbã(„Ñ™\Þ«b&3C ¯jåŸÕvÒdUÜûõ$æ®Eíš Žd`oáš;¤+ý"åØËbù*ê¸íÆó>¿BŽ¸ÝnKjØkÔ	„¹´æÍ¡²Ç£Šh80MbòxÚ{1Ë§3“šŽ:÷Ž1&]{PK{‰šàÞÜs‘ù)Þ¿÷›†½Ö.ècë ´KŽà?‘üÇla¯¸ÎQšrÍ¶,£Ö
-Ì’þß}ßîxG.tn¦Ö”Æ›„VwYTþ*÷¤õÌôöàö+¨:ý›ñ„õs_nÏjþÑ›‹ßglÅL~òMKnhåTãõl	Ù|—]zª2ÇµbŸPd¸“ËF'mÚìAGxÑ•ÛÏnÅÚ©e!Œ>}×§‰E´DõthS•Cè2Ö²ˆ`’‡²nCg+f×ÑÙŒi¨….1Y`«›œ=MØÍ4nù¾µÓŠÕ¼ŒÏsSÈÛ‡>ÍÄ‘G“ƒÔUÛÕ’ƒ9ÑõªšÔ_n°¦%@¨cÄ†h%ÉRU9ºp§+meB¶HbG‡Wóeñ†*“øéìD+åkP ?í‹ŽTôîÔs \"¼¥Rÿ¿’ ˜*Z­K>å˜¯gÊë.}|¾Ï²ƒy?
-†ß¸„.„Tš2ëWðÓÙ¥úÍ˜bî€p>#g%¾’ôÇå}ÐÌÝG½fàâ¡ž ¾{ ¾Ñ»û„iÛ/lÉRã+÷•ü§¾„<ÑÀÂçàÅ3fí^Æ•ÍÔ‘°ë¥E¢nTÎÝôªµ2Í­†²V)´±Q¬Ne}KÙ)L‰Y`)wpžÍ–Ú‹óÕ›^Ð@àö*4±Æ9ãÑ=‹ÓÄº$E3TÌ—#1ù<–¾2Í´iq¬o ‘œÝ´(š¯A™¾Š­xy	3O?@PðÍã{›’1ó‰ÍhÌ6³‰\¹P4(m¶2'(™®ÛÞ^ê—òRQfKÊJ›Ý=Ù£õ ðb8!íd4
-òPòàµÛ›ì[’z…ÜòOc%õIîßfx%Û%@¨l¡Ô©ÁZÝLì¤ïü”Ëv"	…ÕÑuÁPÁˆDÆ.æ…â”•®ÜûZíæå}Ã¡j6Ó»–øM·"òf¦VGÍÏH¿àN*U`ü³±¿Ÿ«sœrSÞA´™ý8[pp=ïþø³û¨©€í!À¼–ŸÁeÂï›wð_øi©²I@Ï»ñ8k@åÏžJ£3¡c,w«„	´ü­Z{"Gå0­ºù÷¤ïD ]AÔMÇYïøhó‘†}d˜+y×¡Ø§”ª,‹ÏvK``ÚöóK)±*c2ÖdƒÝŒh­<86U#s31r7›œVÜ7Òo|AP1Þ ÅÅÅgåÄýku£ºxçˆE+Fv0ˆ*ÖÒvu¥)IAÈáêï—‰Ì&;Urm&E¹R„p\ìYË˜™±çÅ|Cÿ­(”]]V*ÕÜýUiâ†´ºæ¨ñ~khÖÞ[¿•äpŒ	’oø{)ä…€ó*æÒœe(åü¢Ý†Š5àÒû²4•ô,øÇg’r|v{>¶&ÈÂNŒÈ‚'T‚³„ÚºŸOø>÷ÛG›ÈÎæ
-¼J- )LÙÜH`WJjâÑtÐš‰ÜT
-…¡´¬f[5£	n_ÁÎ7©•ÿš­—Ñ'eÔeßŽºŽB³É¤æ„ªžÛ^cõk•\x0x‹³q}C•&>^ÌQqû>ÎLŠ9¬džº^™c>ðVrÊw	’GÈééŽüóxg¯³»û¯xÅ=×d°Ãþä¦ˆ’åãîÏè­–£b6}»Öz½m„q‘“€Â@÷þÂAw£õý•ÿŸ´Zþ«•¢úð~G¨È$êôÚ»ù]ž9¯èòûv;bƒµ3÷©–#:0zFtØ&}>¿Pª¹—7nòÁ#E#œ"Ì‰ìŽêaÒÉð )O;Žu£ñúðVä€ÓÆv§S/àXDŸóYø)ÊE(Kª…ÉŸ-’eF@+h AÎ­–3•ä"ž/î.Å9E¢/O}5Í'×´Û$a§L0£3mðl[ýA’þ4­›ø¦¢7žKÕû-K[”i™Îœbßm’}=¨Æ3ùû?ÿ…Yüšáµ}"˜€	ô	H¿ËÂ¯›je=Iè;zÙ¡±D6RÀ
-¢Ï/ÜõÆ×ðŠ×Î“¸:PÆªËWE1«eüx",â#OYC„ºWw1C7’ct6œœgÚõ§y}Mñ<u•ÁŠ ^/a53üà×±úª©ãX…KúŠ¸9Ü_:>žJ¤MK¦'à›ë6BVˆ™™Ñÿ\¨Râ¼ïÞÛQ•´çeÚ_~z¶Ò%Ë÷JÀ¦ö¨!¶w…†É’·Õ=“ºÌŠN=]hˆx[‰HØdØ}û
-ô{¾wõ—Ý÷¦³ùÕœ®ôdÖ}û~#yœ{>M,ô$¼Häo4ç~¼£þ7ÕÕá3wjŸTÕÂó'`£Áu>³sl>öÄFÊ‚†3R´jcíäÐßwg•Õqª´`ª$X¹×>º±5µBeðBª77ø¥öŸ]¼ðf UŠ^¦Ü g®2‘*(¥/°à7v›qØòÀªgÅ$‹‹pæs»Bz°˜©qÕvì_U€X·0¦T%Ð¬Q”®¯_$y¼ ž (¯Ê…u mD/¢sodÛñÎ=7Í‹9ð¤ëãa÷Í«Uî¤ÂoØiµ…ðõ^£I« ÎÀÆt€,3Y å!ˆtKº‚vÑ‰=56‹22‘’Ñ)…êF¨!‘×fP¶ìrÈ2€Ì«ÑiJ?‡P›'ÊÑŽÃïö‚Ê³	</¢Qrã
-_Ê!Œr|ïr|ÏW¿ ‡ñ~>ýÀfÓîûäæG÷¾ùÑŠÆú%ü||pYv_žo˜­~6Íÿ]ÒánXígŠH¼ïŒÄÖüÞUÚ£Ã;þ#¤ÐoÜ:.ºç¯n½»/ûsÆÿÛžÏ.Ã–,}«ÉJWýÂ˜Ÿçío÷¹–ñíŽBØ½4v1Kõ)~ð{Ë*hW—ÝS/§³oÿ]|‘¹ÇÒJËÇˆ¶ÚwÌióåŸ÷ô~ó³²îž_l|{×‚X&†né+ˆr¿ÛR¾ªó–o¼´'÷ºJ7‚æU¿”Ÿ(ê/î”iF!„ÍnÃ€b]|‡hbþ(·ôvTÌwÖ	©%ŽçÚÍé‹Áã)ÉtõîN<@k_U¼WhÖ²âcŠ7‡žm1š5¡F²°ù¿ÿ}+¬6¸sy5&ë¼>;£ø§hÁu²Õ“k*Jhj9K³M‚Ì"bÂ9.T×Õ^r(ÑJë’”y2Óšž	u¸)½’$0{FVZpÒLÅ¦•)óŒ`Us“ÎcÜŒt«2§¡ùeU²½ Uû\Ù2,ÖÚ5$‘I ¦">õ7¾ÉO,tËó1ƒ¶‰IeK0}O/Ú)œhÛs­L5„d×½ÈŠ6ö—cé¹F[ÛúOç‘ô£ž}ÀTE<*›ŒG/J!Qšº˜÷mîˆu‰G[‚ìË/µ[Q¢ åâÍ· æK“¨ÑÙ×±g:®ã%ï{j®gR‡B{Ss_ì€’È¹m÷RíÇZÇ$ø<k|CBñªRˆ2bQ1¥ÒçC\?Ô7æêÖÐÎù…Þ!Æç€,bõµHþ±Šúwêr6ã€Ÿâµc,câªä6ï5‰¦Þy íGìcŸ¹wÝ/ZBšk<š¨ô‰N°f©9«ix?ñ"¬|üá„›þŠõ\¼vÂÝ+3ïZ”Æ°ás3Kw6‹'‰0{Iþ¢Ššq¸#ý1¦H³ñ=g³?°w4W.WS*²lÀ—i‚†ÑùÅEèîX&.(þ¬ Ð*<DrÀÈí$3(Rž-å¨<m-¹X´€WëØ…<pÄÁ¾D+Ü¬ë„Ð-ŽT³Í¨pfD^ìãWƒHÊÖ*¨g|k³ª’4žˆ+ÆÜÃþ§Cò´mÆZ|úëè‡Îc¬0@Ûq!O#qm#v+[${/Q:ðzõ£‘[{ZP²„q\	™;&Ä½ÆŸÇå§-”Ú ˆóÁ»ñKZÝÊ,é];LxX1³ñæU˜švú%É¤%`âÌDYàßI %U¥F~TÚÀrSRqg$ØO}×Úªw£M¢>±w5“å¬A¡Šî	­ž	ÂI¸ys>/R-¦ûâï›îôê¾|·™Ñ'w.‚×M·ù»ç’gÓ˜ñ qU¹ø|<+´%×îP7š“Q{Âz³ØJ‘¼›Kj¦ËÂ]Cº<·ÔKqVír"a-Å%”Ó þ¤¹NÅBÀ'ìKÂ&R
-Y5´u˜kFêÜé†tª¨ÀcFô~†· ˆN˜“¯	¬3CÜv”ÑýðÎMÖ®dZ¼ÁÎg’YÇ)/X	kYötJb^é?8/S÷>¨šÈ,vÕÜµÌ–@äVìK¯&ÛWVG‰É¢y­äf¬HÛ*?°“ÆÖ.)Åé K÷£øùëH1åÚGã–Dú¾ÙS±(=`÷ZßšÑTQ-Ú¿›,E1Ý…Rg›&ArÎPDäÈ²U¥yÝöT£e¿HÄé„Fvlg*¾ýnISm¨qò…Å$øÉËXœÇƒZïU0¸
-JƒQßBŒ/Å2÷Ò9¿ä éT0XLtžó×J¨Ê:§Á.cz[¤‚æcç*²àhx«€’M)UÓ=ÀˆÞüüêU¶^\e-H3þÙý•QÉ°Bà_]|ÜÚˆÝíì¿¸EÌž.dé‹PëßMžÄœœ÷NÕA®<œñ‹Âû„/W ´íØ]oµ6–ID1ðówg/Îß_¤ƒ]¹„’ˆŠ[>YQ w%ˆÝ³ª¹©Ø%¬ zH9½ùôËìâ2vl<»Q?—_hðŽMæäS]è¯[Ö‰óÅ7Agï`ßºXZ<âœõ)¶ù_0Yp¦ñßçn…IÉ(KA\šMd+-vPqù4CŠ²ù–|mË9õB;±†Hw¢ÂrZýÇ“
-rÊ.!åÙôö±‡²s¼JÎŠëAL(õ/C/ŠUC]Y2ä†‰¦·	ºç.¢"r>×~~¤ÿœ”D¾—}lQ_—„.Mí‹%kªŒ¥7…-±2Zè]vóþ[."Ê­Ú"ÊËƒâc5œŒÄœ”ÃAkÉçtð$ñ´ÅÂµ¾Ó98Þ1®u+†ÙzJˆ¥È€²O„*sÔ(L—ñk6eÈ8Ö¿IÅÿ9>ð‰¼5YÃþuUjø;DVUß‚p	(”#Ö’!~F"™i9+ÿ{î)–0 ®ä.ÚxÄˆIvfÔÄ¬b€¾`÷€_»mé;"„Úg›í˜æ·6¹_7[Šû&¢WrÜ˜j¶6)Ëwt–àKˆëj5Wµ]Îáëè:7Æs^,y$ýP¡Æ°"Ž{Ò	,¬¤*©$ó ¥•“c×AUá÷m!ôØ³ìE„ÿPÒ¬Ð}q[hCcS¨½²6íÈîœËn‘={§´UÌE}ÏsO;[ÉÏŽ
-]¦ÂcåšQås²Œ}òâ§J5ºNÞPH*~˜ºï3K>ÿÐýùéýÊ\K*ÕÒôß&®<£ýžk!a¡hd”µ¦4­ìE˜%(N'qec#é®ÿ9/)?£!9ZÐ¦äKeõîÉë6õ­IµÿFðXƒ‘Z÷FxøVÛ®ç=u2çó“¬A]¥CU:tuêZèGlþ
-tÉáþun\W9C)ÐãÐ%U+Bá*‰C€©\?—*2ñe~<ìéÆÇŒœ† ¤¤©”D°Ìáì¶“]Ïf“Óíí›ñâ]¤ºí×<ncß½Ó®gÓK@š¸¿Åˆ‚liž‹òtj^'¥Fx=·vX·Å¥Ç™Ï¹5ö²Që£2ÁwàD$oZM»áS«äKZ,t×˜L‹=~`ßCôâÜ˜.là>iîÆ»“¼œªø{È"Jã›¨%y8ªPc§ùºÅ\žÍQš³Èë’¾—XÓ| |NiºQ*Ç½!"eIêÁÚ_Sb«âÏ|¿äWrV¼k²³±hKsÛ!ÍE¢ñäfA+'vêh^|‘+û*\c˜åCé…è)¹Q‹Ñ™ æÕåìÆý ª!I>úÓLE,$W ¥‘ëP;ñSgù-·m¤R\ê¦ÅÀy•Ål½yÌoÈÂ€w=did\”óöGŽ3#"G2zÉçÝ±Â,¯UfÐ$¾ñäåàí!îÙ×¡
-SÌ6¬Ü"y„|ð±+*ìý‡Y9Ó!&±¦‡¾fðSühëÝó=#:J"Íiq5š³ø$Ä`•ôP¨®%©pòMSnÎ€=k¨ÇUâFjÏfo.äÆïŠÁntGíÝl›¡“{d‰à*Ù…ÜPÜ(Ü¶ïMsÐ±eŒkÈ”…WV1œÏßþJ‘‰¶ž(y!¾·RE}ñà É`¦DÉÝç<n1àòý’… {ƒo³ïi¦ll„Â)eñ"­„P¢Ï	@”µ‘ûlD*µÆE#ÆˆÎ¡‘‰Ö‡;2¤ÚÂV°èòÊ9ì–»]nšßtqPN>÷ÌôldOæh%t³çñ57'+ÅðSù°±¦Æ4Mwé6özc8ØägÑeÌ2²C<ÎÈ›ÐP½¦p¼°ümõN8fd‚–·Ò­[ŸÕ‰¨[¡‘÷}Š;xÙ!;‡<L Ÿ¾t§ÂL€à+yŽ'Ë<ºÓÅ¼H¼8ïyé¥0&6b‰úBQ;L…7o½ª]98j6åØL¸Šÿò ñŒßæ6i}Z?KÀãBƒ¼öJ3s¸RÓÂL6½îD‰$JOYmÐ/+7ƒQaæÚ¹CwÇãÆ|îè’Rîmýðè{‹ëìÕò¿:³ŠI0‚ XÑÚí&œO’2
-Q²}ŽóŒ:uµdQbf±ð,LÔ"qææfÓç8Ã¤(>¯ì4Î>jáYªÎLòl†º)0ÈMyè¤	C3ÆóIH¹±0CzzŠÊÑ³\UDL^JBQ5ÀÚ‰„³OT»r‹­æcç´Z"À
-€†’ÅºWƒ´3Hñ"‰Ûnlšð™ä\oŒ•VŠ…šØVw‚¼•°«|GÄ4#3AûJ“ZÔÛžo?õÙ©*óz,-Qii¸‘= ¢,°?µÄ#Òdâ¤Ü’¬¾Ø¯Üs¾¨:è¾±gÉõžó´Ó’.B¡§ªæ7H¬Âƒ·œ!eçÎå¹úvMaGê‰[½ý“M”hŒç‰°AmyþV´ª ­£[„*~©Ÿâ¼ÆƒP`Á[:H Xc&‰ƒÆ(®×%_ª¹jwú)ÿCWc(¿Û·L¾7·SÄãˆÆÏŸT".^3B’ÎD¶¯‡bxÎÖ°ÃH7å„d-šàîàp(Mô8o-V'i²@Kˆƒ@Ô;5T,C)2ÈÇ{¯ô¨øí>d`ê[ˆÄÐ†eäœöâ}ßU®'â-—QšC5ÏÔºŠGhŒì~ÇßÎÿ™ãoî{·€¯8¨êÝù¸ü´%ž‚kYI¶b¯—üMËù*­ÈY¹û‡6Ì×ãaýÏ5 æÖØÁ„SD˜¾‰.UÌ3ˆÉÚ´ðø}¤5°¢0¨š*ÌUí¬©{›¡'‚ÄaKdŽÆšY=¿ú­oªË¢´¬¸p¾G&@ÈAäˆˆë}QK¥¥Î[ß¡Šù¤¥RbôR½|“8DÚ]Þ~!øo¹P€ LîmUñW?yÎkëáu$óÊô$nø)î¬ž¼bÙÎNÂE‘‰°a|ó)›T%]à³hÿøèˆ¯ôùšc0Ž¢¬úmKå¦Ä&øƒ/ùÞN§åÛ¥åRƒ¶/2K[>t+—“çì²¯_³*ïêNØ±çÊïSÄ¿óÑE°îSEúGJÇã‘Ý=í¤öiÉú†zõØÕ=!Éh€Ud>Ã\ÖmuIŠ•Û’ˆŠ	µ%<ýr~‡Ÿ°4ë7iª *þX5‚¿zÃKdSõKÓXfZºØâÝf~Ö,  ží/v¦ÂVSá¹¨îuÍˆÎºÑþ;è“,MÒ¢áÚn] úçœjÉ1.ëJôÐIIyZgÇéUÕ-Ëaâ.çŒš5ç·	VšqT“-ç­Á˜!5Skc™š=LÍ¯Y3BÅÛŸoH¥]$xÂ! ñÙ¼Ö–egdàýÎ§z
-hãåBš’5yä½Ä^WØó¸lJ‚Ä²°šÌ~4>¥÷ùÕú†é~¦žf´âw÷¬ÖÇ—‚³ƒœ:ÏoEËæG¬¾çeŸh¥¤½¹ò7D{Gš23PŒuíhqêPÙ’	&1PW¸Š˜¸Â¿‰ïk­Òl1‘Éäçq^M9³véXµëzëÐY	Ñ¹íŸìç·?¼{úâüÍšž¿•á¦B¡dy¢wgO_¼>“M)ìÒX­¶œ<¥UŽYHä€vŽ·ö:€vìÇÝ±Áõ#aºHì	N ü†XÜZÙúKABUD[h¯ÀS&Y9w¯]+!AP„}üU5‘g™œ'Ú“ÇH_Ü¹âñëyèsÇ¢î¶£b¬ý}øÌ‡áê¹Axïl/Àk¢WÅá,Îå“ÉÖ]„ÿ\C)÷'Ô“ëµýé‹ìÎÿAO¦qðÓß»œ0o‹é[gh>ûÉ¯ÿè9.hrÎ öùùwj^ îšý%ÙH£@¸Fâþ>Ë4çì©ýv“pS
-`!™ÈËµrO÷ÝŽ‚’™Ô"õ› ' ºxYÞ/ÞØßoð¨oÙ·[âþÚ·Üg™’¼ödÐÞ¡´ú$˜¥%{UÏõk†µá`ßÃMø_»)Ý‹ÁµÿÂž5â,;5ª°"ÑO—ðW»žÜ©s3s3ãÌê¥b¯­¶ÑîAñU¾ÿ^˜å."ÞðFG
-…áîØYU¥íVÍ÷¿>õÍ:DãbÝh4ÒyÄÞLÈHÖËY÷üýFöûH¿2¢uµ÷½“SÔËwñG”ÏZožàAa´s°Ñ~¬i“{qåf"âgRùuJ»ÅÖ›t©Tq[>;+Ïž¾Ã·•™e°:ûgç_›¶úqòaïó1Gˆø¼‚)-,—WJ ñ%-ïKAÏ«gxÚ8møwq+é’¿¤¦ïâ±:¿Fê;òB<©}.hô2|¸¤í±¡u˜!‡ýó»W5@t;Yv§ˆE¦9<|~õ-1ÜÔqöE3¼›B»KÚU¶_¦Ûs°¿spxœ.¿{¦%}LóÉ¾Y8$wŒr¡Fænf«‚ÞV>s¯#‰qö…GÄóŸ3Â”{Û7‡•‘`o÷À†æýë*!-ó)DÎ;œ	@=ÕÈŠÆ
-¤{uï$d-	4•Nb}‚M¶Ÿ©ø‡öcq•#€r&ªNÇ±úÞ;NûÝÐ®ºîÜŠ$®>Óe+uLqEL¬‚¯›Ìµ1nEwÉ­ýön{ÇS€ñ\’‚ˆà‡­áŠÛÐÉ‰i1H(™d©„â¶ë¤$€åClG"³Õ &TèÊõd¿Û‘cÇ'9Võ/êì€×s‡	‘íŸÿÊ›E½eŒ$vê5h0ä«Ø>Ásò|h‘(ÀÒ“i	äíw“þÉŽïûd‡K6’*p›oÇõµ€~ömWÌ¯«¢<—Î_¾Á÷Bñ	QîÝ“¦§G\×&s¼Ø*Ou9.-—Þ$-%°¹û$}ÂŽ‡/šT†·V¿ÁdìÏhª÷ÎÏËS·c¿Z¬¢uëHòøÏTÞXÂ6<3©H·ºé.4¯£±çÐÆä§iwÎýê™µ½ý?ÅCô›o1M éV¢×!+Á°E¬åÖäë¼Ïýý«ê«:›uÜ ÿ<Í>G]¼aQÄfá!r){±[ÜépNBÈêcF‚fK/òarºz¶4zåÇrà,ˆæ¬`‚Åíl,båY=ÂšòÂ¸Ó²þd¿p„»kyÌ^ê¸ðGJÝ¡@G\#OÔ ½ª¤(É™\!ß²·Û ë²›  U„6St)Ö	¤¸êtBâräw]rsxÝL«™4²(sˆmE½±yk2ÓFú4¼Õ»x.€ºzÎ®6üçC6‹ßïÜ†PàXºÛ‹Ûº—»0gšÔCª‹ŒÎî°ò‚Ü_1»ù´œ×+ÍÏÎ’£õdíÎ#Q8/bj&ã£,PF-Ë|ÊÑîyõc.|LÏRqú©*SÒxêöØ·›×–+È›Z2iŒL+²ÚÓ—$ÓzGÕ(ºapídEøw,oöõûåoÖÝa®´pw>Šä˜¹ðt¤G¤°&åbO…óÀ·|%î^Ü1à»Ä"žFì´7²_±Àí]Oçcµ¤äýXº7€óû4±ý™2¨Ž‘¯ÊˆP¶³7?5ôÚßžëåûn-ùÁ3vÞ³ž­ÒxKòºSËfy¿SõkvÃj„ÛíÞõŒzÒhlÄ¨0Î:¬kOìøjÃniS‚lˆ¨¾ ˜yç‚X„\Ýå0ÜåE.¸/KX“ÑÜ;˜±YcZíáR–ß'`ÍsËœpñï˜Þy¢9~Ùh)ÑÎ|LØ§äZá]D,•U‰¤9 ·“Ûívæ¼Gî2}YÖh7Ü{7I •È¿°Â[`i¯¯DJ»¬O…æH­÷pö=ûU	/–®É×­ž}7D½”ßSÇF;Ugš½ÿ¾¾ í§²¤Úüòz¿®;ÍËŽ«Þô‰ûûwÛü/½d=ÂµÌ®LÊŒ-àOÝÃ¹7üm?Ë¾ÛÆwåê»±kkåEw|÷´Ø¿|b<°NÅB9Šf½	·ºïwÏÑIákçB°o©„PRh‰£ŒZrZ)i±{Už`w]e¦%…åƒWfÆëjÿÞëêhY"Vzk¤ji©3[—<.Ïùeá
-?¯gÓ¹)§Ì’|í[xô¿kMÅx7_´ü/»ß½y÷¤•}ÿDNÏl½ÑÙV†OÂ·Z›Þ&þN9 k1WÆ«u×[ßñ´ÄÂxÒÚ°þlÜ…»Ùg9/íï†BMZÍcÐÉ®àfî.xæaRé£®¬Ø·D±98Yjã‚Š%AcÉÄîGî&zuæJ{es$£lá‚7ý°Ø®†Ä¨{…R¤iK“;ZÈÁ¶~G ¹çq‹"ÖÓî„â®2_Ïadšý¾d?IòËÆKˆ+­uG  y&ù]ã›ðAŸiÁ Îa,·þ>ÿïÇ:ž$,êFÎß/3i§¸.`®î±b¥=Ø¦ìp6cºÚ<íÅ}\×
-îš”4uvú¿WºènÃt&fR(ØÔö„GoÅÁw^i9ØjÛÒ~˜[Çyã–Z=,qä¶³•–MU#@¬,DÌjfe^N€WîEñ²zUºº„T+°	oGOº´‹Ê›Ò¶\öÞ|]‹Å|óÍ7¢O$q[³íÔÚh¸Ä8gŠÔkã—÷L^«…ôÓ’Ìgc¥·$¡Þ™[¥ô×Ò¾8õèè†ùw Š9âÆƒÙÉËÔÈc÷¾ãèÜ!õrËêg]:7Ò‚ .Œÿgâfœ\îÿh|µ‡8Zþ`Ò¦cÝê"¾‡ñ«pÊJOq°¬azÙÙ|*k4€Î*xGŽ
-Úê,Ÿ¹«ù1AS2³25ìž¬ÿ«¾^¶] }<Ó²/@qžw&Àñ%@'=JÈgUN(,Qk)ö½Rt}™<Ð}gTìø—_~™ýüæÅOÆ¢à.ùKè.óUó³×ÏÎ^¼8{Ñ=sqþâ?kXRËÝßñ‹îûÿ|{ff]Òé7ž»ÕãÜ¿l½šÖGŸG%¾®*íGµZ‹8l6Äxª8Ë 	'&yÐÖÂ¨q «í6µ½=¸×p÷µöJS¸ë§Ð‚ÅûÎº%¢FlL£ÉPxÈ¬A«EþéiÍ>ù‡”q5å ¨ÛA¥Tƒš.DÆ~º$±õGÖÅ'¨„ÂU¹ âÓŽ7µŒD¢ë'‘*h…ëÙ7Pi0b‡vk"—_¼¨7þµCïŒø£úaSW°Áª¼s:Gùm€ºð…û\œ½x„<Î ÕÛŒõ­4¥oMI¾Ö»îðý÷Y#¤ÀlÊ¦ÚTO¶k·V×ÏºîÞÙŸ³ÿç¬ûæ§÷çÏÏÜž_U\r¹÷:;šxq®òëW]ãMÙUõU…×5Öuw¯ä1D î;è¥Üó¿gGï}é“t:<ÅË±øÂ’ƒÄ0)ìË&CæAsn"˜©)#ÏN‘«i9ˆ»N¿ßt¯âš˜SHœñ’ñ’Yæ¹{ÛŠòÇPD‰*ÚÓºedã‰¿d€æamPø@­ýÐÜy?ÿç¿–ãåçËi1]
-Ù;P"##ô¿fkr%áŽÆÒ9¹ïXŽ’à	«Âw£X¾IðVÅ¸ûóQ°`’à¦£E?Á–EC¼Šy0Q€½ÌÂ¦"¬šïMIÁ™ ¶ÖMÙÀ:WÆy|æ6ójó@êèð–îÇA¥=wÙW»):ž°î¨ñ°2K#Ê:ë•ç|]ëÖ¥dÆfÔ]¢%wèÜú¼ž‘Ie÷1ž8áy‚|!ŸË°WR£°˜ÉÃ0¹±ë5*_$=žNûJŒ/ƒþkSÃÀ5«Û·W(ŸXàwŽï»¬bœîì¦Žƒ›8ÉŽªe1êe“A¥Á^Lr¼òPw#
-°Ñq´­Õ–‚7£Æ•‡Ô¾½FL¡vAÂ'õ*§Ûo|+GêSþ'Sa˜wû"Î)o Ü«êU½ê•§ÊÒË6#½†ßîÑÉ-Ä$ZrmôKþ¡yxSMoŠ+žãÊdMuÄÞyŽtRì¯\9–½®õ·´£åzZ9ß¹š'˜ï-å6²Ž”Û¬K‚®y¯	·Žf­âuy´ÒvÚ[ôÛøVJ¥­Å
-ÒžY7°'¸3pÔ\Ý„¸×´ÑÛêù<­¶ÐNÅ¿éœáïÙëbÊ¶”Žévöö„-]²	=w¨õ¯ãqüaÑ_GàXÕ“
-U¯Aï6B–ùó2à™þ ;RÖ	Ô{1Ä¿Ø‰Ú$Ÿ;öH»7íþ@µS]^*’;ÈâèÂI·ÊúJM¥¡SÔÒ'6	F–>yj%ï=Óq‚l!™“ðí¡ÛS³÷ã|Zsµ+k~Â×Ü¿¶žÄ­ÙwÔÌ­ñ_ò~´öHÓ»cÏÙ#˜{Þ3š/æ¿z…@L³š§«Re‹	:‹ Ð«	ÍŠîÏ)@
-æxDôòÿÐFo·ÿBEÇzqð3VqàmùPe³Ã‚XÐuedË_GÚï?–GåV]ÜÐ'±ÂD§†òi]tçÓ¡¤›abMjwûàS”²u$Í¤×¨ÖW--Œ^¢k õV¶aÖ»R*k(yÆÚðŒÕãaÕ+ÀB…‹>nX’ÝÞ–t÷O÷JNÒL‡dêTkdé“k©Í¸V½mˆI‡ƒâc¢hæL%û6g=yñìÛEg›È%\ó) Ô}…×Ž‹BzÒ$ç#‚3îŽŸo•@ËqLä£Í?~qpå \Ý w 19ÕkÙ)ÿ
-œm|YÑßÜÆú—éKoyÅ~Ÿ-€ÃÛ­-¼q’«Ñ7%™À(âf0¿W¡º²ìˆÄz,®F„ô¶ÃHG¸³{$Oøƒ‹î´è4¿ýÐ<‹ze{i¼1¾…4™¦Ó—|ÿ)‰Oü]Dát8ˆ»k#ÙŸXÍA;ÜÏ^×WÚo"ð¹Ö¶°â}Ó¹B“òºùüÃ‚­MÞqtóFÂ9HRðžÙ¨ ³Ñæ"+4×¡¨bÑQa¬x”«ülà2Û$É1\EƒC”„åMp¥¾ ñâ_žÇÑya˜eì‡÷ñsñ‘g£ôÆ#ÝX‚“·èC^Þ$iÔtoïÒ(Í7dÑ
-9ÁTLÁmŠU¤î¡ÿ0éEÎ½Ú*M—¹4á']h<µ Û™%Kd·1Ñ÷gq³ÝO³+,PºH¼öü”&.«å¨½öA¦äª·öY-	¡•xO82MœÚYóŸ‡•P<fÉ_º›~ÿ¸ÿ#¢÷.~±7XëòÐ7¤NÃq<Ð	pÃ½Ä¥¿Ûxô‘ÅóûûV*´i9Ø²) „Š\n#§y£+žoÄMò”(9·±[_e­?eBA²™³þïÙ·ÈvE†+n=.mD˜Éu®ÿRWh‘ÓqµÝÍÂnì—cOÈNÒ¢Á›>%tpßÕƒ’÷?äWÒ`ß/k!7>—¢Q˜S|KªDÚì-1Õ&'ñ‰‹ÝJFŒöx)[è¶“d‚&Ö) jš¤.‰ºáBí$^qÔ°g[^ñ(éqÈ}¯³ÖVo<6ß­wÏÇd:y¤‡R`1ìÍ[
-Â|ut´»³w|‘¡µ m>«NU‡'¥w`3ÅÏÝ55^B3aû~¬±jE:Î¤ ùŽ‹í‘,ÏMMçcE:Zž+ÌÖ7NE1`© »ñ‘¡Ã`NÒ•æ£ï~›+ãômòºTúžjÞÎP ·nrÔì¤4TÆLÀ¹Ðx”lûÝÏIÓD(^Î¯å¤P’QO½@¸;Ÿl+n6ÿH—½–x¾Ö˜szêV6)ª‰TÚðwø×Û™ü±šz‚zû“§ëì‘~^‹ÐƒÄÞ5ôïS£së”ÕÒßr¨Vò›/Ð¨Ü9o§çœ·[‰œä€`žs“\0k…©XýÁÏuŸYkAwàûlmMÏ¥lo¯µ¾e„¥Q‚ÀÚ<þD€î^¯ð[Ï;K¢8iZ&Ð: "aI²iþa½ÕÞ6Á¨ÖF¢o‡™ËZméæ¶i3$F´Ñk‘Ä;·L;HÄ>-HÈÕ»-^_9ÖˆFùÿªñÖ]6Ã¼*)8ÐüÈOqFá¿½Àl‘7=;ì£&¤ˆ¦…’^)y–ìÒmUY*¿iû½|a¹5ð©mVS©™JTçPFqÏ…xx±‹pH¹·#I
-u™‰|S+–è)høRB¥±/_‹¨BvÇØ?ßüôþì4Šq„Sé­ÏpG÷p›QÍy}W9Bx‰ëè·ëKts`&p¥¢{H-5&]{,®Á!:ÓBå†’oQÉ0¯òˆå7Ó>$Œpeˆ’Eß˜r_­É³^©(ùzrKÊñ,»˜»ÅUÏ|¹6ÏZb'¸ò8V¹ŒW_Ñ¶' Ë‘÷¦íÅPfÑí3bQƒëƒO5¿»ùlWkjþû\©càÄþ–ÄùV2åÈè¬ 1ý°et}ºÿŠæ™2“Sžn3H­J*«oJ?èZu.V9†“‰˜§r}\eõËíb0 ž‰t’¦àÑ;”I
-¾p=÷õZ‰®¤b'´²=*Æ¦µË!è†Y+ýnK)ª£Š·œIÐòÚ>3dl¬ÔjžeÞ¾ùÁKÍ‰0°\æL23±8©è)É·åKÐƒå•8ç&ŠÝYÕK„´… T’Líó¼·‹­¾äPÒ²€)ÚïÓT½ë7×Š ™¸€¦¬•\šßE8¿ÂZË´-Ã¸PÛÑ S—¾±Ö¾sA`ÆéÒ½oh§±wÅ–[1=>vœËYÄ`œTQËPDÍÖœUÖrqRwŽ6¼öÝT*‡z¼–Ð»±Î+‘ðrFéŠ}øjBÅ_hF‘§ÕxEKîŽìµ8ióYZ«ÑÜÄå?pîT”ê¦c‹þúÈI¸•0Eë¯¤"ýFgêYQÍŽ-þNh-6eï+¦¡VÆymrg­žW·Ú%xg +& ³‹jSdÑDkÏÔ¨•óÚº£ÜoøŸùó¡G»J‰i‘¸v1™åÓé®U ÚÌ^WÿviîÕ1~‚zj;™ê{¯¼4u:­Â{›4Šôí°èúÃãŒ+ß÷§sß$g­·$½ –Rü2?ú_º1ïª!;uÉ²íÌ$Øw…hz“ÑâŸøü–×úóW'»tM 1´‹}¬œîÅ= ‘˜ýã-þ ¾
-þËº;ñä¹(cb¢€m ©Ù0w	ÂpÊ^Úá’¤¼6ÛîOÅbœÐ,M joÿíLä¶[fU5¤%l},ç<Jfl¥3æçn:Cº­‡à6~Yo_u¶äJQÏ¹¦uÌm™T3=Æók®5–ºáçµ/èÆ•÷:Ê,$éùb$š]SDÕÍ`º¢˜me~5®P‡©%Ãš†l.2…Ä¡UŽ.6Î©IÞc›Zµ+¬IË^òa1¢Eˆ8ÇR‡neÍrêõEñ¿¨¾o]Z‚¢º³ú"Ú´’GÁ_£€ q—¢Èêš2¨(i"6l~¢õ`’ÅmªõEIœ{5æ8Ÿâ6¯›tÝ’þ=‹Â/ÂE×”G^IååeÎÇM—®¬À<jÆ1Já½µ°CÊ‘	+¥e9óœèvY»•ñÞlºKòq¶¸Ôß)Rá¶x;ueëF/àUêá£HÖ+Éú-*
-Ë±À²¶ªElnÖZívk-„È©ü'ƒ_²^j”—ú›†Òü$ÏVó ”óûJ§|yŠBöb5rÎcQG6Rã„%…¦ „)ïÍ~`xA£j÷ÛÐ®jAè¤êZ<™‚D¡ŒÔ@„·ÀxÜýÃYH_ìæÜJœØ°€ï´T ûßÄ‹=RÍé_ìçëš?ÿ^.ÚñBÎnÉwÉ»/l£kFkß2ãEîVrû…y¢Jö1”_]¬o<šùÙ‘”£§pñË
-hG.*ž"éb‘¸ODlËÉDÌf¨à¦¹Á]o‚	ãPNÖÒ™Où˜ sLÝŒ-M*
-Dµó1†Ó¨b>p.Ž’£‡•œq¨µš´éVY¿˜H CDô’´Œ2G\!Õ<J¥ØT'’‰—$«U1qéöGh–ä‘ 4C[}ôg÷k™ª®¸Òá¹À%ã\Fh¢QFbæZI.ó¤_Oûmê¨GóyÉlhyG1³jÙ´4þ)Ç!ä‘wT.r‹p)CLHôyj¸†ò[ÔÖ_ž›>@¿ÑÅ4™äkÖ {¸³bØ¯²gÓjè­ÔÿLV}­Ë^¤æ–mˆÖã­Óf'4Ÿ•WI—KIƒñºQº0	õÚã¸wE8ÀA³zé³ŠŠÕI4%»„œmä>Â(bþVcE’p6"^V"c‚Õ(ï,”œ	¸ÝÉh<Í>
-lÖ}û^œ|Œà4ó
-…ôØX¦y
-çd‰Ü3ðÛiâ_ï"÷A˜cìô6JÅÊ¦|ÃÒº$Žã~µ^Í`àX˜õsDÞ0“)åp7õÝ´‹·²?ûg¡€£yðé¾õÿá–]«Ö7-NKß@…é`ÞÛ1#È&ÔîÀõ„sA}N¢¨*ä“êSì @73a¢WJ´ÃÀ%R+«é>ÛÆS×€Ô_$#¹¥·K§âÞË F¡þw[øZz)<sw©i\}²®úD;àO;Ã¾NêSe
-0˜vêSÄ½†áŒ)Ù¼cš#Ó0Ò¯ôA¥†#-¸.£™<üŒ™ŒY³˜ôpÛþj¬:æW›wn0%©öDr–´0Ü_f]±HÞ‘ðR+œÌ†D=[øQü$÷~’““;aÝ60ˆ‘À[a‹{¯ûæ'1ø¶:#þÁ…”Õ‡Ñÿwø»ºÆ²JF»êYwãù„ú»ù>0HE¶E7ŠÒÖ¬Ú—³4ó‘e¿Šœ'¡–_òŠ·Ï<&Ø´¼ÂÏÖÝ	{)„ßó˜G¡=Àˆº¹šX]hœ^	Î“†jYWäì¯Ê¶>Î“•Ìu%#‹'TÕÄìGOÊR!H×í‚l -òÑïâ¡¯ ò†~ðÿÎô>hŒû«ŒÑHáV\÷4"{É®O…:ïÚõû+á'»‘Uòm¿[½ããlVŸG°ºô]SIu‡ên–7TJU5 œ´¶c‰¯áÝ¹åXöµžº¡­ºU=ïyýÇ±`þoÜ”^?Â#v¢}ÞäùBÆîøäÑÖÖÎÿËkkµ™9>I,LÌÐW¸×ÊAÁ÷ÎžíÍÖ±qÉd^zOfmšÞÕ¦¢ÛEÁÖ,VÀ3öjLO±–¾Ÿ9/ðïˆ‘µ^¤%KaÔ/¢ön›ùæ…³t¯=¤®~lj9R”j|óW$kÕlÇVîGŸÉÔÂíŸÉrÀÃ{˜X¢ÀƒŠ[ÄA [Å·Þ½·É;>X±ƒSºÊ÷“‘Çuš8º\Q.iRÖi÷ùSc©æÐZ¬­8â˜±ÊˆÐÄAŒÚ<4úfÔ/
-uÆH@XkxÓ!ÐJƒâ­ÆªÐ,µÞNNï\¨:3öæX÷hÚ¤¢r<™Ï‚<a2ê{Î ³ôF¶^ËÒÒ73hNÇ*Fs§±R}ì³¤û°­4ÍÃÍ‚LÅÏï^m&•'´ÄVKTŠÍ.Ù?ÅQ\Qò5é à´ÔnŠr*ÜOµ”ŽŽ£Ø?·ç2‡5ô:`Ð4s6R¢¯’ºþtð*íƒ¡e*üh+þHõ%mxý*iÜsQØï…ï¾!ŽµEYä}YùAÒ:TÏ%ÁÑ>¯°ŽÒ¸a<ì>;Óh—¶–Z'û’¬¿þ6G”[}Â’×3ôÜ¶þBÔgíìlËõ®$/8k¨üy¨KœL’L+³¾ëàÍ°óšG ç¬÷B1ØèÑ=˜Í&Öè'â^¹ïEwÓÂ	ë¹RØ‚"›#ÁðÂãäætçW,†JÈÍ‰Õ”˜X;¨G±mÒ÷pÏ×¶*ÉK^gAêiÊ°/'‰ü!Ù…Uîg?s;­ƒ®˜§|h:ØG»i‚IR¾Lç’¼É*ƒ4 ‘kZ‘úvSZëÆ9üðjêCIg‡’[pÚqÔŠÝôþ9ÛµLp^Ÿ4:¡ŸEd(ÂTÄëOª=wÑÊŸ7åƒïF2VÇ&6Ðû¿ñL`øh”_Þ£…Nb¾îþpö>û³û¿gï~9{Ró†hõ%l rD‡ÛÎ£Hðg€R:Ç¹@YÕÖ†4Sß	fAáÓtq¾Œ1âãMUK0B â–Mªç(ÿ-[2¬Â.®š!«•®×DÂ}”OÖ62.@ì\Ž8×'ß»Ûi†J¤üÐY³Y1Euœ•`Ò«2¾å¯Ý®'façÞ;î@­ÑñÑÈ¸¤cÑ-]-OÌrãâ:Íoº½ (¬ààŠ“¡DµùôŠªDî6fuáqW]X‡ê0ˆ~±Œö¾€x“g…ç½íÆrâ_x“f'›žPQ=¸AS
-Sñh£8Ð÷ï<áÐ×˜{Ôµö8‰c,R´Äñˆ˜E’×ïŠ­ßJöº. “¤Ðj“8-Dß(ÎÖuÝ}Ä·¹Ÿ¸û¿`nz2c«HØ„€G1ÂFH½À¨nýh#ßK\OÆ'}€÷*¹·Üx´{î&÷\l"-Ç«~ó1¡å¶ú-ãê›f›þúÑn¦‡†[—Ööà^Ÿµ–-0ëáü0;#(i$O…ÅÀØs¾Œ—ê*òQMËTªµ$4Z5z;#­ñçÕ.50Oàó•#ëÑFó»5÷kn/b%·‚nr‘‚)nØP¡‡õLXg§«À4uõ¾T¨Wä#ý
-Áj“ùDåLÔ—`)N(¦œù¾z£]ävt¦Ç]	’%–\µ3­DIÜéUËI}+LqªVIO_Ò‹‰Ã¬ä¤[«S|¥™¡J+TÏHÆHnMóÈÅˆ,"
-m³•r¡H•ÎyØói—–ÃÜ‡ DØ¾ç4<Ê­ê3KñÛ_á´=8J	ý|OAJLyYUøl]	‚{·ÙõN¯W0	Ù›³O7ËVè/²ß&Å¶X¬Q/­[›lgt‹Iæ7§Î9P2·ûêßÞžù¾œõ$9Œ%öx[QŽâ¨É§CRðüòK7Å ©@7¬È[¢rf
-¯t8@æÍªâI­3Ðo’¨‹Ýödý¹­ÆXÄ`4á‚^Ñ|<ÈÉÖ!‹Öéˆ,ôIÜœ|Óü_öúçWïÏ³WOßüðóÓÎ2çÂ_œÿô&{öîé›ç?fßÿMñtkH„y®®±Èú×[£êú¯îÍA$u\¥óº×}ýª³ã¶¡ód>+ÆÑXà±jh;ðh£Š¼‚.¾†7úÚÍôÔ9(bŠÔð­‚	#‹áQÿ¸¸Šr×ÕÐ‹Y«ÍÙf”eË]]@ùÌ2¼Ïm…ÑÅÙeE?YHZlÖÖkE5²C¬`‚X$–CT@ªö¥JØ(vÖÃ7E—aÌ_ÌFnà™0-k³Vü„‡{ÂÝ$xZCÆ+…Ç*÷ÅGâÅ—ŒŠu…h<é4-‹wRáCï,ËˆË º2I‘ ¥3NÒvÅƒ–n3§íÞ¿ »ÖK`6­o-FBw‹TX”XxÜ™iHH×â(Ö©Ù,Âeœ#6>†\>Ö8T7Ø3æMIœÆRó“¤©Ì¨fÇ³}­½öØC\Ôàý¼±-ØCÊº~`ÞHº¢TÜiñ´±õÎGi©Éõ4¯=¶ùiJ’95Xçz£,Wû±Ço¥IXy”¶±"õÑˆƒ³N¿DÌAjÌx¤`VxÓš­¦Ü	sÓåD+ŸO1û÷¿¥K@Ñ{íâ¬–h‡ŒoøðOç*š(åÒÁƒ&><slÓœvŒÛ÷šœ¡œÌ)I,õ<ÎÞ¼XÕûxø!ðôlï¸ÐôméB±bëÕ¼Ÿ½ÍaS³ï&ø¿?EfÆZîŒ‹Y:ºýÄû&E7KˆOGà@è¢eiVì†BŒ8Ò)åôm©eíóÚ „}K“pÛöH;+{qÀêË€Ÿœ“WøÁƒ”·D~‹<HÄûoh_vûooPi£6}« ’\×Ól<Âwã!?·YŒ:Ñ¤óž´vŠµËÍÜË™Ì”;Á¨9‚cvhŽ°þ—¾°-Üõ «oañA”sêá)î/;v†ŸAšÅX ší;<‡TQÐB6¤¨’Ñ<pDûª
-KÑ7JõRI²Å¹"gñ¹Õ/ÊakQ:íqn[TYË.Üõ[B|?4²å ”£Q»'	³“Óe å¡ƒ‹ÕypOŒÿX„_`¬XÊ`¤ƒ|Å…áfý#>RIéJ*åª ¢6¸E t)BRã™1ÈàLeL–¡|9›¼Ð‡¢˜Ä?P°¿ÐÍò~ÒáÙâSŒå±[ZðÁ}Æ¡žÍ//ã)]íÙ÷äTž5(GZÄm7ˆ{ú_²©²rœù*ŸŽœõ'³Ò&áQÂø|GøCGx”’‰;öÛºÁxäžbH\t¨{ûïókÊò'ùÉŠOô›‘ðÆ
-Ýkž,Ày zúÖë~®gÍzdî‡ˆÒâA}Í#Õ¥Ðëçä!Nöþ~œÞ†«hb³¤n¨µU¯ØU‹%ýìÊ}¥VÏžÇ(ú²Ö{Ñ•þ!žì~ûç¡*È‘²g…û•Å*ñO´‰=Ç³’bÑ·´Ë¾Tdw"ªÓ#Á¹­<>‰ÜÕ‚ä´È‡$&Ëi‹³n÷åù«³n7‘›íí<øºž}]û3=Y²ŠƒQâ3"ž¸ŸQß2VkÄúX+|Ù?ìáÃ*%ûx)šñc³­§>ñNÆÍ¬ ¡ûD2’!´ôfhhC² ‹Ò¼nŸIžZ~î%Tñ‘ò‰1WU2)¾Ëå0Î•,£ÌðCz§‘µ‹wMvöó—ä¾V¶¾ÖáÙœm>ŠÅ`Ô(©~ãÊà—bùyxä¦„xP5ié©Kÿ¡5õ¾¹¾¢H]¡KÌ4=m›ùrz#eÒ«Êè¤ª`GîÞ­|î3É¶X–JH®Xù	…‰Bnš"þau‡hrˆ²au˜ŠÃÇ¨‚‘CL,~Ë‘bÐ\=V$&Ã|J^bÚH¢…Ó¦Š^?ªgŸŸœÛ÷êéüJO¼Àø¤€Ï$ºUê¬ý88º­qÕ«·-ÙœáÓÂÿòCÉª_0\€?>¬ê·w¬{uiÏxÖÙÝŒªìaÏjB•¯ÀžBYb¶ÕPŒÂÓDô[ž«Ýèâz{‚}ìí>Ú£)XAp-Þ‹B{6ÕÃ£Ù±Òvú ›r¦Y9E@jŒ,×ÖLÀù¥þU·ñ‡±ûÇ¦ˆúÝÈC“ù îÝ¿ùéÙO/þ3žˆ•ú™÷]Ý2`-»bsk^å¾VWÒÃzoÄc‰´/p¾×× #B6¬+²`rax D*--†WPŠð…;Åâ§=ü|¡ÓðÐq"ƒ üëLY5Ÿm÷ ~ì;·¬Gš!·ùêèpg÷d?VR{þË…‹W\¤ˆê´"0-b& weÜ§-Ø¡ÚN(~Óä¼Ý7áW8¿Þ™KDmjnÔ§åñ+Ù‹«4¸ø¸¨æuƒZÝ9Š³3Uœ ®ˆ±Œ63)éèVß“Ë: ¾Ûžžd–&¼è$…ôÐïF7ë¯-êŸV‡VlÝúü]î±±Gê8àx«çªmr`å  ¯:¾_ÅˆÇ.ì—B¢çWKØÑ9rQ;áüã°† Ç´y_M:><_ÊG”D4ž’Ó?}ñE{ÛçÉÚ=7²,ko3a(ÿÄ?º]þD>s3åV•¿ ;DR0û£{ã]Rø?¥Ï¹BÈ·gdn¬B ë¬Y0ûÇGÛ—ªÂbE¦wÜYpÈfU¿úSw·½w*ˆJp©$“‚%Sü6}#e¦Ž’ùüí·x±Ì"dÃªþ‘ß¿‹,%JÿËîwü?X”O„&îDSÆžZêŸn”*3/Ã‡DŸ*²bqù´€“(lI|‰5ÄcýÍ=õ… ŒRŒ*¬³®×Bë¤€ÓœˆãA>ž¹#ÃÔOpXÉY%¹zÅG¨›Ãt
-%0$nÐzN9¦oHŠ¦äÄº{§E?¡º”ò 
-M¥4²dçÝàZ£ÅÓ™ûÙ%Åj¸é)ÆÄ³¿á…úÌ"‘lxZ	›sD Ç‡I 8Ìù–³ÆŒ?d=Y¶f*Í_Xs,k€.?åöš~dbêVi×ðáÁÎ(—ÏÉÁÄ{e½J¿Èk¢p±§‘Õ¨HEƒ¥yÈÅuãùF |f–ñµÒî5šI:>R±*p±TæÌŠmãuÏ@Cèˆ‰ßx´¡ìGxTM«øÛ"A/b·Ñ¸íÖ©n¯œ{Ûå`×|ß_ácèqÈ8Q>3f¸Wv£"¢_`Nrž²»Zéëž&  ’§‰ÛT2³Ê.Üè7AÕš¾šMÇð6zr£Vö/wwîÕ®Sõ|j¯T‡¢ã1â¿Á	Ìrñ‚/™r_>½Ñ­öÁ÷Qh[®ñ¦˜½}ö:ë•ãœtWv~žìˆCû”ìÍÓˆ)Xà¬Ð’­›êÆÁþáþÉfÖÙÚß …u,õKBàÿ5Â…µˆna¢ýñÏµx´5ÝÖ€ÉT±&àl£ð§ê9)”™†‡öª'mö(ÜÎ­‰9¦¥_·mnWÖ¶”8ún²g–Öõèþœ(74¸¸Í†ðG%)Ï¢·si€gö7µSK–z=·À?¿œê
-i€äbl'èù6€ð­Q Œ(¦#ð‡~!M9Öß¯ëÁTO	‡_¿sÑÌ&ó°áNäàå"½lÞ2äÖ0<{lK¶þSxÌÿeüð.N†tV •“8[*°ÕB–ôîí2x†×-Ç·ÙÏçœòñ|’ô1·^ËIöc5-ÿüÖpûä±œQiÙ0ý i?eäðˆ¼°ÎwŽOä=<–ÙÕÔµ[ýëaU÷ŠéUäüAïó#pÕé9­˜5­‹2q[¹îÁ‡²°:+£—Zpç¹{­ôòZ€þd½&I8~w~ùºÌ‡ÎÀñ¢ê…tË}Ôè…bœù¤Ô4ë´Âã²bÝÁVÒÍ÷´³MÝ÷ÃË¢ëFGò=%¶ô»s’ßòÇæ`-0zönÑ†(`VÝpÞÃ“‹~üÍ®1~$äãÜ«–M2¹…¯Iê¶u>	èðØ@T§``V}…‚øØ]é•J<ñŸTxj Ð&y©<aœ°l>¶	’u©r’æÔn$aY¤™¨U]ûipvQóön¯‹}”]Kñ–±ŸOÝ¨²Ì`Aq×^d#I>ç]œË±äÛ¥)óY’Ñ"•3bséQžÞò×šéˆ±~É<UMZÓžòvsñº'’ŒÂMÁ‹øÆ¿s?šµ6ôÕ
-vÌùÀ²F!³Ñ¿¥ò{-µâK72Ž_ˆ[Ü7Gå•Šue!H?« ÉoÈÌW]ïœž²ûû%°÷ ZU ¢w«Õcõ)h˜sWËÇ¬þUÂ–^âà?LÝ"nTÈC®W2VÖ1fù˜Ýï;ƒÊµTNûÎñŸ1=è6’¬3éñŸ‰Ž4K¤,­\WMŒÛªê“5Yiš·
-Ò\[In‡˜Í´ªf¾Ž?ú
-Ž1B0çÊ¹+ŸIåyß4Gé7"ÖÊl™î®Rœh;+äÁ¸_3
-Zí¼7O/K£ûEY¸¯õ­ l"æ©€àkvë­öÚ»`]ŸåÒeÏÝ³G@¶=dFËxÉŠ5þ5þ¬êš´‘TzbZEN+r¯`WÔsûŸ¿¾ˆF½óÄ•¢ä/D‰†¹g6ˆó#™wv¯”ReÑ=ADGÇÙrûOLtg@ig© ¦ŠBš`E-WXÀÏHPáZõÄªí:ß¼á,ÖäZxì¡2ˆPIÖä(5U{~ö¯ùuòÿ+ªŠ‹Ã­ô½z%Ã4Å®èÇúE4Â2¾¦üüho%A$
-Yd¶XEÕ×,äÑ0Š‡^n»´Ç7†¸‚q°Ü32JjyoH>$(ÿ+Í"ž'¹ˆ³`DÔ«O8¤5ƒ•þ¨œ)¬©rjìJÜM	•C)¬$Ý“ÿ–^~G×nÂÏTÖ$}º©7„*—Y¤‹ÁŠ·*§é/¤½jœ
-ŸÎ²@†šÀœ 8koy„—Ì[šRrÌä>Ò©XøÕüJîGÈÎ9³_k)@óµ­vkïƒ²¹ä¨gª4ÝX°kµ§$IÊÈš;ò¥w0}­ÊéîÊäu¯&}ß¡Ã*â±É™ò¶ªg`Å	rl–ÛÍÓæ'ÝÓ" Ž?I—ƒ{©Ì©ípé¯Ö›Mý^P(ªÕ jîÑT˜Õ­mw1
-°4ÀÁÉÎÉÉIÉì¬ÖJ¡ï…•TÛad"ŒÖÖ›Ö*àöÊ.µ6ŸtÑe¼övjíü)ÐŒª/Þ(i-ÇKuwhˆHß*%‡”¼M
-bºãJüUÝá±eqõ¨‰¤‚®½ÕXü"ˆ3²«î7Á@[Ö Õ›B7:™-7‚ìæ÷‘=;óxc§Ò¬&ùNrJhûN8` F²ïâ¯@Ìæðàa•ÿ£¸².F!s”3>’i+›%kdr¥ÌÇI¿fÒ;´°®æùïR4ëôà7*+3N[=U)éÀMî`ø¸FñÉÒËƒM5ðù€VKƒ0ó)& L*G$Êˆr”#¹¯ÐcÜÀ»<ÉDóì­÷.Ü77!~åáwAØb™¥\èÞûD8ßK¼ Wz]TÜó¿$kð_Sã&J:q»në†¯>„D¢t@tEÿÐ’µ¾Øz¾75c[Ã!’Â“˜8Pô¼Å­‡6`Í~ux´{²¿gŸXJ·gdÔò$E¿Ì‡nb¯æÎ·–:!µ¨ûëuÔ4±-ÏdŸëjS-*­1­lxgF§eýA”Ëá O?ÄkGmBÑïíïï´³HGùÆòíÑd? ùÒßwŽNâßY&Y)V‚cQûjoMÞÏÄD¯nÛ?ü,e•
-¨¡v"~i4Å¾b-$²Mˆ\Søt¹O•€È2´BlÙc¨iÞþÙ½öÏô ˆ#oó&%.ál™˜UhsÍ„tåƒGªM§’#¨«½ ¢¾>81Ä¿nÜÿsÞx¸êúgO_¤:i¿W^ÖSàþoûêß’Ä„QìZk]ºè =o9Ûn—¹:@Œr2£Ò-´p·€Z œÃš)å“/Fh»eÅó ×H¡æpíîl,ìÄƒÝƒÃ³?’¨#¦o§‰FA³›²¯Ýeêœq‚ÅÝóRGVú2ºÏÉÁQçÐî£ñfZwò‚bÚŠþ\€lêÖÌû­­Z7ÔPt3Ö
-ØzMŒãtÊg’9ÙBÙŠr:1³iº*‘UPWÿ7'ÐÇð(Kg «áGC‹Kœ HYxˆþt’ñ›w¸7îUíìÙH\íCÑ±o{Sd¡pOZT2jŽUs‰…'·„¥¶4s‘"£ƒ‡OÙ^<eË(ž} JÏðŽvãúÎ½HÐÂ“
-À»ÅB;AJé£+°0áa—D4k@b(KŒ¬KÆqŒˆ™Á‰èùfCx£ñ„ŸjÛ=§ÕÊöNÝA*ËdAÝÁçëÖKY_w?M,#¸Ž ¶Î–ˆee£‹ÜnÖA
-ÅÝìæF,°ÊÃ¼{.öÿ#ÿéVˆô3?·~æ¬Ó¸ÇýÏ›©„a!(ˆ¡ßÂÓ"yñ˜‹¡É±jì³Ÿ´û	ÑÂâ€¬&h1…"ÿµS9|ñ¡3£M?ŸKË©Ôz…8Žnñ?=GÐ¿ÜžÂV4úŒ$.+?ÂX((@ŠÔdVÃ…œ/9-{‚pç€W¥bKšL²þp>£³*¼D£R+Ý@œh RpÙ?ÙI¢\ìÿÊ.ÁéÒ/àßC÷Ä¿¤{B…j,­CK9èÙmüB?½mS¨­‰ZdT(ÆÖdYðãŽ‚êùTJ„(éùNÅ¹#Ër¹PLñ/,¥ºs²BL“ïÖ×n˜|Ôs°çbä–ÄŒƒ é‘–7°Ë§£¥à˜à‘Âoéà	=|o­öí/„<|n˜TÞb->U¥ÀKwJRVóüÅƒou@6Ø	µ-zÖPóL ´XÑ cZÕÐkÏßÏ°‡šè¤1U$Š®}L—å¡¥":@¾0VLßkJEúê"]$õKãª§†"Ó¢‹Ò“ãö\t²8"$ñmWsEž’åNîA4o™Œ_DªF ^±ùËjÏ·ºI—€«_Õ£}VêpIjTÕT€+21:s5ßÝG¨À˜ý–èw»Ïðkq³ÝbŠ9ƒ[ç‹Žñäôx:Hq×­Íë|RGé,=ã÷¶"Äv?i³•é)5îÌœîÆÒÆ¼~(¾÷Aä+¨±ò›â$Wú/OŠs«Y\A¥Ç¡{é+
-q®Dú—›dÏwjøÙÙ_Å jËÙ;çÄ"¨*H<¸h£r:ùÿêúMqÃ .áçrÇÔ¡J‘lÈÑW¾\Í‰ÆÚù´(šI"HãA¬Õ¡BZÝàÓËþ,ôk`­N'dåE­ýj^ôŒ¦ò¥6URT$ûhýç^u™F@>êÕBÌ#t:‰n~^×W©R\Ê­â5åKK¹å£GÞ{€åÞKÅWúÕäV*cÛ†Õó’¶Õ»A0´”¯˜ˆÔ€À=!N`ûzNyqì÷õ«ÖF¼<ž7Î´ˆZœÎZÒ† 	TÒb_Ca](¸ ¥#O€µoÖÔyÍt#ÝgÃÜ½´ 1µãã@ÉoðîÎÞá~h>qóÌöóëqö÷rúaˆ»¸ˆuòá¯½! ÓYµDµÀè–½?e˜pxCSòKÎÎ¯°"¤—‹ÈXJSèvhMÎ×™Ë»`Õ•âNõQ<›Ýh É
-ékw¬ó+êì«ýããÝãNöçì«ÃÃ“£Ãý…ÆÊ®yjGfò%Æ(mDy7Ÿ2.yb.}¼ ( ðÞ ¹¹þ¼d£M{œrEP´gX¬Â…§IÎ!wP&5ŒîL—¿¶ÎŒg½.ŠU)ËñGçq¤¯:z´•zÜí	ãî½]…zIä¨Â€âM)Ó®Q•æùk@»w™®ˆŠZpƒ”Úâ±î­~ÐÏ?¼<ÿ‡[Ö?³ÁØ˜aä,6ðbÝI¢	œú±†"îž¾³oŒÈQ#¡ ±¤¸A¿çPÐŠ36$ž“ŽÖ™ñ3´,Ã•r1h/+©„ºûKD3·¤/n¬h÷¯¸o€í=LN;7mˆó´ÕOÓé“5í®ß¤Ù4«ÅÖÄô°`¡KS—üñwïÏß¿:{±ô±/@	”ãäc™ËeÄÅ‰ù(UÑ¤Jˆ‰ß¬æP§YžÀš­,K˜¶ÝI¹³ŠðF
-¨ÀTÎ©oOÃ;£§' xkd%?‚®8÷ÊåH­ã½ßå½–~ šßj(¶D›¯Ö½H
-ñù+‰µý_î¨j9šÉÒ«æt[¥lÞN6yß¸[jý= ì#ëcIre¸ˆí!k->òX&A;<å¥5Ÿ´xßÖ¬špë”—[ý!2å‚¬¶N%ÅÉ2,Yž‘’”)äÆm7î$Ÿ—×OÛzÞÓ×p7$ïÓáË)@ÄdPÍo4È³ÉÉÜhëúÔŒ·Ø#.3Áƒ½k}ƒÒ‡×´*‚ñ¸ž2–‹x´	©ÅÔ÷(¦kRÞ\'«Ê=„\Å¤ ppÞŠþ²à*CMœ´tÏõ¯JÓpc[œP÷7î§þ+´á™:ûð‰w³&ÿÄ/•0äÉÅ.TQ@îz ¡L¶óÍµk¸1ÇRÁ‰öÕ?Ú½c¦ìÁ­{éîäÿ‰Ù'RÔ QîýûWB<Ë™vá{…¦ž*ViiT]\» ÖÄú»âcY+›#¸„sÖ;;{'I ‘£Ö3pü…»§¼2ÐOðG8aâëÏ>•—‚¯?”Í°J?í´JƒAgŒÓ[À¢@{ÄØé:é†$vðÔÌ¸¶~ÛÁ×ŒÀZ/Së¼'ûû{MëŒNh$ã!nB_6Æ]×ì”´jkMQ`Q¬ 9kSõK!­6pù€¿4=^ã@š?®uRôÚMEÆXÆüÁ—RL¬-Êh-×Pm¯sxdo_Öâ"U8ïÖÝRq¡Î±È–!“ÍÚ>&æÉ’\èÔpC.Ým…/‹±ýùÝ+ž#ó©ßÆjk(PËér*E
-÷¿ëÙlrº½}ssÓÆÀ4ltÃ{ïq~EW¯ô½;0‹üüÒE–Åò(cwïng/Ð¿Ç}&Ý>?üÒŽä‘¤lÌ<åk³ÁñM(ãxøiÁGÃ]`§»‘7T×¾±Yx™A© ULi!Hâ†Kxp5Ûx…©M©ÅÕˆB!¹°²Ô²ö!h~ÉÔGŽE²©­ïAŒ‡¤ùäõàméŒßÛ=kµ6‹Ú_”ŠÆ E¨Ò[
-ªÿw]¶-?N¾zï?µÕÙ4˜ggVô¯ÇåÏY–ED[×‰”œ_2:FR@Si à{üŸÔ×ÑyÈ ¬STVm@ù/Ìþ3ÐHdo\H;Eýòïsw*=«êºÀ .M8îJaöw6 *m²Œú13¹ÏL?¤¶~Û½útaS[y9ƒ-Ÿ#Õ:ªœ?;É"Æ1Ûª¯Ë)âŒv»½ÑÌ´~uÔ9>Úï´³‹kVe/‡·’7©±›«¢ôì:Q8j½Í2Ìž`)V‰æÙ´TP…‚ÒñìC±E`áÁÉîÉ	5Í[”wUÆ9\K¾O
-¨ª˜#Þ¶6`bªUåWæ)^:—vÖ	ñ@j/ „6ˆ'È|÷»Fhb˜âElñÐaû@Áá[‰ˆò>yÙW®vD*hä`o§srp
->tçÄ_ÏŠ±ùŸØe…Q¨_EøR›Þ†cË4¶º“íø‡'G'»îœˆžT¥¤£[>ë×³ÑÎ~ä;òË¡ÎÄmA”ßˆac¬z/>Þ’7œÜÿ¨³³¿{|zçÁoyk«KrŸÌÔ?Ú"byYó ¡¹ÏT[·p.VnP±€9vëØÙ¦Š¿LV§X¾8ß&hWwÄñÉþînã!w;'w?¤*µhÙÿòçVtŸÀÑVncº]¬p:4PÑukýYh¡C-üÑVf+^Ì
-ça¾Êû€ H´e3|™]f "
-ÏtÉV¨‡_0UcÍ{mz’`;â*p[‰´Tc6*’|\¹¸yè 3÷n6´³ŒWd™a^vVr˜’fÙ$íœâ×8®é\	¨Zu0ÝŠ·a~	.•{
-Mx\ºEö`o÷œÆÉ`–tNÇCÿ({\ûüG9LNðY=*qûæ i±ßÛréÒ¢ßäÒŠ9èÅÏLî=Î?îÞü_!ªŠù¹è·¬+;‰	SõÍH·LKOÀÞE.Ï]- Þ«Ê£°¯‹éûk$Æ~SÜHææŽÎ'>LúUÝ£>X‡hšÔ¼×jžlñ%qí]2¶Ó Ï`ÔpÊ%ÕÅ!kš]s¤FÞÇ MÖq>ÔW2r¯ªdŠXv–§¨Ñ—.›êøÈ
-&Ûú¡äJ'îË|lýPÃ
-8~’½•¶…wl³žÛkô¸I»8Î
-+¤Ìnïù¬õS”Š)¨üõ%‡¯­ôýQœXèF`ká=…KÚÛ‘°Â	¡pÀ`Ì¿aã’›Õ™Xˆú¶¦ËEÄÔ6²	Î$>ÿáÜÌqàý~ZÝfgén]ÿ¨ÄF8÷óûzwiEzÆpA×©^! èG€ˆÿc§½«c,‹Ú“šG ø.$_Ê>roÝZ	ô¯³£ÏûmóX8Kkøà.g»Jn‹wú]¼u'j…C¼˜€&çÓÄ»Ò	¤Ý»þæ£úê³n,HÈÖážÇrïÛ>×¬aÞ0Xë_KÝkv#0b†QÊZê{ÊèAÕesöxœÉ×¦M°l4†HaŠÀ7dF·Û°½"És/\ð	þ?ŸÓ0p{¹BµÈéòÛªJÈ•öÔ!edVÐ#Þ6ÖñÂZ	¢¨´ž	™aÕs.ˆÎAôÚ]g)2TÌíßøä O9ä€ •^
-œ“(•‘R¹=£wJ©³_<‹QÓ<´vgh'÷/ô¹ÖŠã¦ö²`%ß…ŒðœŒpg=Ždøà”
-gLd¾që“ÄËùy\~J;v|†P®ÑP­VÂ–’GôÚêÿ_moÛÞÆqe‹~ÎüŠ6’çð_õOŽeI¶™H¶®$Ç™ñøái ²# A¢˜~?ßÚkí]µ«	É„2™çœX$îêêª]ûeíµLÿK‘ªÇ·ÞÔHlê÷|(*‚KÚZŽšu/&-^¶)sIrxQ•ïØ? üv2ÍDÈ‚%V6ÚÍ(¡½l‘œ<¼³õñü6ƒX3’¼ãG6±Ýñè³0ä†³Ì2²(•Šƒ76$Â’ã ‰-†; ÈŽG¿pCù¬’C³dq=\Ö­#eZd“g®OF—z¬¼OI–” ÄErEGêO!´ùbPP9ÂN_—³åUñ½ôsóCg4ÁC%ãÚœ#dójM+¡ÉD—‘?ÇEñLà­µ¤’Å7‰£Â´¬‡#üóëUÅPe8©²‰ñm¹©ÝF6íùôGä™~\ý¨9io A*_æ4¦¤®òÄÌC@ÅÆìÒ
-3'†Ÿ–ÉÒfµQ6Z2Ý«ó<åAüñ¡™YÛö@£M=›\ ty±YÍò£qSø;ïÂZåˆ'œÙA" <çÊí;ñè-€)«:,G`ÅCµ9ü¹ý·¢à}¤´G³!3Â«¾­-Û¯,µØo•Ç${ÈˆÚ7„&T™+ú¤iYÅ9Ž;-lE¹ã {Ë½_˜Hûuësï(F‡Ÿê…ãÆ[ÿ“÷µM¹÷KWá‚wÜ
-¸G(Nõíp#î Ïþ—FÝ}í#¿±üÍ+¦¦|'»EYú(&‹xÌá"ŒÒ‘\ÑX3¥…˜›HùÔzÕQ$·¹t,Ë·zê?ž³­$hÃÍMØŒ
-Ñ-±¾áRš‰ºZUSž·±AÕô½I31×P*¢“úææ|Òg3lÁ‹¿ö|<Î@<)ÄHÛï’´:;Ò)CwM¡ÕÕôàr®Å†Fí4‡É'^¹h‰ŒÔÉöÆô³²1gŸLÿÃìW´ûyU;¦ùe¬îè—ÅwÕJ
-Ì¿hn¿S¤–§œŸ
-Œpä6ä,åùùˆÌCÒüÃã_Y¶é˜º'?,{.åÑ8ü}¸ÆÁŸøÏ£ÃÃ4Y‡Ÿ×]æ"¼’7ë›YõæªªÖ!ÚèX·Œ1¶SÒf„°2qî"S\Ê§F<âç™š7þ$0iÄf+Ý!­­Ä@­Œp8n‰•Ã<é:çäp7lƒÿuÌ×†\æ3%mÄÖtXªG²Ø‰\ƒ¥ËC	„÷@æ$ü‹ýÎ
-“!ù›mk€VVÎµåbŸ^¯ÅJ÷}¸¹`£Î@‰?Kìt("æòL¹»~ÝB•ˆdca_nH—–~««ôïaK·¶¥û–$Vx}íóª\´ùdÄ™ §uc´ŽÊh4@l4@Áe¬š qoãÁoUÐbáÚç¾tKí,°¸çÒŒÌ6`	–óu#Pø{Ë…þ‹y2¥Ï˜"pàØ÷u½º1ºíÍºQº'à¢~®|Ks¼ƒ+KPïì›Rmö*uG`}úŒµCÿ¢¼¸ç¯J²Rj[þArMŠ¼ ÄÎÁ‚iÒ¯ªÙRØM¥cËzq´€]ˆVå]Nò‰j]I$ü-ç±¦˜§%ŒåDJ}óš“!~©×žuH³ » K;«ÒRF‡ï+øÒûî„øKõ^šÞæ’ìNüVÕþí•Ï’äàÛeÛqž³19×Rw~„lÛÃ¦/ÏPöGÊš¼Â”®8@²³=P@ÒðžN›‰=í‹œ‚¼ã}Çƒ?äÄûv—ÿø_þ?Y“Ç!øfò¶ÿCçø‰‰7ÿïß?À›âÄ_ªGê¾¿^T›`êÃ”“Ô0¨M ¸%~k,Çv›o\9Žª|ýNQYuløEkG’u¥-5ýA4¶t¹ý-.}ë²²e4²šI³ù:ÚÍˆœxËR¾9_NÒ}åÎQÐíøªiZíf7J00®z,Y [õ0‹¼ËX3ãfñï•‰³níøÀžWçNv‚<üý=a]–8”ÁÄP-½ŽJ2×ÙÙ‘óÄ;U/1šš©@äb?^á@\/‚	X|öÅ³ÚC©¶ÞrEÈ°´/=ŸÀ6~äšY—1CéhW‚“O0uè¹ÄbG¡2%3¹2ËbÎJâ»ªYœŽÔÓ~®Ïv3:Ð^am—çCxîYí8lŽÊõïq·ÌÔ‰?ý#*í’‘ÓJïIé*iNñ JRh–_­µ59×có3 4^öxm:D}ï/ÐðÓ<Þ·YTƒŒOéq¯Ø¹JþâÖk+ï³•58YlcX—8}ckKñØÆ¶ì	vœ›òà°°–¸ ŠI°kècúM&eÝµÿ²SçèÓ§Îñ¿üÔ9BOá+îx‹”šÂ1èâQ­‚ŽÐ(Xê ±a©É:"}JæÍ$+ñ_Á£Óêœòh·³ÑFÙbïbùŽbùþáâ^Sd Z)³Gã@^,‹+Î,ÑOe„ºþC <I¸”8*zfhÄ?v`mÇÝÙ±ŒƒF763Bª:;èÎÍn¹;¢uÆÿûû'<z\¼¢ó þ¢ðMµjdýï6õ¤)žÎJIB,à«ýlØ"jî&¾0 “át@Í¯Ý¢AÂ"‹h{gY¾ ‘IÖœHÕ@Ù8f*¤Ã±óÞŠ~ƒyGÐ§Õ26­ááªÕGLÒ:A £³\jEo’¨™ö’uª(èKøŒ4„ÄP_g+lIO<6ÒOÞ¿ØÝ
-þöbµdÒ ×]oãEŽP-#ÀE£CS¸eË†ælŸ¨1e/äÊ_¸ñ~–)Ñ^—·U$äïU
-TdÏì3¸%ÉÄZ[ÚH#”X¢™‹l Õ_Ðy(Šs“¾Ëî€'²æ!€ø °A{áw”KÎ&&AµU1É`Ž,V¶ÎHõ]‘;’fs¦†÷GG]Ž¬R|¿(üÆ©„ê’ F™\s¬ ‚[rÉ¯š£Ï¼ØëðEØ?åRO|mGÀÜ×‹¼ò*k'qcÙÉeC þÝªD5wñ×à#	kù9sÉáM=ÿkˆLDWl£%">–Ç=²S€ƒ¡}Av¾c(ÓX8Rƒª  óô]lÊ»à7í»zÜ³j^—”SÛuãwÄŽ™M{þ[¼­gœž=VKüûØ­j9‡p¤Þ‹àÎzŒÍûz‘’˜¯%-¢š§ËðÜvìPˆ°m rX²9C^;¬cÙÿoš}Ð°*HŸF%Ã?s&vslm&>Ê–šœ÷ä·«TZ3ªnìêÉ‰ÍÄ[FÍªDÏy†)wÛO/öÉ»wõÀ=Ãg9!ÚY`e*¾zsþœj÷ð©7!pZ±(ZF°¶ñÞ¦¾=>}tzúX›¿UV³ a+õàM!%
-PLôèŒ-ò×{ãf¶™3dóeº}mŽ‡„¾Ið¢oãìèì~ð-ºÂÓbŸb|B(Bƒ.píÃcÎ‘š\CÉ–uy™º±Û*L‚¬‡Qs¹É–áçùJ`mVÆÂV%-í.+…ÉÌ)ÌöNÂÂD.[h•§qy:
-Í[5ºB2A…ÆFn¶«„«±q>òåíçâ3‘‘6)‡ž9T9Á:ÈÛÊ¶Òî5<êŒb÷7rä½WQñiúŸØ·%_áCûLþ‡Œ¿’"&-äi{‘ÿÍlÂ_®ƒ9yœÑpN{ÃŸ·õ¼xYËÓd¢ž_ÌñÃ&2¥ÃhÅäi¯P”ÚGd¤†Ãî”H8²YÍªðÃ$fÞÃPwåP¶!>Øf‡·®|›eçË¸Í ¯’_øž ÷þãÃ‡=?û=iÌÿeßdO ¹ 'jZ
-B^)±sýª8öˆUûÏOÂ}—ƒúØv&Nlcix]Ò}‹b&ˆŽÑÞÏÕLZJö<¿515Ñ-{Y‚=ÅÊLFá(&‹–§¿OÙ5ZÑ0W6‹øŒýÙ\„*³*`_PM9Êq|féC—€›Ñ\ezq¨ Ì7èŸh*>zX®ÆCp]›—÷[ÉPn¼jÚö Z?1d¥±²ƒØŠwÑ÷oJpøb^ùŽ/{å§Z¹b-èÖKÔ6ò™Á3n)—è³e§6uíš…8O8´äÜ²¬à)u˜ÇHQ¿¡Gyè÷â2@°E±D'l7¦-†¨[Ï5‡Ùp$sçöÃçeo^ƒ`¾í<yÄoeC'ÅA‚¹¯«‘´tº6¤w¼žˆÉT—!æk³"R¦ÎôMØòŒë°dëºõÿégôy®a{=-úo®‘Nz_Ð¤´ð4c Pé$úsÏŸþôúüí>V^A§3€ª@ŒŠ*Å®ëfeÍ‹ò`ü„åä8Û^^–b0ugÈÔh¦Çu9~gû˜|XÝ”ê“ ÀBÉu½´:|„Tä?qŠywàã2r@ñ]/Ö\Ë#ûkaé¡5	ê2Ìâ`t3ö#mðr5ß½ã<<="è:,¢Uç©?c]~,01Ôm‚¦j·‡üñü•¦éÇ$Ë*,p‘Å¸ Nšj_Óé-Ä©]Ýšòd6œ°¨µûÑèæbTþñ?+ÇDïëÇ÷Âž¹™éØ~zõÝë'ÏÎø.fXþha™ù¦Ké`¾5 –gªÞ”óùÈu»—B7ž®ÛB6oÜš"Çj%Bhmƒ´NÂ[~ômT~œÆÖ'_!èóm5þK?K§ÑÀMÛç'?¶h<Ó`§fä•F%¿™`Â"‚»9ºÏ²u|Å>Ô‚/p×9õ÷d÷Å pOÕº[’º8Ý¸q|–oÿV³³Ú‹ÖÏ“OÀd0¹RÅq|VêÌhÓ´Š]/ ñC=]Ée€³_ä£z¯M£³2XL?Æ§W«°Á_‡Ç†ö«wÁÛjæ__–±V“ÍŸÒÐ?/<:õ=Z‚÷úlßWBRZSß´%T“„Ü*J“‚ë$®°‡Ÿi6NnmVìÀàÊÎß…‹ô„MYŽ!lJ”<8Ë)#-_®º)s)÷ŒÃ0bHü
-úçÝäŠAWÞÄ9p'Îß¼R#ö KÝ?™…hð&X<Q>jÞc6_`¦g)ý;)b§)ú¼l8“áÊIî·a8p—£ùvEÔ,—‰‘`Ÿ—•÷X+¦ÝUÚ˜¹ÖÈ’`aª±"óB]’éd¾ßÇMï æ¡¤ôz®j” ~LÅ‰ðÅ¤iôr5+~(Wï«à‹þu[ÔeþÕuÙðÚw‹Q¶´«¶ª‹kNhñý/ž£8•ŽHZô+0›MB8"Ç`\Ï{þŸtð=Ø5t>ÊÜhOµ/^\ÇëÁbÖq×±á€ä€£]Âó†­Z¢~r]iumQÀ[Þ/ž¬êj6ÈÖuB¶ô±·®FÔUêZ×umÈN©(hÌ2“Ö®ZÛøÃì0ú,Iµ\UQõù ì—Ý<°Æ²ö Y(S¦§!Rò¥þ:†Æ¬AM…8©:~÷žv;òŽ’—Ï­e³6RûöÞß>|@q†‚‡–Ñ×GEù³Hry.™©ð‘É`ºÎˆ?SÜÌ‚µîOªÙ¸ÍA<‘5^_mæ#væ¯Þ¥t=Ó>ççoÒ³í}:Ê\úl˜™cõS¼¹
-+¸NÅS;-EÙGfí·<úàÎïKÄ^}°Øç»çoï½úñÍÛ{Oüñ/çÏ]¯‚© ŠÍ½"l÷œ»ùG·ÛùZQ×7³N{nxŸ°8#YoÂNÛƒ¹<ì!¯}éÃJÌ‚*úX³6h\•Ã,ÎÂì˜¢?ºíZÿþìÁÉáÉYÑûKu#á´êÈÿþÜ3‹˜kïÅC^æM‰µô×j5Z‰r‚²ÅGIêIsCF½ß¿zg7eš§ãé³…'â´ƒÒ™e¾$:ÎÜtìMÀ5¨>ÔSpÎQ4ViÉµ†Äú2T4ÌªÞÇy)¾ÏÓ05õe%Î•-Yæ–ä|QÄh)™g'‚ä„cër¡
-X¢: ‘ÃŠÛmz^Öª—…y`'©QkYÚº²>d »ô$ØÏ2¨·Qi:©êË¤	• ,±|„¸PÚg¥–ù“6Š-ãû»"ùŽ|¶Í?ê>.¬æFäŽÃY"Uà¨!–SºÍo<ž;í³Î†Ò«¸Þ²[|EúÝ3zt˜-XŽšù(¥»5UÂ- ¡_¢˜Ê6~ÇXîÈÇrw¨##åíi’2õÍ†½Â\©äÊüŒ&u¤3,q@›û¡Áž`ˆ«²œÒÃìÒ=ºÝùäE¶>Uÿ÷g÷OžÜûß1¦<òÁ[ñT,uiM½J.ÛÚk¶ÑcCfíââÛóÏ/.,ÛÇÆ€BªŽHé)Þ\°æ4V‘p@w¾»dAÆK½ÆVŸMÉw^Wí†1¤Áµ~$—nw6’ÄÅùÙYgôÈGn)™•S÷U‹¿—s¤¸&åÈj&ÖfLærÿU
-˜ÜÀÛéº8>©S^A‹`0f}8/}ýù¯/[÷4;&8|ü·]ßUó¹)I%Å
-6ðS:ŸÄ?´þ’ö_Ñ¹!±Ø¿<;ƒCÂ=üf.ùäâ«±üôõßÃªI‡i[¹7c/­pmžOÔ ¿èçèU8§Ás9Pi¼®‹	Fn ù’“y§¡’©òª¯ÅÉk«ƒ˜)„™]53I2ËÒ‡[*Ð,B	s¢_}ª\–‹J´ …²C9ßœâÚnk6_?ÏYc?e0•½€"wpåÐÊÖ“ÿ8ºÿèðŒÅ)f¦ìú/àþ«¯›c‹f°R§ÃãáaóéŽ›#³à«¶xùÛ»)9A)x—ý«¸L$-±D•áWÀ{™ÑPÔÔ³äÍ¸Y¯ƒ‘i;˜z!0“XTÖ³@‘ßÌ!£¢Ÿ[xÍõdI—*ZZD„Jb46²¦Ò/ê¹@!Å¹rÏUÉJXC‰¬Û~Òcdún ¤Š†§#ò”í ¤Jý¾(Šg?~ÿEþ¶î¼Oþ™øC‡\²Ðs˜óUE­Ô+:ß·.ÕÂv•>ÏH(Á`YÄ6ífÝQÛaçÏÏ†gÿ®µJM‡˜X¸XÑŠY.ÚÚz5©Ðê5È:U.¬Q)¼9zæñÙ…ü·>­Í(	ŠÃËECBw|uË  ¨÷®^HÁ%ú›é½Ý9[ìbÓà¶àºG‡Ç§(1Øº"w¨5[b†ni¾ô¶œ*Cô&ÜÆ—Áo,%·–Ž;kI^”ékˆp		ŒÊöÂšB¯äžê8|£¶ˆ—`ôÝBÂk…BÏ}›è¡ËÉ{â4d4±šôˆj3>ÊUÅwRÅØËFãº¨3,V¨$õëb2¯Ãº»Ýä}Ž¥÷•tóê¶úm©¦÷gbL¸è<°C¬!Ñ˜x\S¦	–®ÒÞMµ³î÷g§‡Ç‡‹Þ³à2$­LE¯-Ú`W-{î‰ïà¸G=Êêú&Ë	âot<¼Ÿ‰§½MˆÍTD/}ßCM~’Î»e¯¥-°Ö¨lX¼óK
-Hûá•ƒ.,±Ûw‡Âñ o¢Õ(Ë›¾µžüÇðÃ°³‡tå}Äõ‘1ïAý`ÝìÅl¨xAÈ²Éþdä6WOÉ'‹pæ,nŠ—Á#ª5_?D2_të·ë¨ÀƒÅ/häŽRo ”£_M¬o%¨~xszïþ~¸Ã?êÙ¬<>ÚS.¿bSô½ûî«L×’+6LòL5H’M‡å8~ÿÖH¹˜ïiŸ^<e†ÅÏek%01 æ²i¼¯øŸk"(ùjR¿ÿSqKáBr*Ã^êŸ?ßÏyQTÖáÊå°x)ð®E0¾+½ó÷Ž’z¬xK‘ÉR^4v¶àÕi£W¡B±è…ðl€&Ç¥ÚÝ·º Úk£‰q¼öç‚¨ööÿ«?€w©¥Íu¦é{Ø#(ªÄt…‰aH‘èË£,"Aä¼
-m\„mŽÛýDP?NÃ–ÇWu[¿=_ëžf.üØö’ ÔR.š+ývñ€»céîZ«ØM`acËŒÊ~%ÉV¶ìØåXƒ5%P¸Tr µ<Sð¨ÄÕm+\m°Ó“I9/^”ÿØ¬Š¯þQÎ¾žT£º\pJe’ÿ,Q""ÿ	ži)Ýlr‰¯ÂÒû÷ëð'Á£^ËöO[Ÿ¯Z±Ý)‘©¹r;M¦|ýI‚ÕØ7f7ÈI2ÖƒO:K¹ÁRvok—ÔMz[^³ÏW“3µ<ò£x
-œÓYåîÖa©uTJ,6?¯çK¿°|‡<¯ÍUpkšÙûª‹“OÈ/Ï]Ò}éó¦oë®ÉËEsÓ¥9ºí…´Ë² Ëd*Ó\½±Lð;YÂZí§2!ÿ¥ñ8éèÆêÑøHß|¤=8>‰žUÅV½âÉ«s7C;ñ*¦ê’©X{¾ÜZy.Ñ€¥Ýh¦¡úp»q‰÷rì²¹òó…“mÅ>µ<RÂr_ÒáÈ]$óP†|Nàë«†q
-ïeâd×	—g«ÙFEó#ÀLu‚t\Ë…»]zÝ¾9™Ç]öi·ÁñôªžM‚»Ôt¬#»5"<^ºûhctî8ÅÙC¢	fó}¤Ô·ß…cèÕ:†3³Ò«z³1I"³d»-D».Û”…¨Â«]KÏÛ7ÕêRØ"·ÖRHBî»Y¬&E+ƒ}³$i'¼¼P	dš=m•>}þæÖ’>áŽsñaQÃÇwåBJä|zxªeëœ" s¹ŒEÏf-òÊë¸Á‰a)¹UNàÔ‰˜Ú3ùü¥wüÚú,ÿã8W‡&MîÎõ"†{É?û&•¨lÙhCD'Åp¼h.C,rÎ×›m&ÍÚøAÝ!Û’Ë
-ìÓO¢=Ä<LÜã¢40°R$ì­-P¹Å»°_ôè9ŒWÁ„˜jÐè6K‘ñÒvÃ=m¸íŸTîò—UE•¬Æ’„‰÷ñVsºA¢÷HÆ)µÂàA±4Árkxâ02žóbýU±\ëË«5±ìû…Íe[ Yéó<]ýõük<Üé5>H¯15Òkñ@H‚q¯/ã˜:¢²˜ç€³
-žK:ÿ Ê)Æk¬¢\&ï³Ç~ÿÖ»Ìë‘é“Z¼Í‚&vPŽéM•{Bê±¡Âsß-Ø[jû+1À»ÇØ©ùÕ²sD7aòU‹¡ã+ôf¸=xÃ <Jš!ì:uXÉ`®DÅÞºnöK1—àÞ»Ñ X­ö"ð&’ö-¾$ç•¸”d­Ø•÷þ9Náz­­|Í¶	^´Mq¾'éÒ°3+Õ“®Ÿ¾»¤}ÓíèìÊtË‹Ý©“HM\øÍûBrH‹±^Ï*Mä®¶³n¤ÍY/ìhð„6–mGCœ–(`æ­õg—{“ë.arbbß@Ä¶ZŠ_Þ)®Þ¿Ib8½ì )õM¬Yvã¸®'ë«Á¿?wÚâ—M¬ËšŠ Qµ¾ŒedŽýt"k»-ÖÔyËçš@$¬pIBí[ª]«]"ÈDó“—á;	nI$òÔÂ›=ËPÑÇš†
-‘ß²–ç©X…²ïU²‘…ŠK…è­z—CN|¾úKgq†mÈë³ï×Þª¿Åõc)(ÒõÔ5¤·"!eîæÔûƒímÚ)ÞEíN»,¶Lª÷º/Œ±n/¬nVM(IQ.)çŒI­pwy¥à×­ä#=
-ÜÓ¶L›™îØUWCE$ dÅ+YsgdáúÓr%ÿ9‰Ã+DC:´/…uÄ0êlj¤ÀÐ«f´i×Jv[«H°ê×ˆ¹	Ï[<¥N^Y=	z€[À<ù‰=XF 9ãØðÛTx®ã;ågÃ,K)÷Â½/ƒ¼Ÿ	9ú¢K›Jj8¾!…ëµöHYLøòí/d­ç¹>’dèT„Ut)¥éÔtÒt6lI6«/·´Au{6Ë<-&•Lc0JÔk:±·¯?¾ó?©&U8LM°¹GòoÂÒXŽLrob›k“8×¨¾÷T^Ê¬'c_Ó[ZÉ”Îeú&û< ç"e6ŠYÁðžDªBª†a‹E¢wòE‚äCîôî¬ÝïoëpHÿtîk8™Ì²ÜUsH4“:·ý´
-Dº'ý{‘JÇËª}&ñ™3‘ Zç¡‡ºÝäKŠ&6Êÿ1Îî¶P›Ó¥ÒËž¿—6k«ê]îÁàÁæµð>HÉ‘åË^ÔN+S[Æów+qûâ³øqÁê¿ø ˆ0¥ÉJõÂVÕ{ø¥_]­Ð¿CËûCuÞ/yoâ#ãyGÕMk©ò‹ñ¬•–ï	OŠÂš­ùH_¥ð·(,î$<¶q*jmxþF‹ã–aùé¼3eŸñV²ÇÇy\˜î`9nFÅë
-ÚÑÂ‰ëIôÐ‡¹¯kÔ/ S¡ÀÀ±C0H(˜+­b+ñ=­wk/ª/ûÒr0bsB<d&'ÚýC—m±]:¥ÒÓ3¿.í.¦ üX,¶<“ÇØ%ÆÒ±p"&e@›ò	»M¢‹ªŠåÄE'¡™²áÿ­W‘¡Š³¼’ÔÝß‡sh¼}3†ï¼ø9ÌÀMµæ‘Vë!U†uÜ "]‡¹¹«ù9QxÝš"òŒ&Óâ5tlêŠTG”0¥vx~ºô–—¥Ù‹~%?Žx› #ÌIü*ùj† É}Ô—OÏœœ=$DZwáïOœœžž|æ3çñìL,+«áÉC4ž}ZD‘w NžŒ¹‡û$ÅO»VÑ½gå
-:zxtøÏ/]ŸY†©Ük3ørºýyìÑŒ3ðŽs…c%sÍ”Aÿj#mðaƒ!µ¹eœ'ŠBWJ;Yáç²…e*Œru1™›à¥H‰{¶ñ•45>%Ø¡×èdÁ@cUUé8ñý.:ò¶ª:vF¾"6fŒÃ×"¡ñª|@fâÕ“‘ÀBü©•d¬ÅoÞï³8³Á?bZÛç,<>¸ç^âg¥·5Ã¸}óç°Û–WÅ³añ&X¾%ÿ¹ùz½`+.'³Dûã'
-'´‘½FOÚ^‰äRW! 3ðóE­ådÂÄKÁ¨ A¤É?óÿ|zÈ>ûêïsüãk	ÒóÑª¶ƒaÓð]ó-qg	þ$Ã|0^•Óu,BTZõR˜’ÈŒ¸—qxçÍ¯m:vÍÆËâß×&DÔ"ÉjlÈ;PX™Í8<±–ªÏ%ÄŠç±.—“÷ZNGoG‹‰KRÔAINbÓ+l‡2úê†ñâÅ	ß‰H¢ÉŠ¯eR’Äîfpä ³OIØŽš,Úžþ´_ì‘æ«—³œ‹÷~S#rÚˆ=\Ö|Cà4.A²`6Óßµ•¹:&û©ñ°$)ì!ò=*÷V?¯÷°Ë&TØ/>4ÄÖ’1ákó!!	BUL:ÎJŽG´@+Žˆ~ôÏÛH?÷md$1¹Ržç¸NãÊÂËeŒ|@ œ–[*kAhÛ¾}!ßvôðI4cáŽ°\—êù¸²±¥4=ÆoG™·8±U$ÇN>x ,zæÞþ`†HTOwÅZþ)«3Ý‰c^‰áÒ–)øŸMk²NXZ÷bÌ“	–I‚íGg6›Kczb"X,˜.™/;¨;Û-i]/©âd%ŠG†´6ccÆ8†çvÝüŸžûÓÛsvxv|âæSmŠõEÿlx:0m¦”e´ç‹ô‘ð	Â0ÆŽwàá ¶vKy¢?Ì›åÖ{>.zßÊê¶‚(Èô.…¥±'ÕÇ–5}óåæÄý1Ëö¿ó*~AùÇ…i\iJ	)`8šßËÌ6;›¶™±±6bà‰.…ÓD‘»j¼"»fZ*ÍÃ¬X@$åCák0kˆ#4Œ—C-U–ý´Ÿž<OU¿•y²ÍD‘2.‚Ï«{Üæü¤Ó«F¯ì¤€e¶·þÒDRb–Àæ( t‹7¾7_V—½ˆ­	õ&«Óúfé;Þñ,ïøñÁ ß?:;ƒ¯„<˜r²&1jŽKµwÕ,¯*çßí‚¸uïG‡'GKòn®26ì©_—ŽÐ’by·¿ûàÁaxóˆ‹þŸÅ¨]þq/
-&É+bBP=¡ZšCçõ¸™E=™¬Îz«p’Q®ˆ-¬&)¦R%å´'GÞ^ÑÞÌ¥Š[!ùVåÌËp³ÙP–ÃËzÊ>VT€åÛñež,»“™Ép¹%2»ýˆ9nUvk|ß¢A)9Œ7ß†É¾ÿÁ#Ê¤AÑãî•‚>ÆË6Jqg!&ª—íîjwo=äÕt)n­‰‡§ÎÎÏ’S9gaÒÖ43î‡ÃÓåìÈàîi!?€#U–yþäÙËçµ´¯âºSIe›·ðÔÿòÇgž/ä;›uõíÛW[X	òvÿ„!ì—áß_Ïäß²±	Q I-IàS¶×	LªRe9Ã:5ÁY ž‡±¯ê3z”UTøFÎôÒÖ¶‘Ûjì¨¿•¼îhÇ2¡QÌH×÷èà…õÚŽ	>!Å-ž/Œ–ÐÈð·ñ»’~þ«:;%{[Ëfe:xÐ™bWÂœÞH5 ñïì/Fñ^dÈsd•‰0W¨pþ.Ùw—¥$ô“g?>û[O/^Q%­Mp ’›Kì€_"«õ^~tìXJ%>jýÐŠ&å™*r$Ë­ãgã­]U¨¡^^A¯qÎw»áœ»Ý~ÚÙí;éÊèô¯ïÓàDYò©B­57V´ae#šûo<aŸe‘_W{Ògí¬<fÀ‘üÅ‹ËÜ>£--@ŒÐöÈTvy²“°6Û\üûÇa’@/	…1j=‘oOTb¢ç†oÿbô(¿nqUÂ¿ÃÎ»ÜÜhRŽ~^’é&NÑñz¥4»y3Õ(ÐÅnÞÕÕÐÁ›Ÿ–£êažŸlÂ¬ÕŠÙË¨**a'¸öÓtw-§É-§“[Ëi‡ˆW'9^ô?Ý2o7wñ¯<Âùóû ‰¶¡ÃK~]ÞÄTMîHUâ LˆøS$ÑƒA¸ETìcçµÃÈ}°û
-@’(üV”£‘¹Q"}|Œ1¡öWã$XQÁ3cêè¾-Úòþ3 QÜX"•|¶ÅÒØ«i"ýUg¦î^™ó3õ ë-œ><:>	Î§¼æ{^i—h F©NWÕ4„KØ òI£ãeZ7©†<´SÂâi#sˆV™”Ña=ÈŠF*æÂ…/ÿMä´‡EÒ¬Åï‹þR@ƒâßÃ¿f›vÓ1éß§÷<z´_ˆ·öðÏêÓûNNïg’ˆ×?~U¾×V£àŸà„ .ˆIEÛ‡ïÜ ,2£™w˜„vÊñ80‹5 W©uiL¢BYaX$×è¶r=OË¢o‚°rFÉ)Ü+×üïÿž6ÍÊUOÌ`U½c!ÄåõÌ±€x#Ù´WØŽÚÞ¨^”¤¢ òfUƒìTº¹naÒ‚¾{]¼?—"Ö",¬ù¸Â??F<ëÙ}Hõˆ¿˜ï E×•þ»æì´á˜Á¹ßËa°z ÃÁr°i+*>M”„¥HÑ™"œY5™k–6±F½¯)EfÿW’ÇHÃq2æÓñ±ô³­¸ë9.×÷´B÷rØ<ð4p13zKªN9yºàþT¸`ˆcßÏîQMXb÷•6ðw¤âœI«ù¸h$þYNägè·QÉ~†NýâèLŒœ¸›ErZôUã£t±©ÿ¡T¦'­þ8n]8ùåáõ¨ ¼Ãµí¨ãæÄ¿nL»µ³Ü
-F•ý‡ÝÄ‚VC´Í’úüé—y¹@uAvÙ¯bÿ«ÕTdž#K¸<r½Í3ù÷Þ$V[#˜ñ`!Updª¤4Æ{ùþm|‹P2S¤ùÓ8§.´ w0šB“¤ÍªÐs5Ïd‚ÆTðä¶ÇFVYXðç• Ò]• îŽý3^Væ;çíE)¬Hºð||MÃ1ð®?Ø—¤àØè»|•ËÚ?ªÅûzÕ,\;{÷Ì?{ìü¼ãèçyêOJúE‡Å	Ð^
-Ç¾e­ÎEXz:ZÓùA .È€#HŽ 
-ÞÌÅjQM—±UÉ,¢¾™«45.H=Ü9`:ÎNó…Ñ~==RÁÉ•Ê×ö¢˜6rƒ½¨w-üqOV—W(Ô’ž¨ŠÏçìêc¤ÊÂµ£æ‹	Psª8'ÑHCþ@f}çF²PEÀXM“XI·kéÑ$=Q›VcaÞB„ÌhÂØÏ‘á­Š~x“×¤"Ðo‰jGpšy;®„Àz‡&Ó6Î-u1;—ø2wÌNgçá“‰d*ŠÙù"øŒÁ	ŒðV–ÎQ2Aò÷p¡ã'/CG>÷,8ˆ"Ôõ±$Qî™T_'öàìèìè±6>á)g×R¸¾l˜€çp#cqÆïÌÏÝ‰ƒ• ¥âÉ!‹Àp³iè.c‘Oà‰Ø‡©daµâo¸ÓéT¶RžwÌ¶<÷^v ÖôïEOa¡GôÞ´½€{úØ¸·ô3TRã)ŽHå/ó.4Ö*7ÀL\ªñìß~W[-»-©˜ƒðŠÕ‰º×.§”47Bí1‰?²FCŽùRx€Ë®98Íb0€]õ¸Å§à'×kF	%0lo®[I›ŠåÏ4â¯¯Ðè0áq×ù#ßZáo‘ø3KN&(B¿‹ÿÞ#L?Vàùd±$õßÝ(®»Ã‚ü8éÆ‚¿ Ã}üè×â‘€Ë–¿¼!“t§ä¾àëYSíOü9åJça‘œRÁ@Ì¦=Î0	›ååª´ð˜[ÎšŒH»©´S)±ÚÃÑÃ×+ò´TÁ+Îu4º«ì3cc-!¥±’›l¶šWÌ˜øÏz]<yñÍO/ß?Ÿ¿xQ|ó¼xòÓÛ_>y{þôÉ‹ÿ©:ÏŸ…Å÷aMh€®ê8lº&ÑÅ:Î”
-„o­­]WZC¦“H¨¨vŸÝæ1°~Ð¬u¦®ä«Š°\‘«EåRÛâä¯+~€ÕI¹\Õòêº‹2UW&¬û© ýAtCFHjkÄŒ×!ÉûÒà5ER,'ï÷f-Ð¥Ÿ¯DÛÁ-ï;Ç™›÷MjR6]R¨Ô&²bv?ÏÖõÌÖ0‰†´ÅíÂÞŒ±ù¤¦?bûpÊQ†7Æ9<‰ìR‘„›«ª|_Ïn˜21¶ÎÆ#.cc@VåÃ)8”÷â^W½.´ç85Ä¯[…z®ââÔ©Í /¦©¶^\Q›êCX9F7[5ÌÁ ÍéÝÙ’“G|”g>å*;¿£-º¼›^0~GÇ÷OkÞGÁÜ;ì|YÜÈõEÏ§þþÕ‹p–/\®aœ´ƒ9Î;&Ž²Ú¯¯]ó”™ þµS#Ö˜XÓC;Ïýµ£õ8ü O>=HQ$Å4vRrJ5íqÐ ²ÀY“ó0ƒPëÀÈÅÐAœÆóI³‘øíE9-W—›ÊÇ˜´§e-ÝøøbëÝûÍL0ÖÈi×¤LOoTl8š“¦Í×K1z–´Sg'B'§	ÉÿÞ”3!=ÐâüOZ›˜Å‚Ã‹_øçgû8Ÿíðé9dÖ2<ãtÁBØãÇáÜù©ž¼ÞÛ»rÏN
-Ã–ƒl;\±pB`ž¦L¬”N
-³kîdÛãÀVHÕw"Ä'êGË[Ì€ôæ >k=õlôÃ.“s1ž\À\J|½™N!P.Å	U‚‹(z—qŠ§øN*¥úÁ8™Šð3*Hñ-qé8qËóÚ\€V%Kêî³Gª™…Ç$pÂÝŸí5W_¸‰ðÌsí†°n ÷uÉ]S2Ž.7MÜ;ÁKÂî!eá÷o_¾àYÀ/½
-.qe¤žüÂ¢Ñ
-aÊ'Ôº•±^„í‡)^­07ý›á†Z Öà}6`§v<o&TŠ¯Rø*Oó-ªonæ/À«ÁLæq‘s\hì'ì}‰…5gj <6‡«´	:ÉT-Oèµ0F¿„w¬Æb	óQŸGHèUê^'BfµaA{iöë‹ü!º
-¿}òÿ_¥ž³Øˆt¢bö3É-0F¾R<Ä4*XÐï:<öÃ–í&=!ðg4×ˆt¥51º@á$$œÂ‡ÃIr<ü¨–šû¯˜ÃP¾ûöÕ›ˆ‚åË"F…1-gB)ÕÍšxbžLíMð½2—kWt{'>pöèôÁ‘Ú;ñÊ…\%YU“JBêJüX1ØýAyÊ-¹Þ^ÉI¶Àè™àÜ"}ˆBŽ„¾GËÙñG]AÔýÚ«ªZ3=aT¿ìß
-ØÓYy³	ä²d¶¦uÆú.-M^ôîÝÈ³4Z8Ë0b‡Ân·`LvšÆCxkV¶ë}LàµEoíá.LÞòR­»’¯õM¥)þyÙ¾³ _^[Ô-ÔF!XM‹7äpïëXr£!¹vé®þT/™Q¾oê	–Í„(33Ì®BƒQpÏ`	_Ï{ÕÏ*+ÿ¹
-'Æ_êÙh%0G·5—™‹øp×„©µ¢GG*Q[h.s”–{o#Œ	‘Z{ñ·¿ýM[ªÉ [DÀ;qý#Iº´šc8mÑ…veOaæ³ Uõ"Ä^…¡-úG˜|Ôà^¯cJ	”¸HÓ0CØø)Û-†øii¿!¹5™óÉ	œ&¯îÑ™{l}HÉKHó°]Aq¹’'„?>IÞ	.ˆNxëüUAX	çQ÷>XQÙ 
-–Å	Îœ†\×P˜¹{î»ÅÄÖ›{Ž‰—`+Ä},ëHM-´F­KtÆ›ºu®.«ýÈ7âîO¥ß›TVé2<ÎŸßUëÒ?Øn¾±uõÞùQ69nÉA3=I’ªôLJ¶•*øÈ™ {ÁXê#J&R£L!Ý5ÊãAB%ôKÑ¦s ÌëH\¦]÷©´×¼”Š›ŽaÖ©ûq.rUõHÂ\‘öü×dK‡ãèò |Œ[‡¿ç"äb&šÅPÀ;´JhddC—°Êiå)uÿ*²2ÄŽ}I>X†…é¿kc?ð€LN# `40ÀÝÈzPÓþÃ5·ô4^ÎÔgÍš‡»ÆgÖ |;Î
-Àæ…ÃÀfkô²væ&_®^„˜”ûZÂS¯ãQ7î!vŒÊ¬©wÛFRöÄý¢÷3ÿõ¸x© ‰ºQ¬82ÈSØª¼NÌZÁ¥2/D;˜ü wó»­7¡Ö¾Ôó—èÐ¢^‡iRÒÃNid[é“Êwã O­ü%š­Fí3`œª¥£?UÐh6¶¤?÷ÙŽn#òô‘îð@Ü(,X°Ô(î&ç¥}mrIËP^7«.¯ky‹Í+©,“'Ï9Îì¬\8ÇS‹@D|¤Ä%k9 Ò–EöË`³Vü¶U½,É‹ˆÐ†ù”oUëk43™kØš!†7&ˆö‹Í‚Ù‰rÓ‡cÀ.i‚p(¬¤H…`¢Àœ†´ñ£õˆÑ~_ÈÝNgõ	Vö£‡îŠ…X\Ìš÷lÄýþT„[3‡ŠÀWDûWÊÊÛû>®—?ÌÊ‘Ð¥À3ÚŠépÿ“·LCº¤Üu¡‚ --S¤{‘AÎzdÛëž2§Z3Iðç‹üˆßŠù>¡Ëøt¼×ív¤}Íà’³”£’ÇéT—†Ã!’ÛåLÊ7ÊŠã8ôšçð;A	ÈéæG¢œâê?ÐHÇð¶\1«øZé’_±>{T²e¥%i¢k²¡<‰mðH/FX½!˜AÚX€¯dM–éq ®\©ÞÐj+–õ< Š3XMô¢ÅÓ)Ù2‰­fÛ_È>Ÿ‡ãÔ”—ŽL_B’~_å5Gíd×0Ç\GcÜ…Â`eü´a}õ/«êòªE±-éæ)vù„D!œ	¡Öd+üá`;;/ŠÓkw~3¯‚”ò¶U³	w\‘BGõE—Åeý4ø$1€T	Ÿ¨ŠÂÖ‚»oLEèöŠæÓêØp¿Ó(sÇž9x)  P —v_1öDßŒ3E$Ö×”[|Ÿ´OFÿçT#”\¹2/i½ÈnEñø`à,ÌÝ0h[ËÞ½BI³¤lT˜<­'(eÒËåØ~´Y'	«³,Xó~’>ïþÀKL8…æ? ƒž¤D¥¹µ]/ðk&U+-;üaÒ®/´êoÍ+÷ð„å©kŸï>¶3Œí¡o¿Hšwmyó_9 ÞµÖýôÃ1ÁÞz'çÐNMQ
-ôõºUŽöt×ñžH¦ä›ñÈ4Þxíw›5ÅÒˆ²øÉmŸŒ‘UÊõP’¼—àŽÑÝÜcþ,øÙ=Öˆk“È;Af×ªVPtõÔroÙŒ(\·ŸÐ”‚¥Ï³H¿Œ´¼øv XTi…Xëbôs{÷~07Í'¹öòU9Vúçœ dÒ˜rAÂg³††¶b£vRMþø)ƒ_¤ÜS½XT+ ®xù
-/gð=îU1þº¤Á< >úuÅª"EîUi”Ïœ£Ý4n5=¡³ÎÌÈS&€o:Æ,2¡YùTx¨ÓT¥øÖašÂ`i[ƒ_ÊáÑLùAu4cÉµO>8=>}l5Xï|‘_Z¡g·s§gg>.&ÑEpÕÛÄH•sR•’QIÓ„øëº]ó3ûl°ì…B|ò¾b¾ o/åÅårífÊ?Tô|‹·0ÿ/B¿¬”I\îFÞ†~uÌf5ÿÂgcÇ7£phUã«íÖ¹5Ób.Ù9®	J¿½Ðä0’9€™šI–-Ó26~¯†4bÕdŸÏ—E<µ±(c.ÖÌ"ïÇØaÕÞ,Æ|å	ïQ:ioÜ´oÏH^±­Á&ïe"3ÒÆ~|}‡å:uð›pì_d‚÷›ëÎ¤F¬Î…3MçMÞ52yíS,Š-Pe{@U&´RsŠ}ÎxûX)äè©×’7ÏL×š8HÞô=º½èB”“ã¸m™¯BS\Û±ŽàË–¯ö®¯¯‡ãÅBž²ç×qð¾†Y€6A¶ZŒo¯VàC‡]X¼¯«KœŸÏ?H%–qä«§¯Ÿ£ò3«G«rucKOúØ1À¦HN+ è(7üŒµ[]›‘bb!ëC -õ­/Pr‚Ÿ!¹j1s¥ãÄ6ÚgMXK/HÑA@¾F½ôÛ[½äÉP3×V³©_Rw.éä^S³r[åî¤,@À'›†X1aQ›‡6/¿¯X$ý>¸¶DkÂe´±YGµ¹Á¦ÕJõd³2°JN-cÐÄü¡>Tçƒ¬O’pgÿ ðì›â?‚=áOÂÚ)Ï1”ÀàGq1ÈNu«íIR-±˜$º¥¹–=;Ù€â’¹-ì·Šª‰LR’dÑ§Š#,>íTû~ëii?O®Ð²¶ Â²ùÝp+ ‚L–pÈðçcûs9[^•£Êt÷Â§ŸFíßýîdûU2ñ%ŽøÎ©ßÛÊÙa¶ÕÁi²–s[7Å&õ‡¥“9†¸¹œ 6mÛÕp»•Ì1=°L×Ð.=^f7¬g1òeB/m{•w‘Òé.»ÅòûÓ“““§E?öøÆ¨Âð™ÄNß“ÿaÏfŠ8ý¨O†(€^{ÍèOýAÞƒ?… öàO8ª°öÑ­ÌÉJ.gf‘†;D]«|í\V;æ6&!û¹œsŒn0D0’ìÐ†”šN‹
-ÑCòá©ñPÅä^!À³½úþÕ‹züåôû´ïÎpûeœ>:{¬ó<Rÿëü•âáo@}'œ†FªÞƒÆ2xìmÚ! Ì.&Þ¢!]×ož»wþ³78©–ÛÓÜ6£ôqpw—¨}–ïKgÇÙ¿o©ð9†ã÷Ó
-¸X–ïÿàˆG›`ÒV0'Uk¦sÖÿbÀ»mM÷ÌË¬Ý×¥Ý«2¿ê}Â8i“A.M8ä:3ŽnÞ>Íu£ÇÛÁÔ»éÇÁS/zÁÑUi§Ô*ðÔ—È»U¹šÕUÔðaÙ¬„,ø-øùÚl±ã¨¾½ÛZÓŸ¥X'rŽÆCM©ŽÜç”¬ï2RðRÊÑ¤ºÔn~f6¾“ÓŠ^½ I@±0m]þ»†P£§hˆº½ &A‚<‘rëp“cÈíÍpç³Ï§×ÑÔËYèˆ-™D"I`—]îXËÏ /ˆËƒ’¯@)¿oZsZÌ4ý%üÿoƒ“÷®øêÝt*ÿøz¾‚³^ÒŒhîV/éù¤ø¹ÈßWÕµü÷kþ‡éq–7+ŒKÍÇë»Ši£÷Ú®i iUAWŽæÂ!*‡ù3†«J¹¸öý÷päáKÊÉ6
-é4*W	BCœ%§õeñZ‰óÙ®dì‰V™™4©Ã:òÇ²éRhŠ¢3JÐ£Š	`0á=¤)Â«œ[z‚M)’üÓ*Z5‰=ØáK6D‡5yó­?‹~z|r|øp¨ˆ@&ð’ó*
-DË¡jØþ]iÑ÷cþ%ø‘a=qœâþ'žæ÷ïõÉ¾:èI¯’PlDß‚Ä‹ÆÕZ2GŸ[·(i¾ñ9=:9¹ï¶™ŸÜÍJ…+™¡zøPÜÊÞs©’_ÝÃî‹;°\hý„ûÛÛöõ“GÊ×Eº@7hÙí¢—¯ú!îìS²¼ãû—¢×ëüL$î3T_D-k•Î‡0=)ëbDŒ\ˆÀ4´]¿“o@ZGTµ×YÃTµ2v¬e="§Ì<Ìñ QÎÞ1`¾âéS¢·RüNú·ÕäV°t·w«81«µW›éÔúúŒgAEÇ@Fl0	^øQÿKL+“±–ú5ÓZ®ªÌ6aÓkïÇ+ÒÞ–âNÈÄ þmÿùÃ°o‘HŒ	´…%Øª©ú¦¾\€ô\âýIU*´L#'¸Ó‘Ø%¨Ÿ¨ëý¦*ÅîË)óÕ;ùÏ×åäè4ìo1ö~þwóDŸHaqlî2Š*¸šFßµæNa¼ÌW‘+à¥Œ7rû@ÒŠ‘”'%½°^Wªñ“Z¹‡’.1J\Q£qTYê3#€‘´ÿaþm)ÊF²¿{I¡©ü]"ìµšæše¹+˜Œ°0Ø!¦Tì{QMÃ+ª‘â9‡;ó×¶v¬sx]]Ri4)Ì!ëªÆ…FÚ ˆ)]že8„›;¸žõ8rV¡b˜ P®üôý“¿>—|óüùÅëçož¿M†Eñ`¨N˜``x¥b . 3ðzðN”íÜXÞË£*I›©ÆÈ¶<$`xã‘ch ¹ëS cåx8>}Ä*“Wj&÷¤÷®ª–¬ƒwè®@‰ZOG¨\¦Ža–n–Bö„s¸Z…©·‹hé3v—$2Gî!aÇæÚ#@] ®Œ$¢Âj{šf6ë•·n›F|-ÚYáåÈcÆg4¹%ÙzßõŠ¾KZÌÒK‹ˆ£çs„{1Ç¿ùbŽ5H{WÝ€ ÐB=^¤
-A¡ÚyEÿÍ·áÕžžç‰PÄ«°óô«X?8i\u=Š,å…WÿUæ¼›S4O”øºUF{_:ÁÓ¦éQ¬N‰%5ßÊP‹ù}QÆMI¨„y«™1@>Œ¿’o€}Pý6øYX
-ô®ü-F‘«ÊPÀ]µ…ßµ[óÍ­®Pê5*‚gTh©…]ÖsLíðQDó‚	]l5Cƒ»\üQÃÏÅz¯P,¹h’øê‰g§jn³²
-çŽ ¶Ì¦iL{jSßáÅðòqÈëBˆ¯Õê€ùèÃr¡4»áÂOô7ööRõvã©åZïP-Ânc°€R	}[ÂýF`¸­H8êš»9 þCÒÅÔ#4&;¿"®ê5†y>ñ3¯Ç†:%~¶c\	æÛÃÓÃG§p?Px©ÇmÜ¨O¼ë$£us)Tèµº'è ÙñL(»õÉâF@òaaSVHV¤vœ’æ_/$±+^ÈX¬BÕ,gJ4!_7>ª´	ÇÐû£¯ï¿gSÎ\ªWÜStýéR !7i¥€õ~†ÊÛù«?1R|ö>¾ZaôÅÞ—{ÉË@ÓãÃÅÜè¶#CþÏåœã‹ÎtÃª
-/ò×ÓdU^K>Â/ŸO+VdýžC/1ó³¡=‘ü´³Ö¨57"´ó´ê\ú@ÑÆ&ÜîòÇn!ËNe†Ø±›!{¨]2‡	y.U/þgÓ§òb%faÞeÃ1	y­+jÞ™îØ®g®Nc¼ñúl
-ëLplwÞ!<ya pãu'úD™‘O/ê(Vt|öèáú]íÔßûáŽ÷&€†ÑÖ¥¦˜ž(çAŒ9¶:.W±-Ù“’Š*3t™y
-ÉM±°¥(¾¯÷ƒáù¢“£JÈ°/ö1ˆÝª‚W9lFÊÞÁ–‹åp2M˜£äÈ'KªŽ	çŽBK¤HÑJ0Ò&©7ÌÒ07zÜ±&ÂåCosNí„†ÀÖÒ ÇçøÇew€{/¸v‹:xALðÅ\zùöÀî¸µñèÁÑýmkãÓÈá\
-#%Œ`\BÃÁró¸¥HÃ8³ºµÎjŽö.O¨SR:lX„Cñœ×‰²cØ$ô.Ed6SÍQ§äß~:-8õªÖ‰ ÅyyÙÓ?=Ö°Œe&Xq©bœp!Ê$Þ¬‹&“Ø «áXíRowb‰Ã5óg;ÐLáOÿ¨VÍöpúàø!6ëíEð›èmÁkƒÇlßªz/wÓ`Ï]êÎ=HŸ¼ê‘»âKIïl­ú¾ V“Þ—dà‡,¡D1jÊ«¤ÓÖd:=1Ö‘
-Å§AÁî¡¤
-ŽP¿-¬ÝtZlß“ÃÝ•Ö3œ´$ÒµX¼ aª¬W}òòz]Þä·.b#¯º=½•²yükÍ"pÌÊÎÜ_Ô¶V¹%7p0¾Õ½4ç	OíeB1ùjUøw‚ÈæqQ<<^ŽfA|ºî‚—œ0åB“¼õ‹gŸø^ZmŸü»í?¨L‰T‡9—L·>7
-Ì¶öI¼¨uhØ‚Äºc>È¨eíìFÕS§­ˆ·…§´¥õ³¹Bj\k˜²„‘Rºîb3o&%
-ßJÞ£ŒTHn¤pCÏ:måkèËç
-Ø]2—¬|–â´5ùõÓ#+2…CÙp¹®Nž Þ½ßìŠõ‘áR+¯É}ŸÂT.Âî³¿ÐTÏà ­)mÍ'P¯79toRj’2‚ZH°áÝßµ²ÿ¦*T±dzÎ]€-`8nÛa”šÉu£Ü$‘L€€,!ú™”³`øUÏˆþù«¨Õ R4„"æbUã‡ªmö¹Qäó¬Vøj–ÙøJÒ´¬©X_mTpÔSº¤¼bi(„¨&5pOÓékˆäóx7GÃ’<ÏFœÏ§)
-ÏkŸu*ý"r>âß²T@ú¢ÈÚ™ Ø>A/€O|[$=`‡ßÖkã&xV±]“l÷“°JŸ»XÌ¡›—oV
-åf’ŒÕ¶‘qX:°fE…(¾õBxN
-éÑBÉâYù¢4ƒ/Þ"žÿgJÁáš{­^‰Çt­KÐ°=@( ¨•ö¸°¸¸ný0-éV-4uñT¢¦^¦æùäÁáÉ#GÌ®Œ•Â0…®*%…ö?e™RZq?ÃÇ‰!*g¬ÜÜ¦R¬K¯kv¨ß½Öa­è„"%Vé}îdkR´Œ 6Rá[`˜N
-×På¹ï›ë
-†$ñfM“m4:N2¾–E:ãã34yö$@³6ïW?<Ö,ŠÔ+;¦á6úÃÊúñíóÇÐ‹E’‰Ö®+«Œ(*•„ÑÚyB‡TÂJn½Rò¯0EŒ.¤’ó‰†š‹\aáª¼ïÅÊ{,wF²ãRÎÈ(+“G¾Ž…7†Ä."¤L1Á )í©1„®¤M}•S#_¹"IäZÓÐZÎ6!¶ø-¿~J0Ã’çšÝøÞ
-ß¥¯-Õb(òv²K®%é‰ìožes­y]ÎÂmm)Èm#Ž»wÄÃÆJF^Ô™á7‹X¨i§±rëGÐý»°ð´DçºûX(DTv
-¯wïÖ“˜×°$øÜ¼´ÒFÐ®'OQúÖî5ËM‡[½¨„|½Ð-µ\ÙÄ-µ¢âœ„=(ò@ŒyñçèËõ-‹<‰LÓž9’;(LdŒéf6Èê{QGÑ(mŠäF/ÑŽ—±ø`Ø9ÖÁ%eÒ¸ØÚ„¹'éùß…	~fïÁ¼IjëÃŽ‹!_^­zºgì‚‘Î²jÌñ¼zê ú)y˜¼;à‘70~Œ'KQ” Ýš—7Ú-{ÜõØ®ø}ºFQmIþß%eù(Û„D¹yC–„ JÓsjã\Ý{é¡‚s¾ˆÛbßÝOz_¢™ãKYp„å××9J¸Ùüò±è2½t*…¿š"CÁÄGÕU´¢ø‚Ö=úM¦“&•c¼»?£¾Õ„«6ëÁž	‹méåb"*Y4åfe·Njn.RÕ®D-l½àEyâZeÙ@3…	4F”c==)XÁNŠ	§íQ³‹2@­}ñã«FiLe$Úò`×k¢–ö¯}nÐ¬û…³¢¿ÙUÚÉ3&ò¡™N|;Åó¿«ºõ8Î«ã*¼¶S,å¡’…—¹¤ÃŽ@ØBb‡m¦·—¤¦¦èµ=Î6ÎL¼¤7W›µˆA´?5z¿;Q€r|VUÌû(Õã^û6<Šè¶2ú
-¾’?_>á;[8*“§óhõEÊâÂ[TÞÍwÁâJIgU¼)¥kFÆÔŸ‡ß¿Ÿ´°ÇhÒD*ÀÒ6Î«žX²o’’‘ÕC¨êzÀŸ-•PÄÔÄ®	]½`Š§M_]¸›eUœË'N M—ÜþÃv5ŽÚ* ÞÄ¿hÙ8A–³8áõnÑ	àÜnµž,µ	Iåý6º¹é·|XN+´Œa/9«Ä¾ª~jyéÞâÝ‰äq]¥Ë‡†Àö"ŒvºM§$C‹Õ]5	Å]Ù£ šy•F£ª¢†_,R¸žÂ|ôwØôßPëõôä¾ˆ XžôF"·(çÊ¡Ë%Ñ(£b†—e8VÏ‹rîº?‹ÃÔ‡ÿ0Ðk"Ñ7Ü38ÝLÁ·SRn&ðY&QÜú?:;	ÖZ>»¾"ôüO
-úF~«‘ üÒ"¼´`ÒdÁ-kÃK[ø YÙ;ÍadO7¨!ó»’5öµåŒ²!Á½t^fUp0…fgbJ–·p:·ÐÓóøôdüË!™e?\TŽÙ¦1–¡œûŸÝç‰|¹ke „æ”—#ÓÏCl¤éÍÎµ³ë³²ëPŸX¾³¯Ç‡‹_@~©8.ÞÌªù»¦39Ä!‰‘èë"ØILëÚW>“/ŒdúxlàÐ–™¸P}ÝƒÇ$;"á¶Já%;V†7z©ÎÌˆ½±…0KWþ÷ž,šE3³Ù»ýzÙm³¹L”@9/âÙÁñn	Ü-ÐÃÖ5¶ÅÕ™oÙñc9K•ã©®lø}e$´£fÿ Bè…IÙ0ç¬~µÖÄZc$)OM·~HûðÁÚˆÑ•ÐHÓŽúñh q¯ŽV¹¬L½u¼kÊ3OØe^hQ²ŠZ•-€Ñ†dSbq¢Lú¬8¥Õ+F¼NöÂ´n¢/ˆq¨®aÙ¯ÆÇç{€ ÕØ´8ß?drˆDð˜ß,b»ê„ð¤~:ªÙü£^ûþ€g¹®J9oÃôÒJÈ“(4’ß¡Ò0
-qÖðZ‚D6M¾Ò{VšKd…‘E°œÊ}à7Ân0‰®,¶5&qÝ„g;`öKŠ5ê|ï–Hî„œkëøMyªAÆrûH¶ÚðêÓ;üh·¶ž°—#ÅlÆù®äîªÓ’ÂÀ’&®.‰6%ŸRIÚµ-)Â|´©gV¡Z6‡
-£6T­øg>&>!Ÿ-*+M†ÕñT˜¿“Þý¿TxP2‹jD
-ý¶µD¾kšZøô{Üú8¡n:wkvõ¡y³ð|wÊ™¬Y’d±=ŽÚ4¼cL:¶ËœàåWß¿›à	¤S— {þòg‹ŽSa+•‹R‹¨ÃI©*ÎZø¯ìž‘ò×>¾"Ô8RY\`@´£òƒ$Å¦>¸S@hnœX|QY/mxÄO0ŒUñ"ä˜ÓŠÒðƒ³³HKgOáV	Y;äZ2XËåb9g×Ã¯”°(Ì¹ý[ÓH$HaÂ>™jŽ	’ÌO+Ùl0\ #¨X,\7hP2Á®UM§Òè¨ß}tÎÚ*4âDœÚ˜Ël- ¢ëhßíyxPZªÎ%~xÀˆké.5¯Ç+pÐ®Wu°\œÕEVæèª<ft?º×—ë¢Gý8ÛŒ‹þüêùwº'‘­a„$Pª¤BŸžú©îDèrÆÖ#Q}¤g½žyI«RA®½ò}ÝÃD÷æËËbÎWßõü}©mÙé\\£Úº})á\à×Æ¤q¢’R„‹·Ž<]Nöµ7’é–qBEO`BFFµvüë‚S?ç‘àvŒáxâÃ‹ž ¼ ƒjÞpˆGbŸLˆ.Ø¶i!¶*+!g­Œ6¶•¢ÇÏ&0[w{Î0ÑD¬¿Ÿp#ÍHÖ/ŠlU¥Z©h¢\œà;TEËý	Z­è«&'f½N?¸àà ìH ªšSØ”í¸d@KôIð¥!HÐ0IÔlÖšù´†°æÒès;ý¶GÞ/ú‰)HS*£FIÏ,÷øäÁƒAz”»s{w?wõocL<•eÀk!-BkÑ½çBhú…Q·D‡ åŠ¬I—!%K‡má9oM¥É"Âê¤9É”¼Î|¹õA’ès«W¸j§¹Ò‚J@"s8aëS½èf„c•æÊ ±á?Úá8SQOEê[uâ=ä/­}!=¾£Ùss\ß³¸„q´ÞÎÄˆŠàj\’@v–ŸÜâc’RÓz¢Ä™&Ô ‹,]OÕŒÃpo%ÑŽ±Â"˜ÔKîë`a…ó^ðUÈ™1-7±Ö½¾FÍž†¼Q=÷´Sai _„>=:~xzüÇLè.Í‰èúâ;üûò2ÉÒph×ª/ªP¬Ú8põŽr¥^wÙñyE7Ñ ae·øPÇª¼´¹NìCYAºF:t ²‡´£(VmBšŒ@v¿šÜâ9=ºxrò¸ø>‹É4åL ¨eL/$ƒ6Ž’™pw©‘D×u¼Y÷,ï¯ðt¬â„—ôû>¡\ÌÉán‰Í×¦\¬yÕ´º%è)™E©
-Æ@æà€ Ïƒ¶¾_I˜Àtþ¾rÔÉ’ÖpJˆ„B@ö[”ë„õ¦%?Eò9¥ÒÇX²Šž…6G¤yŸ˜èlíþÝ_P3uMèÁ	ÇÓ]ïžº‹Ãª½Ü€åD”¹¤€¢©êãƒXŒð‚äJþð­›äKulU<)kGªŒ¹z8áƒH™øLŠ£qÆ¬æ™€·¼åÝ"Hÿ–GG‡=ì,eä@7iq$(ûë“ª¬¨dd¥Ê äâý!Ñ+›ç/Íâ6U˜õýˆª(5Ç7W©‡ÍR)JdÚVkªX 9MÀ™P¥HV-&šPÎªl˜¦ôˆ–˜^ðO+ªy«÷êÓ
-)ŠÊáâÁG#ÐìN3m¦iÃFæëz²¾Jv0¼‡IXgô@åŸËðåYd¤ÒºHØ2_ëGcZ4·Ðuû~)­¤sšmæCu²+ Â”Á	HâÞñYD×«™¸u‰µqZ'f@¯`éÿ¹Ög+cdêdÖ¸Ð	/•ÚWˆuTŒ×^¨;Ãö×’¬ZðH³n+µÃ0L\¥±œ±*üÁ4Í0‹z\¼Ù<*LL3)Ã¦¨”¥VÒ2"¾¢Ýœ½­jš@ël%¼)Û™ÖfwÔÎL¤‘dÖ&5”®XºRKú@õ½RÙ„V!Šz1Q&ÚÐãr—	¶Y(Ów§Àðj¯Ø%ÒPŒ6îÍÓ×ç¯Þ^|{þâùO^>7°‹þ¿ªIv>'NÝbTRÕL‹×WèšÝNŒ¿Å Èù†`f|YŒ˜$À/Ct3ù¼Eñ>ëœþJ¨Äp	`¢TNÃû\WÑš‰’ØÅ›ç¯ÿúüõÅ_Ÿ¼~Sô_=yûýÅÛ×O~xóâÉÛçÏö-9.>øâÛ_P»)ÅƒÀvŸ¬éGFtBÌ£é'ok6õ¾4šrumÒu–¥k ²Ea=Œ?Iz$IP.\£‚­WC`æs©ñ¿¾w% §´žÄž`ÝK<LÃ˜FÙu¾°//|7¼ùzj‹ø­Eº\Õl•†SÉ¡¬›à§)M*$3¥K6Þƒ¿—ÃîËf:ýÒ_ýõRÖÆ±W„bbRÏþ›_‡…þÓËç¯ÏŸ†k;HÑìf¸Åhw}ŽùÆZ­Ô—5èÖ<âTrŽRµ!&+%+ëeÒÂN­)p°ï¤ûQ7QÜ%‡|Êò(nív6m]§ÝåÎ$÷îý}	ÌHñU~^á§¯ÛÍÂ_ê}‰9S–Áþ‘E}_¦Š-<š~jX<‡%*~ ŸÑ¬¢¿©"ÂD­8ÝtDþ7Ø“ :½q9x)DK‡§Oh˜žt8jxÈ—Á6)­ÉÈÂýKøMQ^7=¡IÒ{ÖÀ#N7¨WXð1kí*$(d)Þ©”rÉÁªºt /Ï%
-8:=C”gqtEŸ&ÛæyÛ½jÇÁÄ"Báž .se»kÁDŒ?ûIýœ*UV‰mÃ»°ª›/&šlÂÛQÃLTï\)Ý¢‘°Ã c$«UÒþåøª—È¤õ{]¦“ì£ýÂlk]ˆðÝK=¥Áß	ð+pYB	ø¤þ°ÙA¡EÇÁ¤ÀvÕLjååB…9›æÍ¹9¾»ºS9v6Û-ÍõªZ½rÉÍ°„Z_š•‘Kd.}íš³ì™k¢Kœ›º»+!}ääa‘)í¨72
-å„Ï3jý$Ò¨·H+ûÜ€ØXñÉÁµ’øY8Ž‹WáäÎQñÕ$üôu;kÖW³°£ÆW›Å»n¯	tvÛÙfµŒšk¡SÖvèæ•ÅG7³elH!^¦â¤uYR\ÏgI<Öê6ßã£½z~Y´«ñ‡{X›{eqµª¦áçáO¼[ß½-°M+ÛšÛœ1‹2I¿ÛGB0b—ì$<—ŒÅ–¿'}2$È´«7kD¦ÐX[¼:/ãÁO6¾9¾@ÔÑáFTË+ƒÝ(¢ÚB÷þ’Á‹†WƒX6´D18¨¨¬”¤·F›fò/ˆ†ÙbÚ`–ûÄIó…}¾Æ†æk0Š57»y¶?»"s¸ž&#(ä7›us¡
-ë"½°_j‚CÿÆL¤û}ðZ‘Ëàé«´Å
-ðT‘³ò·G¹×ÏŸ<“hF¸Sè$™vÃ[IyLÇ'f`x€ƒ9|xÓ
-nW7ƒ¼Ã‹¼µÆ=¥3´Ö®}©K +Gìr
-¦÷ }¸PÅvöØ$PM×ý²^õH9AzðŸ°™r>g¦ZÞ1ƒ'²¾§Üá*ð©rÄÅ“Õ¬x&$aíX„ž¨KöKÙ†mQ¯‡åú×hR•ÌŸ¤ùßÕ©E#RGÎ0#×Xh‚Ó•ˆäbÉáoë©gbjcm¹©½\õ¬¹ôg¯½B¹ØÏ/ÿj`Ô›eÕæ©DsŽ‡Ö&„«7®#,eK¶ewM½&»œ©e*ú¾ºªgÅ÷s®Ô>»Äýƒô¶Q+ÎrkLË0\¨®
- lø£Õ ç×š:Yæ«‰‰kÙ?ÞnÉí¿Tâåþ¥š/Å„ETª4Â$hWbY”¯-pØV¿1êÅAØÒp·VM³Ž±{¡JU¤ÿo½ÀÀTUåDØ’ïÝÛ³ª0ëÂ…’’V[ºØ¢3lw/äîºroùpÍà”k··|IÑÎ“#Â†/i©hì{­"ºÇº¼é”›îç)Lô#ªÌ+,8Ofâ
-úÆ¯cä,~ûˆÛ·7½õýîû0ì>Æ|‹^>?îÌO©JüA·›œŸ{­èt¤,êôx‘rŽ QGé0êuÔšr}—øÔÛõtpW [åÌ	šgï¾rÞEåì…”›H)?Û»•
-R¥™+íß\`‡/QlÖ!>K‰uuÍÖ³j!™	L:ÖaÖ×¯¹ÒÊ¶›Ã´UŽöŒÝÓ˜´Q@R#ý~?v¦q›t§Y‘k6äìµ‰X7Ñ¸Y³L&V’–ÑH¹u	€KWG¬'(%æx{±„¼§2¡G©"òe¦Jže”är×Œ*+‘=	0~³¹C¼Ú“ÔÎ‚]Nj"ùZ-Bn×í½qƒ×d`â‹…7{eàÌ‚ÛQ(¶ô[ªcCW,<XÊ<_AwNÔèm*m_ê«ž»Å·¿¥=Œ‹áxÌÆÆVub`V¬1¢8™¬úÏ?æy,cÐ’<Çp÷g*Á…ÿ<ÖvöØ)vë5ð)d":JÓ³#€£“Ó¢R'%S28ý-:à43
-F‰(Á&ö¨‡­ò¬¹úB;ß£TÂ<ƒö`cf:Þèô—d,T0ë›D¢V¾d»©ï®¾}(!k–C3æ	32Ø’o`œq	~Fûæ(T¥™W”¨ÄÝ¯¥e¾l¯Œúc}<&¤fˆ»³WdP@ÐÊú2ñ5$oûÕÿ($?§ß,jàáåTþuü‘r„ï„ŸÂEÃ/æ¢[9îW–©5»”AJ‘]jk-(¬›Ý¿½.üöjÝþjoåqØ"ƒÓ+§;àóáqÄ0ÜŠÑ-]6IaFèÜK–fkmÁôaÚ1’›;<…y¶¬¥§Ia°&]#Ýô¨˜l,A—"´]µ¦Ê‰Å
-DµLž£‹¿ýío¦·Ãõ Ào:·Úö$ý/QUI´¢ 	%êZêî—`ü,ócMÀ b`cåÔ´â~®b‹Sú¸Aøº¨WˆÏ*/„êê-Bd Ló¨•Ëw}]¡—V·
-ð!øPs‘Oíô”1<1Êµž˜ ´å–¨™Y¿‹Žjôm)„ý_ý=ü{¸–=^¬åÜ¥2£rw
--\l|
-r×L§£›é(`h¡/Vü”>Í-_¹N0jäÑ£ó7·º›±-ÉÕûDUDoPA
-¥gû½uK¹Øîên™—xX“ÓôyßRü³›AÆñæÝ±Ïsôf;ÎÝhìT.Ñrùuòv™,!:k¥Tà	Ø­×
-Ûô*¸ÝÝvñ‘è²[<BÒ¯•Lð'Wî'ÐÞ ç#o¦ÔÄ¡E$Ê‚SZ*ïÏ
-f+øïÄ"€äQb	gÉ: ®´å±g%<êŸ_}×¦=_}(QJNu	ƒËE»òW&à¬=Q
-êU!T¢‘d.ôÏYlM^2CÛ¶û¾E™Ä1rþ´`1™“7rèé¹³œU´–E‰UÖ.ÿ·a\ÍV0çÔzÃÍú¸VuJ‘îl"ãBä-ýºŸF4‹¥	/tô»VERôÇ\ã+e'€BKëÕ¦	º•ÁÕhµe|Ì!èà‘ÛNKšrÍ#”÷¨Ô,Ý·âðÜ°ˆ	oaV]ÖkôD£ƒz%]Öõ/ÅµˆÊäZíŒ˜ÍkÔN`v3)ÃÿÙì.'Ê'fvìQñà¬$É¡YÜh|5o&Îñpä®ÃöÊ&Ž½*ò‹4ŽÝªU!Î5â_¢MBø*}!0yß¬RX¼XIOõž2ùxðöfYõ¸G§M¢bHùNÊ4kÚtÛˆ‚ãBHõM¹HÝ2	[[zKaŠ®¼­ê¦ü.–w4ƒƒ„Ãþn¹œ¯Iò=.žÿømqOÑ/(ÿ$•G˜ùÝ´·¡yBnùXìÏj­Tm‡NOÂÿÜŸ‚(Ý8g?Ñ¤ÆE¦O(yÉkù?¡²\Üï¬ôzw,”mÁ‰FÛ³o¸Çs „À‹d¯É~‚ù‰ÈÛEñ\àŸ£f¨ØÊ«µ[Ð.©:ë^¦oãÛRRÈø“èºL*àï
-Ú?e)•Hô¸5#°ÕÐ”“ªÑ3™6Pš®Š÷sCßÀ¯—¬~.w«ãý¤Úê.åÏ®å1URÂÏAUúžµ›$²¾ëV¶ÐOÃ.©­Œg;/§ëåå Þ×+äìÞ4$‡‚mh—#ÔÆÌæ/cEz?E:}”¢¬%2–#rÌõ>•‹	g8läÉpRmÀŒ ªª¸ëŒFÇ€}ÚÊÊL›°é#›²š‰ELï‡‰ß±€C“ôBn³ù´Ñ6ÊJØ°¦9’(³÷ÖJù@úz¢O–? ü¨ã8mœÈó 1gšeG*-µx
-€±¢
-(¡;´Ÿã©£mdñBòÄrŽ­¿`…šQ­QÝÄHÀÔÂ‡†J1—ˆùÂ{²5`m†XSº7…XziÝ­5·uaKÑFà9ý%éÝ‹¾hcîkTc-‹2Kñ —-Ê)t\Å#Y3gÌóZb’VÀGÊV 5&æ¸û×Õ%Ÿöô " éÝ,(êÍßkó™àBz¡>ÎÏp€dJ‰™b­«ã.9,”ï@g±¸Êºð Ð&Y¨ðq ÎbbÏ’ƒüÖÒ"<€öžõsÅZ~‹ bé%¢ñ³¶5åý‚Ðtè@ÛhRÌ‘\¸ úaX…‚¸Uu ¾-—oVX:Ú•” s°HÖäU¹¾ú™ÜvHr9œKsy5(êËE³r}|R“ø"`GÆ––5'¶ÑFp¢c™x½Ò»G¹‹Û‹gÝHóbˆ»»ÐDAÅÒ4_g~¢ñºZ«£¥…ˆEdÙ³?÷Ä;h+|‡Â4µš#é.!rE<þxíº5ªãp*qç^›J7beÞ—àäHÊ‘H! ‡auU ²¥ô„É¹é•PV—×´‹²¥“35Ùe³Ä¼l–Qx^>ú.ZqäëÍ`ÒRëW/¾"÷ˆ€KK=)…LUN¬ýhW—×J$dnjtb¹^YÝìlwD³Nµû`½ü<þÆPÍÓf]ôëùmzŠ=;Hífrd_l+é€®#²ŸEyÕ+1¹`„Ï=¨ô<¯¦?\‹k»Š™´Ÿb;×C9J½yKÇÀ¯Lª]þà8ÑžË¦”ß@ Ç^3ÍúÎ­üjwØ½u%­¢T­r
-FÂ…®cÝÂ*åÌØz»‰ß•_S#Åhaáª1Ì-à3~€ÜP¥Réwä>6%[Ê,šp½*•-á)[ª_ÂÄÔ¾‘3j{ß¨RÔëÈz-Ÿ 8%„i›E>få†K[qO‹ps%û¦ºf¾vÅD…Ð‘2–)Ù'§%‰ÈÂA•Ž™,á0«#º¹½Žü.ÙíÈä¢Ö[º+,Q£}B–‘RŽV#@6ryºÐÅ5’é|²+ÜÚÁ„ò¾°SÏÇK@MÈ“¬‚ x¤%×ÖJªDSJTôíªª¾yóŒ!×0s<`@fÞK¥Bší~51›
-¹ÉÏ›ž}Æ‘¬i+Õ„çUø¦5œ²a9,±uíÿ:©²&„˜N›so³š¹ãD,\Ê41A]X©(ë[x‰1RŽª”)$bj¿zN%ÿþéB§Õ­RN˜´c¾Þ³;ñw¯’„Û+acúK(ög¹L´l¶›p­añô¦‹8ŠlO®Vižæ½ýŒ)µÌX¦;ÈË¡,âœ›¼Z¸ë ëF®aw~FI,ÚBÓ–ãfÖÈÂKx¢PëH=gw‘Q´/ªH˜Œ}ë“€¬8&•é6–Šã¨ÊàH»1ØŽ°Ô&`}%¬Ä€$+úrb|A8é¯Hþx_ ’ šÂ¥”ýƒ¿Åãé­ckpl§³Úî	‡J›WÓº#‚Ãï"^·ÔôŒ–ýì‰?£åŠ#È_Ð,>&HwwˆûCx¶!—šÓpNM—~™Hšf«µ>¸~x]R|’·UŠZÃ`ÛX{°è{`Ÿ—D¿@£wžryÁî®öªÝ¹`k2¿•œÀ²[«÷g5m¿=è	d[À÷¸¨n¨Mê´	¯Ã[‘7–•ÒÜgžbB#v¾¾m£ÊÁ=éEû&ÎÓrá|Ò!Î¨‘Hp%cÄ¤3ªY3ÔQn°íTÄù¯›laÇr4KùSýb¾Ád^ýÔÝMÑSöC¸õV¥à²Â	$™!n)Ý6¿‰|å}yž9-%³5]Ø¨†;•ía·þj[Àö¿b‡ÿÎ¶¶~S7v¦­ m\4‰í;ÛÛO†[.œ!Ë¼jÉî§sQyu­Ï¹ý­o6ÅhïMâÜjé9°+Ãâ[<w=ŽvJb¹åÒ:+òu6$±oâ¥$s¦Û/³'}à“ñ*œG{	«Ôà|V™ÏtE•yþžÀÒùÖKÇF®´ÑM4S·;pwèè—¹qW~¿Êv&	v/lÊÌyb¡­/¥ƒ8ù-¹Ð…+/—8¯V¬B­ÖæÛ÷×,?YLV"gýmÓÛâ—ióáëõxÕñÕ¯I^Æ=¥f©,štE¨:.p†,£©Ñij³ÃYžÑ7zn±è;iëìÛ_¥§F.^´ÍSöE½Ø|Hx
-åÓù?<8:>8þœ"E«ˆ&ˆB˜:Öûfö>URºô!J/ÁL%‡ÌÂNÖv.ÛŒÇ9KYd-cwC¡BZÕí<ÎKÀ«°Ó±=UÑÍ²Ó·z‹ËÂÔ€±ayù¼Î©½p¥kf¾EvY‚© ßZÎZÖµ	åx÷×}ÉR;ÒW³ök­ƒ¾¡;©È²tpDR öÆ3aCÄ´ )4¼^E`ù:“˜´¿•nÌ)é¼¬-Î
+tÜ)ûïlês¯°Ý7€¾3ú¹bÞ§Nõlrg|Ï8ƒGñ&,eç6ü`àvCüvwæÀó„ž·ÙŸo1ÚÛÝÛÜ––p<ªú¹ˆN4&zÁHß™h“MÖ”!
+_b}4õörþ²?v0wm“
+ÇŒÕÕµÂÃåJ*n‹ctŠÕÀs±õØº+Y €«ˆnõøÆgãHX2Pÿ¼|Þx´{øC^Y¶˜Ñ¬ÑVFâÇ© ò·™	*OÕ¡&­Ûl*Í÷;^¨tl±w;^¤tÜ%âx‰yˆ²CJÃ|šÀÈ¡£•Vœ%>
+ûþø·Òœ5E³¯´äuß(>E‹•Ñ›p7¶çF¯tsÉ¤–=SÜ($=ÁEŠò„ò¦<{ò·t…ÖC¿£–Ý§U¯è
+UÙ ŸéVºËxà»s|
+îŸ/P*Øh%÷Rš…²j6…›
+Í!©jŽ{‰ƒFd(’Û,0½oËŸ,[	©æ©sË‘ž!2 UÜ9jV²Þø_¾òMÁ@¿|CYnŽöÂÍòèDoLÒ8ÈÅÚ™.¿.mDñã®w¤$w˜rË$É‹×ð\•£<ë)0SÆY ?riôå’º1!Xí{q'¯éÐ%Ò×:á”ÅS,‰H. ÀTªjÌRšÀÜ­u?àR–eo/W 4,Ð(r÷Ùvæ«Ý=\æhÝÛMî#6-‡Yä“AYLÂº*½ûNŠÝ‚:úç©±|Ì¼û¶DíJä½EœÀ”kòBº”˜ãzJî‘	ÜÔÞõ’r@¹U{ëaËñ>Ì5W™$ÔÏ#ÏUËö·uñÏlzíßf$Ö˜á ¾ïÕÝqìM¨ºÄõª®2q³Ö{Û	pQIð'~Z¤NjiDéóä$(­¹Y$a}÷4å•·B2è»úÍ{©*ˆvM!he‰èª›Ë­¡nôÃ¢Yår 1Ž5…äxMûE¸Ò¤Î?ªË)“HÈpÅ£¹ã3nÎ#P&Ó$Ô¢’³4´M`)?›Uw¾Û˜öH?è%xxõ|ZË»D˜¹•ð~pnQÖòØËÖJ­þøã7ß¬zWö„”Y·qç;6LÛíÕµx 2^Ÿ]€÷üóX›ÖIWãÁ¶	Ûul(Ïc©ÇÅ¨ÿ–9ÏD^­h¹é{šìnìî¥½¢/n/Ð‹Š“¹ìG˜åýFƒšÓ¤PZXaó,ÖÛ›qŽhm=Fu!×"š¤ãó™,XGËÅŠ^©œ£>ZÑ…oD‚²=dnP†`Ô Ÿô³®7/.ŠÏ´šç­Ø`w¢ÝÖ”ßöM¶kÑ$<dåXô|h²Eu$
+?âQÉHÚ›ôH@ È© DMpL.÷h#ŽÅ“…¢¡?qžš°ì¨s[Í\þŸAÝ÷"	yØæVL¢í=d@;u(N»HÇöíÈŠëqlE wÔLQ¤Ÿ
+Ë8ÛbZø{¿%_ÍÃî­h“ÂM£¶éƒëG#9ó\j*,÷ÊðéÉÏggïÏON~9:9ÿåÙÉé?[øÍ)U.‚ÜEá~–¥ì\2tL;k‰Õu¥
+6<~°vO–ÎßÇ›.B!v{Ä­ÄÛ¹)ûÓëï»››ÿö§.;™¦FBgg6­È5*–MúåM@&Üãž4¤µÐv}]ºè /HÚš(éo™~ó¦¸ü2ë6–Y\4ƒ5“†ÝªÍh—Úb}Ì˜ºÝ3WªÊ´4šÉúrÔ¥ë¶<ÍL|~F{ÑõémšO“Ã$£^‘¾æ;®ßTqH'_4iX¸Öª0ÍôãÏï³Í¦qÅÄ©oàôíQ÷þ1 r]Å`›ì¯Éíñd6RÝ/)	0^wãÅ>gåj"¸IÆBEthÐùÒìü$_ô!æÄr,[Tu¯Üz	ÖvØ=>jä9ˆ§ùZ,¿ið¦RjZZ–:ª;„‘SŸ0ùùÐaï'ËpÂÊ†98o¥CHÝÙd ¼clý.%®æ_¢ô§ø½qÿ6ô=›qk>4’w@ï¤
+ÌGœ3â$g8%¾ùR™Qf{ío·¤ [Rˆ7I™É3†G×Òæ³¹kéê³¦•yÈÓûÐX[=<ÁYÏ9Ir¯£ÿ8~v©œðEãpV¥-ÁrJ2ìzRY`Èsñ**¡y&¾-,ç•Ê³‘™±Òƒ×VîE…Û@½N$6Ù.ÓÂæ9ÎŠ&5)f#õ÷ø ýð®9«¢U'_Žž±¶ohò–{%<Y ÁMdC˜Ó‘¦:“ør,[ŽküÏ“\Ù©‹+®£—¶u¿žY{i[µŒ·Á7Êñž¬Î­4‘ÓRx¤,W.GÓwi—¦îÝ„®gÁgü£‡XúU­ÈS££V…ž„â)Ý²IˆÛ°Šo]§d:oÝ7pd^”µ•È$rp'T¸¢%±H;‹rÿQþ	°@ò-i4–†pqAÞ—þ–™z,îë1©¶¶ ²h[eR(¨W D¸þÜsœºQZ•Ï\ A[D£¼"nôBþT&Ì&?Í\Œ«ÁàÜ²YŠZ&…@X>¸BP_4j¿OZ’¹ÂÇ~‘OL}IñÍ¡—|[ÔlM@fŽ´&fQ_jºÉèœ}j»fMi6N±÷qÎ_j8Dâ8`grV×"b	ÀGP5Ðœ!úþ"€#ý¦vÖéØ—±	›QŽe|PÕÌ¤«q â¦Š²Ó¿T@„ÁXmY¶»äWáO]kôÕ†dolô›ñ°÷`”’ë}¥z¬æÛh;û… ¾ÊØÃ5B	»ùÝÞ÷vŠøµš._ÌˆÇz(qŠÎàaVV2Äðª;ÙÝQB;Ñ/>½i:z· ÎŠÓ?8ñw§”¨n´¥UÝ ©U8/pîŒa”fýa>AùˆgÑ#ÞµÔà•:ùrªî>M;ÐZÑaª¡ZödÖÿ2V‹ÒnAîâQî¿`¯bB<®»FêÛ©$À›dG&K%,a±Ü$¿F
+w]*b¶Á¹·àq‘µˆÕVfå4œ@Íuiaq=“ƒ…üi> U‘6Ñï.~âþÃ®?ðCÂÛí¹³™‡WMødŠšãÌ"3úÍC·2&·é î8ë[³‚¾óÊŠ™	è°)„ö¡ÕÒD‡‘º4Xj·»kËŒ¦›2 ä·ú€²ÉÏâO)%	pib³ífSQ(8§Â-†ŸÏÞ¼VáCý+W¾¨â	ÝšÑþ8@Û6v5¹rÃï‹ë(Îo=Ê•è@r+7èWdòd*z!¾OÉ¼‚”HÜÈ0‘b‘b8K £_zM*ñÓé¸ ¯ƒEbáE,Í¤äDBH§fv*¡s¶W•Ô|™Rù1àR´°6Àƒ¤XuôeïÑßV“9D ]èöìýñ¼ƒØIG°üíkŒª¼ž„º±p™xs6êÑn×s§–Tœ»çcÝmW—´ºôZ£ŸßŸq~±œJ{K>”èÔÂv
+××
+‰f£ûÈD4
+Î|Ÿn22:WÆÜÃ²,`…ë¡£„¡©~Â_‹yÌÙ’Hôõ´* L²	ŒuJE63|"k=AØ &”Œ ñ°ßHÍ:&q”n+*¬K±+€–ÌKd-¾X_˜
+SRHŸþÉVŸÔ3†6ëÙàûÝ¿àþ¬¥)euˆèšóJ¨Ò'7²fµ)ÐYÎŸh)ÔOäzƒÂ®Iì…-˜8^ä#˜F­C&OùçI«¾9UaêˆûèL†èÖ]ã¥
+džàvpÍÆ>¬ÝÒú®TN¹ü]ÐÄ"•B;§¸mÁê¸÷­3üO%lÉM(Íçþ°Oep´¢%%ryäîÒ_¼ˆ€G•Y,òŠ@íp5ªêiÙSHˆbâiÚˆ!ö¸5Y*SqµÁ5v÷A	š9s‰„–"$™ÒÁÜñuã…ð¼Œ:°líû€c2$É°{9a{SçÎh7 ÜcJ„q7ñ˜vb 6ºw¤ô`”êªq^×PsÚe›PKà&àø,KÑ½RHaöÃsuM©"´qQ…ÂôŽú¾ò@Ê\£ zs2 –Œ¶#$ºgãó(Ä…!›(z,ºˆ8Ð$G–´ŒÝ–{¼‚É¥ÒHÒø&2káQÁ¢„èb 8Ñ‚ù;ÊÙóOÔaåP´Ç¢}°Ú*­uâ:—UÕ1{|¬éÞOìr‚xÄ›f—û†5þL|EP´G¢ZµÍ’Âs6ž½»À„è-ªPh$.ýmÝH†ˆb~XXìN¨{[ßT$¸ü„Çev,fwöëv«Ž•+·‹§Õž~r¤¬žrÃ¡_ä~‚Pœˆj7÷èƒžAë³²‹v:ç­)¥2+Ø†%qÐµ ×5WK^CÔz¤>C¾}òb§}qøhCÝöljÑ: "rk¨#0¸Ødø;n?äŽrdÐ_qˆ9çQj|kbÊŒO?¹ýÝ©nšøTf(vÓÓN£Z¢@	¤¿}©màÚ_ÅºÆn>nºO8C?R•§Ð]TûßwÈ°@ðÚhÚæ`Ú¸Mòë¹_Xræ‹·EH[Î%uÝ¼wÎ?«(µÝ–y˜€?Û ¿x‹Ù(í~Ñ{p	mþžÙ|§ °¾*´›æ„b¤ËÑr móïÆÅ$_Ð•”å¨PÌ6³Õ·Uöæ5*ÕnB¼…nõÈç0Íü3-ƒƒOå#uõØtmº¥È<BÎÑ½åp	YB£ê¦±–và”yâ=Ê±]<þ–PãÀ¥M¦ˆp/Þ»ÔÞ!cja=ìûV§Ó!Ñ8ˆû -¤“Ð…Cç{n³ïò2]wø²R˜l:‡IR~3™ŒÑÝ'Ô/&È£_×oŸª«ƒ0Áœ!Vy6Fù§ÊßeÕg¡¡;WøIû¤ÐÏ§º žUA™âù~Hjå0Å¼·á‚sñR‘Ë©ËéL:3ðb®¥Oç"îãÈ•O3ê×[t<Úoe*X]©ßº3´\ÎÆWì§ÔA¹Åå<	ÒÕIZG.ÈšDÅò5vsËp|'¥c¸(üøø}ðaÌ4¼Í•ë@P•€*ªì3FÌECÔ´5ý³Ñ=°L<bÖ­«¬»‰nšÙ¼Ûþ&Ò‡àïSk–ì§Æf;­s±ÿ£,q4[îVÍÛbÚçŸð!6`¼Laío];õÇøæ…bEÜ!'¨É.?Á÷^>oÿàìÐ‡²ÿº¬Y[Kë~‰ÏýÈeÒ²öl8Ì…Â6A
+11‡Š¾.‰s‚ïúåGy{ã4îÓåRŒ¶†RÙ¹ß¬ô³Ð^¥x†¡ïz„ÕYmÿÝïW“â*¥”ëÓ‹WéªôdˆÉ¢–éƒÖ<G©èã;Õ/néƒ nß`×ÝÓ§n}œåWb˜=µ(0RTî»m6òÙ¥'|e‚çÔÎºb¸’Q¶³…¾Öm£Sã$üÏym®´¦‹+½R«!‡(<|€àt¸ ½¥e=\ŒÐ—¼V**æ¦®íÝÒBAðµ#hÏmît×¢—e91ƒ´Tf/%©Ñ8>@émGom K8"'Ù¤ü¨ç¾¢Tgú{+.@þ`6zmt%BÂfèÌ†YY!-]4¨ºýzWLjMžœ±i%­ayÑÕïøW©Eo:B«û€ï³fQ«ß(ie§d”Ù
+Ÿ4R€ZÆÏicã$e£ð÷×ð¤¢A ï6“üÊÍéE9¸]ÞÃÑu“—*µ#RÁ—’*ö]¨‚OŒdXcÄ±Öœ!“\˜È:Æ¢ÚVÂ(#‘þ…sæËÿ=+ø‘Z‘4D™Í×™^CcÛk/?@î’¤ÄÓRâPÕõ0&|mƒi‹‘énn¸3ÜmiÐT7EÖ“V0°ÊÖ³µ³¹™^ÆÍ#¿O-4É›‹ÜÎCì¸‘G[×¹ßÉÆEªG\‰’œ2Ž¾¯r@3é/€.ãÁËŸÂ×x#Ù¸ºÂ1Á;;ñk\JÏü÷$:ŽçL¤o§^EFGèÂúl÷!½fT÷ÖÒQýIë¿·ÁâÖc`ã)Ó˜\$¢M.úN‰¾õI+í_×‘ZÛ¹ë5*qEKk0-eø­àPŠVR%°pí©Õ~*&h	[íç/Öú"Âô%™:ÒLömxdïKiæÎ®^AÍ›\¥/«mèÊ<O<­4ñ*­Ÿ0ûÙšã¾å"[Ñ,NUÑ!\|l¢RX'*
+N4Áâ÷¿¯:?±Ü‘D„J]EÁEY`'‡XHò(*×íäõ8r“Ãöë¼wh£ž¡:ñýÍ¡·‡{.ªl
+Á‚ó6éYß¿‹1µ	Èx™ÌÈýÜEm¤ÛÉ:ƒq‰»[hlL1(ÚEso-÷öHÉù³Y&Ë)G'@ß*ˆC Á¦»6-¥µ ‡´CõìÈW Ó$“NýÐyï Ã|ÀÌ¹‹Žà?Å`ùm.¶I¯ºqx€\)6r=;½QÑ*âª%¶³†l|w6uîŠ³jXBýüÕqlùþ®c±yøÿåû¤\œIeK^è¯ºþ£Þ»ÓbšÇ7üÓ”­¿¡³Í'ë§âžlìJ}­õùÑ©ûEóT‰Ž-»„Ož={ùæ(Þ}à¨~¬rä@Ì&€Gq¸"€u†êÝ¸=?}©±¬éÜêW)qE!+7z¯0ÆÜmm‘3!Žuìè«JUÊ½Tn°«ÅUÖr§¸û§µfi…*å”«Y·v¼;«Ü@ÚÌEµïbÇvÞæEdÞÊë^[õAs•ò$mÚnP‹šòlVºÓ57nœ‹"àÇË ‰­=#žm‚}Meß`ð’–ZÓË…W§SÅ£j«“*wßfí¶´PÜ˜±Œwª(z¸ïÓq\£¼$ÞW}¦Öžñ¡P|…_+fÉÉ#tâ©Þºó®ÙY¼k@8ýÕ/e1%™E‘­þ–Ÿÿã=xÏ¿:uf•¨þt~zÄ_ý#w›*þXÒÈ™ô·Gº½?þ¿[°¾4ÔÙñèR“hÅèüÃé×ÉS.ãélnÿ‰§ó%“¾ïœÆ~I=žTå”©WgïQÎG^Ý"Q;÷,¸‡(÷wsH¥ïþjËdl’JméCwSKkÍdÈº”¹Ò$©u™€@Ò¡e¯y‘Ky²Úí§b„äÌ4N–±ç¹-=ÏýBªrÌ>±z9á¥¿?Ò#5»OÅh´:­u÷ÕZeKÍ„ÁÏ­é´õlJ¬RRùrcn%¬GéíºˆîZ	­O˜YÀxØæCno6s¶_HÙúÛŒ!K,ju\PÜ_üb§ý†ž²é‹ëìOI1º†79l˜–¶úLÜ‹§  þ“÷üì@þâ™]?õNý3í»=ÁP R(s	àz¹§9˜{šÅƒYG£íãxpþþõš»˜6÷ùòJ<ÒBïŠßó’õ[ÁØ±’I&Òû=)L¬BÐÒ|0L‰5ˆN§Xs;ì&¤Ä¬ƒÇÚ³ÝÃf.¥¹ü•äº„)»PåVæF¿ßŸ2¢"¡b<ù”ßÁ,á
+4óñÀÿ´ùÁrwn%èzµ_yõŠ/¯‘ç³Á|4÷«‹«óç?­=ÖúÖE®j!wŽÝÂMé/åïO£Å£Ò…uA%ùrÀc­.fý*®X½o< á ‚nvî¨æ9U.ŠþšÂºÑÂ+îVƒ*©õ&Á·þ@S,«ŽtwÂï¢^t%=wFXÄ‰Ý,u)ß#ÀXç’@”¾¾–‚Á(tu»Q	êƒ4q :<‡¸z*$:‘Ä˜®º]r-U_kÎÇ:6gÅÄSþŠúR›b.¨žëçk=Ø?ÃQ½$…Ž£¥H(z=¢ÀQNóï.&?¸ÕV»13FÇRþf©Å½½ÐÌbWðSyþËÛµ¥®žêé)š¤¾p`U9w\tæŽ	±EîOvà#=QŠz[ù&&·,[¬ ´²w§ëVƒg9!†Üëf›_qç¢÷†‹îu?òs»ñÁBÕCì!§ÐG–±K9n§¦Š™¡KUgáÊbIÏ·ñ'%=Ê‰IÉ”rNmw¥6Ð>Æ_0–@YÔz©÷<*Ç3Ù%kä±ï8ÅóÇüYXxÄ˜fiÃ_y=·%ÑógKñµó7gnèøÝ`zþú¬A`ÜŽy"_Í®œoJ×‹àÁÉô³Û‚$…[RÐÊUÏ••j©Fíu	s¶íŽ¡ëQöïåäã Žåw¿?þý""µñsóZý3;Ø:ÜÚéfÿ¥¤Q!¬ºæoæéoØ„ôÆw|Y{s/K&ªÓÙ°ÕL@E½	êòZh[©{Qj¼B¸èãÊ”R£·x°’—Ùx—)îìÕ W=ù`¢$«Š†U1î™x¥Þ5rï4ÝÐéÀM»¬¥zp~zÜð,bLõ ÕþâK4õŠe`Ý"M[83ò±¸•3@kS'Ó¾»Rû4t·§]$™gÛÑ…Iù`®ÿ}}¾ÿ’oDµw Q§‚O¶*çÌÅmösJýu¯!n5^ˆâ~ÂýhäÎ76›¬BÊ¢‚¨'^À[Ý]dj—¸{·qw²j‡Û& ¸(ºõU®A¨å'óÇ¯åH¨ýÖ7~pÓÎíƒ«Æ>°?Ã]”€ç‘<Ü9½:’1ˆ’’.úp!o£…JÙœZ'PtÖü*Möðóõ„ð1išZ€—Ò)P´Ö²üAùb>ºe·‘ÛÜæ¢¢§[œa…þyLkå$óAzÒÛ&#þmË½Vçø–uKL“8½:Þj›˜óýÃ$eÆ›¬Àv7Q,D‘pÅ^çãñmç±îŸ¶¾‰ïJÕñ²ÅjsHÀ!“sÜO€H|o/~9Õ;ÏMSõä¸¯tvêÀOT5HñÃù<•ëCR;S­ÏÝÃ¹4vx® ,yíÐôjÚÆNqU\[3€%xl[bvžÐ_æíâ…~ðtfŽ‹X%ÊÝ
+Öz„§'_øQ˜Ÿ)Ú/Àêù‘¾¶¼qGñ©åvnCFô´²ð	HOZ/¥XÜ‰pƒ-¡‘Çs’¸ˆÄüm—â”}På"²Ó£_¹3pÒv«„ßt+#†Ø —”^êóÒµÒä¸»˜Ýƒl™ltw?¡y‰¨¶W¥Š¤Ä(ŽââëŽ[{;ûX¬©ÃÝSõ2NU c¹‰dÑ‰ixµáóiu®Û¥%¥Táz„­ˆÝa3 ýž»elú'LÀ{Lê'‘œi®$ßõát­å~®„ÂŽ-TèOª1Ä DËÑý’Oáyï!ükŽ\psbSGôËž¨ÊD¼P
+Ä¬…u¥Õ“VL1”Okª‰‹%4G8Îƒ.V O ;*¯´q”Ð(E¦“õ_:§@I‰_ØgqKÕ[E…žÂëäž¸‘ZzödÀ …æœr¨»j-E0]´ÔËEÃ’‹RÛŠÀí¸ß¿W£ÿ=+Pÿ«ó¸w¶!ŒekGç!ð0¤½P¢MßäWˆ¿T ¹ŠxÒé¡s"
+ è<¼À“%âAüZ¯Ãx¶ã¡b¸÷ÄI^“_ÞW«#BŽÿc<©%_ùÛŠnG5aÂ¶ƒA¹S>Eí¸›ì€]ÞöÇ2«×†bOŠª°ø©…qÔV3ydfÝ¥AŽ(T$EÊ ÀO í}IòVdõëüÁ¶‰ÍçT[Ä	Ä¡ÄÙÇ’kfëK	Ñ ¶…:Ó¡Uê2_“¶­Ð£ åêë˜-k"åÞ wrÛþÁùí†ùçr82ãð²Cæ£R~Eþ‰ÞXáŽì[ÉÌ…@SÀ‘ `ûô5C½œ•'M²Âîèwï7ýî?õˆe*Å—Ò–9!–³k|±âRd#j+P×µ•4S^ð´»wðXk\u2Vú%ÓÂì=×Þ"åñ&bÈÀCï'Nã{òHê®ñ­ÇÞ?p«V²¹Lî:_©³Rëg]‰SäÌìSRp<yÉü®×=1)rùÎ¯«yhfÇ§Êj§Î£²Ì3Q	·A§h5ÝŸòI½–NÌòˆÇn*y81´ø#Ò‘¶&6ä¯æ‰Xúz´!¹6òAêN¾4¬:32Ã÷ìFŒb¬@?{¼]½®]î?ˆ¼Œï{?¹]Ã”Ò˜_„º=LkrŸÌêvd®Å’êÚíGäƒÇëÆÒ„šdoR^žÌN®Þ;r¯eÃm³GÂ¡’¿[µÛš¬pw|GÅq:»øíýÄ
+½+0‡à)1tÓ‹ÍUúÓmA£†\†YöÖáˆœ+#Ô´ìß¶gcõÐ~	MÔÂŠf½Z"D~9B­[_Á_ô[˜¼ÝXê|<7ýTñ"âü¤ì'uª'8?'ð / ‹ãSªdÑ•®¼;žF{iåY_¼K€,Ø×úžÕô/”/ítÑJúg:ÿ¸€²ì^é&{Eô´ÄÂ°‡¢¡”VP:°Ž$‘zã9/Y+CÚJ¨(¡€u±4y£§Ø}¥‰D†yMæqQ5e!ú O™Ni·ÜóªF'þöáøePùÈ<(¦R#i|€Í¤ó­=À­©«°¨IëfÞ“R	AÃCƒ“-Ø‘~Ç%Þ¸‹KzQZß¶ã7,QQ-µBw›¨K[ß–©ËºÉ97*¦ã‹aóŒÚ]j%î$+1â™”Da‚¾'`ðÜŠºPãµZ¦6vØ)®Ù#: ü¹£­¬gašŸ¤Þ¯az"})¯ÅÏzç2×nª§¹E>At¼sÆx¨N+'­íÙm™·¯O•äŠ1b¸²eþÃ:dï¿†ïÙuÔÆDh:$jgš!nÙh"IyßÝ»ÔÕ:$îÒê®«žU¡ÞµÆz;)ÄL3/Çzê|nAõ«yúÏï\Ð6ú¡ãþùnƒÿ‰'Ez,ŸOP…Qä²¼å`LÎíx*œ¢‡•¨Òæjé¼aÝŠù¾‹ÛÄÜ(>H=^²‚,ƒ×ù°AÅ<Êëémö×|8þV5¤_];Š@_[¿dòå£‘3S.àuþ6q(Ø:n­¹‘Ÿ¾Â€Ýj¿BGÜÐFT÷Û­ìžœÞ‘
+s)ž§`±£VŒ·Ò(J&¬ð‚NýÎ³pW¯dJA%š8…ÔRQ‰¥œçƒ#J"xYß-v"œ$è¬þÙ
+eÚÖ¿Bÿ.DÏÍ-$DKBÌQ[º·P
+²Ð ¨0(ÛáEÒ£ñ×ý-ÈiDef!¼ñ^Pc>àXÜñÜÃ[7=Î>Î¦íQ{Œô—›T·qÝ0íŒœcnO×šùH+\éu­ù%‰ü„ûÁÏ`ªu
+¿áqè¶ÈSÂð‘<¸,$¨{ìy\=ÕßUO¼övò0Ÿ¬egyý1ûËÁÎþÎáºT÷º›û
+0a˜Ä˜¡$E¶=Ö È?±µ¯ÎEþ‘¸ãŒáGÍù_Î’ö¿tWûËÁÖÖööáÓ¹À$_U¦V`sÕ_‘D½ó3ËIÏy¯Sà.ÿò¥[>sžË¨9`’Ù•nžCûÒË]³ºÝÝZÏþ²»»»u°k›WºÖø(£§²Xòû–¬!™î¾›öðD'$µB?ÅƒOO7ˆl6v(ÕÊÔí&^²¡•‘Èe+£ïTÔaþÉ…;,Î(¸«!-£mÐ\ÏOŸºS\’Åï=³·;&µ—²g88~xuõ+}\è&Å†ÁDŠÁ’7¿Xui  ]ýÍËÄ:Ùûbr}›'dƒ&ìçð]±žlJr¹€zšÓ!u’O#Ž;z&Æz‡·'Ö:
+#p!B{4¨å5Y-q%„+Œr*ñá7“ïŽžÍb ÛÓìß+€³ÕÕù¿Ÿ¬-ué”€Y,Ø_º[]çþr«Ì“x#Í“]Öæ|à´î=‰aƒ¿vH›+žCë”žÂ£·®·O‚z4`£(;\î½¤‰±—ù¹žÚÞ¤{Ê(ó;Ð$AZÙfÒíâ—ò~ì\*e‚-Yb%—£Ë
+G[þÁ¥vËð‹7÷Zß_o×Å—ï¯_HFñÏûêÊ¿’	òLC(-Zw[~÷Q;‡É8Ò…©:lüOB!:?­ÊÆ'lÛÿƒÞ¿"]óm ô²²ÍóG•lxó«wÄHÆsu?½^?qqÈˆäA÷póiÖz‘$-úU!	‡|p“ßÖ …ÃYª¢äí«úç“‚ìk­¯¿Îr!	#Étç[<eñ¨ÂóI¬ÐGdd8ÑEm“}lì
+wLû*±H)|ˆ¡‘óÕl¢ÚYdöŒ“õxið…Æy÷$™²çÊ;ßvÒØU0Tq¯Î‡ùÔ4·ÝÑÕ‚8R¬?Ì– ¬ì¦´5JDé‚ÜyTOS¶_k¤rB5#‡;„èŒÕ«(SWÇ|¨4TÖ6ÆÏ¾Tµt'm¼/:ÎÇI6Dr›äŒ¥v—bî´ÐH'èóxP1ãë–eÙf¡PÀÓî#R¹(¼«·×<ÓH-G¿½FgÒÃÞqÒ7ay0!µ¢Æ†òºˆ™¦,;Ž¥0ÀøšÛÝxt*˜ì‡’B_á1æ¯O]AðÙ/VßSd;”BZ±oÚÖL›‘É=E@À±O¡b£i”%¥™Žæ¢/¡mïŒª[Ë3ÑÞiÍ &5™T7­uDpsH‡È‡÷-fŠðQEa€½NšøŒ¯Ü7Å?‡xê4µÌïõ„)þŸL“ìQYáÆ]ñ}7ymØÐà#W°Ô¹ôð²z¯M$OYOŒ©!#¨‰’J©%íŸçDåÇÒñ@»›éb|€ƒ¸³™†‹ô¾·Ù°ˆòÈRðô'ˆœKæ 0GLŒJ³	UÁFb|oµÊ*„¾’GÒGÒ³QUÈX(£7D–’´d²ã‘¤ª”ŒÞÒäb9Êût‡GS	æã=KZfà	;rÏ¤ë¡ÁéÃzçùa{rh#V†{aK1Fy;t˜œNñˆ[Ò™µ˜²kY"ÍùT~|sUØ;ÓuUUª¹ßC•úXÐç²Ž0w>œf¨Ž‘Îr£I½‡Ó±[F™F¥‚°ˆxC³sÄž+’ ¿ZÿäM&›;†ø»9ë}tÊTÙbŸÕŒ©‘Û"6 Õ S(ÉõÖg†×¤øìq1IàgU¿BÝNÕ\˜J(³åÔ †!%tÔwÀ#™‰exˆž^7Ð{™@m<­)ðoïEžŽVY¹Ïú‚ÅŽ¯=“J!¢[\öÌ™7ÏË»[üHHNÚ2&CFˆ”ÜÙµ,iä_É;,&WÅ£=ìnÃùoˆ,u·¡êõ¾Sð&¿ò\¬¢Kç@Õ¾Ã_I£€ßNSOÏºœÕ?ÚÐ›rà PÜÙ<N3g&49).[tmÖ%™$²ó^ [yÒÐCœ ü/ÃÙx7¶À!(Nx÷~ö7L‡=º (¼Šÿ¶ìAÄv+¹3\’ÌŸ¬+!··ÚÇÓ¼fÕàà §Íê‹šÛ©Ëf¾»µ%¸õz/~Y™ÕÈ ®öéÑ‹'G²."™Q¹ƒq|É×¤ Ö´OÂ…^·Á½²J¹ÄÓZìò*$"z³éˆxMË{°´Ûä#Ôéè °Ä¼K¦$7€C¢Zdg†I}áü‰ìîà 0b1^„æI’e˜KfŸ2T¤å€Ùi4”$Ÿ‡;R}*ûšÞ&Bîuáúv–œ¦'Þ/HåM|±¿éñqnEÎq“.é(_‹ËØ²µ2á˜AÜ)’ù¿J¾ñ*‘ªþ§˜š¨<A\iíÙS7÷$nÐ‚Äææá6Þ²5Úíö†I–P‡•ó¹àJ¶"šÕGUn2…f0MTñ<ž TÖi±.|§
+‹vS¤”Ñ ‘:%³Þúq¯d†w!¦ÆE™lJ«§“)¸ìU—•pkõÀ§:©Ð2þ¶¸á’Y]C'üWOìÑ¾×¯?1¶?{þu<è:ríÛ´Ä²(ˆ5Sö)³-‹ÕÐ#œˆÏ(HâvzT@èàÐMW–¥MÐ9¾àiû³r´£æàÖ=°ãíßZf¯6Û›»ËúÛ©?ïv2M´”ãüvnÒõv²,âÛ¶òÎC¶òVBSöGt?{yôËy÷|Çý‡ÅSÌ[l&ëÙIçÀòï-K@8‡À:Hò±¤á¤RQ]Q¯®¢ÛØ¡„C˜äýâå$¿ª´-†ZXCéx0€x}pÃ ž%bì6íXè$³sG+«RyÂ,}‹vcgQyîÖãjÄa}|#á7íu˜ŠM›y;<=±ÊleÃ
+œ^OªÙÕ5WíîzV|¦€gP/ßªp˜ùÏCcØ âæ¯«9'íacTŸ¡´ßn1ZãnËm{ÖÃì¢šBô¼“=]}ºš¾Ì;v¦x=¾voqs
+3€N„$u°æ“qÙCÝÎ¤"Üd6¯•˜¡‹É…µ	¿»77R¶¢@%%O
+³uð±–õ&·Ä›|uÐýïYi‚-väÝˆÔ†4.…~§á‰j¿Y“µ\óqä¶}~*9rÝ%Gß·d¾[Ò¶¤kÃYŒ+ÉÉ¡îü>ÚÉ>Õ¯8•Éù?fÈ"pàÒ†ÌÆ ¨É?4d‘KÞ«Ï_ü_LÉâ?:%ùð}ø¬pbi¶#ý`w¸MµEŽ:ÓÜÓÝŠ–\‰>ÕöÁÁîag«•­þ¸¯¨U™vA¸ âºBÿÅÄ‹Si‡¸Ñ"
+­:ž¾v>«Of[ÊÙ4­5»á›(ºùÖÖÖ\¤è½îCj¹“z‘,Ànwv­:à†,¥CÈâçNê–4»â7dÆžüßßÿ?‚34&Ü pÁ†û0£Gÿqü*S-ðJïü‚[g§>ÉÓœt®ÊK£‰Ê'UÙO2HK©øiŒ¡ÂQ¤:hÓN†9IÙ D÷)!©®£¥ÜIÞüÏïÍ´ˆïQ!%áÊhª@øŒsH;ö§Ú7bÞéâ!aœÐ™óÒ¼âO©ª‚/~~öö§£§Ùû
+	Tiîx¥1zAc¢*î$JFRždU:pöŒy6O á/çè×§¼%ñOCOá¡yºy¾$óG’n)gS^@¸|TNo_ÀÑ]MK'1‹AT]®¿ÈŸ{ai®s)…ó÷ëó³_×ÖãÇuÿ4
+ÑÈ¶ù—j$JrÜÂÖÅ@Þ,L±*²ÌFûKØFg——¨)#¥ Nméé¿¿=uV7õ®;æŒgƒœº:¶sCï¾Rµ…ˆ)yÑóßˆ:38§”¯éå»gÿùþˆ¿Ñ 1kýµ%O³Û5™ª$K‰C×ö²Í‘T-¿¼Du?xÃôºŠõÉ‰kµòU9ÂÖÀ—Ù'ÎgV£íV¿Ùî¥‰ÐÇy8ñ“ßh"5$ãÕ™p°Ö>dÊÇ»ùîÿ™õªŸw˜Üæ‰JßÂïÑ\†*ÚjíA’e“Fe«¥‘N1=—ô¼blœÏ¾rÜ_¡àZ|¯g¯Ï¢ß…€{s¹€¿kðUƒ¬Û3é|¾‘R&ÞÔè­=Ò7ù­j´Øli5ŒÜ·²Ý\eEsCM ¨b^g˜´‚¾‰oÖî}L'Îssûž2Ãô9—÷ºqKXr¦¿¾oÑãoýðÝFþƒ`4ÈŽdIä¢’¢	ýD†ÙêÉ«£ì/»{›;[Û©
+7Mª(Ð"ÝK½luå»W2äÏ²² ¯È—~r&p˜#PjÓþ¹ÕÞètód¤‰æc&Sð«ÀPtÜR¸u[u’4êåì¸I)"^I%ÇB<xØÿOoÿºÝÈ‘l	ƒ¿UO‚ÔE@M‚w2É’t*/L‰Uya'3¥ªViq@ŒJ ƒ Èd­Yó¶ó
+ó{Üö6óK Lñ’ç«Õ}”$ws»lÛ["´j:ZdáP~i©{…»Ê©záV»@Ï’2–@ÝÉ×Î4Ç2C°Ué^›äÉëÝ:xÔëq4€ÒàÛM­Cð˜AÁìeí¢¤@Æ=^
+²¾ƒûv§›ýíäè§¤2¸¿˜\äÙ§W¬éÝ¶gdË„¯ÁÅA>¾}_zçÖüó¦˜<{Íëý3lúáŠŸFÚ'hŸlp)GÁá­W\4)«r}Z@¨%©x	ÉYÂ/ò3íôÍ¿Á‹úÆr’¸Ì×TDºû}û²T÷âE^‡b|	D¸”ZPóÀÒÀ­|_—7yñ m*ƒ`´ßìïîolÄ²^|Œ[Ny)f¼€öbþ d‚©õ	
+£ÎB°o6÷hçU/‡ë‰s$Ï·'ÔKÑX÷7¶÷÷8ÖSMO¢—ñÊ¢R”¶°×K/‹v—%ËæWTÝ<‘YêW=c¢ôþ­x›Ýú®µBr)ïóÊ­Ñ¨"µd‚¸s`úœÓWÊ€JyR/ %e8üjg×ûàV]3+ÃP6ØÛÞ9è${ú@“»[ŸäFeÔGÁôFyÇyP
+¢\S¥‚BŠ¡p_ÓÀÔk…aß–	Éñµ~ÙH¥STD¨ÞN
+4Ca¸î9EÊÍ³v5cÑ8Ku’¬WÂ«^}>×¦ŠK(ß
+uÜôfRD¬±4¿–`ë!€ìÝ ;¤ÉÙ×/vÝ"ÇG*Ý.è±²_Î}Í‘.!!Ö²¼<Ø8‰m¨Î‰d"‘Pt}+Á‹Ks¢~5öw-7šÁ–Á€%bj÷ïö×iÞ)8KÑ(§§Y%§B)ã“G[Û½UÜXêy'²UÓª{ÿØ÷X÷+#’!éÃ	Ò’iWŒ…›' &•† [¿,_‰o·øP-÷T¾L“bò$x¥(¶êÊí¡VÖ>>¢7,Ý,ayY”J›Ì÷ëîÿ¸Cð4’Æóy64 66Ç/úÉ#,ÀF
+YÊUOkÒ˜Ó?˜y(éÁP§¦›‚½tÔðE6špÓ1¾ûÕª×ÆskÒ‚BƒUGÞÎ œ¶ß—£ê/gÿ@“”œn.Ý:ŸB‰¬ø&Ü
+‡#ÃÂªªøG×ùrªluhYg5CV:Îºµ$‡AM„ð€iÀ˜Ð•f”jLÿ[z*ÚQ5µu¤ë:¿ÊÙk@ïÄÀ2­»?°JrØ’¥3¡¢ô*¸Šµ~ˆ—úŽ;Xœ(mW¶"®d‹%{.${òI®Œ+C²åRéÎ®`î§N¤
+¨).Ú5Î@g§½w¼§‚ =
+BÂ,EÄ»LÓú–«0Æò¶^…™Œx0öG©ç5=àèâŠh_Î‚¡ÁÆùØ’é1¤ˆfuòÍŠÝ¶n†,žÊ{Æìðšcv„ŸñT
+7öé^á¯X==Êêp¾æ|äc­oþaqÙˆùØÜZv‡F)‡ºxä¾Gÿ—8–Ú21¨%®œäÍ O–¦£«áÚQ.
+Üìì*_îq¶â•øA<ˆqÉs8?Û“Ã>²tV3!÷½’ºàÌg|†•Ä•¬Gû\LLÐ@.ŽBÅÔwXsqSÛÌJÅ§ÄÛ‹'íŽÎÏFÚlø¤ÎßZå7½bkme>öõCï'_SðµñÀY»Éˆ°¼C*;ì¬.4M.€ù…0U†ò¼šÜL*Í°B²øÑï%t³™(ø†;›VA°ˆ`‰ÊÔ=!VÃ}X)Z…h¼Ž“ÒyxÅÚ«yßysÌ¾ŸÈÿJÉ2¯Š kÑ³ÆãžFŽñ‡('ûéLG¼|´²ž`3MsÇ—<hý›UÍ'†ýø²ÝGÌªŠò,dKÜ™€Ø6žgÈÖ Hž€ %yˆ-lÕÑñƒ.Šø–‡Ósa©©@È{(G–ß¡gˆØÏ` ÏH‡ùÃYkPÍêÖÃ†³\5p±³”&|MŽ¯øÜáWo÷sá²¹¥—Q»=‰_4+mºÉê'Æ3£P ¥ˆfÇ×.K„†Ú¡žÎÇƒZå!@Ò-Õ‹)‰rY/˜=ž²qÂèL®Þ‹bFÈ™!ÐÇµòÏj;i²ªwïüúvs×‚vM G"°·ðNš;Ø•/ý"åØËbù*ê¸éÆó>¿q·ÛejØkÔÂ\ZóæPÙã¥*Ñp`š”5ŠWdàiìé,ŸÎLj†!pî	Ž1&\{
+(ðÒ^¢&¸7w\d~Šwî<Å¦a¯µøØ:(-Ã‚#øO ÿ1[Ø+.s©M±f[–QkfIÿïˆo÷dƒ:¶SkJÃMB«ƒ»¬Tþ*÷¤õÌôöÄíWPuú7ã	ëç¾ÜžÕø£?6?Ø
+™üä“–ÜÐÊ©1ÆëÙ"ÙüºôTekÅ~‘áj.´i³]Â‹3ÞNø¬Å­XB;µ,„Ñ§?óib*ƒ6¨žÎCÚTyçÃš‹HLòâCÖmèlÅì2:›ejÒ%&ìá&g[v3[~hm´b5/ãó\%y»óÐÜl‚8òh²bºj[Z’A0'F´]U“úëjZúˆ:Flˆ$Yª*G§ît…­LèÃIìàðj¾,ÞPEb3›ÑJùV(ÐŸö©#ýðÂzîR.!o)ëÿ‚A ¡ÕÎÀG£óõLyÝÙÇç»ñ,;˜÷£`ø[AÒ¥!!•¦Ìú•øéèÒýfH1oî
+à|:ÎŠ¾ûãò¾ÐÌÝ—zÍÀÅC=¢¾{B}£w÷	Ó®_ØÌRñûŠÿÔ7"!Oôaásðâ²v/ãJƒæêHØõÜ"Q7(ç®úÕZ™æVCÙ@«ÚØH«SFßRv
+SB˜åînÁ£¹ÃR{q¾zÕn¯B+˜3Ý³8M¬K’B˜¡b¾‰‰ç±ô•i¦M‹ó`}ésvÓ¢h¾eúZ(¶bàå¹˜é|Zø
+Þ¼|nUCò±Lç|b3³Í¬Ê.\(š”6[Î	J¤kÃ¶·—ú5_ª”Ù’²Òj`wCö(G= ¼NH;Š/A¼6áöûS£[~;VRŸäþ]„WÜ.Be¥NÖÃÍÄFúÎ±l'L((¬¨†*ŒHdìb^(LùPéÊ½¯Õm^Þ7üªfó70½kÆoº%ofºauÔü,é¹“
+ÄË*0þÙØˆßÍÕy’rSÞB´šý<[pp9?ûùƒûUSY´‡æµ$h¸—	>oÞÁ¿ ð7ÒRe“4yÞÎ—Y*ö”6Î„Že¹[%ŒÐòµö„"Gå0­ºù÷¤ï„Ð® ê¦ŠŒã¬÷dõ{ß09Vò®C±O)UQ.¦Ïv-–ÀÀ8°íÇç,±*c2
+Ö`ƒ]h­<86U#s31r7"6žVÜ7Òoù Q1Þ ÅÅÅgåÄý¿•ºQ]¼uÄÔJ€‘¢Š5Û®.4%IW¿Œ2›øîTÉµ‘¤r%…p\ìYsÌÈØãb¾¡ÿFÈ®.+•jnþ*›†°!-…®9 j¼ßššµwÅÚ¿Kp8ÆÉ×ø>9¤p^ÅœÍ²YÎ/ú—]Q±¸ô—Æž’žÿøˆ)Çg7Ç²5éDvbD<¡œ%Ôn‚Ñ¨ûùïs§»¿€ìh®W©…i
+S6÷Ø•’š¸C4´f"W•Ba`(-«„™-'5£‰Ü.¾‚'n8¬•ÿš­çÑoÊ¨Ë¾uB³Š¤æ„""T=·½Æê×*¹ð`p"gc»£J/æRq¦}g»&ÅV2N]¯Ì1ñVrÈwÉCrz¸#¿=ÙØÞÜÚú=^qOç5ìdbS0bÉòñÙOÏà­–£b]lúz­õzÛã"…îý…ƒîFë¥ôWþ&t~lµü½•¢úä/ø©È˜ 	uzíÝü>ÏœWtþC·±ÁÚ/3÷[-Gt`ôŒÒa›ôùüy¨rä^Þ”Üä1‚‡E#œÌ	ìŽêaÂÉð )O;.ëFãõáå€Ó–í§žà±ˆ>ç³ðU)IYRm¨˜üùÐ’!ù˜3"´‚ÄÜj	1SI.àÉäÅÝ†£8†Htáå©/¦ùäv$ìðfÆèL<»V`’ÁŸ¦UãbßTôÆs©z¿`i‹2-óÙ§Øw›dßªñŒÿíw™Åo^Ûoˆ	H‘ AŸ ô»(üº©VÖ“„¾CR!;4fdÃV}~á®7¾¯¸½pžtâè@«._Å¬–ñÃ‰°ˆSŒ<dê^Ýé|,:¸‘£³áà<ÓÐ®?ÍëKˆç©«,¬êe ñV3Â|¼«?´ õ$Váb_6‡ûË¦§éDÓÅÒÄƒé	øæºF`fæcé.T)qÞ·îì¨2í¹D™ö—·ïtEfù^ÌajâÉÂ®Ð0™y[Ý3©Ë¬èÔÃ…†ˆ“Š"a“áÙÉ+¡ßkð½«¿ì>7Í/æp¥'³³“÷äqîø4±Ðy‘Àßhþ¶œûñ:ŒúßTTs„ÏÜ©-øÌ ªžoãnóž¥˜'VáCOl¤,h¸1#E«¦1ÖÞHý}7’£z’*-˜*‰¬ÜKÝØZ¡2xIª77ø¥öŸ¾ðf UŠ^¦Ü Îœ¸Ê@ªH)}¿±ÛŒÃV=+&!X¼*Â™í*ÒƒÅLUÛeÿªDÛÀR•‚f¢t}ý”äñxP^”W…u u¢±ygdÛ“;nšsÁ“¶ÇÃ³7¯:¹“
+w¾A{¤ÕÂ×;&­87Ò	dÉ-‰H7Ó°‹ÆHì©±Q”áD2£S’ê†T"‘×EP¶ì<¸DæÕè4ÙÏAjóÄBÙ ºqøÝ]Py6çE£”Ü°Â—rËyrçòäŽ¯~Aãý|ú¿˜MÏÞ'7ß¿óÍ÷h¬_ŠŸ/¿8/Ï^wÌV?›æÿ)áp7¬ö3Å
+$ÞwFbë~ç*íþÞ-ÿY¤Ð¯Ý:.ÎŽ_-Üz{7^öçÿíÎgçOÂ–,}«É²+	~aÌÏsòóÉÖ²ü£»©$t/]ÌR}ŠüÎÇ²
+ZÆÕe÷ÔÅéì/Ÿ_eî±´R„ò±D[Ý[æ´ùòû…ô~ãwe}v|ÚùËmb™º¥¯ä(~vY¾ªó–¯½´&÷²²Aóª_ó+Šú‹;¥(íáÁ(€°ÙmPP¬‹ïMŒÂåãÖ%½3(ðŽ:!´Äå¹¶2‰ôiðpJ"]½µÐÚWUï•4kYñ1Å›‹žm1š5¡²°ùþsCV¹sy1ë™ x}vPŒâŸ¢·™=<¹¦R €¦–³4ÛDdÎqº®öÊC‰VZß™$käÈLkz&Ôá¦ô‚I`öŒ¬.´à¤™ŠŸM+“ó,Áªæ&ÇJÜ»U‘ÓÐü¿²*Ù^Ðª}®lkíLd¨©ˆOýŽoòã"àB·<2h«ò ©,``	†ïéE;É‰¶~•keª!$Ûö"+ÚØ_ŽÙ;r)m-2ØÖ?#ÒzRô¦Jñ¨l2½(I¢4u1ïIî(ë.¶Ù×_k·¬D‰DÊÄoA˜/M¢6FgG\Çžé¸Ž—¼ï©¹œ±%ìUÍ}¡Š‘s×þî¥º_j3(HðyÖø&	Å‹J!Ê+PÅJ/˜º~Rß˜O ['„vÎ/ô±üq.EY}F-’_UQÿN]ÎæQb\à§òÚcÌ1aÕ¹ûDM¢©÷@ûúØgî]÷‹IsGS*}Ô	Ö,5†¢Ac5ï'^„•?|‚pÕ_±žÓk· Ü½2ó®Ai>7³¤qgÕ°xLÌ³óUÔŒƒýéGH@cŠ4ßs6û#zGsår5¥"Ë|ÝI4ˆÎOOCwÇ2qAú³D UòÉÃÛ13H)Ï–rT¶–\,ZÀëØyàˆƒ}‰V¸3X—	¡[©þÛz4£Â™y¡_–@º¤l­‚zÆ·6«*¦ñ(®sû¯ÁÓ¶kñé·£/:±’Ú>ˆy‰k±[Ù”ì=—Ò×«ÜÚÓ‚’%Œãb %dn™÷?ŒËOk8(µAQÎìÆ/éáVfIïÚ^ÂÃ*3o^…©i§_’LZ&ÎL”Eü;0"¢¤ªÔ’eXnJ*î,	ôÅCßµ¶êÝhU£¨Oè]Íi²œ5(TÑ=¡Õ3A86€›7çó"ØbÎ^ü}Õ^g/ß­fðÉË"ÁëªÛüg§Ç’GÓ˜ñG qU¹øx<+´%×îP7š“Q{‚z²ØJ‘¼›j¦óÂ]ƒ]žkê¥8«ö9‘°–âÊiPÒ\§b!Ä'ìKÀ&,…PVMZ†:Ì£?unÈ´ÃN‚
+<fDïgxÑ‘9ùÀ:3Ä]w@ÑOïÜdm1Óâv>cf]Nyb%¬UdÙÓ)‰ye¤ÿÂy™º÷AÕ„³xf¨æ3ËlÒÀ¬Øg¯&Ú$¯¬Ž’EóZÉÍ0X
+°m¿°“ÆÖ.(Åá ³û‘~~[RL¹vçÁÂ¸%‘¾oôE,ŠûØý{Ö·f´UTg‹öï*JALw¡ÔÙ‡Iœ38²ì@Ui^·=ÕhÙ7q:ÒÈŽíL•O¿[ÒTjœxa1I…|åe,ÎãÎA­÷…*˜q”£¾Œ/Å"÷Ò9¿äBÓ©`°˜è<ço•PuNƒ]Æô¶’
+š«ˆ‚£á­Œ$›,UÃ=½ùðêUÖ..²–H3þÙýQÉa…ŸÎä×­NìngÿÂR¤0˜98]ÀÒ¡Ö¿ŸüsrÞ9U'råáŒ_À XÞ· |¹¥mÇ³v«ÕY&qÅÀÏß½8~šöÁ%”DTÜòÉŠ0¸+@ìžUÍME'”°‚ê!äôæÓ¯³ÓK‘±CãÙµú¹ø@ƒwl2ŸêBÝ²Nœ¯¾:{»;ÖÅÒÂç¬O±Ž‰ÉgZþpîV˜dF™q6›dË;Qqù4“8TÊæküØšsêI;±"‘îD…å´ú/O6(\ÈQ(»Ë³éíceãÉCrþ¢¸Ä„Rÿñsz*6TuefÈoSèžÏ$*çsàçüç¤4@ù^ô±E}]]šÚKÖT+Ko
+[´2Zè]vóþ[."Ê­ÚBååAqU'#š“r8h-¹Â—9<I<l1¹Ö76wŸl×ºÃl=%ÄRdÀÙ§„*s©Q˜.ã·hÊq¬cÅÿ9>ð¼5YÃþeUjø;‰¬"ª.¼áP(F¬%Cùˆd¦å¬üï¹§`XÂ8 p%wÑ³‰@Œ(‘´ igF]ˆ˜5!Òìð[·-}G©}Ö¡ÁAhÇ4¿±ÉýVp³%Ý7Š^ñ¸1Õl;l,Rægt–Ä— ëj5Wµ]çàuœ97Æs ^,y$ý¥BŒa…Ž{Ò	LVR•Tâ<h@iåäØuP@U8Á}[<ö,{á?”4+t_ÜÚÐØ*‘^Y›vÉîs·pÏÞ*msQßñÜÓÎV0ä££B—)Ùc¬\3ª|N±ÏB^üP©FÛàIÅS÷ydÉçÏ><½[™kI¥šMßâÛÄµƒço´Òs-$,Œr£Ö”¦•½3ƒâtll˜îú?óòÃb4˜£å€V™/åêÝæë6õ­Iµ.ÿ– àK†µîFxø+«m×óž:™ÎóùIÖ ®Ò—C•º:u-éGì~+üÒYÄÃýÛÜ¸–\åHJ‡ÎT-…Â*	CSÙ>fø2?ôtË¯9…’¦’‰`Ìáì¦“]Îf“Ãõõëkzñ.R]w‹kž×‹±ïÞéÖ³é¹@š°¿éDA6›ç¢<š×I©^Ï­Çmqéqæsn½lÔúR™@‡»à(’7­¦gá·VÉgZ,t×˜LŠ=~DßCôâÜ˜.lÁ}ÂÜ¯Î&y9Uñ÷EdãÕ’<•ÔØi¾n1W§gs”æ,òº„ïEkš”ÏIƒ M7²rÜJ¤Ì¤žXûKHlUøšoãg~%§°â°&;+Ícin;¤y¢èƒOn´b°pb§‰fáé‹\Øp¨äŠ2†Y>d/DOÉZXˆþÃ ­H`^Ï®Ý¢óÑŸf*bÁ\–F.CíÄOeœå·Ü¶	€Jq©›/ çU³vó˜ïpaˆw,zÈld\”óöGŽ3#”#2zÉïÏÆ
+³¼T™A“ø–'/7Òâž½-ª0Å¬cåæòÁÕUØú³r¦CB&±¦‡¾bðCùÒÚ»çÛFt”DšÓâb.hÎâ‰Á*öP¨®¥RròMSnÎ€=k¨ÇUt#µg³7'¹ñ»bð³Ý~w+[GèäC²Dâ*Ù…ÜPÜ(Ü¶ïMs¡cË×€)K^QÅpT<;ŠL´õDÉé{Ãê¨ÄqÑww%ŒõÜ}Žã,ß(ÑÏ,Ø|›}O3ec#ì §”Å‹°¤”>'¢¬ŒÜïF Rk\4bŒØÜ#µ>Ü‘ÁjZÁ¢Ë+ç°[îv¹i~}fŒƒêtâ¹g¦gÃ=™K+¡›=gˆ/±9Q¡(V?•ûR#ÖÔ˜¦éÎÝÆn7†#›\ÃQt£Œì†‡CgäÎMÑP½„p<YþÖz³dDË[éÖ­ÏjˆDÔiäÆ}Ÿâ^vÈÎI&ÐOŸ»SaF øƒ<ÇÝƒeÝáb^$^œw¼ôR˜N±Ä}¡¨¤Â›·~¨]ÙÝo6åØL¸Šÿâ ñŒßæ6i}Z?JÀãBƒ¼îƒffïAML3Ùôº%L”¢Ú Vn£ÂÌµs?†îŽ-ÆùÜ¥KJ¹·ýõÃ£o/¬?²W»äufU&ÁÄŠÖn7ÉùÄ”Qˆ’í÷ržA§®f%Öi¦…Ga¢¦Ä™››UŸã H‘>¯ì4Î>já™Ug$yVCÝT0ÈMyè¤	C3ÆóIH¹± Czx(•	 g±ª€˜<g‘„¢j€µ?RJÎ>AíÊ-Vi5;ïd Õ  Jm¯igâ+()·í¬šðs®×ÆJËb¡&¶Õ o¥ØU¼#`š%3û
+“ZÔëžo_õÙ©*òzYZþ¢li¸™= ¢,°?µÄ£4¤qâXnIVß#ì‚Wîs¾¨:è>±mÉõžó´Ó.ƒ„BOUÍoX…Gn;8CÊŽ‹s=ôíšÂë‰k½ƒU)ÑÏÿÂµæù[¥UEÒ:ºE â‘ú)Îk<yK»	 kŒ$qÐ•ë/Õ…\µ;ý”‚ÎÿáLc(¿Ûˆ[ß›Û)tÆp'`†åkŠO*%N¯YB!$Q¶¯'Åð ­a‡‘nò„DOZ"4ÁEîàp(MôeÞZ¬NÒdfˆ# ¨wjQ±¥È ïQ¼ìQñÛzÌÀÔ·.$“®0YFÎ¹A/Þ•Ðñ]äz"Þ`¥9TÃðŒ„ZWñ‘ÝíøÛøŸ9þá¾·HàŠƒªÞšËO+Qâ)¸–˜d+ôzq‰ï´œ¯ÒŠœ•ÛïA8l´a¾ëßV0·‚&9EÈôlt©bžALÖ¦ÇïZ;
+ƒª¡Â\ÕÎšº·z"ðG9lÌÑX3«çÂ¯~ã›ê²(-KÎ÷èÁ„GD\ï‹Z*-uÞúþHª˜?¶T£“%FßIÀªèMà›dàiwyû%ÁË…€ÀäÞVTñ“Ç¸¶žQG2®ÿ9pÃO¡p`õàË66.ŠŒÂ†ñÍ§hReºÀgÑþñ¡#¾ÐçkŽÁ8ŠZbÕoZ*7¥ 6âl¾ø¹Í–o—æ¥]_df[˜üÒ­\Lž³Ë¾F|IfUÜÕ°cÏ•Þ'Å¿ óÑEÐö©"ý#¤ãå‘Ý=í’ÚÿBKÖ7Ô«Ç®î	HFë ü«"óæ²îªK2P¬Ü#*$Ô–ðôóü_A+¤Ð¬_§©‚¨øcÕ|ëµ^$uLÕ/	¦±Ì4»ØâÝf~Ö, D:=ÛYìL…9¬¦‚sQÝ7èšu­ý;vÐ&±4I‹†hÏêBªÎ©fŽqYW¢‡N2åiK¤WU·,w>GÔ¬9¿Ua¥'AÕ8Ù¢qNÐŒR#µ6æÔlËÔüº5T<°ýù†TØ"éè	c„ˆ—‘ÍkmYvFF¼ßùTOm¼\HS¢&/y/úÁm…Ý9Ë¦$H,“Õdö³ñ)½Ï/ÚÓýL=ÍhÅom[­/EÎpê<'Þ
+*–Í_¡ú&8/ûV:…´7Wþ†h"ÄÞ¦Âc];Xœ:T¶8Á :#WWò3ðâ}­Uš-2ü<Î«)gÖÁÎŽU»®·›BtîìGû'ûpòÓ»§/Žßü¤éIá·r!Ü”J–'zwôôÅë#hJ²O°±Zm9xJ«þ\f!‘Úx²¶½ùhÇNÜ\?¦Sb8aà7ŒÀâÖÊÚ/‰4UA!Ú2@{%<eÌÊ¹{mY	Ù‚"ìã¯ª‰<ËxžhO^ |qçŠÇ¯ç±Ï‹ºÛŽZˆ±vv(ðA™ÃÕ'rƒâ½£½@^¼"QÎ"à\>™¬ý¨‹ð·)å¾•zr½òûŸ¾ÊnýŸèÉ4®¾ú¹ð„9)¦'ÎÐÜûÉ·ÿè9NarŽDíóþwj^ îšýŒ’l¤Q@®‘¸¿Ï2Í¹û$µ_on² ’I¼\+÷p¥Û‘(™i-R¿	ªq ‹—åÝâ†ú–}»¥Ü_û–û(S‚×¬úÅ› 4VŸˆYZ²Wõ\¿DXöm¹	þµÕIé^ô®ý¶­gÙy¬Q…‰Þþá¯v=¹SçTÌÌ©˜gV?*{mµnŸttHÅWùá2ò.oøN£#…Â`’;vVUi»Uóý·§¾Y'ð‘¨³c\¬F#GìÍHFÒ.ggÇï;Ùç‘~e<Fëj'î{§¨—ï&ñG”Ïj7Oð 0º¹Ûé~©i“{qáf"âgRùuH»ÅÖtÖª¸-•GOßÉ§•e°:ûmó÷U[ýròÉÞÿî*—ñ;ñ
+¦(´ \^\(Æ×°¼/‰žWÏð°qÚà#îâVÒHþ’š¾ˆÇêü©ïð%„xRû\¤ÑËðáLÛË†Öa†ö‡w¯j9ÀíDÙn ,2Íáàó«o‰Á¦Ž³/šá]%í.hW]Ø~^˜nÏîÎÆîÞ“tùÝÑ0-és@šûfáÜ0Ê…Z2w3#X%z[ùTÌ½Ž$ÆÑÏßg„);÷ºo:+E‘`o÷À†æýË*!-ç“DÎ;œ žjdEc¤;uû d-	4•Nb}‚U¶©ø‡öca•K åLTŽãá[xûIÚwè†vqæÎA‘ÄÕg¸¬s¥Ž).€‰Uðu“¹6Æ­IÑÄ]rm§»ÕÝð`8—XÐ‘8ÂÆak¸â®èäÄ´ d&™u`¡¸í:é	`þ Ûe¶Ô„
+]¹œìœmòØñ	DŒUý‹:ÛÅõÜadûý_y³¨·Œ‘ÄN½?*Û'xNž-Xz2-¼}6ÙèŸìÉ]ŸloÉFRnóí°^¢V¡Ÿ=©ÄóëÆª(ÏÙù‹7øžDŸ$Ê½}Òô4ÇQ.$×r¸ØCžj7r\ZÎÞ$-%°¹»$}ÂŽ‡¯šT†·V¿ÁdìÏÒTï+œ÷ËSwc¿šVÑºu˜<þÅ3•·KXÏŒ	ãVgîBó:{.:Â2ùiÚsÿðÌÚöÎŸâÀ!z‰Í·˜&€t+Áë`à
+0lëB¹5ù:ïcÿê‚úêÎf7è?O³ÏQoX±YxŒ\ÊvìÖ÷€]ÎIY`Ì@ÐléE<l`¢SNWÏÖ"^ãAyUœÑœ‚Lä§¸E¬<«G²¦¼0î´¬?&Ù/9ÂÝµ<f/õ\øÃRw(Ð×ˆ5@¯Iµ‘%1“È·lo5Àºè&HÒfê‘Îb!íÀ­@§S$.é@>³è’›ÀëzZÍØÈ¢Ì!¶õÆæ­q¦ôix£5vñ(\@êê9ºFÐðŸÑ<N¿ß¹¡À±tv·u/waÎ4©5†T­,28»ÃÊrÄì^äÓr^w4?KŒÖ+·‰ä¼ˆ©™\Œ/ý`2jYæ“G»çÕ¹ðez–ŠÓOUé’ÆS·„}»ym^iÞÔ¹HkdDZe8¡ý7}I0¨wT¢×Ž+Â¿c¾Ù×ï—¿YOPt{„ù …»eôQ ÇÌÉÓU€Âš ”Óž’óÀ·|%î^Ü1à[À"FÜìv²_eÛ»žÎÇj@É{Uº7 ç÷abû3eP!Ž¯ÊˆPÖ³7oúÝÆwõò}·–üà ;Þ³ž­ÒxKðºSËfy¿Sõkt‹Õ·Ûºíõ¤ÑØQaœuhkOìø¢c·´À)A6DT_¢˜yë‚X„\Ýæ0ÜæE.¸/KX“ÑÜ9˜±YcXíáR–ß'`ÍsWe¸ø÷Hïü¨9~n4”èf>&ìCrHZá]DÌÊ*#iÀíän·›¹ï‘»H_‹,k´›vï¼›H%ò/è„ð˜íõ¥´Ëú4Gj½‡³Ð¯
+ x¡°tM¾®…ðìûÙ ê¥ü:6Ú©:Óìý­ð6¶rIuñáv¿®7;ÍËŽ«ÞôG÷÷ï×ñ/½d=!áZfWeÆ
+ð‡îáÜþKK¾–}¿.ŸåÕ·b×ÖÊ‹îø
+4$îieÿâ‰åu*ÊQ0ëM¸Õ]?{,$ñç>vL‚}Kí$„’¤%Ž2jÉi¥¤ÅîUy‚Ý¶Ê MK4
+óƒŽ…+fÆëjçÎëjY"–½5ì£ZZêÌÚÌãâœï(Wøz=›Î]H9E–ä[ßÂ ÿgÖT,ïæ«–ÿæÙ÷oÞýØÊ~ø‘§gÖn‰èl+“ß„OµV½MüL9 k!W†«µ[ßã´”…ñc«cýÙrìf{œå¼´Ÿ…š´šO„NönæÖÞ‚g`&”>jreÅ¾¥›ƒ“¥Æ0.¨ØYÂZ–Lì~äÞa‚Wg®´W6—äc”-\ð¦ÛÒXê^¡iÚÒàŽ&9Ø:Âï$÷<nQ”‡õ´;¡ø£«Ì×s™¦C¿ëÙI’üÜx	q¥µî ’gÌïß„‡ úLqc¹õð÷ù?ò~¬ã‰é`ª9¿ÌØNqYˆ¹ºÃŠe{†`7°ÃÙŒéÃæi;îãºTp×¤„¨³Ãÿ÷ƒ.ºÕ0‰™$›ZÀyô8øÍ†dZ¶ÚÖ´¦…ÖqÜ¸¥VO–@)qä¶£•MU#XY˜ÕÌÊ¼(WîEá²zU¸º€T+°IÞŽžti•7¥]^öÞ|]‹…/|÷ÝwÔ'bÜÖl;µ6,1Ì™"õºòÍ;&	O‡ÕUÁ~Zùtô–ê¹U
+-í‹C Ü0ÿ¨˜C7^˜¼L=á@~[wÇæ-R/·°¬ÞëÒ±¸‘qaù?7óÂÉåþ£uò‡=Äþò‡X “6óèVñÝ‹_%Á)zŠÝeÓËÎæ;TY£l>ä ßäQ[å3wbõD~ŒhJdV¦†Ý£ÁúoZõvÙu!„éãù¨˜–}ÅqÞ!˜Ž/ô(ŸU-pª@aéŒ¢°–Ê¾WŠ®¯“ºëŒÒŽýõ×Ù‡7/Þ‹‚»ä/¡»ÌWÍ^?;zñâèÅÙñ›ÓãGòµ†%µÜý-ß8{ÿÏ“#3ëLWx¤ßxîVsÿ²v5¬>J|]TÚjµ ä°éÐxª8Ë@NHòH[j Æ!@WÛmj{9zp¯ÈÝWºšÂ-?…,ÞuîÔ¥(%j”ƒi4‡ÌŠhµðG÷H+Îðñ–q5å@Ôí RªAMJÆ~º$±õGÖÅ'¨Háª\ñi‡›ZF"Ñõc¤*´Âõì(ŒÐÄ¡]CÇZ„ÈÙâ+/êí¢wüQý ©+HØÈª¼u:GùM€ºà…û\œ½x	yœª×ë[iL”¾9š|­·Ýá‡³F6“³)›jS=Ø®ÝZm¹{gÎþ?GgoÞ¾?~~äö|ûUqŽåÞÛÜÐÄ‹s•_¿:3Þ”-Y_TòºÆºîná•|"" wôRîùÏÙÑ;_ú O1‚òB,¾°ä b˜öe“Áy rÎM™š2òìD"r5-q×)ñûM÷*¡ù`9e‘Q Ä©ÿ!/‘ež»·­(Jƒ(QE[cZ·l<ñ‡Ð!¬
+¨²¿	t#wÞÆÿ×òdùÁùrZŒ….l‹(‘‘!ý¯Ùš\I¸£±lÜu,ûIð$«Âw£X¾‰x«b|öáTQ°`…$ÁMG~‚;-‹†x.ò\ÀDE ö"›Š°j¾7%G‚ØZ7¹-t®ŒóøÈmæjó‘€Ô¥Ã›ÝƒJ{î²o¶Rt<`ÝQãae–F”=é¬Wžó6ëÚ93c3è.Á’»tn}^ÏÀ$(e÷1ž8á/òð…|.Ã^½”ÉbÆ‡Arc5ÖkT¾Hx<›Ý_øi•‡aàšÕíÛ+”O,	ð7ŸÜuYÅ8ÝÙuEŽƒë8É.UËbÔ+Ê&#•{=œÉñò¡nGÈF—£m¥¶¼5¬<IíÛkTÁ
+µ	ŸÔ«ä8]?ùù„GêS—üSa˜wû œSÞ@¹WÕ«zÕ'(N•¥mFz¿Ý£“›Ä$ZrmôKþ¡yxSM¯‹œãÊdMuÄÞzŽl>¦ØO¯\9–½®ô·´£årZ9ß¹š'˜ï-å6²Ž”›ì;gæ½&Ü:šµŠ×åþƒ¶Óö¢ß†·R*m­¼ð¨ í™u{‚;IÍÕMˆ{MÆØžÏÓjìTQüÎ™ü={]LÑ–²iú‚›ÛÛdKg6¡çµþe<Ž?¬1úëž!«zRIÕkÐ»‰eþ¼x¦?ÈŽ”uõ^ñïv‚6É}çÑi«ñ¦ÝÁ¨vªós¥Qr™B]8éVY_©©4tŠZúh“ÄÈÂ'O­äg:N-$s¾=éöÔìý8	­¹Ú•?á+î§µã_­ØgÔÌ­à'~¿ZùBÓ»aÏ!³0÷¼g4_Èõ
+BL³–4;"NW¥ÊtAI¯¦hVœý÷¤Â/=ø_Úèíö_¨èX/Ž|UE9ð:A>T™Ãì° VFèº2d¡å¯ÃöûO†åQ¹U7ôAd¬0Qç)‚¡|Zgóééf±±&µ;}ðI¥¬-I3¶âZ Õú¦¥Å‚‘ÂKt´N¸³ÞMrPYCþå6hÃ3VU¯ %|Ü°˜Ý^gºûíß½’›é$™:ÕYúäZj3®UobÒá x€X(Ú„9SÉ¾ÍYO^<úv¥³r	—Å|* ê¾ÂkÇEÁž4æ|(8ãîø)ðö@	´ÇD>ÚüãQÂÕr'$&‡ÚbÍò{àlÃËŠþæ6Öïn¤/¥x‹+öûhÞ¬­É¹|S	Œ"®q2ƒù=øª+ËŽ0Ö;Eq5"l„·íF8Â›[û|ÂŸ\t§EÏ ùè‡æAXÔ+kø°ØKãåS’&Ótú’Ï?ñ‰¿N‡ƒ¸»6’ý‰Õ´#Á}íu}¡ý&„Ï´¶%+Þ7»!Ô1)¯›Ï?,ØÚä=‰nÞH8§ÉB
+Þ3Âl´ºÈ
+uHU,8
+ÆŠGù‚Ÿ|Af›A9ÁU48DAXÞW2(ð ¿Hü‹ó8:Ï#óûÞ]ü\ù¯äY„Qºó…nÌàäDúP…—7I5ÝÛ;7Jó-É± ¦B
+n•Vº‡þ—I/rîÕVa2°ÌÙ„Ÿt¡áÔØe–(–,ÝÆDßÅÍt'Í® @é"ñÚóSš¸¬–£¶»»™z½µÏj1„Vâ=rdš8µ³:ç?+R<Ìßt7ýáËþˆ¹¸púÅÞ`µùÐ× N“ãx à†{.–~¯óÅGÏïç­ThÓr°eS„*r¹œæv¬x¾7ÉS äÜÆn}“µþ”‘‚d5+fýÏÙ·ÈvE†+n=]Úˆ0ë\RWh‘Óña»7š…­Ø3.Çž
+¤Dƒ7}Jèà>«ÿ$ïÌ/Ø`ß/k’³hæT>Å*‘6{"FØY-Âä >q£[É£}¹ÇäúIÛA2‘&Ö©0@4Ô4A].$ê<ÂIíD¯8jØ³-¯x”Æô8ä>€¿×Yk­7“ÍwíÝó1˜N¾ÐC)°XìÍ	a¾ÙßßÚØ~r‘¡µDÛ|VªOJï€f:ˆŸ»3jj.<C3²}©±jE:Î¤ ùMÛ#"Yž›šÎÇŠt´<W˜­¿Ü8Å€¥>FÙ+„ƒ9HW˜¾ûu¬§o“×¥Ò÷Tóv†„’ ¼u“£F'¥ "f|‘GÉ¶ßºOš&z@z9¿–“BIF=õàî|²­¸Úü#\éµ”çkMå sNOÝÊ&E5a¥M¾áÿz=ã«©'¨·?yºÎèçµ=Hì]ãAñ>é[§¬–þ–Cµ’wØ|FÅàfÈy;=ç¼Ý0râ6:=ç&91k…©XýÑÏµŸYkAwà‡leEÏ¥ì®¯´þ‚K£ÂÚ<þ„@w¯WøÏ;"4­Gè/: ”°Ù4þÐnu×M0ªÕIôídæ²VAº¹mÚ)#HÚèµHâ[¤±Orõi·éõ•ch”ÿ¯¯Ýf3Ì«bÁæ‡_•3Jþ5èf‹¼áèÙa5!E4-{¥ø,Ù¹Ûª\*¿iû=?°ÜøÔ‹6«©Ô§RªsR–âž5ððbáro‡I
+u™|S+–è)høRŠJ¹Ä¾xM(¢’ì9°ßÞ¼}tÅ8äTº–ÖgqG‰{¸”›AÍy}¹„ðÁëèwësé:ÇÀLàJE÷$µÔ˜tí±¸Ñ™* (7d¾E%Ã¼Ê£,¿™öðIÂH®,¢dÑ'f/ã«5yÖ+%_On@9že§s·¸ê™/×æY‹v+cåe¼úŠ¶=	Ú¸¹poÚý=†2S·Ïxˆ©<&®üVó±›vµ¦æO ±Ï•:FœØç#:ßJ¦HŒFFg'l]Ÿî_QÀ<SfrÈÓ­©U¦²ú¦ô#]«ÎÅ*‡dH0™ˆiqÈëËU¤¬~¾^(ÏHº’¦àÑ;)“|ÉõÜÇk%ºbÅŽ´²=(Æ¦µË!è†Y+ýlK)ª£Š7ÏŒ$hymŸ26Vhµˆ‹2'o~òRsæeŽ˜™‰ÅI©§ÄOóC¢Aå•8çFE³Yu–h
+"T’Lìó¼·‹­¾È!Ó²S´ï§©z=Ö¯/A3qMY+#8›ß©ƒ_a-ˆ€9-@Ë .Ôv4Ñ©K_­µï\ Ì8]ºwí!ö®Xs+¦'†ÏŸÇãr1'UÔ2Q³¶³ÊšW “º±ßñÚpS¡êñZ¤wCW"ÁäŒÒúä£u-DžVã	-¹;²Wâ¤Í½´V£¹‰Ë7~àØ©Rª›Ž-úëKNÂ­„©P´þ
+*Òït¦¾ãŠšhvlñ{¤µXåÞWLC­ŒóÚþäÎZ=¯nµ·”à¬€ÎN«UÊ¢QkÏÔ¨•óÚº£Üwø¯ùó¡»
+‰iJ\»˜Ìòép×*!ZÍ^WÿqiîÕ1ÞŠzj7™ê;¯¼4u:­Â{›4Šôí°Òõ'3®|ßŸÎ}—HÎ:k·˜^–Rü"?ú¯ŽîE™wÕ;eÛ™Iaß%Ñô*¢Å?àó/¸ÖŸ¿9Ø‚ƒèl‚C»ØÇÊé^ÜC$³ü£…/´„¯?Yw§<yNel˜(`@@j4Ìa8d/íð
+IRB/Í¶ûS±'4KµÎ‡7ÿq&rÝ€-³ªÂv>ÇÎs%3´Òós7!]×Cp]¾Y¯_l®ñJQÏ¹¦uÌm™T3=–ç×\k,uƒß×¾ WÞët*c°ÓóÅˆšg¦)IT7ƒéRˆvb
+´”ùÅ¸’:LÍkB²ºÈb‡šªg²qLò^¶©U»’Á*‘4÷bóˆ-BÄ9–:t+s4Ë©KÔ•ÿEõñÖÙíÐ /¢MË<Šìñ wNEî€”P×ñ@L±Aó¬’,nSµI$åôØî|©1oÄù!>@óºI×-éß³(ü\@¸Ò5å‘d#©¼¼Ìñ¸	áÒÕ"+0šqŒ’…¼·v°©‘°RZ–3Ï‰n—µ[ïÍª1“³Åí þN‘
+·ÅÛéŒƒhwŒ^À«Ô‹Â¬W’õ[T$Ë±À²¶ªElnVZÝnk%„È©ü'‚_°^j”—ú›†Ò#~ßG«y Êù}¥S¾<EÁ½XœóXÔ‘Ô8aI¡)aò½Ù/¨AbTí>	íª„Nª3‹çe¦I0"Q("5¡F’·€xÜýà,¤/vcn'6,à;-pÿ›x±§1Tsúûz[óç?‰—+íx!g·ä³àÝ'ÛèÂšÑÚ7g¼ÈÝêQn¿0‚¨â>eàW§íÎ3?L9z
+¿¬íˆE…S$],Œûx â`[¶H&4?š¡7Íî xL‡r²–Î|ÊÇ˜cêfÙÒ ¢¨v>–á4ª˜œ‹ýä¨•Ã†E%gj­&­ºUÖ/&t€ˆ^’–Qæƒ+Ä¡šG©«ªñR z™AñˆY­
+‰K·?B³$ƒÐLÚê£?»@¬™2U#(\a¤Ãs3ã\DhÔ(1s­$—yÒ¯§ý6uÔ£ù<ˆd6´<‚£ƒY5‰lZÿ”ãòð•‹Ü"XgÊ}ž®¡ü–@ µõç¦Ð/)¡˜&“|Âú twTûUölZ£ÕIýÏdÕ×ºì)5·lC´¾Ü:mvBãYáq•p¹”4X^·”.LEB½¶Æ8î\Ž°Û¬^ú¬¢buMAf—$gù…_`1«±"1œ…—•È`5Ê;™€3Ò,!IÆÓÙ\Ðg‚›¼§³à‘f^¡‹Ô!NÁ âœ,‘;~Müëmä>æ;½R±²©ßp´.)Çq¿Z^Í`È±N˜õs‰¼	0cƒ”r¸›úƒnÚÅ[Ù‹ˆŸý^(àh|zoý»e ×ªõ]ÓR‰o ÂtbÞ»1#Èª¨Ý	×“œƒêsEU!‡˜¼¤>…
+é&p&Œºp%£.‘ZiÌˆXM/äwëòÔä õ7f$×ôvéTÜyÄ(ÔÏ@q±…¯ÙKá˜£¸cMãê“uÕÏD´CüigØÛ >U¦ð ƒétSŸ"vè5GL‰¾ àåÓŒ02#ýJTúáÉpØòñ‡ë2šÉ½{ÌdÌš…¤‡ÛöcÕ1¿X½uƒ)Iµ'’³¤…¹àþ2mÅ"y3ÂK­p"õlÉ—â'Ù½ó“Ü
+ë¶‰‰x+hqï½yKC!ÿ@»¡3â]HY}ý‡ŸÅÐ5–U2Ú‡žu1žÔßÍ÷!ƒTd Ypó§R@Z›UkÃâ|–f>²ìWJÀyòˆ`ù%¯xûÌc‚MË+,ð¬íNØs~™ÇÜíFÔÕ„êBãôJpž0TËº";bU¶õËŒq/YÉX§Q’!0²xBUMÌ^yR–Jò€pm¥Ý"ÀA$ ‹ ùè{ñÐ ò†¾ûÿÌô>jŒ;£‘Â=p-ÜÑˆl'»>ê¼m×ï<è?ØŠ¬’oû]ë=y’µ¥ÀêóV·cß5”T7 ~áf¹£RªªÑhà µ3¾ïÎ-Ç²¯õ¬ÐhÕ­êyÏë?Ž‰ù¿vSzùq3ÚGáM/dìž|±µµñÿðÚzØÌ<9H,LÌÐW¸×ÊAÁ÷ÖžíGÍÖã’’y-hè=…0kÕô®VÝN3±f±ž1°WcxŠ5ø,>>s^àß%FÖz‘–,É¨_DíÝ6óÍgé^{L]ý‰©å°(Õ$ø2æ¯HÖªÙŽ­Ü>“+P·&ËA ì^b‰ sTÜ".ºU|ë­;›¼'»‹!vpJrÁdäq&Ž.—D”KT€uzöü©±Tc
+à-V‚8â˜±ÊˆÐè Fm}#êŽ…ºcI@XkxÓ!ÔJàAq¢q…*43 ÖÛ©ñ’Ã;ªÎ,ûNæX÷hÚ¤¢r<™Ï‚<a2ê;Î ³ôF¶^ÊÒì›4§ã!Fs£±R}ì³¤ûU`[išC7Vd*>¼{µšTžpÐ[Í:¨›]²~Šý¸¢äkÒAÀ5h©]å”ÜO_j)í?‰b`ÿÜžË\¬¡×M3g#Õ(úÊ ©í§ƒ+QitH#ŠTþø‹­ø}êJÚðúUF6n»(ìsá{Ç7Ä¡¶HØ˜EÞç•‘$­Cõœ	öˆöù»`?ÆÃ³gGíÂ–ˆ¥ÖÉ>ë¯¿Í>$Æ>a»Éë™ôÜ¶þ¨ÏÚÙÙ&–ëµ¸’"èxŠY“ÊŸgð5pÆ‰‚Iâ´"ëÛÞ;¯qzÎz/#½ÝÙl`ÞŸðÊ}.º›NPÏeaKÙ(Œ$†7'7ÿ£;¿Bù3$PBnŽV“1±vPbÛ¤ïáŽ¯;mUâKn#‹Àzš2ìó$á²]xÈãìgn§uÐó”M{+M0)PÊ—iâB’7yÈ  €ríC+BßnêQk½Â8G‚^M}¨Âtv(¹§]ŽZÚMïŸ£]ËçõI£úYD†B¦"\REèù¸‹–þlÊG>qÈXØ@ïÿFÄ3á£QNX|y_Ì(l&FáÛ³ŸŽÞgvÿ==z÷ËÑ»š7D«/a+¨@"GépÛøb#âþL ”Îq.¤¬jkƒÍæ¡ï³… ði¸8_ÇŽðñ¦ª%è	qKgêÃ¹”ÿ–-TaWMƒÕJ×+”på“•NFá‰ËQçúãnÆ6º{¡É/:k6+¦RG%ôjƒoDyÅk÷€íÄ,lÜyÇíª¢µ´C\;ÝÒÕò$àÁ(W!.®Óü¦Ûl@iŒàÎ%ªÍ§èPr·1«ûÐ…µ§õË€e´÷%ˆWa2ð¬ð¸÷»1OüSoÒìdÓ*ª7hJÅT|±QìêûwžpèkÌ=êZ{œèSŠ!³Hòú]±öï½®È$Zm§õm¤ÅÙº3·G¿àÛÜIÜ¿†ý_0·…=™±U$lBÀ£˜F²B/0ª[±‘o'®'â‘}ï•¹·Üøb÷ÜJî¹ØDZŽ¯ª~ó1EËíá·Œ«ošEl"øë/v3=4Üº´¶÷ú¬µlYOÎ³3DIKò”,Æžóu¼T"Õ´¼A¥š¨%ÒhÕÒÛi?¯æâRæIø|yd}±‘Ä|ÁnÍ½–5·±
+·‚nrJÁ×h¨ŽÐÃz&´ÑéJ˜¦®^Ã—’z…‡èW V›Ì'*g¢¾zhLqz1åÌ÷Õí"¶£3=îJ"YbÉUë0ÓJãN¯Zê[2Å©Z%P<A|I/FYÉI1¶V§øJ3C•V¨žŒÜšæáÅ€,JÚf+åBa•ÎyØói—–ÃÜ‡ „lßsåVõ™¥øí?à´ÝÝO†~¾§ %¦<¯*ù][	‚{7ÙåF¯W 	Ù›£O7ËVè/²OŠÙb±F=[·VÑÎèç7‡Î¹$ 2!o÷Ñ¿ù¾œv’–%öå¶"â¨ÉDN‡¤àùõ×nŠ…¤Bºa)3lˆÊ™)Px¥ÃdÞ¬Š!žÐ:úAu¡Û¬?7Õx@€EF#7èÍÇƒlX´NÏ@d¡O²ëæä»æÿ²×^½?Î^=}óÓ‡§?eÎ…?=~û&{öîé›ç?gŸÿMñ¾èÖ€8Hæ¹º”EÖ¿\U—uoNDRÇU:¯Ûg¯_mnx†í@è<™ÏŠñ•4x¬š´x´Q^A_‹7úÚÍôÔ9(4Ejø‚	#‹áQÿ8=Šr—ÕÐ‹YÕæl5Ê²åÆ®NPþó‡wÐV]œ]Vô“¥ØbÓNX¯Õˆ]a#bXXQ©Ú—Ê°‘vÖÃW©‹°GÌß™0¹gdZÖf­ø	÷÷„[Ið´†FÆ+…Ç*÷ÅðâKÆ'Šu5žtš–ÅÆ[©ð‡¡o.ËˆË-@èÊ˜"‘”Î8IÛÉ(µt›9m÷þíÙ²^³i}k1"Ü¤Â¢ÄÂ—™†´»G‚bšÍ’@x¢ŒsÀÆÇË/5ÕöŒ¹ES§±Ôü$i*3ªÙál_é®|é!.jðÞolËö˜²®˜F§×L7È€ #n[üˆ6¶Þù(-5¹œæµÇ6?MI2§Fë\¯q”åê~éñ[iRH¬<JÛX‘úÒˆ#g‹8ý$ˆ˜©1â‘YáUk¶špGæ¦ó?ˆVîO1û_îK—€:£×öÚé¬–Òßð1áŸÎU4QÊ¥#šøðÈ±MsØ1lßKp†b2¦$±Ôó8zóâ¡ÞÇãùÝÿÑ³}Ó…¦'¥ÅŠµWó~v’‹MÍ¾ŸÈÿJ?…3ã-÷
+ÆÅ,ÝNâ}ƒ¢%Äˆ§#p œIËÒ¬Ø
+…:lˆ)åôm©eíóÚ $û&-à¶í‘6HlÇA ª7(~rN^Mðƒ;!o)ù-ð /ì?¡}ÙÝ¿ü¤ÒF]øþVA¹®§1è|!oÅC~n³u¢±ó´vŠµËÍÜË™Ì”;F‚QrˆcìÐaý/}²-Üö ßÂôA”sêá)î/_ì?4‹± 4Úwp©¢ …l’€JF ðÈí¨*,Dß Õ%É:äŠÅçV¿(‡­Eé´/3€pÛ‚ÊZvê®ß"ñMüÐ’½(%FížÌŽ§Ë2 Êc«1âàžÿ…`5$üÆŠ¥&‚t`Á—.…õøH™Òe*å¢" QÜ"Pº’Ôxfp8S“e(_Î*.ô±(&ñìOÚ¡YÞO:<[xŠ1»¥¡Ï8Ô³ùùy<¥;Cv<9•gÊ%-â¶›Ä=ý/ØTˆ¬ç C¾Ê§#gýAÄ¬´Iò(a|¾#ü±#ÜMJÉÀ	öÛºÁpäžbˆ®‹t¨{ûïókÊòÇüŠdÅ§‰ô›ðÆ
+Ýkž,À`< =}ëu?×³æBz8÷E‰ÒâA }‰ÃêRèÇõsò'{g'No‹«hb³¤n¨µU ¯x¦‹ýìÊ}¥VÏžÇ(ú²Ö{j„rÃG£Œ'»Çþy¨
+b¤èYÁ~E±Šþ‰¶ ¡çxVB,úvY†ÏŠìFDuºOœÛƒÇÇÈýW-HN‹|b²¶8;;{yüêèì,‘›íí<øº2<û¸ögz²Ér(F‰Ï€xÂ~D}Ë²Z#ÖÇZáËþa÷W)ÙÙŒ—Ò¡?4Ûzê1^äd\ÍŠ4ÔË>"f-½Ú$YEi^·Ï˜§æ×½„ªüJy‡hÌU•ŒÅw^NfÁ¹’e”~ìCo4²vñ®ÉŽþqüÜ×Ê¶£À×:ü!›£ÍG±ˆ™ê7®|(–ÏáÃKnŠÄƒªIOý‡ÖÔû^Èõ-•Ô•t‰¦§m3_No¤lAzUŽŽUÕ ;r÷nås÷˜¹lÓ
+´TŠ€¹6`å'&–rÕiä«;D“@”«ƒTœüZª `ä ‰•ïb¤2h¬+ƒa>%/1m$ªEÉiSE¯_ªg÷OÎmÓ½z:¿Ð/0>©à3‰n•:k?Žnk\õªÁM‹û ÓA>-ù/É%«~Ápþ¼÷¸ªßöÝ«K{Æ³Í­Õ¨Êö¬&Tñ
+ì)”u f[Å(yšˆ~Ësµ]\o›ØÇÞöÞ{4+×â½±è!´gS=<˜+m§²Ê3-øËúÈ)Rcd^[3Ççú³TÝÆÇî‡UŠú]ó†¡ƒÉ|÷îß¼}ööÅ?ã‰xP?óv£«A†XË3šÁÜšW±¯Õ•ô°Þkz,‘ö…œïõ¥ÐI6YXWd;ÀäÂð@ˆþ”--†WPRøÂbñÓîÝ_è4<tœÈ€¨ÿ:SVÍgë=?ö[ÖM	Ém¾ÙßÛØ:Ø‰•Ôžÿrêâ)¢:­L‹˜	À]YîÓ%ö‡Tä„Â'MÎÛ}Rü
+ç×;s)Q›šõi>þ#r%Ûq•F.>.ªyÝ …¦£;—âìL' +b,£ÍLJ:º‡ïÉe ß¯Ï?d–¦xÑI
+é±7ÞŠnÖ_—êŸ V‡VlÝúø\î±±G%Ôq0ÀñVÏUÛäF€•ƒ¼êòñUŒ(qŒàÂ¾I=¿ZÂfˆÎñ‹ØIÎ?k(ôø_l^è«±ãcaÁã¥\IID3PÂSrø§¯¾ê®û<Y·çF–eÝu$ù£üÐíâ+ü›)·ªHü"Ù!‚ÙÝ?õˆÿSúœù¶ãŒáÁ*ºŽÀú‘ƒ°ód³óÅö¥ª°X‘év–8d³ª_ý©»ÕÝ>¤¢\*É$±dŠß†¯àq¤ÂÔQ2ßßý‹¼Xd²aU‘äç÷ïOä³Dé¿yö=þ#‹òGÒÂÄhÊØS³þéF©2óñ2|Lô©"+—OqÉ–„ÀXCy¬¿¹§>%Â˜b©Â:ëzIZ'œæhDòñÌî¤þQ+žUÌÕ+>BÝ¤S Á¸Aë	rÊ!}R4%'ÖÝ;-jñªs–¥ÐT²‘%;–ÐM\kiñtæ~6“’b5\õcôì¯q¡>²H žVdóCŽHèñè0€ƒœo9kÌøcÖã¾ek¦lþ’5‡b°öèòSn¯éS7J»&¿ÜÝø_Êås°û¿â=†²^¥_øš \ìid5*RÑ`6¹¸nóÉ?Ÿ‘e|­´{fÒÇŽOA P¬
+œE(•9³bÛ¸íÈc0ñ/6”ªi[IÐ“Aì&×»u@`ªÛËso½l™ïû«øz"G”ÏŒîÝ¨Ñ/0'9OÙ]­ôuO’§‰ÛTœYe'7úuPµ†¯fÓ1¼‰ž\ŠQö/·¶îÕ®Sõ|	µWª‚ˆÀCÑñ2â¿‰˜åô‚Ï‘rŸ¿½Ö_[íMüßG¡mr7ÅìäÙë¬WŽsÐ]Ùùµ»w°µK‡ö)Ø›§R°ÀY¡%k›êÆîÎÞÎÁj¶¹¶Ó
+ëXê8„Àÿk„+ÝÂDû/â¯jñhkº/­HNH¦Š>€³äOÕs’”™†‡öª'mö(ÜÎ­‰9Ž¦¥_·mnVÖ:K}7Ù3KëõŒÐý9?74¸…p›ÅeREoçÒžÙßÔN-.õzn~>+Ô1$i s1¶ôŽøl ò­A Œ(¦#ð‡~XBšr¬ßoëÁ/¨žR~ýÌyD3›ÌCÇœ’ƒçEz…°yË[“áÙc[²õ7ò˜ÿnüð.Né¬@+Ç8›Øj,B–ðîí2ò&¯[Žo²Ç˜òñ|’ô1·^ËIös5-ÿ#ø­áú/’ÇrF¥eÃôg€¦ý4”áá;xaoìïð=<–ÙOÕÔµk§ýËaU÷ŠéEäü‰þÞý#pÕé9-ÍšÖE‘¸­Ü-îÁÇ²°:*£çZpÇ¹{©ô|-‚þD½&I8~|þºÌ‡Î#àxQõ‚ÝrW½@Œ3Ÿ”šfVòÆ°¬Pw°€tsãmílSwÁ}ñ¼8s£ùž[úÝ9ÉoðŒcs°={7Ò&QÀ¬ ÝpÞ“'§~üõT\cùÉÇ±W-›dr+
+_cêOlë|8ÐÅc¢:»°ê#
+âc`ëA¯”ñÄ?¡ð@j Ð&y®<a˜°l>¶	âºT9¦9µ‰,‹0•¡ªk?Î.jÞÞíuÚGöèZŠ×°Œý|êî•eŠ»&x$ù€Î;Ë1óílÊüJgd´’Êesö(OoðmÍtÄƒhŸ#dU“Ö´§¼ÝX¼î‰˜Q¸.pÃø{îK³VG_-±cÎæ™þ”ßkÖŠÏÝÈ0~·¸OŽÊër!°Ÿ•Hòk0óÕ¤ëãÀSv¿¶åB«
+TÔ Añx·ê¤z,E½EDŠ4Ì¹«åcTÿ„Ê°¥—8øS·ˆòÐ‡ë•Œ•uY>d÷ûÎ b-•Ó¾sügHºÄuÆÿu¤Q"EiMÀuÕÄ¸­ª>X“•ö yKRæÚJ*àv³™VÕÌ×ÑãG cŒÌ±rnËgByÞ7ÍAúˆµr$¶LwWI§ÃÚÎ
+¹C0î×Œ‚Vd;¯ÆÍÓËÒè~¥,Ü×úV6"æ)Að‹5H;ÈõVÛÝ-a]Ÿåì²ÇîiÇQ„ Û³Œ÷¢e¼dÅšÿFV™´+=1­‚"§•F¹W +ê£¹ýÏ_ŸF£ÞxLâJQò§T¢Aît~˜yG÷JÉr(ŠîqX(Dtpœ-·ðÄDwvf5UÒË(êl¹øŒˆ
+×ª§¬:j×ùæg±&—ä±•A	•¸†˜W€ÔTíùÙ¿ÅÇÁÿ¯¨*,7¶:Ð÷ê•<Ó»¢/ë;¤h„e|Mùù‹½•E(dØbU_³GÃ(z¹íÒFßâŒƒåž%£¤–÷äCDù_hi<ð<ÉEœ¢^}ÊÀ!­dQ‰Á—Ê™ÂšªÑ(‡ÆÞ¨”»)¡r¨!åÄJÂ=ùoöðâ3ºv~¦²éÓ5¥Þ$T9Ï"]T¼U9M¿Áöªq&T ¢ñé,‹ÈPX '¨µ·<ä%ó–Gƒ¦”Ü@frGÒ©²ð«ùîG’sfG|­¥<Í×öÐ°[{,Í™£ž©ÒtcÁ®Ôž’$)#kîÈ—fÜÁô‘[Ó}ÆÉ;»˜ô|‡¨Ðcã™rRÕ3aÅ	rl–ÛÍÓæ'ÝÓ —?±ËÁ½TäÔípî¯&­×«ú¹ PT«AÕÜ£©!;ª[Ûî>B`i€Ýƒƒƒƒ(’ÙxX+…vp¼'+©¶Ãp"ŒÖÖ›‘¬UÛ+»¼¬µùä,]Æëaçq§ÖÆŸÍX¡úâ’ÖrL0«»CCDúV)R|›ÄtÇýUÝÁ±eqõ¨QRÁ?×öÃXü"ˆ³dgßmYXƒV¯’nt@™-7
+ÙÍç‘=óxc§Ò¬&ù;LrJhûŽ°FÃ…ì»ø+!æs¸û¸Êÿþ\Y#ÉyÆG2m!pE³d-™\g)óqÒ¯™ô-¬kƒyþ§¤f=Aîpƒ²2âDÚê©Ja°7¹ƒuâË5ŠO–^¬ªÏ¸°Zz13Ÿbâx| erP¹D¢ˆ(G¹$÷z,7ð.O2jžxïÂ}rUÄ¯Ü œãN„M –YÊ…ÎðÞ'Âñ^âø0¡×ØE•{þ‹YƒMu>Œ›(éÄ=s{\7|õø!$¥ƒhÔ¤þ¡%k}3°õ|¯jÆ¶‡ˆ…$1å@Ñó:·?Ø kö›½ý­ƒm‹øhI Ýœ‘QWðIŠ~™ÝÄ^ÌoÍ:!´ ûëuÔ4±Íçˆ ²O‡uµªU­1-7¼3£Ó²þHåÀr8èÃñZàQ›Pcôû;;Ý,ÒQ¾¶<Ew4Ù	h¾ô{»O6÷âïY&™Ž*Á‚cQûjoïgb¢W7Û?þ,e•
+¨¡vB¿4šb_±&‰l"×>]îÓD% ]°= ¶ì1Ô4¯p¯ýÅ3= âÈÛ¼IfÀÎ†	Y….ÖLHW>z¤ÚtÊÑ@]Xí¡úJøÅ.Ç»qÿû¼ñpÕöÏGO_¤:i¿V^W¬«Lûo÷â?LbŠQ'v-‹µ.]tž·˜m7‰Ë\AŒb2£Ò,4¹[„Z œÃX"4SÊ'_ŒÐvË
+ç\#…2˜Ã¹÷dk{·³°w·v÷Ìþ0QLßN‚f×e_»ËÔ9Ãˆ•»ç¥
+Ž¬ôytŸƒÝýÍ=»Æ›iÝÉ7
+Ò´ý9hêÖÌû­Z7ÔPt3Ö
+±õš—Ó5^(÷$s²…²/åtB,fÓtQJVA]ý£@8}²tº^Zœq‘²â!úÓ‰)(à7oqoÜ«ÚØÝÚ·)€¸Ú‡¢cßöBSd¡äž°¨`Ô«æ
+On	³¶4s‘"¢ƒÇOÙv<eË(ž}€”ž¿À;ÚŠoè;÷"AO* –Ø-ØñR
+—XJ°„…‘‡y\Ñ¬ÆP–i3ã8–ˆP2Ä‰èñfC¸ÓxÂû‡ÚÁ6FÏiµ²Ýƒ=wr™,(°{!8ÁùºõRÖ—gŸ&–lK[³%b®lé¢n7kƒ …âÖ®ìæN#xÈÃ¼{Nû…Ý
+a?ósëgÎ6÷¸ûùb3µ‘2,1ô›<-Ì‹Ç\M–ˆ‡Æ>;I»‰d5A‹)ù¯ÊáƒmúûpÌ–CÖzI·ø7Ïô»Û³C±>#Æeå•°Hf5¹ó%§eh wxU*Ô¹Ød’õ‡óœUòJ­tâÄ@•‚Ë~C'‰r±ÿžÄéÂ/ÀßC÷ÄïìžP¡Kë ÆÒ“ôì&~¡÷CoÛjk¢
+%ãk²,øqGÀ@õ|Ê¡”ô|'ˆâÜ%‹r9)¦ð”ÎRÝ9®Óä»ñµ$õì¹ù£%1cÀ Ðô°¥ÀÃìòÀéh)8&x„ð[:x@O¾·Rûö@?·{L*'²ŸªRà¹;%!«yüâÑ·ÚM ì„Ú=k¨y&PZ¬h€1=ÔÐkÏß±‡™4Ñ±1•E—>¦Ë‚òÐÒF …/ŒÓ÷‰G¥"}u‘.’/õKãª§†"Ó¢‹Ò“Ë'ì¹àdKà(!‰o»
+œ+|J”;±¥yËdü"ÊP5â›¿Œ ¦ñ|7é¸úU=*¤Ï*B.ICªê¡¸J&FgîKÆw÷*0F¿¥ô»Ýex_jq³ÝbŠ9·ÎãÉéát`q×­ÍË|RGé,=ã÷ö@ˆíNÒf+ÓSjÜš9ÝŠ¥qýP|ï‘/Q;cå=6ÅI ®ô'OŠs£Y¹‚J‹î¥¯(Ä¹ö/7Éžo#Ôð³³óƒ¨-gïœ+AUâÁE“•ÓÁÿW×oŠkq	?—;¦FªÉ&Ù#øÊW—æDCí|ZÍ$‘F¤ñ VêÐÁV7ñé‡ez„µ°R§òàE­ýj^ô¦ò¥6UB”’ýªý“s¯u™F@>êÕ$æ!Ý£N¢›Ÿ×õEª—r«xAM~h)·|ôÈÛ°ÜÛ©øJ¿šÜ°2¶¾`X=/iKP½‹€Æ€–2âJî)á ¶·sÈ‹ËŽq¿huâåàñ¼q¶ ÔâtÖb‚&PA‹}YÉºÀ(¸ ¥#N€•ïVÔyÅt#Ýï†¹{+Ò‚†ÔŽ™ßàÝí½Ð|âæíç—ãìïåôãPîâ"ÖÉÇ¿ö†" ™Îª%ª	£[öþ”aÂýáLÉ/9:¿ÂŠ`/§,zAÆÀ’uLÒíÀš+®3ç»@Õ[þÊâNuEÏf+h²‚}í.u~E}³óäÉÖ“ÍìÏÙ7{{û{;•)0\óÔ.Ž ÍäK#;Ú€(òn>d\òÄ\úþx¢(Dá½>rs}¿d£M{œrEP´gR°<²
+ž&9#Hî >LjÝ™.m/œÏz]«R–ã+çqØW=ÚƒzÜí	ãî½-…z	ä¨Â€âMÉi×¨Jóü_j@[·™®ˆ
+Zâ)µÅ—º·úA~zyü·¬? ÁØ˜axøHbÝI¢	œúK…îž¾_fß‘£FB"±XÜ †ßs(hÅÏ±c£udü-Ëp¥\ÚcàËJ*¡î~'KD3· /n¬h÷SÜ7€ö$§›6”ó[ &ÒV?M§kÚ]¿I?²jV­‰éaB—¦.ñåïß¿uôcÄÒ‡¾ %TPŽ“«2çeèâEbF>JU4©b"Ã7«9ÔiæX³•e	Ó¶;–;«oÄP@}¤r}{š¼3xzÀ[#+øtÅ™¸WN X”#µŽ÷:|÷Zz|øh~«¡Ønm¼Z÷"	ÂóWŒµýŸwTµ†\šÁÒ«æp[Y6ï&›<„oXÈ[jý= ì#ëcIpe¸í!j->ò¥L‚vxËKk>iá¾­Y5ÁÖ)Ï×úCÉ”YmJŠ“E:˜Yœ‘ÌrJrã¶v’Ï¿3Åµ‚Ó¶ž÷ôõÅÜ5Èûtø<"	D¼–,TóMÜ`69™m]šñv{aÄ%4Ø1²w­cPúðV…Ë) c9ÍÀ›ð˜ZL}bºÂòs¨*÷$ä*&tÀÁxKýeâ*CM´tÏõ¯JÓpm[P÷7î‡þ#°á™6wáo%fMþÑ/eòä‹bÄ‚ª( ÷G=¤L¶óÍu¿ÔpcŽ	¤‚í)ªÿb÷Ž™²7î¥»“ÿ{IÌþÈ¢~rïß7¸âYÎ´ß+4õT±JK£êâÚdM´ßWe­lR(ŒÈ%œ³¾¹±}¹Ôz†Ç/P¸{ò•	ý¾$'l|ýÑ§òœ¸ñúc9Ñ+ûy`ïØÈƒÎ§·w(ý(´—;]'g!‰<53®­c;øšX+ðej÷`ggw»Ó´ÎÒ	-Éx7/ã¶5;ÅVm­)…
+³6U¿$iµËø&Ñdðx7BÒüqhó1E¯­TdeÌï%øÁRŠ‰µ©L ­åªmoîíÛÛçZ\„£’ó®í–ŠužP¶L2Ù¨íãhÒ<.É…Nç0äìè*|™ÆöÃ»W8GæS¾ÕÖ¤@ÍÓåE
+÷¿ËÙlr¸¾~}}Ý• Ó°nÐï½ÿ—ó+ÎôJ?¸³xÄ×Ï]dY,òeìîÝm¬ÉôïqI·û‡_Ú‘ü"’”™§|m68¾	e?-øh¸+Øé3‘‘àªkßØL^f¡T`“-	R€^`¸„W£—LmJ->¨F
+ÉÉÊPËÚ7&AóK¤>rY$«ÚZàñÀx0ÍÇ×#ì²s0~Cn÷¬tÔÚ,jQ*ƒI•V°¥Bõáá¶Ëvùåä£wþSWMƒy`vfEÿr\þ÷5‘aYDÔ°uHÉù%ó¨c$4Ñ˜¾·y ÿI}Ýx›„uŠR`µÐ!ÿ³ÿLh$²7.¤JýMäßçîTzVÕu1 ]špÜ•döw6 *­¢ú13¹ÏL¯¤¶Vü·{õ3*è‚¦¶ò|&¶|.©ÖQåüÙI> Çl­¾,§gt»ÝN3ÓúÍþæ“ýÍnvz‰ªìùð†y#
+LÝ\¥g×‰ÂQëmÆÅìK°J0ÏÆ ¥‚*èdÇ³Å…»[ÐL4o‘-îª,çpÍ|¨ª˜Co[0eªUå—ó¯‹GK	kC<!µçÐFbÁd¾û]#4¦x[<´×ÝUpøZ"¢¼^öW;"4²»½±y°{(|èÎ‰¿œcó?e—F¡~áKmzŽ-ÒØêNvã[ììîl¹[`"z¬J±£›ŸvÀõtºÙÏxG~9ÔÝ‰ò1lŒUïËËŸ×ø†“ûïonìl=9¼õà·¼µÕ%±Ïfêm±¼¬ù†@hì3ÕÖ-œ‹•T,`ŽÝ:ö@¶©â/“Õ©–/ÎwÚÕñä`gk«ñ[›»·?$•µhØÿëÏ­è>3¢7¬ÜÆt»Xá0phDE×ý­õgÒB‡Zø[™q¬x:+œ‡ù*ï´@ŠDkF1ƒ'áì"ÑPx¦K´
+D=üúÝX€©kÞkÕ“ÛW	G°±Õ˜HK5Öh£ÉÇ…‹›‡Î :sïfC;Ëp…@–æeãASÒ,›¤SüÆ5+U«¦[ñ6È/‰KåžBçn‘}°·ûOãd0K8§ã¡”m×îÿ({É	!«G¥ä¾9€-öÛ[Q.-úÝAÎîÜPÌ‘^üÌäÞsÁùÇÝ{ÿWˆªbþF.ú-ëÊNbÀT}s ¤[¦¥'àÞE.Ï-- Þ©Ê£°¯‹éúkc¿)®™¹¹¥ó	“~T÷¨ÖE45ï•Ú„'C|DI\;D—Œí0è3µƒ8åLuaÈš¦”®9P#°÷1hS§uœÇ5Æ•ŒÜ«ª™"–åÃ)jô¥Ë¦:>²‚É¶~(~AIàè¾ÌÇÖ5¬dÇO²ý máÛ¬çö<nÐ.Îg%+¤`f·w#ù¬vçPÊFÅTQùë3‡+^…´Ò÷Gqb5¢ƒX[ï)üPêÔÞŽ„…$NÂAcþ—Ü¬Îh!ê›.lRÛ’Mp&ñùOÇ–`Žï÷Óê&;°»µ}¥ÄFœûðþç·ïN#­HÏNtê~„ñ_mv·tŒeQ{Ró&Ì—¢ÏÜ[7VB‘?ú×¹©Ï»móX8KkøÂ]Žv•Ü<îô»xíVÔ„zñb.29Ÿ&†Üe'vïú›ê‹{Ý˜H‘­“{Ëoû\³†yÃ`µ¿eÝVÖl'0b&£äZê{ÊèAu†æìñ 8“¯M›`Ùh‘‚oÈŒn·J°½"És/\ð	þŽa°½ÜZätùmU%äB{ê$edVÐ#Þ6ÖñÂzDQ;i= 2Ãªç\;€èµ»Î*.,2TÈí_ûä Nr‚ "*½”pNJ©”’Û3z§”:ûÅ³5#Akw†vr?IŸkí¡8njÏTò]È(ž“î´ãHV˜RrÆDæ[®a}’òr>ŒËOiÇŽïÂ å:‰†jµ¶<$y¯­6ý/Eªßl^"±©ß‹CQ\ÒÖrÐ¬+ÄbÒâe›2—$‡ÇEþ‘ýÂo'ÓL„,ØY|e£ž÷ÚËÉö“;[Ÿ˜ß¦qkF’w¼eÛ7„!7œ˜e–‘µ@©T¼¾Ñ –ìHl1ÜEv<ù:ÊƒvH
+Í’ÅýÒ{¸X·ô”iž	 Ož¹6]Ê¾ò>YR‚ÇÁMI©?¹ÐæëNFAf;}—'—ÙÏÒÏeÌÑ8•Œk#"ŒÍ+5­„&]FñûÙÊ²o-%•4ÎžÍ%ŽrÓ2ëöðÏ¿N†*ÝA‘LLÜ–ÚmdÓŸ¿Ežéíô­æ¤cRù4§>å¨ u•'†` 
+6fçV˜‘8Ñýü«L–î0«²¹Ð’é±:ÏsÄ·ÍÌÚ²êÍËáà¥Ë³ùt˜5ˆ›ÜßyoÖ*Ÿ€?áÌs®,Þ‰÷@oôHYÕa9+ªÍîÏõŸ²Œ÷‘ÒÍ†Ì¯ú¾´l‹¿²Ôb_*Iò1µoM¨2W("´IÓ2õsìwšÛŠrÇNó–+¿1‘öû
+ÖçÊoPŒv?•ãŒëoýÈûÚ¦\ù­©pÁ;.Ü#ä§zñ¢7g_hÔÍ×.1ò©åoN˜šŠ;Ù-¢HÒG>YÄca”ŽäŠÆš!-ÄÜDÈ§–Ó†"¹ÍeÄ²¼ÐS{Îªk´v’ u77a3*D×ÄúºKi&êrZœó¼õªv ¯ª>ˆ¹ºR¥˜Ô³›ãA›L·ÏþÑY‰ãqâaÜH!zÚþ(I«³#2t×ôZ].çšohÔNs˜pâåãšÈHìØ˜>(³ûÙô?Ì~A»ŸVµ}š_Æí<û©˜Ja€ùÍí7ŠÔ’á”óS¹9Ky~yHšxü+Ë62S·ä‡ñÆF+JyTþÞ]cíGþssc#LÖÆÃºË¢‡p¯ätv3,N/‹bæ¢†uKc%mFS£ç.2Å¥tjÄã ~ž©	wãï@c‘†ov±ÒÒÚJtVË»ýšøW9Ìƒ¾aäœlÜOÛàó5'—ùPI±€5ê‘lŽD®ÁÒC	„÷@æÄý‹ýÎ
+“!ù›mk€¦VÎµåx•^¯ÅJ÷³»¹`£Î@‰?K¬tÈ#æÒLytý²†*ÉÆÂ>™“.-üVWé¿Ý–®mKö-	¬ðúÚGE>®ÓÉð3AOëÆh•Ðh€Øh€‚K_5;Aã^ûƒßª ÙÂµ‡¾tKíŒ±¸GÒŒÌ6`	&£Y%PøõÉXÿÅ<™Rƒ'L8p¬Æu6½1ºíù¬Rº'à¢~-â–f‡¨,A½°oJµ9V©ÛëÓBÔý‹òâŸ”dªÔ¶üƒäšxˆ]¦I¿,†a7•Ž-ëÅÑZ v.Z•w9H'ªŽJ"îo)5Å<5(a<('Rè›×ì˜ñ;Í¸¶¬+@šØµ ]Úa–2:â¾‚ïbÿ!:!þ^\IÓÛH’ÝßÊ¢ÚœÄñYð"øv^7œ#6&»ãzM
+ò‘!Ûö­Ûôù.êÃñ‘2#¯0¥+Öì¬×´&¼§ÆfbOÛ"§ ïx[ßqÇà)±ÄªÝå‡/ü?Y“[.øfò²ÿ¡s|ÛÄ›¿üý“ÜcSlÇÁW£êºïÏœUX ú0yÆ$5ÌA%j(n‰ßêË±Íæ›¨GU¾v£¨,ƒÚ2ü¢µ#ÉºÒ–šv'[ºÜþæ—¾uYYÒYÍ¤Ù|mÞÏˆlÇ>–¥|S¾œ ûÊ£ ÛþeUÕÚÍ*n”``¢ê±dêayç¾*fÆÉÍâ¿g]Úñ=¯Îìyø½aä8”ÁÄP-½ŽB2×Ù¹'?ævìT½ÆhJ¦‘Cò	üpx¹ý°;0~æöÅ‹2†R-½åŠah_x>m|Ï53Ë}†Â=Òæ}Y¶?ÃTÔ ç‹í…Ê”ÌDäÊ,‹9Ì‰ï*†~:BOû5¸>ëyoM{…µ]žsÏjÇ©gsT®ÿøï—™ÚŽÆø•vÉÈi¥÷$*i‘â”¤Ð,)¾Zmjr®ûæg@ibÙã™éµc†ŸæÁð¾Õ¸èÜ2>¥Ç½dç*ùtŠëX[y•­¬ÎÉbÃ,Çéë[ë¢mlËž`ÇESîü ÖD6pv},Bß¢É¤¤»öìÔÙüü©³õ?~êl¢§ð+nk‰”šÂ1è£Z¡Q:°ÔbÂD“uDúäÌ›IVâÿ:N«s6ÊÍû6Ê†{Ë·µéË÷¿	÷Œ"ÅT™=ªäÅ²¸âÌýTB©ëßÂƒP!€K‰£¢e†Füã¬±F7v,ã ÞÍŒª×šss¿\ƒÑñ³·ýä`ûà0;¡ó þ¢ðMÕjdíŸæå ÊžsIBŒá«ýjØ"jî¾0 “át@Í¯^¢AÂ"A5Ðö²|A#“¬9žª²qÌTH7FÄÎ»ý:óŽ O«elZÃÃÓ[LÒ,@ ½³â\bJ‚(Þ$Q3í%ëT^Ð—ðiñ¡¾<ÎRØ’žxl¤qž|übïWð·«%“
+¹îr/²‡j.ª,Z¶lhNö©CöB®üu4Þ™íuy_xBn·ðNB "{f•Á-I&fBØR{ª¡ÄÍ_d­þ˜ÎC–›ôµ[vk<‘5¯ÄÐ€Ú_Q.9˜˜ÕVÅ €9²XEØæ8#ÕwEîHšÍ™^!xu9²JñIü"÷›H%T—1òÈäškdÜØ’KñªÙ|àÅ^GP¸ý“OôÄ×vÌ}9NÁ+'I;I4–û!¹lôÑšæ¨æŽq>’°–3—ìÞÔÑ/.2y\±–ˆø¼[OõÈ²†VÙ-<øC™ÆÂžTé\˜§…ÐÎ¦|t~ÓjT{QŒÊ|Œrj=«âqÏÌ¦=ÿoëî“ýÍCµÄßønUË9¸#uÝƒ;Ë>6ï{èEVJvb¾–´ˆjžB<.ÃsÛ±C!Âº‚ÊaÎNäym·ŽeÿŸV«ñE@Ãª }•ÿÌ™¸Ÿck3q+[jpÞƒß®RiU¯¸±3¨%$>6ond5«­È3¹Ûvx±O?~,;Ñ3<È	ÑÎ+«D¡âÉéñpzH¨ÝÂ§N]à4e(P´„*Î7`-ã\¤¾ÝÚ9ØÙ9Ôæoc•Õ,€Û
+B=x“‰Eñ=:}K†üu½_ç#†,b¾L·¯NñÐ7q^ôâ8v7w÷œoÑž¦8ûdãú@tksŽÔäðàJ¶Ìò‹Ð]nBt`=ôª‹y²æ+i€5Ÿ[´´›¬J$3¢0ÛGehp¹l¡U>÷Ë3¢Ð\¨AÐ’	²(Ô7rÇˆa»ºq@D56ÎGº¼ã¹x 2Ò&e#fUN°rQÙVÚ½º›QÜÿlÆÞ«¨øÔýìÛ’¯ˆCûDþ‡Œ3¿’"&,äóú,ý›Ù„¿_;srêœQwNÇ†Á9>ïËQöº”§ÈD9:á‡;LdJ‡ÑòÉÓV¦(µ[d¤º18†Ý)žpd>î‡Ï¼»¡nÜ—CÙ†¸¿Ì/]ù6Ë‘/mx•üÂ÷½÷Ã§OŸZñì·¤u0ý³—}“=äœ¨ó\òJ‰êWMÁ±‰XÕŸ„½(9'ôÐv&Nlcix]ÒU‹|&ˆöÑÖ¯ÅPZJV3<¿51U1<¢YŽe	V+3è¹£˜,Z1ý}È®ÑŠº)¸´YÄgìÏæ"‰Uû‚jzÈQŽã3I·:ÜŒæ*Ñ‹Ce4GÿD¡Òà£»åj<×E–°Äò~b+Êõ§U]¯yë'†,7Vv[ñ.záöM®_wÂ+¿'äË^ùŽVA.YZ8p‰ÚF>ÓyÆu%å}¶äÔ¦®]5ç	G€6[–<¥æÑSÔODèQÞú½¸Ìl‘/Ñ	Ûi‹!êÖsAÍa2ÉÜEûáa…Æ›× ˜oA{#OîñßKÙûAq`îë¢'­Ä.éí¯'b2Å…‹ùÝÚ,ˆ”ƒ©3}¶<ã:,ÙFÝú~Æ8ÏÕ­¯Ï³öée%ÒIWEMJã˜f*Dîèù‡wÇïÿy¨¼‚‘Î 2¨1Ê<¨T»®«©5/Êƒñ–w’ãTl{~‘‹ÁÔ!S·¦™@gyÿ£!ì}òaz“¨O‚%gåÄfhã ©ÈGœb›±;p»ŒPC|A@×Ë‚5—GàòÈþZØAzhM‚FæFqÐ»«Š‘6x9ŽšŸÞ¹qn¬õºv‹hÚxê¬‹ÛCÝhªv{ÈO0MØ'Y¦n‹,ÆqÒTû:?_@œÚÕíp¡)fÉ		‹j»n*F?þƒrLô¾Þ^	{æ|¨cûpòÓ»§/Žßüä3,±°Ì|Ó‰t0ßÀÐK3U§ùht#rV¯„Ð§ë²äS±ZI£ÐZÛ ­“ð–}ï•·ç¾õ)®´ù¶ªøK¿J§Q'š¶‡'On[41Ó`£åfä•Fè%¿™`ÂÂƒ»9ºÙºý¸€‡bjÁg¸ëˆú{²ƒÛb ¸Š•jÝMH
+­õö:Ñ8äÛï-4;«½¨ãyŠ0	L.…TqJCímšvC±ë4~¨§+¹0bö‹tTWÚ4:ÌÅŒÇøürê6ø;÷ÎÐ~ÿÑy[Õè¯¹@,ºÅ`þcúÃÂ£¸GKð^?Âö}/ $¥ÅÑ85â›¶„j›ziRpøöäfc{a³b:WvôÑ]¤Ý!lÊrnS¢¸¿¿›RFZ¾\tCæÞSî‡aÄøôÏÇÉƒ®¼í‰sàNŸž(Ž»“¤îŸ]4xã,ž(UW˜Íçõ,¥'Eì0EË†3®œäñ6tî¤7Z®(šå1ŒãaYùkÅ´»J3×êYL#L5Vd^¨K"Ä÷»ýØŒÄ4””^Ïi‰ÄÛPœp_šæ>@Ï§ÃìM>½*œ/Þù¨Û¢.»ù?]—u¯mã~1êæ’vÕZuqÍ	Í~~ûêÅ©pDÒ¢_‚ÙlàÂ9ýz&Øó¿ÂÁ·ßÐy3q£cª}ñâ^³–ˆ›Ž$§ íž¯0l•õ“ëJƒ ¯{h‹ÞòjötZÃN²®*°¦½t5
+Œ ,B×º®kCvJEAc–¡´v•ÚÆïf‡yÐAªå²ðªÏk.`¿èæš5–ÕkÕxM™2c"%_jÏ|hÌÔ¹çb"UÇ¯½§ûy›Á‰÷ËgaÙÌŒÔ¾^ÿÇ§O(î‘Aˆ¡eôõQÑFþÌ“\KfÊ½@d2˜®‹NÄ7ÎWCg­Ûƒb8n³ãO$dg—óQùÓ!]Ï´ÏññixöÍûAŸ6—>fâX`ýd§—n—¡xj§¥(ûÈÀ¬}aÁ£wîüªDìÅ'‹}~:z¿~òöôýúó·oÿ~|õ*˜Ú ØÜX ÁŽžó~¾Áæb;_-êîâfÖiÏïã§'ëõBØa{0—‡AÈÅkŸ%ú°³ ŠÞ×¬Wå0ÇEdaî™¢ß\t­¿ÙÝßÞØÞÍZ/n$œVçß_€{fìsí-ÈËÃœæXK¿ÓÞT””-ÞK:P·Hšêý†øÕG»)ãÐ4OŸ](„b"N;(#³Ì—¤BÇI‚›.½	¸Å§ò<
+8G(«´äLCb}*fÕ€ØÇy-¾Ïs75åEî%Î•-Yæ–ä|^Äh)™g'‚ä	„cér¡
+X : ‘ÃŠÛez^Öª—„y`')Q«YÚº´>d »ô$XM2¨‹¨4TõeÂ„JX>ÖÖ\\(m‡Ã\ËüAÅ–ñÞ}‘|›q¶Ì?j>.¬æFäŽÝY"U`¯!–SºÍob<·ÚƒÎ†[éU¢Þ²¾"ýî.=:Ì–,{Õ¨ÒÝš*aPƒÐ/QLeÏXn3ŽåîPGFÊ;¦IJÔ7+ô
+s¥’+ó3šÔ‘Î°Àmî‡{‚!Oó|Ð	sOîæbçS$(²ô©Úßìîíl<ÙîDïÿž1åf¼eÏµÀÒP—ÖÔ«ä²­½i=6dÖÎÎ^¿::;³l2©:"¥§xsÁšÓXyÂEÜÅÝ%c2^ê5–úlJ¾ó®¨ç¬ˆ!®õ#¹,p»çn#	IœŸŸ{ëŒnÆ‘[Hf¥Ô}Åøßù)®AÞ³š‰µ™9“9Â•¦7ð¶@º.ŽÏXêÀ”WPÄ"ŒYNK_ûåu=Í=œ›qü·\ßUó¹!I%Å
+6ðS:ŸÄ?´þ’ú¢sCb±ÿñHl	÷ðéHòÉÙ÷}ùé¯ÿv«&L¦mÚçÞô]¼´Â¥y>í^…þ¢kœ£—îœÏeG¥ñšr44.L¹~äK‘Ì;•|HmP—W}'N^]¬ùL!Ìì´J’Y–>ÜRé„–`J˜ýêsýà$¢-”Êù®à”h¡Ý/bMæëWç9ËBcì§¦²PävÎ¢ü ZÙrðÃæÞÁÆ.‹RÌÙõß<Àý÷¸nŽ-"˜ÎJít·º~Ì;÷ÜÉ˜_µÄËÛÞÉ	JÁ¼Üè_Åe"i‰%ª¿Ø‹Œ†¢¦ž%§ýj6sF¦n`ê…ÀLbQY;Ìy~³åýßÂk®'KºTÑÒ""üS£±‘5”~QÏ
+9ËŽ•{^¨J¦ÂÒJdÝ¶ƒ#Ów!U4<‘§l#Uáë,{ñöç¯Ó·uç¸ý˜ø¦Á.YèÌù´ Vê•ŽW­K5³]¥ÏÓJ0ØC±M{ BwÔvØñÑnw÷ëDxí†\SÆ.&.V´bæãº´^MjÔz²NåckTroŽž¹va ÿ£Ok3ŠA…bÇðrÞÐŸ.õ>–“5)¸x3¼·;g‹£ØÔ¹-¸îæÆÖJ¶®ÈjÍ–˜¡ÍwÞæçÊÇà½‰hãKŽà–R´–¶kI^”ékˆp		ŒÊVÜšB¯äŠê8<S›GŠK0úq,a‰µB¡ç¾ôÐùàŠxÍƒï†&ý¢Ú„rZð>ö²ÑD]Ô	–+Tˆ?‚úˆu1™×aÝÝÑä=ÄÒÇ•tóê–úm©†÷gbL¸è<°C¬"Ñ˜x\çLFZºJ{w®ußìîllm<ÉZ/œË´½:«iD\5iEO| zÔÍ¤ÎAßÄaY"A|ïmu÷ñ´÷±ŠèyÜ÷P’Ÿ¤ñnYFÄëE©F¬u *ëf¯äü’Òª;Få sKlÌöÝ®p<è›¨µF Ê|È¦o­§8ÿÑýÐmì!]y·¸>2æ¨ÌªŸ/Y6Ùßâ‚ô¢Í•ùSòéØ9ã›ìµóˆŠqGÍ×Oæ‹nýz6x°øÜQê„rÔþ«õ-õÏ›Óõ½Uw‡ÿ”Ãa¾Ñ=XS.¿bSôú^ôU¦kÉë&y¨$Á¦Ãrí-Œ”‹y]û\ðâ)ÓÍ~Ík+‰0—Mã}Åÿ\G)‚’ïåÕÙ‚Â…$>äTº½Ô>>ZuÏ¹×I(ŠO3wå¼›½x×Øß©Þùçˆ’º¯xK‘ÉRWv¶àÕic¬B…b/ÐîÙ MöKµ6ºouA´×FãxíG‚¨sööÿ'Vø Ú¸O,l®]MßÃAQÅ§+L¬CòD_1ÊÂDÞÈ«ÐÆEØf¿Ý·Uõv¶d8qU—±¥óÛÓµóÂŒ„ÿbÛ^„ZÊEse<‚ûxÀÍ±4w­Uì°°¾eHÆ	eˆx%ÉV¶l?Ê±.kJ p©ä@Ky&çQ‰«[W¸ Û`§§ƒ|”½Êÿ3Ÿfßÿ'þuPôÊ|Ì)•Iþ›tD‰4ŠüÇy¦¹t³É%¾wKÛíß¿º÷8põ¬›×?.}R¼jÅv‡D¦æÊí49çë¬Æ¾1¼±@N’±1ø¤±”+,åèmÝ'uÞV¬ÙW“µ<ò£Ä8§“ÊÝÂaí©uTJÌ7?ÏF“(~aùy^›+çÖTÃ«¢‰“O(^ž÷I÷…N›¾­»^$/ÇÕM“æhÑ©'.d2–ÉT¦¹Zb2àŽdqkµŸò€ü—Æc7¤£+C¨CFã–¾yO{°ÑÝïnŠžUÁV½ìéÉq4C÷âU3Ô$S±ö|¹µò\ K»ÑLCõázÞão¥Ø)dsåç5'ëÒ‹}jy¤„sä¾Æ¤Ã‘»Hæ¡$0ùœÀ×—ãÞÕËÄÉ®.ÏZ³ŠæG€êá¸–7»ôš}s2÷IØ‡y\
+OÄóËr8pîR»Ó°ŽìÖððxéî£ôÑyÄ)ÎM0›ï#¥ &¸}qC¯Ö1"3+Ý¹ª7ë“$2K–±;ÓBtÔe²…{µ3éy{VL/„-ri-…$äq7‹Õ¤heÐ¢oö‚$í„7ƒJ"D³§.Â§OOà°æìðqw‰‹>¾+R"ç-[§ž˜ÃùË¹/zV3‘W®¢Žœ–’‘;PåN(©=“Ï_ÄŽ@¼¶äl¥ÊáÐ¤)ÁÝ9;Ã°.‘ü‹g¡DeËF"|8)†ãUuáb‘c¾Þdk0ylÖ&ôæ²-a°¬À>ñ$ÚCÌãÀÄfíÍŽ•<aoiÊïÂjÖÞê çtÐŸ:?þa¨A£Û,DÆ+H_ØW´á¶½ÝQ¹Ëß¦U²*KÞÇ…6~æ4ƒÄØ#§Ð
+ƒEl”ùÒË­î‰ÝÈxÎ‹Œ¯ŠåZ^\©‰e·XÍ„h.ÙáÈ
+Ÿçé_/~÷zûá5†Fz-"®	‰ƒ3îå…SãÁ]Tæóð|ÁBCÁsIç@9Yb…—ëÁä=xì{ï2­G†OjAr‘Mì Óó"õ„Ô;bCEÌ}7fo©í¯À =Æ½š_£A6ŽèÊM¾j14|…Ö·ï¡@Œ’fûÏHV2˜SQ±·®›•ÀRGÌ%¸÷n4Å V­½¼‰¤}3ƒ/Éy%.%Y*vå*~Ž¸^3« _³m‚„u•¯HºÔíÌBuFÀ¤Oß]Ò¾ávtveFË‹Ý©“HMœÅ›÷•ä.w&b6šÈ.=f£-6g9¶£!&´±l;â´Dc0ªu`¨?G¹7¹á&÷(Á÷xl«¥øåâêmÿ›P!†ÓËš\ßÄŒeG7Žër0»ìü©ûÐiWˆ_2±,k*‚FÕú2<”ž9öó‰¬å¶XSç5Ÿk -·Â%	µjI¨z¦Z`t‰ ÍO^Ì…ïÄ¹%žÈSoö,]EkÊE~“Rž£§bÊ¾WÈFg*.å¢·âc
+9aðyò÷Æâ~€mHë³WÀk/U_âú±ÇézêöªOÒ[á‰wó<öëEÚ)ÞyíN»¿/¶­Š+ÝFÈXÖgV7+”¤È'”spÆÄ‡V¸»¼Ò ðËZò‘1
+<¦m9¯†ºc§M‘ ¯dÍ‘¹ëŸçSùÏ±H^.ºèÒ¡}-¬#†QgS#%` †žV½y=S²ÛRE‚U¿FÌuOxÞüq(uòÂêiLÐÜXæÉO¬À2Í9îû†'ß¦ÂsÅßs~ÖÍ¨±¤‘rÅÝûÂù‡Îû£Ï»´¡¤†³à)\¯µGÊzdÜ—¿´ž§úH’¡SVÑ¥”¦WPCÐIÓÙ°D$Ù°`¼\Ó•>ì™OÒ´˜ TîazƒQ¢^Ó‰­Uýù{ðÿ¨šTî05ÁæÉ¿	Kc92È½‰m.Mâ\£úÖsy)Ã–Œ}FoAXh%S:’é¬ò ‰”YÏgÝ{©
+©ºu,‰ÞÉ×’³¹Ó»?°v¿¿/Ý!ýá8®á$.0Ër—Õ5"Q_LjÜöó*ážôïE*s,«ö…ÄgvÎxþb–†êv“/É›X/sü—t8÷·…Úœ.5Vòü­`°Y[mP÷èrw†0­…·AJŽ,_ò¢îµ2µe<}G¾·š >³·cVÿÅA„)MVª6-®à—~9Eÿ-ï›â:¼_òÞøGÆóöŠ›ÚRågýa)2*5ßž…5[óž¾Jáo^XÆÝI(xlã(TÞ=ÔÌðü•Ç-Ãòá¸1ex«
+Ùããf¦;˜÷«^ö®€v´pbúz=ônêëõÀT@(0pl
+•V±€•¿x]ëÝÚË‚êËª´„Øœ™ÉAvä%[ì>Ráé™_—vS >‹-Ïcìci_8ƒ2`›ò	›M¢ã¢ðåÀE'¡™²îÿÍ¦ž¡Š³¼’ÔÝ¯Ü9ÔŸ¸‰¾éÃws^üfà¦˜ñH+õÊÝ:® ‘pƒÎ»ÝÆÜÜÕül+¼nFyF“añ+:6åÅª#J˜RFx~ºô,/I³gíB~ìuð6A8F˜“øUòÕA’ú"¨/ïìîoï>!DZwá7;ûÛ;;Û|æ­4žŠeeõÁ=¹‹Æ“ O‹(òÔÉ“1·°sŸº£øyÓ*FïY¹‚6Ÿln<~éÆ™e˜Ê•:/‡Ûû®Í8ï8R(PßW2gL´/çÒï6R›SQÆyª(t¥´“~,[X¦Â(W§“9w^Š”¸Gn_JcP§ô-‚,hL‹"'q¿‹Ž¼.Š†‘¯ˆéãðµH¨A¼*P£xõäB$°j*kqÇ«ÎûÌvmðÂÖ6ÅÀ9‡këÑK|PêqY3L´oþævÛä2{ÑÍNÕqáû÷òŸ›¿ÎÆìaÅåd–hâ‰Â	md¯ÞS¶W 9†Ô• ÝüzIQk9™0ñR0ÊHEài2ÄÏü¯Ï9Ã¾ÿ÷ÿø«ééhUÛÁ°iø®ŒyAÜY‚?É0¯õ§ùùÌ!
+­z)LIdF¢—±qçÍ¯m:vÍÆËâ_Õ&DÔ"ÉjlÈ;PX™Í8<±&ªÏ%ÄŠç¾.—’÷ZNGoG‹‰KRÔAIN|Ó+l‡2ÆÕãÄ‹¾‘D“×ŸÉ¤%‰ÝÍàÈAfŸ’°5Y´=ý¸š­æ«•³œ‹ ÷>-9ÍÅNJ>!pª(A²`8ÔßÕE<>ruVCãaN8’Û+Bä#zTÑ[}XîI“M([[³#^|hˆ5Ì$cÂ×îæCB„"ª2tœ•ßè> -?"úÑ¿.#ý\µ‘‘ÄäRyžý:1Œ+/>òpXn¡¬¡mûö™|;¢‡â 	«w¸å:QÏ'*[J3ÆøÝSæÍÏ‚o	À±'ûûÂ¢gîí·3x¢zº‹(ÖòOIéNóJö°LÁÏs_“„¥u/ú<™`™$Ø>Ø•´š_ÓûÁbÁtÉhÒ@ÝÙÎ¨IÛõ’*NV¢xdˆ@kÓ7fŒ5gxëæžûÅ¹ßÝØÝÚŽæSmŠõY{·»Ó1m¦”e´Çãð÷	Â0úïÀ·î ¶vKy¢oGÕdé½7·6³ÖKYÝV™Þ…°4¶¤úX³¦Ïb¾Üœ¸?fÙ>ð;'þÊ?.LãJs›HH>ÃÑ ûéø%{@ÛiØÔÕµ/Ht)t˜&ŠÜUãÙ5SÐRiÆdÅ"q(r_ƒYC¡a¼j¡²OËÖîÎö¡{ªòÊWæÉb4EJ¿V÷Xäü¤Ó«F/o¤€+e¶·þÒ@R`–÷Àf/ ´ÀßMŠ‹–ÇÎ–„z“Õiv3‰;Þñ,oøñÎ límînŠÁ×BL9Yƒ5Ç¥Ú;­&—E|ç¯î‘‚X¸÷ÁÆöæþ¡$ïF*cÃžúYZR,oñ»ûûîÍ#.úó¸WOþ²â“ä1!¨žP)Í¡£²_½žLRg](œ$”Æ„+b«Iò©TI9­È‘·’Õ7#©âH¾ióÄÝlx”e÷¢<gŸ+*ÀòÝóeî®Mš“™Èp¹2»Uð9ÑªlÖ2ø¾EƒRr§/ÝdïííP&mŠw¯´1^æ°QŠÛu1Q9©¿Ž®v÷ÖC^M—rgaM<ÙÙßÝ=Ì^§rÄÂ¤­ifÜ7º;“áf4€»§…âlª²ÌÑÓ¯µ´¯âºç’Ê66oá©ÿùõÛ1_ Éwæ³âåû“%¬i»À¶s÷ï¿åß²:¾	Q I5IàC¶7:¹ÊrºuÚ«œ³@<c_Õ5fô(«(7ðœé¹­m#·ÕØQ+¹rîhÇ2¡ïQÌH×8÷hðÂrfÇŽâÏçFKh¤û[ÿcN‹GþªvÜNIÞ–Ç²Y™NA1èL±+nNo¤€Žøwö£¸îò"²Ê@˜+T8ÿ–ì»€ËBúé‹·/žaëé%Ý+ª½¤µ`£	Trs‰ðKdµ®äàGÇŽ¥TüÃ Ö­hqPž)<G²ÜÚÖß:ª
+UÔËÀ«!èÕÏù½Än8çÑnßiìö{éÊèŒ_ßçÁ‰²äçR…šin,«ÝÊF4÷+ÞxÀ>Ë"¿.V¤Ï:²ò˜ˆäÏ_\æömù;ºhX`„¶›& rŸ'Ûvk³³ÌÅßÛr“´& zI(ôQëñ|{¢ã=7|û7£Gù}‰«âþívÞÅüF“rôó‚L7qÂˆŽgS­ Ù­È›©F.võ±,º¼ùyÞ+þãæùéÜÍZ©˜½„ª¢v‚ëxšîŽ£å4EËi{a9Ý#âÕIgNƒý'¢[æíFQü+p|´Â1·h¼ä×ùOÕ¤^ñšT%ÖÜ„ˆ?E=„¢âè1î½v¹wî¿$r¿åhdî\”ˆÁxŸcL¨ýÕ8	¦TðL˜:šïßD‹–¼ÿ@ä7¤H%ŸmñŸ4öjšHÕ˜©»Wæâ™Úoz;O6·¶ó)¯y=VÚ%¨RªÓiqîÂ%lù$„Ññ2­›4
+†bh§„Åç•Ì!ZeBF‡õ +=¨x˜ã(|9ü“Èiw³ö šu²o²öD@ì»çuÇ§%|Ò¿Îvö6÷V3ñÖžð¬ÞÙ;ØÞÙK$¯+~ü2¿ÒV#çŸà„ .ˆIEÛ‡ïÜ ,2£™·„vò~ß0ã W¡u©O¢BYaX$×è¶r=OË¬m‚°rFÉ)Ü+×ù×¿Î«ê_½|Ú3XY‰òzæX@¼‘ì@Ú+lGm«×/JPQy5-Aö\º¹;ÑÂÚÊ¤Ã}÷:{Ý?’"ÖØ-¬Q¿À?o#žÙ^|Hµˆ¿˜oE×©þ»äìÔî˜Á¹ßJa°z ÃÁŠ`ÓVT|*š(	J‘¢3™;³J4"2×,m"bç>êŒz[SŠÌþO×$‘ºã¤ÓM§ãb»øÑw—â®ä¸\ßçº—Ýæo¤‹™Ñ©:åäi‚ûCá‚!Ž}?¹GqnÀë\ØÀß‘Šs"­€ÄE=ñÏRb x†þ•ÏÐN¼8#'î|œ}Õø(]lêy(•éIk†ß[Nzyx=* áZ7ï©?Ìvüº1íÖÎ²Œ*û»‰è¬†h›õùÓo£|Œê‚ì²ßÅþÓs‘yö,=âòÈõ*4Ïäß+_mõ`Æµ±TÁ‘©’Òï?ðã[âÕ(3ôAš?sêLò~£)9	AÚL3=WÓL&hL_An{lDg•…T =ª”Í±?àe%¾sÚ^rÀŠ¤sÏ§Á×¹;>¶;«’ì}W\å²öb|UN«qÔÎÇÁÞ=óÁnE~Þ–÷óbêOJúy‡% ½Ž}ÍZ?œ·ôæ<t´¦óF .È€#HA¼Ÿ‹Õ¢š.c5ª’YD}3Uiª¢ uãÞÓVrzöë »y ‚“S•¯my1mä[^ïZøãžN/.Q¨%=QáŸ/²c¨I*×ŽNH˜@Í©âœD#ù™õ1ÈX}5Mb%IÜÎ¤GKôDÍk…y2£c?B†·ÈÚîM^“Š@¿%ª9-ÀiæíD%æÐ4™¶qDÔÅXÜ»|À—yÏìÔVr>H  ˜ó‘ÏœÏèœ@oeé%ÄF&wÚzúºÓÝç^8Q„úü¡Þ—$ÊºIõ5Raû»›»›‡Úø„#$^Káú¢b^ žÃ¦ŒÅ=ê4k<ª@vß'V‚–‚'‡, ÃyÌ6¤} »ŒwbD>'Ž`¦¶“„Q@ÔŠ¿	t<âNS¤SÙJyÞ>Ûò¢÷rjÍø½è),t¡âˆ®Ÿ×gpOKpI1óA95žÜàˆTvñ²3ÿîB}­rÌÄà J5îþï€ßÕVKànó@*AxÅêxÝë(§”47Bí1‰?2CCŽùRx€Ë®98Íb0€]õ¸Å§à'—3F	90lo.kI›ŠåO4â¯/+Ðè0áq×ù#ßZáo‘øÓN&ÈC¿³­¦ï+ð|2_’úWC7Škàî° xl7cÁßáÞ:ø={&0bÙÜò—7$c’î€l‡Ü÷ |] kªý‰Ÿ<#§\éØ-’S*ˆÙ´Ã“0Ÿ\Ls¹å¬yÀ(€´›J;•«==|½ ßHM¼ìXG£»Ê>Ó7Ö2Q+¸Éa«y…Áôy€¾ýð.{úêÙ‡×§Ù¯Ç¯^eÏŽ²§Þ¿}ýôýñó§¯^ýSuŽ^¸Å÷iFh€®ÔqäØùŒD3?S*¾´¶v]h™N"¡¢Ú}¶Èc`ý IëLÛ]ÉWa¹$W‹Ê¥ÖÅÉ_ü «“r3¸(åÕ53eª®Œ[÷ç€¶;Þé!©­3^‡$ïót ¯É“bEò~§3.ýz)ÚÑò¾c€±•¸yÏB“¢³éÚBe :³ûy8+'@`Ö†I4¤-Æ°qpöfŒe3NjÆ¡à-¶‡0 ¹Ûq}œÃÏ.å	Aˆ°¹,ò«rxÃ”‰±uV1âÒ7$U>œ‚]y/Ñë*g™ö‡Fÿu«PTüOü‘2´´Å4•Ö‹+j“@}+GïfÉ£º9è„9½;[rðˆ7ÓÌ§\åžÆosI .ï¦åŒßæÖÞö¡æ}\À½ÃÎ—ñQ_·âÔ¡Î¿zåÎòq”kèí`ŽóŽ‰„Íä€ŽWO¬]ó”™ þ½Q#Ö˜XÓC	;ÏýµÍ{êqÄƒÜþü yTx‘ÓØ	É)Õ´ÇAƒÈgMÊÃB­5#Cq0Gƒj.ñÛ«ü<Ÿ^Ì‹h8Æ¤}ž—²ÑÏ·Þ]Í‡‚±FN»$ezx£bÃÑœt^Ñ|½£÷7I;¹pv pršüï4
+éç?hmJ`~v/Â}áñ³½•Î¶ûô2k	Fšq:c!ìðÐ;ÊÁ+çý°½+õì¤0l9ÈºÁ'æéœ‰•<’‚ÇãÜ7w²ìq`+¤ê;âõ£å-Hf@zsPŸµžz6úa—É¹èO.`®%>›ŸŸC \Š"ª*^ô.)âdÏñœTJõ‚;q2ágTâ[âÒ~â&sçerZ•,¡»Ï©dÎ?’Àqw±R]~MDÌ<WÏé ëº*sîš¢—ptEÓÄ½ã¼$ìRþüþõ+žüÒ‰s‰#õäÆ•V3T>¡Ö­„ŒåØm<L>ŽeÐ2s#Ð¿én¨bÞg`ŽÔŽGÕàŒJñE_åi^¢:pz3z^fb0ã”ãBc?aïÓ`H,¬9SÅà±9\¥MÐI¦zÈhyB¯…1ªÄKøžÕX,a>ê‘‡„^†îu"d¦s´'fÿ°¾È¢«ðåÓÿc|•zÎb#
+Ð‰ŠÙ/$·ÀùRñtÓ¨`A¼ë`ðØ[¶=˜ô„ÀŸuHpP]#Ò•ÖDï¹“Dp
+v'ÉV÷V-5+öE¼R`rtCùùýû“S‚—EŒ
+ã<
+¥T%4kâ‰Uz2Õ7Î÷J\®û¢k¢wg vvö7ÕÞ‰W.”àÒ8(È´RâÇŠÁnwZÌS.É…hp€ðöRN²1FÏçéCr$ôÝœ·nuQ÷«/‹bÆô„ePãeÿ^èÄžó›™Hè%³­3Öwniò¬µÞt#ÏRhá,Ãˆ#v½cr¯ù7`<„·†y=[5ðÀ ^›÷ÖžÜ‡É[^ªuWòµžšâåõGðåµyÝBm‚Õ´xC÷¶î1%W’k—îáOÑ‰%3ò«ª€qaRÍ@ˆ24ÃUh0
+î,ákçy úY$Åá¿îÄø{9ìMæmÍIâ">¹oÂÔÚ@Ñ£#•¨&ZhQf3$$,÷^{"µúìÿø‡¶T“%@¶ˆ€wüúG’tb5ÇÂq´ÙEÚ•}3Ÿ­ª!öÊmŒü«Ð?ÂäC ÷zçSJ ÄEš†Âv'ž²ûÅ&ø’[“	>ŸÀiòêv£ÇÖ‡”¼„4Û—+yBøãƒàà‚è„·Î_õ„•päuï•ª`YœàÌiÈeq…™GÏ}·˜ØúqSÏ1ð,e"€¸e	²ñB¢™ÖH u‰ÎxS·NÕeµùFÜýsé÷&•U¸Oƒã£½^1Ëã»Ÿol]½w~@”MÖœ[²V¯õ$IU{z&%Û
+|äÌÐ½à,õ%)Q¦îåñ !ú%oÓ9æu$.Ó®ûPÚ«>
+J%šŽ{Â<¬S÷v.rUõÂ\‘öü—dK‡ãåAø‡ÌEîÈÅ<4‹¡€w&2þb•PÏÉ†.a•ÓÊSèþUd¥‹=,ËÚ’|°"ÓÿÖÆ~à™œF@Àh ƒ»‘õ ¤ý‡k( néi¼ªÏš4OîŸYƒðb0œ€Í;s‡AD˜­ÑCÈÚ™7|¹r¶æ"`R"¬j	nL¼NŒº‰âžQ™5õ.ÛHÊž¸šµ~å¿³×š’¨ÅŠMƒ<¹MóëÀ¬å\*óB´ƒ)äýünëÂ¨µï4Ãü:´¨×aš”ô°CÙVú ˆ»q§VþÍV£ö
+0‘ªeDª 	Ðl,I>ôÙ6yúHwx n,Xj÷F“óÒ¾6¸ð¤e(/öûói“×5_àA‹•€Ô–‹É“§gvVŽ#ÇS‹@D|¤À%k9 Ò–Dög³¦ü¶U½,É‹ˆP»ù”o³k43™kØ’!FlL­fó1³'å†û€]ÒáPXI‘2ÁDE sZÒÆK8ŒÖ#Fûmh w{>,'H°²ÝEp—,ÄràbÖbÏFÜïÏ5@DkfCøŠhbŸâTYy[?ûõòí0ï	]
+<0£ýH¡˜ñ ö>; wË0ç KÊ]*ÐÂ2EÚ¹å„à¬{¶½æ)#p: 5ƒq¾ÈÑˆøRDÈW	]Æ§ý½Û‘V5ƒKÎRvŽJ§Q]êv»HnçC)Ü(+NÄÙ ×Œp_	J@N·x$Ê)®þ´ïsÁ³Š¯•.ùë#¾G%YVZ’&º&ÊSßô€ðb¸Õë"€! øRÖdê4*µ¡ÑZmÙ¤ìƒ@qÓ^ôá Xb:%K&±ÖÌâxùyÊçÓã°šò’Á‘éK¨@Âï‹£Q;Ù5Ì1×Ñw¡0X?­[_í‹¢ø¼jÑC¬sºyŠ]Þ&QgB¨õ;É
+ÒYÎÎ‹âô,:¿™WAJyÙ*÷€Ù€;u®È\¡£ú¢óì¢¼>I UÂgê€¢‡°µàîëSº¾¤ù´:6Ü/Å4ÊœÀ±g^
+ (È¥£¯{¢ÆoÆ‹Š¢ë3Ê-žø'm“Ñÿˆj„’+Wæ%­YÂ-Ë×:‘…¹m	r9v¯PÒÌ)¦˜Ö”2HéÀåŠØ~´Y'	«³,XtÓ~–>Œo¯KLD
+Íß"ƒ¤D¥¹µžöÏðk&U-;|;¨ggZõ·æ•u¼ ayjÚç»mc{ChÁÛo’æYÞü÷@ˆw­u?ý°O°×1SäÐž›¢èË>t«"ÚÓûŽw§C2¥¸L³î—ñn³¦XQ?¹íƒ1²J¹žJ’÷Ü1º›[ÌŸ9?»ÅqiriG ÈìjÕ
+Š®<·Ü[2#Ê×ì'4¥`©Åó,Ò/#mGÏ?UZ!Öºã¹½{?X4ÍÛ©öòeÞWúç” dP™rAÀ'³††¶b£vRþò9ƒŸ…ÜS9S ®xù
+/gð=îU1þº¤Á< >úuîÅª<Eîen”Ïœ£ûi-5cBg™^Lm ¾á³<È€fåsá¡NP•âCZ‡h
+¥­~)‡GuÎª£éHQûÔÎþÎÖÎ¡Õ`cç‹üÒ‚Ý]Ìíìî<9ÌsÑEˆª·‘*æ¤*%£’¦	ñ×uFÍÌì³Á²QrñÉUÁ|Þ^È‹Ëåêy”¨è)øoá\ü?ý²R&q¹syúMÔ1«éèë8Û¿é¹C«è_.ïd°Î­¡#ÉÎq„HPzøí…—€‘ÌtÈÔL²l–±ñ{U¤+«|n¸,â©õEs<cyÕÇÓúfÜç+x<’öÆMÛ†ñôäË
+l"‰½LdFjß¯ï0Ÿ…~Î€ýóLðñæº3©ëƒ#áLÓy“wÍF…Dc^û³µl	TÙP•	íƒÔœbŸ3Þ>V
+9zÊ™äMÄó#Óµ&‚ ’7½N·]‚rŠ8nkæ«ÐW7¬#ø²å«­ëëën<–§lÅëØy_Ý$@  [Œû7ÈÎSp¡ÃÎ-ÞwÅÎÏ£OR‰eyòüÝ*?Ã²7Í§7¶ô¤€lŠä´‚ŽqÅÏX»Õµ)&’>ÒR/|’ü¤É…ôP‹™S'¶Ñ*kÂZzAŠò5ê¥ß/ô>'CÍ\]Ïã%uçR‘Nî55+—UîŽAÊ |²së,jóðÑæå«‚EÒŸkK´&üXFó™W‘Ìk­TæS«¤Ô2MLêóAuÊ1(ÁŠó$Ùpwö[€Ï²‚=åOÂÚ)ÏÑ•Àà­¸d§ºôÕö ©XLÝÒHËžl€qÉÜæö[AÕD&)I²§Š=Ì?í>ª}ô´´ŸÛWhY[PnÙ|µ	\çˆà “%ÒýyËþœ'—y¯0Ý=÷éç^gû«¯¶—_%_âˆïœúýÓòxPÎ³­œ&i9'a°uSÌCX8™}ˆ›Ê	jÓ¶]Qw”£’9¦¢ÖéÚÁ¥ÇËð†õ,F¾Lè…m¯ò.òBÝeœ!ßìlooïïdmß7Æ@†Ï$vz]þ{6CÄièG}2|DôÚkFê[uz×~tìÚ8ª°öÑ­éÌÉT.gfž†ÛE]«|õHV;æÖ'!Û©œ³n0D0’¬Ð†”šN‹
+ÑCŠÃSã¡òÉ½ B€g;ùùäUÙsþrø}X‚wgX|»;»‡Ú0Ï#õÿŸ(þÔwÂÀiøh¤já=ˆaÌCÇÞ¦Âìbâ-ÒØuãÍs÷Îö»#Õr{šÛf”ÞwîîµÏü*Ð sÆpœýï%¾ˆáßøý´n–%Ýû_Ûä…Ç¦ ˜´ŒHÕšèœµ¿îðnKÓ=£ük·Äui÷ªÌ¯zŸ0NÚd¡KS€rÇhÞ>Ïu£ÇÛÚyì¦o9O=k9GW¥B_¨ÀS_#ïžùtX^Ã‡Ad5B2ç·à?æwj³Å=GõònCªeL“bÈ9!4¥rŸçd}—‘‚—RŽ&Õä îçg&ãÛÞÙ?ÈZå$- EøÂ,´uùïºëB–¢!ÊúŒ˜	òD6*âX‡›ì@7ÃÏ¾8•8ó¦^ÎÂˆØ’I$" ™æqÙäŽµüò‚¸<(ù2”òëþ¼6§ÅLÓßÝÿéœ¼Ù÷ÏÏå»à¬—4#š»ÕK:d¿–ùû¾¸–ÿþ•ÿaúFœåùãRó±Æú®bÚè½Ö3hZUÐ•£¹ÐEˆÊaþ‚áªR.Îâþ{8òð%ådë¹ˆôÜ+W	BCœ%§õyöŸR‰óÙ®dì‰V™T¡ÃÚóû²éRhŠ¢1JÐ½‚	`0á:ÒîUŽ,=Á¦Iþi­øl÷%b„59}ŸEßìlmom<é*"	¼àÇœxh9T»Â¿+ Íû~Ì¿8ÿÏ3¬ŽóÏÜûÉ“ôþ­6ÙW;-iàUJƒè[xÑ¸ZsæèaëÅ"Í7~f ;›ÛÛ{Ñ6â“»Y)w%3TOžˆ[Ù:’*Yöý:v7XÜåBë'ÜßÖ²¯oìlÈ×Eº@7hÞì¢—¯ÆC¼·OÉòNÜ¿ä½FÿÛÈÏDâ>AõyÔ²V‰á|Ó“².z$A/
+˜†¶ë7òHëˆªö,i˜*¦ÆŽ5)ÏÏ‘†Sfæx€¿È‡0_òôÉÑ[)~'ýÛb°,ÝíÝ*NÌ*CõåüüÜúúŒgAEÃ@zl0	^øQÿKL+“±–ú5ÓZ.‹Ä6aÓkïÇ	ikïsñdbPÿ6óƒü¡Û·H$úZ‚ÂlÕT=-/Æ =—xPä
+-ÓÈ	î´'¶Ã@	êêzŸ¹Ø}9e¾ÿ(ÿùk>ØÜqû[Œ}<ÿ÷óDŸJæaqlî2Š*¸šFß5ãNa¼ÌW‘*à…Œ7rû@ÒŠ‘”'%½°^WªñƒR¹‡‚.1J\^£±WXê3!€‘´ÿ&aþu.ÊF²¿[I¡©ü¹]Âí™šFše¹Ë™·0Ø!¦Tì{Vœ»WT"ÅswÔç¯míXçð¬¸ Ò&hR<˜CÖUíŒ´Cº<Ép7·s=Ë¾ç¬BÅ0@¡¢òÓÏO9’<;:z“½;:=z‹â?ÀP0ÁÀðJÅ@]fà)ôà(Û¹±¼çsFU’6S‘eyH:!Àðú#"ÅÐì£¹ës aåxØÚ9àåA‡+4‰{ÒúXÖÁt×‘@‰ZÏˆP9Ã,ÝL„ì	çp1uSoÑÒg:4ì0.IdŽÜCÂ*Ž-j u¸2’ˆrÿ)íQhšÙ¬—/Ü6ŒøZ´³ÜË‘ÇôÏh.sÕ-J²´Î~jeí(iÑ1K/-"=7˜#¢³õ‡/fKƒ´Å-ÔáEªdª—µO_ºW·±½±ÝAœ'B'nçéW±~pÒ®EÕu/Ô³”:\ãï¨ú3çÝœb? Q À×­2Úú.ì1mšÅê˜HQRó­µ˜ÞÇ¹ß”„ZàA˜w±š©¤Ãø…|ìƒj×ÎÏÂR ïtß¢W¹ªÜUKø]›5ßÔê
+¥^u¦"xF…ZØe=ûÔE4/˜ÐÅV34x”«‘?jø9ž­dŠ%M’¸zbÄÙ¡š[M­‚Æ¹#€-±iSøžÚÐ÷cx1¼|òºükµz`>ú0„\(Í®»ðSý½½P½íùÂxh¹Ö;c·Û, ABß:a7ÿ 0\V$ì	õ‰Í£9 þCÒÅÔ#4&;¿<®ê†9Ä3¯Ç†:%ñlû¸Ì·;;p?Px)ûµß¨Oc×I2F³êB¨
+Ðkµ.è ÙñL(»õéøF@òaaSVH–§v<'Í¿^HbW¼¾X…¢š•hB¾n|Taö¡÷F_!ßs~Ï<F©^qOÑõ§K„Ü¤•~ëý•·ã“7ˆŸ)¾w{_-0úlå»•àe é¿ŠÃÅÜè¶#Cþåœý‹NtÝªr/rëi0Í¯%/ŸÏ+V$ý–ÃXbæWC{"ùi#f­QknDh§i/Ô¹ô¼¸ÍåÝB–Â±!ÿ|7CòP÷Éä‰»TÙ?ûïyåœÊ³©˜…Q“Ç$äµ®¨ywdº}»ž¹:•ñÆë³)¬3À±£3pãáÉ‰‡À×èe:Dn<D¼8¨½XÑÖîÁ“}ú]õy|ï'÷¼74Œ¶.4Å$ðD9|Ì±ÔYˆ‚qÛ’=)©¨<A—™§Ü[²ìçrÕž¯9ª€ûZ‘a·Aì¦¼êÄa3Rö¶\,7€“îh’€dÍ¥ˆ|2§ê˜pî(´DŠµ#uºˆ†™æF;ÖD¸|èmÜéÃ¡ÐØZäø"þqÙàÞs®Ý¸t^|>W§^¾=pô¢µq°¿¹·lm|9œJa„³„L”Ðˆ`¹iÜŒR¤aœÙG][g:B{WO¨S’GØ0‡Ìü9¯eÇ°I"è]!ŠÈl†š£N'È¿ü4ZpêUÍJä=¤eÏøéA°†e,3ÁŠ»OãD€‘ñf]0™Ä]†Çj—z|¸K®Y|¶ÍäþôŸbZ-_;û[O°YÁ¢·¯³}ÓâJî¦Á^t©;÷ }öª›Ñï\ZzodkÕ÷±šð¾$ß5`	%ŠQS®¢J:mM¢ÓãsànI¡P|œá@Z¡àõëÌÚÝ@G±¶¦ÅV÷=9Ü£Òz‚“–Dº«$L•õªÏ^^¯Ë›üÑå·mäE£§·C6ªœ­YŽYÙ9€ûóÚÖ*·cçŒo5/MàyÀx;B™ELžL‹µø ²9Ì²'›ÂËQ‰B×ó’¦\h’—~q÷3ß«í!À¿EÿAeJ¤‚ÜM¹Ì`ºõ¹Q`¶µOâE­CÃÖóAz(k‡7ªf:mEŒ¸ÎbJ[Z?kq‘+„Æ°†)K)¥Ë&æ0¡ñfR"‹[É›q”‘
+Én¨ñY£­|}ùT»I%«Ÿ¥¸ mM~÷|ÓŠLîP6\nT‰N	§³˜ >6zØG†U¬¼&÷}`DpS9v3¸ÊþBS=ƒƒ4£´!4Ÿ@A<›uæÐ½I©IÊj!Á†·wßÊþi!T¨bÉôœ;[@·_×]/5:“ëJ¹I<™ YBô3È‡Î>ð«žýóW^«¤hEÕÍÅ´ÆU]­r£È³Xá«š$[à{IÓ²¦b}µ^a ¢žÒ ¥à)KC.D5©uM§Ï ^ÎãÝKÒ<‡qPx<>Q€x^«¬Sé‘óÿ–¥ÒyÖÎ ÅŽôøÄ·EÒvø}93n‚Û5ÙÈ&Px?«ôÐÅbÝ(ÿw5U(7d¬¶â‡¥k–y0‘‹âë¸BÏI!=Z(ß +ŸÂãfðñG£QÄóÿJ)8\s¥Ö+ñ˜.u	¶È ÕÒç×m<LKºcM]<—¨ƒ©—óó¼½¿±}³+c¥0C¡«IC¡ýY¦V\Mðqbcˆ
+Ä+7·©Të<Ö5ÛP‹oN€Þ9ë0Ó
+t@‘«Œô*w2ˆ%)ZzÐ	ë©ð-0L'¹k¨òÜÏÕu†FC’x>£É¶ê'_Í"ññš<y ŠY›W?<Ö$ŠÔ+GLÃµ/ô»•õöýÑ!ôß|‘d uƒëÂ*#ŠJ%a´vžÐÀ!•0•[O•üËM£©$ù|¢¡æûÎb;WX¸*Ïä{¾òîËžì8—3Ò‹ÇÊäÑ‚Ï|¡ C`R&Ÿ`Ð”ö¹1„N¥M}šR#_¹"IäjÓÐšç.¶ëÄ[þ~ø)ÁKžkx÷VÄ]ú
+Ù²PÍ<o'»äj’žÈþæY6Òš×ÅÐ-@ÑÖ–‚Ü\0²î¸ËqG<¬¯dáE~“±ˆ…šv+g°~Ñ¿soLKt¬»…BÔHe§ðzëOb^Ã„â#óÒrA=<Gé[»×,7ínõªòõL·Ôdj7®ÔŠŠsâö È1æÅŸ½/×¶,òÀ3M'xfOî 0‘‰;0ÎçÃNRßó:ŠˆFiS$7zt´¸ôÅÃÎ±/¹(“ÆµÀÖ&Ì=éHßüäÖ'ø™½£*¨­w.†|±{9‹ÔÓcÆ.é$«ÆŸÁ«Ï#ˆ~H/ÂxäŒãéD%h·FùvËî8wÝ7¤+~Ÿn£QT[’ÿ« ,ïe›(× aÈäŒ@izmb<ã«»Z!8Çc¿-V£ûiAï;4s|'Žp¢ôú:G7›^Þ7]„—N¥çWSdÈ™x¯ºJ‚V_ÐºG¿ÉtÒ¤rŒw÷7tÀ·/+wÕjÖY1a±%½\LD‹¦Ü¬ìÖ	ÍÍY¨ZÃ•(…­·¼(O\­,h¦0Fr¬½§'+ØI1á´=jvQ(µ/¾Y)©lƒ@[îìÚxfBÔÒþµªÁÂšu¿Ž¬èv•6òŒü_h¦ßNvôã—ª[ã¼øÔ/Ükóñ1ÅR~ú(Yx‰KÚmx „-xØÙhz{IjjŠ^ÛálãÌÄK:½œÏDB ý¡Y0ö»(ÇgUÅ´R=îYÜ†§BÍÖCæBOð î+éó¥~c‡@aRàt¾ ­>Y\x‹Ê»ùÑY\)éL³Ó\ºfdLí‘ûýÕ î€=F“&R–¶)w^µÄÀ’}“Œl¨BU×µ þ¬©„"¦ÆwMèê¥ “?mÚêÂÝLŠìX>Ñ‰ä ÜÑtÁíß­§}¯½¡à•ÿ‹–d¹2‹ãÞXk!ˆ ç–p«µdéÌ„LH*ì·ÑÍM¿åÓ,‹´B[Î¶‚³Jì«ê§æÑ[¼;‘<®«tùÐX^„ÑN·ós’¡ùê®Šš¸‡b‹®ìQ Íb•F£*¼†Ÿ/RD=…éèï°éŸQëug{OD ,z#ž[”ˆsåÐå’¨”Ñ	1ÃëÜ«ÇY>Šº?‹ÃÔ†ÿÐïÐk"Ñ7Ü38ÝLÁ·SRn&ðY&Q\Ç>ØÝvÖZ>»¾'ôüG…=“ßÂj€ÿ‚4…/ÙÁƒ4™sËj÷ÒÆñ
+¬ìæÐ³§Ôù]ÉÇµå„²!	Ácé¼Äªà`r3ÌÎÀ”î-oé<, §GþéÉø—B2;Ê~8."f›ÊXvºrî|v•'òÅ¬Y”šS^ºL?±ž¦7×N.¬ÏÊ®C}bù®Ï^x¼Îù¥Jl`?;£UcrˆC#ÑÖEÒ±“˜Öµ­|&_wÉ2ô‰±][fâBµuotIv&D$Âm•*ÂKvþ0woôÒS™{-bn–.ãwÜz:®ÆÕÈÍfkñõ²Ûf~(R^ÄÝµ­û%po[ Û¬k,%Š+ß²áúr–6*ûS]ÙðÛËHhGÍþA„Ð
+“²aÎYýª­‰µÄHB4šnã!­Â«=FWB#M;êÇ½Ä½Zå²2õÖþ®!Ï<`—y) EÉ*jU6F’M$eÒgÅ	(­^>âd/LëÆû²¾€è‡5,Ç«ñÐâü h56-Î×Ù›R‘óó±oWžÔ.CG5›ÔŠ¾ßáY®«RÎ[w½´ò
+àwè4ŒBœ5¼V£ ‘A¤¯tÝŠ@#‰¬02¯–R¹wâp?˜DSÛ“¸nÜ³­1û¥Åõ¾wKwBÎµ™ÿ¦<U'a9õ}$Kmxñù¾y¿¶·—·<ÅlÂù®äîªÓÂÀ‚&®.‰:$ŸBI:j[R„yo^¬BµlFm¨šòÏ|L|B>YTVšt«ã¹0½ú¡ð dE úm3‰|ÇÖ45ŽÓcìqkã„îDÓy¿Öé¨>4ªÆ1ßr&kG–$Yl£6ï“Ží2"xùäçQ±qž 3@Ú8u²ç? ¶è8¶B¹(´ˆF˜#)UÃY
+ÿ•ÝÓSþÚÇ§„{*+ã+ˆvTž¢¡ØÔw
+íÞM'_TÖKíÑÇcU¼9æ°¢4¼¿»ëiéì)¢UBÖ¹–Œ Ör2@.²ëîWJXäæÜþ­i$¤0aïŒL1ÂIæ§–l6.€T,®ÀÔ¨™`×*ÎÏ¥ÑQ¿{°ÎÚ"ŒÔãD"µ±(³5†ˆnDûnÏÃƒÒªPe*ñÃF\ËèR£²?ílZ:ËÅY'eŽ¦ÊcB÷S¡{}2ËZÔÃ±Í¸èo'G?éžD¶†’@©‚
+}Zxj‡º¡Ë	[ŒDñI’žålKZå
+rmåWeÝM.Zˆ8_n|×£«R1Ú²Ó¸¸FµeýZÂ¹v'^ƒ*•”"œ¿µçYhÒpp²×¬½‘L·Œ
+z2Â0ªµã_œú	8oŒ·aÌpû^ô å•Tó†CtËû$BtÎ¶Ý“b©²rÖÊhc[9 xÜÅ™Â aë®q¯Á&šˆõwçÎ¥Éš`üE‘­*T+0M”‹ÓüUQs‚VËû#äª	ÃñY¯‡¬­¹) @Usr›²îçhÉ>p¾4	*&‰ªùL3ŸÖV]}n£ßvsc/k¦ M©ô*9$cf¹ÃíýýNx”»sÇî~êê/bL<”eÀk!-BkQg­#!4ýÚ¨[¼CPsE–¤Ë’e„má9oM¹É"Âj¤9É¼Ît¹µA’ès­WíDÕNs¤•€DæpÜÖ¦zÑÍpÇ*Í•A}Ã~´Ãq¨¢žŠÔ·êÄä/­}!<¾£9æ(æ¸~fq	ã¨c_8#ÊœS¨qI ÙY~rÕ‹IJMë‰gšPƒ.²p=U_3Ã½•DÛÇ
+cgR/¸¯…^Ìuç«3aZ®|	¬y}š1<y½zîi§ÂÒ qzgsëÉÎÖ_¡»07&V ë‹ïðß“‹ KÃ¡]«¾¨B±JãÀÕ;Ê•†xÝyÃçÝDƒ†åÍâCé¸«òÒæ:±e
+ééÐÈÐŽR Xµ	iÐÙýt°À²³¹·±½}˜ýœÄdšr&Ô²‡¦Ç’AëGÉP¸‰›ÔH¢ëÚŸÏZ–÷Wx:VqÂsú}ŸQ.uædã~‰Íw¦\á¬yÕ´º%è)™E©
+ú@fm Ïµº¼è_J˜ÀtþªrÔÉ’ÖpJˆ„B@ö›—ë„õ¼&?Eð9¥ÒÇX²Š1mŠH‹}b¢³µû[ü	tAÍ4jBw¾ˆû¸{8žîz÷Ð]ìVíÅ,'¢Ì MUÄb„WÂð'€oÝgXª[0`3¯â‰HY;Rm`ÌÕÃ9pDÊ$Î¤D4Î˜‚é(ð–·|¿2~Ë½Í„žv–²Gr ›´8”}ñõIUVT2²\e rñþè•Íó÷jüßóÂÍúªGUäšã©ÔÃ|¢
+92mÓ™U,€<À™P%OV-&šPÎª¬˜¦Œ->½S<a¬¨æM¯Ô;§2&R•ÝÅ.&F ÙfÚDÓ†Ì×å`vì {·ÎèÊ;ÞÙØÈ&îËCÏH¥u·e$>Óú´.hnaÔíû´B’Îi8Eªíû*Lœ€$î8‹µÄj&ÎCc£ÄZ?­3 W°ôÿHë³…1252k\è„—JíËÅ:•	*úkÕ…bûkIV-¸§Y·•Úàè†N®ÜXÎXþdšf˜E=n|¼Ù<û¦™aSTÊD+i‰á_Ñýœ½¥jš@ël¼)Û™ffwÔÎ¤‘dX5”®ÖXºRKú@õ½BÙ„VÁ‹z1Q&ÚÐãr6¯)Ó·§ÖÀð3j¯Ø%ÒPŒ6îôù»ã“÷g/_½yúúÈÀ.úküªÙù”d8tcˆQ	U3-^_¢kÖw;1þƒ"ç‚™þE¹ÖczDp C<qÑ¥wÎäóÅÇYçðWB F€CH ¹r2ÞçºðÖL”ÄÎNÞýrôîì—§ïN³öÉÓ÷?Ÿ½÷ôÍé«§ï^¬ZrÂ]Ü}ðÕËN¼ î§äÛ}²¦Œè„˜GÓOÚZÖlûÒhÊÕµI×Y–BªÊ9„õ0þ$é‘$A>Žl½êÂ ŸKÿõú¥€žÂzWx€u/ip7}å¨ó…}yî»î=È×C[Ä-ÒÉ´d‹¨4œJeV9?MiR!™)]²þü½vßUççßÅWÿO9‘µ±fìîƒ˜˜Ð³úö[è^½;~î®AŠ†7Ý%F»ék4Ì7Öj¡¾¬¨A×æ‡’³—ªu1Y.YÙX&Í]`Çš;«‘tßØë&Š»!Ÿ’<J´N7ïw6-]§O¢ËíJîÉÝûç˜‘ìûÜýÔ½ÄO­çãøRW9BæDYSøõA|*¶ðhÚ¡añ–({C?£šzSE„‰Z‰tÓùw¢Ánß¢Óz‹ËÁK!ZÚ=}@Ã´¤ÃQ‹À]¾¶IÅÐš„,<~	(ÊdE¨F‚tÃŠ5ðˆÓêâ˜5‰v”²ï”K¹dmZ\D /Ï%
+Ø;=]”gqtyŸ&;"Ì‹aDH\,¬÷ª#&±²ïô ˜p¡ˆ)Û]Ž 
+ì`üpOêCªTI%¶vìÌªnq1ÑdëÞö*f¢ZÇJéæÅˆ„#Y­’öÏû—­”p@î$­ß³<œd·ö³­ÝElt!Üw/ô”¿'À/b„«ÏJÀ'õ_€•È
+-:&Õ ¶+†RÈ/Æ²(ÌÙ4o.šã»«;%ÑYÄÎf»áÐÒ\'Åô$Jnº%TÇ¥Y¹ä@FÒ×®‰1ËžÉ±&º~À©©»»Ò-'‹HihG½‘Q('|šQk‘Fý¸EZÉç:ÄÆŠO®•tÀ/Üqœ¸“×9GÙ÷÷Ó_ëa5»ºÕ¿œ?6{M ³[çÓ‰ïÐœ	²öxÔÝh^Y|Œf6÷	2Ä‹Pü‚´.KŠ³Ñ0ˆÇZÝæ¥3Þ°Ð1Z)GY=íÿÐí®`m®äÙå´8w?wWxjä]ÇÝÛÛ´²­¹À³(ô»pÄÅ =vÉ¼Á‹Rƒ¾Øòï O†™võ&hÝk‹Wãeìßùdã‹ãkDnDµ¼2Ø¹"ª-toO¼hxÕñeCKƒƒJ°€ÊJIzk´iÿ‚ˆ`˜-¦†©O4_Øçklhq­Á€F±MÄý<Û_£"s¸1M†PÈoæ³êLÖ=:Dza¿Ó‡þ™Èè÷ÎkE.ƒ¤­ÒSÀSEÎ*¶¸Uß“È½;zúB¢1à‘’@£ É´ÞJÈcF|b†88"‡woZÁíÊáfw8pž·Ö¸§t†fÚõ o!t	`åˆ]Áô
+´Çª˜ÃÎ›ªéº_”3¡ÉG.Hwþ6SÊçÌôAÍ»3fˆ‰¬×•»À]>UŠ¸xú©f§nBÜV÷Eè‰ºd¿åµÛå¬›Ï~÷&e\ÈüIšÿcX¤1"tätr±&8£‘\,8üue=5âlCL­¯-7e,W=¬.â³×^¡\ì××¿õfRÔi*1†9ûCkîÂÕ›¨#,dK–e·î›zGv8S“Pô=¹,‡ÙÏs®Ô>›Äý‡ô¶^+ÎrkLË0\¨®
+ ¬û£Õ G×š:Yæ‹‰k9~¼û%·ÿ^ˆ—û÷b4ÞUPa¨Ò“ ]‰eQ¾B¶ Â¶Æc­¯¹-wkmZU3»±*WQEúÿÖLU‘tÑ-y}}Å¨Ü¬JHZ-ébóÎ°Ý=“»ëÊ]ðá$šÁ)W/où’¢]LŽW¾¤¥¢±KpìI´Šèëò¦Cnº¦0Ñ7Œ¨2­°à<Š+7~m!gñÇGÜª½é¥ïw5>“Àî6†àzùpüDg~HUâºÝäü\©í@§#eQ¿§ÇÀ‹”sd:J‡QÎ¼ÖTÔw‰O½÷QO÷w	°UÊœ yöæ+ç]TÎ^H¹‰”Šgû~¥‚BiGæJ;ä7gØÆîK@`dó™‹ÏBb]]³Ù°Kf“Žu˜ôõkî„4²íFÆ0m•£c÷4&mÔHËïûÎ4n“æà4+rÍ†œ•š ë&êWSg–ÉÄJÒ2©h]àÒÔk	J‰9Þ–/!¯¨Lèf¨ˆ|—¨’'%¹œÇÀU½ÂJ¤YKŒ·`#w†cˆW{ÚY°ËIM$_+EÈíº^ïWxMÆ&¾˜{³—ÎÌ¸…bK¿e :6tùÂƒ¥ÌÓtç´A9†Þ¦Òö…¾êsg·øö—” »~ñ ÷€YßØªNÌŠ#z'“UâùCžÇ2-Ésë¼?S	QøÏcMag‡‘b·^ŸB&¢q¡0=÷p4rúî@T*``á¤dJ†‚H‹8ÍŒ‚Q<J°ò=ên«¼¨.¿ÖNÇ+”J˜gÐlgÌLÇþâ’ô…
+fvsK$jåK¶›ÆÝÕ‹‡²f)4i7#%ùÆàgä±oî€BUªQA‰JÜýZZæóúÒ¨?¦ÐÇcrAj†¸;{E:­¬/_Cò¶]ü·HòsJðÍ¢¦~SNåßWÁ)‡€ûŽûÉ]ÔýbD º•ã~g™Z³K	¤dìÙ¥–Ö‚Üº¹_€o¯³x{ÕÑþªò8lwÁé•Óðy÷8HbnÅè–.ªŠ‰$7#tîú9K³¥¶`ÆaÚ’›÷x
+ólYK3N“Ì`MºF"tÓA6˜[‚.)Dh7ºjMå‹1<ˆj<:FgÿøÇ?Lo‡ê· Ào:·Úö$ý/^UI´¢ 	%êZêî—`ü,ócMÀÀc`}åÔ´â~-|‹Sú¸ûº¨WˆÏ*/„[uõÆ.2¦yÔÊå;».ûÐK+kø|(‚¹È§6zÊ˜žåZLÚrKTÁ¬ßDÇ5ú>ÂþïÿíþÝÉ¿ÿÚÏäÜ¥2£rw
+-œo|rŠ¯:?_ëÝ¬IGC+}±â§ôahnù2ê£@=FþæRwÓ·%Ù š`¯Š¨ñ*H.¢ŒÙ~n)»Ó]£[¦%Öä4}Þ¶ÿð¦“p¼E„îØç)
+z³#Î]oìT.Ñrùeðv™,!:kªTàØ­×rÛôÒ¹ÍÝvð‘è²u[ÜCÒ¯•Lð§¨Ü ½Î5FÞL©‰C6
+O”§4WÞŸ)Ì–óß‰D É£ÄÎ’u >\iË}ÏŠ{Ô¿üT‡=_|ÊQJu	ƒËE»ò§&à¬=Q
+êU!T¢‘d.ôÏ™lM^2AÛÖ«q‹2‰cäü©Áb
+2&oäÐÓsg2,>i; ,‹«Ì¢üßœq7[ÎœSë7êãZÕ)Eº³òŒž·ô+u?hK^èèw­Š„è¹&ÆWÊN ….–:gÓMt+ƒ%ªÑjËø˜CÐÀ#×–4åšG(ïQ©)Xº¯Åá¹aÞÂ°¸(gè‰FõTº¬ê_Šká•ÉµÚé1›×¨ÀìTfB†þ³Ù]NTœ˜¹gJÎ
+’<šÅú—£j9¹k·¾´‰c¯Šü"Œã~Õ*çñ/Ñ&.|•¾N˜\UÓP#/VÒS­çL>®½¿™-îÑó*P1„|'eªmº€µGÁq!„ú¦\¤¬™„Í-]P˜¢+og«º)_ùòŽ¦apPcáÐ=áW“ÉhVI’ï0;zû2[AtÃÊ?IEåÑf¾zSI{š'ä–‡b¦3¥jÛø´³íþÏÞ9è€ñ±ÞMäìšT¿¨Ýô	%"y-?O¨,W£wVx½÷,”-Á‰FÛ‹gÜã)BàE²×d?Áüxäí8;øg¯ *6ÕÚ-†ñhT^¦oãe.)düItÝ &ðwí²”J$zÜªØjhÊIÕ3™VPš.²ý½”Á0nàW‡ËÖx.ïWÇû ÚêQÊŸ]5ÊcØ+¤„Ÿ‚ªô=k7‰g}×­l¡Ÿ†]R[éçv^žÏ&k–ƒº*§ÈÙ)¼©K;ÛÐ.{¨0›[<÷éýBéôQRˆ²–tr_ŽH1×«T.&Hœa·‘+$wÜ-Hµ3‚ªªâ®öi++3mÂ¦/ŒlÊj&">½ï.$~ÇMÐYdó©cxD])+|`Ãþ™æH Ì^™)åaPèëñ>™[þ ð£Žiãxž‰9Ãü˜(K·ÛSAh©%ÀS ŒU@	Ý¡ýìOm#ó’'–shý1+ÔŒjêÆG¦Þà<4TŠ¹DÌçÞƒ”­k3ÄšÒ½)Ä2–Ö]ZsˆÖ¢.l)Áh<§¿$½{ÖmÌUj¬eQ¦a"ä¤F9…Ž«x$3æŒy^KLRøHÙ
+¤ÆÄwûZ£:¢äÃžî@ œ ó1E­Ñ•6Ÿ	.¤åêãü
+H¦”˜)Öºê‘3î’ÃBùŽ t‹‹¤€m’Š8ÄYLìYp°ßš[dƒÐÞ³vªXËoD,½D4~Ö¶¦¼_°šíhMƒ9’³(¨~âVaƒ nZ¬©oËå›–6ïKJÐ8X$kr’Ï.%·’\Î¥=¿¸ìdåÅ¸šF}|R“ø:ŒàžŒ-,«Nl£àDÇ2ðz¡w÷r·Ûã
+g]Oóbˆ»»ÐDAîÅÒ4_g~bâ5µV{9JŠÈ²en‰wP4ø
+Ó@ÖjŽ¤»„ÈñøýµËÚ¨ŽÝ!¨Ä+u(Ýˆ•¹ÊÁ9&Èž”#‘B@Ãêª
+$@eKé	“rÓK¡¬Î¯!hçeòH6ÎÔd'Õó2ŸxáyùèGoÅ‘¯7ƒIK­_½øŠÜÃ.1,õ¤2UDbí›÷uyã£C‰„ÌMõN‚/×+«›ò.€¨f¡vï¬a,??º1#Æ´IWC}äº@~žâžž¤v9²¯—•t@×ÙÏ¢¼ê•÷˜\0ÂçÔ Z1¯¦?¢—¨íÊgÒ>ø,vª‡îs”zóšŽ5^™T»ü!âD;’#L)¿@Ž½ê<é;·ò«ÝaNöÖ©´ˆR1x´ò1*Dt	ºöuK«Tv”3O`ëíÆW~M”h@c3—•anŸ‰È•+õ˜®ñˆÜÇ¦c™EÓ£À!à®·F%¢¼&œ!¤qsõK˜˜Z5rFmïëŠzíY¯ å§d‚‚0mCÏÇ¬Üpak#î	bÑ\É¾)®™¯]E1Q!t$‡ôeJöÉiIÂ³pP¥‡c&K8Ì*Åˆn×Q¼KîwH$rQ³%Ý–¨Ñ>!ËH)G« 9†¼]èÆâêÉÎt>Ùní`ByŸÙ)Èçã% &“¬‚ ÄHK®­©Tˆ¦”¨èå´(ž¾`ÈÕMÜ$™÷ÃR©fG¿š˜M…Üd…çMË>‘¬i+Õ€ç•û¦5ì°aÙ-±Y	íÿÕi¤nÈh|:ElÎú|:ŒŽK±p=(ÐÀua¥¼@lÜÂKŒ‘rT…Lé SÇ«gGòïŸ/tZ}Ð*å„IGÌ×+v'þî$H¸s7¾„b&“@Ëf»	×êfÏô 7]Äžg{Šj•æÙiÞ;¾ƒ1¥æ	ËtyÙ•Eœr“ãèú=Èº‘k8º¿F£$m¬iË~5¬dá…<U¨µ§ž³»È(ê‚U$LÂÆ¾ôI@Vì“ÊtëKÅ~T¹s¤£1ØŽ°Ô&`v)¬Ä€$Ëúrbâ‚pÐ_‘üñª.$ $4…K)?Æþ§·ö­Á¾Îjs¸'*m^WhŽ°w¾Ý\Ó3fXV“þpŒæSŽ }ACÿx˜ ÝÝ.îwáÙœ\j‘†shºŒ—‰¤	i¶jëƒk»×%Å'y[¹¨5t–m€q¶‹¾öyIô‹4ºð¨ÃSn!/8º«½êè\°5™ÞJN`ÙµÕû“šv¼=è	$[ îqQÝP›ÔóÊ½ŽØŠÜpcY)Í}¦ù(&T0âÈ×· ­WDðÃ˜tŠ¢}çˆéEá|Ð!N¨‘Hpí%cÄ¤3ªY3ÔQn°íTÄù¯›¬aÇ¼7ùSýbºÁd^ã©»›¢¦ì»õ?‹\pYî’Ì·”nÝx¾ò„¾¼Ï<Ï%³u>°Qw(ÛÃnýb[Àö_°Ã¿²­­ßÔh+¨‡FÛMbûÆöŽ§HÃ¹-çÎ‰^µd÷áXT…D^]ësÑ~ðÖ·›b´÷&qn5ŒðØ•nöÏ]ö}‡’X.¹´ÎŠ|Iì›x-Éœóå—Y‘>ðAêÎ£•€Uªp>«Ìg¸¢JŒ]X:ZzißÈ6º‰fêvîý2.îJ¯¯²û“8»ç6eâ<±ÐÖ–ŒR‡Aœü–\èBŽåŽ—œWSV¡¦3óíÛ3ˆŸŽS‘³~éÂô:ûí¼úô×YìÕþåï1’<÷{J;ÌBY4èŠPu\àXF!R£#ÒÔfƒ³<¡oŒ¹Å¼ï¤­³ït@p|…œ¹xÑ6EØWåxþ)à)”gLçcmskmë!EŠZM…0u¬«jx*)Mú¥—`¦’Cfa'i‹v;—¿­úý¹œ¥,²æ¾»!S!­b1óð*ì´±oDUt>iô­.pY˜06,/ŸÖ9µ.š™È.s0´kËCËº4¡œØý¾d©é«™Åk­¾¡;©È²ppxR öÆ3aCÄ´ )4ï¼^E`ù:Ÿ´_H7¦”t±¬-Î
 Âl€Hn
-2ýß½zžl\-ZÕ¸&7'?½7¿gëç–âS"ô(£MA»"£Y«»±ªWžeÁ^$ýŽÁ}­˜©âž[øŸ¬(…ÿ7‹›á'¢Ôßßôðø.½¢Í ’ÖôÓS;}CÈÎä8npHéÎ‰ÜÂ2„þn™7}?àc„}~s²á£Ïø41B“½ó$Ž()­z§ûãüYÑ¯°íQ.»,ËÞ~úaÜËHâÒÉ¾[ôŽzh¯ïô[(ý€Ïß2¬p'cÀ”¬†³Fm…DQT„óÂ)çSêR“#k
-}q×Ú¨‰NÊ2’„ÙëÁ0„·h¨!2bãäw­JYIÙuÉu¹O¼/%îÛër½>Ín¥¾N$ƒ+K•èŠåS«ú‘ˆ„èÚ±‚ŒÒ¶êHdJRÊ![9áÑ›v4L¼dGPLœ5W2-Ç$kÃ±¸ÐØe3ÇXø5›ÑÉÈDxã²ÿH[¥Œ*ÉWë±_ìŸL7}t±¿¶Oõ4‘G‘‚-ñX´PÎ8_â3®bi¨Ù¸-ø[µšJ+fr ¢]W’ƒDÏÂó±JæPR×³HxÍcÊc•}
-}…¤dÂÃkI5ÑÂ‘kkM9M6­QšŒ“7W¸ñ7àÁ}®}µŸBl7¼•…é»gØ1‚÷€“ ®k ”ð5¾i`Ö²dDÒgG¾Â²-§ö8Å})ÛÈêbÛ9S60P<U3’…š\¿=süd¾%¾€äÃ›VHÎ%mˆyÄ}{×WM9¯÷·FesÁ €QÛé?+W+–_”5*¬ÒrôšÇ»c#o$æAË48s"¿†BŽŠÓô
->§Ó›þ[äüÌ¡“Ä¿Ñ×£ûMQŠpqzºõ…É$«¼ ªA)¹cä’ÏBdÐ¸Õfœ} ÈqÓ5ÿ±ÝEü•åj¡O!VC;(k¶â'SNv¤O¡§…ôâMÔ¹µ¨ªWÙËÉÁU3O¶	[•ŽxšxFß%ë,æX“;hT§¾ÆfÉKxzˆPY[à¹…bxab›ÑO¤Ëf8Òè-«5YÝÂÚ PÛ„¦Ç«† ÓÈˆŠ¡WêRCb:¢3íëzKqÌ±>ÕJ]K±qý}‡–.i†,¹ùCUMLÚ8V ðî`á±6pÒDŠ/9çU¥Ë1Ô¼PNR@–ÛXU—áá#7/ V3¬ã°†õtÔº¶8¬+iÇÁ àQáq´?XuÃ ?¤f¦ó²ž^ÄNWí¸³µœnh‚~_‰ym±ˆÄÏðIªõr4†v´ÒhaÒÄN½ìüî™	ý4«þkXüòôû×ço~ÍójJÐÂVa ‘|¤YPa³[ML1í,B5·«X/ˆ^`?¦±Š$”kÖße2sb¬”†^«v?©4:¥
-Ã:ø“fÛ_>|øðkê¹¿â¦Ÿh‰HâŽ ÛúÂF¥Ô¶®¾ôjUÜ6lO?ê<ØF˜½Ø¡­"Ãz/Ø ¤·N ëÌ×x‚\'na¢`ÀÿK<²ïbCìª‚u3»
-cIƒ./ÓŒ2"oO…§Œ¯A%k!zÞøüªê¡jÑÒÄ¢Õ?Ý,¥ÛtR®“ÝØY5Ü$c´Fj´ãZßÃö2•26ÉY¹[LgêñÃ½©Öä/§Ÿ°¯‰¡röN›$T«Ù½e“$aåÞÝOMØ‘bi*¯w·Þ%ÃF*.ñÿTÈuDHù0ZsüÿãD£«ºÄ 
\ Pas de fin de ligne à la fin du fichier.
+Òý?¼rOÖ/Æµj,@£ÉÍÉO¯Œ®VlÝá\S|J„e´!hWd4kÕn7å4f™D°çI¿Ä‡cp_*f*[þg+JîÿŽªñM÷3Qê7›[{O¶þ¥W´DÒšñô”‘F¾!dgR7¸¤t‰Ü¬­eÂ2„þn™7}?àc„æ};ñæþlÂ­Ïø41B“=îó$ö()­ÆN÷Çñ‹¬] aÛ¢\vžç­ÕðC¿•Ä…/’#Ê}7km¶Ð^ßÚnu–PúŸ¿d,Xá‘ŒS²ÎµE^.n9Ÿ\—šYcP°è‹»ÖFMtRæžìÄÍ¾'Xw†Á½EC‘'ÔØª”•”½P—\—û ö%¼Ä}}O¼×§Ù­Ð×‰dpa©]ñ¢|jU?Ò ‘];Vñ@ÚV‰DIJ9d‹H8Fô¦#&^²¡À¨&Îš+9Ïû$kÃ±8ÖØ…3ÇXø›ÑÉÈDxeÿ‘¶
+U’/fýx±6Ýtëbgžêi""[â±h¡qq]ˆÏ8õ¥¡jmÁ?ªÕÜ>*­˜Éˆv]I=ÏÇ*™]I]=5â5©«§Ð§PH
+&Ü½–Põ!¹¶Ö”Ód^¥I/@0ps…|ãà¡öÕüb»¾à­,L?½ÀŽ¼ä˜±p]¥„¯ñeH³–%=’>9ò–m9µÃ÷…l#«‹uãL™CÂ@ñTUOjpýVÌñ3±û–ø’¯j!9—´!Z8äu÷™­\_Vù¨\é,ŒÊæ‚+  £ºÑ–O§,¿(k”[¥Säè53ŽwÇF^OÌƒ–ipæx~	…;án>¤Ó›þ›çüL¡“Ä¿õÑ×£ûMQŠpqzFë“IVyAUƒ*Rrÿ ÇH$ç1‘A#tâ¦ósçì@Ž›¦ù÷í.‚ä/,T
+}
+±ÚAY²? ˜R²#}
+=- ço¢Î]¯FU½@ÈžÖ.«¾{²¹ÛØªtÄÓ$fô°^ÀbŽ5ùDêTÀ×˜Ox‰X€"TÖxl¡ƒ^˜ØjL´GÆé¢êv»4z“bFV7·6Ô6¡éþ´"HÀ42¼bè¥ºÔ˜öèLûºÅRÜ3„¯OÕR×Rìƒ_áÐÒ%À%·8ÃP“6ö ¼;Xx¬œ4žâKÎyUéŠj^)') ËmL‹÷ðžŽ›«éÖ±[Ãz:j][ÖÛJÚ~0xTxíVÝ0ÈiÆ»‰é¼(ÏÏ|§«vÜYZN74A¿¯D†¼€¶Xxâgø$ÅlÒ9CÛ›j´0¨|§^rþôÂ„‡>‹ÿÛÍ~{þó»ãÓßÓ¼š´°•CH$iTØ,úVSL;Ë„Pì*Ö¢Xõ)d¬"	åÝšï2™91VJC¯U½Ô*R…a­ý¨YÅú·OŸ>ýž„zÑ_ñGÓO´D$qG€m}¡£Rj[W_xµ*në¶g<ê4ØF˜=ß¡ç­,ÁzÙ ¤· 3L×x€\na¢`ÀÿK<rÜÄ†ØUë&vÆ’]^¦eDÞž
+O	_ƒJÖBô¼Šó«ª‡ªEK‹Vÿt>‘nÓA>vãÞªá&£5R #®õüa%Q)c“œ•»Åt†?lÑ›bFþrú	«šÊ‡µIBµ½Ñ[VAVîmÑý¹	;R,Må•ýãÞ¯wÉ°‘Š‹Dü.ä:"¤¼á-ˆ9þÿ1Ú£‚ž  
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/classes/AlbumDB.php gallery-1.5.2/classes/AlbumDB.php
--- gallery-1.5.1/classes/AlbumDB.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/AlbumDB.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,333 +1,356 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: AlbumDB.php,v 1.41.2.1 2005/09/12 22:40:44 dmolavi Exp $
- */
+ * $Id: AlbumDB.php,v 1.45.2.1 2006/01/06 06:31:31 jenst Exp $
+*/
 ?>
 <?php
 class AlbumDB {
-	var $albumList;
-	var $albumOrder;
-
-	function AlbumDB($loadphotos=TRUE) {
-		global $gallery;
-		$changed = 0;
-
-		$dir = $gallery->app->albumDir;
-
-		$tmp = getFile("$dir/albumdb.dat");
-		if (strcmp($tmp, "")) {
-			$this->albumOrder = unserialize($tmp);
-
-			// albumdb.dat is corrupt, rebuild it
-			if (empty($this->albumOrder)) {
-				$this->albumOrder = array();
-			}
-			$changed = 1;
-		} else {
-			$this->albumOrder = array();
-		}
-
-		$this->albumList = array();
-		$this->brokenAlbums = array();
-		$this->outOfDateAlbums = array();
-		$i = 0;
-		while ($i < sizeof($this->albumOrder)) {
-			$name = $this->albumOrder[$i];
-		       	if (ereg("^\.", $name)) { // how did this get here??
-				array_splice($this->albumOrder, $i, 1);
-				$changed = 1;
-			} else if (fs_is_dir("$dir/$name")) {
-				$album = new Album;
-				if ($album->load($name,$loadphotos)) {
-					array_push($this->albumList, $album);
-					if ($album->versionOutOfDate()) {
-						array_push($this->outOfDateAlbums, $name);
-					}
-				} else if ($name != 'CVS') {
-					array_push($this->brokenAlbums, $name);
-				}
-				$i++;
-			} else {
-				/* Couldn't find the album -- delete it from order */
-				array_splice($this->albumOrder, $i, 1);
-				$changed = 1;
-			}
-		}
-
-		if ($fd = fs_opendir($dir)) {
-			while ($file = readdir($fd)) {
-				if (!ereg("^\.", $file) && 
-				    fs_is_dir("$dir/$file") &&
-				    strcmp($file, "_vti_cnf") &&
-				    !in_array($file, $this->albumOrder)) {
-					$album = new Album;
-					$album->load($file,$loadphotos);
-					array_push($this->albumList, $album);
-					array_push($this->albumOrder, $file);
-					$changed = 1;
-				}
-			}
-			closedir($fd);
-		}
-
-		if ($changed) {
-			$this->save();
-		}
-	}
-
-	function renameAlbum($oldName, $newName) {
-		global $gallery;
-
-		$dir = $gallery->app->albumDir;
-		$galdir = dirname(dirname(__FILE__));
-
-		if (fs_is_file("$galdir/$newName") || fs_is_dir("$galdir/$newName")) {
-			return 0;
-		}
-
-		if (fs_is_dir("$dir/$newName")) {
-			return 0;
-		}
+    var $albumList;
+    var $albumOrder;
 
-		if (fs_is_dir("$dir/$oldName")) {
-			$success = fs_rename("$dir/$oldName", "$dir/$newName");
-			if (!$success) {
-				return 0;
-			}
+    function AlbumDB($loadphotos=TRUE) {
+        global $gallery;
+        $changed = 0;
+
+        $dir = $gallery->app->albumDir;
+
+        $tmp = getFile("$dir/albumdb.dat");
+        if (strcmp($tmp, "")) {
+            $this->albumOrder = unserialize($tmp);
+
+            // albumdb.dat is corrupt, rebuild it
+            if (empty($this->albumOrder)) {
+                $this->albumOrder = array();
+            }
+            $changed = 1;
+        } else {
+            $this->albumOrder = array();
+        }
+
+        $this->albumList = array();
+        $this->brokenAlbums = array();
+        $this->outOfDateAlbums = array();
+        $i = 0;
+        while ($i < sizeof($this->albumOrder)) {
+            $name = $this->albumOrder[$i];
+            if (ereg("^\.", $name)) { // how did this get here??
+            array_splice($this->albumOrder, $i, 1);
+            $changed = 1;
+            } else if (fs_is_dir("$dir/$name")) {
+                $album = new Album;
+                if ($album->load($name,$loadphotos)) {
+                    array_push($this->albumList, $album);
+                    if ($album->versionOutOfDate()) {
+                        array_push($this->outOfDateAlbums, $name);
+                    }
+                } else if ($name != 'CVS') {
+                    array_push($this->brokenAlbums, $name);
+                }
+                $i++;
+            } else {
+                /* Couldn't find the album -- delete it from order */
+                array_splice($this->albumOrder, $i, 1);
+                $changed = 1;
+            }
+        }
+
+        if ($fd = fs_opendir($dir)) {
+            while ($file = readdir($fd)) {
+                if (!ereg("^\.", $file) &&
+                fs_is_dir("$dir/$file") &&
+                strcmp($file, "_vti_cnf") &&
+                !in_array($file, $this->albumOrder)) {
+                    $album = new Album;
+                    $album->load($file,$loadphotos);
+                    array_push($this->albumList, $album);
+                    array_push($this->albumOrder, $file);
+                    $changed = 1;
+                }
+            }
+            closedir($fd);
+        }
+
+        if ($changed) {
+            $this->save();
+        }
+    }
+
+    function sortByField($fieldname = '', $order = 'desc') {
+	$tmpOrder = array();
+
+	if(!empty($fieldname)) {
+	    if($fieldname == 'name') {
+		if($order == 'asc') {
+		    sort($this->albumOrder);
 		}
-
-		$album = new Album;
-		$album->load($newName);
-		$album->fields['name'] = $newName;
-		$album->save();
-		
-		for ($i = 0; $i < sizeof($this->albumOrder); $i++) {
-			if (!strcmp($this->albumOrder[$i], $oldName)) {
-				$this->albumOrder[$i] = $newName;
-			}
-		}
-
-		return 1;
-	}
-
-	function newAlbumName($name="album01") {
-		global $gallery;
-
-		if (!$name) {
-			$name="album01";
-		}
-		$albumDir = $gallery->app->albumDir;
-		while (fs_file_exists("$albumDir/$name")) {
-			switch($name) {
-				case 'album99':
-					$name = 'album100';
-					break;
-
-				case 'album999':
-					$name = 'album1000';
-					break;
-
-				case 'album9999':
-					$name = 'album10000';
-					break;
-
-				default:
-					if (!ereg('[0-9][0-9]$', $name)) {
-						$name.="00";
-					}
-					$name++;
-			}
-		}
-		return $name;
-	}
-
-	function numAlbums($user) {
-		return sizeof($this->getVisibleAlbums($user));
-	}
-	
-	function numPhotos($user) {
-		$numPhotos = 0;
-		foreach ($this->albumList as $album) {
-			if ($user->canWriteToAlbum($album)) {
-				$numPhotos += $album->numPhotos(1);
-                        } else if ($user->canReadAlbum($album)) {
-                                $numPhotos += $album->numPhotos(0);
-                        }
-		}
-
-		return $numPhotos;
-	}
-
-	function getCachedNumPhotos($user) {
-		$numPhotos = 0;
-		foreach ($this->albumList as $album) {
-			if ($user->canReadAlbum($album)) {
-				$numPhotos += $album->fields["cached_photo_count"];
-			}
+		else {
+		    rsort($this->albumOrder);
 		}
-		return $numPhotos;
-	}
-
-	function getAlbum($user, $index) {
-	    global $gallery;
-	    $list = $this->getVisibleAlbums($user);
-	    $wantedAlbum = isset($list[$index-1]) ? $list[$index-1] : false;
-	    if ($wantedAlbum && (!isset($wantedAlbum->transient) || !$wantedAlbum->transient->photosloaded)) {
-		$wantedAlbum->loadPhotos($gallery->app->albumDir . "/" . $wantedAlbum->fields["name"]);
 	    }
-	    return $wantedAlbum;
-	}
-
-	function getAlbumByName($name, $load=TRUE) {
-		global $gallery;
-		/* Look for an exact match */
+	    else {
+		array_sort_by_fields($this->albumList, $fieldname , $order, true, false, true);
 		foreach ($this->albumList as $album) {
-		        set_time_limit($gallery->app->timeLimit);
-			if ($album->fields["name"] == $name) {
-				if ((!isset($album->transient) || !$album->transient->photosloaded) && $load) {
-					$album->loadPhotos($gallery->app->albumDir . "/$name");
-				}
-				return $album;
-			}
-		}
-
-		/* Look for a match that is case insensitive */
-		foreach ($this->albumList as $album) {
-		        set_time_limit($gallery->app->timeLimit);
-			if (!strcasecmp($album->fields["name"], $name)) {
-				if (!$album->transient->photosloaded && $load) {
-					$album->loadPhotos($gallery->app->albumDir . "/$name");
-				}
-				return $album;
-			}
-		}
-		
-		return 0;
-	}
-
-	function moveAlbum($user, $index, $newIndex) {
-
-		// This is tricky.  The old and new indices are only relevant
-		// within the list of albums that this user is able to see!  
-		// Find the location that the user desires and determine that it's
-		// one of three cases:
-		//	1. At the beginning of the album
-		// 	2. At the end
-		// 	3. After another album
-		// Beginning and end are easy.  If it's after another album, then
-		// figure out that album, find its absolute index and move it to
-		// that spot +1
-		//
-
-		$visible = $this->getVisibleAlbums($user);
-		$album1 = $visible[$index-1];
-		$album2 = $visible[$newIndex-1];
-
-		// Locate absolute indices of the target and destination
-		for ($i = 0; $i < sizeof($this->albumList); $i++) {
-			if ($this->albumList[$i]->fields['name'] == $album1->fields['name']) {
-				$absIndex = $i;
-			} else if ($this->albumList[$i]->fields['name'] == $album2->fields['name']) {
-				$absNewIndex = $i;
-			}
+		    $tmpOrder[] = $album->fields["name"];
 		}
-
-		if ($newIndex == 1) {
-			// Move to beginning
-			$this->moveAlbumAbsolute($absIndex, 0);
-		} else if ($newIndex == sizeof($visible)) {
-			// Move to end
-			$this->moveAlbumAbsolute($absIndex, sizeof($this->albumList)-1);
-		} else {
-			// Move to relative spot
-			$this->moveAlbumAbsolute($absIndex, $absNewIndex);
-		}
-
-		return;
-	}
-
-	function moveAlbumAbsolute($index, $newIndex) {
-		/* Pull album out */
-		$name = array_splice($this->albumOrder, $index, 1);
-
-		/* Add it back in */
-		array_splice($this->albumOrder, $newIndex, 0, $name);
-	}
-
-	function getVisibleAlbums($user) {
-		global $gallery;
-		$list = array();
-		foreach ($this->albumList as $album) {
-			if ($user->canReadAlbum($album) && $album->isRoot()) {
-				array_push($list, $album);
-			}
-		}
-
-		return $list;
-	}
-
-	function save() {
-		global $gallery;
-		$success = 0;
-
-		$dir = $gallery->app->albumDir;
-		return safe_serialize($this->albumOrder, "$dir/albumdb.dat");
-	}
-
-	function numAccessibleAlbums($user) {
-		$numAlbums = 0;
-		foreach ($this->albumList as $album) {
-			if ($user->canReadAlbum($album))
-			$numAlbums++;
-		}
-		return $numAlbums;
+		$this->albumOrder = $tmpOrder;
+	    }
+	    $this->save();
 	}
+    }
 
-	function numAccessibleItems($user) {
-		global $gallery;
-		$numPhotos = $numAlbums = $numTopAlbums = 0;
-		foreach ($this->albumList as $album) {
-			if ($user->canReadAlbum($album)) {
-				$numAlbums++;
-				if ($album->isRoot()) {
-					$numTopAlbums++;
-				}
-				if (empty($gallery->app->slowPhotoCount) || $gallery->app->slowPhotoCount == "no") {
-					$numPhotos += $album->fields["cached_photo_count"];
-				} else {
-					$album->load($album->fields['name']);
-					$numPhotos += $album->numPhotos(1,1);
-				}
-			}
-		}
-		return array($numPhotos, $numAlbums, $numTopAlbums);
-	}
+    function renameAlbum($oldName, $newName) {
+        global $gallery;
 
-	function getAlbumsByRoot($rootAlbumName, $user=null) {
-		$namedAlbum = $this->getAlbumByName($rootAlbumName);
-		if ($namedAlbum) {
-			$arr = $namedAlbum->getSubAlbums();
-			array_push($arr, $namedAlbum);
-			return ($arr);
-		}
-	}
+        $dir = $gallery->app->albumDir;
+        $galdir = dirname(dirname(__FILE__));
+
+        if (fs_is_file("$galdir/$newName") || fs_is_dir("$galdir/$newName")) {
+            return 0;
+        }
+
+        if (fs_is_dir("$dir/$newName")) {
+            return 0;
+        }
+
+        if (fs_is_dir("$dir/$oldName")) {
+            $success = fs_rename("$dir/$oldName", "$dir/$newName");
+            if (!$success) {
+                return 0;
+            }
+        }
+
+        $album = new Album;
+        $album->load($newName);
+        $album->fields['name'] = $newName;
+        $album->save();
+
+        for ($i = 0; $i < sizeof($this->albumOrder); $i++) {
+            if (!strcmp($this->albumOrder[$i], $oldName)) {
+                $this->albumOrder[$i] = $newName;
+            }
+        }
+
+        return 1;
+    }
+
+    function newAlbumName($name="album01") {
+        global $gallery;
+
+        if (!$name) {
+            $name="album01";
+        }
+        $albumDir = $gallery->app->albumDir;
+        while (fs_file_exists("$albumDir/$name")) {
+            switch($name) {
+                case 'album99':
+                $name = 'album100';
+                break;
+
+                case 'album999':
+                $name = 'album1000';
+                break;
+
+                case 'album9999':
+                $name = 'album10000';
+                break;
+
+                default:
+                if (!ereg('[0-9][0-9]$', $name)) {
+                    $name.="00";
+                }
+                $name++;
+            }
+        }
+        return $name;
+    }
+
+    function numAlbums($user) {
+        return sizeof($this->getVisibleAlbums($user));
+    }
+
+    function numPhotos($user) {
+        $numPhotos = 0;
+        foreach ($this->albumList as $album) {
+            if ($user->canWriteToAlbum($album)) {
+                $numPhotos += $album->numPhotos(1);
+            } else if ($user->canReadAlbum($album)) {
+                $numPhotos += $album->numPhotos(0);
+            }
+        }
+
+        return $numPhotos;
+    }
+
+    function getCachedNumPhotos($user) {
+        $numPhotos = 0;
+        foreach ($this->albumList as $album) {
+            if ($user->canReadAlbum($album)) {
+                $numPhotos += $album->fields["cached_photo_count"];
+            }
+        }
+        return $numPhotos;
+    }
+
+    function getAlbum($user, $index) {
+        global $gallery;
+        $list = $this->getVisibleAlbums($user);
+        $wantedAlbum = isset($list[$index-1]) ? $list[$index-1] : false;
+        if ($wantedAlbum && (!isset($wantedAlbum->transient) || !$wantedAlbum->transient->photosloaded)) {
+            $wantedAlbum->loadPhotos($gallery->app->albumDir . "/" . $wantedAlbum->fields["name"]);
+        }
+        return $wantedAlbum;
+    }
+
+    function getAlbumByName($name, $load=TRUE) {
+        global $gallery;
+        /* Look for an exact match */
+        foreach ($this->albumList as $album) {
+            set_time_limit($gallery->app->timeLimit);
+            if ($album->fields["name"] == $name) {
+                if ((!isset($album->transient) || !$album->transient->photosloaded) && $load) {
+                    $album->loadPhotos($gallery->app->albumDir . "/$name");
+                }
+                return $album;
+            }
+        }
+
+        /* Look for a match that is case insensitive */
+        foreach ($this->albumList as $album) {
+            set_time_limit($gallery->app->timeLimit);
+            if (!strcasecmp($album->fields["name"], $name)) {
+                if (!$album->transient->photosloaded && $load) {
+                    $album->loadPhotos($gallery->app->albumDir . "/$name");
+                }
+                return $album;
+            }
+        }
+
+        return 0;
+    }
+
+    function moveAlbum($user, $index, $newIndex) {
+
+        // This is tricky.  The old and new indices are only relevant
+        // within the list of albums that this user is able to see!
+        // Find the location that the user desires and determine that it's
+        // one of three cases:
+        //	1. At the beginning of the album
+        // 	2. At the end
+        // 	3. After another album
+        // Beginning and end are easy.  If it's after another album, then
+        // figure out that album, find its absolute index and move it to
+        // that spot +1
+        //
+
+        $visible = $this->getVisibleAlbums($user);
+        $album1 = $visible[$index-1];
+        $album2 = $visible[$newIndex-1];
+
+        // Locate absolute indices of the target and destination
+        for ($i = 0; $i < sizeof($this->albumList); $i++) {
+            if ($this->albumList[$i]->fields['name'] == $album1->fields['name']) {
+                $absIndex = $i;
+            } else if ($this->albumList[$i]->fields['name'] == $album2->fields['name']) {
+                $absNewIndex = $i;
+            }
+        }
+
+        if ($newIndex == 1) {
+            // Move to beginning
+            $this->moveAlbumAbsolute($absIndex, 0);
+        } else if ($newIndex == sizeof($visible)) {
+            // Move to end
+            $this->moveAlbumAbsolute($absIndex, sizeof($this->albumList)-1);
+        } else {
+            // Move to relative spot
+            $this->moveAlbumAbsolute($absIndex, $absNewIndex);
+        }
+
+        return;
+    }
+
+    function moveAlbumAbsolute($index, $newIndex) {
+        /* Pull album out */
+        $name = array_splice($this->albumOrder, $index, 1);
+
+        /* Add it back in */
+        array_splice($this->albumOrder, $newIndex, 0, $name);
+    }
+
+    function getVisibleAlbums($user) {
+        global $gallery;
+        $list = array();
+        foreach ($this->albumList as $album) {
+            if ($user->canReadAlbum($album) && $album->isRoot()) {
+                array_push($list, $album);
+            }
+        }
+
+        return $list;
+    }
+
+    function save() {
+        global $gallery;
+        $success = 0;
+
+        $dir = $gallery->app->albumDir;
+        return safe_serialize($this->albumOrder, "$dir/albumdb.dat");
+    }
+
+    function numAccessibleAlbums($user) {
+        $numAlbums = 0;
+        foreach ($this->albumList as $album) {
+            if ($user->canReadAlbum($album))
+            $numAlbums++;
+        }
+        return $numAlbums;
+    }
+
+    function numAccessibleItems($user) {
+        global $gallery;
+        $numPhotos = $numAlbums = $numTopAlbums = 0;
+        foreach ($this->albumList as $album) {
+            if ($user->canReadAlbum($album)) {
+                $numAlbums++;
+                if ($album->isRoot()) {
+                    $numTopAlbums++;
+                }
+                if (empty($gallery->app->slowPhotoCount) || $gallery->app->slowPhotoCount == "no") {
+                    $numPhotos += $album->fields["cached_photo_count"];
+                } else {
+                    $album->load($album->fields['name']);
+                    $numPhotos += $album->numPhotos(1,1);
+                }
+            }
+        }
+        return array($numPhotos, $numAlbums, $numTopAlbums);
+    }
+
+    function getAlbumsByRoot($rootAlbumName, $user=null) {
+        $namedAlbum = $this->getAlbumByName($rootAlbumName);
+        if ($namedAlbum) {
+            $arr = $namedAlbum->getSubAlbums();
+            array_push($arr, $namedAlbum);
+            return ($arr);
+        }
+    }
 }
 
 ?>
diff -Naur gallery-1.5.1/classes/AlbumItem.php gallery-1.5.2/classes/AlbumItem.php
--- gallery-1.5.1/classes/AlbumItem.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/AlbumItem.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,800 +1,939 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: AlbumItem.php,v 1.102.2.1 2005/09/12 22:40:44 dmolavi Exp $
- */
+ * $Id: AlbumItem.php,v 1.111.2.2 2006/01/06 06:31:31 jenst Exp $
+*/
 ?>
 <?php
 class AlbumItem {
-	var $image;
-	var $thumbnail;
-	var $preview;
-	var $caption;
-	var $hidden;
-	var $highlight;
-	var $highlightImage;
-	var $isAlbumName;
-	var $clicks;
-	var $keywords;
-	var $comments;  	// array of comment objects
-	var $uploadDate;	// date the item was uploaded
-	var $itemCaptureDate;	// associative array of date the item was captured 
-				// not in EPOCH so we can support dates < 1970
-	var $exifData;
-	var $owner;		// UID of item owner.
-	var $extraFields;
-	var $rank;
-	var $version;
-	var $emailMe;
-
-	function AlbumItem() {
-	        global $gallery;
-		$this->version = $gallery->album_version;
-		$this->extraFields = array();
-	}
-	
-	function setUploadDate($uploadDate="") { //upload date should only be set at file upload time.
-		global $gallery;
-
-		if ($uploadDate) { // set the upload time from the time provided
-			$this->uploadDate = $uploadDate;
-		} else { // if nothing is passed in, get the upload time from the file creation time
-			$dir = $gallery->album->getAlbumDir();
-			$name = $this->image->name;
-			$tag = $this->image->type;
-			$file = "$dir/$name.$tag";
-			$this->uploadDate = filectime($file);
-		}
-	}
-
-	function getUploadDate() {
-		if (!$this->uploadDate) {
-			return 0;
-		} else {
-			return $this->uploadDate;
-		}
-	}
-
-	function setItemCaptureDate($itemCaptureDate="") {
-		global $gallery;
-		/* Before 1.4.5-cvs-b106 this was an associative array */
-
-		if (!$itemCaptureDate) {	
-			// we want to attempt to set the $itemCaptureDate from the information that
-			// is available to us.  First, look in the exif data if it is a jpeg file.  If that
-			// doesn't help us, then use the file creation date.
-			$dir = $gallery->album->getAlbumDir();
-			$name = $this->image->name;
-			$tag = $this->image->type;
-			$file = "$dir/$name.$tag";
-			$itemCaptureDate = getItemCaptureDate($file);
-		}
- 
-		$this->itemCaptureDate = $itemCaptureDate;
-	}
-
-	function getItemCaptureDate() {
-		// need to set this value for old photos that don't yet contain it.
-		if (!$this->itemCaptureDate) {
-			return 0;
-		} else {
-			return $this->itemCaptureDate;
-		}
-	}
-
-	function getExif($dir, $forceRefresh=0) {
-		global $gallery;
-		$file = $dir . "/" . $this->image->name . "." . $this->image->type;
-
-		/*
-		 * If we don't already have the exif data, get it now.
-		 * Otherwise return what we have.
-		 */
-		$needToSave = 0;
-		if (!strcmp($gallery->app->cacheExif, "yes")) {
-		    if (empty($this->exifData) || $forceRefresh) {
-			/* Cache the current EXIF data and update the item capture date */
-			list($status, $this->exifData) = getExif($file);
-			$this->setItemCaptureDate();
-			$needToSave = 1;
-		    } else {
-			/* We have a cached value and are not forcing a refresh */
-			$status = 0;
-		    }
-		    $returnExifData = $this->exifData;
-		} else {
-		    /* If the data is cached but the feature is disabled, remove the cache */
-		    if (!empty($this->exifData)) {
-			unset($this->exifData);
-			$needToSave = 1;
-		    }
-		    list($status, $returnExifData) = getExif($file);
-		}
-		
-		return array($status, $returnExifData, $needToSave);
-	}
-
-	function numComments() {
-		return sizeof($this->comments);
-	}
-
-	function getComment($commentIndex) {
-		if (!empty($this->comments)) {
-			return $this->comments[$commentIndex-1];
-		} else {
-			return null;
-		}
-	}
-
-	function integrityCheck($dir) {
-		global $gallery;
-		$changed = 0;
-
-		if (!isset($this->version)) {
-			$this->version=0;
-		}
-		if ($this->version < 10) {
-			if (!isset($this->extraFields) or !is_array($this->extraFields)) {
-				$this->extraFields=array();
-				$changed=1;
-			}
-		}
-		if ($this->version < 11) { 
-			if (!isset($this->owner)) {
-				$this->owner = $gallery->album->fields["owner"];
-				$changed = 1;
-			}
-		}
-		if ($this->version < 12) {
-		    	$nobody = $gallery->userDB->getNobody();
-			$nobodyUid = $nobody->getUid();
-			if ((!strcmp($this->owner, $nobodyUid) || empty($this->owner)) && 
-			    strcmp($gallery->album->fields["owner"], $nobodyUid)) {
-				$this->owner = $gallery->album->fields["owner"];
-				$changed = 1;
-			}
-		}
-		if ($this->version < 16) {
-			$this->setRank(0);
-		}
-		if ($this->version < 24) {
-			$this->emailMe=array();
-		}
-
-		/* Convert all uids to the new style */
-		if ($this->version < 25) {
-		    // Owner
-		    $this->owner = $gallery->userDB->convertUidToNewFormat($this->owner);
-
-		    // Comments
-		    for ($i = 0; $i < sizeof($this->comments); $i++) {
-			$this->comments[$i]->UID =
-			    $gallery->userDB->convertUidToNewFormat($this->comments[$i]->UID);
-		    }
-		}
-
-		// Use TimeStamp for capture Date instead of assoziative Array
-		if ($this->version < 32) {
-			if (isset($this->itemCaptureDate)) {
-                                $this->itemCaptureDate = mktime(
-					$this->itemCaptureDate['hours'],
-					$this->itemCaptureDate['minutes'],
-					$this->itemCaptureDate['seconds'],
-                                        $this->itemCaptureDate['mon'],
-					$this->itemCaptureDate['mday'],
-					$this->itemCaptureDate['year']
-				);
-				$changed = 1;
-                        }
+    var $image;
+    var $thumbnail;
+    var $preview;
+    var $caption;
+    var $hidden;
+    var $highlight;
+    var $highlightImage;
+    var $isAlbumName;
+    var $clicks;
+    var $keywords;
+    var $comments;  	// array of comment objects
+    var $uploadDate;	// date the item was uploaded
+    var $itemCaptureDate;	// associative array of date the item was captured
+    // not in EPOCH so we can support dates < 1970
+    var $exifData;
+    var $owner;		// UID of item owner.
+    var $extraFields;
+    var $rank;
+    var $version;
+    var $emailMe;
+    var $imageAreas;
+
+    function AlbumItem() {
+        global $gallery;
+        $this->version = $gallery->album_version;
+        $this->extraFields = array();
+    }
+
+    //upload date should only be set at file upload time.
+    function setUploadDate($uploadDate = '') {
+        global $gallery;
+
+        if ($uploadDate) {
+            // set the upload time from the time provided
+            $this->uploadDate = $uploadDate;
+        } else {
+            // if nothing is passed in, get the upload time from the file creation time
+            $dir = $gallery->album->getAlbumDir();
+            $name = $this->image->name;
+            $tag = $this->image->type;
+            $file = "$dir/$name.$tag";
+            $this->uploadDate = filectime($file);
+        }
+    }
+
+    function getUploadDate() {
+        if (!$this->uploadDate) {
+            return 0;
+        } else {
+            return $this->uploadDate;
+        }
+    }
+
+    function setItemCaptureDate($itemCaptureDate="") {
+        global $gallery;
+        /* Before 1.4.5-cvs-b106 this was an associative array */
+
+        if (!$itemCaptureDate) {
+            // we want to attempt to set the $itemCaptureDate from the information that
+            // is available to us.  First, look in the exif data if it is a jpeg file.  If that
+            // doesn't help us, then use the file creation date.
+            $dir = $gallery->album->getAlbumDir();
+            $name = $this->image->name;
+            $tag = $this->image->type;
+            $file = "$dir/$name.$tag";
+            $itemCaptureDate = getItemCaptureDate($file);
+        }
+
+        $this->itemCaptureDate = $itemCaptureDate;
+    }
+
+    function getItemCaptureDate() {
+        // need to set this value for old photos that don't yet contain it.
+        if (!$this->itemCaptureDate) {
+            return 0;
+        } else {
+            return $this->itemCaptureDate;
+        }
+    }
+
+    function getExif($dir, $forceRefresh = 0) {
+        global $gallery;
+        $file = $dir . "/" . $this->image->name . "." . $this->image->type;
+
+        /*
+        * If we don't already have the exif data, get it now.
+        * Otherwise return what we have.
+        */
+        $needToSave = 0;
+        if ($gallery->app->cacheExif != 'yes') {
+            if (empty($this->exifData) || $forceRefresh) {
+                /* Cache the current EXIF data and update the item capture date */
+                list($status, $this->exifData) = getExif($file);
+                $this->setItemCaptureDate();
+                $needToSave = 1;
+            } else {
+                /* We have a cached value and are not forcing a refresh */
+                $status = 0;
+            }
+            $returnExifData = $this->exifData;
+        } else {
+            /* If the data is cached but the feature is disabled, remove the cache */
+            if (!empty($this->exifData)) {
+                unset($this->exifData);
+                $needToSave = 1;
+            }
+            list($status, $returnExifData) = getExif($file);
+        }
+
+        return array($status, $returnExifData, $needToSave);
+    }
+
+    function numComments() {
+        return sizeof($this->comments);
+    }
+
+    function getComment($commentIndex) {
+        if (!empty($this->comments)) {
+            return $this->comments[$commentIndex-1];
+        } else {
+            return null;
+        }
+    }
+
+    function integrityCheck($dir) {
+        global $gallery;
+        $changed = 0;
+
+        if (!isset($this->version)) {
+            $this->version = 0;
+        }
+        if ($this->version < 10) {
+            if (!isset($this->extraFields) or !is_array($this->extraFields)) {
+                $this->extraFields=array();
+                $changed = 1;
+            }
+        }
+        if ($this->version < 11) {
+            if (!isset($this->owner)) {
+                $this->owner = $gallery->album->fields["owner"];
+                $changed = 1;
+            }
+        }
+        if ($this->version < 12) {
+            $nobody = $gallery->userDB->getNobody();
+            $nobodyUid = $nobody->getUid();
+            if ((!strcmp($this->owner, $nobodyUid) || empty($this->owner)) &&
+            strcmp($gallery->album->fields["owner"], $nobodyUid)) {
+                $this->owner = $gallery->album->fields["owner"];
+                $changed = 1;
+            }
+        }
+        if ($this->version < 16) {
+            $this->setRank(0);
+        }
+        if ($this->version < 24) {
+            $this->emailMe = array();
+        }
+
+        /* Convert all uids to the new style */
+        if ($this->version < 25) {
+            // Owner
+            $this->owner = $gallery->userDB->convertUidToNewFormat($this->owner);
+
+            // Comments
+            for ($i = 0; $i < sizeof($this->comments); $i++) {
+                $this->comments[$i]->UID =
+                $gallery->userDB->convertUidToNewFormat($this->comments[$i]->UID);
+            }
+        }
+
+        // Use TimeStamp for capture Date instead of assoziative Array
+        if ($this->version < 32) {
+            if (isset($this->itemCaptureDate)) {
+                $this->itemCaptureDate = mktime(
+                  $this->itemCaptureDate['hours'],
+                  $this->itemCaptureDate['minutes'],
+                  $this->itemCaptureDate['seconds'],
+                  $this->itemCaptureDate['mon'],
+                  $this->itemCaptureDate['mday'],
+                  $this->itemCaptureDate['year']
+                );
+                $changed = 1;
+            }
+        }
+
+        /* autoRotated field depricated as of 1.5-cvs-b258 */
+        if ($this->version < 33 && !empty($this->extraFields['autoRotated'])) {
+            unset($this->extraFields['autoRotated']);
+            $changed = 1;
+        }
+
+        if ($this->image) {
+            if ($this->image->integrityCheck($dir)) {
+                $changed = 1;
+            }
+
+            if ($this->thumbnail) {
+                if ($this->thumbnail->integrityCheck($dir)) {
+                    $changed = 1;
                 }
+            }
 
-		/* autoRotated field depricated as of 1.5-cvs-b258 */
-		if ($this->version < 33 && !empty($this->extraFields['autoRotated'])) {
-			unset($this->extraFields['autoRotated']);
-			$changed = 1;
-		}
-
-		if ($this->image) {
-			if ($this->image->integrityCheck($dir)) {
-				$changed = 1;
-			}
-
-			if ($this->thumbnail) {
-				if ($this->thumbnail->integrityCheck($dir)) {
-					$changed = 1;
-				}
-			}
-
-			if ($this->preview) {
-				if ($this->preview->integrityCheck($dir)) {
-					$changed = 1;
-				}
-			}
-
-			if ($this->highlight && $this->highlightImage)  {
-				if ($this->highlightImage->integrityCheck($dir)) {
-					$changed = 1;
-				}
-			}
-		}
-                if (strcmp($this->version, $gallery->album_version)) {
-                        $this->version = $gallery->album_version;
-                        $changed = 1;
-                }
-		return $changed;
-	}
-
-	function addComment($comment, $IPNumber, $name) {
-		global $gallery;
-
-		if ($gallery->user) {
-			$UID = $gallery->user->getUID();
-		} else {
-			$UID = "";
-		}
-
-		$comment = new Comment($comment, $IPNumber, $name, $UID);
-
-		$this->comments[] = $comment;
-		return 0;
-	}
-
-	function deleteComment($comment_index) {
-		array_splice($this->comments, $comment_index-1, 1);
-	}
-
-	function setKeyWords($kw) {
-		$this->keywords = $kw;
-	}
-
-	function getKeyWords() {
-		return $this->keywords;
-        }
-
-	function setOwner($owner) {
-		$this->owner = $owner;
-	}
-	
-	function getOwner() {
-		global $gallery;
-		if (!isset($this->owner)) {
-			$nobody = $gallery->userDB->getNobody(); 
-			$nobodyUid = $nobody->getUid();
-			$this->setOwner($nobodyUid);
-		}
-		return $this->owner;
-	}
-	
-	function resetItemClicks() {
-		$this->clicks = 0;
-	}
-
-	function getItemClicks() {
-		if (!isset($this->clicks)) {
-			$this->resetItemClicks();
-		}
-		return $this->clicks;
-	}
-
-	function incrementItemClicks() {
-		if (!isset($this->clicks)) {
-			$this->resetItemClicks();
-		}
-		$this->clicks++;
-	}
-       function setRank($rank) {
-               $this->rank = $rank;
-       }
-       function getRank() {
-               return $this->rank;
-       }
-
-	function hide() {
-		$this->hidden = 1;
-	}
-
-	function unhide() {
-		$this->hidden = 0;
-	}
-
-	function isHidden() {
-		return $this->hidden;
-	}
-
-	function setHighlight($dir, $bool, &$album,
-	    $name=null, $tag=null, $srcdir=null, $srcitem=null) {
-		global $gallery;
-		
-		$this->highlight = $bool;
-		
-		/*
-		 * if it is now the highlight make sure it has a highlight
-                 * thumb otherwise get rid of it's thumb (ouch!).
-		 */
-
-		if ($this->highlight) {
-			if (!isset($name)) {
-				$srcdir = $dir;
-				$srcitem = $this;
-				if ($this->isAlbum()) {
-					$name = $this->getAlbumName();
-					$nestedAlbum = new Album();
-					$nestedAlbum->load($name);
-					list ($srcalbum, $srcitem) = $nestedAlbum->getHighlightedItem();
-					if ($srcalbum !== null && $srcitem !== null) {
-						$srcdir = $srcalbum->getAlbumDir();
-						$tag = $srcitem->image->type;
-					}
-					else {
-						if (is_object($this->highlightImage)) {
-							$this->highlightImage->simpleDelete($dir);
-							$this->highlightImage = null;
-						}
-						return;
-					}
-				} else {
-					$name = $this->image->name;
-					$tag = $this->image->type;
-				}
-			}
-			$size = $album->getHighlightSize();
-
-			if ($srcitem->image->thumb_width > 0  && !$srcitem->isMovie()) {
-				// Crop it first
-				$ret = cut_image("$srcdir/".$srcitem->image->name.".$tag",
-						"$dir/$name.tmp.$tag",
-						$srcitem->image->thumb_x,
-						$srcitem->image->thumb_y,
-						$srcitem->image->thumb_width,
-						$srcitem->image->thumb_height);
-
-				// Then resize it down
-				if ($ret) {
-					$ret = resize_image("$dir/$name.tmp.$tag", 
-							    "$dir/$name.highlight.$tag",
-							    $size);
-				}
-				fs_unlink("$dir/$name.tmp.$tag");
-			} elseif ($srcitem->isMovie()) {
-				if (fs_file_exists($gallery->app->movieThumbnail)) {
-					$tag = substr(strrchr($gallery->app->movieThumbnail, '.'), 1);
-					$ret = resize_image($gallery->app->movieThumbnail, "$dir/$name.highlight.$tag", $size);
-				}
-				else {
-					$ret = 0;
-				}
-			} else {
-				$ret = resize_image("$srcdir/".$srcitem->image->name.".$tag",
-						    "$dir/$name.highlight.$tag",
-						    $size);
-			}
-
-			if ($ret) {
-				list($w, $h) = getDimensions("$dir/$name.highlight.$tag");
-
-				$high = new Image;
-				$high->setFile($dir, "$name.highlight", "$tag");
-				$high->setDimensions($w, $h);
-				$this->highlightImage = $high;
-
-				/* Check if we need to cascade highlight up to parent album */
-				$parentAlbum =& $album->getParentAlbum();
-				if (isset($parentAlbum) && !strcmp($parentAlbum->version, $gallery->album_version)) {
-					$highlightIndex = $parentAlbum->getHighlight();
-					if ($highlightIndex == $parentAlbum->getAlbumIndex($album->fields['name'])) {
-						$item = &$parentAlbum->getPhoto($highlightIndex);
-						$item->setHighlight($parentAlbum->getAlbumDir(), 1, $parentAlbum, $album->fields['name'], $tag, $srcdir, $srcitem);
-						$parentAlbum->save(array(),0);
-					}
-				}
-			}
-		} else {
-			if (is_object($this->highlightImage)) {
-				$this->highlightImage->simpleDelete($dir);
-				$this->highlightImage = null;
-			}
-		}
-	}
-
-	function isHighlight() {
-		return $this->highlight;
-	}
-
-	function getThumbDimensions($size=0) {
-		if ($this->thumbnail) {
-			return $this->thumbnail->getDimensions($size);
-		} else {
-			return array(0, 0);
-		}
-	}
-
-	function getHighlightDimensions($size=0) {
-		if (is_object($this->highlightImage)) {
-			return $this->highlightImage->getDimensions($size);
-		} else {
-			return array(0, 0);
-		}
-	}
-
-	function getFileSize($full=0) {
-		global $gallery;
-		$stat = fs_stat($this->image->getPath($gallery->album->getAlbumDir(), $full));
-		if (is_array($stat)) {
-			return $stat[7];
-		} else {
-			return 0;
-		}
-	}
-	function getDimensions($full=0) {
-		if ($this->image) {
-			return $this->image->getDimensions(0, $full);
-		} else {
-			return array(0, 0);
-		}
-	}
-
-	function isResized() {
-		$im = $this->image;
-		return $im->isResized();
-	}
-
-	function rotate($dir, $direction, $thumb_size, &$album, $clearexifrotate=false) {
-		global $gallery;
-
-		$name = $this->image->name;
-		$type = $this->image->type;
-		$retval = rotate_image("$dir/$name.$type", "$dir/$name.$type", $direction, $type);
-		if ($clearexifrotate && isset($gallery->app->use_exif) && ($type === 'jpg' || $type === 'jpeg')) {
-		    $path = $gallery->app->use_exif;
-		    exec_internal(fs_import_filename($path, 1) . " -norot '$dir/$name.$type'");
-		}
-
-		if (!$retval) {
-			return $retval;
-		}
-		list($w, $h) = getDimensions("$dir/$name.$type");
-		$this->image->setRawDimensions($w, $h);	
-
-		if ($this->isResized()) {
-			rotate_image("$dir/$name.sized.$type", "$dir/$name.sized.$type", $direction, $type);
-			if ($clearexifrotate && isset($gallery->app->use_exif) && ($type === 'jpg' || $type === 'jpeg')) {
-			    $path = $gallery->app->use_exif;
-			    exec_internal(fs_import_filename($path, 1) . " -norot '$dir/$name.sized.$type'");
-			}
-
-			list($w, $h) = getDimensions("$dir/$name.sized.$type");
-			$this->image->setDimensions($w, $h);	
-		} else {
-			$this->image->setDimensions($w, $h);	
-		}
-
-		/* Reset the thumbnail to the default before regenerating thumb */
-		$this->image->setThumbRectangle(0, 0, 0, 0);
-		$this->makeThumbnail($dir, $thumb_size, $album);
-		return 1;
-	}
-
-        function watermark($dir, $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $preview=0, $previewSize=0, $wmSelect=0) {
-                global $gallery;
-                $type = $this->image->type;
-		if (isMovie($type) || $this->isAlbum()) {
-			// currently there is no watermarking support for movies
-			return (0);
-		}
-		if ($wmSelect < 0) {
-			$wmSelect = 0;
-		}
-		else if ($wmSelect > 2) {
-			$wmSelect = 2;
-		}
-                $name = $this->image->name;
-		$oldpreviews = glob($dir . "/$name.preview*.$type");
-		if (!empty($oldpreviews) && is_array($oldpreviews)) {
-			foreach ($oldpreviews as $oldpreview) {
-				unlink($oldpreview);
-			}
-		}
-		if ($preview) {
-			$previewtag = "preview" . time();
-			if (($previewSize == 0) && $this->isResized()) {
-				$src_image = "$dir/" . $this->image->resizedName . ".$type";
-			} else {
-				$src_image = "$dir/$name.$type";
-			}
-			$retval = watermark_image($src_image, "$dir/$name.$previewtag.$type",
-                                          $gallery->app->watermarkDir."/$wmName",
-                                          $gallery->app->watermarkDir."/$wmAlphaName",
-                                          $wmAlign, $wmAlignX, $wmAlignY);
-			if ($retval) {
-				list($w, $h) = getDimensions("$dir/$name.$previewtag.$type");
-                                                                                                                           
-                                $high = new Image;
-				$high->setFile($dir, "$name.$previewtag", "$type");
-                                $high->setDimensions($w, $h);
-                                $this->preview = $high;
-			}
-		} else {
-			// $wmSelect of 0=both Sized and Full
-			if ($wmSelect != 1) { // 1=Only Sized Photos
-                		$retval = watermark_image("$dir/$name.$type", "$dir/$name.$type",
-                                          $gallery->app->watermarkDir."/$wmName",
-                                          $gallery->app->watermarkDir."/$wmAlphaName",
-                                          $wmAlign, $wmAlignX, $wmAlignY);
-			}
-                	if ($wmSelect != 2) { // 2=Only Full Photos
-                	    if (($wmSelect == 1) && !$this->isResized()) {
-				// If watermarking only resized images, and image is not resized
-				// Call resize as if the full image is resized
-				$pathToResized = $dir . "/" . $this->image->name . "." . $this->image->type;
-				$this->resize($dir, "", 0, $pathToResized);
-			    }
-                	    if ($this->isResized()) {
-                        	$retval = watermark_image("$dir/$name.sized.$type", "$dir/$name.sized.$type",
-                                                  $gallery->app->watermarkDir."/$wmName",
-                                                  $gallery->app->watermarkDir."/$wmAlphaName",
-						  $wmAlign, $wmAlignX, $wmAlignY);
-                    	    }
+            if ($this->preview) {
+                if ($this->preview->integrityCheck($dir)) {
+                    $changed = 1;
+                }
+            }
+
+            if ($this->highlight && $this->highlightImage)  {
+                if ($this->highlightImage->integrityCheck($dir)) {
+                    $changed = 1;
+                }
+            }
+        }
+        if (strcmp($this->version, $gallery->album_version)) {
+            $this->version = $gallery->album_version;
+            $changed = 1;
+        }
+        return $changed;
+    }
+
+    function addComment($comment, $IPNumber, $name) {
+        global $gallery;
+
+        if ($gallery->user) {
+            $UID = $gallery->user->getUID();
+        } else {
+            $UID = '';
+        }
+
+        $comment = new Comment($comment, $IPNumber, $name, $UID);
+
+        $this->comments[] = $comment;
+        return 0;
+    }
+
+    function deleteComment($comment_index) {
+        array_splice($this->comments, $comment_index-1, 1);
+    }
+
+    function setKeyWords($kw) {
+        $this->keywords = $kw;
+    }
+
+    function getKeyWords() {
+        return $this->keywords;
+    }
+
+    function setOwner($owner) {
+        $this->owner = $owner;
+    }
+
+    function getOwner() {
+        global $gallery;
+        if (!isset($this->owner)) {
+            $nobody = $gallery->userDB->getNobody();
+            $nobodyUid = $nobody->getUid();
+            $this->setOwner($nobodyUid);
+        }
+        return $this->owner;
+    }
+
+    function resetItemClicks() {
+        $this->clicks = 0;
+    }
+
+    function getItemClicks() {
+        if (!isset($this->clicks)) {
+            $this->resetItemClicks();
+        }
+        return $this->clicks;
+    }
+
+    function incrementItemClicks() {
+        if (!isset($this->clicks)) {
+            $this->resetItemClicks();
+        }
+        $this->clicks++;
+    }
+    function setRank($rank) {
+        $this->rank = $rank;
+    }
+    function getRank() {
+        return $this->rank;
+    }
+
+    function hide() {
+        $this->hidden = 1;
+    }
+
+    function unhide() {
+        $this->hidden = 0;
+    }
+
+    function isHidden() {
+        return $this->hidden;
+    }
+
+    function setHighlight($dir, $bool, &$album, $name = null, $tag = null, $srcdir = null, $srcitem = null) {
+        global $gallery;
+
+        $this->highlight = $bool;
+        // if it is now the highlight make sure it has a highlight thumb otherwise get rid of it's thumb (ouch!).
+
+        if ($this->highlight) {
+            if (!isset($name)) {
+                $srcdir = $dir;
+                $srcitem = $this;
+                if ($this->isAlbum()) {
+                    $name = $this->getAlbumName();
+                    $nestedAlbum = new Album();
+                    $nestedAlbum->load($name);
+                    list ($srcalbum, $srcitem) = $nestedAlbum->getHighlightedItem();
+                    if ($srcalbum !== null && $srcitem !== null) {
+                        $srcdir = $srcalbum->getAlbumDir();
+                        $tag = $srcitem->image->type;
+                    }
+                    else {
+                        if (is_object($this->highlightImage)) {
+                            $this->highlightImage->simpleDelete($dir);
+                            $this->highlightImage = null;
                         }
+                        return;
+                    }
+                } else {
+                    $name = $this->image->name;
+                    $tag = $this->image->type;
+                }
+            }
+            $size = $album->getHighlightSize();
+
+            if ($srcitem->image->thumb_width > 0  && !$srcitem->isMovie()) {
+                // Crop it first
+                $ret = cut_image("$srcdir/".$srcitem->image->name.".$tag",
+                  "$dir/$name.tmp.$tag",
+                  $srcitem->image->thumb_x,
+                  $srcitem->image->thumb_y,
+                  $srcitem->image->thumb_width,
+                  $srcitem->image->thumb_height);
+
+                // Then resize it down
+                if ($ret) {
+                    $ret = resize_image(
+                    	"$dir/$name.tmp.$tag",
+                    	"$dir/$name.highlight.$tag",
+                    	$size,
+                    	0,
+                    	0,
+                    	true,
+                    	$gallery->app->highlightJpegImageQuality
+                    );
+                }
+                fs_unlink("$dir/$name.tmp.$tag");
+            } elseif ($srcitem->isMovie()) {
+                if (fs_file_exists($gallery->app->movieThumbnail)) {
+                    $tag = substr(strrchr($gallery->app->movieThumbnail, '.'), 1);
+		            $ret = resize_image(
+		            	$gallery->app->movieThumbnail,
+		            	"$dir/$name.highlight.$tag",
+		            	$size,
+		            	0,
+		            	0,
+		            	true,
+		            	$gallery->app->highlightJpegImageQuality
+		            );
+                }
+                else {
+                    $ret = 0;
+                }
+            } else {
+                $ratio = $album->getHighlightRatio();
+                $src = "$srcdir/".$srcitem->image->name.".$tag";
+                $dest = "$dir/$name.highlight.$tag";
+
+                if(!empty($ratio)) {
+                    $ret = cropImageToRatio($src, $dest, $size, $ratio);
+                }
+
+                if(isset($ret)) {
+                    $ret = resize_image($dest, $dest, $size, 0, 0, true, $gallery->app->highlightJpegImageQuality);
+                } else {
+                    $ret = resize_image($src, $dest, $size, 0, 0, true, $gallery->app->highlightJpegImageQuality);
+                }
+            }
+
+            if ($ret) {
+                list($w, $h) = getDimensions("$dir/$name.highlight.$tag");
+
+                $high = new Image;
+                $high->setFile($dir, "$name.highlight", "$tag");
+                $high->setDimensions($w, $h);
+                $this->highlightImage = $high;
+
+                /* Check if we need to cascade highlight up to parent album */
+                $parentAlbum =& $album->getParentAlbum();
+                if (isset($parentAlbum) && !strcmp($parentAlbum->version, $gallery->album_version)) {
+                    $highlightIndex = $parentAlbum->getHighlight();
+                    if ($highlightIndex == $parentAlbum->getAlbumIndex($album->fields['name'])) {
+                        $item = &$parentAlbum->getPhoto($highlightIndex);
+                        $item->setHighlight($parentAlbum->getAlbumDir(), 1, $parentAlbum, $album->fields['name'], $tag, $srcdir, $srcitem);
+                        $parentAlbum->save(array(),0);
+                    }
+                }
+            }
+        } else {
+            if (is_object($this->highlightImage)) {
+                $this->highlightImage->simpleDelete($dir);
+                $this->highlightImage = null;
+            }
+        }
+    }
+
+    function isHighlight() {
+        return $this->highlight;
+    }
+
+    function getThumbDimensions($size = 0) {
+        if ($this->thumbnail) {
+            return $this->thumbnail->getDimensions($size);
+        } else {
+            return array(0, 0);
+        }
+    }
+
+    function getHighlightDimensions($size = 0) {
+        if (is_object($this->highlightImage)) {
+            return $this->highlightImage->getDimensions($size);
+        } else {
+            return array(0, 0);
+        }
+    }
+
+    function getFileSize($full = 0) {
+        global $gallery;
+        $stat = fs_stat($this->image->getPath($gallery->album->getAlbumDir(), $full));
+        
+        if (is_array($stat)) {
+            return $stat[7];
+        } else {
+            return 0;
+        }
+    }
+    function getDimensions($full = 0) {
+        if ($this->image) {
+            return $this->image->getDimensions(0, $full);
+        } else {
+            return array(0, 0);
+        }
+    }
+
+    function isResized() {
+        $image = $this->image;
+        return $image->isResized();
+    }
+
+    function rotate($dir, $direction, $thumb_size, &$album, $clearexifrotate = false) {
+        global $gallery;
+
+        $name = $this->image->name;
+        $type = $this->image->type;
+        $retval = rotate_image("$dir/$name.$type", "$dir/$name.$type", $direction, $type);
+        if ($clearexifrotate && isset($gallery->app->use_exif) && ($type === 'jpg' || $type === 'jpeg')) {
+            $path = $gallery->app->use_exif;
+            exec_internal(fs_import_filename($path, 1) . " -norot '$dir/$name.$type'");
+        }
+
+        if (!$retval) {
+            return $retval;
+        }
+        list($w, $h) = getDimensions("$dir/$name.$type");
+        $this->image->setRawDimensions($w, $h);
+
+        if ($this->isResized()) {
+            rotate_image("$dir/$name.sized.$type", "$dir/$name.sized.$type", $direction, $type);
+            if ($clearexifrotate && isset($gallery->app->use_exif) && ($type === 'jpg' || $type === 'jpeg')) {
+                $path = $gallery->app->use_exif;
+                exec_internal(fs_import_filename($path, 1) . " -norot '$dir/$name.sized.$type'");
+            }
+
+            list($w, $h) = getDimensions("$dir/$name.sized.$type");
+            $this->image->setDimensions($w, $h);
+        } else {
+            $this->image->setDimensions($w, $h);
+        }
+
+        /* Reset the thumbnail to the default before regenerating thumb */
+        $this->image->setThumbRectangle(0, 0, 0, 0);
+        $this->makeThumbnail($dir, $thumb_size, $album);
+        return 1;
+    }
+
+    function watermark($dir, $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $preview=0, $previewSize=0, $wmSelect=0) {
+        global $gallery;
+        $type = $this->image->type;
+        if (isMovie($type) || $this->isAlbum()) {
+            // currently there is no watermarking support for movies
+            return (0);
+        }
+        if ($wmSelect < 0) {
+            $wmSelect = 0;
+        }
+        else if ($wmSelect > 2) {
+            $wmSelect = 2;
+        }
+        $name = $this->image->name;
+        $oldpreviews = glob($dir . "/$name.preview*.$type");
+        if (!empty($oldpreviews) && is_array($oldpreviews)) {
+            foreach ($oldpreviews as $oldpreview) {
+                unlink($oldpreview);
+            }
+        }
+        if ($preview) {
+            $previewtag = "preview" . time();
+            if (($previewSize == 0) && $this->isResized()) {
+                $src_image = "$dir/" . $this->image->resizedName . ".$type";
+            } else {
+                $src_image = "$dir/$name.$type";
+            }
+            $retval = watermark_image(
+              $src_image,
+              "$dir/$name.$previewtag.$type",
+              $gallery->app->watermarkDir."/$wmName",
+              $gallery->app->watermarkDir."/$wmAlphaName",
+              $wmAlign, $wmAlignX, $wmAlignY
+            );
+            if ($retval) {
+                list($w, $h) = getDimensions("$dir/$name.$previewtag.$type");
+
+                $high = new Image;
+                $high->setFile($dir, "$name.$previewtag", "$type");
+                $high->setDimensions($w, $h);
+                $this->preview = $high;
+            }
+        } else {
+            // $wmSelect of 0=both Sized and Full
+            if ($wmSelect != 1) { // 1=Only Sized Photos
+            $retval = watermark_image(
+              "$dir/$name.$type",
+              "$dir/$name.$type",
+              $gallery->app->watermarkDir."/$wmName",
+              $gallery->app->watermarkDir."/$wmAlphaName",
+              $wmAlign, $wmAlignX, $wmAlignY
+            );
+            }
+            // 2=Only Full Photos
+            if ($wmSelect != 2) {
+                if (($wmSelect == 1) && !$this->isResized()) {
+                    // If watermarking only resized images, and image is not resized
+                    // Call resize as if the full image is resized
+                    $pathToResized = $dir . "/" . $this->image->name . "." . $this->image->type;
+                    $this->resize($dir, "", 0, $pathToResized);
                 }
-		return ($retval);
+                if ($this->isResized()) {
+                    $retval = watermark_image(
+                      "$dir/$name.sized.$type",
+                      "$dir/$name.sized.$type",
+                      $gallery->app->watermarkDir."/$wmName",
+                      $gallery->app->watermarkDir."/$wmAlphaName",
+                      $wmAlign,
+                      $wmAlignX,
+                      $wmAlignY
+                    );
+                }
+            }
+        }
+        return ($retval);
+    }
+
+    function setPhoto($dir, $name, $tag, $thumb_size, &$album, $pathToThumb = '') {
+        global $gallery;
+
+        /*
+        * Sanity: make sure we can handle the file first.
+        */
+        if (!isMovie($tag) && !valid_image("$dir/$name.$tag")) {
+            return _("Invalid image") .": $name.$tag";
         }
 
-	function setPhoto($dir, $name, $tag, $thumb_size, &$album, $pathToThumb="") {
-		global $gallery;
+        /* Set our image. */
+        $this->image = new Image;
+        $this->image->setFile($dir, $name, $tag);
+
+        $ret = $this->makeThumbnail($dir, $thumb_size, $album, $pathToThumb);
+        return $ret;
+    }
+
+    function makeThumbnail($dir, $thumb_size, &$album, $pathToThumb = '') {
+        global $gallery;
+        $name = $this->image->name;
+        $tag = $this->image->type;
+
+        $ratio = isset($album->fields["thumb_ratio"]) ? $album->fields["thumb_ratio"] : 0;
+
+        echo debugMessage(_("Generating thumbnail."),__FILE__, __LINE__);
+
+        debugMessage(sprintf(_("Saved Dimensions: x:%d y: %d"),
+          $this->image->raw_width, $this->image->raw_height), __FILE__, __LINE__, 3);
+
+        if ($this->isMovie()) {
+            /* Use a preset thumbnail */
+            fs_copy($gallery->app->movieThumbnail, "$dir/$name.thumb.jpg");
+            $this->thumbnail = new Image;
+            $this->thumbnail->setFile($dir, "$name.thumb", "jpg");
+            list($w, $h) = getDimensions("$dir/$name.thumb.jpg");
+            $this->thumbnail->setDimensions($w, $h);
+        } else {
+            /* Make thumbnail (first crop it spec) */
+            if ($pathToThumb) {
+                $ret = copy($pathToThumb,"$dir/$name.thumb.$tag");
+            }
+            else if ($this->image->thumb_width > 0) {
+                $ret = cut_image(
+                  "$dir/$name.$tag",
+                  "$dir/$name.thumb.$tag",
+                  $this->image->thumb_x,
+                  $this->image->thumb_y,
+                  $this->image->thumb_width,
+                  $this->image->thumb_height);
+                if ($ret) {
+                    $ret = resize_image(
+                    	"$dir/$name.thumb.$tag",
+                    	"$dir/$name.thumb.$tag",
+                    	$thumb_size,
+                    	0,
+                    	0,
+                    	true,
+                    	$gallery->app->thumbJpegImageQuality
+                    );
+                }
+            } else {
+                if(!empty($ratio)) {
+                    $ret = cropImageToRatio(
+                    	"$dir/$name.$tag",
+                    	"$dir/$name.thumb.$tag",
+                    	$thumb_size,
+                    	$ratio
+                    );
+                    if($ret) {
+                        $ret = resize_image(
+                        	"$dir/$name.thumb.$tag",
+                        	"$dir/$name.thumb.$tag",
+                        	$thumb_size,
+                        	0,
+                        	0,
+                        	true,
+                        	$gallery->app->thumbJpegImageQuality
+                        );
+                    } else {
+                        $ret = resize_image(
+                        	"$dir/$name.$tag",
+                        	"$dir/$name.thumb.$tag",
+                        	$thumb_size,
+                        	0,
+                        	0,
+                        	true,
+                        	$gallery->app->thumbJpegImageQuality
+                        );
+                    }
+                }
+                else {
+                    debugMessage(_("Generating normal thumbs"), __FILE__, __LINE__);
+                    // no resizing, use ratio for thumb as for the image itself;
+                    $ret = resize_image(
+                    	"$dir/$name.$tag",
+                    	"$dir/$name.thumb.$tag",
+                    	$thumb_size,
+                    	0,
+                    	0,
+                    	true,
+                    	$gallery->app->thumbJpegImageQuality
+                    );
+                }
+            }
+
+            if ($ret) {
+                $this->thumbnail = new Image;
+                $this->thumbnail->setFile($dir, "$name.thumb", $tag);
+
+                list($w, $h) = getDimensions("$dir/$name.thumb.$tag");
+                $this->thumbnail->setDimensions($w, $h);
+
+                /* if this is the highlight, remake it */
+                if ($this->highlight) {
+                    $this->setHighlight($dir, 1, $album);
+                }
+            } else {
+                return _("Unable to make thumbnail") ." ($ret)";
+            }
+        }
+
+        return 0;
+    }
+
+    function getPreviewTag($dir, $size = 0, $attrs = '') {
+        if ($this->preview) {
+            return $this->preview->getTag($dir, 0, $size, $attrs);
+        } else {
+            return "<i>". _("No preview") ."</i>";
+        }
+    }
+
+    /**
+	 * @return	string	$alttext
+	 * @author	Jens Tkotz <jens@peino.de>
+	 */
+    function getAlttext() {
+        $alttext = '';
+        if (!empty($this->extraFields['AltText'])) {
+            $alttext = $this->extraFields['AltText'];
+        } elseif (!empty($this->caption)) {
+            $alttext = $this->caption;
+        }
+
+        return $alttext;
+    }
+
+    function getThumbnailTag($dir, $size = 0, $attrs = '') {
+        // Prevent non-integer data from being passed
+        $size = (int)$size;
+
+        if ($this->thumbnail) {
+            return $this->thumbnail->getTag($dir, 0, $size, $attrs, $this->getAlttext());
+        } else {
+            return "<i>". _("No thumbnail") ."</i>";
+        }
+    }
+
+    function getHighlightTag($dir, $size = 0, $attrs = '', $alttext = '') {
+        // Prevent non-integer data from being passed
+        $size = (int)$size;
+
+        if (is_object($this->highlightImage)) {
+            if (!isset($alttext)) {
+                $alltext=$this->getAlttext();
+            }
+
+            return $this->highlightImage->getTag($dir, 0, $size, $attrs, $alttext);
+        } else {
+            return "<i>". _("No highlight") ."</i>";
+        }
+    }
+
+    function getPhotoTag($dir, $full = 0, $attrs) {
+        if ($this->image) {
+            return $this->image->getTag($dir, $full, '', $attrs, $this->getAlttext());
+        } else {
+            return "about:blank";
+        }
+    }
+
+    function getPhotoPath($dir, $full = 0) {
+        if ($this->image) {
+            return $this->image->getPath($dir, $full);
+        } else {
+            return "about:blank";
+        }
+    }
+
+    /**
+	 * @param	$full		boolean
+	 * @return	$imageName	string 
+	 * @author	Jens Tkotz<jens@peino.de
+	 */ 
+    function getImageName($full = false) {
+        if($this->image) {
+            $imageName = $this->image->getImageName($full);
+        }
+        else {
+            $imageName = "about:blank";
+        }
+        return $imageName;
+    }
+
+    function getPhotoId() {
+        if ($this->image) {
+            return $this->image->getId();
+        } else {
+            return "unknown";
+        }
+    }
+
+    function delete($dir) {
+        if (is_object($this->highlightImage)) {
+            $this->highlightImage->delete($dir);
+        }
+
+        if ($this->image) {
+            $this->image->delete($dir);
+        }
+
+        if ($this->thumbnail) {
+            $this->thumbnail->delete($dir);
+        }
+        if ($this->preview) {
+            $this->preview->delete($dir);
+        }
+    }
+
+    function setCaption($cap) {
+        $this->caption = $cap;
+    }
+
+    function getCaption() {
+        return $this->caption;
+    }
+
+    function isAlbum() {
+        return ($this->isAlbumName !== NULL) ? true : false;
+    }
+
+    function setAlbumName($name) {
+        $this->isAlbumName = $name;
+    }
+
+    function getAlbumName() {
+        return $this->isAlbumName;
+    }
+
+    /**
+	 * Returns true or false wether the item is in acceptableMovieList or not
+	 * @return bool
+	 */
+    function isMovie() {
+        if (isset($this->image)) {
+            return isMovie($this->image->type);
+        }
+        else {
+            return false;
+        }
+    }
+
+    function resize($dir, $target, $filesize, $pathToResized) {
+        if (isset($this->image)) {
+            $this->image->resize($dir, $target, $filesize, $pathToResized);
+        }
+    }
+    function setExtraField($name, $value) {
+        $this->extraFields[$name] = $value;
+    }
+
+    /**
+	 * Returns value of an extrafield
+	 * @param	$name	string	fieldname
+	 * @return	$value	mixed
+	 */
+    function getExtraField($name) {
+        if (isset($this->extraFields[$name])) {
+            $value = $this->extraFields[$name];
+        }
+        else {
+            $value = '';
+        }
+        return $value;
+    }
+
+    function lastCommentDate()  {
+        global $gallery;
+        if ($this->numComments() == 0) {
+            return -1;
+        }
+        $comment = $this->getComment($this->numComments());
+        return $comment->datePosted; // returns the time()
+    }
+
+    function getEmailMe($type, $user) {
+        $uid = $user->getUid();
+        if (isset ($this->emailMe[$type])) {
+            return isset($this->emailMe[$type][$uid]);
+        } else {
+            return false;
+        }
+    }
+    function getEmailMeListUid ($type) {
+        if (isset( $this->emailMe[$type])) {
+            return array_keys($this->emailMe[$type]);
+        } else {
+            return array();
+        }
+    }
+    function setEmailMe($type, $user) {
+        if ($this->getEmailMe($type, $user)) {
+            return;
+        }
+        $uid = $user->getUid();
+        $this->emailMe[$type][$uid]=true;
+    }
+    function unsetEmailMe($type, $user) {
+        if (!$this->getEmailMe($type, $user)) {
+            return;
+        }
+        $uid = $user->getUid();
+        unset($this->emailMe[$type][$uid]);
+    }
+
+    function addImageArea($area) {
+        if(!isset($this->imageAreas)) {
+            $this->imageAreas = array();
+        }
+        $this->imageAreas[] = $area;
+    }
+
+    function getAllImageAreas() {
+        if(!isset($this->imageAreas)) {
+            $this->imageAreas = array();
+        }
+        return $this->imageAreas;
+    }
 
-		/*
-	 	 * Sanity: make sure we can handle the file first.
-		 */
-		if (!isMovie($tag) &&
-		    !valid_image("$dir/$name.$tag")) {
-			return _("Invalid image") .": $name.$tag";
-		}
-
-		/* Set our image. */
-		$this->image = new Image;
-		$this->image->setFile($dir, $name, $tag);
-
-		$ret = $this->makeThumbnail($dir, $thumb_size, $album, $pathToThumb);
-		return $ret;
-	}
-
-	function makeThumbnail($dir, $thumb_size, &$album, $pathToThumb="") {
-		global $gallery;
-		$name = $this->image->name;
-		$tag = $this->image->type;
-
-		if (isDebugging()) {
-		     processingMsg(_("Generating thumbnail."));
-		}
-		
-		if ($this->isMovie()) {
-			/* Use a preset thumbnail */
-			fs_copy($gallery->app->movieThumbnail, "$dir/$name.thumb.jpg");
-			$this->thumbnail = new Image;
-			$this->thumbnail->setFile($dir, "$name.thumb", "jpg");
-			list($w, $h) = getDimensions("$dir/$name.thumb.jpg");
-			$this->thumbnail->setDimensions($w, $h);
-		} else {
-			/* Make thumbnail (first crop it spec) */
-			if ($pathToThumb) {
-				$ret = copy($pathToThumb,"$dir/$name.thumb.$tag");
-			} 
-			else if ($this->image->thumb_width > 0) {
-				$ret = cut_image("$dir/$name.$tag", 
-								 "$dir/$name.thumb.$tag", 
-								 $this->image->thumb_x, 
-								 $this->image->thumb_y,
-								 $this->image->thumb_width, 
-								 $this->image->thumb_height);
-				if ($ret) {
-					$ret = resize_image("$dir/$name.thumb.$tag", 
-										"$dir/$name.thumb.$tag", $thumb_size);
-				}
-			} else {
-				$ret = resize_image("$dir/$name.$tag", "$dir/$name.thumb.$tag",
-					     $thumb_size);
-			}
-
-			if ($ret) { 
-				$this->thumbnail = new Image;
-				$this->thumbnail->setFile($dir, "$name.thumb", $tag);
-	
-				list($w, $h) = getDimensions("$dir/$name.thumb.$tag");
-				$this->thumbnail->setDimensions($w, $h);
-
-				/* if this is the highlight, remake it */
-				if ($this->highlight) {
-					$this->setHighlight($dir, 1, $album);
-				}
-			} else {
-				return _("Unable to make thumbnail") ." ($ret)";
-			}
-		}
-
-		return 0;
-	}
-
-	function getPreviewTag($dir, $size=0, $attrs="") {
-		if ($this->preview) {
-			return $this->preview->getTag($dir, 0, $size, $attrs);
-		} else {
-			return "<i>". _("No preview") ."</i>";
-		}
-	}
-
-	function getAlttext() {
-		if (!empty($this->extraFields['AltText'])) {
-			return $this->extraFields['AltText'];
-		} elseif (!empty($this->caption)) {
-			return $this->caption;
-		} else {
-			return "";
-		}
-	}
-
-	function getThumbnailTag($dir, $size=0, $attrs="") {
-		// Prevent non-integer data from being passed
-		$size = (int)$size;
-
-		if ($this->thumbnail) {
-			return $this->thumbnail->getTag($dir, 0, $size, $attrs, $this->getAlttext());
-		} else {
-			return "<i>". _("No thumbnail") ."</i>";
-		}
-	}
-
-	function getHighlightTag($dir, $size=0, $attrs='', $alttext='') {
-		// Prevent non-integer data from being passed
-		$size = (int)$size;
-
-		if (is_object($this->highlightImage)) {
-			if (!isset($alttext)) {
-				$alltext=$this->getAlttext();
-			}
-			
-			return $this->highlightImage->getTag($dir, 0, $size, $attrs, $alttext);
-		} else {
-			return "<i>". _("No highlight") ."</i>";
-		}
-	}
-
-	function getPhotoTag($dir, $full=0, $attrs) {
-		if ($this->image) {
-			return $this->image->getTag($dir, $full, '', $attrs, $this->getAlttext());
-		} else {
-			return "about:blank";
-		}
-	}
-
-	function getPhotoPath($dir, $full=0) {
-		if ($this->image) {
-			return $this->image->getPath($dir, $full);
-		} else {
-			return "about:blank";
-		}
-	}
-
-	function getPhotoId() {
-		if ($this->image) {
-			return $this->image->getId();
-		} else {
-			return "unknown";
-		}
-	}
-
-	function delete($dir) {
-		if (is_object($this->highlightImage)) {
-			$this->highlightImage->delete($dir);
-		}
-
-		if ($this->image) {
-			$this->image->delete($dir);
-		}
-
-		if ($this->thumbnail) {
-			$this->thumbnail->delete($dir);
-		}
-		if ($this->preview) {
-			$this->preview->delete($dir);
-		}
-	}
-
-	function setCaption($cap) {
-		$this->caption = $cap;
-	}
-
-	function getCaption() {
-		return $this->caption;
-	}
-
-	function isAlbum() {
-		return ($this->isAlbumName !== NULL) ? true : false;
-	}
-	
-	function setAlbumName($name) {
-		$this->isAlbumName = $name;
-	}
-
-	function getAlbumName() {
-		return $this->isAlbumName;
-	}
-
-	function isMovie() {
-		if (isset($this->image)) {
-			return isMovie($this->image->type);
-		}
-	}
-
-	function resize($dir, $target, $filesize, $pathToResized) {
-		if (isset($this->image)) {
-			$this->image->resize($dir, $target, $filesize, $pathToResized);
-		}
-	}
-	function setExtraField($name, $value)
-	{
-		$this->extraFields[$name]=$value;
-	}
-	function getExtraField($name)
-	{
-		if (isset($this->extraFields[$name])) {
-			return $this->extraFields[$name];
-		}
-		return null;
-	}
-	function lastCommentDate() 
-	{
-		global $gallery;
-		if ($this->numComments() == 0) {
-			return -1;
-		}
-		$comment=$this->getComment($this->numComments());
-		return $comment->datePosted; // returns the time()
-       	}
-	function getEmailMe($type, $user) {
-		$uid=$user->getUid();
-		if (isset ($this->emailMe[$type])) {
-			return isset($this->emailMe[$type][$uid]);
-		} else {
-			return false;
-		}
-	}
-	function getEmailMeListUid ($type) {
-		if (isset( $this->emailMe[$type])) {
-			return array_keys($this->emailMe[$type]);
-		} else {
-			return array();
-		}
-	}
-	function setEmailMe($type, $user) {
-		if ($this->getEmailMe($type, $user)) {
-		       	return;
-		}
-		$uid=$user->getUid();
-		$this->emailMe[$type][$uid]=true;
-	}
-	function unsetEmailMe($type, $user) {
-		if (!$this->getEmailMe($type, $user)) {
-		       	return;
-		}
-		$uid=$user->getUid();
-		unset($this->emailMe[$type][$uid]);
-	}
+    function deleteImageArea($index) {
+        unset($this->imageAreas[$index]);
+    }
 }
 
 ?>
diff -Naur gallery-1.5.1/classes/Album.php gallery-1.5.2/classes/Album.php
--- gallery-1.5.1/classes/Album.php	2005-09-17 00:43:59.000000000 +0200
+++ gallery-1.5.2/classes/Album.php	2006-01-09 03:47:03.000000000 +0100
@@ -1,2686 +1,2934 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Album.php,v 1.259.2.5 2005/09/16 22:43:59 jenst Exp $
+ * $Id: Album.php,v 1.280.2.3 2006/01/09 02:47:03 jenst Exp $
  */
 ?>
 <?php
 class Album {
-	var $fields;
-	var $photos;
-	var $dir;
-	var $version;
-	var $tsilb = "TSILB";
-
-	/* 
-	 * This variable contains data that is useful for the lifetime
-	 * of the album object but which should not be saved in the
-	 * database.  Data like the mirrorUrl which we want to validate
-	 * the first time we touch an album.
-	 */
-	var $transient;
-
-	function Album() {
-	    global $gallery;
-
-	    $this->fields["title"] = _("Untitled");
-	    $this->fields["description"] = "";
-	    $this->fields["summary"]="";
-	    $this->fields["nextname"] = "aaa";
-	    $this->fields["bgcolor"] = "";
-	    $this->fields["textcolor"] = "";
-	    $this->fields["linkcolor"] = "";
-	    $this->fields["background"] = "";
-	    $this->fields["font"] = $gallery->app->default["font"];
-	    $this->fields["border"] = $gallery->app->default["border"];
-	    $this->fields["bordercolor"] = $gallery->app->default["bordercolor"];
-	    $this->fields["returnto"] = $gallery->app->default["returnto"];
-	    $this->fields["thumb_size"] = $gallery->app->default["thumb_size"];
-	    $this->fields["resize_size"] = $gallery->app->default["resize_size"];
-	    $this->fields["resize_file_size"] = $gallery->app->default["resize_file_size"];
-	    $this->fields['max_size'] = $gallery->app->default['max_size'];
-	    $this->fields['max_file_size'] = $gallery->app->default['max_file_size'];
-	    $this->fields["rows"] = $gallery->app->default["rows"];
-	    $this->fields["cols"] = $gallery->app->default["cols"];
-	    $this->fields["fit_to_window"] = $gallery->app->default["fit_to_window"];
-	    $this->fields["use_fullOnly"] = $gallery->app->default["use_fullOnly"];
-	    if (isset($gallery->app->default['print_photos'])) {
-		$this->fields["print_photos"] = $gallery->app->default["print_photos"];
-	    }
-	
-	    $this->fields["guid"] = 0;
-	    if (isset($gallery->app->use_exif)) {
-		$this->fields["use_exif"] = "yes";
-	    } else {
-		$this->fields["use_exif"] = "no";
-	    }
-
-	    $standardPerm = ($gallery->app->default['defaultPerms']) ? $gallery->app->default['defaultPerms'] : "everybody";
-
-	    switch($standardPerm) {
-	    	case 'nobody':
-		    $UserToPerm = $gallery->userDB->getNobody();
-		    break;
-		
-		case 'loggedin':
-		    $UserToPerm = $gallery->userDB->getLoggedIn();
-		    break;
-
-		case 'everybody':
-		default:
-		    $UserToPerm= $gallery->userDB->getEverybody();
-		    break;
-	    }
-
-	    $this->setPerm("canRead", $UserToPerm->getUid(), 1);
-	    $this->setPerm("canViewFullImages", $UserToPerm->getUid(), 1);
-	    $this->setPerm("canViewComments", $UserToPerm->getUid(), 1);
-	    $this->setPerm("canAddComments", $UserToPerm->getUid(), 1);		
-		
-	    $this->fields["parentAlbumName"] = 0;
-	    $this->fields["clicks"] = 0;
-	    $this->fields["clicks_date"] = time();
-	    $this->fields["display_clicks"] = $gallery->app->default["display_clicks"];
-	    $this->fields["serial_number"] = 0;
-	    $this->fields["extra_fields"] = split(",", trim($gallery->app->default["extra_fields"]));
-	    foreach ($this->fields["extra_fields"] as $key => $value) {
-	    	$value = trim($value);
-	    	if ($value == "") {
-		    unset($this->fields["extra_fields"][$key]);
-		} else {
-		    $this->fields["extra_fields"][$key] = $value;
-		}
-	    }
-		
-	    $this->fields["cached_photo_count"] = 0;
-	    $this->fields["photos_separate"] = FALSE;
-	    $this->transient->photosloaded = TRUE; 
-		
-	    $this->fields["item_owner_display"] = $gallery->app->default["item_owner_display"];
-	    $this->fields["item_owner_modify"] = $gallery->app->default["item_owner_modify"];
-	    $this->fields["item_owner_delete"] = $gallery->app->default["item_owner_delete"];
-	    $this->fields["add_to_beginning"] = $gallery->app->default["add_to_beginning"];
-	    $this->fields["last_quality"] = $gallery->app->jpegImageQuality;
-
-	    // MICRO-THUMB NAV Variables
-	    $this->fields["nav_thumbs"] = $gallery->app->default["nav_thumbs"];
-	    $this->fields["nav_thumbs_style"] = $gallery->app->default["nav_thumbs_style"];
-	    $this->fields["nav_thumbs_first_last"] = $gallery->app->default["nav_thumbs_first_last"];
-	    $this->fields["nav_thumbs_prev_shown"] = $gallery->app->default["nav_thumbs_prev_shown"];
-	    $this->fields["nav_thumbs_next_shown"] = $gallery->app->default["nav_thumbs_next_shown"];
-	    $this->fields["nav_thumbs_location"] = $gallery->app->default["nav_thumbs_location"];
-	    $this->fields["nav_thumbs_size"] = $gallery->app->default["nav_thumbs_size"];
-	    $this->fields["nav_thumbs_current_bonus"] = $gallery->app->default["nav_thumbs_current_bonus"];
-
-            /* VOTING Variables */
-            $this->fields["poll_type"]=$gallery->app->default["poll_type"]; // none, rank or critique
-            $this->fields["poll_scale"]=$gallery->app->default["poll_scale"]; // num of choices to offer voter
-            $this->fields["votes"]=array(); // holds all the votes by UID or session ID
-            $this->fields["poll_nv_pairs"]= $gallery->app->default["poll_nv_pairs"];
-                       // allows admin to explicitly set display value and
-                       // points for all voting options.  EG "Excellent" -> 4
-                       // points; "Good" -> 3 points etc etc
-            $this->fields["poll_hint"]=$gallery->app->default["poll_hint"];
-                       // This is displayed above the voting options
-                       // for each image.
-            $this->fields["poll_show_results"]=$gallery->app->default["poll_show_results"];
-                       // The results graph and breakdown will be displayed
-                       // if this is yes.  Note that this should eventually
-                       // be part of permissions
-            $this->fields["poll_num_results"]=$gallery->app->default["poll_num_results"]; 
-	       		// number of lines of graph to show on the album page
-	    $this->fields["voter_class"]=$gallery->app->default["voter_class"];
-                        // Nobody, Everybody, Logged in
-	       // end of VOTING variables
-
-	    $this->fields["slideshow_type"]=$gallery->app->default["slideshow_type"];
-	    $this->fields["slideshow_length"]=$gallery->app->default["slideshow_length"];
-	    $this->fields["slideshow_recursive"]=$gallery->app->default["slideshow_recursive"];
-	    $this->fields["slideshow_loop"]=$gallery->app->default["slideshow_loop"];
-	    $this->fields["album_frame"]=$gallery->app->default["album_frame"];
-	    $this->fields["thumb_frame"]=$gallery->app->default["thumb_frame"];
-	    $this->fields["image_frame"]=$gallery->app->default["image_frame"];
-	    $this->fields["showDimensions"] = $gallery->app->default["showDimensions"];
-	    $this->fields["email_me"] = array();
-	    $this->fields["ecards"] = $gallery->app->default["ecards"];
-
-	    // Seed new albums with the appropriate version.
-	   $this->version = $gallery->album_version;
-       	}
-
-	function isRoot() {
-	    if ($this->fields["parentAlbumName"]) {
-		return 0;
-	    } else {
-		return 1;
-	    }
-	}
+    var $fields;
+    var $photos;
+    var $dir;
+    var $version;
+    var $tsilb = "TSILB";
+
+    /*
+    * This variable contains data that is useful for the lifetime
+    * of the album object but which should not be saved in the
+    * database.  Data like the mirrorUrl which we want to validate
+    * the first time we touch an album.
+    */
+    var $transient;
+
+    function Album() {
+        global $gallery;
+
+        $this->fields["title"] = _("Untitled");
+        $this->fields["description"] = "";
+        $this->fields["summary"]="";
+        $this->fields["nextname"] = "aaa";
+        $this->fields["bgcolor"] = "";
+        $this->fields["textcolor"] = "";
+        $this->fields["linkcolor"] = "";
+        $this->fields["background"] = "";
+        $this->fields["font"] = $gallery->app->default["font"];
+        $this->fields["border"] = $gallery->app->default["border"];
+        $this->fields["bordercolor"] = $gallery->app->default["bordercolor"];
+        $this->fields["returnto"] = $gallery->app->default["returnto"];
+        $this->fields["thumb_size"] = $gallery->app->default["thumb_size"];
+        $this->fields["thumb_ratio"] = $gallery->app->default["thumb_ratio"];
+        $this->fields["resize_size"] = $gallery->app->default["resize_size"];
+        $this->fields["resize_file_size"] = $gallery->app->default["resize_file_size"];
+        $this->fields["max_size"] = $gallery->app->default["max_size"];
+        $this->fields["max_file_size"] = $gallery->app->default["max_file_size"];
+        $this->fields["rows"] = $gallery->app->default["rows"];
+        $this->fields["cols"] = $gallery->app->default["cols"];
+        $this->fields["fit_to_window"] = $gallery->app->default["fit_to_window"];
+        $this->fields["use_fullOnly"] = $gallery->app->default["use_fullOnly"];
+        $this->fields["print_photos"] = isset($gallery->app->default["print_photos"]) ? $gallery->app->default["print_photos"] : '';
+        $this->fields["use_exif"] = isset($gallery->app->use_exif) ? 'yes' : 'no';
+        $this->fields["guid"] = 0;
+
+        $standardPerm = ($gallery->app->default['defaultPerms']) ? $gallery->app->default['defaultPerms'] : "everybody";
+
+        switch($standardPerm) {
+            case 'nobody':
+                $UserToPerm = $gallery->userDB->getNobody();
+            break;
+
+            case 'loggedin':
+                $UserToPerm = $gallery->userDB->getLoggedIn();
+            break;
+
+            case 'everybody':
+            default:
+                $UserToPerm = $gallery->userDB->getEverybody();
+            break;
+        }
 
-	function itemLastCommentDate($i) {
-		global $gallery;
-	       	$photo = $this->getPhoto($i);
-			if ($photo->isAlbum()) {
-		       	$album = $this->getNestedAlbum($i);
-		       	return $album->lastCommentDate($gallery->app->comments_indication_verbose);
-	       	} else {
-		       	return $photo->lastCommentDate();
-	       	}
-	}
-	function lastCommentDate($verbose = "yes") {
-		global $gallery;
-		if (!$gallery->user->canViewComments($this)) {
-			return -1;
-		}
-	       	$count = $this->numPhotos(1);
-		$mostRecent = -1;
-	       	for ($i = 1; $i <= $count; $i++) {
-			$subMostRecent=$this->itemLastCommentDate($i);
-		       	if ($subMostRecent > $mostRecent) {
-			       	$mostRecent = $subMostRecent;
-			       	if ($verbose == "no") {
-				       	break;
-			       	}
-
-			}
-	       	}
-		return $mostRecent;
-	}
+        $this->setPerm("canRead", $UserToPerm->getUid(), 1);
+        $this->setPerm("canViewFullImages", $UserToPerm->getUid(), 1);
+        $this->setPerm("canViewComments", $UserToPerm->getUid(), 1);
+        $this->setPerm("canAddComments", $UserToPerm->getUid(), 1);
+
+        $this->fields["parentAlbumName"] = 0;
+        $this->fields["clicks"] = 0;
+        $this->fields["clicks_date"] = time();
+        $this->fields["display_clicks"] = $gallery->app->default["display_clicks"];
+        $this->fields["serial_number"] = 0;
+        $this->fields["extra_fields"] = split(",", trim($gallery->app->default["extra_fields"]));
+        foreach ($this->fields["extra_fields"] as $key => $value) {
+            $value = trim($value);
+            if (empty($value)) {
+                unset($this->fields["extra_fields"][$key]);
+            } else {
+                $this->fields["extra_fields"][$key] = $value;
+            }
+        }
 
-	function &getNestedAlbum($index, $loadphotos=true) {
-		
-		$albumName = $this->getAlbumName($index);
-		$album = new Album();
-		$album->load($albumName, $loadphotos);
-		return $album;	
-	}
+        $this->fields["cached_photo_count"] = 0;
+        $this->fields["photos_separate"] = FALSE;
+        $this->transient->photosloaded = TRUE;
+
+        $this->fields["item_owner_display"] = $gallery->app->default["item_owner_display"];
+        $this->fields["item_owner_modify"] = $gallery->app->default["item_owner_modify"];
+        $this->fields["item_owner_delete"] = $gallery->app->default["item_owner_delete"];
+        $this->fields["add_to_beginning"] = $gallery->app->default["add_to_beginning"];
+        $this->fields["last_quality"] = $gallery->app->jpegImageQuality;
+
+        // MICRO-THUMB NAV Variables
+        $this->fields["nav_thumbs"] = $gallery->app->default["nav_thumbs"];
+        $this->fields["nav_thumbs_style"] = $gallery->app->default["nav_thumbs_style"];
+        $this->fields["nav_thumbs_first_last"] = $gallery->app->default["nav_thumbs_first_last"];
+        $this->fields["nav_thumbs_prev_shown"] = $gallery->app->default["nav_thumbs_prev_shown"];
+        $this->fields["nav_thumbs_next_shown"] = $gallery->app->default["nav_thumbs_next_shown"];
+        $this->fields["nav_thumbs_location"] = $gallery->app->default["nav_thumbs_location"];
+        $this->fields["nav_thumbs_size"] = $gallery->app->default["nav_thumbs_size"];
+        $this->fields["nav_thumbs_current_bonus"] = $gallery->app->default["nav_thumbs_current_bonus"];
+
+        /* VOTING Variables */
+        $this->fields["poll_type"]=$gallery->app->default["poll_type"]; // none, rank or critique
+        $this->fields["poll_scale"]=$gallery->app->default["poll_scale"]; // num of choices to offer voter
+        $this->fields["votes"]=array(); // holds all the votes by UID or session ID
+        $this->fields["poll_nv_pairs"]= $gallery->app->default["poll_nv_pairs"];
+        // allows admin to explicitly set display value and
+        // points for all voting options.  EG "Excellent" -> 4
+        // points; "Good" -> 3 points etc etc
+        $this->fields["poll_hint"]=$gallery->app->default["poll_hint"];
+        // This is displayed above the voting options
+        // for each image.
+        $this->fields["poll_show_results"]=$gallery->app->default["poll_show_results"];
+        // The results graph and breakdown will be displayed
+        // if this is yes.  Note that this should eventually
+        // be part of permissions
+        $this->fields["poll_num_results"]=$gallery->app->default["poll_num_results"];
+        // number of lines of graph to show on the album page
+        $this->fields["voter_class"]=$gallery->app->default["voter_class"];
+        // Nobody, Everybody, Logged in
+        // end of VOTING variables
+
+        $this->fields["slideshow_type"]=$gallery->app->default["slideshow_type"];
+        $this->fields["slideshow_length"]=$gallery->app->default["slideshow_length"];
+        $this->fields["slideshow_recursive"]=$gallery->app->default["slideshow_recursive"];
+        $this->fields["slideshow_loop"]=$gallery->app->default["slideshow_loop"];
+        $this->fields["album_frame"]=$gallery->app->default["album_frame"];
+        $this->fields["thumb_frame"]=$gallery->app->default["thumb_frame"];
+        $this->fields["image_frame"]=$gallery->app->default["image_frame"];
+        $this->fields["showDimensions"] = $gallery->app->default["showDimensions"];
+        $this->fields["email_me"] = array();
+        $this->fields["ecards"] = $gallery->app->default["ecards"];
+
+        // Seed new albums with the appropriate version.
+        $this->version = $gallery->album_version;
+    }
+
+    function isRoot() {
+        if ($this->fields["parentAlbumName"]) {
+            return false;
+        } else {
+            return true;
+        }
+    }
 
-	function &getParentAlbum($loadphotos = TRUE) {
-	    $ret = NULL;
-	    if ($this->fields['parentAlbumName']) {
-		$parentAlbum = new Album();
-		$parentAlbum->load($this->fields['parentAlbumName'], $loadphotos);
-		$ret = $parentAlbum;
-	    }
-	    return $ret;
-	}
+    function itemLastCommentDate($i) {
+        global $gallery;
+        $photo = $this->getPhoto($i);
+        if ($photo->isAlbum()) {
+            $album = $this->getNestedAlbum($i);
+            return $album->lastCommentDate($gallery->app->comments_indication_verbose);
+        } else {
+            return $photo->lastCommentDate();
+        }
+    }
+    
+    function lastCommentDate($verbose = "yes") {
+        global $gallery;
+        if (!$gallery->user->canViewComments($this)) {
+            return -1;
+        }
+        $count = $this->numPhotos(1);
+        $mostRecent = -1;
+        for ($i = 1; $i <= $count; $i++) {
+            $subMostRecent=$this->itemLastCommentDate($i);
+            if ($subMostRecent > $mostRecent) {
+                $mostRecent = $subMostRecent;
+                if ($verbose == "no") {
+                    break;
+                }
 
-	/*
-	** Returns an array of the parent albums.
-	** Each elemt contains a prefix Text, the title and the url.
-	** Array is reverted, so the first Element is the topalbum.
-	** If you set $addChild true, then the child album itself is added as last Element.
-	** If you set $ignoreReturnto, then really ALL toplevel albums are added.
-	** Based on code by Dariush Molavi
-	** Note: the 30 is a limit to prevent unlimited recursing.
-	*/
-	function getParentAlbums($addChild = false, $ignoreReturnto = false) {
-	    global $gallery;
-
-	    $currentAlbum = $this;
-	    $parentAlbumsArray = array();
-	    $depth = 0;
-
-	    if ($addChild == true) {
-		$parentAlbumsArray[] = array(
-			'prefixText' => _("Album"),
-			'title' => $this->fields['title'],
-			'url' => makeAlbumUrl($this->fields['name']));
-	    }
-
-	    /* If there is a parent album and our current album allows the return link, or we ignore it,
-	    ** then add it to the parent album to the list.
-	    */
-	    while (($parentAlbum = $currentAlbum->getParentAlbum(FALSE)) && 
-			$depth < 30 &&
-			($currentAlbum->fields['returnto'] != 'no' || $ignoreReturnto == true)) {
-		$parentAlbumsArray[] = array(
-			'prefixText' => _("Album"),
-			'title' => $parentAlbum->fields['title'],
-			'url' => makeAlbumUrl($parentAlbum->fields['name']));
-		$depth++;
-		$currentAlbum = $parentAlbum;
-	    }
-
-	    /* If the last album is a root album (= has no parent) and a returnto link is wanted, 
-	    ** add the link to Gallery mainpage 
-	    */	
-	    if (!isset($parentAlbum) && $currentAlbum->fields['returnto'] != 'no'){
-		$parentAlbumsArray[] = array(
-			'prefixText' => _("Gallery"),
-			'title' => $gallery->app->galleryTitle,
-			'url' => makeGalleryUrl("albums.php"));
-	    }
+            }
+        }
+        return $mostRecent;
+    }
 
-	    $parentAlbumsArray = array_reverse($parentAlbumsArray, true);
-	    return $parentAlbumsArray;
-	}
+    function &getNestedAlbum($index, $loadphotos=true) {
 
-	function getRootAlbumName() {
+        $albumName = $this->getAlbumName($index);
+        $album = new Album();
+        $album->load($albumName, $loadphotos);
+        return $album;
+    }
+
+    function &getParentAlbum($loadphotos = TRUE) {
+        $ret = NULL;
+        if ($this->fields['parentAlbumName']) {
+            $parentAlbum = new Album();
+            $parentAlbum->load($this->fields['parentAlbumName'], $loadphotos);
+            $ret = $parentAlbum;
+        }
+        return $ret;
+    }
 
-		$parentAlbum =& $this->getParentAlbum(FALSE);
-		if (isset($parentAlbum)) {
-			$returnValue = $parentAlbum->getRootAlbumName();
-		} else {
-			$returnValue = $this->fields['name'];
-		}
-		return $returnValue;
-	}
-			
-	function versionOutOfDate() {
-		global $gallery;
-		if (strcmp($this->version, $gallery->album_version)) {
-			return 1;
-		}
-		return 0;
-	}
+    /**
+     * Returns an array of the parent albums.
+     * Each elemt contains a prefix Text, the title and the url.
+     * Array is reverted, so the first Element is the topalbum.
+     * If you set $addChild true, then the child album itself is added as last Element.
+     * If you set $ignoreReturnto, then really ALL toplevel albums are added.
+     * Based on code by Dariush Molavi
+     * Note: the 30 is a limit to prevent unlimited recursing.
+     * @param $addChild		boolean
+     * @param $ignoreReturnto	boolean
+     * @author Dari Molavi
+     * @author Jens Tkotz
+     */
+    function getParentAlbums($addChild = false, $ignoreReturnto = false) {
+        global $gallery;
+
+        $currentAlbum = $this;
+        $parentAlbumsArray = array();
+        $depth = 0;
+
+        if ($addChild == true) {
+            $parentAlbumsArray[] = array(
+                'prefixText' => _("Album"),
+                'title' => $this->fields['title'],
+                'url' => makeAlbumUrl($this->fields['name']));
+        }
 
-	/*
-	 * Whenever you change this code, you should bump the $gallery->album_version
-	 * appropriately.
-	 */	
-	function integrityCheck() {
-		global $gallery;
-		$gallery->album = $this;
-		
-		if (!$this->transient->photosloaded) {
-			$this->load($this->fields['name']);
-		}
-
-		if (!strcmp($this->version, $gallery->album_version)) {
-			print _("Album up to date.") ." <br>";
-			return 0;
-		}
-
-		print _("Upgrading album properties...");
-		my_flush();
-
-		$changed = 0;
-		$this->fields["last_quality"] = $gallery->app->jpegImageQuality;
-		$check = array("thumb_size", 
-				"resize_size", 
-				"resize_file_size",
-			        'max_size',
-			        'max_file_size',
-				"rows", 
-				"cols",
-				"fit_to_window", 
-				"use_fullOnly", 
-				"print_photos",
-				"display_clicks",
-				"item_owner_display",
-				"item_owner_modify",
-				"item_owner_delete", 
-				"add_to_beginning",
-				"poll_type",
-				"poll_scale",
-				"poll_nv_pairs",
-				"poll_hint",
-				"poll_show_results",
-				"poll_num_results",
-				"voter_class",
-				"slideshow_type",
-				"slideshow_length",
-				"slideshow_recursive",
-				"slideshow_loop",
-				"album_frame",
-				"thumb_frame",
-				"image_frame",
-				"showDimensions",
-				"background",
-				"nav_thumbs",
-				"nav_thumbs_style",
-				"nav_thumbs_first_last",
-				"nav_thumbs_prev_shown",
-				"nav_thumbs_next_shown",
-				"nav_thumbs_location",
-				"nav_thumbs_size",
-				"nav_thumbs_current_bonus"
-				);
-		foreach ($check as $field) {
-			if (!isset($this->fields[$field]) && isset($gallery->app->default[$field])) {
-				$this->fields[$field] = $gallery->app->default[$field];
-				$changed = 1;
-			}
-		}
-
-		/* 
-		 * Copy the canRead permissions to viewFullImage if
-		 * the album version is older than the feature.
-		 */
-		if ($this->version < 5) {
-		    if (!empty($this->fields['perms']['canRead'])) {
-			foreach ($this->fields['perms']['canRead'] as $uid => $p) {
-				$this->fields['perms']['canViewFullImages'][$uid] = $p;
-			}
-			$changed = 1;
-		    }
-		}
-		if ($this->version < 10) {
-		    if (empty($this->fields['summary'])) {
-		    		$this->fields['summary']='';
-			$changed = 1;
-		    }
-		    if (empty($this->fields['extra_fields']) || !is_array($this->fields['extra_fields'])) {
-		    	$this->fields['extra_fields']=array();
-			$changed = 1;
-		    }
-		}
-		if ($this->version < 16) {
-		    if (empty($this->fields['votes'])) {
-		    		$this->fields['votes']=array();
-			$changed = 1;
-		    }
-		}
-		if ($this->version < 17) {
-			foreach ($this->fields['votes'] as $key => $value) {
-				unset($this->fields['votes'][$key]);
-				$this->fields['votes']["item.$key"]=$value;
-				$changed = 1;
-			}
-		}
-
-		/* upgrade photo print services to new (1.5.1) format */
-		if ($this->version < 20) {
-		    if ($this->fields['print_photos'] == 'none') {
-			$this->fields['print_photos'] = array();
-		    } else {
-			$this->fields['print_photos'] = array($this->fields['print_photos']);
-		    }
-		    $changed = true;
-		}
-
-		if ($this->version < 23) {
-			if ($this->fields['public_comments'] == 'yes') {
-			       	$everybody = $gallery->userDB->getEverybody();
-				$this->setPerm("canViewComments", $everybody->getUid(), 1);
-				$this->setPerm("canAddComments", $everybody->getUid(), 1);
-
-			} else {
-			       	$nobody = $gallery->userDB->getNobody();
-				$this->setPerm("canViewComments", $nobody->getUid(), 1);
-				$this->setPerm("canAddComments", $nobody->getUid(), 1);
-			}
-		}
-		if ($this->version < 24) {
-			$this->fields['email_me'] = array();
-		}
-
-		/* Convert all uids to the new style */
-		if ($this->version < 25) {
-		    // Owner
-		    $this->fields["owner"] = $gallery->userDB->convertUidToNewFormat($this->fields["owner"]);
-
-		    // Permissions
-		    $newPerms = array();
-		    foreach ($this->fields["perms"] as $perm => $uids) {
-			foreach ($uids as $uid => $value) {
-			    $newUid = $gallery->userDB->convertUidToNewFormat($uid);
-			    $newPerms[$perm][$newUid] = 1;
-			}
-		    }
-		    $this->fields["perms"] = $newPerms;
-		}
-		
-		/* 
-	         * Added for album revision 26:
-		 * Changes "." to "-" in gallery names
-		 *  Since we're not sure how the .'s are appearing in gallery names
-		 *  this is worth running on any DB upgrade, for now
-	         */
-		if (strpos($this->fields["name"], ".") !== false) {
-			$oldName = $this->fields["name"];
-			$newName = strtr($this->fields["name"], ".", "-");
-
-			global $albumDB;
-			$albumDB->renameAlbum($oldName, $newName);
-			$albumDB->save();
-			printf(_("Renaming album from %s to %s..."), $oldName, $newName);
-
-			// AlbumDB will set this value .. but it will be set in a different
-			// instance of this album, so we have to do it here also so that
-			// when *this* instance gets saved the value is right
-			$this->fields["name"] = $newName;
-			$changed = 1;
-		}
-
-		/* Rebuild highlight */
-		if ($this->version < 27) {
-			$index = $this->getHighlight();
-			if (isset($index)) {
-				$this->setHighlight($index);
-			}
-		}
-
-		if ($this->version < 29) {
-			$this->fields['guid'] = genGUID();
-			$changed = 1;
-		}
-
-		if ($this->version < 30) {
-			if ($this->fields["border"] == 'off') {
-				$this->fields["border"] = 0;
-			}
-		}
-
-		// Shutterfly now uses affiliate pricing - the donation option is unnecessary.
-		if ($this->version < 31) {
-			if (isset($this->fields['print_photos']['shutterfly']['donation'])) {
-				unset($this->fields['print_photos']['shutterfly']['donation']);
-			}
-			if (isset($this->fields['print_photos']['shutterfly']) && 
-			    !isset($this->fields['print_photos']['shutterfly']['checked'])) {
-				unset($this->fields['print_photos']['shutterfly']);
-			}
-		}
-
-		if ($this->version < 34) {
-			if (isset($this->fields['print_photos']['ezprints'])) {
-				if (isset($this->fields['print_photos']['ezprints']['checked'])) {
-				    $this->fields['print_photos']['shutterfly']['checked'] = 'checked';
-				}
-				unset($this->fields['print_photos']['ezprints']);
-				$changed = 1;
-			}
-		}
-		// In gallery 1.5.1 the Structure for print services was 'de-suck-ified' (quoted B.M.W.)
-		if ($this->version < 35) {
-		    $tempArray = array();
-		    if(!empty($this->fields['print_photos'])) {
-			foreach ($this->fields['print_photos'] as $service => $trash) {
-			    $tempArray[] = $service;
-			}
-			$this->fields['print_photos'] = $tempArray;
-		    }
-		   $changed = true;
-		}
-
-		// Added field for ecards
-		if ($this->version < 36) {
-		    if(!isset($this->fields['ecards'])) {
-			$this->fields['ecards'] = null;
-		    }
-		    $changed = true;
-		}
-
-		/* Special case for EXIF :-( */
-		if (!$this->fields["use_exif"]) {
-			if (!empty($gallery->app->use_exif)) {
-				$this->fields["use_exif"] = "yes";
-			} else {
-				$this->fields["use_exif"] = "no";
-			}
-			$changed = 1;
-		}
-
-		/* Special case for serial number */
-		if (!$this->fields["serial_number"]) {
-			$this->fields["serial_number"] = 0;
-			$changed = 1;
-		}
-
-		print _("done").".<br>";
-
-		/* 
-		* Check all items 
-		*/
-		$count = $this->numPhotos(1);
-		for ($i = 1; $i <= $count; $i++) {
-			set_time_limit(30);
-			print sprintf(_("Upgrading item %d of %d . . . "), $i, $count);
-			my_flush();
-
-			$photo = &$this->getPhoto($i);
-			if ($photo->integrityCheck($this->getAlbumDir())) {
-				$changed = 1;
-				$this->updateSerial = 1;
-			}
-
-			print _("done").".<br>";
-		}
-
-		if (strcmp($this->version, $gallery->album_version)) {
-			$this->version = $gallery->album_version;
-			$changed = 1;
-		}
-
-		if ($changed) {
-			$this->updateSerial = 1;
-		}
-		return $changed;
-	}
+        /** If there is a parent album and our current album allows the return link, or we ignore it,
+         * then add it to the parent album to the list.
+         */
+        while (($parentAlbum = $currentAlbum->getParentAlbum(FALSE)) &&
+          $depth < 30 &&
+          ($currentAlbum->fields['returnto'] != 'no' || $ignoreReturnto == true)) {
+            $parentAlbumsArray[] = array(
+    	        'prefixText' => _("Album"),
+    	        'title' => $parentAlbum->fields['title'],
+    	        'url' => makeAlbumUrl($parentAlbum->fields['name']));
+            $depth++;
+            $currentAlbum = $parentAlbum;
+        }
 
+        /** If the last album is a root album (= has no parent) and a returnto link is wanted,
+         * add the link to Gallery mainpage
+         */
+        if (!isset($parentAlbum) && $currentAlbum->fields['returnto'] != 'no'){
+            $parentAlbumsArray[] = array(
+                'prefixText' => _("Gallery"),
+                'title' => $gallery->app->galleryTitle,
+                'url' => makeGalleryUrl("albums.php"));
+        }
 
+        $parentAlbumsArray = array_reverse($parentAlbumsArray, true);
+        return $parentAlbumsArray;
+    }
+
+    function getRootAlbumName() {
+
+        $parentAlbum =& $this->getParentAlbum(FALSE);
+        if (isset($parentAlbum)) {
+            $returnValue = $parentAlbum->getRootAlbumName();
+        } else {
+            $returnValue = $this->fields['name'];
+        }
+        return $returnValue;
+    }
 
-	function shufflePhotos() {
-		$this->updateSerial = 1;
+    function versionOutOfDate() {
+        global $gallery;
+        if (strcmp($this->version, $gallery->album_version)) {
+            return 1;
+        }
+        return 0;
+    }
 
-		shuffle($this->photos);
-	}
+    /**
+     * Whenever you change this code, you should bump the $gallery->album_version
+     * appropriately.
+     */
+    function integrityCheck() {
+        global $gallery;
+        $gallery->album = $this;
 
-	function sortPhotos($sort,$order) {
-		$this->updateSerial = 1;
+        if (!$this->transient->photosloaded) {
+            $this->load($this->fields['name']);
+        }
 
-		// if we are going to use sort, we need to set the historic dates.
-		// the get Date functions set any null dates for us, so that's what
-		// this for loop does for us...
-		for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			$this->getItemCaptureDate($i);
-			$this->getUploadDate($i);
-		}
-		$this->save();
-
-		if (!strcmp($sort,"upload")) {
-			$func = "sortByUpload";
-		} elseif (!strcmp($sort,"itemCapture")) {
-			$func = "sortByItemCapture";
-		} elseif (!strcmp($sort, "filename")) {
-			$func = "sortByFilename";
-		} elseif (!strcmp($sort, "click")) {
-			$func = "sortByClick";
-		} elseif (!strcmp($sort, "caption")) {
-			$func = "sortByCaption";
-		} elseif (!strcmp($sort, "comment")) {
-			$func = "sortByComment";
-		}
-		usort($this->photos, array('Album', $func));
-		if ($order) {
-			$this->photos = array_reverse($this->photos);
-		}
-	}
+        if (!strcmp($this->version, $gallery->album_version)) {
+            print _("Album up to date.") ." <br>";
+            return 0;
+        }
 
-	/*
-	 *  Globalize the sort functions from sortPhotos()
-	 */
-	
-	function sortByUpload($a, $b) {
-		$objA = (object)$a; 
-		$objB = (object)$b;
-		$timeA = $objA->getUploadDate();
-		$timeB = $objB->getUploadDate();
-		if ($timeA == $timeB) {
-			return 0;
-		} elseif ($timeA < $timeB) {
-			return -1;
-		} else {
-			return 1;
-		}
-	}
-	
-	function sortByItemCapture($a, $b) {
-		$objA = (object)$a;
-		$objB = (object)$b;
-		$timeA = $objA->getItemCaptureDate();
-		$timeB = $objB->getItemCaptureDate();
-		//print "$timeA $timeB<br>";
-	
-		if ($timeA == $timeB) {
-			return 0;
-		} elseif ($timeA < $timeB) {
-			return -1; 
-		} else {
-			return 1;
-		}
-	}
-	
-	function sortByFileName($a, $b) {
-		$objA = (object)$a;
-		$objB = (object)$b;
-		if ($objA->isAlbum()) {
-			$filenameA = $objA->getAlbumName();
-		} else {
-			$filenameA = $objA->image->name;
-		}
-		
-		if ($objB->isAlbum()) {
-			$filenameB = $objB->getAlbumName();
-		} else {
-			$filenameB = $objB->image->name;
-		}
-	
-		//print $filenameA $filenameB;
-		return (strnatcasecmp($filenameA, $filenameB));
-	}
-	
-	function sortByClick($a, $b) {
-		$objA = (object)$a;
-		$objB = (object)$b;
-		$aClick = $objA->getItemClicks();
-		$bClick = $objB->getItemClicks();
-		if ($aClick == $bClick) {
-			return 0;
-		} elseif ($aClick < $bClick) {
-			return -1; 
-		} else {
-			return 1;
-		}
-	}
-	
-	function sortByCaption($a, $b) {
-                global $albumDB;
-                if (empty($albumDB)) {
-                        $albumDB = new AlbumDB(false);
-                }       
-		// sort album alphabetically by caption
-		$objA = (object)$a;
-		$objB = (object)$b;
-		if ($objA->isAlbum()) {
-			$albumA = $albumDB->getAlbumByName($objA->getAlbumName(), false);
-			$captionA = $albumA->fields['title'];
-		} else {
-			$captionA = $objA->getCaption();
-		}
-
-		if ($objB->isAlbum()) {
-                        $albumB = $albumDB->getAlbumByName($objB->getAlbumName(), false);
-                        $captionB = $albumB->fields['title'];
-		} else {
-			$captionB = $objB->getCaption();
-		}
+        print _("Upgrading album properties...");
+        my_flush();
 
-		return (strnatcasecmp($captionA, $captionB));
-	}
-	
-	function sortByComment($a, $b) {
-		// sort by number of comments
-		$objA = (object)$a;
-		$objB = (object)$b;
-		$numCommentsA = $objA->numComments();
-		$numCommentsB = $objB->numComments();
-		if ($numCommentsA == $numCommentsB) {
-			return 0;
-		} elseif ($numCommentsA < $numCommentsB) {
-			return -1; 
-		} else {
-			return 1;
-		}
-	}
+        $changed = 0;
+        $this->fields["last_quality"] = $gallery->app->jpegImageQuality;
+        $check = array(
+            'thumb_size',
+            'thumb_ratio',
+            'resize_size',
+            'resize_file_size',
+            'max_size',
+            'max_file_size',
+            'rows',
+            'cols',
+            'fit_to_window',
+            'use_fullOnly',
+            'print_photos',
+            'display_clicks',
+            'item_owner_display',
+            'item_owner_modify',
+            'item_owner_delete',
+            'add_to_beginning',
+            'poll_type',
+            'poll_scale',
+            'poll_nv_pairs',
+            'poll_hint',
+            'poll_show_results',
+            'poll_num_results',
+            'voter_class',
+            'slideshow_type',
+            'slideshow_length',
+            'slideshow_recursive',
+            'slideshow_loop',
+            'album_frame',
+            'thumb_frame',
+            'image_frame',
+            'showDimensions',
+            'background',
+            'nav_thumbs',
+            'nav_thumbs_style',
+            'nav_thumbs_first_last',
+            'nav_thumbs_prev_shown',
+            'nav_thumbs_next_shown',
+            'nav_thumbs_location',
+            'nav_thumbs_size',
+            'nav_thumbs_current_bonus'
+        );
+        foreach ($check as $field) {
+            if (!isset($this->fields[$field]) && isset($gallery->app->default[$field])) {
+                $this->fields[$field] = $gallery->app->default[$field];
+                $changed = 1;
+            }
+        }
 
-	function getThumbDimensions($index, $size=0) {
-		if (empty($index)) {
-			return array(0, 0);
-		}	
-
-		$photo = $this->getPhoto($index);
-		$album = $this;
-		while ($photo->isAlbum() && $album->numPhotos(1)) {
-			$album = $album->getNestedAlbum($index);
-			$index = $album->getHighlight();
-			if (!isset($index)) {
-				return array(0, 0);
-			}
-			$photo = $album->getPhoto($index);
-		}
-		return $photo->getThumbDimensions($size);
-	}
+        /**
+         * Copy the canRead permissions to viewFullImage if
+         * the album version is older than the feature.
+         */
+        if ($this->version < 5) {
+            if (!empty($this->fields['perms']['canRead'])) {
+                foreach ($this->fields['perms']['canRead'] as $uid => $p) {
+                    $this->fields['perms']['canViewFullImages'][$uid] = $p;
+                }
+                $changed = 1;
+            }
+        }
+        if ($this->version < 10) {
+            if (empty($this->fields['summary'])) {
+                $this->fields['summary']='';
+                $changed = 1;
+            }
+            if (empty($this->fields['extra_fields']) || !is_array($this->fields['extra_fields'])) {
+                $this->fields['extra_fields']=array();
+                $changed = 1;
+            }
+        }
+        if ($this->version < 16) {
+            if (empty($this->fields['votes'])) {
+                $this->fields['votes']=array();
+                $changed = 1;
+            }
+        }
+        if ($this->version < 17) {
+            foreach ($this->fields['votes'] as $key => $value) {
+                unset($this->fields['votes'][$key]);
+                $this->fields['votes']["item.$key"]=$value;
+                $changed = 1;
+            }
+        }
 
-	function getHighlightDimensions($size=0) {
-		$index = $this->getHighlight();
-		if (!isset($index)) {
-			return array(0, 0);
-		}
-		$photo = $this->getPhoto($index);
-		return $photo->getHighlightDimensions($size);
-	}
+        /* upgrade photo print services to new (1.5.1) format */
+        if ($this->version < 20) {
+            if ($this->fields['print_photos'] == 'none') {
+                $this->fields['print_photos'] = array();
+            } else {
+                $this->fields['print_photos'] = array($this->fields['print_photos']);
+            }
+            $changed = true;
+        }
 
-	function hasHighlight() {
-		if ($this->numPhotos(1) == 0) {
-			return 0;
-		}
-
-		for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			$photo = $this->getPhoto($i);
-                        if ($photo->isHighlight()) {
-                                return 1;
-			}
-		}
-		return 0;
-	}
+        if ($this->version < 23) {
+            if ($this->fields['public_comments'] == 'yes') {
+                $everybody = $gallery->userDB->getEverybody();
+                $this->setPerm("canViewComments", $everybody->getUid(), 1);
+                $this->setPerm("canAddComments", $everybody->getUid(), 1);
+
+            } else {
+                $nobody = $gallery->userDB->getNobody();
+                $this->setPerm("canViewComments", $nobody->getUid(), 1);
+                $this->setPerm("canAddComments", $nobody->getUid(), 1);
+            }
+        }
+        if ($this->version < 24) {
+            $this->fields['email_me'] = array();
+        }
 
-	function getHighlight() {
-		if ($this->numPhotos(1) == 0) {
-			return null;
-		}
-
-		for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			$photo = $this->getPhoto($i);
-			if ($photo->isHighlight()) {
-				return $i;
-			}
-		}
-		return 1;
-	}
+        /* Convert all uids to the new style */
+        if ($this->version < 25) {
+            // Owner
+            $this->fields["owner"] = $gallery->userDB->convertUidToNewFormat($this->fields["owner"]);
+
+            // Permissions
+            $newPerms = array();
+            foreach ($this->fields["perms"] as $perm => $uids) {
+                foreach ($uids as $uid => $value) {
+                    $newUid = $gallery->userDB->convertUidToNewFormat($uid);
+                    $newPerms[$perm][$newUid] = 1;
+                }
+            }
+            $this->fields["perms"] = $newPerms;
+        }
 
-	function getHighlightSize() {
-		global $gallery;
-		$parentAlbum =& $this->getParentAlbum(FALSE);
-		if (isset($parentAlbum)) {
-			$size = $parentAlbum->fields["thumb_size"];
-		} else {
-			$size = $gallery->app->highlight_size;
-		}
-		return $size;
-	}
+        /**
+         * Added for album revision 26:
+         * Changes "." to "-" in gallery names
+         *  Since we're not sure how the .'s are appearing in gallery names
+         *  this is worth running on any DB upgrade, for now
+         */
+        if (strpos($this->fields["name"], ".") !== false) {
+            $oldName = $this->fields["name"];
+            $newName = strtr($this->fields["name"], ".", "-");
+
+            global $albumDB;
+            $albumDB->renameAlbum($oldName, $newName);
+            $albumDB->save();
+            printf(_("Renaming album from %s to %s..."), $oldName, $newName);
+
+            // AlbumDB will set this value .. but it will be set in a different
+            // instance of this album, so we have to do it here also so that
+            // when *this* instance gets saved the value is right
+            $this->fields["name"] = $newName;
+            $changed = 1;
+        }
 
-	function setHighlight($index) {
-		$this->updateSerial = 1;
-		$numPhotos = $this->numPhotos(1);
-		
-		for ($i = 1; $i <= $numPhotos; $i++) {
-			$photo = &$this->getPhoto($i);
-			$photo->setHighlight($this->getAlbumDir(), $i == $index, $this);
-		}
-	}
+        /* Rebuild highlight */
+        if ($this->version < 27) {
+            $index = $this->getHighlight();
+            if (isset($index)) {
+                $this->setHighlight($index);
+            }
+        }
 
-	function load($name, $loadphotos=TRUE) {
-		global $gallery;
+        if ($this->version < 29) {
+            $this->fields['guid'] = genGUID();
+            $changed = 1;
+        }
 
-		$this->transient->photosloaded = FALSE;
-		$dir = $gallery->app->albumDir . "/$name";
+        if ($this->version < 30) {
+            if ($this->fields["border"] == 'off') {
+                $this->fields["border"] = 0;
+            }
+        }
 
-		if (!$this->loadFromFile("$dir/album.dat")) {
-			/*
-			 * v1.2.1 and prior had a bug where high volume albums
-			 * would lose album.dat files.  Deal with that by loading
-			 * the backup file silently.
-			 *
-			 * Oh, and Win32 has a bug (?) where you can't
-			 * rename a file to album.dat.bak so win32 now
-			 * uses album.bak for it's backup file names.
-			 */
-			if (!$this->loadFromFile("$dir/album.dat.bak") &&
-			    !$this->loadFromFile("$dir/album.bak")) {
-				/* Uh oh */
-				return 0;
-			}
-		}
-
-		// if $this->photos is not empty, assume that the photos were already incorrectly stored in album.dat
-		// so pretend that we loaded them already to make sure that they get saved to the correct location
-		if ($this->fields["photos_separate"] && ($this->fields["cached_photo_count"] > 0) && empty($this->photos)) {
-			if ($loadphotos) {
-				$this->loadPhotos($dir);
-			}
-		} else {
-			$this->transient->photosloaded = TRUE;
-		}
-		$this->fields["name"] = $name;
-		$this->updateSerial = 0;
-		return 1;
-	}
+        // Shutterfly now uses affiliate pricing - the donation option is unnecessary.
+        if ($this->version < 31) {
+            if (isset($this->fields['print_photos']['shutterfly']['donation'])) {
+                unset($this->fields['print_photos']['shutterfly']['donation']);
+            }
+            if (isset($this->fields['print_photos']['shutterfly']) &&
+            !isset($this->fields['print_photos']['shutterfly']['checked'])) {
+                unset($this->fields['print_photos']['shutterfly']);
+            }
+        }
 
+        if ($this->version < 34) {
+            if (isset($this->fields['print_photos']['ezprints'])) {
+                if (isset($this->fields['print_photos']['ezprints']['checked'])) {
+                    $this->fields['print_photos']['shutterfly']['checked'] = 'checked';
+                }
+                unset($this->fields['print_photos']['ezprints']);
+                $changed = 1;
+            }
+        }
+        // In gallery 1.5.1 the Structure for print services was 'de-suck-ified' (quoted B.M.W.)
+        if ($this->version < 35) {
+            $tempArray = array();
+            if(!empty($this->fields['print_photos'])) {
+                foreach ($this->fields['print_photos'] as $service => $trash) {
+                    $tempArray[] = $service;
+                }
+                $this->fields['print_photos'] = $tempArray;
+            }
+            $changed = true;
+        }
 
-	function loadPhotos($dir){
-		if (!$this->loadPhotosFromFile("$dir/photos.dat") &&
-			!$this->loadPhotosFromFile("$dir/photos.dat.bak") &&
-		    !$this->loadPhotosFromFile("$dir/photos.bak")) {
-			/* Uh oh */
-			return 0;
-		}
-		$this->transient->photosloaded = TRUE;
-		return 1;
-	}
+        // Added field for ecards
+        if ($this->version < 36) {
+            if(!isset($this->fields['ecards'])) {
+                $this->fields['ecards'] = null;
+            }
+            $changed = true;
+        }
 
-	function loadFromFile($filename) {
-		$tmp = unserialize(getFile($filename));
-		if (strcasecmp(get_class($tmp), "album")) {
-			/* Dunno what we unserialized .. but it wasn't an album! */
-		        $tmp = unserialize(getFile($filename, true));
-			if (strcasecmp(get_class($tmp), "album")) {
-				return 0;
-			}
-		}
-
-		foreach ($tmp as $k => $v) {
-			$this->$k = $v;
-		}
-		return 1;
-	}
+        /* Special case for EXIF :-( */
+        if (!$this->fields["use_exif"]) {
+            if (!empty($gallery->app->use_exif)) {
+                $this->fields["use_exif"] = "yes";
+            } else {
+                $this->fields["use_exif"] = "no";
+            }
+            $changed = 1;
+        }
 
-	function loadPhotosFromFile($filename) {
-		$tmp = unserialize(getFile($filename));
-		if (!is_Array($tmp)){
-			$tmp = unserialize(getFile($filename, true));
-			if (!is_Array($tmp)){
-				return 0;
-			}
-		}
-		if (count($tmp) > 0) {
-			if (strcasecmp(get_class($tmp[0]), "albumitem")) {
-				/* Dunno what we unserialized .. but it wasn't an album! */
-				return 0;
-			}
-		}
-
-		/*
-		 * We used to pad TSILB with \n, but on win32 that gets
-		 * converted to \r which causes problems.  So get rid of it
-		 * when we load albums back.
-		 */
-		$this->tsilb = trim($this->tsilb);
-		
-		$this->photos = $tmp;
+        /* Special case for serial number */
+        if (!$this->fields["serial_number"]) {
+            $this->fields["serial_number"] = 0;
+            $changed = 1;
+        }
 
-		return 1;
-	}
+        print _("done").".<br>";
 
-	function isLoaded() {
-		if ($this->fields["name"]) {
-			return 1;
-		} else {
-			return 0;
-		}
-	}
+        /* Check all items */
+        $count = $this->numPhotos(1);
+        for ($i = 1; $i <= $count; $i++) {
+            set_time_limit(30);
+            print sprintf(_("Upgrading item %d of %d . . . "), $i, $count);
+            my_flush();
+
+            $photo = &$this->getPhoto($i);
+            if ($photo->integrityCheck($this->getAlbumDir())) {
+                $changed = 1;
+                $this->updateSerial = 1;
+            }
 
-	function isResized($index) {
-		$photo = $this->getPhoto($index);
-		return ($photo->isResized());
-	}
+            print _("done").".<br>";
+        }
+
+        if (strcmp($this->version, $gallery->album_version)) {
+            $this->version = $gallery->album_version;
+            $changed = 1;
+        }
+
+        if ($changed) {
+            $this->updateSerial = 1;
+        }
+        return $changed;
+    }
+
+    function shufflePhotos() {
+        $this->updateSerial = 1;
+
+        shuffle($this->photos);
+    }
+
+    /**
+     * third param can be true, false , or NULL
+     * true  -> sort album again, subalbums first
+     * false -> sort album again, photos first
+     * NULL, no resorting.
+     */
+    function sortPhotos($sort , $order, $albumsFirst = '') {
+        $this->updateSerial = 1;
+        global $func;
+        global $order;
+        global $albumsFirst;
+
+        // if we are going to use sort, we need to set the historic dates.
+        // the get Date functions set any null dates for us, so that's what
+        // this for loop does for us...
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            $this->getItemCaptureDate($i);
+            $this->getUploadDate($i);
+        }
+        $this->save();
+
+        if (!strcmp($sort,"upload")) {
+            $func = "sortByUpload";
+        } elseif (!strcmp($sort,"itemCapture")) {
+            $func = "sortByItemCapture";
+        } elseif (!strcmp($sort, "filename")) {
+            $func = "sortByFilename";
+        } elseif (!strcmp($sort, "click")) {
+            $func = "sortByClick";
+        } elseif (!strcmp($sort, "caption")) {
+            $func = "sortByCaption";
+        } elseif (!strcmp($sort, "comment")) {
+            $func = "sortByComment";
+        }
+        
+        if ($albumsFirst != "") {
+            //echo "presort by $func with order $order";
+            usort($this->photos, array('Album', 'sortByType'));
+        }
+        else {
+            usort($this->photos, array('Album', $func));
+        }
+
+    }
+
+    /**
+     *  Globalize the sort functions from sortPhotos()
+     */
+    function sortByType($a, $b) {
+        global $func;
+        global $albumsFirst;
+
+        $objA = (object)$a;
+        $objB = (object)$b;
+        
+        $aIsAlbum = $objA->isAlbum();
+        $bIsAlbum = $objB->isAlbum();
+        
+        if ($aIsAlbum == $bIsAlbum) {
+            return Album::$func($a, $b);
+        } elseif ($aIsAlbum < $bIsAlbum) {
+            return 1 * $albumsFirst;
+        } else {
+            return -1 * $albumsFirst;
+        }
+    }
+    
+    function sortByUpload($a, $b) {
+        global $order;
+
+        $objA = (object)$a;
+        $objB = (object)$b;
+        $timeA = $objA->getUploadDate();
+        $timeB = $objB->getUploadDate();
+        if ($timeA == $timeB) {
+            return 0;
+        } elseif ($timeA < $timeB) {
+            return -1 * $order;
+        } else {
+            return 1 * $order;
+        }
+    }
+
+    function sortByItemCapture($a, $b) {
+        global $order;
+
+        $objA = (object)$a;
+        $objB = (object)$b;
+        $timeA = $objA->getItemCaptureDate();
+        $timeB = $objB->getItemCaptureDate();
+
+        if ($timeA == $timeB) {
+            return 0;
+        } elseif ($timeA < $timeB) {
+            return -1 * $order;
+        } else {
+            return 1 * $order;
+        }
+    }
+
+    function sortByFileName($a, $b) {
+        global $order;
+
+        $objA = (object)$a;
+        $objB = (object)$b;
+        if ($objA->isAlbum()) {
+            $filenameA = $objA->getAlbumName();
+        } else {
+            $filenameA = $objA->image->name;
+        }
+
+        if ($objB->isAlbum()) {
+            $filenameB = $objB->getAlbumName();
+        } else {
+            $filenameB = $objB->image->name;
+        }
+
+        $result = $order * strnatcasecmp($filenameA, $filenameB);
+
+        return $result;
+    }
+
+    function sortByClick($a, $b) {
+        global $order;
+
+        $objA = (object)$a;
+        $objB = (object)$b;
+        $aClick = $objA->getItemClicks();
+        $bClick = $objB->getItemClicks();
+        if ($aClick == $bClick) {
+            return 0;
+        } elseif ($aClick < $bClick) {
+            return -1 * $order;
+        } else {
+            return 1 * $order;
+        }
+    }
+
+    function sortByCaption($a, $b) {
+        global $albumDB;
+        global $order;
+
+        if (empty($albumDB)) {
+            $albumDB = new AlbumDB(false);
+        }
+        // sort album alphabetically by caption
+        $objA = (object)$a;
+        $objB = (object)$b;
+        if ($objA->isAlbum()) {
+            $albumA = $albumDB->getAlbumByName($objA->getAlbumName(), false);
+            $captionA = $albumA->fields['title'];
+        } else {
+            $captionA = $objA->getCaption();
+        }
+
+        if ($objB->isAlbum()) {
+            $albumB = $albumDB->getAlbumByName($objB->getAlbumName(), false);
+            $captionB = $albumB->fields['title'];
+        } else {
+            $captionB = $objB->getCaption();
+        }
+
+        $result = $order* strnatcasecmp($captionA, $captionB);
+
+        return $result;
+    }
+
+    function sortByComment($a, $b) {
+        global $order;
+
+        // sort by number of comments
+        $objA = (object)$a;
+        $objB = (object)$b;
+        $numCommentsA = $objA->numComments();
+        $numCommentsB = $objB->numComments();
+        if ($numCommentsA == $numCommentsB) {
+            return 0;
+        } elseif ($numCommentsA < $numCommentsB) {
+            return -1 * $order;
+        } else {
+            return 1 * $order;
+        }
+    }
+
+    /*** 	End of Sort methods	 	***/
+
+    function getThumbDimensions($index, $size=0) {
+        if (empty($index)) {
+            return array(0, 0);
+        }
+
+        $photo = $this->getPhoto($index);
+        $album = $this;
+        while ($photo->isAlbum() && $album->numPhotos(1)) {
+            $album = $album->getNestedAlbum($index);
+            $index = $album->getHighlight();
+            if (!isset($index)) {
+                return array(0, 0);
+            }
+            $photo = $album->getPhoto($index);
+        }
+        return $photo->getThumbDimensions($size);
+    }
+
+    function getHighlightDimensions($size = 0) {
+        $index = $this->getHighlight();
+        if (!isset($index)) {
+            return array(0, 0);
+        }
+        $photo = $this->getPhoto($index);
+        return $photo->getHighlightDimensions($size);
+    }
+
+    function hasHighlight() {
+        if ($this->numPhotos(1) == 0) {
+            return 0;
+        }
+
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            $photo = $this->getPhoto($i);
+            if ($photo->isHighlight()) {
+                return 1;
+            }
+        }
+        return 0;
+    }
+
+    function getHighlight() {
+        debugMessage(_("Getting highlight"), __FILE__, __LINE__, 3);
+        
+        if ($this->numPhotos(1) == 0) {
+            return null;
+        }
+
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            $photo = $this->getPhoto($i);
+            if ($photo->isHighlight()) {
+                return $i;
+            }
+        }
+        return 1;
+    }
+
+    function getHighlightSize() {
+        global $gallery;
+        
+        $parentAlbum = $this->getParentAlbum(FALSE);
+        if (isset($parentAlbum)) {
+            $size = $parentAlbum->fields["thumb_size"];
+        } else {
+            $size = $gallery->app->highlight_size;
+        }
+        return $size;
+    }
+
+    /**
+     * Returns ratio of highlight, 
+     * which is either thumb ratio of parent album, or value from config if root.
+     * @return string   $size
+     * @author Jens Tkotz <jens@peino.de>
+     */
+    function getHighlightRatio() {
+        global $gallery;
+        
+        $parentAlbum = $this->getParentAlbum(FALSE);
+        if (isset($parentAlbum)) {
+            $ratio = getPropertyDefault('thumb_ratio', $parentAlbum, false);
+        } else {
+            $ratio = getPropertyDefault('highlight_ratio', false, true);
+        }
+        return $ratio;
+    }
+    
+    function setHighlight($index) {
+        debugMessage(_("Setting highlight"), __FILE__, __LINE__, 3);
+        
+        $this->updateSerial = 1;
+        $numPhotos = $this->numPhotos(1);
+
+        for ($i = 1; $i <= $numPhotos; $i++) {
+            $photo = &$this->getPhoto($i);
+            $photo->setHighlight($this->getAlbumDir(), $i == $index, $this);
+        }
+    }
+
+    function load($name, $loadphotos=TRUE) {
+        global $gallery;
+
+        $this->transient->photosloaded = FALSE;
+        $dir = $gallery->app->albumDir . "/$name";
+
+        if (!$this->loadFromFile("$dir/album.dat")) {
+            /*
+            * v1.2.1 and prior had a bug where high volume albums
+            * would lose album.dat files.  Deal with that by loading
+            * the backup file silently.
+            *
+            * Oh, and Win32 has a bug (?) where you can't
+            * rename a file to album.dat.bak so win32 now
+            * uses album.bak for it's backup file names.
+            */
+            if (!$this->loadFromFile("$dir/album.dat.bak") &&
+            !$this->loadFromFile("$dir/album.bak")) {
+                /* Uh oh */
+                return 0;
+            }
+        }
+
+        // if $this->photos is not empty, assume that the photos were already incorrectly stored in album.dat
+        // so pretend that we loaded them already to make sure that they get saved to the correct location
+        if ($this->fields["photos_separate"] && ($this->fields["cached_photo_count"] > 0) && empty($this->photos)) {
+            if ($loadphotos) {
+                $this->loadPhotos($dir);
+            }
+        } else {
+            $this->transient->photosloaded = TRUE;
+        }
+        $this->fields["name"] = $name;
+        $this->updateSerial = 0;
+        return 1;
+    }
+
+
+    function loadPhotos($dir){
+        if (!$this->loadPhotosFromFile("$dir/photos.dat") &&
+           !$this->loadPhotosFromFile("$dir/photos.dat.bak") &&
+          !$this->loadPhotosFromFile("$dir/photos.bak")) {
+            /* Uh oh */
+            return 0;
+        }
+        $this->transient->photosloaded = TRUE;
+        return 1;
+    }
+
+    function loadFromFile($filename) {
+        $tmp = unserialize(getFile($filename));
+        if (strcasecmp(get_class($tmp), "album")) {
+            /* Dunno what we unserialized .. but it wasn't an album! */
+            $tmp = unserialize(getFile($filename, true));
+            if (strcasecmp(get_class($tmp), "album")) {
+                return 0;
+            }
+        }
+
+        foreach ($tmp as $k => $v) {
+            $this->$k = $v;
+        }
+        return 1;
+    }
+
+    function loadPhotosFromFile($filename) {
+        $tmp = unserialize(getFile($filename));
+        if (!is_Array($tmp)){
+            $tmp = unserialize(getFile($filename, true));
+            if (!is_Array($tmp)){
+                return 0;
+            }
+        }
+        if (count($tmp) > 0) {
+            if (strcasecmp(get_class($tmp[0]), "albumitem")) {
+                /* Dunno what we unserialized .. but it wasn't an album! */
+                return 0;
+            }
+        }
+
+        /**
+         * We used to pad TSILB with \n, but on win32 that gets
+         * converted to \r which causes problems.  So get rid of it
+         * when we load albums back.
+         */
+        $this->tsilb = trim($this->tsilb);
+
+        $this->photos = $tmp;
+
+        return 1;
+    }
+
+    function isLoaded() {
+        if ($this->fields["name"]) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+
+    function isResized($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->isResized();
+    }
+
+    /**
+     *  The parameter $msg should be an array ready to pass to sprintf.
+     * This is so we can translate into appropriate languages for each
+     * recipient.  You will note that we don't currently translate these messages.
+     */
+    function save($msg = array(), $resetModDate = 1) {
+        global $gallery;
+        $dir = $this->getAlbumDir();
+
+        if ($resetModDate) {
+            $this->fields["last_mod_time"] = time();
+        }
+
+        if (!fs_file_exists($dir)) {
+            fs_mkdir($dir, 0775);
+        }
+
+        if (!empty($this->updateSerial)) {
+            /* Remove the old serial file, if it exists */
+            $serial = "$dir/serial." . $this->fields["serial_number"]. ".dat";
+            if (fs_file_exists($serial)) {
+                fs_unlink($serial);
+            }
+            $this->fields["serial_number"]++;
+        }
+
+        if ($this->transient->photosloaded) {
+            $this->fields["cached_photo_count"] = $this->numPhotos(1);
+        }
+
+        $transient_photos = $this->photos;
+
+        /* Save photo data separately */
+        if ($this->transient->photosloaded) {
+            $success = (safe_serialize($this->photos, "$dir/photos.dat"));
+            if ($success) {
+                $this->fields["photos_separate"] = TRUE;
+                unset ($this->photos);
+            } else {
+                $success = FALSE;
+            }
+        } else {
+            $success = TRUE;
+        }
+
+        /* Don't save transient data */
+        $transient_save = $this->transient;
+        unset($this->transient);
+
+        if ($success) {
+            $success = (safe_serialize($this, "$dir/album.dat"));
+
+            /* Restore transient data after saving */
+            $this->transient = $transient_save;
+            $this->photos = $transient_photos;
+
+            /* Create the new album serial file */
+            if (!empty($this->updateSerial)) {
+                $serial = "$dir/serial." . $this->fields["serial_number"]. ".dat";
+                if ($fd = fs_fopen($serial, "w")) {
+                    /* This space intentionally left blank */
+                    fwrite($fd, trim($this->tsilb));
+                    fclose($fd);
+                }
+
+                /* Update the master serial file */
+                if ($fd = fs_fopen($gallery->app->albumDir . "/serial.dat", "w")) {
+                    fwrite($fd, time() . "\n");
+                    fclose($fd);
+                }
+                $this->updateSerial = 0;
+            }
+        }
+        // send email
+        if ($gallery->app->emailOn == 'yes' && $success && $msg) {
+            if (!is_array($msg)) {
+                echo gallery_error(_("msg should be an array!"));
+                vd($msg);
+                return $success;
+            }
+
+            if (!empty($to)) {
+                $to = $this->getEmailMeList('other');
+                $text = '';
+                $msg_str = call_user_func_array('sprintf', $msg);
+                $subject = sprintf(_("Changes to Album: %s"), $this->fields['name']);
+                $logmsg = sprintf("Change to %s: %s.", makeAlbumHeaderUrl($this->fields['name']), $msg_str);
 
-	/*  The parameter $msg should be an array ready to pass to sprintf.  
-	    This is so we can translate into appropriate languages for each 
-	    recipient.  You will note that we don't currently translate these 
-	    messages.
-	 */
-	function save($msg = array(), $resetModDate = 1) {
-		global $gallery;
-		$dir = $this->getAlbumDir();
-		$success = FALSE;
-
-		if ($resetModDate) {
-			$this->fields["last_mod_time"] = time();
-		}
-
-		if (!fs_file_exists($dir)) {
-			fs_mkdir($dir, 0775);
-		}
-
-		if (!empty($this->updateSerial)) {
-			/* Remove the old serial file, if it exists */
-			$serial = "$dir/serial." . $this->fields["serial_number"]. ".dat";
-			if (fs_file_exists($serial)) {
-				fs_unlink($serial);
-			}
-			$this->fields["serial_number"]++;
-		}
-
-		if ($this->transient->photosloaded) {
-			$this->fields["cached_photo_count"] = $this->numPhotos(1);
-		}
-
-		$transient_photos = $this->photos;
-
-		/* Save photo data separately */
-		if ($this->transient->photosloaded) {
-			$success = (safe_serialize($this->photos, "$dir/photos.dat"));
-			if ($success) {
-				$this->fields["photos_separate"] = TRUE;
-				unset ($this->photos);
-			} else {
-			    $success = FALSE;
-			}
-		} else {
-			$success = TRUE;
-		}
-
-		/* Don't save transient data */
-		$transient_save = $this->transient;
-		unset($this->transient);
-
-		if ($success) {
-		    $success = (safe_serialize($this, "$dir/album.dat"));
-
-		    /* Restore transient data after saving */
-		    $this->transient = $transient_save;
-		    $this->photos = $transient_photos;
-
-		    /* Create the new album serial file */
-		    if (!empty($this->updateSerial)) {
-		    	$serial = "$dir/serial." . $this->fields["serial_number"]. ".dat";
-		    	if ($fd = fs_fopen($serial, "w")) {
-		    		/* This space intentionally left blank */
-		    		fwrite($fd, trim($this->tsilb));
-		    		fclose($fd);
-		    	}
-
-		    	/* Update the master serial file */
-		    	if ($fd = fs_fopen($gallery->app->albumDir . "/serial.dat", "w")) {
-		    		fwrite($fd, time() . "\n");
-		    		fclose($fd);
-		    	}
-		    	$this->updateSerial = 0;
-		    }
-		}
-		if ($gallery->app->emailOn == 'yes' && $success && $msg) { // send email
-			if (!is_array($msg)) {
-				echo gallery_error(_("msg should be an array!"));
-				vd($msg);
-				return $success;
-			}
-		    $to = $this->getEmailMeList('other');
-			$msg_str = call_user_func_array('sprintf', $msg);
-			if (!empty($to)) {
                 $text .= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
                 $text .= "\n\n<html>";
                 $text .= "\n  <head>";
                 $text .= "\n  <title>$subject</title>";
                 $text .= "\n  </head>\n<body>\n<p>";
-                $text = sprintf(_("A change has been made to Album: %s by %s (IP %s).  The change is: %s"),
-					'<a href="'. makeAlbumHeaderUrl($this->fields['name']) .'">'. $this->fields['name'] .'</a>',
-					user_name_string($gallery->user->getUID(),
-					$gallery->app->comments_display_name),
-					$_SERVER['REMOTE_ADDR'],
-					$msg_str);
-
-				$text .= "\n<p>". _("If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when other changes are made' is unchecked (You'll need to login first).");
-				$text .= "\n</p>\n</body>\n</html>";
-				
-				$subject = sprintf(_("Changes to Album: %s"), $this->fields['name']);
-				$logmsg = sprintf("Change to %s: %s.", makeAlbumHeaderUrl($this->fields['name']), $msg_str);
-				
-				gallery_mail($to, $subject, $text, $logmsg, true, NULL, false, true);
-
-			} else if (isDebugging()) {
-			       	print "\n<br>". _("Operation was done successfully. Emailing is on, but no email was sent as no valid email address was found");
-		    }
-		}
-		return $success;
-	}
+                $text .= sprintf(_("A change has been made to Album: %s by %s (IP %s).  The change is: %s"),
+                  '<a href="'. makeAlbumHeaderUrl($this->fields['name']) .'">'. $this->fields['name'] .'</a>',
+                $gallery->user->printableName($gallery->app->comments_display_name),
+                  $_SERVER['REMOTE_ADDR'],
+                $msg_str);
 
-	function delete() {
-		$safe_to_scrub = 0;
-		$dir = $this->getAlbumDir();
-
-		/* Delete all pictures in reverse order to prevent automatic 
-		   re-highlighting of the album after every delete.
-		   Using this method, re-highlighting will occur, at most, one time.
-		*/
-		for ($numPhotos = $this->numPhotos(1); $numPhotos > 0; $numPhotos--) {
-			$this->deletePhoto($numPhotos);
-		}
-
-		/* Delete data file */
-		if (fs_file_exists("$dir/album.dat")) {
-			$safe_to_scrub = 1;
-			fs_unlink("$dir/album.dat");
-		}
-
-		/* 
-		 * Clean out everything else in the album dir.  I was
-		 * trying to avoid having to do this, but now that we're
-		 * no longer forcing the resize/thumbnail type to be a jpg 
-		 * it's possible that we're going strand some old JPGs
-		 * in the system.
-		 *
-		 * Don't scrub things unless we've removed an album.dat
-		 * file (which lets us know that 'dir' is a valid album
-		 * directory.
-		 */
-		if ($safe_to_scrub) {
-			if ($fd = fs_opendir($dir)) {
-				while (($file = readdir($fd)) != false) {
-					if (!fs_is_dir("$dir/$file")) {
-						fs_unlink("$dir/$file");
-					}
-				}
-				closedir($fd);
-			}
-		}
+                $text .= "\n<p>". _("If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when other changes are made' is unchecked (You'll need to login first).");
+                $text .= "\n</p>\n</body>\n</html>";
 
-		/* Delete album dir */
-		rmdir($dir);
-	}
 
-	function resizePhoto($index, $target, $filesize=0, $pathToResized="") {
-		$this->updateSerial = 1;
+                gallery_mail($to, $subject, $text, $logmsg, true, NULL, false, true);
 
-		$photo = &$this->getPhoto($index);
-		if (!$photo->isMovie()) {
-			$photo->resize($this->getAlbumDir(), $target, $filesize, $pathToResized);
-		} else {
-			echo ("Skipping Movie");
-		}
-	}
+            } else if (isDebugging()) {
+                print "\n<br>". _("Operation was done successfully. Emailing is on, but no email was sent as no valid email address was found");
+            }
+        }
+/*
+	if (!$success) {
+	    echo _("Save failed");
+	} else {
+	    echo _("Save OK");
+	}
+*/
+        return $success;
+    }
+
+    function delete() {
+        $safe_to_scrub = 0;
+        $dir = $this->getAlbumDir();
+
+        /* Delete all pictures in reverse order to prevent automatic
+        re-highlighting of the album after every delete.
+        Using this method, re-highlighting will occur, at most, one time.
+        */
+        for ($numPhotos = $this->numPhotos(1); $numPhotos > 0; $numPhotos--) {
+            $this->deletePhoto($numPhotos);
+        }
 
-	function resizeAllPhotos($target,$filesize=0,$pathToResized="", $recursive=false) {
-		for ($i=1; $i <= $this->numPhotos(1); $i++) {
-			if ($this->isAlbum($i) && $recursive == true) {
-				$nestedAlbum = new Album();
-				$nestedAlbum->load($this->getAlbumName($i));
-				$np = $nestedAlbum->numPhotos(1);
-				echo "\n<br>". sprintf (_("Entering album %s, processing %d photos"), $this->getAlbumName($i), $np);
-				$nestedAlbum->resizeAllPhotos($target,$filesize=0,$pathToResized="", $recursive);
-				$nestedAlbum->save();
-			}
-			else {
-				echo "<br>". sprintf(_("Processing element %d..."), $i);
-				my_flush();
-				$this->resizePhoto($i, $target, $filesize=0, $pathToResized="");
-			}
-		}
-	}
+        /* Delete data file */
+        if (fs_file_exists("$dir/album.dat")) {
+            $safe_to_scrub = 1;
+            fs_unlink("$dir/album.dat");
+        }
 
-	function addPhoto($file, $tag, $originalFilename, $caption, $pathToThumb="", $extraFields=array(), $owner="", $votes=NULL, $wmName="", $wmAlign=0, $wmAlignX=0, $wmAlignY=0, $wmSelect=0) {
-	       	global $gallery;
+        /**
+         * Clean out everything else in the album dir.  I was
+         * trying to avoid having to do this, but now that we're
+         * no longer forcing the resize/thumbnail type to be a jpg
+         * it's possible that we're going strand some old JPGs
+         * in the system.
+         *
+         * Don't scrub things unless we've removed an album.dat
+         * file (which lets us know that 'dir' is a valid album
+         * directory.
+         */
+        if ($safe_to_scrub) {
+            if ($fd = fs_opendir($dir)) {
+                while (($file = readdir($fd)) != false) {
+                    if (!fs_is_dir("$dir/$file")) {
+                        fs_unlink("$dir/$file");
+                    }
+                }
+                closedir($fd);
+            }
+        }
 
-		$this->updateSerial = 1;
+        /* Delete album dir */
+        rmdir($dir);
+    }
+
+    function resizePhoto($index, $target, $filesize=0, $pathToResized="") {
+        $this->updateSerial = 1;
+
+        $photo = &$this->getPhoto($index);
+        if (!$photo->isMovie()) {
+            $photo->resize($this->getAlbumDir(), $target, $filesize, $pathToResized);
+        } else {
+            echo ("Skipping Movie");
+        }
+    }
 
-		$dir = $this->getAlbumDir();
-		if (isDebugging()) {
-		        processingMsg(_("Doing the naming"));
-		}
-		if (!strcmp($gallery->app->default["useOriginalFileNames"], "yes")) {
-			$name = $originalFilename;
-			// check to see if a file by that name already exists
-			// or thumbnail conflict between movie and jpeg
-			foreach (acceptableFormatList() as $ext) {
-				if (file_exists("$dir/$name.$ext") ||
-				    ((isMovie($tag) || $tag=="jpg") && file_exists("$dir/$name.thumb.jpg"))) {
-					// append a 3 digit number to the end of the filename if it exists already
-					if (!ereg("_[[:digit:]]{3}$", $name)) {
-						$name = $name . "_001";
-					}
-					// increment the 3 digits until we get a unique filename
-					while ((file_exists("$dir/$name.$ext") || file_exists("$dir/$name.$tag")) ||
-					       ((isMovie($tag) || $tag=="jpg") && file_exists("$dir/$name.thumb.jpg"))) {
-						$name++;
-					}
-				}
-			}
-		} else {
-			$name = $this->newPhotoName();
-			// do filename checking here, too... users could introduce a duplicate 3 letter
-			// name if they switch original file names on and off.
-			while (file_exists("$dir/$name.$tag") ||
-			       ((isMovie($tag) || $tag=="jpg") && file_exists("$dir/$name.thumb.jpg"))) {
-				$name = $this->newPhotoName();
-			}
-		}
-		/* Get the file */
-		$newFile = "$dir/$name.$tag";
-		fs_copy($file, $newFile);
-
-
-		if (isDebugging()) {
-		    processingMsg(_("Image Preprocessing"));
-		}
-		/* Do any preprocessing necessary on the image file */
-		preprocessImage($dir, "$name.$tag");
-
-		/* Resize original image if necessary */
-		processingMsg("&nbsp;&nbsp;&nbsp;". _('Resizing/compressing original image') . "\n");
-		if (isImage($tag)) {
-		    resize_image($newFile, $newFile, $this->fields['max_size'], $this->fields['max_file_size'], true);
-		} else {
-		    processingMsg(_('Cannot resize/compress this filetype'));
-		}
-
-		if (isDebugging()) {
-		    processingMsg(_("Adding Photo to the photo list"));
- 	        }
-		/* Add the photo to the photo list */
-		$item = new AlbumItem();
-		$err = $item->setPhoto($dir, $name, $tag, $this->fields["thumb_size"], $this, $pathToThumb);
-		if ($err) {
-			if (fs_file_exists($newFile)) {
-				fs_unlink($newFile);
-			}
-			return $err;
-		} else {
-			$item->setCaption("$caption");
-			/* Only try to get Capture Date if file could have it.
-			** Otherwise use file creation time
-			*/
-			if(hasExif($tag)) {
-				$originalItemCaptureDate = getItemCaptureDate($file);
-			} else {
-				$originalItemCaptureDate = filemtime($file);
-			}
-			
-			$now = time();
-			$item->setItemCaptureDate($originalItemCaptureDate);
-			$item->setUploadDate($now);
-			foreach ($extraFields as $field => $value) {
-			    $item->setExtraField($field, $value);
-			}
-			if (!strcmp($owner, "")) {
-				$nobody = $gallery->userDB->getNobody();
-				$owner = $nobody->getUid();
-			}
-			$item->setOwner($owner);
-		}
-		$this->photos[] = $item;
-
-		/* If this is the only photo, make it the highlight */
-		if ($this->numPhotos(1) == 1 && !$item->isMovie()) {
-			$this->setHighlight(1);
-		}
-
-		if ($votes) {
-			$this->fields["votes"]["item.$name"]=$votes;
-		}
-
-	       	/* resize the photo if needed */
-	       	if (($this->fields["resize_size"] > 0 ||
-				       	$this->fields["resize_file_size"] > 0 ) 
-				&& isImage($tag)) {
-		       	$index = $this->numPhotos(1);
-		       	$photo = $this->getPhoto($index);
-		       	list($w, $h) = $photo->image->getRawDimensions();
-		       	if ($w > $this->fields["resize_size"] ||
-				       	$h > $this->fields["resize_size"] ||
-				       	$this->fields["resize_file_size"] > 0) {
-			       	processingMsg("- " . sprintf(_("Resizing %s"), $name));
-			       	$this->resizePhoto($index, 
-						$this->fields["resize_size"],
-					       	$this->fields["resize_file_size"]);
-		       	}
-	       	}
-
-		/* auto-rotate the photo if needed */
-		$index = $this->numPhotos(1);
-	       	if (hasExif($tag) && 
-	       		!empty($gallery->app->autorotate) && $gallery->app->autorotate == 'yes'  &&
-			    (!empty($gallery->app->use_exif) && $gallery->app->use_exif) || 
-			    (!empty($gallery->app->exiftags) && $gallery->app->exiftags)) {
-
-		       	$index = $this->numPhotos(1);
-		       	$exifData = $this->getExif($index);
-		       	
-			if (isset($exifData['Orientation'])) {
-				$orientation = trim($exifData['Orientation']);
-			} else if (isset($exifData['Image Orientation'])) {
-				$orientation = trim($exifData['Image Orientation']);
-			} else {
-				$orientation = '';
-			}
-
-			$photo = $this->getPhoto($index);
-			switch ($orientation) {
-				case "Right-Hand, Top":    // exiftags
-				case "rotate 90":          // jhead
-					$rotate = -90;
-					break;
-
-				case "Bottom, Right-Hand": // exiftags
-				case "rotate 180":	   // jhead
-					$rotate = 180;
-					break;
-
-				case "Left-Hand, Bottom":  // exiftags
-				case "rotate 270":	   // jhead
-					$rotate = 90;
-					break;
-
-				case "flip horizontal":
-					$rotate = 'fh';
-					break;
-
-				case "flip vertical":
-					$rotate = 'fv';
-					break;
-
-				case 'transpose':
-					$rotate = 'tr';
-					break;
-
-				case 'transverse':
-					$rotate = 'tv';
-					break;
-
-				default:
-					$rotate = 0;
-					break;
-			}
-
-			if ($rotate) {
-				$this->rotatePhoto($index, $rotate, true);
-				processingMsg("- ". _("Photo auto-rotated/transformed"));
-			}
-	       	}
-	       	/*move to the beginning if needed */
-	       	if ($this->getAddToBeginning() ) {
-		       	$this->movePhoto($this->numPhotos(1), 0);
-	       	}
-		if (isImage($tag) && strlen($wmName)) {
-			processingMsg("- ". _("Watermarking Image"));
-			$photo->watermark($this->getAlbumDir(),
-				$wmName, '', $wmAlign, $wmAlignX, $wmAlignY, 0, 0, $wmSelect); 
-		}
+    function resizeAllPhotos($target,$filesize=0,$pathToResized="", $recursive=false) {
+        for ($i=1; $i <= $this->numPhotos(1); $i++) {
+            if ($this->isAlbum($i) && $recursive == true) {
+                $nestedAlbum = new Album();
+                $nestedAlbum->load($this->getAlbumName($i));
+                $np = $nestedAlbum->numPhotos(1);
+                echo "\n<br>". sprintf (_("Entering album %s, processing %d photos"), $this->getAlbumName($i), $np);
+                $nestedAlbum->resizeAllPhotos($target,$filesize=0,$pathToResized="", $recursive);
+                $nestedAlbum->save();
+            }
+            else {
+                echo "<br>". sprintf(_("Processing element %d..."), $i);
+                my_flush();
+                $this->resizePhoto($i, $target, $filesize=0, $pathToResized="");
+            }
+        }
+    }
 
-		$this->fields['guid'] = genGUID();
+    function addPhoto($file, $tag, $originalFilename, $caption, $pathToThumb = '', $extraFields = array(), $owner = '', $votes = NULL, $wmName = '', $wmAlign = 0, $wmAlignX = 0, $wmAlignY = 0, $wmSelect = 0, $exifRotate = true) {
+        global $gallery;
 
-		return 0;
-	}
+        $this->updateSerial = 1;
+        $dir = $this->getAlbumDir();
 
-	function addNestedAlbum($albumName) {
-		$this->updateSerial = 1;
-		$item = new AlbumItem();
-		$item->setAlbumName($albumName);
-		$this->photos[] = $item;
-		if ($this->getAddToBeginning() ) {
-			$this->movePhoto($this->numPhotos(1), 0);
-		}
-	}
+        echo debugMessage(_("Doing the naming"), __FILE__, __LINE__);
+        
+        if ($gallery->app->default["useOriginalFileNames"] == 'yes') {
+            $name = $originalFilename;
+            // check to see if a file by that name already exists
+            // or thumbnail conflict between movie and jpeg
+            foreach (acceptableFormatList() as $ext) {
+                if (file_exists("$dir/$name.$ext") ||
+                ((isMovie($tag) || $tag=="jpg") && file_exists("$dir/$name.thumb.jpg"))) {
+                    // append a 3 digit number to the end of the filename if it exists already
+                    if (!ereg("_[[:digit:]]{3}$", $name)) {
+                        $name = $name . "_001";
+                    }
+                    // increment the 3 digits until we get a unique filename
+                    while ((file_exists("$dir/$name.$ext") || file_exists("$dir/$name.$tag")) ||
+                      ((isMovie($tag) || $tag=="jpg") && file_exists("$dir/$name.thumb.jpg"))) {
+                        $name++;
+                    }
+                }
+            }
+        } else {
+            $name = $this->newPhotoName();
+            // do filename checking here, too... users could introduce a duplicate 3 letter
+            // name if they switch original file names on and off.
+            while (file_exists("$dir/$name.$tag") ||
+              ((isMovie($tag) || $tag=="jpg") && file_exists("$dir/$name.thumb.jpg"))) {
+                $name = $this->newPhotoName();
+            }
+        }
+        /* Get the file */
+        $newFile = "$dir/$name.$tag";
+        fs_copy($file, $newFile);
+
+        echo debugMessage(_("Image Preprocessing"), __FILE__, __LINE__);
+        /* Do any preprocessing necessary on the image file */
+        preprocessImage($dir, "$name.$tag");
+
+        /* Resize original image if necessary */
+        echo debugMessage("&nbsp;&nbsp;&nbsp;". _('Resizing/compressing original image'), __FILE__, __LINE__,1);
+        if (isImage($tag)) {
+            resize_image($newFile, $newFile, $this->fields['max_size'], $this->fields['max_file_size'], true, false);
+        } else {
+            processingMsg(_('Cannot resize/compress this filetype'));
+        }
 
-	function hidePhoto($index) {
-		$photo = &$this->getPhoto($index);
-		$photo->hide();
-	}
-	
-	function unhidePhoto($index) {
-		$photo = &$this->getPhoto($index);
-		$photo->unhide();
-	}
+        /* Add the photo to the photo list */
+        $item = new AlbumItem();
+        $err = $item->setPhoto($dir, $name, $tag, $this->fields["thumb_size"], $this, $pathToThumb);
+        if ($err) {
+            if (fs_file_exists($newFile)) {
+                fs_unlink($newFile);
+            }
+            return $err;
+        } else {
+            $item->setCaption("$caption");
+            /* Only try to get Capture Date if file could have it.
+            ** Otherwise use file creation time
+            */
+            if(hasExif($tag)) {
+                $originalItemCaptureDate = getItemCaptureDate($file);
+            } else {
+                $originalItemCaptureDate = filemtime($file);
+            }
+
+            $now = time();
+            $item->setItemCaptureDate($originalItemCaptureDate);
+            $item->setUploadDate($now);
+            foreach ($extraFields as $field => $value) {
+                $item->setExtraField($field, $value);
+            }
+            if (empty($owner)) {
+                $nobody = $gallery->userDB->getNobody();
+                $owner = $nobody->getUid();
+            }
+            $item->setOwner($owner);
+        }
+        $this->photos[] = $item;
 
-	function isHidden($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->isHidden();
-	}
+        /* If this is the only photo, make it the highlight */
+        if ($this->numPhotos(1) == 1 && !$item->isMovie()) {
+            $this->setHighlight(1);
+        }
 
-	function isHiddenRecurse($index=0) {
-		if ($index && $this->isHidden($index)) {
-			return true;
-		}
-		elseif ($this->isRoot()) {
-			// Root albums can't be hidden
-			return false;
-		}
-
-		$parent = $this->getParentAlbum();
-		$numphotos = $parent->numPhotos(1);	
-		for ($i = 1; $i <= $numphotos; $i++) {
-			if ($parent->isAlbum($i) && ($parent->getAlbumName($i) == $this->fields['name'])) {
-				if ($parent->isHidden($i)) {
-					// This item is hidden
-					return true;
-				}
-				else {
-					// This item is not hidden - check the parent
-					return $parent->isHiddenRecurse();
-				}
-			}
-		}
-		// This should never happen
-		return false;
-	}
+        if ($votes) {
+            $this->fields["votes"]["item.$name"] = $votes;
+        }
 
-	function deletePhoto($index, $forceResetHighlight="0", $recursive=1) {
-		global $gallery;
+        /* resize the photo if needed */
+        if (($this->fields["resize_size"] > 0 ||
+          $this->fields["resize_file_size"] > 0 )
+          && isImage($tag)) {
+            $index = $this->numPhotos(1);
+            $photo = $this->getPhoto($index);
+            list($w, $h) = $photo->image->getRawDimensions();
+            if ($w > $this->fields["resize_size"] ||
+              $h > $this->fields["resize_size"] ||
+              $this->fields["resize_file_size"] > 0) {
+                processingMsg("- " . sprintf(_("Resizing %s"), $name));
+                $this->resizePhoto($index,
+                $this->fields["resize_size"],
+                $this->fields["resize_file_size"]);
+            }
+        }
 
-		// Get rid of the block-random cache file, to prevent out-of-bounds
-		// errors from getPhoto()
-		$randomBlockCache = $gallery->app->albumDir . "/block-random.dat";
-		if (fs_file_exists($randomBlockCache)) {
-			fs_unlink($randomBlockCache);
-		}
-
-		$this->updateSerial = 1;
-		$photo = array_splice($this->photos, $index-1, 1);
-		// need to check for nested albums and delete them ...
-		if ($recursive && $photo[0]->isAlbum()) {
-			$albumName = $photo[0]->getAlbumName();
-			$album = new Album();
-			$album->load($albumName);
-			$album->delete();
-		}
-                /* are we deleting the highlight? pick a new one */
-		$needToRehighlight = 0;
-		if ( ($photo[0]->isHighlight()) && ($this->numPhotos(1) > 0) && (!$forceResetHighlight==-1)) {
-			$needToRehighlight = 1;
-		}
-		$photo[0]->delete($this->getAlbumDir());
-		if (($needToRehighlight) || ($forceResetHighlight==1)){
-		    // Prevent hidden items, albums, and movies from
-		    // automatically becoming the new highlight.
-		    for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			    $newHighlight = $this->getPhoto($i);
-			    if (!$newHighlight->isMovie() && !$newHighlight->isAlbum() && !$newHighlight->isHidden()) {
-				$this->setHighlight($i);
-				break;
-			    }
-		    }
-		}
-	}
+        /* auto-rotate the photo if needed */
+        $index = $this->numPhotos(1);
+        
+        echo debugMessage(_("Doing the naming"), __FILE__, __LINE__);
+        if ($exifRotate && hasExif($tag) && 
+          !empty($gallery->app->autorotate) && $gallery->app->autorotate == 'yes'  && 
+            (!empty($gallery->app->use_exif) && $gallery->app->use_exif ||
+            (!empty($gallery->app->exiftags) && $gallery->app->exiftags))
+        ){
+            $index = $this->numPhotos(1);
+            $exifData = $this->getExif($index);
+
+            if (isset($exifData['Orientation'])) {
+                $orientation = trim($exifData['Orientation']);
+            } else if (isset($exifData['Image Orientation'])) {
+                $orientation = trim($exifData['Image Orientation']);
+            } else {
+                $orientation = '';
+            }
+
+            $photo = $this->getPhoto($index);
+            switch ($orientation) {
+                case "Right-Hand, Top":    // exiftags
+                case "rotate 90":          // jhead
+                    $rotate = -90;
+                break;
+
+                case "Bottom, Right-Hand": // exiftags
+                case "rotate 180":	   // jhead
+                    $rotate = 180;
+                break;
+
+                case "Left-Hand, Bottom":  // exiftags
+                case "rotate 270":	   // jhead
+                    $rotate = 90;
+                break;
+
+                case "flip horizontal":
+                    $rotate = 'fh';
+                break;
+
+                case "flip vertical":
+                    $rotate = 'fv';
+                break;
+
+                case 'transpose':
+                    $rotate = 'tr';
+                break;
+
+                case 'transverse':
+                    $rotate = 'tv';
+                break;
+
+                default:
+                    $rotate = 0;
+                break;
+            }
+
+            if ($rotate) {
+                $this->rotatePhoto($index, $rotate, true);
+                processingMsg("- ". _("Photo auto-rotated/transformed"));
+            }
+        }
+        /* move to the beginning if needed */
+        if ($this->getAddToBeginning() ) {
+            $this->movePhoto($this->numPhotos(1), 0);
+        }
+        if (isImage($tag) && strlen($wmName)) {
+            processingMsg("- ". _("Watermarking Image"));
+            $photo->watermark($this->getAlbumDir(),
+            $wmName, '', $wmAlign, $wmAlignX, $wmAlignY, 0, 0, $wmSelect);
+        }
 
-	function newPhotoName() {
-		return $this->fields["nextname"]++;
-	}
+        $this->fields['guid'] = genGUID();
 
-	function getPreviewTag($index, $size=0, $attrs="") {
-		if ($index === null) {
-			return "";
-		}
-		$photo = $this->getPhoto($index);
-		if ($photo->isAlbum()) {
-			return "";
-			//$myAlbum = $this->getNestedAlbum($index);
-			//return $myAlbum->getHighlightAsThumbnailTag($size, $attrs);
-		} else {
-			return $photo->getPreviewTag($this->getAlbumDirURL("preview"), $size, $attrs);
-		}
-	}
+        return 0;
+    }
 
-	function getThumbnailTag($index, $size=0, $attrs="") {
-		if ($index === null) {
-			return "";
-		}
-		$photo = $this->getPhoto($index);
-		if ($photo->isAlbum()) {
-			$myAlbum = $this->getNestedAlbum($index);
-			return $myAlbum->getHighlightAsThumbnailTag($size, $attrs);
-		} else {
-			return $photo->getThumbnailTag($this->getAlbumDirURL("thumb"), $size, $attrs);
-		}
-	}
-	function getThumbnailTagById($id, $size=0, $attrs="") {
-		return $this->getThumbnailTag($this->getPhotoIndex($id), $size, $attrs); 
-	}
+    function addNestedAlbum($albumName) {
+        $this->updateSerial = 1;
+        $item = new AlbumItem();
+        $item->setAlbumName($albumName);
+        $this->photos[] = $item;
+        if ($this->getAddToBeginning() ) {
+            $this->movePhoto($this->numPhotos(1), 0);
+        }
+    }
 
-	function getHighlightedItem() {
-		$index = $this->getHighlight();
-		if (!isset($index)) {
-			return array(null, null);
-		}
-		$photo = $this->getPhoto($index);
-		$album = $this;
-		while ($photo->isAlbum() && $album->numPhotos(1)) {
-			$album = $album->getNestedAlbum($index);
-			$index = $album->getHighlight();
-			if (!isset($index)) {
-				return array(null, null);
-			}
-			$photo = $album->getPhoto($index);
-		}
-		return array($album, $photo);
-	}
+    function hidePhoto($index) {
+        $photo = &$this->getPhoto($index);
+        $photo->hide();
+    }
+
+    function unhidePhoto($index) {
+        $photo = &$this->getPhoto($index);
+        $photo->unhide();
+    }
+
+    function isHidden($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->isHidden();
+    }
+
+    function isHiddenRecurse($index = 0) {
+        if ($index && $this->isHidden($index)) {
+            return true;
+        }
+        elseif ($this->isRoot()) {
+            // Root albums can't be hidden
+            return false;
+        }
 
-	function getHighlightAsThumbnailTag($size=0, $attrs="") {
-		list ($album, $photo) = $this->getHighlightedItem();
-		if ($photo) {
-			return $photo->getThumbnailTag($album->getAlbumDirURL("highlight"), $size, $attrs);
-		} else {
-			return '<span class="title">'. _("No highlight") .'!</span>';
-		}
-	}
+        $parent = $this->getParentAlbum();
+        $numphotos = $parent->numPhotos(1);
+        for ($i = 1; $i <= $numphotos; $i++) {
+            if ($parent->isAlbum($i) && ($parent->getAlbumName($i) == $this->fields['name'])) {
+                if ($parent->isHidden($i)) {
+                    // This item is hidden
+                    return true;
+                }
+                else {
+                    // This item is not hidden - check the parent
+                    return $parent->isHiddenRecurse();
+                }
+            }
+        }
+        // This should never happen
+        return false;
+    }
+
+    function deletePhoto($index, $forceResetHighlight = "0", $recursive = 1) {
+        global $gallery;
+
+        // Get rid of the block-random cache file, to prevent out-of-bounds
+        // errors from getPhoto()
+        $randomBlockCache = $gallery->app->albumDir . "/block-random.dat";
+        if (fs_file_exists($randomBlockCache)) {
+            fs_unlink($randomBlockCache);
+        }
 
-	function getHighlightTag($size=0, $attrs="",$alttext="") {
-		$index = $this->getHighlight();
-		if (isset($index)) {
-			$photo = $this->getPhoto($index);
-			return $photo->getHighlightTag($this->getAlbumDirURL("highlight"), $size, $attrs, $alttext);
-		} else {
-			return '<span class="title">'. _("No highlight") .'!</span>';
-		}
-	}
+        $this->updateSerial = 1;
+        $photo = array_splice($this->photos, $index-1, 1);
+        // need to check for nested albums and delete them ...
+        if ($recursive && $photo[0]->isAlbum()) {
+            $albumName = $photo[0]->getAlbumName();
+            $album = new Album();
+            $album->load($albumName);
+            $album->delete();
+        }
+        /* are we deleting the highlight? pick a new one */
+        $needToRehighlight = 0;
+        if ( ($photo[0]->isHighlight()) && ($this->numPhotos(1) > 0) && (!$forceResetHighlight==-1)) {
+            $needToRehighlight = 1;
+        }
+        $photo[0]->delete($this->getAlbumDir());
+        if (($needToRehighlight) || ($forceResetHighlight==1)){
+            // Prevent hidden items, albums, and movies from
+            // automatically becoming the new highlight.
+            for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+                $newHighlight = $this->getPhoto($i);
+                if (!$newHighlight->isMovie() && !$newHighlight->isAlbum() && !$newHighlight->isHidden()) {
+                    $this->setHighlight($i);
+                    break;
+                }
+            }
+        }
+    }
 
-	function getPhotoTag($index, $full, $attrs) {
-		$photo = $this->getPhoto($index);
-		if ($photo->isMovie()) {
-			return $photo->getThumbnailTag($this->getAlbumDirURL("thumb"));
-		} else {
-			return $photo->getPhotoTag($this->getAlbumDirURL("full"), $full, $attrs);
-		}
-	}
+    function newPhotoName() {
+        return $this->fields["nextname"]++;
+    }
+
+    function getPreviewTag($index, $size=0, $attrs="") {
+        if ($index === null) {
+            return '';
+        }
+        $photo = $this->getPhoto($index);
+        if ($photo->isAlbum()) {
+            return '';
+            //$myAlbum = $this->getNestedAlbum($index);
+            //return $myAlbum->getHighlightAsThumbnailTag($size, $attrs);
+        } else {
+            return $photo->getPreviewTag($this->getAlbumDirURL("preview"), $size, $attrs);
+        }
+    }
 
-	function getPhotoPath($index, $full=0) {
-		$photo = $this->getPhoto($index);
-		return $photo->getPhotoPath($this->getAlbumDirURL("full"), $full);
-	}
+    function getThumbnailTag($index, $size=0, $attrs="") {
+        if ($index === null) {
+            return '';
+        }
+        $photo = $this->getPhoto($index);
+        if ($photo->isAlbum()) {
+            $myAlbum = $this->getNestedAlbum($index);
+            return $myAlbum->getHighlightAsThumbnailTag($size, $attrs);
+        } else {
+            return $photo->getThumbnailTag($this->getAlbumDirURL("thumb"), $size, $attrs);
+        }
+    }
+    
+    function getThumbnailTagById($id, $size=0, $attrs="") {
+        return $this->getThumbnailTag($this->getPhotoIndex($id), $size, $attrs);
+    }
+
+    function getHighlightedItem() {
+        $index = $this->getHighlight();
+        if (!isset($index)) {
+            return array(null, null);
+        }
+        $photo = $this->getPhoto($index);
+        $album = $this;
+        while ($photo->isAlbum() && $album->numPhotos(1)) {
+            $album = $album->getNestedAlbum($index);
+            $index = $album->getHighlight();
+            if (!isset($index)) {
+                return array(null, null);
+            }
+            $photo = $album->getPhoto($index);
+        }
+        return array($album, $photo);
+    }
 
-	function getPhotoId($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->getPhotoId();
-	}
+    function getHighlightAsThumbnailTag($size = 0, $attrs = '') {
+        list ($album, $photo) = $this->getHighlightedItem();
+        if ($photo) {
+            return $photo->getThumbnailTag($album->getAlbumDirURL('highlight'), $size, $attrs);
+        } else {
+            return '<span class="title">'. gTranslate('core', "No highlight!") .'</span>';
+        }
+    }
 
-	function getAlbumDir() {
-		global $gallery;
+    function getHighlightTag($size = 0, $attrs = '', $alttext = '') {
+        $index = $this->getHighlight();
+        if (isset($index)) {
+            $photo = $this->getPhoto($index);
+            return $photo->getHighlightTag($this->getAlbumDirURL('highlight'), $size, $attrs, $alttext);
+        } else {
+            return '<span class="title">'. gTranslate('core', "No highlight!") .'</span>';
+        }
+    }
 
-		return $gallery->app->albumDir . "/{$this->fields['name']}";
-	}
+    function getPhotoTag($index, $full, $attrs) {
+        $photo = $this->getPhoto($index);
+        if ($photo->isMovie()) {
+            return $photo->getThumbnailTag($this->getAlbumDirURL("thumb"));
+        } else {
+            return $photo->getPhotoTag($this->getAlbumDirURL("full"), $full, $attrs);
+        }
+    }
 
-	function getAlbumDirURL($type) {
-		global $gallery;
+    function getPhotoPath($index, $full = false) {
+        $photo = $this->getPhoto($index);
+        return $photo->getPhotoPath($this->getAlbumDirURL("full"), $full);
+    }
+
+    function getAbsolutePhotoPath($index, $full = false) {
+        $photo = $this->getPhoto($index);
+        return $photo->getPhotoPath($this->getAlbumDir(), $full);
+    }
+
+    function getPhotoId($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getPhotoId();
+    }
+
+    function getAlbumDir() {
+        global $gallery;
 
-		if (!empty($this->transient->mirrorUrl)) {
-			return $this->transient->mirrorUrl;
-		}
-
-		$albumPath = "/".urlencode ($this->fields['name']);
-
-		/* 
-		 * Highlights are typically shown for many albums at once,
-		 * and it's slow to check each different album just for one
-		 * image.  Highlights are also typically pretty small.  So,
-		 * if this is for a highlight, don't mirror it.
-		 */
-		if (isset($gallery->app->feature["mirror"]) && isset($gallery->app->mirrorSites) && 
-		    strcmp($type, "highlight")) {
-			foreach(split("[[:space:]]+", $gallery->app->mirrorSites) as $base_url) {
-				$base_url .= $albumPath;
-				$serial = $base_url . "/serial.{$this->fields['serial_number']}.dat";
-
-				/* Don't use fs_fopen here since we're opening a url */
-				if ($fd = @fopen($serial, "r")) {
-					$serialContents = fgets($fd, strlen($this->tsilb)+1);
-					if (!strcmp($serialContents, $this->tsilb)) {
-						$this->transient->mirrorUrl = $base_url;
-						return $this->transient->mirrorUrl;
-					}
-				} 
-			}
-
-			/* All mirrors are out of date */
-			$this->transient->mirrorUrl = 
-				$gallery->app->albumDirURL . $albumPath;
-			return $this->transient->mirrorUrl;
-		} 
+        return $gallery->app->albumDir . "/{$this->fields['name']}";
+    }
 
-		return $gallery->app->albumDirURL . $albumPath;
-	}
+    function getAlbumDirURL($type) {
+        global $gallery;
 
-	function numHidden() {
-		$cnt = 0;
-		for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			$photo = $this->getPhoto($i);
-			if ($photo->isHidden()) {
-				$cnt++;
-			}
-		}
-		return $cnt;
-	}
+        if (!empty($this->transient->mirrorUrl)) {
+            return $this->transient->mirrorUrl;
+        }
 
-	function numPhotos($show_hidden=0, $strict_count=0) {
-		if (!$strict_count) {
-			if ($show_hidden) {
-				return sizeof($this->photos);
-			} else {
-				return sizeof($this->photos) - $this->numHidden();
-			}
-		}
-		else {
-			$count = 0;
-			if (!sizeof($this->photos)) {
-				return $count;
-			}
-			foreach ($this->photos as $photo) {
-				if ($photo->isAlbum() || ($photo->isHidden() && !$show_hidden)) {
-					continue;
-				}
-				else {
-					$count++;
-				}
-			}
-			return $count;
-		}
-	}
+        $albumPath = "/".urlencode ($this->fields['name']);
 
-	function numVisibleItems($user, $returnVisibleItems=false) {
-		$uuid = $user->getUid();
+        /*
+        * Highlights are typically shown for many albums at once,
+        * and it's slow to check each different album just for one
+        * image.  Highlights are also typically pretty small.  So,
+        * if this is for a highlight, don't mirror it.
+        */
+        if (isset($gallery->app->feature["mirror"]) && isset($gallery->app->mirrorSites) &&
+        strcmp($type, "highlight")) {
+            foreach(split("[[:space:]]+", $gallery->app->mirrorSites) as $base_url) {
+                $base_url .= $albumPath;
+                $serial = $base_url . "/serial.{$this->fields['serial_number']}.dat";
+
+                /* Don't use fs_fopen here since we're opening a url */
+                if ($fd = @fopen($serial, "r")) {
+                    $serialContents = fgets($fd, strlen($this->tsilb)+1);
+                    if (!strcmp($serialContents, $this->tsilb)) {
+                        $this->transient->mirrorUrl = $base_url;
+                        return $this->transient->mirrorUrl;
+                    }
+                }
+            }
 
-		if ($returnVisibleItems) {
-			$visibleItems = array();
-			$numVisibleItems = 0;
-		}
-		$numPhotos = $numAlbums = 0;
-		$canWrite = $user->canWriteToAlbum($this);
-		$numItems = $this->numPhotos(1);
-		for ($i = 1; $i <= $numItems; $i++) {
-			$photo = $this->getPhoto($i);
-			if ($photo->isAlbum()) {
-				$album = new Album();
-				$album->load($photo->getAlbumName(), false);
-				if (($user->canReadAlbum($album) && !$photo->isHidden()) || $user->canWriteToAlbum($album)) {
-					$numAlbums++;
-					if ($returnVisibleItems) {
-						$visibleItems[++$numVisibleItems] = $i;
-					}
-				}
-			} elseif ($canWrite || !$photo->isHidden() || $this->isItemOwner($uuid, $i)) {
-				$numPhotos++;
-				if ($returnVisibleItems) {
-					$visibleItems[++$numVisibleItems] = $i;
-				}
-			}
-		}
-
-		if ($returnVisibleItems) {
-			return array($numPhotos, $numAlbums, $visibleItems);
-		} else {
-			return array($numPhotos, $numAlbums);
-		}
-	}
+            /* All mirrors are out of date */
+            $this->transient->mirrorUrl =
+            $gallery->app->albumDirURL . $albumPath;
+            return $this->transient->mirrorUrl;
+        }
 
-	function getIds($show_hidden=0) {
-		foreach ($this->photos as $photo) {
-			if ((!$photo->isHidden() || $show_hidden) && !$photo->getAlbumName()) {
-				$ids[] = $photo->getPhotoId();
-			}
-		}
-		return $ids;
-	}
+        return $gallery->app->albumDirURL . $albumPath;
+    }
 
-	function &getPhoto($index) {
-		if ($index >= 1 && $index <= sizeof($this->photos)) { 
-			return $this->photos[$index-1];
-		} else {
-			echo gallery_error(sprintf(_("Requested index [%d] out of bounds [%d]"),$index,sizeof($this->photos)));
-		}
-	}
+    function numHidden() {
+        $cnt = 0;
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            $photo = $this->getPhoto($i);
+            if ($photo->isHidden()) {
+                $cnt++;
+            }
+        }
+        return $cnt;
+    }
 
-	function getPhotoIndex($id) {
-		for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			$photo = $this->getPhoto($i);
-			if ($photo->getPhotoId() == $id) {
-				return $i;
-			}
-		}
-		return -1;
-	}
+    function numPhotos($show_hidden=0, $strict_count=0) {
+        if (!$strict_count) {
+            if ($show_hidden) {
+                return sizeof($this->photos);
+            } else {
+                return sizeof($this->photos) - $this->numHidden();
+            }
+        }
+        else {
+            $count = 0;
+            if (!sizeof($this->photos)) {
+                return $count;
+            }
+            foreach ($this->photos as $photo) {
+                if ($photo->isAlbum() || ($photo->isHidden() && !$show_hidden)) {
+                    continue;
+                }
+                else {
+                    $count++;
+                }
+            }
+            return $count;
+        }
+    }
 
-	function getAlbumIndex($albumName) {
-		for ($i = 1; $i <= $this->numPhotos(1); $i++) {
-			if ($albumName === $this->getAlbumName($i)) {
-				return $i;
-			}
-		}
-		return -1;
-	}
+/* This is a new function for numVisibleItems */
+/* Old function should be removed */
+    function numItems($user = NULL, $recursive = false) {
+        if(empty($user)) {
+            return array(-1, -1, -1);
+        }
 
-	function setPhoto($photo, $index) {
-		$this->updateSerial = 1;
-		$this->photos[$index-1] = $photo;		
-	}
+        $uuid = $user->getUid();
+        $numItemsTotal = $numAlbums = $numPhotos = 0;
+        $canWrite = $user->canWriteToAlbum($this);
+        $numItems = $this->numPhotos(1);
+
+        for ($itemNr = 1; $itemNr <= $numItems; $itemNr++) {
+            $item = $this->getPhoto($itemNr);
+            if ($item->isAlbum()) {
+                $subalbum = new Album();
+                $subalbum->load($item->getAlbumName(), $recursive);
+                if (($user->canReadAlbum($subalbum) && !$item->isHidden()) || $user->canWriteToAlbum($subalbum)) {
+                    if(!$recursive) {
+                        $numAlbums++;
+                    }
+                    else {
+                        list($subNumItems, $subNumAlbums, $subNumPhotos) =  $subalbum->numItems($user, $recursive);
+                        $numAlbums++;
+                        $numAlbums += $subNumAlbums;
+                        $numPhotos += $subNumPhotos;
+                    }
+                }
+            } elseif ($canWrite || !$item->isHidden() || $this->isItemOwner($uuid, $itemNr)) {
+                $numPhotos++;
+            }
+        }
+        $numItemsTotal = $numAlbums + $numPhotos;
+        return (array($numItemsTotal, $numAlbums, $numPhotos));
+    }
+    
+    function numVisibleItems($user, $returnVisibleItems=false) {
+        $uuid = $user->getUid();
+
+        if ($returnVisibleItems) {
+            $visibleItems = array();
+            $numVisibleItems = 0;
+        }
+        $numPhotos = $numAlbums = 0;
+        $canWrite = $user->canWriteToAlbum($this);
+        $numItems = $this->numPhotos(1);
+        for ($i = 1; $i <= $numItems; $i++) {
+            $photo = $this->getPhoto($i);
+            if ($photo->isAlbum()) {
+                $album = new Album();
+                $album->load($photo->getAlbumName(), false);
+                if (($user->canReadAlbum($album) && !$photo->isHidden()) || $user->canWriteToAlbum($album)) {
+                    $numAlbums++;
+                    if ($returnVisibleItems) {
+                        $visibleItems[++$numVisibleItems] = $i;
+                    }
+                }
+            } elseif ($canWrite || !$photo->isHidden() || $this->isItemOwner($uuid, $i)) {
+                $numPhotos++;
+                if ($returnVisibleItems) {
+                    $visibleItems[++$numVisibleItems] = $i;
+                }
+            }
+        }
 
-	function getCaption($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->getCaption();
-	}
+        if ($returnVisibleItems) {
+            return array($numPhotos, $numAlbums, $visibleItems);
+        } else {
+            return array($numPhotos, $numAlbums);
+        }
+    }
 
-	function setCaption($index, $caption) {
-		$photo = &$this->getPhoto($index);
-		$photo->setCaption($caption);
-	}
+    function getIds($show_hidden = 0) {
+        foreach ($this->photos as $photo) {
+            if ((!$photo->isHidden() || $show_hidden) && !$photo->getAlbumName()) {
+                $ids[] = $photo->getPhotoId();
+            }
+        }
+        return $ids;
+    }
 
-	function getItemOwner($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->getOwner();
-	}
+    function &getPhoto($index) {
+        if ($index >= 1 && $index <= sizeof($this->photos)) {
+            return $this->photos[$index-1];
+        } else {
+            echo gallery_error(sprintf(_("Requested index [%d] out of bounds [%d]"),$index,sizeof($this->photos)));
+        }
+    }
 
-	function setItemOwner($index, $owner) {
-		$photo = &$this->getPhoto($index);
-		$photo->setOwner($owner);
-	}
+    function getPhotoIndex($id) {
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            $photo = $this->getPhoto($i);
+            if ($photo->getPhotoId() == $id) {
+                return $i;
+            }
+        }
+        return -1;
+    }
 
-       function getRank($index) {
-               $photo = $this->getPhoto($index);
-               return $photo->getRank();
-       }
-       function setRank($index, $rank) {
-               $photo = &$this->getPhoto($index);
-               $photo->setRank($rank);
-       }
-
-	function getUploadDate($index) {
-		$photo = $this->getPhoto($index);
-		$uploadDate = $photo->getUploadDate();
-		if (!$uploadDate) { // populating old photos with data
-			$this->setUploadDate($index);
-			$this->save();
-			$uploadDate = $this->getUploadDate($index);
-		}
-		return $uploadDate;
-	}
+    function getAlbumIndex($albumName) {
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            if ($albumName === $this->getAlbumName($i)) {
+                return $i;
+            }
+        }
+        return -1;
+    }
 
-	function setUploadDate($index, $uploadDate="") {
-		$photo = &$this->getPhoto($index);
-		$photo->setUploadDate($uploadDate);
-	}
+    function setPhoto($photo, $index) {
+        $this->updateSerial = 1;
+        $this->photos[$index-1] = $photo;
+    }
+
+    function getCaption($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getCaption();
+    }
+
+    function setCaption($index, $caption) {
+        $photo = &$this->getPhoto($index);
+        $photo->setCaption($caption);
+    }
+
+    function getItemOwner($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getOwner();
+    }
+
+    function setItemOwner($index, $owner) {
+        $photo = &$this->getPhoto($index);
+        $photo->setOwner($owner);
+    }
+
+    function getRank($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getRank();
+    }
+    
+    function setRank($index, $rank) {
+        $photo = &$this->getPhoto($index);
+        $photo->setRank($rank);
+    }
+
+    function getUploadDate($index) {
+        $photo = $this->getPhoto($index);
+        $uploadDate = $photo->getUploadDate();
+         // populating old photos with data
+         if (!$uploadDate) {
+             $this->setUploadDate($index);
+             $this->save();
+             $uploadDate = $this->getUploadDate($index);
+         }
+         return $uploadDate;
+    }
+
+    function setUploadDate($index, $uploadDate="") {
+        $photo = &$this->getPhoto($index);
+        $photo->setUploadDate($uploadDate);
+    }
+
+    function getItemCaptureDate($index) {
+        $photo = $this->getPhoto($index);
+        $itemCaptureDate = $photo->getItemCaptureDate();
+        // populating old photos with data
+        if (!$itemCaptureDate) {
+            $this->setItemCaptureDate($index);
+            $this->save();
+            $itemCaptureDate = $this->getItemCaptureDate($index);
+        }
+        return $itemCaptureDate;
+    }
 
-	function getItemCaptureDate($index) {
-		$photo = $this->getPhoto($index);
-		$itemCaptureDate = $photo->getItemCaptureDate();
-		if (!$itemCaptureDate) { // populating old photos with data
-			$this->setItemCaptureDate($index);
-			$this->save();
-			$itemCaptureDate = $this->getItemCaptureDate($index);
-		}
-		return $itemCaptureDate;
-	}
+    function setItemCaptureDate($index, $itemCaptureDate="") {
+        $photo = &$this->getPhoto($index);
+        $photo->setItemCaptureDate($itemCaptureDate);
+    }
+
+    function numComments($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->numComments();
+    }
+
+    function getComment($photoIndex, $commentIndex) {
+        $photo = $this->getPhoto($photoIndex);
+        return $photo->getComment($commentIndex);
+    }
+
+    function addComment($id, $comment, $IPNumber, $name) {
+        $index=$this->getPhotoIndex($id);
+        $photo = &$this->getPhoto($index);
+        $photo->addComment($comment, $IPNumber, $name);
+    }
+
+    function deleteComment($index, $comment_index) {
+        $photo = &$this->getPhoto($index);
+        $photo->deleteComment($comment_index);
+    }
+
+    function getKeyWords($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getKeyWords();
+    }
+
+    function setKeyWords($index, $keywords) {
+        $photo = &$this->getPhoto($index);
+        $photo->setKeyWords($keywords);
+    }
+
+    function rotatePhoto($index, $direction, $clearexifrotate = false) {
+        $this->updateSerial = 1;
+        $photo = &$this->getPhoto($index);
+        $retval = $photo->rotate($this->getAlbumDir(), $direction, $this->fields["thumb_size"], $this, $clearexifrotate);
+        if (!$retval) {
+            return $retval;
+        }
+    }
 
-	function setItemCaptureDate($index, $itemCaptureDate="") {
-		$photo = &$this->getPhoto($index);
-		$photo->setItemCaptureDate($itemCaptureDate);
-	}
-	
-	function numComments($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->numComments();
-	}
+    function watermarkPhoto($index, $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $preview=0, $previewSize=0, $wmSelect=0) {
+        $this->updateSerial = 1;
+        $photo = &$this->getPhoto($index);
+        $retval = $photo->watermark(
+            $this->getAlbumDir(),
+            $wmName,
+            $wmAlphaName,
+            $wmAlign,
+            $wmAlignX,
+            $wmAlignY,
+            $preview,
+            $previewSize,
+            $wmSelect
+        );
+        if (!$retval) {
+            return $retval;
+        }
+        $resetModDate = 1;
+        $this->save(array(), $resetModDate);
+    }
+
+    function watermarkAlbum($wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $recursive=0, $wmSelect=0) {
+        $this->updateSerial = 1;
+        $count = $this->numPhotos(1);
+        for ($index = 1; $index <= $count; $index++) {
+            $photo = &$this->getPhoto($index);
+            if ($photo->isAlbum() && $recursive) {
+                if ($recursive) {
+                    $subAlbumName = $this->getAlbumName($index);
+                    $subAlbum = new Album();
+                    $subAlbum->load($subAlbumName);
+                    $subAlbum->watermarkAlbum($wmName, $wmAlphaName,
+                    $wmAlign, $wmAlignX, $wmAlignY, $recursive, $wmSelect);
+                }
+            } else if ($photo->isMovie()) {
+                // Watermarking of movies not supported
+            } else {
+                $photo->watermark($this->getAlbumDir(),
+                $wmName, $wmAlphaName,
+                $wmAlign, $wmAlignX, $wmAlignY,
+                0, 0, // Not a preview
+                $wmSelect);
+            }
+        } // next $index
+    } // end of function
+
+    function makeThumbnail($index) {
+        $this->updateSerial = 1;
+        $photo = &$this->getPhoto($index);
+        if (!$photo->isAlbum()) {
+            $photo->makeThumbnail($this->getAlbumDir(), $this->fields["thumb_size"], $this);
+        } else {
+            // Reselect highlight of subalbum..
+            $album = $this->getNestedAlbum($index);
+            $i = $album->getHighlight();
+            if (isset($i)) {
+                $album->setHighlight($i);
+                $album->save();
+            }
+        }
+    }
 
-	function getComment($photoIndex, $commentIndex) {
-		$photo = $this->getPhoto($photoIndex);
-		return $photo->getComment($commentIndex);
-	}
+    function makeThumbnailRecursive($index) {
+        for ($i = 1; $i <= $this->numPhotos(1); $i++) {
+            if ($this->isAlbum($i)) {
+                $nestedAlbum = new Album();
+                $index = 'all';
+                $nestedAlbum->load($this->getAlbumName($i));
+
+                $np = $nestedAlbum->numPhotos(1);
+                echo "<br>". sprintf(_("Entering album %s, processing %d photos"), $this->getAlbumName($i), $np);
+                $nestedAlbum->makeThumbnailRecursive($index);
+                $nestedAlbum->save();
+
+                $album = $this->getNestedAlbum($i);
+                $l = $album->getHighlight();
+                if (isset($l)) {
+                    $album->setHighlight($l);
+                    $album->save();
+                }
+            }
+            else {
+                echo("<br> ". sprintf(_("Processing image %d..."), $i));
+                my_flush();
+                $this->makeThumbnail($i);
+            }
+        }
+    }
 
-	function addComment($id, $comment, $IPNumber, $name) {
-	       	$index=$this->getPhotoIndex($id);
-	       	$photo = &$this->getPhoto($index);
-	       	$photo->addComment($comment, $IPNumber, $name);
-	}
+    function movePhoto($index, $newIndex) {
+        /* Pull photo out */
+        $photo = array_splice($this->photos, $index-1, 1);
+        array_splice($this->photos, $newIndex, 0, $photo);
+    }
+
+    function rearrangePhotos($newOrder) {
+        // safety check.. no repeats, all valid 1-based indices
+        $check = array();
+        $count = count($this->photos);
+        foreach ($newOrder as $index) {
+            if ($index < 1 || $index > $count || isset($check[$index]))
+            return;
+            $check[$index] = 1;
+        }
+        // build new list..
+        $newList = array();
+        for ($i=$j=0; $i < $count; $i++) {
+            if (in_array($i+1, $newOrder)) {
+                $newList[$i] = $this->photos[$newOrder[$j++]-1];
+            } else {
+                $newList[$i] = $this->photos[$i];
+            }
+        }
+        $this->photos = $newList;
+    }
 
-	function deleteComment($index, $comment_index) {
-		$photo = &$this->getPhoto($index);
-		$photo->deleteComment($comment_index);
-	}
+    function isMovie($id) {
+        $index = $this->getPhotoIndex($id);
+        $photo = $this->getPhoto($index);
+        return $photo->isMovie();
+    }
+
+    function isMovieByIndex($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->isMovie();
+    }
+
+    function isItemOwner($uid, $index) {
+    	global $gallery;
+
+    	if($uid == $this->getItemOwner($index)) {
+    		return true;
+    	}
+    	
+    	$everybody = $gallery->userDB->getEverybody();
+    	$everybodyUid = $everybody->getUid();
+    	if($this->getItemOwner($index) == $everybodyUid) {
+    		return true;
+    	}
+    	
+    	$nobody = $gallery->userDB->getNobody();
+    	$nobodyUid = $nobody->getUid();
+    	if ($uid == $nobodyUid) {
+    		return false;
+    	}
+
+    	return false;
+    }
+
+    function isAlbum($index) {
+        $photo = $this->getPhoto($index);
+        return ($photo->getAlbumName() !== NULL) ? true : false;
+    }
+
+    function getAlbumName($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getAlbumName();
+    }
+
+    function setAlbumName($index, $name) {
+        $photo = &$this->getPhoto($index);
+        $photo->setAlbumName($name);
+    }
+
+    function resetClicks() {
+        $this->fields["clicks"] = 0;
+        $this->fields["clicks_date"] = time();
+        $resetModDate = 0;
+        $this->save(array(), $resetModDate);
+
+    }
+
+    function resetAllClicks() {
+        $this->resetClicks();
+        for ($i=1; $i <= $this->numPhotos(1); $i++) {
+            $this->resetItemClicks($i);
+        }
+        $resetModDate = 0;
+        $this->save(array(), $resetModDate);
+    }
+
+    function getClicks() {
+        // just in case we have no clicks yet...
+        if (!isset($this->fields["clicks"])) {
+            $this->resetClicks();
+        }
+        return $this->fields["clicks"];
+    }
 
-	function getKeyWords($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->getKeyWords();
-	}
+    function getClicksDate() {
+        global $gallery;
+
+        $time = $this->fields["clicks_date"];
 
-	function setKeyWords($index, $keywords) {
-		$photo = &$this->getPhoto($index);
-		$photo->setKeyWords($keywords);
+        // albums may not have this field.
+        if (!$time) {
+            $this->resetClicks();
+            $time = $this->fields["clicks_date"];
         }
+        return strftime($gallery->app->dateString,$time);
 
-	function rotatePhoto($index, $direction, $clearexifrotate=false) {
-		$this->updateSerial = 1;
-		$photo = &$this->getPhoto($index);
-		$retval = $photo->rotate($this->getAlbumDir(), $direction, $this->fields["thumb_size"], $this, $clearexifrotate);
-		if (!$retval) {
-			return $retval;
-		}
-	}
+    }
 
-        function watermarkPhoto($index, $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $preview=0, $previewSize=0, $wmSelect=0) {
-                $this->updateSerial = 1;
-                $photo = &$this->getPhoto($index);
-                $retval = $photo->watermark($this->getAlbumDir(),
-                                            $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $preview,$previewSize, $wmSelect);
-                if (!$retval) {
-                        return $retval;
-                }
-		$resetModDate = 1;
-		$this->save(array(), $resetModDate);
-        }
-
-	function watermarkAlbum($wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY, $recursive=0, $wmSelect=0) {
-		$this->updateSerial = 1;
-	       	$count = $this->numPhotos(1);
-		for ($index = 1; $index <= $count; $index++) {
-			$photo = &$this->getPhoto($index);
-			if ($photo->isAlbum() && $recursive) {
-				if ($recursive) {
-					$subAlbumName = $this->getAlbumName($index);
-					$subAlbum = new Album();
-					$subAlbum->load($subAlbumName);
-					$subAlbum->watermarkAlbum($wmName, $wmAlphaName,
-						$wmAlign, $wmAlignX, $wmAlignY, $recursive, $wmSelect);
-				}
-			} else if ($photo->isMovie()) {
-				// Watermarking of movies not supported
-			} else {
-				$photo->watermark($this->getAlbumDir(),
-						$wmName, $wmAlphaName,
-						$wmAlign, $wmAlignX, $wmAlignY,
-						0, 0, // Not a preview
-					 	$wmSelect);
-			}
-		} // next $index
-	} // end of function
-
-	function makeThumbnail($index) {
-		$this->updateSerial = 1;
-		$photo = &$this->getPhoto($index);
-		if (!$photo->isAlbum()) {
-			$photo->makeThumbnail($this->getAlbumDir(), $this->fields["thumb_size"], $this);
-		} else {
-			// Reselect highlight of subalbum..
-			$album = $this->getNestedAlbum($index);
-			$i = $album->getHighlight();
-			if (isset($i)) {
-				$album->setHighlight($i);
-				$album->save();
-			}
-		}
-	}
+    function incrementClicks() {
+        if (strcmp($this->fields["display_clicks"], "yes")) {
+            return;
+        }
 
-	function makeThumbnailRecursive($index)
-		{
-		for ($i=1; $i <= $this->numPhotos(1); $i++)
-			{
-			if ($this->isAlbum($i))
-				{
-				$nestedAlbum = new Album();
-				$index="all";
-				$nestedAlbum->load($this->getAlbumName($i));
-				
-				$np = $nestedAlbum->numPhotos(1);
-				echo "<br>". sprintf(_("Entering album %s, processing %d photos"), $this->getAlbumName($i), $np);
-				$nestedAlbum->makeThumbnailRecursive($index);
-				$nestedAlbum->save();
-					
-				$album = $this->getNestedAlbum($i);
-				$l = $album->getHighlight();
-				if (isset($l))
-					{
-					$album->setHighlight($l);
-					$album->save();
-					}
-				}
-			else
-				{
-				echo("<br> ". sprintf(_("Processing image %d..."), $i));
-				my_flush();
-				$this->makeThumbnail($i);
-				}
-			}
-		}
-
-	function movePhoto($index, $newIndex) {
-		/* Pull photo out */
-		$photo = array_splice($this->photos, $index-1, 1);
-		array_splice($this->photos, $newIndex, 0, $photo);
-	}
+        $this->fields["clicks"]++;
+        $resetModDate=0; // don't reset last_mod_date
+        $this->save(array(), $resetModDate);
+    }
+
+    function getItemClicks($index) {
+        $photo = $this->getPhoto($index);
+        return $photo->getItemClicks();
+    }
+
+    function incrementItemClicks($index) {
+        if (strcmp($this->fields["display_clicks"], "yes")) {
+            return;
+        }
 
-	function rearrangePhotos($newOrder) {
-		// safety check.. no repeats, all valid 1-based indices
-		$check = array();
-	 	$count = count($this->photos);
- 		foreach ($newOrder as $index) {
-		if ($index < 1 || $index > $count || isset($check[$index]))
-			return;
-			$check[$index] = 1;
-		}
-		// build new list..
-		$newList = array();
-		for ($i=$j=0; $i < $count; $i++) {
-			if (in_array($i+1, $newOrder)) {
-				$newList[$i] = $this->photos[$newOrder[$j++]-1];
-			} else {
-				$newList[$i] = $this->photos[$i];
-			}
-		}
-		$this->photos = $newList;
-	}
+        $photo = &$this->getPhoto($index);
+        $photo->incrementItemClicks();
 
-	function isMovie($id) {
-		$index = $this->getPhotoIndex($id);
-		$photo = $this->getPhoto($index);
-		return $photo->isMovie();
-	}
+        //don't reset last_mod_date
+        $resetModDate = 0;
+        $this->save(array(), $resetModDate);
+    }
+
+    function resetItemClicks($index) {
+        $photo = &$this->getPhoto($index);
+        $photo->resetItemClicks();
+    }
 
-	function isMovieByIndex($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->isMovie();
-	}
+    function getExif($index, $forceRefresh=0) {
+        global $gallery;
 
-	function isItemOwner($uid, $index)
-	{
-		global $gallery;
-		$nobody = $gallery->userDB->getNobody();
-		$nobodyUid = $nobody->getUid();
-		$everybody = $gallery->userDB->getEverybody();
-		$everybodyUid = $everybody->getUid();
-
-		if ($uid == $nobodyUid || $uid == $everybodyUid) {
-			return false;
-		}
-		return ($uid == $this->getItemOwner($index));
-	}
-	
-	function isAlbum($index) {
-		$photo = $this->getPhoto($index);
-		return ($photo->getAlbumName() !== NULL) ? true : false;
-	}
-	
-	function getAlbumName($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->getAlbumName();
-	}
+        if (empty($gallery->app->use_exif)) {
+            return array();
+        }
 
-	function setAlbumName($index, $name) {
-		$photo = &$this->getPhoto($index);
-		$photo->setAlbumName($name);
-	}
-	
-	function resetClicks() {
-		$this->fields["clicks"] = 0;
-		$this->fields["clicks_date"] = time();
-		$resetModDate=0;
-		$this->save(array(), $resetModDate);
+        $dir = $this->getAlbumDir();
+        $photo =& $this->getPhoto($index);
+        list ($status, $exif, $needToSave) = $photo->getExif($dir, $forceRefresh);
+
+        if ($status != 0) {
+            // An error occurred.
+            return array(
+            	'junk1' => '',
+            	'Error' => sprintf(_("Error getting EXIF data. Expected Status 0, got %s."),$status),
+            	'status' => $status);
+        }
 
-	}
-	
-	function resetAllClicks() {
-		$this->resetClicks();
-		for ($i=1; $i<=$this->numPhotos(1); $i++) {
-			$this->resetItemClicks($i);
-		}	
-		$resetModDate=0;
-		$this->save(array(), $resetModDate);
-	}
+        if ($needToSave) {
+             //don't reset last_mod_date
+            $resetModDate = 0;
+            $this->save(array(), $resetModDate);
+        }
 
-	function getClicks() {
-		// just in case we have no clicks yet...
-		if (!isset($this->fields["clicks"])) {
-			$this->resetClicks();
-		}
-		return $this->fields["clicks"];
-	}
+        return $exif;
+    }
 
-	function getClicksDate() {
-		global $gallery;
+    function getCreationDate() {
+    	global $gallery;
+    	
+    	if(!empty($this->fields['creation_date'])) {
+        	$creationDate = $this->fields['creation_date'];
+    	}
+    	
+        if (isset($creationDate)) {
+        	return strftime($gallery->app->dateString,$creationDate);
+        }
+        else {
+        	return false;
+        }
+    }
+    
+    function getLastModificationDate() {
+        global $gallery;
+        $dir = $this->getAlbumDir();
+
+        $time = $this->fields["last_mod_time"];
+
+        // Older albums may not have this field.
+        if (!$time) {
+            $stat = fs_stat("$dir/album.dat");
+            $time = $stat[9];
+        }
 
-                $time = $this->fields["clicks_date"];
+        return strftime($gallery->app->dateString,$time);
+    }
 
-                // albums may not have this field.
-                if (!$time) {
-                        $this->resetClicks();
-			$time = $this->fields["clicks_date"];
-                }
-		return strftime($gallery->app->dateString,$time);
+    function setNestedProperties() {
+        for ($i=1; $i <= $this->numPhotos(1); $i++) {
+            if ($this->isAlbum($i)) {
+                $nestedAlbum = new Album();
+                $nestedAlbum->load($this->getAlbumName($i));
+                $nestedAlbum->fields["bgcolor"] = $this->fields["bgcolor"];
+                $nestedAlbum->fields["textcolor"] = $this->fields["textcolor"];
+                $nestedAlbum->fields["linkcolor"] = $this->fields["linkcolor"];
+                $nestedAlbum->fields['background'] = $this->fields['background'];
+                $nestedAlbum->fields["font"] = $this->fields["font"];
+                $nestedAlbum->fields["bordercolor"] = $this->fields["bordercolor"];
+                $nestedAlbum->fields["border"] = $this->fields["border"];
+                $nestedAlbum->fields["thumb_size"] = $this->fields["thumb_size"];
+                $nestedAlbum->fields["thumb_ratio"] = $this->fields["thumb_ratio"];
+                $nestedAlbum->fields["resize_size"] = $this->fields["resize_size"];
+                $nestedAlbum->fields["resize_file_size"] = $this->fields["resize_file_size"];
+                $nestedAlbum->fields["max_size"] = $this->fields["max_size"];
+                $nestedAlbum->fields["max_file_size"] = $this->fields["max_file_size"];
+                $nestedAlbum->fields["returnto"] = $this->fields["returnto"];
+                $nestedAlbum->fields["rows"] = $this->fields["rows"];
+                $nestedAlbum->fields["cols"] = $this->fields["cols"];
+                $nestedAlbum->fields["fit_to_window"] = $this->fields["fit_to_window"];
+                $nestedAlbum->fields["use_fullOnly"] = $this->fields["use_fullOnly"];
+                $nestedAlbum->fields["print_photos"] = $this->fields["print_photos"];
+                $nestedAlbum->fields['slideshow_type']  = $this->fields['slideshow_type'];
+                $nestedAlbum->fields['slideshow_recursive'] = $this->fields['slideshow_recursive'];
+                $nestedAlbum->fields['slideshow_length'] = $this->fields['slideshow_length'];
+                $nestedAlbum->fields['slideshow_loop'] = $this->fields['slideshow_loop'];
+                $nestedAlbum->fields['album_frame']    = $this->fields['album_frame'];
+                $nestedAlbum->fields['thumb_frame']    = $this->fields['thumb_frame'];
+                $nestedAlbum->fields['image_frame']    = $this->fields['image_frame'];
+                $nestedAlbum->fields["nav_thumbs"] = $this->fields["nav_thumbs"];
+                $nestedAlbum->fields["nav_thumbs_style"] = $this->fields["nav_thumbs_style"];
+                $nestedAlbum->fields["nav_thumbs_first_last"] = $this->fields["nav_thumbs_first_last"];
+                $nestedAlbum->fields["nav_thumbs_prev_shown"] = $this->fields["nav_thumbs_prev_shown"];
+                $nestedAlbum->fields["nav_thumbs_next_shown"] = $this->fields["nav_thumbs_next_shown"];
+                $nestedAlbum->fields["nav_thumbs_location"] = $this->fields["nav_thumbs_location"];
+                $nestedAlbum->fields["nav_thumbs_size"] = $this->fields["nav_thumbs_size"];
+                $nestedAlbum->fields["nav_thumbs_current_bonus"] = $this->fields["nav_thumbs_current_bonus"];
+                $nestedAlbum->fields["use_exif"] = $this->fields["use_exif"];
+                $nestedAlbum->fields["display_clicks"] = $this->fields["display_clicks"];
+                $nestedAlbum->fields["item_owner_display"] = $this->fields["item_owner_display"];
+                $nestedAlbum->fields["item_owner_modify"] = $this->fields["item_owner_modify"];
+                $nestedAlbum->fields["item_owner_delete"] = $this->fields["item_owner_delete"];
+                $nestedAlbum->fields["add_to_beginning"] = $this->fields["add_to_beginning"];
+                $nestedAlbum->fields["showDimensions"] = $this->fields["showDimensions"];
+                $nestedAlbum->fields["ecards"] = $this->fields["ecards"];
+                $nestedAlbum->fields["email_me"] = array();
+                $nestedAlbum->fields["poll_type"] = $this->fields["poll_type"];
+                $nestedAlbum->fields["poll_scale"] = $this->fields["poll_scale"];
+                $nestedAlbum->fields["poll_nv_pairs"] = $this->fields["poll_nv_pairs"];
+                $nestedAlbum->fields["poll_hint"] = $this->fields["poll_hint"];
+                $nestedAlbum->fields["poll_show_results"] = $this->fields["poll_show_results"];
+                $nestedAlbum->fields["poll_num_results"] = $this->fields["poll_num_results"];
+                $nestedAlbum->fields["voter_class"] = $this->fields["voter_class"];
+                $nestedAlbum->fields["extra_fields"] = $this->fields["extra_fields"];
+                $nestedAlbum->save();
+                $nestedAlbum->setNestedProperties();
+            }
+        }
+    }
 
+    function setNestedExtraFields() {
+        for ($i=1; $i <= $this->numPhotos(1); $i++) {
+            if ($this->isAlbum($i)) {
+                $nestedAlbum = new Album();
+                $nestedAlbum->load($this->getAlbumName($i));
+                $nestedAlbum->fields["extra_fields"] = $this->fields["extra_fields"];
+                $nestedAlbum->save();
+                $nestedAlbum->setNestedExtraFields();
+            }
+        }
+    }
+    
+    function setNestedPollProperties() {
+        for ($i=1; $i <= $this->numPhotos(1); $i++) {
+            if ($this->isAlbum($i)) {
+                $nestedAlbum = new Album();
+                $nestedAlbum->load($this->getAlbumName($i));
+                $nestedAlbum->fields["poll_type"]=$this->fields["poll_type"];
+                $nestedAlbum->fields["poll_scale"]=$this->fields["poll_scale"];
+                $nestedAlbum->fields["poll_nv_pairs"]=$this->fields["poll_nv_pairs"];
+                $nestedAlbum->fields["poll_hint"]=$this->fields["poll_hint"];
+                $nestedAlbum->fields["poll_show_results"]=$this->fields["poll_show_results"];
+                $nestedAlbum->fields["poll_num_results"]=$this->fields["poll_num_results"];
+                $nestedAlbum->fields["voter_class"]=$this->fields["voter_class"];
+
+                $nestedAlbum->save();
+                $nestedAlbum->setNestedPollProperties();
+            }
         }
+    }
 
-	function incrementClicks() {
-		if (strcmp($this->fields["display_clicks"], "yes")) {
-			return;
-		}
+    function setNestedPermissions() {
+        for ($i=1; $i <= $this->numPhotos(1); $i++) {
+            if ($this->isAlbum($i)) {
+                $nestedAlbum = new Album();
+                $nestedAlbum->load($this->getAlbumName($i));
 
-		$this->fields["clicks"]++;
-		$resetModDate=0; // don't reset last_mod_date
-	        $this->save(array(), $resetModDate);
-	}
+                $nestedAlbum->fields['owner'] = $this->fields['owner'];
+                $nestedAlbum->fields['perms'] = $this->fields['perms'];
 
-	function getItemClicks($index) {
-		$photo = $this->getPhoto($index);
-		return $photo->getItemClicks();
-	}
+                $nestedAlbum->save();
+                $nestedAlbum->setNestedPermissions();
 
-	function incrementItemClicks($index) {
-		if (strcmp($this->fields["display_clicks"], "yes")) {
-			return;
-		}
+            }
+        }
+    }
 
-		$photo = &$this->getPhoto($index);
-		$photo->incrementItemClicks();
+    function getPerm($permName, $uid) {
+        if (isset($this->fields["perms"][$permName])) {
+            $perm = $this->fields["perms"][$permName];
+        } else {
+            return false;
+        }
 
-		$resetModDate=0; //don't reset last_mod_date
-		$this->save(array(), $resetModDate);
-	}
+        if (isset($perm[$uid])) {
+            return true;
+        }
 
-	function resetItemClicks($index) {
-		$photo = &$this->getPhoto($index);
-		$photo->resetItemClicks();
-	}
+        global $gallery;
 
-	function getExif($index, $forceRefresh=0) {
-		global $gallery;
+        /* If everybody has the perm, then we do too */
+        $everybody = $gallery->userDB->getEverybody();
+        if (isset($perm[$everybody->getUid()])) {
+            return true;
+        }
 
-		if (empty($gallery->app->use_exif)) {
-		    return array();
-		}
-		
-		$dir = $this->getAlbumDir();
-		$photo =& $this->getPhoto($index);
-		list ($status, $exif, $needToSave) = $photo->getExif($dir, $forceRefresh);
-
-		if ($status != 0) {
-		    // An error occurred.
-		    return array("junk1" => "",
-				 "Error" => sprintf(_("Error getting EXIF data. Expected Status 0, got %s."),$status),
-				 "status" => $status);
-		}
-
-		if ($needToSave) {
-		    $resetModDate=0; //don't reset last_mod_date
-		    $this->save(array(), $resetModDate);
-		}
-		
-		return $exif;
-	}
+        /**
+         * If loggedIn has the perm and we're logged in, then
+         * we're ok also.
+         *
+         * phpBB2's anonymous user are also "logged in", but we have to ignore this.
+         */
+        global $GALLERY_EMBEDDED_INSIDE_TYPE;
+
+        $loggedIn = $gallery->userDB->getLoggedIn();
+        if (isset($perm[$loggedIn->getUid()]) && strcmp($gallery->user->getUid(), $everybody->getUid()) &&
+          ! ($GALLERY_EMBEDDED_INSIDE_TYPE == 'phpBB2' && $gallery->user->uid == -1)) {
+            return true;
+        }
 
-	function getLastModificationDate() {
-		global $gallery;
-		$dir = $this->getAlbumDir();
-
-		$time = $this->fields["last_mod_time"];
-
-		// Older albums may not have this field.
-		if (!$time) {
-			$stat = fs_stat("$dir/album.dat");
-			$time = $stat[9];
-		}
 
-		return strftime($gallery->app->dateString,$time);
-	}
+        /**
+         * GEEKLOG MOD
+         * We're also going to check to see if its possible that a
+         * group membership can authenticate us.
+         */
+        if ($GALLERY_EMBEDDED_INSIDE_TYPE == 'GeekLog' && is_array($perm)) {
+            foreach ($perm as $gid => $pbool) {
+                $group = $gallery->userDB->getUserByUid($gid);
+                if ($group->isGroup == 1) {
+                    if (SEC_inGroup(abs($group->uid), $uid)) {
+                        return true;
+                    }
+                }
+            }
+        }
 
-	function setNestedProperties() {
-		for ($i=1; $i <= $this->numPhotos(1); $i++) {
-			if ($this->isAlbum($i)) {
-				$nestedAlbum = new Album();
-				$nestedAlbum->load($this->getAlbumName($i));
-				$nestedAlbum->fields["bgcolor"] = $this->fields["bgcolor"];
-				$nestedAlbum->fields["textcolor"] = $this->fields["textcolor"];
-				$nestedAlbum->fields["linkcolor"] = $this->fields["linkcolor"];
-				$nestedAlbum->fields['background'] = $this->fields['background'];				
-				$nestedAlbum->fields["font"] = $this->fields["font"];
-				$nestedAlbum->fields["bordercolor"] = $this->fields["bordercolor"];
-				$nestedAlbum->fields["border"] = $this->fields["border"];
-				$nestedAlbum->fields["thumb_size"] = $this->fields["thumb_size"];
-				$nestedAlbum->fields["resize_size"] = $this->fields["resize_size"];
-				$nestedAlbum->fields["resize_file_size"] = $this->fields["resize_file_size"];
-				$nestedAlbum->fields["max_size"] = $this->fields["max_size"];
-				$nestedAlbum->fields["max_file_size"] = $this->fields["max_file_size"];				
-				$nestedAlbum->fields["returnto"] = $this->fields["returnto"];
-				$nestedAlbum->fields["rows"] = $this->fields["rows"];
-				$nestedAlbum->fields["cols"] = $this->fields["cols"];
-				$nestedAlbum->fields["fit_to_window"] = $this->fields["fit_to_window"];
-				$nestedAlbum->fields["use_fullOnly"] = $this->fields["use_fullOnly"];
-				$nestedAlbum->fields["print_photos"] = $this->fields["print_photos"];
-				$nestedAlbum->fields['slideshow_type']  = $this->fields['slideshow_type'];
-				$nestedAlbum->fields['slideshow_recursive'] = $this->fields['slideshow_recursive'];
-				$nestedAlbum->fields['slideshow_length'] = $this->fields['slideshow_length'];
-				$nestedAlbum->fields['slideshow_loop'] = $this->fields['slideshow_loop'];
-				$nestedAlbum->fields['album_frame']    = $this->fields['album_frame'];
-				$nestedAlbum->fields['thumb_frame']    = $this->fields['thumb_frame'];
-				$nestedAlbum->fields['image_frame']    = $this->fields['image_frame'];
-				$nestedAlbum->fields["nav_thumbs"] = $this->fields["nav_thumbs"];
-				$nestedAlbum->fields["nav_thumbs_style"] = $this->fields["nav_thumbs_style"];
-				$nestedAlbum->fields["nav_thumbs_first_last"] = $this->fields["nav_thumbs_first_last"];
-				$nestedAlbum->fields["nav_thumbs_prev_shown"] = $this->fields["nav_thumbs_prev_shown"];
-				$nestedAlbum->fields["nav_thumbs_next_shown"] = $this->fields["nav_thumbs_next_shown"];
-				$nestedAlbum->fields["nav_thumbs_location"] = $this->fields["nav_thumbs_location"];
-				$nestedAlbum->fields["nav_thumbs_size"] = $this->fields["nav_thumbs_size"];
-				$nestedAlbum->fields["nav_thumbs_current_bonus"] = $this->fields["nav_thumbs_current_bonus"];
-				$nestedAlbum->fields["use_exif"] = $this->fields["use_exif"];
-				$nestedAlbum->fields["display_clicks"] = $this->fields["display_clicks"];
-				$nestedAlbum->fields["item_owner_display"] = $this->fields["item_owner_display"];
-				$nestedAlbum->fields["item_owner_modify"] = $this->fields["item_owner_modify"];
-				$nestedAlbum->fields["item_owner_delete"] = $this->fields["item_owner_delete"];
-				$nestedAlbum->fields["add_to_beginning"] = $this->fields["add_to_beginning"];
-				$nestedAlbum->fields["showDimensions"] = $this->fields["showDimensions"];
-				$nestedAlbum->fields["ecards"] = $this->fields["ecards"];
-				$nestedAlbum->fields["email_me"] = array(); 
-				$nestedAlbum->fields["poll_type"] = $this->fields["poll_type"];
-				$nestedAlbum->fields["poll_scale"] = $this->fields["poll_scale"];
-				$nestedAlbum->fields["poll_nv_pairs"] = $this->fields["poll_nv_pairs"];
-				$nestedAlbum->fields["poll_hint"] = $this->fields["poll_hint"];
-				$nestedAlbum->fields["poll_show_results"] = $this->fields["poll_show_results"];
-				$nestedAlbum->fields["poll_num_results"] = $this->fields["poll_num_results"];
-				$nestedAlbum->fields["voter_class"] = $this->fields["voter_class"];
-				$nestedAlbum->save();
-				$nestedAlbum->setNestedProperties();
-			}
-		}
-	}
+        return false;
+    }
 
-	function setNestedExtraFields() {
-		for ($i=1; $i <= $this->numPhotos(1); $i++) {
-			if ($this->isAlbum($i)) {
-				$nestedAlbum = new Album();
-				$nestedAlbum->load($this->getAlbumName($i));
-				$nestedAlbum->fields["extra_fields"] = $this->fields["extra_fields"];
-				$nestedAlbum->save();
-				$nestedAlbum->setNestedExtraFields();
-			}
-		}
-	}
-	function setNestedPollProperties() {
-		for ($i=1; $i <= $this->numPhotos(1); $i++) {
-			if ($this->isAlbum($i)) {
-				$nestedAlbum = new Album();
-			       	$nestedAlbum->load($this->getAlbumName($i));
-			       	$nestedAlbum->fields["poll_type"]=$this->fields["poll_type"];
-			       	$nestedAlbum->fields["poll_scale"]=$this->fields["poll_scale"];
-			       	$nestedAlbum->fields["poll_nv_pairs"]=$this->fields["poll_nv_pairs"];
-			       	$nestedAlbum->fields["poll_hint"]=$this->fields["poll_hint"];
-			       	$nestedAlbum->fields["poll_show_results"]=$this->fields["poll_show_results"];
-			       	$nestedAlbum->fields["poll_num_results"]=$this->fields["poll_num_results"];
-			       	$nestedAlbum->fields["voter_class"]=$this->fields["voter_class"];
-
-				$nestedAlbum->save();
-				$nestedAlbum->setNestedPollProperties();
-			}
-		}
-	}
+    function getPermUids($permName) {
+        global $gallery;
 
-	function setNestedPermissions() {
-		for ($i=1; $i <= $this->numPhotos(1); $i++) {
-			if ($this->isAlbum($i)) {
-				$nestedAlbum = new Album();
-			       	$nestedAlbum->load($this->getAlbumName($i));
+        $perms = array();
+        if (!empty($this->fields["perms"][$permName])) {
+            foreach ($this->fields["perms"][$permName] as $uid => $junk) {
+                $tmpUser = $gallery->userDB->getUserByUid($uid);
+                $perms[$uid] = $tmpUser->getUsername();
+            }
+        }
 
-				$nestedAlbum->fields['owner'] = $this->fields['owner'];
-				$nestedAlbum->fields['perms'] = $this->fields['perms'];
+        return $perms;
+    }
 
-				$nestedAlbum->save();
-				$nestedAlbum->setNestedPermissions();
+    function setPerm($permName, $uid, $bool) {
+        if ($bool) {
+            $this->fields["perms"][$permName][$uid] = 1;
+        } elseif (isset($this->fields["perms"][$permName][$uid])) {
+            unset($this->fields["perms"][$permName][$uid]);
+        }
+    }
 
-			}
-		}
-	}
+    // -------------
+    function canRead($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
 
+        // In the default case where there are no permissions for the album,
+        // let everybody see it.
+        if (!isset($this->fields["perms"])) {
+            return 1;
+        }
 
-	function getPerm($permName, $uid) {
-		if (isset($this->fields["perms"][$permName])) {
-			$perm = $this->fields["perms"][$permName];
-		} else {
-			return false;
-		}
-		if (isset($perm[$uid])) {
-			return true;
-		}
-
-		global $gallery;
-
-		/* If everybody has the perm, then we do too */
-		$everybody = $gallery->userDB->getEverybody();
-		if (isset($perm[$everybody->getUid()])) {
-			return true;
-		}
-
-		/*
-		** If loggedIn has the perm and we're logged in, then
-		** we're ok also.
-		**
-		** phpBB2's anonymous user are also "logged in", but we have to ignore this.
-		*/
-		global $GALLERY_EMBEDDED_INSIDE_TYPE;
-
-		$loggedIn = $gallery->userDB->getLoggedIn();
-		if (isset($perm[$loggedIn->getUid()]) && strcmp($gallery->user->getUid(), $everybody->getUid()) &&
-			! ($GALLERY_EMBEDDED_INSIDE_TYPE == 'phpBB2' && $gallery->user->uid == -1)) {
-		        return true;
-		}
-
-
-		/* GEEKLOG MOD
-		** We're also going to check to see if its possible that a
-		** group membership can authenticate us.
-		*/
-		
-		if ($GALLERY_EMBEDDED_INSIDE_TYPE == 'GeekLog' && is_array($perm)) {
-			foreach ($perm as $gid => $pbool) {
-				$group = $gallery->userDB->getUserByUid($gid);
-				if ($group->isGroup == 1) {
-					if (SEC_inGroup(abs($group->uid), $uid)) {
-						return true;
-					}
-				}
-			}
-		}
+        return $this->getPerm("canRead", $uid);
+    }
 
-		return false;
-	}
+    function canReadRecurse($uid) {
+        global $albumDB;
+        if (empty($albumDB)) {
+            $albumDB = new AlbumDB();
+        }
 
-	function getPermUids($permName) {
-	    global $gallery;
-	    
-	    $perms = array();
-	    if (!empty($this->fields["perms"][$permName])) {
-		foreach ($this->fields["perms"][$permName] as $uid => $junk) {
-		    $tmpUser = $gallery->userDB->getUserByUid($uid);
-		    $perms[$uid] = $tmpUser->getUsername();
-		}
-	    }
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        elseif ($this->canRead($uid)) {
+            if ($this->isRoot() || empty($this->fields['parentAlbumName'])) {
+                return true;
+            }
+            $parent = $albumDB->getAlbumByName($this->fields['parentAlbumName'], false);
+            return $parent->canReadRecurse($uid);
+        }
+        else {
+            return false;
+        }
+    }
 
-	    return $perms;
-	}
+    // -------------
+    function canWrite($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canWrite", $uid);
+    }
 
-	function setPerm($permName, $uid, $bool) {
-		if ($bool) {
-			$this->fields["perms"][$permName][$uid] = 1;
-		} elseif (isset($this->fields["perms"][$permName][$uid])) {
-			unset($this->fields["perms"][$permName][$uid]);
-		}
-	}
+    // -------------
+    function canDelete($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canDelete", $uid);
+    }
 
-	// ------------- 
-	function canRead($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-
-		// In the default case where there are no permissions for the album,
-		// let everybody see it.
-		if (!isset($this->fields["perms"])) {
-			return 1;			
-		}
+    // -------------
+    function canDeleteFrom($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canDeleteFrom", $uid);
+    }
 
-		return $this->getPerm("canRead", $uid);
-	}
+    // -------------
+    function canAddTo($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canAddTo", $uid);
+    }
 
-	function canReadRecurse($uid) {
-		global $albumDB;
-		if (empty($albumDB)) {
-			$albumDB = new AlbumDB();
-		}
-
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		elseif ($this->canRead($uid)) {
-			if ($this->isRoot() || empty($this->fields['parentAlbumName'])) {
-				return true;
-			}
-			$parent = $albumDB->getAlbumByName($this->fields['parentAlbumName'], false);
-			return $parent->canReadRecurse($uid);
-		}
-		else {
-			return false;
-		}
-	}
+    // -------------
+    function canChangeText($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canChangeText", $uid);
+    }
 
-	function setRead($uid, $bool) {
-		$this->setPerm("canRead", $uid, $bool);
-	}
+    // -------------
+    function canCreateSubAlbum($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canCreateSubAlbum", $uid);
+    }
 
-	// ------------- 
-	function canWrite($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canWrite", $uid);
-	}
+    // -------------
+    function canViewFullImages($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canViewFullImages", $uid);
+    }
 
-	function setWrite($uid, $bool) {
-		$this->setPerm("canWrite", $uid, $bool);
-	}
+    // -------------
+    function canAddComments($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canAddComments", $uid);
+    }
 
-	// ------------- 
-	function canDelete($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canDelete", $uid);
-	}
+    // -------------
+    function canViewComments($uid) {
+        if ($this->isOwner($uid)) {
+            return true;
+        }
+        return $this->getPerm("canViewComments", $uid);
+    }
 
-	function setDelete($uid, $bool) {
-		$this->setPerm("canDelete", $uid, $bool);
-	}
+    // -------------
+    function isOwner($uid) {
+    	global $gallery;
+       
+    	if($uid == $this->fields["owner"]) {
+    		return true;
+    	}
+    	
+    	$everybody = $gallery->userDB->getEverybody();
+    	$everybodyUid = $everybody->getUid();
+    	if($this->fields["owner"] == $everybodyUid) {
+    		return true;
+    	}
+    	
+    	return false;
+    }
+
+    function setOwner($uid) {
+        $this->fields["owner"] = $uid;
+    }
+
+    function getOwner() {
+        global $gallery;
+        return $gallery->userDB->getUserByUid($this->fields["owner"]);
+    }
+    
+    function getExtraFields($all = true) {
+        if ($all) {
+            return $this->fields["extra_fields"];
+        } else {
+            $return = array();
+            foreach($this->fields["extra_fields"] as $value) {
+                if ($value != 'AltText') {
+                    $return[]=$value;
+                }
+            }
+            return $return;
+        }
+    }
 
-	// ------------- 
-	function canDeleteFrom($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canDeleteFrom", $uid);
-	}
+    function setExtraFields($extra_fields) {
+        $this->fields["extra_fields"] = $extra_fields;
+    }
+
+    /**
+     * Returns the values of an extrafield from a photo.
+     * @param   $index		integer	albumitemIndex
+     * @param   $field		string	fieldname
+     * @return	$fieldvalue	string
+     */
+    function getExtraField($index, $field) {
+       $photo = $this->getPhoto($index);
+	   $fieldvalue = $photo->getExtraField($field);
+	   return $fieldvalue;
+    }
+
+    function setExtraField($index, $field, $value) {
+        $photo = &$this->getPhoto($index);
+        $photo->setExtraField($field, $value);
+    }
+
+    function getItemOwnerById($id) {
+        return $this->getItemOwner($this->getPhotoIndex($id));
+    }
+
+    function setItemOwnerById($id, $owner) {
+        $index = $this->getPhotoIndex($id);
+        $this->setItemOwner($index, $owner);
+    }
+
+    function getItemOwnerDisplay() {
+        if (isset($this->fields["item_owner_display"])) {
+            if (strcmp($this->fields["item_owner_display"], "yes")) {
+                return false;
+            }
+        }
+        return true;
+    }
 
-	function setDeleteFrom($uid, $bool) {
-		$this->setPerm("canDeleteFrom", $uid, $bool);
-	}
+    function getItemOwnerModify() {
+    	if (isset($this->fields["item_owner_modify"]) &&
+    	  $this->fields["item_owner_modify"] == 'yes') {
+    		return true;
+    	}
+    	else {
+    		return false;
+    	}
+    }
+
+    function getItemOwnerDelete() {
+    	if (isset($this->fields["item_owner_delete"]) &&
+    	  $this->fields["item_owner_delete"] == 'yes') {
+    		return true;
+    	}
+    	else {
+    		return false;
+    	}
+    }
+
+    function getAddToBeginning() {
+        if (isset($this->fields["add_to_beginning"])) {
+            if ($this->fields["add_to_beginning"] === "yes") {
+                return true;
+            }
+        }
+        return false;
+    }
 
-	// ------------- 
-	function canAddTo($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canAddTo", $uid);
-	}
+    function getCaptionName($index) {
+        global $gallery;
+        if (!$this->getItemOwnerDisplay()) {
+            return '';
+        }
+        $nobody = $gallery->userDB->getNobody();
+        $nobodyUid = $nobody->getUid();
+        $everybody = $gallery->userDB->getEverybody();
+        $everybodyUid = $everybody->getUid();
 
-	function setAddTo($uid, $bool) {
-		$this->setPerm("canAddTo", $uid, $bool);
-	}
+        $user = $gallery->userDB->getUserByUid($this->getItemOwner($index));
 
-	// ------------- 
-	function canChangeText($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canChangeText", $uid);
-	}
+        if ( !$user) {
+            return '';
+        }
+        if ( !strcmp($user->getUid(), $nobodyUid) || !strcmp($user->getUid(), $everybodyUid) ) {
+            return '';
+        }
 
-	function setChangeText($uid, $bool) {
-		$this->setPerm("canChangeText", $uid, $bool);
-	}
+        $fullName = $user->getFullname();
+        if (empty($fullName)) {
+            return ' - '. $user->getUsername();
+        } else {
+            return ' - '. $user->getFullname() .' ('. $user->getUsername() .')';
+        }
+    }
 
-	// ------------- 
-	function canCreateSubAlbum($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canCreateSubAlbum", $uid);
-	}
+    /**
+     * Voting type can either be Rank (first, second, third) or critique
+     * (1 point, 2 point 3 point).  The difference is with rank there
+     * can be only one of each point value.
+     */
+    function getPollType() {
+        if (!isset($this->fields["poll_type"]) || $this->fields["poll_type"] == "")
+        {
+            return "critique";
+        }
+        return $this->fields["poll_type"];
+    }
 
-	function setCreateSubAlbum($uid, $bool) {
-		$this->setPerm("canCreateSubAlbum", $uid, $bool);
-	}
+    function getVoterClass() {
+        if (isset($this->fields["voter_class"])) {
+            return $this->fields["voter_class"];
+        }
+        return "Nobody";
+    }
 
-	// ------------- 
-	function canViewFullImages($uid) {
-		if ($this->isOwner($uid)) {
-			return true;
-		}
-		return $this->getPerm("canViewFullImages", $uid);
-	}
+    function getPollScale() {
+        if (isset($this->fields["poll_scale"])) {
+            return $this->fields["poll_scale"];
+        }
+        return 0;
+    }
 
-	function setViewFullImages($uid, $bool) {
-		$this->setPerm("canViewFullImages", $uid, $bool);
-	}
+    function getPollNumResults(){
+        if (isset($this->fields["poll_num_results"])) {
+            return $this->fields["poll_num_results"];
+        }
+        return 3;
+    }
 
-	// ------------- 
-        function canAddComments($uid) {
-                if ($this->isOwner($uid)) {
-                        return true;
-		}
-                return $this->getPerm("canAddComments", $uid);
+    function getPollShowResults() {
+        if (isset($this->fields["poll_show_results"])) {
+            if (strcmp($this->fields["poll_show_results"], "no"))
+            {
+                return true;
+            }
         }
+        return false;
+    }
 
-        function setAddComments($uid, $bool) {
-		$this->setPerm("canAddComments", $uid, $bool);
+    function getPollHorizontal() {
+        if (isset($this->fields["poll_orientation"])) {
+            if (!strcmp($this->fields["poll_orientation"], "horizontal"))
+            {
+                return true;
+            }
         }
+        return false;
+    }
 
-        // -------------
-        function canViewComments($uid) {
-                if ($this->isOwner($uid)) {
-                        return true;
-                }
-                return $this->getPerm("canViewComments", $uid);
+    function getVoteNVPairs() {
+        global $gallery;
+        $nv_pairs=$this->fields["poll_nv_pairs"];
+        if ($nv_pairs == null) {
+            $nv_pairs == array();
+            if ($this->getPollScale() == 1) {
+                $nv_pairs[0]["name"] = '';
+                $nv_pairs[0]["value"] = '1';
+            }
+        }
+        for ($i = sizeof($nv_pairs); $i<$this->getPollScale() ; $i++) {
+            if ($this->getPollType() == "rank") {
+                $nv_pairs[$i]["name"]=sprintf(_("#%d"),($i));
+                $nv_pairs[$i]["value"]=$this->getPollScale()-$i+1;
+            }
+            else {
+                $nv_pairs[$i]["name"]=$i;
+                $nv_pairs[$i]["value"]=$i;
+            }
         }
+        return $nv_pairs;
+    }
 
-        function setViewComments($uid, $bool) {
-		$this->setPerm("canViewComments", $uid, $bool);
+    function getPollHint() {
+        global $gallery;
+        $hint = $this->fields["poll_hint"];
+        if (is_string($hint)) {
+            return $hint;
+        }
+        if ($this->getPollScale() == 1 && $this->getPollType() != "rank") {
+            return "I like this";
+        }
+        else if ($this->getPollType() == "rank") {
+            return "Vote for this";
+        }
+        else {
+            return "Do you like this? (1=love it)";
         }
+    }
+    
+    /* Returns true if votes can be moved with images between $this and $album */
+    function pollsCompatible($album) {
+        if ($this->fields["poll_type"] != "critique") {
+            return false;
+        }
+        if (isset($album->fields["poll_type"]) && ($album->fields["poll_type"] != "critique")) {
+            return false;
+        }
+        if ($this->fields["poll_scale"] != $album->fields["poll_scale"]) {
+            return false;
+        }
+        for ($i = 0; $i<$this->fields["poll_scale"]; $i++ ) {
+            if ($this->fields["poll_nv_pairs"][$i]["value"] !=
+              $album->fields["poll_nv_pairs"][$i]["value"] ) {
+                return false;
+            }
+        }
+        return true;
+    }
 
-	// ------------- 
-	function isOwner($uid) {
-		return (!strcmp($uid, $this->fields["owner"]));
-	}
+    function getIndexByVotingId($vote_id) {
+        global $gallery;
+        if (ereg("^item\.(.*)$", $vote_id, $matches)) {
+            $index = $this->getPhotoIndex($matches[1]);
+        } else if (ereg("^album\.(.*)$", $vote_id, $matches)) {
+            $index = $this->getAlbumIndex($matches[1]);
+            if ($index > 0) {
+                $myAlbum = new Album();
+                $myAlbum->load($matches[1]);
+                if (!$gallery->user->canReadAlbum($myAlbum)) {
+                    $index=-1;
+                }
+            }
+        } else {
+            $index=-1;
+        }
+        if ($index > 0 && $this->isHidden($index) &&
+          !$gallery->user->isAdmin() &&
+          !$gallery->user->isOwnerOfAlbum($this)) {
+            $index = -1;
+        }
+        return $index;
+    }
 
-	function setOwner($uid) {
-		$this->fields["owner"] = $uid;
-	}
+    function getVotingIdByIndex($index) {
+        $albumName = $this->getAlbumName($index);
+        if ($albumName) {
+            $vote_id = "album.$albumName";
+        } else {
+            $vote_id = "item.".$this->getPhotoId($index);
+        }
+        return $vote_id;
+    }
 
-	function getOwner() {
-		global $gallery;
-		return $gallery->userDB->getUserByUid($this->fields["owner"]);
-	}
-	function getExtraFields($all=true) {
-		if ($all) {
-			return $this->fields["extra_fields"];
-		} else {
-			$return = array();
-			foreach($this->fields["extra_fields"] as $value) {
-				if ($value != 'AltText') {
-					$return[]=$value;
-				}
-			}
-			return $return;
-		}
-	}
+    function getSubAlbum($index) {
+        $myAlbum = new Album();
+        $myAlbum->load($this->getAlbumName($index));
+        return $myAlbum;
+    }
+
+    function getSubAlbums() {
+        $subAlbums = array();
+        $index = 0;
+        foreach ($this->photos as $photo) {
+            $index++;
+            if ($photo->isAlbum()) {
+                $subAlbum = new Album();
+                $subAlbum->load($this->getAlbumName($index));
+                array_push($subAlbums, $subAlbum);
+            }
+        }
+        return ($subAlbums);
+    }
 
-	function setExtraFields($extra_fields) {
-		$this->fields["extra_fields"] = $extra_fields;
-	}
+    //values for type "comment" and "other"
+    function getEmailMe($type, $user, $id=null) {
+        $uid = $user->getUid();
+        if ($id) {
+            $index = $this->getPhotoIndex($id);
+            $photo = $this->getPhoto($index);
+        }
+        if ( (isset($this->fields['email_me'][$type]) &&
+        isset($this->fields['email_me'][$type][$uid])) ||
+        (isset ($photo) && $photo->getEmailMe($type, $user))) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 
-	function getExtraField($index, $field) {
-		$photo = $this->getPhoto($index);
-		return $photo->getExtraField($field);
-	}
+    /**
+     * Returns a list of emails of all people who wants to be informed.
+     * @param	string	$type	The type of action the user wants to be informed on
+     * @param 	integer	$id		Optional id, this is for testing on an album item.
+     * @return	string	$emails
+     */
+    function getEmailMeList($type, $id = null) {
+        global $gallery;
+        $emails = array();
+        $uids = array();
+
+        /* First check if someone assigned to "type" for this album */
+        if (isset($this->fields['email_me'][$type])) {
+            $uids = array_keys($this->fields['email_me'][$type]);
+        }
 
-	function setExtraField($index, $field, $value)
-	{
-		$photo = &$this->getPhoto($index);
-		$photo->setExtraField($field, $value);
-	}
-	function getItemOwnerById($id) 
-	{ 
-		return $this->getItemOwner($this->getPhotoIndex($id)); 
-	}
+        /** Then check wether THE admin wants to be informed (set in config)
+         * Someone may have remove this user, then this setting in config is senseless.
+         */
+        $admin = $gallery->userDB->getUserByUsername('admin');
+        if ($admin) {
+            if ($type == 'comments' && $gallery->app->adminCommentsEmail == 'yes') {
+                $uids[] = $admin->getUid();
+            } else if ($type == 'other' && $gallery->app->adminOtherChangesEmail == 'yes') {
+                $uids[] = $admin->getUid();
+            }
+        }
 
-	function setItemOwnerById($id, $owner) {
-		$index=$this->getPhotoIndex($id);
-		$this->setItemOwner($index, $owner);
-	}
-	function getItemOwnerDisplay() {
-		if (isset($this->fields["item_owner_display"])) {
-			if (strcmp($this->fields["item_owner_display"], "yes"))
-			{
-				return false;
-			}
-		}
-		return true;
-	}
-	function getItemOwnerModify() {
-		if (isset($this->fields["item_owner_modify"])) {
-			if (strcmp($this->fields["item_owner_modify"], "yes"))
-			{
-				return false;
-			}
-		}
-		return true;
-	}
-	function getItemOwnerDelete() {
-		if (isset($this->fields["item_owner_delete"])) {
-			if (strcmp($this->fields["item_owner_delete"], "yes"))
-			{
-				return false;
-			}
-		}
-		return true;
-	}
-	function getAddToBeginning() {
-		if (isset($this->fields["add_to_beginning"])) {
-			if ($this->fields["add_to_beginning"] === "yes")
-			{
-				return true;
-			}
-		}
-		return false;
-	}
-	function getCaptionName($index) {
-                global $gallery;
-		if (!$this->getItemOwnerDisplay()) {
-			return "";
-		}
-		$nobody = $gallery->userDB->getNobody();
-		$nobodyUid = $nobody->getUid();
-		$everybody = $gallery->userDB->getEverybody();
-		$everybodyUid = $everybody->getUid();
-
-                $user = $gallery->userDB->getUserByUid($this->getItemOwner($index));
-
-		if ( !$user) {
-			return "";
-		}
-		if ( !strcmp($user->getUid(), $nobodyUid) || !strcmp($user->getUid(), $everybodyUid) ) {
-			return "";
-		}
-
-		$fullName = $user->getFullname();	
-		if (empty($fullName)) {
-			return ' - '. $user->getUsername();
-		} else {
-			return ' - '. $user->getFullname() .' ('. $user->getUsername() .')';
-		}
+        /* We are checking on a photo, get those emails */
+        if ($id) {
+            $index = $this->getPhotoIndex($id);
+            $photo = $this->getPhoto($index);
+            if ($photo) {
+                $uids = array_merge($uids, $photo->getEmailMeListUid($type));
+            }
         }
 
+        foreach ($uids as $uid) {
+            $user = $gallery->userDB->getUserByUid($uid);
+            if ($user->isPseudo()) {
+                continue;
+            }
+
+            if (check_email($user->getEmail())) {
+                $emails[] = $user->getEmail();
+            } else if (isDebugging()) {
+                echo gallery_error( sprintf(_("Email problem: skipping %s (UID %s) because email address %s is not valid."),
+                $user->getUsername(), $uid, $user->getEmail()));
+            }
+        }
+        return array_unique($emails);
+    }
 
-       /*
-        * Voting type can either be Rank (first, second, third) or critique
-        * (1 point, 2 point 3 point).  The difference is with rank there
-        * can be only one of each point value.
-        */
-        function getPollType() {
-		if (!isset($this->fields["poll_type"]) || $this->fields["poll_type"] == "")
-		{
-			return "critique";
-		}
-		return $this->fields["poll_type"];
-	}
-	function getVoterClass() {
-		if (isset($this->fields["voter_class"])) {
-			return $this->fields["voter_class"];
-		}
-		return "Nobody";
-	}
+    function setEmailMe($type, $user, $id=null) {
+        $uid=$user->getUid();
+        if ($this->getEmailMe($type, $user, $id)) {
+            // already set
+            return;
+        } else if ($id) {
+            $index = $this->getPhotoIndex($id);
+            $photo = &$this->getPhoto($index);
+            $photo->setEmailMe($type, $user);
+        } else {
+            $this->fields['email_me'][$type][$uid]=true;
+        }
+        $this->save(array(), false);
+    }
 
-       function getPollScale() {
-               if (isset($this->fields["poll_scale"])) {
-                       return $this->fields["poll_scale"];
-               }
-               return 0;
-       }
-	function getPollNumResults(){
-		if (isset($this->fields["poll_num_results"])) {
-			return $this->fields["poll_num_results"];
-		}
-		return 3;
-	}
-	function getPollShowResults() {
-		if (isset($this->fields["poll_show_results"])) {
-			if (strcmp($this->fields["poll_show_results"], "no"))
-			{
-				return true;
-			}
-		}
-		return false;
-	}
-	function getPollHorizontal() {
-		if (isset($this->fields["poll_orientation"])) {
-			if (!strcmp($this->fields["poll_orientation"], "horizontal"))
-			{
-				return true;
-			}
-		}
-		return false;
-	}
-	function getVoteNVPairs()
-	{
-		global $gallery;
-		$nv_pairs=$this->fields["poll_nv_pairs"];
-		if ($nv_pairs == null)
-		{
-			$nv_pairs == array();
-			if ($this->getPollScale() == 1)
-			{
-				$nv_pairs[0]["name"]="";
-				$nv_pairs[0]["value"]="1";
-			}
-		}
-		for ($i = sizeof($nv_pairs); $i<$this->getPollScale() ; $i++)
-		{
-			if ($this->getPollType() == "rank")
-			{
-				$nv_pairs[$i]["name"]=sprintf(_("#%d"),($i));
-				$nv_pairs[$i]["value"]=$this->getPollScale()-$i+1;
-			}
-			else
-			{
-				$nv_pairs[$i]["name"]=$i;
-				$nv_pairs[$i]["value"]=$i;
-			}
-		}
-		return $nv_pairs;
-	}
-	function getPollHint()
-	{
-		global $gallery;
-		$hint=$this->fields["poll_hint"];
-		if (is_string($hint))
-			return $hint;
-		if ($this->getPollScale() == 1 && $this->getPollType() != "rank")
-			return "I like this";
-		else if ($this->getPollType() == "rank")
-			return "Vote for this";
-		else
-			return "Do you like this? (1=love it)";
-	}
-	/* Returns true if votes can be moved with images between $this and 
-	   $album
-	 */
-	function pollsCompatible($album) 
-	{
-		if ($this->fields["poll_type"] != "critique") {
-			return false;
-		}
-		if (isset($album->fields["poll_type"]) && ($album->fields["poll_type"] != "critique")) {
-			return false;
-		}
-		if ($this->fields["poll_scale"] != $album->fields["poll_scale"]) {
-			return false;
-		}
-		for ($i = 0; $i<$this->fields["poll_scale"]; $i++ ) {
-			if ($this->fields["poll_nv_pairs"][$i]["value"] !=
-				$album->fields["poll_nv_pairs"][$i]["value"] )
-			{
-				return false;
-			}
-		}
-		return true;
+    function unsetEmailMe($type, $user, $id=null) {
+        $uid=$user->getUid();
+        if (!$this->getEmailMe($type, $user, $id)) {
+            // not set
+            return;
+        } else if ($id) {
+            $index = $this->getPhotoIndex($id);
+            $photo = &$this->getPhoto($index);
+            $photo->unsetEmailMe($type, $user);
+        } else {
+            unset($this->fields['email_me'][$type][$uid]);
+        }
+        $this->save(array(), false);
+    }
 
-	}
+    /**
+     * This functions returns an array that contains the absolute pathes to albumItems.
+     * subalbums are in subarrays
+     */
+    function getAlbumItemNames($user = NULL, $full = false, $visibleOnly = false, $recursive = false) {
+        $albumItemNames = array();
 
-	function getIndexByVotingId($vote_id) {
-		global $gallery;
-		if (ereg("^item\.(.*)$", $vote_id, $matches)) {
-			$index=$this->getPhotoIndex($matches[1]);
-		} else if (ereg("^album\.(.*)$", $vote_id, $matches)) {
-			$index=$this->getAlbumIndex($matches[1]);
-			if ($index > 0) {
-				$myAlbum = new Album();
-				$myAlbum->load($matches[1]);
-				if (!$gallery->user->canReadAlbum($myAlbum)) {
-					$index=-1;
-				}
-			}
-		} else {
-			$index=-1;
-		}
-		if ($index > 0 && $this->isHidden($index) &&
-				!$gallery->user->isAdmin() && 
-				!$gallery->user->isOwnerOfAlbum($this)) {
-			$index=-1;
-
-		}
-		return $index;
-																			 
-	}
-	function getVotingIdByIndex($index) {
-		$albumName = $this->getAlbumName($index);
-		if ($albumName) {
-			$vote_id = "album.$albumName";
-		} else {
-			$vote_id = "item.".$this->getPhotoId($index);
-		}
-		return $vote_id;
-	}
+        if(empty($user)) {
+            return $albumItemNames;
+        }
 
-	function getSubAlbum($index) {
-		$myAlbum = new Album();
-		$myAlbum->load($this->getAlbumName($index));
-		return $myAlbum;
-	}
+        $uuid = $user->getUid();
 
-	function getSubAlbums() {
-		$subAlbums = array();
-		$index = 0;
-		foreach ($this->photos as $photo) {
-			$index++;
-			if ($photo->isAlbum()) {
-				$subAlbum = new Album();
-				$subAlbum->load($this->getAlbumName($index));
-				array_push($subAlbums, $subAlbum);
-			}
-		}
-		return ($subAlbums);
-	}
+        $canWrite = $user->canWriteToAlbum($this);
+        $numItems = $numItemsTotal = $this->numPhotos(1);
 
-	//values for type "comment" and "other"
-	function getEmailMe($type, $user, $id=null) {
-		$uid = $user->getUid();
-	       	if ($id) {
-		       	$index = $this->getPhotoIndex($id);
-		       	$photo = $this->getPhoto($index);
-		}
-		if ( (isset($this->fields['email_me'][$type]) && 
-			isset($this->fields['email_me'][$type][$uid])) ||
-		     (isset ($photo) && $photo->getEmailMe($type, $user))) {
-		       	return true;
-	       	} else {
-			return false;
-		}
-	}
+        for ($itemNr = 1; $itemNr <= $numItems; $itemNr++) {
+            $item = $this->getPhoto($itemNr);
+            if ($item->isAlbum() && $recursive) {
+                $subalbumName = $item->getAlbumName();
+                $subalbum = new Album();
+                /* Always load complete subalbum recursive */
+                $subalbum->load($item->getAlbumName(), true);
+                $albumItemNames[$subalbumName] = $subalbum->getAlbumItemNames($user, $full, $visibleOnly, $recursive);
+/*
+                if (($user->canReadAlbum($subalbum) && !$item->isHidden()) || $user->canWriteToAlbum($subalbum)) {
+                    if(!$recursive) {
+                        $numAlbums++;
+                    }
+                    else {
+                        list($subNumItems, $subNumAlbums, $subNumPhotos) =  $subalbum->numItems($user, $recursive);
+                        $numItemsTotal  += $subNumItems;
+                        $numAlbums++;
+                        $numAlbums += $subNumAlbums;
+                        $numPhotos += $subNumPhotos;
+                    }
+                }
+*/
+            } elseif ($canWrite || !$item->isHidden() || $this->isItemOwner($uuid, $itemNr)) {
+                $albumItemNames[] = $this->getAbsolutePhotoPath($itemNr, $full);
+            }
+        }
+        return $albumItemNames;
+    }
+    
+    /**
+     *
+    */
+    function getAlbumSize($user = NULL, $full = false, $visibleOnly = false, $recursive = false) {
+        
+        $albumSize = 0;
+        $albumItemNames = $this->getAlbumItemNames($user, $full, $visibleOnly, $recursive);
+        $justPureFileNames  = array_flaten($albumItemNames);
+        
+        foreach ($justPureFileNames as $absoluteFileName) {
+            $albumSize += fs_filesize($absoluteFileName);
+        }
+                    
+        return $albumSize;
+    }        
+
+    /**
+     * Adds an imagearea to an album item
+     * @param	$index	integer	albumitem index
+     * @param	$area	string	area coordinates.
+     * @author	Jens Tkotz <jens@peino.de>
+    */
+    function addImageArea($index, $area) {
+        $photo = &$this->getPhoto($index);
+        if(!isset($photo->imageAreas)) {
+            $photo->imageAreas = array();
+        }
+        $photo->imageAreas[] = $area;
+    }
 
-	/**
-	 * Returns a list of emails of all people who wants to be informed.
-	 * @param	string	$type	The type of action the user wants to be informed on
-	 * @param 	integer	$id		Optional id, this is for testing on an album item.
-	 * @return	string	$emails
-	 */
-	function getEmailMeList($type, $id = null) {
-		global $gallery;
-		$emails = array();
-		$uids = array();
-
-		/* First check if someone assigned to "type" for this album */
-		if (isset($this->fields['email_me'][$type])) {
-			$uids = array_keys($this->fields['email_me'][$type]);
-		}
-		
-		/* Then check wether THE admin wants to be informed (set in config)
-		 * Someone may have remove this user, then this setting in config is senseless. 
-		 */
-		$admin = $gallery->userDB->getUserByUsername('admin');
-		if ($admin) {
-			if ($type == 'comments' && $gallery->app->adminCommentsEmail == 'yes') {
-				$uids[] = $admin->getUid();
-			} else if ($type == 'other' && $gallery->app->adminOtherChangesEmail == 'yes') {
-				$uids[] = $admin->getUid();
-			}
-		}
-		
-		/* We are checking on a photo, get those emails */
-		if ($id) {
-			$index = $this->getPhotoIndex($id);
-			$photo = $this->getPhoto($index);
-			if ($photo) {
-				$uids = array_merge($uids, $photo->getEmailMeListUid($type));
-			}
-		}
-		
-		foreach ($uids as $uid) {
-			$user = $gallery->userDB->getUserByUid($uid);
-			if ($user->isPseudo()) {
-				continue;
-			}
-			
-			if (check_email($user->getEmail())) {
-				$emails[] = $user->getEmail();
-			} else if (isDebugging()) {
-				echo gallery_error( sprintf(_("Email problem: skipping %s (UID %s) because email address %s is not valid."),
-					$user->getUsername(), $uid, $user->getEmail()));
-			}
-		}
-		return array_unique($emails);
-	}
-	
-	function setEmailMe($type, $user, $id=null) {
-		$uid=$user->getUid();
-	       	if ($this->getEmailMe($type, $user, $id)) {
-			// already set
-			return;
-		} else if ($id) {
-		       	$index = $this->getPhotoIndex($id);
-		       	$photo = &$this->getPhoto($index);
-			$photo->setEmailMe($type, $user);
-		} else {
-		       	$this->fields['email_me'][$type][$uid]=true;
-		}
-		$this->save(array(), false);
-	}
-	function unsetEmailMe($type, $user, $id=null) {
-		$uid=$user->getUid();
-	       	if (!$this->getEmailMe($type, $user, $id)) {
-			// not set
-			return;
-		} else if ($id) {
-		       	$index = $this->getPhotoIndex($id);
-		       	$photo = &$this->getPhoto($index);
-			$photo->unsetEmailMe($type, $user);
-		} else {
-		       	unset($this->fields['email_me'][$type][$uid]);
-		}
-		$this->save(array(), false);
-	}
+    /**
+     * Returns all imageareas of an album item
+     * @param	$index	integer	albumitem index
+     * @return	$areas	array	array of imageareas
+     * @author	Jens Tkotz <jens@peino.de>
+    */
+    function getAllImageAreas($index) {
+        $photo = $this->getPhoto($index);
+        if(!isset($photo->imageAreas)) {
+            $photo->imageAreas = array();
+        }
+        $areas = $photo->imageAreas;
+        return $areas;
+    }
+
+    /**
+     * Deletes an imagearea of an album item
+     * @param	$photo_index	integer	albumitem index
+     * @param	$arean_index	integer	area index
+     * @author	Jens Tkotz <jens@peino.de>
+    */
+    function deleteImageArea($photo_index, $area_index) {
+        $photo = &$this->getPhoto($photo_index);
+        for($i = $area_index; $i<sizeof($photo->imageAreas)-1; $i++) {
+	    $photo->imageAreas[$i] = $photo->imageAreas[$i+1];
+	}
+	array_pop($photo->imageAreas);
+    }
+
+    /**
+     * Updates an imagearea of an album item
+     * @param	$photo_index  integer	albumitem index
+     * @param	$area_index	  integer	area index
+     * @param	$area_data	  array     updated array data
+     * @author	Jens Tkotz <jens@peino.de>
+    */
+    function updateImageArea($photo_index, $area_index, $area_data) {
+        $photo = &$this->getPhoto($photo_index);
+        foreach ($area_data as $key => $value) {
+            $photo->imageAreas[$area_index][$key] = $value;
+        }
+    }
 }
 ?>
diff -Naur gallery-1.5.1/classes/Comment.php gallery-1.5.2/classes/Comment.php
--- gallery-1.5.1/classes/Comment.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/Comment.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Comment.php,v 1.18.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: Comment.php,v 1.20.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
@@ -53,13 +53,16 @@
 
 	function getName() {
 		global$gallery;
-		$name="";
-		if  ($gallery->app->comments_anonymous == "no") {
-			$name=user_name_string($this->UID, 
-					$gallery->app->comments_display_name);
+		
+		$name = '';
+		$user = $gallery->userDB->getUserByUid($this->UID);
+		
+		if  ($gallery->app->comments_anonymous == 'no') {
+		    $name = $user->printableName($gallery->app->comments_display_name);
 		}
+		
 		if (!$name) {
-			$name=$this->name;
+			$name = $this->name;
 		}
 		return $name;
 	}
diff -Naur gallery-1.5.1/classes/database/mysql/Database.php gallery-1.5.2/classes/database/mysql/Database.php
--- gallery-1.5.1/classes/database/mysql/Database.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/database/mysql/Database.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Database.php,v 1.10.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: Database.php,v 1.11.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/Database.php gallery-1.5.2/classes/Database.php
--- gallery-1.5.1/classes/Database.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/Database.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Database.php,v 1.9.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: Database.php,v 1.10.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/EverybodyUser.php gallery-1.5.2/classes/EverybodyUser.php
--- gallery-1.5.1/classes/EverybodyUser.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/EverybodyUser.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: EverybodyUser.php,v 1.12.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: EverybodyUser.php,v 1.13.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/gallery/UserDB.php gallery-1.5.2/classes/gallery/UserDB.php
--- gallery-1.5.1/classes/gallery/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/gallery/UserDB.php	2006-01-18 19:06:03.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: UserDB.php,v 1.37.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: UserDB.php,v 1.38.2.2 2006/01/18 18:06:03 jenst Exp $
  */
 ?>
 <?php
@@ -274,22 +274,26 @@
 		return $uidList;
 	}
 
-	function validNewUsername($username) {
+	function validNewUserName($username) {
+
+		if (strlen($username) == 0) {
+			return _("Please enter a username.");
+		}
 
 		if (strlen($username) < 2) {
-			return sprintf(_("Illegal username %s: must at least 2 characters"),
-					"<i>" . $username . "</i>");
+			return sprintf(_("Username '%s' is to short. Must be at least 2 characters."),
+					"<i>". htmlentities ($username) ."</i>");
 		}
 
 		if (strlen($username) > 15) {
-			return sprintf(_("Illegal username %s: must at most 15 characters"),
-					"<i>" . $username . "</i>");
+			return sprintf(_("Username '%s' too long. Must be at most 15 characters."),
+					"<i>". htmlentities($username) ."</i>");
 		}
 
 		if (ereg("[^[:alnum:]]", $username)) {
 
-			return sprintf(_("Illegal username %s: must contain only letters or digits"),
-					"<i>" . $username . "</i>");
+			return sprintf(_("Illegal username '%s'. Only letters and digits allowed."),
+					"<i>". htmlentities($username) ."</i>");
 		}
 
 		if (!strcmp($username, $this->nobody->getUsername()) ||
diff -Naur gallery-1.5.1/classes/gallery/User.php gallery-1.5.2/classes/gallery/User.php
--- gallery-1.5.1/classes/gallery/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/gallery/User.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: User.php,v 1.22.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: User.php,v 1.23.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/geeklog/UserDB.php gallery-1.5.2/classes/geeklog/UserDB.php
--- gallery-1.5.1/classes/geeklog/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/geeklog/UserDB.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
diff -Naur gallery-1.5.1/classes/geeklog/User.php gallery-1.5.2/classes/geeklog/User.php
--- gallery-1.5.1/classes/geeklog/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/geeklog/User.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
diff -Naur gallery-1.5.1/classes/HTML/table.php gallery-1.5.2/classes/HTML/table.php
--- gallery-1.5.1/classes/HTML/table.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/HTML/table.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: table.php,v 1.4.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: table.php,v 1.6.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
@@ -116,7 +116,7 @@
 			$buf .= " $attr=\"$value\"";
 		    }
 		}
-		$buf .= '>'. $element['content'] ."</td>";
+		$buf .= '>'. $element['content'] .'</td>';
 		
 		if(isset($element['cellArgs']['colspan'])) {
 		    $i += $element['cellArgs']['colspan'];
diff -Naur gallery-1.5.1/classes/Image.php gallery-1.5.2/classes/Image.php
--- gallery-1.5.1/classes/Image.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/Image.php	2006-01-18 19:06:03.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Image.php,v 1.66.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: Image.php,v 1.70.2.2 2006/01/18 18:06:03 jenst Exp $
  */
 ?>
 <?php
@@ -109,7 +109,7 @@
 			if (fs_file_exists("$dir/$this->resizedName.$this->type")) {
 				fs_unlink("$dir/$this->resizedName.$this->type");
 			}
-			$this->resizedName = "";
+			$this->resizedName = '';
 		/* doing a resize */
 		} else {
 			$name = $this->name;
@@ -118,9 +118,7 @@
 			if ($pathToResized) {
 				$ret = copy($pathToResized,"$dir/$name.sized.$this->type");	
 			} else {
-				$ret = resize_image("$dir/$name.$type",
-					     "$dir/$name.sized.$this->type",
-					     $target, $filesize);
+				$ret = resize_image("$dir/$name.$type", "$dir/$name.sized.$this->type", $target, $filesize);
 			}
 			
 			#-- resized image is not always a jpeg ---
@@ -153,46 +151,47 @@
 		}
 	}
 
-	function getTag($dir, $full=0, $size=0, $attrs="",$alttext="") {
-		global $gallery;
+	function getTag($dir, $full = 0, $size = 0, $attrs = '',$alttext = '') {
+	    global $gallery;
 
-		// Prevent non-integer data
-		$size = (int)$size;
+	    /* Prevent non-integer data */
+	    $size = (int)$size;
 
-		$name = $this->getName($dir);
-		$alttext = unhtmlentities(strip_tags($alttext));
+	    $name = $this->getName($dir);
+	    $alttext = htmlspecialchars(strip_tags($alttext));
 
-		$attrs .= ' border="0"';
-		if ($size) {
-			if ($this->width > $this->height) {
-				$width = $size;
-				$height = round($size * ($this->height / $this->width));
-			} else {
-				$width = round($size * ($this->width / $this->height));
-				$height = $size;
-			}
-			$size_val = "width=\"$width\" height=\"$height\"";
-		} else if ($full || !$this->resizedName) {
-			$size_val = "width=\"$this->raw_width\" height=\"$this->raw_height\"";
+	    $attrs .= ' border="0"';
+	    if ($size) {
+		if ($this->width > $this->height) {
+		    $width = $size;
+		    $height = round($size * ($this->height / $this->width));
 		} else {
-			$size_val = "width=\"$this->width\" height=\"$this->height\"";
+		    $width = round($size * ($this->width / $this->height));
+		    $height = $size;
 		}
+		$size_val = "width=\"$width\" height=\"$height\"";
+	    } else if ($full || !$this->resizedName) {
+		$size_val = "width=\"$this->raw_width\" height=\"$this->raw_height\"";
+	    } else {
+		$size_val = "width=\"$this->width\" height=\"$this->height\"";
+	    }
 
-		$fullImage = urlencode($this->name) .".$this->type";
-		$resizedImage = urlencode($this->resizedName) .".$this->type";
+	    $fullImage = urlencode($this->name) .".$this->type";
+	    $resizedImage = urlencode($this->resizedName) .".$this->type";
 
-		if ($this->resizedName && $size == 0) {
-			if ($full) {
-				return "<img src=\"$dir/$fullImage\" " .
-					"width=\"$this->raw_width\" height=\"$this->raw_height\" $attrs alt=\"$alttext\" title=\"$alttext\">";
-			} else {
-				return "<img src=\"$dir/$resizedImage\" " .
-					"width=\"$this->width\" height=\"$this->height\" " .
-					"$attrs alt=\"$alttext\" title=\"$alttext\">";
-			}
+	    if ($this->resizedName && $size == 0) {
+		if ($full) {
+		    return "<img src=\"$dir/$fullImage\" ".
+			"width=\"$this->raw_width\" height=\"$this->raw_height\" .
+			$attrs alt=\"$alttext\" title=\"$alttext\">";
 		} else {
-			return "<img src=\"$dir/$fullImage\" $size_val $attrs alt=\"$alttext\" title=\"$alttext\" name=\"photo_j\">";
+		    return "<img src=\"$dir/$resizedImage\" ".
+			"width=\"$this->width\" height=\"$this->height\" " .
+			"$attrs alt=\"$alttext\" title=\"$alttext\">";
 		}
+	    } else {
+		return "<img src=\"$dir/$fullImage\" $size_val $attrs alt=\"$alttext\" title=\"$alttext\" name=\"photo_j\">";
+	    }
 	}
 
 	function getName($dir, $full=0) {
@@ -216,6 +215,15 @@
 		return "$dir/$name.$this->type";
 	}
 
+	function getImageName($full = false) {
+		if ($full || !$this->resizedName) {
+		    $name = $this->name;
+		} else {
+		    $name = $this->resizedName;
+		}
+		return "$name.$this->type";
+	}
+
 	function isResized() {
 		if ($this->resizedName) {
 			return 1;
diff -Naur gallery-1.5.1/classes/LoggedInUser.php gallery-1.5.2/classes/LoggedInUser.php
--- gallery-1.5.1/classes/LoggedInUser.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/LoggedInUser.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: LoggedInUser.php,v 1.8.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: LoggedInUser.php,v 1.9.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/Mail/htmlMimeMail.php gallery-1.5.2/classes/Mail/htmlMimeMail.php
--- gallery-1.5.1/classes/Mail/htmlMimeMail.php	2005-07-19 22:57:19.000000000 +0200
+++ gallery-1.5.2/classes/Mail/htmlMimeMail.php	2005-10-26 15:34:40.000000000 +0200
@@ -2,8 +2,8 @@
 /**
  * Filename.......: class.html.mime.mail.inc
  * Project........: HTML Mime mail class
- * Last Modified..: $Date: 2005/07/19 20:57:19 $
- * CVS Revision...: $Revision: 1.4 $
+ * Last Modified..: $Date: 2005/10/26 13:34:40 $
+ * CVS Revision...: $Revision: 1.5 $
  * Copyright......: 2001, 2002 Richard Heyes
  * @package Mail
 */
@@ -466,7 +466,7 @@
 /**
 * Adds an html image subpart to a mime_part object
 */
-	function &_addHtmlImagePart(&$obj, $value)
+	function _addHtmlImagePart(&$obj, $value)
 	{
 		$params['content_type'] = $value['c_type'];
 		$params['encoding']     = 'base64';
@@ -479,7 +479,7 @@
 /**
 * Adds an attachment subpart to a mime_part object
 */
-	function &_addAttachmentPart(&$obj, $value)
+	function _addAttachmentPart(&$obj, $value)
 	{
 		$params['content_type'] = $value['c_type'];
 		$params['encoding']     = $value['encoding'];
diff -Naur gallery-1.5.1/classes/mambo/UserDB.php gallery-1.5.2/classes/mambo/UserDB.php
--- gallery-1.5.1/classes/mambo/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/mambo/UserDB.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * Mambo Open Source CMS integration written by Beckett Madden-Woods
  * <beckett@beckettmw.com> First version January 2004.
  *
- * $Id: UserDB.php,v 1.3.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: UserDB.php,v 1.4.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/mambo/User.php gallery-1.5.2/classes/mambo/User.php
--- gallery-1.5.1/classes/mambo/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/mambo/User.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * Mambo Open Source CMS integration written by Beckett Madden-Woods
  * <beckett@beckettmw.com> First version January 2004.
  *
- * $Id: User.php,v 1.3.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: User.php,v 1.4.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/NobodyUser.php gallery-1.5.2/classes/NobodyUser.php
--- gallery-1.5.1/classes/NobodyUser.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/NobodyUser.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: NobodyUser.php,v 1.13.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: NobodyUser.php,v 1.14.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/nsnnuke/AdminUser.php gallery-1.5.2/classes/nsnnuke/AdminUser.php
--- gallery-1.5.1/classes/nsnnuke/AdminUser.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/nsnnuke/AdminUser.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: AdminUser.php,v 1.3.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: AdminUser.php,v 1.4.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/nsnnuke/UserDB.php gallery-1.5.2/classes/nsnnuke/UserDB.php
--- gallery-1.5.1/classes/nsnnuke/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/nsnnuke/UserDB.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: UserDB.php,v 1.3.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: UserDB.php,v 1.4.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/nsnnuke/User.php gallery-1.5.2/classes/nsnnuke/User.php
--- gallery-1.5.1/classes/nsnnuke/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/nsnnuke/User.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: User.php,v 1.3.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: User.php,v 1.4.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/nuke5/AdminUser.php gallery-1.5.2/classes/nuke5/AdminUser.php
--- gallery-1.5.1/classes/nuke5/AdminUser.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/nuke5/AdminUser.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: AdminUser.php,v 1.9.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: AdminUser.php,v 1.10.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/nuke5/UserDB.php gallery-1.5.2/classes/nuke5/UserDB.php
--- gallery-1.5.1/classes/nuke5/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/nuke5/UserDB.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: UserDB.php,v 1.12.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: UserDB.php,v 1.13.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/nuke5/User.php gallery-1.5.2/classes/nuke5/User.php
--- gallery-1.5.1/classes/nuke5/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/nuke5/User.php	2006-01-06 07:31:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: User.php,v 1.10.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: User.php,v 1.11.2.1 2006/01/06 06:31:32 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/phpbb/UserDB.php gallery-1.5.2/classes/phpbb/UserDB.php
--- gallery-1.5.1/classes/phpbb/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/phpbb/UserDB.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
diff -Naur gallery-1.5.1/classes/phpbb/User.php gallery-1.5.2/classes/phpbb/User.php
--- gallery-1.5.1/classes/phpbb/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/phpbb/User.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
diff -Naur gallery-1.5.1/classes/postnuke/UserDB.php gallery-1.5.2/classes/postnuke/UserDB.php
--- gallery-1.5.1/classes/postnuke/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/postnuke/UserDB.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: UserDB.php,v 1.10.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: UserDB.php,v 1.11.2.1 2006/01/06 06:31:33 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/postnuke/User.php gallery-1.5.2/classes/postnuke/User.php
--- gallery-1.5.1/classes/postnuke/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/postnuke/User.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: User.php,v 1.8.2.1 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: User.php,v 1.9.2.1 2006/01/06 06:31:33 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/postnuke0.7.1/UserDB.php gallery-1.5.2/classes/postnuke0.7.1/UserDB.php
--- gallery-1.5.1/classes/postnuke0.7.1/UserDB.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/postnuke0.7.1/UserDB.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: UserDB.php,v 1.6.2.2 2005/09/12 22:40:45 dmolavi Exp $
+ * $Id: UserDB.php,v 1.8.2.1 2006/01/06 06:31:33 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/postnuke0.7.1/User.php gallery-1.5.2/classes/postnuke0.7.1/User.php
--- gallery-1.5.1/classes/postnuke0.7.1/User.php	2005-09-13 00:40:45.000000000 +0200
+++ gallery-1.5.2/classes/postnuke0.7.1/User.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
 * Gallery - a web based photo album viewer and editor
-* Copyright (C) 2000-2005 Bharat Mediratta
+* Copyright (C) 2000-2006 Bharat Mediratta
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 *
-* $Id: User.php,v 1.8.2.2 2005/09/12 22:40:45 dmolavi Exp $
+* $Id: User.php,v 1.11.2.1 2006/01/06 06:31:33 jenst Exp $
 */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/remote/GalleryRemoteProperties.php gallery-1.5.2/classes/remote/GalleryRemoteProperties.php
--- gallery-1.5.1/classes/remote/GalleryRemoteProperties.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/classes/remote/GalleryRemoteProperties.php	2006-01-06 07:31:33.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: GalleryRemoteProperties.php,v 1.7.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: GalleryRemoteProperties.php,v 1.8.2.1 2006/01/06 06:31:33 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/UserDB.php gallery-1.5.2/classes/UserDB.php
--- gallery-1.5.1/classes/UserDB.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/UserDB.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: UserDB.php,v 1.23.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: UserDB.php,v 1.24.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/classes/User.php gallery-1.5.2/classes/User.php
--- gallery-1.5.1/classes/User.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/classes/User.php	2006-01-18 19:06:03.000000000 +0100
@@ -1,327 +1,360 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: User.php,v 1.29.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: User.php,v 1.33.2.3 2006/01/18 18:06:03 jenst Exp $
  */
 ?>
 <?php
 class Abstract_User {
-	var $username;
-	var $fullname;
-	var $password;
-	var $email;
-	var $isAdmin;
-	var $canCreateAlbums;
-	var $uid;
-	var $canChangeOwnPw;
-
-	function Abstract_User() {
-		$this->setIsAdmin(false);
-		$this->setCanCreateAlbums(false);
-		$this->uid = time() . "_" . mt_rand();
-	}
+    var $username;
+    var $fullname;
+    var $password;
+    var $email;
+    var $isAdmin;
+    var $canCreateAlbums;
+    var $uid;
+    var $canChangeOwnPw;
+
+    function Abstract_User() {
+        $this->setIsAdmin(false);
+        $this->setCanCreateAlbums(false);
+        $this->uid = time() . "_" . mt_rand();
+    }
+
+    function integrityCheck() {
+        return 0;
+    }
+    function versionOutOfDate() {
+        return false;
+    }
+
+    function salt($len = 4)
+    {
+        $salt = '';
+        for($i = 0; $i < $len; $i++)
+        {
+            $char = mt_rand(48, 109);
+            if($char > 57) $char += 7;
+            if($char > 90) $char += 6;
+            $salt .= chr($char);
+        }
+        return $salt;
+    }
 
-	function integrityCheck() {
-		return 0;
-	}
-	function versionOutOfDate() {
-		return false;
-	}
+    function setPassword($password) {
+        $salt = $this->salt();
+        $this->password = $salt.md5($salt.$password);
+    }
+
+    function isCorrectPassword($password) {
+        $hash = '';
+        if(strlen($this->password) == 32) { // old password schema
+        $hash =  md5($password);
+        }
+        else {
+            $salt = substr($this->password,0, 4);
+            $hash = $salt.md5($salt.$password);
+        }
+        return (!strcmp($this->password, $hash));
+    }
 
-	function salt($len = 4)
-	{
-		$salt = '';
-		for($i = 0; $i < $len; $i++)
-		{
-			$char = mt_rand(48, 109);
-			if($char > 57) $char += 7;
-			if($char > 90) $char += 6;
-			$salt .= chr($char);
-		}
-		return $salt;
-	}
+    function getUid() {
+        return $this->uid;
+    }
+
+    function setUsername($username) {
+        $this->username = strip_tags($username);
+    }
+
+    function getUsername() {
+        return $this->username;
+    }
+
+    function printableName($format = '!!FULLNAME!! (!!USERNAME!!)') {
+        if (empty($this) || $this->isPseudo()) {
+            return '';
+        }
+        else {
+            $name = $format;
+            $name = str_replace('!!FULLNAME!!', $this->getFullName(), $name);
+            $name = str_replace('!!USERNAME!!', $this->getUsername(), $name);
+            $name = str_replace('!!EMAIL!!',$this->getEmail(), $name);
+            $name = str_replace('!!MAILTO_FULLNAME!!', '<a href="mailto:' . $this->getEmail().'">'.
+              $this->getFullName() ? $this->getFullName() : $this->getUserName() . '</a>', $name);
+            $name = str_replace('!!MAILTO_USERNAME!!',
+              '<a href="mailto:'. $this->getEmail().'">'.$this->getUserName() . '</a>', $name);
+        }
 
-	function setPassword($password) {
-		$salt = $this->salt();
-		$this->password = $salt.md5($salt.$password);
-	}
+        if(empty($name)) {
+            $name = $this->username;
+        }
+        return $name;
+    }
 
-	function isCorrectPassword($password) {
-		$hash = '';
-		if(strlen($this->password) == 32) { // old password schema
-			$hash =  md5($password);
-		}
-		else {
-			$salt = substr($this->password,0, 4);
-			$hash = $salt.md5($salt.$password);
-		}
-		return (!strcmp($this->password, $hash));
-	}
+    function setEmail($email) {
+        $this->email = $email;
+    }
+
+    function getEmail() {
+        return $this->email;
+    }
+
+    function setFullName($fullname) {
+        $this->fullname = strip_tags($fullname);
+    }
+
+    function getFullName() {
+        if (get_magic_quotes_gpc()) {
+            return stripslashes($this->fullname);
+        } else {
+            return $this->fullname;
+        }
+    }
 
-	function getUid() {
-		return $this->uid;
-	}
+    function isAdmin() {
+        return $this->isAdmin;
+    }
+
+    function isPseudo() {
+        return false;
+    }
+
+    function setIsAdmin($bool) {
+        $this->isAdmin = $bool;
+    }
+
+    function setCanChangeOwnPw($bool) {
+        $this->canChangeOwnPw = $bool;
+    }
+
+    function canChangeOwnPw() {
+        return $this->canChangeOwnPw;
+    }
+
+    function canReadAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-	function setUsername($username) {
-		$this->username = $username;
-	}
+        if ($album->canRead($this->uid)) {
+            return true;
+        }
 
-	function getUsername() {
-	       	return $this->username;
-       	}
-
-       	function printableName($format) {
-		$name=$format;
-		$name=str_replace('!!FULLNAME!!', $this->getFullName(), $name);
-		$name=str_replace('!!USERNAME!!', $this->getUsername(), $name);
-		$name=str_replace('!!EMAIL!!',$this->getEmail(), $name);
-		$name=str_replace('!!MAILTO_FULLNAME!!', '<a href="mailto:'.
-				$this->getEmail().'">'.
-				$this->getFullName() ? $this->getFullName() : $this->getUserName() .
-			       	'</a>', $name);
-	       	$name=str_replace('!!MAILTO_USERNAME!!', '<a href="mailto:'.
-				$this->getEmail().'">'.$this->getUserName() .
-			       	'</a>', $name);
-	       	return $name;
-	}
+        return false;
+    }
 
-	function setEmail($email) {
-		$this->email = $email;
-	}
+    function canWriteToAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-	function getEmail() {
-		return $this->email;
-	}
+        if ($album->canWrite($this->uid)) {
+            return true;
+        }
 
-	function setFullName($fullname) {
-		$this->fullname = $fullname;
-	}
+        return false;
+    }
 
-	function getFullName() {
-	       	if (get_magic_quotes_gpc()) {
-		       	return stripslashes($this->fullname);
-	       	} else {
-		       	return $this->fullname;
-	       	}
-	}
+    function canAddToAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-	function isAdmin() {
-		return $this->isAdmin;
-	}
+        if (!$album)
+        {
+            return false;
+        }
 
-	function isPseudo() {
-		return false;
-	}
+        // If they can write, they can add
+        if ($this->canWriteToAlbum($album)) {
+            return true;
+        }
 
-	function setIsAdmin($bool) {
-		$this->isAdmin = $bool;
-	}
+        if ($album->canAddTo($this->uid)) {
+            return true;
+        }
 
-	function setCanChangeOwnPw($bool) {
-		$this->canChangeOwnPw = $bool;
-	}
+        return false;
+    }
 
-	function canChangeOwnPw() {
-	       	return $this->canChangeOwnPw;
-       	}
-
-	function canReadAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canRead($this->uid)) {
-			return true;
-		}
+    function canDeleteFromAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-		return false;
-	}
+        if ($album->canDeleteFrom($this->uid)) {
+            return true;
+        }
 
-	function canWriteToAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canWrite($this->uid)) {
-			return true;
-		}
+        return false;
+    }
 
-		return false;
-	}
+    function canDeleteAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-	function canAddToAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if (!$album)
-		{
-			return false;
-		}
-
-		// If they can write, they can add
-		if ($this->canWriteToAlbum($album)) {
-			return true;
-		}
-
-		if ($album->canAddTo($this->uid)) {
-			return true;
-		}
-
-		return false;
-	}		
-
-	function canDeleteFromAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canDeleteFrom($this->uid)) {
-			return true;
-		}
-
-		return false;
-	}		
-
-	function canDeleteAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canDelete($this->uid)) {
-			return true;
-		}
+        if ($album->canDelete($this->uid)) {
+            return true;
+        }
 
-		return false;
-	}
+        return false;
+    }
 
-	function canCreateSubAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canCreateSubAlbum($this->uid)) {
-			return true;
-		}
+    function canCreateSubAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-		return false;
-	}
-	
-	function canCreateAlbums() {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($this->canCreateAlbums) {
-			return true;
-		}
+        if ($album->canCreateSubAlbum($this->uid)) {
+            return true;
+        }
 
-		return false;
-	}
+        return false;
+    }
 
-	function setCanCreateAlbums($bool) {
-		$this->canCreateAlbums = $bool;
-	}
+    function canCreateAlbums() {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-	function canChangeTextOfAlbum($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canChangeText($this->uid)) {
-			return true;
-		}
+        if ($this->canCreateAlbums) {
+            return true;
+        }
 
-		return false;
-	}
+        return false;
+    }
 
-	function canViewFullImages($album) {
-		if ($this->isAdmin()) {
-			return true;
-		}
-
-		if ($album->canViewFullImages($this->uid)) {
-			return true;
-		}
+    function setCanCreateAlbums($bool) {
+        $this->canCreateAlbums = $bool;
+    }
+
+    function canChangeTextOfAlbum($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-		return false;
-	}
+        if ($album->canChangeText($this->uid)) {
+            return true;
+        }
 
-        function canAddComments($album) {
-                if ($this->isAdmin()) {
-                        return true;
-                }
-
-                if ($album->canAddComments($this->uid)) {
-                        return true;
-                }
-
-                return false;
-        }
-
-        function canViewComments($album) {
-                if ($this->isAdmin()) {
-                        return true;
-                }
-
-		/* Note Jens Tkotz, 23.09.2004
-		** Allow album owner to see comments, as they are a kind of local admin
-		*/
-		if ($this->isOwnerOfAlbum($album)) {
-			return true;
-		}
-
-                if ($album->canViewComments($this->uid)) {
-                        return true;
-                }
-
-                return false;
-        }
-	
-	function isOwnerOfAlbum($album) {
-		if ($album->isOwner($this->uid)) {
-			return true;
-		}
+        if ($album->isOwner($this->uid)) {
+            return true;
+        }
+        
+        return false;
+    }
+
+    function canViewFullImages($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-		return false;
-	}
+        if ($album->canViewFullImages($this->uid)) {
+            return true;
+        }
 
-	function isLoggedIn() {
-		return true;
-	}
+        return false;
+    }
 
-	function getDefaultLanguage() {
-		return "";
-	}
+    function canAddComments($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
 
-	function setDefaultLanguage($var) {
-	}
+        if ($album->canAddComments($this->uid)) {
+            return true;
+        }
 
-	function displayName() {
-		$FullName = $this->getFullName();
-	        if (! empty($FullName)) {
-			return $this->getFullname();
-		} else {
-			return $this->getUsername();
-	        }
-	}
+        return false;
+    }
+
+    function canViewComments($album) {
+        if ($this->isAdmin()) {
+            return true;
+        }
+
+        /** Note Jens Tkotz, 23.09.2004
+         * Allow album owner to see comments, as they are a kind of local admin
+         */
+        if ($this->isOwnerOfAlbum($album)) {
+            return true;
+        }
+
+        if ($album->canViewComments($this->uid)) {
+            return true;
+        }
+
+        return false;
+    }
 
+    function isOwnerOfAlbum($album) {
+        if ($album->isOwner($this->uid)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    function isLoggedIn() {
+        return true;
+    }
+
+    function getDefaultLanguage() {
+        return '';
+    }
+
+    function setDefaultLanguage($var) {
+    }
+
+    function displayName() {
+        $FullName = $this->getFullName();
+        if (! empty($FullName)) {
+            return $this->getFullname();
+        } else {
+            return $this->getUsername();
+        }
+    }
+
+   function canDownloadAlbum($album) {
+	if ($this->hasAlbumPermission('zipDownload', $album) &&
+	  canCreateArchive('zip')) {
+	    return true;
+	}
+	else {
+	    return false;
+	}
+    }
+
+   function hasAlbumPermission($perm, $album) {
+	/* Note: owners do not have explict every Permission via this method. Just admin. */
+	if ($this->isAdmin()) {
+            return true;
+        }
+
+	if ($album->getPerm($perm, $this->uid)) {
+	    return true;
+	}
+	else {
+	    return false;
+	}
+    }
 }
 
 ?>
diff -Naur gallery-1.5.1/contrib/joomla/admin.gallery.html.php gallery-1.5.2/contrib/joomla/admin.gallery.html.php
--- gallery-1.5.1/contrib/joomla/admin.gallery.html.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/admin.gallery.html.php	2006-01-06 07:31:33.000000000 +0100
@@ -0,0 +1,67 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Gallery Component for Mambo Open Source CMS v4.5 or newer
+ * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
+ *
+ * $Id: admin.gallery.html.php,v 1.1.2.1 2006/01/06 06:31:33 jenst Exp $
+ */
+
+class HTML_content {
+
+	function showSettings($option, $params, $act) {
+?>
+<table cellpadding="4" cellspacing="0" border="0" width="100%">
+		<tr>
+			<td width="228"><a target="_blank" href="http://gallery.sourceforge.net/"><img src="components/com_gallery/images/logo-228x67.png" border="0" width="228" height="67" align="middle" /></a></td><td align="left" class="sectionname" style="margin-left: 10px;">Gallery Component Settings</td>
+		</tr>
+		</table>
+<script language="javascript" src="js/dhtml.js"></script>
+<script language="javascript" type="text/javascript">
+		function submitbutton(pressbutton) {
+			var form = document.adminForm;
+			submitform(pressbutton);
+		}
+</script>
+<form action="index2.php" method="post" name="adminForm">
+    <table cellpadding="2" cellspacing="4" border="0" width="100%" class="adminform">
+      <tr>
+        <td width="80" valign="top">Path to Gallery:</td>
+        <td valign="top"><input class="inputbox" type="text" name="path" size="50" value="<?php echo $params['path']; ?>"></td>
+      	<td class="error" valign="top">Full server path to your Gallery</td>
+      </tr>
+      <tr>
+        <td width="80" valign="top">Admin Level:</td>
+        <td valign="top"><?php echo $params['minAuthType']; ?></td>
+      	<td class="error" valign="top">Minimum authority level needed for <i>admin</i> privileges in Gallery</td>
+      </tr>	  
+      <tr>
+        <td width="80" valign="top">Hide Right-hand modules:</td>
+        <td valign="top"><?php echo $params['hideRightSide']; ?></td>
+      	<td class="error" valign="top">Hiding right-hand modules gives Gallery more room</td>
+      </tr>
+    </table>
+  <input type="hidden" name="option" value="<?php echo $option; ?>">
+  <input type="hidden" name="act" value="<?php echo $act; ?>">
+  <input type="hidden" name="task" value="">
+</form>
+<?php
+	}
+}
+?>
diff -Naur gallery-1.5.1/contrib/joomla/admin.gallery.php gallery-1.5.2/contrib/joomla/admin.gallery.php
--- gallery-1.5.1/contrib/joomla/admin.gallery.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/admin.gallery.php	2006-01-06 07:31:33.000000000 +0100
@@ -0,0 +1,127 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Gallery Component for Mambo Open Source CMS v4.5 or newer
+ * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
+ *
+ * $Id: admin.gallery.php,v 1.1.2.1 2006/01/06 06:31:33 jenst Exp $
+ */
+
+defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
+
+// ensure user has access to this function
+if (!($acl->acl_check('administration', 'edit', 'users', $my->usertype, 'components', 'all') | $acl->acl_check('administration', 'edit', 'users', $my->usertype, 'components', 'com_gallery'))) {
+	mosRedirect('index2.php', _NOT_AUTH);
+}
+
+require_once($mainframe->getPath('admin_html'));
+
+$act = mosGetParam($_REQUEST, 'act', null);
+$task = mosGetParam($_REQUEST, 'task', array(0));
+$cid = mosGetParam($_POST, 'cid', array(0));
+if (!is_array( $cid )) {
+	$cid = array(0);
+}
+
+switch ($task) {
+	case "save":
+		saveSettings($option, $act);
+	break;
+	default:
+		viewSettings($option, $act);
+	break;
+}
+
+/* Displays Gallery component settings */
+function viewSettings( $option, $act ) {
+	global $database, $my, $acl;
+
+	$row = new mosUser($database);
+	// load the row from the db table
+	$cid = mosGetParam($_REQUEST, 'cid', array(0));
+	$uid = intval($cid[0]);
+	$row->load($uid);
+	
+	$database->setQuery("SELECT * FROM #__gallery");
+	$param = $database->loadRowList();
+
+	/* extract params from the DB query */
+	$params = array();
+	foreach ($param as $curr) {
+		$params[$curr[0]] = $curr[1];
+	}
+
+	/* Code to generate list of groups to select minimum Gallery Admin
+	 * authorization level (copied from MOS com_users/admin.users.php) */
+
+	$my_group = strtolower($acl->get_group_name($row->gid, 'ARO'));
+
+	// ensure user can't add group higher than themselves
+	$my_groups = $acl->get_object_groups('users', $my->id, 'ARO');
+	if (is_array($my_groups) && count($my_groups) > 0) {
+		$ex_groups = $acl->get_group_children($my_groups[0], 'ARO', 'RECURSE');
+	} else {
+		$ex_groups = array();
+	}
+
+	$gtree = $acl->get_group_children_tree(null, 'USERS', false);
+
+	// remove users 'above' me
+	$i = 0;
+	while ($i < count($gtree)) {
+		if (in_array($gtree[$i]->value, $ex_groups)) {
+			array_splice($gtree, $i, 1);
+		} else {
+			$i++;
+		}
+	}
+
+	$params['minAuthType'] = mosHTML::selectList($gtree, 'minAuthType', 'size="6"', 'value', 'text', isset($params['minAuthType']) ? $params['minAuthType'] : 20);
+	$params['hideRightSide'] = mosHTML::yesnoSelectList('hideRightSide', 'class="inputbox" size="1"', isset($params['hideRightSide']) ? $params['hideRightSide'] : 1);
+	
+	HTML_content::showSettings($option, $params, $act);
+}
+
+/* Saves Gallery component settings */
+function saveSettings( $option, $act ) {
+	global $database;
+
+	$path = mosGetParam($_POST, 'path', '');
+	if (!is_dir($path)) {
+		echo "<script> alert('Path must be a full server path to your Gallery!'); window.history.go(-1); </script>\n";
+		die;
+	}
+	if (!ereg('[/\\]$', $path)) {
+		$path .= addslashes(DIRECTORY_SEPARATOR);
+	}
+	$params['path'] = $path;
+	
+	$params['minAuthType'] = mosGetParam($_POST, 'minAuthType', 20);
+	$params['hideRightSide'] = mosGetParam($_POST, 'hideRightSide', true);
+
+	foreach ($params as $field => $value) {
+		$database->setQuery("UPDATE #__gallery SET value='$value' WHERE field='$field'");
+		if (!$database->query()) {
+			echo "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>\n";
+			die;
+		}
+	}
+	mosRedirect( "index2.php?mosmsg=The%20Gallery%20component%20settings%20have%20been%20saved%20successfully." );
+}
+?>
diff -Naur gallery-1.5.1/contrib/joomla/classes/mambo.php gallery-1.5.2/contrib/joomla/classes/mambo.php
--- gallery-1.5.1/contrib/joomla/classes/mambo.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/classes/mambo.php	2005-10-17 19:46:12.000000000 +0200
@@ -0,0 +1,1643 @@
+<?php
+// $Id: mambo.php,v 1.1 2005/10/17 17:46:12 jenst Exp $
+/**
+* Foundation classes
+* @package Mambo Open Source
+* @Copyright (C) 2000 - 2003 Miro International Pty Ltd
+* @ All rights reserved
+* @ Mambo Open Source is Free Software
+* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
+* @version $Revision: 1.1 $
+**/
+
+// ensure this file is being included by a parent file
+defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
+define( '_MOS_MAMBO_INCLUDED', 1 );
+
+if (@$mosConfig_error_reporting === 0) {
+	error_reporting( 0 );
+} else if (@$mosConfig_error_reporting > 0) {
+	error_reporting( $mosConfig_error_reporting );
+}
+
+// Verify that the $mosConfig_absolute_path isn't overwritten with a remote exploit
+if (!realpath($mosConfig_absolute_path)) {
+	print _("Security violation") ."\n";
+	exit;
+} else {
+	if (! defined('MOSCONFIG_ABSOLUTE_PATH')) {
+		define("MOSCONFIG_ABSOLUTE_PATH", $mosConfig_absolute_path);
+	}
+}
+
+$local_backup_path = MOSCONFIG_ABSOLUTE_PATH. '/administrator/backups';
+$media_path = MOSCONFIG_ABSOLUTE_PATH. '/media/';
+$image_path = MOSCONFIG_ABSOLUTE_PATH. '/images/stories';
+$image_size = 100;
+
+include_once(MOSCONFIG_ABSOLUTE_PATH . '/version.php');
+
+require_once(MOSCONFIG_ABSOLUTE_PATH . '/classes/database.php');
+require_once(MOSCONFIG_ABSOLUTE_PATH . '/classes/gacl.class.php');
+require_once(MOSCONFIG_ABSOLUTE_PATH . '/classes/gacl_api.class.php');
+
+/**
+* MOS Mainframe class
+*
+* Provide many supporting API functions
+*/
+class mosMainFrame {
+	/** @var database Internal database class pointer */
+	var $_db=null;
+	/** @var object An object of configuration variables */
+	var $_config=null;
+	/** @var object An object of path variables */
+	var $_path=null;
+	/** @var mosSession The current session */
+	var $_session=null;
+	/** @var string The current template */
+	var $_template=null;
+	/** @var array An array to hold global user state within a session */
+	var $_userstate=null;
+	/**
+	* Class constructor
+	* @param database A database connection object
+	* @param string The url option
+	* @param string The path of the mos directory
+	*/
+	function mosMainFrame( &$db, $option, $basePath ) {
+		$this->_db = $db;
+
+		// load the configuration values
+		//return( $this->loadConfig() );
+		$this->_setConfig( $basePath );
+		$this->_setTemplate();
+		$this->_setAdminPaths( $option, $this->getCfg( 'absolute_path' ) );
+		if (isset( $_SESSION['session_userstate'] )) {
+			$this->_userstate =& $_SESSION['session_userstate'];
+		} else {
+			$this->_userstate = null;
+		}
+	}
+	/**
+	* Gets the value of a user state variable
+	* @param string The name of the variable
+	*/
+	function getUserState( $var_name ) {
+		if (is_array( $this->_userstate )) {
+			return mosGetParam( $this->_userstate, $var_name, null );
+		} else {
+			return null;
+		}
+	}
+	/**
+	* Gets the value of a user state variable
+	* @param string The name of the user state variable
+	* @param string The name of the variable passed in a request
+	* @param string The default value for the variable if not found
+	*/
+	function getUserStateFromRequest( $var_name, $req_name, $var_default=null ) {
+		if (is_array( $this->_userstate )) {
+			if (isset( $_REQUEST[$req_name] )) {
+				$this->setUserState( $var_name, $_REQUEST[$req_name] );
+			} else if (!isset( $this->_userstate[$var_name] )) {
+				$this->setUserState( $var_name, $var_default );
+			}
+			return $this->_userstate[$var_name];
+		} else {
+			return null;
+		}
+	}
+	/**
+	* Sets the value of a user state variable
+	* @param string The name of the variable
+	* @param string The value of the variable
+	*/
+	function setUserState( $var_name, $var_value ) {
+		if (is_array( $this->_userstate )) {
+			$this->_userstate[$var_name] = $var_value;
+		}
+	}
+	/**
+	* Initialises the user session
+	*
+	* Old sessions are flushed based on the configuration value for the cookie
+	* lifetime. If an existing session, then the last access time is updated.
+	* If a new session, a session id is generated and a record is created in
+	* the mos_sessions table.
+	*/
+	function initSession() {
+		$past = time() - intval( $this->getCfg( 'lifetime' ) );
+		$query = "DELETE FROM #__session WHERE (time < $past) AND (usertype <> 'administrator' AND usertype <> 'superadministrator')";
+		$this->_db->setQuery($query);
+		if (!$this->_db->query()) {
+			die($this->_db->stderr(true));
+		}
+
+		$lifetime = time() + intval( $this->getCfg( 'lifetime' ) );
+		$session =& $this->_session;
+
+		$session = new mosSession( $this->_db );
+		$session->purge(intval( $this->getCfg( 'lifetime' ) ));
+
+		$sessioncookie = mosGetParam( $_COOKIE, 'sessioncookie', null );
+
+		if ($session->load( md5( $sessioncookie ) )) {
+			if ($session->username) {
+				setcookie( "usercookie", $session->getCookie(), $lifetime, "/" );
+				//$_COOKIE["usercookie"] = $session->getCookie();
+			}
+			$session->time = time();
+			$session->update();
+
+		} else {
+			$session->generateId();
+			$session->guest = 1;
+			$session->username = '';
+			$session->time = time();
+			$session->gid = 0;
+
+			if (!$session->insert()) {
+				die( $session->getError() );
+			}
+
+			setcookie( "sessioncookie", $session->getCookie(), $lifetime, "/" );
+			//$_COOKIE["usercookie"] = $session->getCookie();
+		}
+	}
+	/**
+	* Login validation function
+	*
+	* Username and encoded password is compare to db entries in the mos_users
+	* table. A successful validation updates the current session record with
+	* the users details.
+	*/
+	function login() {
+		global $acl;
+
+		$usercookie = mosGetParam( $_COOKIE, 'usercookie', '' );
+		$sessioncookie = mosGetParam( $_COOKIE, 'sessioncookie', '' );
+		$username = trim( mosGetParam( $_POST, 'username', '' ) );
+		$passwd = trim( mosGetParam( $_POST, 'passwd', '' ) );
+
+		if (!$username || !$passwd) {
+			echo "<script> alert(\""._LOGIN_INCOMPLETE."\"); window.history.go(-1); </script>\n";
+			exit();
+		} else {
+			$passwd = md5( $passwd );
+
+			$this->_db->setQuery( "SELECT id, gid, block, usertype"
+			. "\nFROM #__users"
+			. "\nWHERE username='$username' AND password='$passwd' AND block='0'"
+			);
+			$row = null;
+			if ($this->_db->loadObject( $row )) {
+				if ($row->block == 1) {
+					echo "<script>alert(\""._LOGIN_BLOCKED."\"); window.history.go(-1); </script>\n";
+					exit();
+				}
+				// fudge the group stuff
+				$grp = $acl->getAroGroup( $row->id );
+				$row->gid = 1;
+
+				if ($acl->is_group_child_of( $grp->name, 'Registered', 'ARO' )) {
+					// fudge Authors, Editors and Publishers into the Special Group
+					$row->gid = 2;
+				}
+				$row->usertype = $grp->name;
+
+				$session =& $this->_session;
+				$session->guest = 0;
+				$session->username = $username;
+				$session->userid = intval( $row->id );
+				$session->usertype = $row->usertype;
+				$session->gid = intval( $row->gid );
+
+				$session->update();
+
+				$lifetime = time() + intval( $this->getCfg( 'lifetime' ) );
+				setcookie( "usercookie", $session->getCookie(), $lifetime, "/" );
+			} else {
+				echo "<script>alert(\""._LOGIN_INCORRECT."\"); window.history.go(-1); </script>\n";
+				exit();
+			}
+		}
+	}
+	/**
+	* User logout
+	*
+	* Reverts the current session record back to 'anonymous' parameters
+	*/
+	function logout() {
+		$session =& $this->_session;
+
+		$query = "SELECT registerDate FROM #__users WHERE id='$session->userid'";
+		$this->_db->setQuery($query);
+		if (!$this->_db->query()) {
+			die($this->_db->stderr(true));
+		}
+		$registerDate = $this->_db->loadResult();
+
+		$currentDate = date("Y-m-d\TH:i:s");
+		$query = "UPDATE #__users SET registerDate='$registerDate', lastvisitDate='$currentDate' where id='$session->userid'";
+		$this->_db->setQuery($query);
+		if (!$this->_db->query()) {
+			die($this->_db->stderr(true));
+		}
+
+		$session->guest = 1;
+		$session->username = '';
+		$session->userid = '';
+		$session->usertype = '';
+		$session->gid = 0;
+
+		$session->update();
+
+		// this is daggy??
+		@session_destroy();
+	}
+	/**
+	* @return mosUser A user object with the information from the current session
+	*/
+	function getUser() {
+		$user = new mosUser( $this->_db );
+
+		$user->id = intval( $this->_session->userid );
+		$user->username = $this->_session->username;
+		$user->usertype = $this->_session->usertype;
+		$user->gid = intval( $this->_session->gid );
+
+		return $user;
+	}
+	/**
+	* Loads the configuration.php file and assigns values to the internal variable
+	* @param string The base path from which to load the configuration file
+	*/
+	function _setConfig( $basePath='.' ) {
+		$this->_config = new stdClass();
+
+		require( "$basePath/configuration.php" );
+
+		$this->_config->offline = $mosConfig_offline;
+		$this->_config->host = $mosConfig_host;
+		$this->_config->user = $mosConfig_user;
+		$this->_config->password = $mosConfig_password;
+		$this->_config->db = $mosConfig_db;
+		$this->_config->dbprefix = $mosConfig_dbprefix;
+		$this->_config->lang = $mosConfig_lang;
+		$this->_config->absolute_path = MOSCONFIG_ABSOLUTE_PATH;
+		$this->_config->live_site = $mosConfig_live_site;
+		$this->_config->sitename = $mosConfig_sitename;
+		$this->_config->shownoauth = $mosConfig_shownoauth;
+		$this->_config->offline_message = $mosConfig_offline_message;
+		$this->_config->error_message = $mosConfig_error_message;
+		$this->_config->UseBanner = $mosConfig_UseBanner;
+		$this->_config->lifetime = $mosConfig_lifetime;
+		$this->_config->MetaDesc = $mosConfig_MetaDesc;
+		$this->_config->MetaKeys = $mosConfig_MetaKeys;
+		$this->_config->debug = $mosConfig_debug;
+		$this->_config->vote = $mosConfig_vote;
+		$this->_config->hideAuthor = $mosConfig_hideAuthor;
+		$this->_config->hideCreateDate = $mosConfig_hideCreateDate;
+		$this->_config->hideModifyDate = $mosConfig_hideModifyDate;
+		$this->_config->hidePdf = $mosConfig_hidePdf;
+		$this->_config->hidePrint = $mosConfig_hidePrint;
+		$this->_config->hideEmail = $mosConfig_hideEmail;
+		$this->_config->enable_log_items = $mosConfig_enable_log_items;
+		$this->_config->enable_log_searches = $mosConfig_enable_log_searches;
+		$this->_config->sef = $mosConfig_sef;
+		$this->_config->vote = $mosConfig_vote;
+		$this->_config->hideModifyDate = $mosConfig_hideModifyDate;
+		$this->_config->multipage_toc = $mosConfig_multipage_toc;
+		$this->_config->allowUserRegistration = $mosConfig_allowUserRegistration;
+		$this->_config->error_reporting = $mosConfig_error_reporting;
+		$this->_config->link_titles = $mosConfig_link_titles;
+	}
+	/**
+	* @param string The name of the variable (from configuration.php)
+	* @return mixed The value of the configuration variable or null if not found
+	*/
+	function getCfg( $varname ) {
+		if (isset( $this->_config->$varname )) {
+			return $this->_config->$varname;
+		} else {
+			return null;
+		}
+	}
+
+	// TODO
+	function loadConfig() {
+		unset( $this->_config );
+
+		$this->_db->setQuery( "SELECT name,value FROM #__config2" );
+		if (!$this->_config = $this->_db->loadObjectList( 'name' )) {
+			echo $this->_db->stderr();
+			return false;
+		}
+		return true;
+	}
+
+	function _setTemplate() {
+		$mosConfig_absolute_path = $this->getCfg( 'absolute_path' );
+
+		$t = new mosTemplate( $this->_db );
+		$t->load( 0 );
+		$cur_template = $t->cur_template;
+		$col_main = $t->col_main;
+
+		// TemplateChooser Start
+		$mos_user_template = mosGetParam( $_COOKIE, 'mos_user_template', '' );
+		$mos_change_template = mosGetParam( $_REQUEST, 'mos_change_template', $mos_user_template );
+		if ($mos_change_template) {
+			// check that template exists in case it was deleted
+			if (file_exists( "$mosConfig_absolute_path/templates/$mos_change_template/index.php" )) {
+				$lifetime = 60*10;
+				$cur_template = $mos_change_template;
+				setcookie( "mos_user_template", "$mos_change_template", time()+$lifetime);
+			} else {
+				setcookie( "mos_user_template", "", time()-3600 );
+			}
+		}
+		// TemplateChooser End
+
+		if (isset($GLOBALS['gallery_popup'])) {
+		    $cur_template = 'gallery_popup';
+		}
+
+		$this->_template = $cur_template;
+		$this->_template_cols = $col_main;
+	}
+
+	function getTemplate() {
+		return $this->_template;
+	}
+
+	/**
+	* Determines the paths for including engine and menu files
+	* @param string The current option used in the url
+	* @param string The base path from which to load the configuration file
+	*/
+	function _setAdminPaths( $option, $basePath='.' ) {
+		$option = strtolower( $option );
+		$this->_path = new stdClass();
+
+		$prefix = substr( $option, 0, 4 );
+		$name = substr( $option, 4 );
+		switch ($prefix) {
+			case 'com_':
+			// components
+			if (file_exists( "$basePath/templates/$this->_template/components/$name.html.php" )) {
+				$this->_path->front = "$basePath/components/$option/$name.php";
+				$this->_path->front_html = "$basePath/templates/$this->_template/components/$name.html.php";
+			} else if (file_exists( "$basePath/components/$option/$name.php" )) {
+				$this->_path->front = "$basePath/components/$option/$name.php";
+				$this->_path->front_html = "$basePath/components/$option/$name.html.php";
+			}
+			if (file_exists( "$basePath/administrator/components/$option/admin.$name.php" )) {
+				$this->_path->admin = "$basePath/administrator/components/$option/admin.$name.php";
+				$this->_path->admin_html = "$basePath/administrator/components/$option/admin.$name.html.php";
+			}
+			if (file_exists( "$basePath/administrator/components/$option/toolbar.$name.php" )) {
+				$this->_path->toolbar = "$basePath/administrator/components/$option/toolbar.$name.php";
+				$this->_path->toolbar_html = "$basePath/administrator/components/$option/toolbar.$name.html.php";
+				$this->_path->toolbar_default = "$basePath/administrator/menubar/html/menudefault.php";
+			}
+			if (file_exists( "$basePath/components/$option/$name.class.php" )) {
+				$this->_path->class = "$basePath/components/$option/$name.class.php";
+			} else if (file_exists( "$basePath/administrator/components/$option/$name.class.php" )) {
+				$this->_path->class = "$basePath/administrator/components/$option/$name.class.php";
+			} else if (file_exists( "$basePath/classes/$name.php" )) {
+				$this->_path->class = "$basePath/classes/$name.php";
+			}
+			break;
+
+			default:
+			// core
+			if (file_exists( "$basePath/administrator/$option.php" )) {
+				$this->_path->admin = "$basePath/administrator/$option.php";
+			}
+			if (file_exists( "$basePath/administrator/menubar/$option.php" )) {
+				$this->_path->toolbar = "$basePath/administrator/menubar/$option.php";
+			}
+			if (file_exists( "$basePath/components/com_$option/$option.php" )) {
+				$this->_path->front = "$basePath/components/com_$option/$option.php";
+				$this->_path->front_html = "$basePath/components/com_$option/$option.php";
+			}
+			break;
+		}
+	}
+	/**
+	* Returns a stored path variable
+	*
+	*/
+	function getPath( $varname, $option='' ) {
+		if ($option) {
+			$temp = $this->_path;
+			$this->_setAdminPaths( $option, $this->getCfg( 'absolute_path' ) );
+		}
+		$result = null;
+		if (isset( $this->_path->$varname )) {
+			$result = $this->_path->$varname;
+		}
+		if ($option) {
+			$this->_path = $temp;
+		}
+		return $result;
+	}
+	/**
+	* Detects a 'visit'
+	*
+	* This function updates the agent and domain table hits for a particular
+	* visitor.  The user agent is recorded/incremented if this is the first visit.
+	* A cookie is set to mark the first visit.
+	*/
+	function detect() {
+		if (mosGetParam( $_COOKIE, 'mosvisitor', 0 )) {
+			return;
+		}
+		setcookie( "mosvisitor", "1" );
+
+		if (phpversion() <= "4.2.1") {
+			$agent = getenv( "HTTP_USER_AGENT" );
+			$domain = gethostbyaddr( getenv( "REMOTE_ADDR" ) );
+		} else {
+			$agent = $_SERVER['HTTP_USER_AGENT'];
+			$domain = gethostbyaddr( $_SERVER['REMOTE_ADDR'] );
+		}
+
+		$browser = mosGetBrowser( $agent );
+
+		$this->_db->setQuery( "SELECT count(*) FROM #__stats_agents WHERE agent='$browser' AND type='0'" );
+		if ($this->_db->loadResult()) {
+			$this->_db->setQuery( "UPDATE #__stats_agents SET hits=(hits+1) WHERE agent='$browser' AND type='0'" );
+		} else {
+			$this->_db->setQuery( "INSERT INTO #__stats_agents (agent,type) VALUES ('$browser','0')" );
+		}
+		$this->_db->query();
+
+		$os = mosGetOS( $agent );
+
+		$this->_db->setQuery( "SELECT count(*) FROM #__stats_agents WHERE agent='$os' AND type='1'" );
+		if ($this->_db->loadResult()) {
+			$this->_db->setQuery( "UPDATE #__stats_agents SET hits=(hits+1) WHERE agent='$os' AND type='1'" );
+		} else {
+			$this->_db->setQuery( "INSERT INTO #__stats_agents (agent,type) VALUES ('$os','1')" );
+		}
+		$this->_db->query();
+
+		// tease out the last element of the domain
+		$tldomain = split( "\.", $domain );
+		$tldomain = $tldomain[count( $tldomain )-1];
+
+		if (is_numeric( $tldomain )) {
+			$tldomain = "Unknown";
+		}
+
+		$this->_db->setQuery( "SELECT count(*) FROM #__stats_agents WHERE agent='$tldomain' AND type='2'" );
+		if ($this->_db->loadResult()) {
+			$this->_db->setQuery( "UPDATE #__stats_agents SET hits=(hits+1) WHERE agent='$tldomain' AND type='2'" );
+		} else {
+			$this->_db->setQuery( "INSERT INTO #__stats_agents (agent,type) VALUES ('$tldomain','2')" );
+		}
+		$this->_db->query();
+	}
+}
+
+/**
+* Utility class for all HTML drawing classes
+*/
+class mosHTML {
+	function makeOption( $value, $text='' ) {
+		$obj = new stdClass;
+		$obj->value = $value;
+		$obj->text = $text ? $text : $value;
+		return $obj;
+	}
+	/**
+	* Generates an HTML select list
+	* @param array An array of objects
+	* @param string The value of the HTML name attribute
+	* @param string Additional HTML attributes for the <select> tag
+	* @param string The name of the object varible for the option value
+	* @param string The name of the object varible for the option text
+	* @param mixed The key that is selected
+	* @returns string HTML for the select list
+	*/
+	function selectList( &$arr, $tag_name, $tag_attribs, $key, $text, $selected ) {
+		reset( $arr );
+		$html = "\n<select name=\"$tag_name\" $tag_attribs>";
+		for ($i=0, $n=count( $arr ); $i < $n; $i++ ) {
+			$k = $arr[$i]->$key;
+			$t = $arr[$i]->$text;
+
+			$sel = '';
+			if (is_array( $selected )) {
+				foreach ($selected as $obj) {
+					$k2 = $obj->$key;
+					if ($k == $k2) {
+						$sel = " selected=\"selected\"";
+						break;
+					}
+				}
+			} else {
+				$sel = ($k == $selected ? " selected=\"selected\"" : '');
+			}
+			$html .= "\n\t<option value=\"".$k."\"$sel>" . $t . "</option>";
+		}
+		$html .= "\n</select>\n";
+		return $html;
+	}
+	/**
+	* Writes a select list of integers
+	* @param int The start integer
+	* @param int The end integer
+	* @param int The increment
+	* @param string The value of the HTML name attribute
+	* @param string Additional HTML attributes for the <select> tag
+	* @param mixed The key that is selected
+	* @param string The printf format to be applied to the number
+	* @returns string HTML for the select list
+	*/
+	function integerSelectList( $start, $end, $inc, $tag_name, $tag_attribs, $selected, $format="" ) {
+		$start = intval( $start );
+		$end = intval( $end );
+		$inc = intval( $inc );
+		$arr = array();
+		for ($i=$start; $i <= $end; $i+=$inc) {
+			$fi = $format ? sprintf( "$format", $i ) : "$i";
+			$arr[] = mosHTML::makeOption( $fi, $fi );
+		}
+
+		return mosHTML::selectList( $arr, $tag_name, $tag_attribs, 'value', 'text', $selected );
+	}
+	/**
+	* Writes a select list of month names based on Language settings
+	* @param string The value of the HTML name attribute
+	* @param string Additional HTML attributes for the <select> tag
+	* @param mixed The key that is selected
+	* @returns string HTML for the select list values
+	*/
+	function monthSelectList( $tag_name, $tag_attribs, $selected ) {
+		$arr = array(
+		mosHTML::makeOption( '01', _JAN ),
+		mosHTML::makeOption( '02', _FEB ),
+		mosHTML::makeOption( '03', _MAR ),
+		mosHTML::makeOption( '04', _APR ),
+		mosHTML::makeOption( '05', _MAY ),
+		mosHTML::makeOption( '06', _JUN ),
+		mosHTML::makeOption( '07', _JUL ),
+		mosHTML::makeOption( '08', _AUG ),
+		mosHTML::makeOption( '09', _SEP ),
+		mosHTML::makeOption( '10', _OCT ),
+		mosHTML::makeOption( '11', _NOV ),
+		mosHTML::makeOption( '12', _DEC )
+		);
+
+		return mosHTML::selectList( $arr, $tag_name, $tag_attribs, 'value', 'text', $selected );
+	}
+	/**
+	* Generates an HTML select list from a tree based query list
+	* @param array Source array with id and parent fields
+	* @param array The id of the current list item
+	* @param array Target array.  May be an empty array.
+	* @param array An array of objects
+	* @param string The value of the HTML name attribute
+	* @param string Additional HTML attributes for the <select> tag
+	* @param string The name of the object varible for the option value
+	* @param string The name of the object varible for the option text
+	* @param mixed The key that is selected
+	* @returns string HTML for the select list
+	*/
+	function treeSelectList( &$src_list, $src_id, $tgt_list, $tag_name, $tag_attribs, $key, $text, $selected ) {
+
+		// establish the hierarchy of the menu
+		$children = array();
+		// first pass - collect children
+		foreach ($src_list as $v ) {
+			$pt = $v->parent;
+			$list = @$children[$pt] ? $children[$pt] : array();
+			array_push( $list, $v );
+			$children[$pt] = $list;
+		}
+		// second pass - get an indent list of the items
+		$ilist = mosTreeRecurse( 0, '', array(), $children );
+
+		// assemble menu items to the array
+		$this_treename = '';
+		foreach ($ilist as $item) {
+			if ($this_treename) {
+				if ($item->id != $src_id && strpos( $item->treename, $this_treename ) === false) {
+					$tgt_list[] = mosHTML::makeOption( $item->id, $item->treename );
+				}
+			} else {
+				if ($item->id != $src_id) {
+					$tgt_list[] = mosHTML::makeOption( $item->id, $item->treename );
+				} else {
+					$this_treename = "$item->treename/";
+				}
+			}
+		}
+		// build the html select list
+		return mosHTML::selectList( $tgt_list, $tag_name, $tag_attribs, $key, $text, $selected );
+	}
+	/**
+	* Writes a yes/no select list
+	* @param string The value of the HTML name attribute
+	* @param string Additional HTML attributes for the <select> tag
+	* @param mixed The key that is selected
+	* @returns string HTML for the select list values
+	*/
+	function yesnoSelectList( $tag_name, $tag_attribs, $selected ) {
+		$arr = array(
+		mosHTML::makeOption( '0', _CMN_NO ),
+		mosHTML::makeOption( '1', _CMN_YES ),
+		);
+
+		return mosHTML::selectList( $arr, $tag_name, $tag_attribs, 'value', 'text', $selected );
+	}
+
+	function keySelectList( $key_context, $key_name, $tag_name, $tag_attribs, $selected ) {
+		global $database;
+
+		$database->setQuery( "SELECT a.id FROM #__core_lookup_keys AS a"
+		. "\nWHERE a.context='$key_context' AND a.name='$key_name'"
+		);
+		$key_id = intval( $database->loadResult() );
+		echo $database->getErrorMsg();
+
+		$database->setQuery( "SELECT a.id AS value, a.name AS text FROM #__core_lookup_labels AS a"
+		. "\nWHERE a.key_id='$key_id'"
+		. "\nORDER BY a.ordering, a.name"
+		);
+		$arr = $database->loadObjectList();
+		echo $database->getErrorMsg();
+
+		return mosHTML::selectList( $arr, $tag_name, $tag_attribs, 'value', 'text', $selected );
+	}
+
+	function sortIcon( $base_href, $field, $state='none' ) {
+		global $mosConfig_live_site;
+
+		$alts = array(
+		'none' => _CMN_SORT_NONE,
+		'asc' => _CMN_SORT_ASC,
+		'desc' => _CMN_SORT_DESC,
+		);
+		$next_state = 'asc';
+		if ($state == 'asc') {
+			$next_state = 'desc';
+		} else if ($state == 'desc') {
+			$next_state = 'none';
+		}
+
+		$html = "<a href=\"$base_href&field=$field&order=$next_state\">"
+		. "<img src=\"$mosConfig_live_site/images/M_images/sort_$state.png\" width=\"12\" height=\"12\" border=\"0\" alt=\"{$alts[$next_state]}\" />"
+		. "</a>";
+		return $html;
+	}
+}
+
+/**
+* Category database table class
+*/
+class mosCategory extends mosDBTable {
+	/** @var int Primary key */
+	var $id=null;
+	/** @var string The menu title for the Category (a short name)*/
+	var $title=null;
+	/** @var string The full name for the Category*/
+	var $name=null;
+	/** @var string */
+	var $image=null;
+	/** @var string */
+	var $section=null;
+	/** @var int */
+	var $image_position=null;
+	/** @var string */
+	var $description=null;
+	/** @var boolean */
+	var $published=null;
+	/** @var boolean */
+	var $checked_out=null;
+	/** @var time */
+	var $checked_out_time=null;
+	/** @var int */
+	var $ordering=null;
+	/** @var int */
+	var $access=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosCategory( &$db ) {
+		$this->mosDBTable( '#__categories', 'id', $db );
+	}
+	// overloaded check function
+	function check() {
+		// check for valid name
+		if (trim( $this->title ) == '') {
+			$this->_error = "Your Category must contain a title.";
+			return false;
+		}
+		if (trim( $this->name ) == '') {
+			$this->_error = "Your Category must have a name.";
+			return false;
+		}
+		// check for existing name
+		$this->_db->setQuery( "SELECT id FROM #__categories "
+		. "\nWHERE name='".$this->name."' AND section='".$this->section."'"
+		);
+
+		$xid = intval( $this->_db->loadResult() );
+		if ($xid && $xid != intval( $this->id )) {
+			$this->_error = "There is a category already with that name, please try again.";
+			return false;
+		}
+		return true;
+	}
+}
+
+/**
+* Section database table class
+*/
+class mosSection extends mosDBTable {
+	/** @var int Primary key */
+	var $id=null;
+	/** @var string The menu title for the Section (a short name)*/
+	var $title=null;
+	/** @var string The full name for the Section*/
+	var $name=null;
+	/** @var string */
+	var $image=null;
+	/** @var string */
+	var $scope=null;
+	/** @var int */
+	var $image_position=null;
+	/** @var string */
+	var $description=null;
+	/** @var boolean */
+	var $published=null;
+	/** @var boolean */
+	var $checked_out=null;
+	/** @var time */
+	var $checked_out_time=null;
+	/** @var int */
+	var $ordering=null;
+	/** @var int */
+	var $access=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosSection( &$db ) {
+		$this->mosDBTable( '#__sections', 'id', $db );
+	}
+	// overloaded check function
+	function check() {
+		// check for valid name
+		if (trim( $this->title ) == '') {
+			$this->_error = "Your Section must contain a title.";
+			return false;
+		}
+		if (trim( $this->name ) == '') {
+			$this->_error = "Your Section must have a name.";
+			return false;
+		}
+		// check for existing name
+		$this->_db->setQuery( "SELECT id FROM #__sections "
+		. "\nWHERE name='$this->name' AND scope='$this->scope'"
+		);
+
+		$xid = intval( $this->_db->loadResult() );
+		if ($xid && $xid != intval( $this->id )) {
+			$this->_error = "There is a section already with that name, please try again.";
+			return false;
+		}
+		return true;
+	}
+}
+
+/**
+* Module database table class
+*/
+class mosContent extends mosDBTable {
+	/** @var int Primary key */
+	var $id=null;
+	/** @var string */
+	var $title=null;
+	/** @var string */
+	var $title_alias=null;
+	/** @var string */
+	var $introtext=null;
+	/** @var string */
+	var $fulltext=null;
+	/** @var int */
+	var $state=null;
+	/** @var int The id of the category section*/
+	var $sectionid=null;
+	/** @var int */
+	var $mask=null;
+	/** @var int */
+	var $catid=null;
+	/** @var datetime */
+	var $created=null;
+	/** @var int User id*/
+	var $created_by=null;
+	/** @var string An alias for the author*/
+	var $created_by_alias=null;
+	/** @var datetime */
+	var $modified=null;
+	/** @var int User id*/
+	var $modified_by=null;
+	/** @var boolean */
+	var $checked_out=null;
+	/** @var time */
+	var $checked_out_time=null;
+	/** @var datetime */
+	var $frontpage_up=null;
+	/** @var datetime */
+	var $frontpage_down=null;
+	/** @var datetime */
+	var $publish_up=null;
+	/** @var datetime */
+	var $publish_down=null;
+	/** @var string */
+	var $images=null;
+	/** @var string */
+	var $attribs=null;
+	/** @var int */
+	var $version=null;
+	/** @var int */
+	var $parentid=null;
+	/** @var int */
+	var $ordering=null;
+	/** @var string */
+	var $metakey=null;
+	/** @var string */
+	var $metadesc=null;
+	/** @var int */
+	var $access=null;
+	/** @var int */
+	var $hits=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosContent( &$db ) {
+		$this->mosDBTable( '#__content', 'id', $db );
+	}
+
+	function check() {
+		$this->introtext = trim( $this->introtext );
+		$this->fulltext = trim( $this->fulltext );
+
+		if (trim( str_replace( '&nbsp;', '', $this->fulltext ) ) == '') {
+			$this->fulltext = '';
+		}
+
+		return true;
+	}
+
+	/**
+	* Search method
+	*
+	* The sql must return the following fields that are used in a common display
+	* routine: href, title, section, created, text, browsernav
+	* @param string Target search string
+	* @param integer The state to search for -1=archived, 0=unpublished, 1=published [default]
+	* @param string A prefix for the section label, eg, 'Archived '
+	*/
+	function search( $text, $state='1', $sectionPrefix='' ) {
+		global $my;
+		global $mosConfig_abolute_path, $mosConfig_lang;
+
+		$text = strtolower( trim( $text ) );
+		$state = intval( $state );
+		if ($text == '') {
+			return array();
+		}
+
+		$where = array();
+		$where[] = "LOWER(a.title) LIKE '%$text%'";
+		$where[] = "LOWER(a.introtext) LIKE '%$text%'";
+		$where[] = "LOWER(a.fulltext) LIKE '%$text%'";
+		$where[] = "LOWER(a.metakey) LIKE '%$text%'";
+		$where[] = "LOWER(a.metadesc) LIKE '%$text%'";
+
+		$this->_db->setQuery( "SELECT a.title AS title,"
+		. "\n	DATE_FORMAT(a.created,'%d %b') AS created,"
+		. "\n	a.introtext AS text,"
+		. "\n	CONCAT_WS('','$sectionPrefix',u.title,'/',b.title) AS section,"
+		. "\n	CONCAT('index.php?option=content&task=view&id=',a.id) AS href,"
+		. "\n	'2' AS browsernav"
+		. "\nFROM #__content AS a"
+		. "\nINNER JOIN #__categories AS b ON b.id=a.catid AND b.access <='$my->gid'"
+		. "\nLEFT JOIN #__sections AS u ON u.id = a.sectionid"
+		. "\nWHERE (".(implode( ' OR ', $where ) ).")"
+		. "\n	AND a.state='$state' AND a.access<='$my->gid'"
+		. "\nORDER BY created DESC"
+		);
+
+		$list = $this->_db->loadObjectList();
+
+		// search typed content
+		$this->_db->setQuery( "SELECT a.title, DATE_FORMAT(a.created,'%d %b') AS created,"
+		. "\n	a.introtext AS text,"
+		. "\n	CONCAT('index.php?option=content&task=view&id=',a.id,'&Itemid=',m.id) AS href,"
+		. "\n	'2' as browsernav, '{$sectionPrefix}Typed' AS section"
+		. "\nFROM #__content AS a"
+		. "\nLEFT JOIN #__menu AS m ON m.componentid = a.id"
+		. "\nWHERE (".(implode( ' OR ', $where ) ).")"
+		. "\nAND a.state='$state' AND a.access<='$my->gid' AND m.type='content_typed'"
+		. "\nORDER BY created DESC"
+		);
+		//print_r ($this->_db->loadObjectList());
+		$list2 = $this->_db->loadObjectList();
+
+		return array_merge( $list, $list2 );
+	}
+
+
+	/**
+	* @param string Target search typed content string
+	* @param integer The state to search for -1=archived, 0=unpublished, 1=published [default]
+	*/
+	function search_typed( $text, $state='1' ) {
+		global $my;
+		$text = trim( $text );
+		$state = intval( $state );
+		if ($text == '') {
+			return array();
+		}
+
+		$this->_db->setQuery( "SELECT a.id, a.title, DATE_FORMAT(a.created,'%d %b') AS created, a.modified, a.catid, a.introtext AS text,"
+		. " CONCAT('index.php?option=content&task=view&id=',a.id,'&Itemid=',m.id) AS href"
+		. "\nFROM #__content AS a"
+		. "\nLEFT JOIN #__menu AS m ON m.componentid = a.id"
+		. "\nWHERE (a.title LIKE '%$text%' OR a.introtext LIKE '%$text%' OR a.fulltext LIKE '%$text%')"
+		. "\nAND a.state='$state' AND a.access<='$my->gid' AND m.type='content_typed'"
+		. "\nORDER BY created DESC"
+		);
+		//print_r ($this->_db->loadObjectList());
+		return $this->_db->loadObjectList();
+	}
+}
+
+/**
+* Module database table class
+*/
+class mosMenu extends mosDBTable {
+	/** @var int Primary key */
+	var $id=null;
+	/** @var string */
+	var $menutype=null;
+	/** @var string */
+	var $name=null;
+	/** @var string */
+	var $link=null;
+	/** @var int */
+	var $type=null;
+	/** @var int */
+	var $published=null;
+	/** @var int */
+	var $componentid=null;
+	/** @var int */
+	var $parent=null;
+	/** @var int */
+	var $sublevel=null;
+	/** @var int */
+	var $ordering=null;
+	/** @var boolean */
+	var $checked_out=null;
+	/** @var datetime */
+	var $checked_out_time=null;
+	/** @var boolean */
+	var $pollid=null;
+
+	/** @var string */
+	var $browserNav=null;
+	/** @var int */
+	var $access=null;
+	/** @var int */
+	var $utaccess=null;
+	/** @var string */
+	var $params=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosMenu( &$db ) {
+		$this->mosDBTable( '#__menu', 'id', $db );
+	}
+}
+
+/**
+* Users Table Class
+*
+* Provides access to the mos_templates table
+*/
+class mosUser extends mosDBTable {
+	/** @var int Unique id*/
+	var $id=null;
+	/** @var string The users real name (or nickname)*/
+	var $name=null;
+	/** @var string The login name*/
+	var $username=null;
+	/** @var string email*/
+	var $email=null;
+	/** @var string MD5 encrypted password*/
+	var $password=null;
+	/** @var string */
+	var $usertype=null;
+	/** @var int */
+	var $block=null;
+	/** @var int */
+	var $sendEmail=null;
+	/** @var int The group id number */
+	var $gid=null;
+	/** @var datetime */
+	var $registerDate=null;
+	/** @var datetime */
+	var $lastvisitDate=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosUser( &$database ) {
+		$this->mosDBTable( '#__users', 'id', $database );
+	}
+
+	function check()
+	{
+		// Validate user information
+		if (trim( $this->name ) == '') {
+			$this->_error = _REGWARN_NAME;
+			return false;
+		}
+
+		if (trim( $this->username ) == '') {
+			$this->_error = _REGWARN_UNAME;
+			return false;
+		}
+
+		if (eregi( "[^0-9A-Za-z]", $this->username)) {
+			$this->_error = sprintf( _VALID_AZ09, "login name." );
+			return false;
+		}
+
+		if ((trim($this->email == "")) || (preg_match("/[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}/", $this->email )==false)) {
+			$this->_error = _REGWARN_MAIL;
+			return false;
+		}
+
+		// check for existing name
+		$this->_db->setQuery( "SELECT id FROM #__users "
+		. "\nWHERE username='$this->username' AND id!='$this->id'"
+		);
+
+		$xid = intval( $this->_db->loadResult() );
+		if ($xid && $xid != intval( $this->id )) {
+			$this->_error = _REGWARN_INUSE;
+			return false;
+		}
+
+		return true;
+	}
+
+	function store( $updateNulls=false ) {
+		global $acl, $migrate;
+		$section_value = 'users';
+
+		$k = $this->_tbl_key;
+		$key =  $this->$k;
+		if( $key && !$migrate) {
+			// existing record
+			$ret = $this->_db->updateObject( $this->_tbl, $this, $this->_tbl_key, $updateNulls );
+			// syncronise ACL
+			// single group handled at the moment
+			// trivial to expand to multiple groups
+			$groups = $acl->get_object_groups( $section_value, $this->$k, 'ARO' );
+			$acl->del_group_object( $groups[0], $section_value, $this->$k, 'ARO' );
+			$acl->add_group_object( $this->gid, $section_value, $this->$k, 'ARO' );
+
+			$object_id = $acl->get_object_id( $section_value, $this->$k, 'ARO' );
+			$acl->edit_object( $object_id, $section_value, $this->name, $this->$k, null, null, 'ARO' );
+		} else {
+			// new record
+			$ret = $this->_db->insertObject( $this->_tbl, $this, $this->_tbl_key );
+			// syncronise ACL
+			$acl->add_object( $section_value, $this->name, $this->$k, null, null, 'ARO' );
+			$acl->add_group_object( $this->gid, $section_value, $this->$k, 'ARO' );
+		}
+		if( !$ret ) {
+			$this->_error = get_class( $this )."::store failed <br>" . $this->_db->getErrorMsg();
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	function delete( $oid=null ) {
+		global $acl;
+		$k = $this->_tbl_key;
+		if ($oid) {
+			$this->$k = intval( $oid );
+		}
+		$aro_id = $acl->get_object_id( 'users', $this->$k, 'ARO' );
+		$acl->del_object( $aro_id, 'ARO', true );
+
+		$this->_db->setQuery( "DELETE FROM $this->_tbl WHERE $this->_tbl_key = '".$this->$k."'" );
+
+		if ($this->_db->query()) {
+			// cleanup related data
+
+			// :: private messaging
+			$this->_db->setQuery( "DELETE FROM #__messages_cfg WHERE user_id='".$this->$k."'" );
+			if (!$this->_db->query()) {
+				$this->_error = $this->_db->getErrorMsg();
+				return false;
+			}
+			$this->_db->setQuery( "DELETE FROM #__messages WHERE user_id_to='".$this->$k."'" );
+			if (!$this->_db->query()) {
+				$this->_error = $this->_db->getErrorMsg();
+				return false;
+			}
+
+			return true;
+		} else {
+			$this->_error = $this->_db->getErrorMsg();
+			return false;
+		}
+	}
+}
+
+/**
+* Template Table Class
+*
+* Provides access to the mos_templates table
+*/
+class mosTemplate extends mosDBTable {
+	/** @var int */
+	var $id=null;
+	/** @var string */
+	var $cur_template=null;
+	/** @var int */
+	var $col_main=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosTemplate( &$database ) {
+		$this->mosDBTable( '#__templates', 'id', $database );
+	}
+}
+
+/**
+* Utility function to return a value from a named array or a specified default
+*/
+function mosGetParam( &$arr, $name, $def=null ) {
+	return isset( $arr[$name] ) ? $arr[$name] : $def;
+}
+
+/**
+* Copy the named array content into the object as properties
+* only existing properties of object are filled. when undefined in hash, properties wont be deleted
+* @param array the input array
+* @param obj byref the object to fill of any class
+* @param string
+* @param boolean
+*/
+function mosBindArrayToObject( $array, &$obj, $prefix=NULL, $checkSlashes=true ) {
+	if (!is_array( $array ) || !is_object( $obj )) {
+		return (false);
+	}
+
+	if ($prefix) {
+		foreach (get_object_vars($obj) as $k => $v) {
+			if (isset($array[$prefix . $k ])) {
+				$obj->$k = ($checkSlashes && get_magic_quotes_gpc()) ? stripslashes( $array[$k] ) : $array[$k];
+			}
+		}
+	} else {
+		foreach (get_object_vars($obj) as $k => $v) {
+			if (isset($array[$k])) {
+				$obj->$k = ($checkSlashes && get_magic_quotes_gpc()) ? stripslashes( $array[$k] ) : $array[$k];
+			}
+		}
+	}
+
+	return true;
+}
+
+/**
+* Utility function to read the files in a directory
+* @param string The file system path
+* @param string A filter for the names
+*/
+function mosReadDirectory( $path, $filter='.' ) {
+	$arr = array();
+	if (!@is_dir( $path )) {
+		return $arr;
+	}
+	$handle = opendir( $path );
+
+	while ($file = readdir($handle)) {
+		if (($file <> ".") && ($file <> "..") && preg_match( "/$filter/", $file )) {
+			//check for xml files with two periods . in the title : for example template.xml.bak which we want to avoid
+			if ($filter == ".xml"){
+				$file_count = explode(".",$file);
+				if (count($file_count) == "2"){
+					$arr[] = trim( $file );
+				}
+			} else {
+				$arr[] = trim( $file );
+			}
+
+		}
+	}
+	closedir($handle);
+	asort($arr);
+	return $arr;
+}
+
+/**
+* Utility function redirect the browser location to another url
+*
+* Can optionally provide a message.
+* @param string The file system path
+* @param string A filter for the names
+*/
+function mosRedirect( $url, $msg='' ) {
+	if (trim( $msg )) {
+		if (strpos( $url, '?' )) {
+			$url .= "&mosmsg=$msg";
+		} else {
+			$url .= "?mosmsg=$msg";
+		}
+	}
+
+	if (headers_sent()) {
+		echo "<script>document.location.href='$url';</script>\n";
+	} else {
+		header( "Location: $url" );
+		//header ("Refresh: 0 url=$url");
+	}
+	exit();
+}
+
+function mosTreeRecurse($id, $indent, $list, &$children, $maxlevel=9999, $level=0) {
+	if (@$children[$id] && $level <= $maxlevel) {
+		foreach ($children[$id] as $v) {
+			$id = $v->id;
+			$txt = $v->name;
+			$pt = $v->parent;
+			$list[$id] = $v;
+			$list[$id]->treename = "$indent$txt";
+			$list[$id]->children = count( @$children[$id] );
+			$list = mosTreeRecurse( $id, "$indent$txt/", $list, $children, $maxlevel, $level+1 );
+		}
+	}
+	return $list;
+}
+
+/**
+** Function to strip additional / or \ in a path name
+*/
+
+function mosPathName($p_path,$p_addtrailingslash = true)
+{
+	$retval = "";
+
+	if((substr(PHP_OS, 0, 3) == 'WIN' && stristr ( $_SERVER["SERVER_SOFTWARE"], "microsoft")))
+	{
+		$retval = str_replace('/','\\',$p_path);
+		if($p_addtrailingslash)
+		{
+			if(substr($retval,-1) != '\\')
+			$retval .= '\\';
+		}
+
+		// Remove double \\
+		$retval = str_replace('\\\\','\\',$retval);
+	}
+	else
+	{
+		$retval = str_replace('\\','/',$p_path);
+		if($p_addtrailingslash)
+		{
+			if(substr($retval,-1) != '/')
+			$retval .= '/';
+		}
+
+		// Remove double //
+		$retval = str_replace('//','/',$retval);
+	}
+
+	return $retval;
+
+}
+
+/**
+* Module database table class
+*/
+class mosModule extends mosDBTable {
+	/** @var int Primary key */
+	var $id=null;
+	/** @var string */
+	var $title=null;
+	/** @var string */
+	var $showtitle=null;
+	/** @var int */
+	var $content=null;
+	/** @var int */
+	var $ordering=null;
+	/** @var string */
+	var $position=null;
+	/** @var boolean */
+	var $checked_out=null;
+	/** @var time */
+	var $checked_out_time=null;
+	/** @var boolean */
+	var $published=null;
+	/** @var string */
+	var $module=null;
+	/** @var int */
+	var $numnews=null;
+	/** @var int */
+	var $access=null;
+	/** @var string */
+	var $params=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosModule( &$db ) {
+		$this->mosDBTable( '#__modules', 'id', $db );
+	}
+	// overloaded check function
+	function check() {
+		// check for valid name
+		if (trim( $this->title ) == '') {
+			$this->_error = "Your Module must contain a title.";
+			return false;
+		}
+		// check for existing title
+		$this->_db->setQuery( "SELECT id FROM #__modules"
+		. "\nWHERE title='$this->title'"
+		);
+
+		$xid = intval( $this->_db->loadResult() );
+		if ($xid && $xid != intval( $this->id )) {
+			$this->_error = "There is a module already with that name, please try again.";
+			return false;
+		}
+		return true;
+	}
+}
+
+/**
+* Session database table class
+*/
+class mosSession extends mosDBTable {
+	/** @var int Primary key */
+	var $session_id=null;
+	/** @var string */
+	var $time=null;
+	/** @var string */
+	var $userid=null;
+	/** @var string */
+	var $usertype=null;
+	/** @var string */
+	var $username=null;
+	/** @var time */
+	var $gid=null;
+	/** @var int */
+	var $guest=null;
+
+	var $_session_cookie=null;
+
+	/**
+	* @param database A database connector object
+	*/
+	function mosSession( &$db ) {
+		$this->mosDBTable( '#__session', 'session_id', $db );
+	}
+
+	function insert() {
+		$ret = $this->_db->insertObject( $this->_tbl, $this );
+
+		if( !$ret ) {
+			$this->_error = get_class( $this )."::store failed <br>" . $this->_db->stderr();
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	function update( $updateNulls=false ) {
+		$ret = $this->_db->updateObject( $this->_tbl, $this, 'session_id', $updateNulls );
+
+		if( !$ret ) {
+			$this->_error = get_class( $this )."::store failed <br>" . $this->_db->stderr();
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	function generateId() {
+		$failsafe = 20;
+		$randnum = 0;
+		while ($failsafe--) {
+			$randnum = md5( uniqid( microtime(), 1 ) );
+			if ($randnum != "") {
+				$cryptrandnum = md5( $randnum );
+				$this->_db->setQuery( "SELECT $this->_tbl_key FROM $this->_tbl WHERE $this->_tbl_key=MD5('$randnum')" );
+				if(!$result = $this->_db->query()) {
+					die( $this->_db->stderr( true ));
+					// todo: handle gracefully
+				}
+				if ($this->_db->getNumRows($result) == 0) {
+					break;
+				}
+			}
+		}
+		$this->_session_cookie = $randnum;
+		$this->session_id = md5( $randnum );
+	}
+
+	function getCookie() {
+		return $this->_session_cookie;
+	}
+
+	function purge( $inc=1800 ) {
+		$past = time() - $inc;
+		$query = "DELETE FROM $this->_tbl"
+		. "\nWHERE (time < $past) AND (usertype <> 'administrator' AND usertype <> 'superadministrator')";
+		$this->_db->setQuery($query);
+
+		return $this->_db->query();
+	}
+}
+
+
+function mosObjectToArray($p_obj)
+{
+	$retarray = null;
+	if(is_object($p_obj))
+	{
+		$retarray = array();
+		foreach (get_object_vars($p_obj) as $k => $v)
+		{
+			if(is_object($v))
+			$retarray[$k] = mosObjectToArray($v);
+			else
+			$retarray[$k] = $v;
+		}
+	}
+	return $retarray;
+}
+/**
+* Checks the user agent string against known browsers
+*/
+function mosGetBrowser( $agent ) {
+	require( "includes/agent_browser.php" );
+
+	if (preg_match( "/msie[\/\sa-z]*([\d\.]*)/i", $agent, $m )
+	&& !preg_match( "/webtv/i", $agent )
+	&& !preg_match( "/omniweb/i", $agent )
+	&& !preg_match( "/opera/i", $agent )) {
+		// IE
+		return "MS Internet Explorer $m[1]";
+	} else if (preg_match( "/netscape.?\/([\d\.]*)/i", $agent, $m )) {
+		// Netscape 6.x, 7.x ...
+		return "Netscape $m[1]";
+	} else if ( preg_match( "/mozilla[\/\sa-z]*([\d\.]*)/i", $agent, $m )
+	&& !preg_match( "/gecko/i", $agent )
+	&& !preg_match( "/compatible/i", $agent )
+	&& !preg_match( "/opera/i", $agent )
+	&& !preg_match( "/galeon/i", $agent )
+	&& !preg_match( "/safari/i", $agent )) {
+		// Netscape 3.x, 4.x ...
+		return "Netscape $m[2]";
+	} else {
+		// Other
+		$found = false;
+		foreach ($browserSearchOrder as $key) {	# Search ID in order of BrowsersSearchIDOrder
+		if (preg_match( "/$key.?\/([\d\.]*)/i", $agent, $m )) {
+			$name = "$browsersAlias[$key] $m[1]";
+			return $name;
+			break;
+		}
+		}
+	}
+
+	return 'Unknown';
+}
+/**
+* Checks the user agent string against known operating systems
+*/
+function mosGetOS( $agent ) {
+	require( "includes/agent_os.php" );
+
+	foreach ($osSearchOrder as $key) {	# Search ID in order of osSearchIDOrder
+	if (preg_match( "/$key/i", $agent )) {
+		return $osAlias[$key];
+		break;
+	}
+	}
+
+	return 'Unknown';
+}
+
+/**
+* @param string SQL with ordering As value and 'name field' AS text
+*/
+function mosGetOrderingList( $sql ) {
+	global $database;
+
+	$order = array();
+	$database->setQuery( $sql );
+	if (!($orders = $database->loadObjectList())) {
+		if ($database->getErrorNum()) {
+			echo $database->stderr();
+			return false;
+		} else {
+			$order[] = mosHTML::makeOption( 1, 'first' );
+			return $order;
+		}
+	}
+	for ($i=0, $n=count( $orders ); $i < $n; $i++) {
+		$order[] = mosHTML::makeOption( $orders[$i]->value, $orders[$i]->value.' (Currently: '.$orders[$i]->text.')' );
+	}
+	$order[] = mosHTML::makeOption( $orders[$i-1]->value+1, ($orders[$i-1]->value+1).' last' );
+
+	return $order;
+}
+
+/**
+* Makes a variable safe to display in forms
+*
+* Object parameters that are non-string, array, object or start with underscore
+* will be converted
+* @param object An object to be parsed
+* @param int The optional quote style for the htmlspecialchars function
+* @param string|array An optional single field name or array of field names not
+*                     to be parsed (eg, for a textarea)
+*/
+function mosMakeHtmlSafe( &$mixed, $quote_style=null, $exclude_keys='' ) {
+	if (is_object( $mixed )) {
+		foreach (get_object_vars( $mixed ) as $k => $v) {
+			if (is_array( $v ) || is_object( $v ) || $v == NULL || substr( $k, 1, 1 ) == '_' ) {
+				continue;
+			}
+			if (is_string( $exclude_keys ) && $k == $exclude_keys) {
+				continue;
+			} else if (is_array( $exclude_keys ) && in_array( $k, $exclude_keys )) {
+				continue;
+			}
+			$mixed->$k = htmlspecialchars( $v, $quote_style );
+		}
+	}
+}
+
+/**
+* Checks whether a menu option is within the users access level
+* @param int Item id number
+* @param string The menu option
+* @param int The users group ID number
+* @param database A database connector object
+* @return boolean True if the visitor's group at least equal to the menu access
+*/
+function mosMenuCheck( $Itemid, $menu_option, $gid, &$db ) {
+	$dblink="index.php?option=$menu_option";
+	$db->setQuery( "SELECT access FROM #__menu WHERE id='$Itemid' OR link='$dblink'" );
+	$access = intval( $db->loadResult() );
+	return ($access <= $gid);
+}
+
+function mosFormatDate( $date, $format=_DATE_FORMAT_LC ){
+	global $mosConfig_offset;
+	if ( $date && ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs ) ) {
+		$date = mktime( $regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1] );
+		$date = $date > -1 ? strftime( $format, $date + ($mosConfig_offset*3600) ) : '-';
+	}
+	return $date;
+}
+
+function mosCreateGUID(){
+	$r = mt_rand();
+	$u = uniqid(getmypid() . $r . (double)microtime()*1000000,1);
+	$m = md5($u);
+	return($m);
+}
+
+function mosCompressID( $ID ){
+	return(Base64_encode(pack("H*",$ID)));
+}
+
+function mosExpandID( $ID ) {
+	return ( implode(unpack("H*",Base64_decode($ID)), '') );
+}
+
+?>
diff -Naur gallery-1.5.1/contrib/joomla/gallery.php gallery-1.5.2/contrib/joomla/gallery.php
--- gallery-1.5.1/contrib/joomla/gallery.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/gallery.php	2006-01-06 07:31:33.000000000 +0100
@@ -0,0 +1,52 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Gallery Component for Mambo Open Source CMS v4.5 or newer
+ * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
+ *
+ * $Id: gallery.php,v 1.1.2.1 2006/01/06 06:31:33 jenst Exp $
+ */
+
+defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
+
+/* load the html drawing class */
+
+$database->setQuery("SELECT * FROM #__gallery");
+$param = $database->loadRowList();
+
+/* extract params from the DB query */
+$MOS_GALLERY_PARAMS = array();
+foreach ($param as $curr) {
+	$MOS_GALLERY_PARAMS[$curr[0]] = $curr[1];
+}
+
+if (!realpath($MOS_GALLERY_PARAMS['path'])) {
+	echo "Security Violation";
+	exit;
+} else {
+	if (! defined("MOS_GALLERY_PARAMS_PATH")) {
+		define ("MOS_GALLERY_PARAMS_PATH",$MOS_GALLERY_PARAMS['path']);
+	}
+}
+
+print '<table width="100%" cellpadding="4" cellspacing="0" border="0" align="center" class="contentpane">' . "\n<tr><td>\n";
+include(MOS_GALLERY_PARAMS_PATH . 'index.php');
+print "</td></tr>\n</table>\n";
+
+?>
diff -Naur gallery-1.5.1/contrib/joomla/gallery.xml gallery-1.5.2/contrib/joomla/gallery.xml
--- gallery-1.5.1/contrib/joomla/gallery.xml	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/gallery.xml	2006-01-06 07:31:33.000000000 +0100
@@ -0,0 +1,72 @@
+<?xml version="1.0" ?>
+<!--
+ | Gallery - a web based photo album viewer and editor
+ | Copyright (C) 2000-2006 Bharat Mediratta
+ |
+ | This program is free software; you can redistribute it and/or modify
+ | it under the terms of the GNU General Public License as published by
+ | the Free Software Foundation; either version 2 of the License, or (at
+ | your option) any later version.
+ |
+ | This program is distributed in the hope that it will be useful, but
+ | WITHOUT ANY WARRANTY; without even the implied warranty of
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ | General Public License for more details.
+ |
+ | You should have received a copy of the GNU General Public License
+ | along with this program; if not, write to the Free Software
+ | Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ |
+ | Gallery Component for Joomla! Open Source CMS v1.02 or newer
+ | Original author: Beckett Madden-Woods <beckett@beckettmw.com>
+ | Last author: Kai Tomalik <kai@gallery-addons.com>
+ |
+ | $Id: gallery.xml,v 1.1.2.2 2006/01/06 06:31:33 jenst Exp $
+-->
+<mosinstall type="component" version="1.05">
+	<name>Gallery</name>
+	<creationDate>December, 31st 2005</creationDate>
+	<author>Gallery Development Team</author>
+	<copyright>This component is released under the Gallery license (GNU General Public License)</copyright>
+	<authorEmail>gallery-devel@lists.sourceforge.net</authorEmail>
+	<authorUrl>gallery.sourceforge.net</authorUrl>
+	<version>1.5.2</version>
+	<description>Gallery Component For Joomla! 1.02 or newer</description>
+	<files>
+		<filename>gallery.php</filename>
+	</files>
+	<install>
+		<queries>
+			<query id="1">CREATE TABLE IF NOT EXISTS `#__gallery`
+			           ( `field` varchar(128) PRIMARY KEY,
+				     `value` text default '')
+			</query>
+			<query id="2">INSERT INTO `#__gallery` (`field`, `value`)
+			           VALUES ('path',          '')
+			</query>
+			<query id="3">INSERT INTO `#__gallery` (`field`, `value`)
+			           VALUES ('minAuthType',   '20')
+			</query>
+			<query id="4">INSERT INTO `#__gallery` (`field`, `value`)
+			           VALUES ('hideRightSide', '1')
+			</query>
+		</queries>
+	</install>
+	<uninstall>
+		<queries>
+			<query id="1">DELETE FROM `#__gallery`;</query>
+			<query id="2">DROP TABLE `#__gallery`;</query>
+		</queries>
+	</uninstall>
+	<administration>
+		<menu link="option=com_gallery">Gallery</menu>
+		<files>
+			<filename>admin.gallery.php</filename>
+			<filename>admin.gallery.html.php</filename>
+			<filename>toolbar.gallery.php</filename>
+		</files>
+		<images>
+			<filename>images/logo-228x67.png</filename>
+		</images>
+        </administration>
+</mosinstall>
diff -Naur gallery-1.5.1/contrib/joomla/HowTo.txt gallery-1.5.2/contrib/joomla/HowTo.txt
--- gallery-1.5.1/contrib/joomla/HowTo.txt	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/HowTo.txt	2005-10-17 19:46:12.000000000 +0200
@@ -0,0 +1,21 @@
+Hello,
+
+This a description what you have to do to integrate Gallery 1.5.2+ into joomla 1.0.2
+
+- Install Joomla
+
+- Install Gallery
+
+- Go to the Joomla 'Installers' and "install" Gallery as a Joomla component.
+  Enter the directory that has the gallery.xml file in it
+  (eg. /home/mysite/public_html/gallery/contrib/joomla)
+
+- Go into the component/gallery backend and fill in the location of the gallery component
+  (eg. /home/mysite/public_html/gallery)
+
+- Specify the minimum Joomla admin level required to gain editor access to the gallery
+
+- Edit your main menu and add a new Component item.  Select Gallery from the list of available components.
+  Mambo should do all the work of generating the link for you.
+
+Note: Gallery will use the Language corresponding to the Country Locale specified by Joomla.
diff -Naur gallery-1.5.1/contrib/joomla/images/logo-228x67.png gallery-1.5.2/contrib/joomla/images/logo-228x67.png
--- gallery-1.5.1/contrib/joomla/images/logo-228x67.png	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/images/logo-228x67.png	2005-10-17 19:46:12.000000000 +0200
@@ -0,0 +1,80 @@
+‰PNG
+
+   IHDR   ä   C   ,>Œ   tEXtSoftware GraphicConverter5]Hî  HÍIDATxœì}|ÇòÿÑBBI%Òó’÷^*Ð»)¦÷šéLïÕ@è½˜jcãŠî½÷n¹[¶dIV±ä&Kî–twÒvO
+¶‰“—÷ûýßûå>Ã°77»;wû½Ù™]I&H’¤(Š6P~AG‡8^.ißTW$ÿÝÝuf@»û³î÷?´;‚9×Fj*£C	/—´oª+’ÿîî:3 ‹ÝýY÷ûÚÁœë#5•ÀÑ¡Ž—KÚ7ÕÉwwÐÅîþ¬ûýíî/°þÖÿ˜îþë_`ýéî¯˜õ¯˜õÿ‹î ™¢-é fí0¡3¦fL»ÆTB:­þ:À?….¡3cSŒÓÂË%¦60µ
+NÁFb4à	e’?v¦c”˜vÇÜÝKèLbl¼ÃeÚ¸©‘]—üæ3i?R]‘t6š´ÉÑþA½ Aí¨5¿k4,ð¿²¡µµÕ4¶G«J#ªnÕ5#a»Ñ46Õ±g5ßh„é« >™¤è¦–V…BY])“ID!_È/•ó*+$òZysk­ÕiNËØ¾é™JL7`jeXÚ0¼¿’<Ÿ)t¿:à”6ˆh<Ë˜JžÏJÚç;4 3‰Ñ€Î”©Äh|×%/1 ý£3…ãË%¦F&ÕÎùáÛ^GS³Z(­WÔ·˜Ze4©½åp44·pkù\‘\cxt`J}³ªLªÌäT‹­*Rkxí‘ÙqÌJ£FIK«JÀ+Ëˆ‰v»r×ÚÿòN¿³›üN¯õ±^ísz­ßù­A·ŽD»ØdÅ…ËËUj’iÄ4X1"Þ(¡Mâ£¦VÑ†YÉØšQï»H (ÊÉ,ÊÉ(d¥/ÎÍ`x!+£0;Ÿ#¯­Q©Tü2Na6’ÀUF¡8×ÊN‡Š%…ùJ¥²C:“MêðA1B£Äh|×%/1 ý£3…ãË%¦F&Ý.¬4Â÷Å!Ðj›ÕiW¢äŠõMªö£ÙÞry}kxšð‘oÁ\ÿx^}c££&é2i}Ziu
+»*³¬FZ×BÓZ]g1k‡`mÿv‚’†¤Øy¡vWý­WE3Ï:7›g³¼ÊqƒÒÃªÁ{W½×N…çŽZ×-Â+YæDé{z]¤Çã
+‰Ätä:ó¬¿éEÚ{V8 ÙšZùÓ+G=vÏµ^|rIˆõR(0<øäÒàã‹Ü÷ÌŽôK*­·>Û?+_e(ôÔ²\+ðè‡=Rb#Œ£ò—gmïY |i½°º©RÑ,¬j(«P6¶¨MÇ·½åÀ«êZ<¢¸·Üs¬÷½óó¹ÕLˆ
+Š0ûgrkRØ•éœ^e#ÀW×ÑËÙ)X_xáhhhˆñuõ94e=±Öv‰Úw›6ü.ö„6ÖZg­=EEŸ$£O¢Ó˜“ºÈÃ¤¯e…Í¼„Cãžý²9?+ÂšÞüo¾‹Ú.xVð—9yO/ÞY¨
+>Ôx°5èP[ð!†·jñÛS|frÐ£Ë)©éÞ{Í«¯n>W…6\n	<Ôäµ=áðäØ ÏèLòÐ³Ö5´ñ*êÅ5M’Úf¶¨NRÓxÈšZ5Ú—Ž&Ä9¥Õ}
+xçûÅñJÆƒ‚†JC•H”9üZaMSSù2ÏÚ>2hÿ.Âüìp3l×Èê›SI¯5´ÿVïÏ&Êw3é³™òEÍ³êgáIü6Sþ[AÞæ²œsf´×¾Ù	Ñ”ïÑ¢g‰B¡ˆŒŽqÜ·Höp	yD~˜Š8†“GÈ}œS=oòôØ=Má²–Š<
+W—Éð#jÿ)'¦Æzvh@g’ÿSžNkM\‰B\Ó(ªiJ,¹Çq“¥€×òÊðµÍ­c€ÚÞr(ÐãYâ,v¥\Ù¢ÖhŒ7„³ŠÆ6@ˆéChÌŽWŒyMÍ-N÷Ã·}ßh3…r]¢q]ªqY¢r^µHNÛœ«‰‹^¢v]J:-(?5ÌëÀÜâ<iHEY¤Æp%Lï¦FM­V3#¡\.ŒrØ3¯âú÷º6Oµ×:(0\åµNõtU©õ(÷'}ýüŸZM–ßŸ­ö^W‘ÒAe•çºVçeÉ‡ÆÆxÒ†´÷å&1£I”!ç‰é£3•Íîºä7Ÿ	s˜Ð‰©‘Lƒ¦:/<pƒITemS©P.®n(¯ªÍ“8F•Þ,xR”R$­¨mÈêReS+TÑ—L-‡ü¿¾©­Z¹·šÆbÕ¦7hjRûÕª³Õ £Ï€B|DˆÇæ•—GPö3ÉÇæšÇæÀÕv3€§3)‡Y,ÔHû™j;s5.P¶Só÷ýÝ÷ú¡ÚÚZÊÄIÐíÖ_Œ½¿`(ÙÉBU]]]DTô“Ýs¥F’ÎTŽó5N ÀpµÓµÃÎ±¡7­ýÝ·O¬»1Aã¼®"¤ƒÊjÇm¶3Rüäet*­¿´¥MØÙÒSõ*y3GTHåËêcs%.1œÇa%÷
+oxçÚe°«¤òf¸mjQ)Û¤5MÍ*?Lè¬¹UU[ß*S´T)Zš á'I•J]Sßó~¤ÿZÆ€Ç·=2_–`Á)_Pn·9ÿÐ—ä½ñÔý‰Ô½	ä½	À5wÇ„¾?QwoœöÎ(êö(ë0
+PÐÜ aôLT]¸mXNr,¸zÓÉÅø*·Ÿ8è—†Œ„¬»fËÎ|OÙMS?šJÚNƒÃ5¶Ó4&sãqóë¶ñŠË?‘vÓá*R@:¨¬y4Me3.eïP ë_	–é×á¬Z&o†8µ¢¶‰'UFçV<M(sŠáÚ†²ïø\óÌ½ä–ý(¨8‹SS!oaëŠµ\±‚#VJª5(‡B«ýàq«”-•Š–Êº–Ú†Vyc+©1…²È|©¸¶‰îd|Û#óe	Vk›ÊÇÅ>lãW­¿%oŽ o oýDÝú	8yóGò&F´œÿ&×ç1Ûþ»õKÁÁÏ©ëÃPëénÿÄÞùQ€uSSó8þÅ‹Qƒ`bV kå‰¯è{c56c¨»c¡ÀpòîXòöHî¿ëÁj9Vyî[êÞ8¸Š*“6cÕ7†§îú6!Øë¯ëyã¥&)iM3OÚ «káV(#sÄ‰ü§ñeO¢8ƒ‹oùä_qÏ9ç”eí‰ðZR`-) Ö¢ê&¶H¡Ä«ZÈ7“”¢IU©l­®oU6«Ê*BXâ€,Q`¶8…SÝ Á®¶ãñí2XµZž@h{È‚³óCêÒ7äåïè«ßÓW¾£®|œ¼ü-Ú~ù*nóç÷Z¸<¸épó¼í–)‚½ÑW¿P†*$ÖÒ^ý¾éø'î»gH%"ú¥`Õ?SÝ¯SÓ_ kDTŒãÎY•G>ÕÞF^o}CÏÉëÃÀ îÞÏ™0Àcë¥õ—Ôáè¤ƒÊPK}ñë”ÿd<kgÐök£tô6ÿwµµM#®näc¤r$õ,‰wŠÀ3Ià[ö8¼ä^`Ñï¼‹nÙgžd^pa¹Gsóùµ{UÈ›Ê¤Ê\¾<“S+ªm†y[@5·iêU­ùÃ¨5«ŠeYâ@–8ž]YÛ¨êÌu¬_GEE¹m]whuî+òìWôù¿Óç¾‚2NÿNûR°kˆó‘•i™ÙEì’´Ì,§Gw}VFùižÿ;T!±>ª’3Ÿ®ÿ*/#™$;Þó€ 	À'àñr2RSâ¢2â#Óã£ÒcóY™ü2.Ä»m*•éüebwÌ”í¢½ô5yákêâ×ôEÌáôâ×` gçÇz°n­8ú1…¯2jô¥o  µÔg¾HÙöega LQM"‘°€•••ê å¢ü™¬¢¥µÕü½¼1± QB›ì+â§ñ<¬|!ã1‘µ&A{öÝý0 µU].UBŽ/­kf‹a,±OZ¹wª ÜªcçQÄ …WÝs¯¸±‚‹ó¥‚Êz[K%Š”"Y
+»*­´:­´&OPWß¤‚ÔªZÙ’/¬T50!7 ¨ª*²òêúÁTú7Ã€ö9n×)êŸÚ?[ÿ¹êØ Í©O5ÖŸR§?£N}Jžú¸æÔgªãC2¶~îá ¹e}}}aaahH°ÝÆqÞ£AóôgPEƒõ™*ôéO’,Þñw‡×€2I é f%ÇùÜ¿èvÂÂkÿœÐÃ3ãNÌJ=» ùÌü˜ã³BÌ|v`Žë‘•7Ž'„ùI%bÔ¾gH°Â#£w˜Kw¤ùBsúòÌÔÌáôÌ`@©Õ=X7¬;8ˆÄW5ê—¿Aj©N|”¼õ‹¸ /Ó'@!ïÒ&(ãDx:ºý²ÝýÀ¼àƒæq'f&žœ•€hfô±™A‡ÌÝ.|zaOl€§DXÞÖÖfú0EÂrÇúºÆû?ósc8œ2’(_7vAž
+%ÝTss³H €—3Öß#ë€&CÏkù¹FûºÀƒjnn1b®®Nžúþz}¦n¼þÔ5*À[&•Ÿ6Õ…«¥UÍ—(Ê$0¡7–×gŠ|ÓÊ}ÓÁ­ò\b9öáìû…·}òí‹"3ÊKEu0ïXÓØ•éå~i‚˜üŠÔ„×ôÒjŠDuQù˜ôØ•umð>¶¨Ô Öbq]‹ŠYÀ3^öI£©¯@Ír‘ÄþÒ±´uéchŽÑBø:>„<>8Hš¾½í»Œä-^4
+…11±v-”n µþ:ù!ªub‰‰:1„>9¤pã[¯«°ƒ¤ñâosK+%Þýìöà=ã‹Ï™ÉV5ûîj;¦Š´ÖDŸÖÄœQGY«ÂŽ5ûï©s²à]½¬Ûáeà¦h¨Ïje.Ýù6mý±æÄÇäÉ©“˜ÃéÉÁ†Òm`°!°î}ÄW5Êú(@-ÕÑR¶|f\@OŠ¢*e²0·‡n{g§+µYÐèi©
+>¨Ž<¡‰²FVEZ·…o:Øä¾Y|knü1®–Äz)”Jp¢½CvŒ.¸4¿èê¢Â+‹0_XpûêÂ?ù?¸ hh•óƒn>=´8âÈô¬só
+°hBC­E )º²(íø£+ø<óÌÁMÀLå²}JáùYEW£ÆõuõµòN™Ý³Ã.*è
+XoÖÔ¢æW(y
+IMc>¿&(`*ôÏù¤[å>‰*µ)¶e‡¤–òkñ¦@}NYMX6(”ûe 
+É%³+³¸µEÂ:žL™T,¡¦0([\(ªƒL+‡_š#N.­jhUkq‡Üo;°¶GfÇa ¸®ü"¶ý±¥èŽÔHH}Ÿ>2:2á{ÞÝ9¦„ÍfjÕÔÔ$&%Û\#Þü†îÄûºãïCEÝ1:>P¸¹ß³›' ¬L„ÔÔÒ¯þ³]“øgÇOWj·ÑVdàvMÀvÿ62`;hE@8¥·ÓÏÖWß0Ý9"ÐöŠ\.WÖ×c°ÎÁr|ytul}LÏI #9–õ`Ý4B±û-
+_eèãƒ¡ µÔßMÙôI|·1€ðÊ¼/íŽÛ=¬þž9í³òß†Lò·¤0AAão©öÛ
+:`›6À’ö¶¨¾>%ØêG0¬®NÏ¹²²ÊËþnÞÙTÜ9mÒe:ñÃÉ„‹TÂ%]ÒÅ’ëÂžËLOó8½1õèøÆ§›è˜SÚÄ‹zÄK¨Š¡•p‘NºÜì·7ÊzA^V:Ø	c)«ªtµ‹9<YwJ›t«!M\èJ½ó·c«äµµ]	`›Z4iCyU£¤¶	 ˜!ôËDiøEXÁ­ºÄpS,n¤¶YŒü®<&¯Â¡YÌ¨1 L-­æU6B°[©h.‘(Bsá’8$§"¡¸*®¨20[„0#.‘Ö×7«$ÕM’ªFÓm‚NÃ€ÁÚÒÒ’’šî¸{¾dSÝáwÈƒoSßÖ~G{èmúÐÛWXõØc&‰™ŠJe}JjÚíýë"æ¿Ê^ß—½¾_‘Eß¢u}‹Â¸%}œ/ìW«T:¼ÔóÌ)tÇˆº+£i—…´ÛD®‹)×Å¤Ð"(0 Òu±Æ Ñº-i»;)jû·!Î÷ª«k"¢c¬fTZöÕy—:ø.}è]í!=§€¼ÍÝò.ÚÁ
+öÜ4B¹£¯2
+Ú#ïAjiö¾™ºñã„`oæ^$b‘Ç¹m9û¾¦ìfhÝS.‹HLP 11óB$«mPXÔ|gBÔöïÂïÕ74òø|‡Û—rŽ…WŽÙMïf¸&h´[²«ô‚ÙƒCëXÁ>=–ôÙ¤ÝK…˜èã*¨Ö(A»¨=j¯õ‰Ç§¦Fƒ‘€9vI©ýåcGGéBvRŒÖdjiCw—žä{ÿ\[›ê7,54«!H…D¢Ï,Nu@:r‡ Á – ë•ÈH¤³«„U•ŠVNE}b‘tÀï2:Ù@bp™1Ò¬2´wZ¥l­T´HäM™e5Qù²$vu:§À
+höË³Äiœj¶P9\©H!¯oùƒ	–B¡Œˆˆt±œ(ßÒ[wàMrï jï íþ7µûÐûúc>@¾µïþÙÒÊj¦bCCCVÊ±îÞøäø&‡›ío´?¾	È“Ë™m¾7%Fã9H›íc5V~ö;Úv*ùÈŒ²JÛMƒ2È_Kh,Ñè%S^i˜÷¶ÑI±ÑQ±ñŽVÓ+7¿vRûÞ¤ÁÈýÀ‘µÐÞþÜMoë=ëÆŸ”Û^§ÑU½šöÀ[P€ZšÝ}S6|ÈxÖ†ÆF÷Û¿$mû‚´‹€~™‘˜ @Û"¢lÍH[3ÍÃ)X2•Ñ¡°…õ¾Ú565.’'(rûëðpêé
+Úså±Šá÷•¤û*×ªÂ“#ŽM”°ë[Òyé¹úE|Š$«¡@"ÉjÚuIÖÑQ±Þ”V‡>‘›÷èøVÎÉá:ï5Ö'±&SKûtYì®aÉàI_V(ê[y€Ôš¦
+ys§Ú¢Ï„Â€l±†ÂÖäBG¬É[Àï‚Bh¶Ø7MÈ t0R%áy‰Å•­fpjØb¥´íÈZçòëÒ9µÜÚ´’êÈ¼Šè‚
+v…²¦¾U k×4‰«ye›Égôº
+V S…Tàç±aXÓÖW´{úivõ%wõ¥÷ô£w÷¥v¿yßÚÍ¯ùYTU+gjX‹ŠŠ²Y¬ôÌ¬ôÌl ÔôÌÔŒÌ´Œ,D™Y¹ù…5rdô ,’H¬·îú-ÙÞ¥¹58ug4u{È[#5×†k®¥nüHÝBÍíQjF+PwF‘7*Üõ™ÃùÁáQ VÙ°	†$v¾ÎÙð¦¬?*¶ô¦°ñŒÜ –Úêµ”uCâ‚¼Á¶¸¨p·uß7œý…w:¨ÛÐïH&( ÓëÃUW¾×\®¹9IîèuÚ­QpGœ½Ÿ>»°#3›åxç
+kÿ·¤ý,Êq.ùd.ÃÕs4suNs¹G¿ZÜ_~m,é8Wc¸ú\ç	>E’yPÐ`‰öÉ¬¢#?„Û]jnSC¸Ÿš’z×¢ª³Ci'¤ƒÔ°&ªè4¿íÎÄg;'òJŠ)Ãgð;à¨U¶pÄu€qmäF~iå>Ø­L3D	²þH@uÄá,±@! (K„Å àV%É¬@à\ù•Lá…ˆ+ Áiœš”’êØi™T‰>]rC¿¢®–U(eµM4ý;Wà•-ãñ}<Ýž­ùGë–^ôÎ74V¯“V¯CÞñ:µ£æ¯Wmèí}tyM‚©µñÑÔÔÔŒã)s@hÁô)vTx˜ûæŸê}B]þNsé[ÍÅoÈKßB™ºôyñëŠŸY|êfñm€Å‚½Ÿh.ütÔŒÎ¥o¼úð'ÛÌ\Ü½œv˜K×ÈH0Ìh$	´ý5Îúî7­}Ý7¯Ûø
+…gÔàŽ  µT–¯¦X°VÕÖ=´Þ‘o9:e:búÒ`Û$>ñ_ûù“5ß¬ýì$/~ƒÍF:$cäåo›N~ê¿e¸Ÿ§›€u÷?4÷&’§hLa¸êþdõý)ÔÃ)Mç¾©·þR}w‚êþ5\}ðkæIÌ  ÆúÑä²#ÿ¾¶§¶Â®úèÈˆ‡›&6\ü¼¾ë«±&ÀßWZíuj}Mu5Ùùž0Hµ¢2zÈ“„UIE2ïdwJ¹w
+ß'…™-Îç×Šª!ß/,¯`‰|RÏR0õAÊå„"rß$‘#NaW&³«¢ò¤ñ…ÒÚzfÐÉÆVUA¹<®@š-ñÏ(ÏâTŠi¼š[À¯…WET]Ï•([T¦«R/®tÖbv‰—Ë¿UŸ«·ô ­^ÓlëMnëz{ojû«˜÷®\×Ëûè
+ «ã_ÿ*˜|\­IàKÏ%¸ýªšÚ§n…[|Lú˜üåo 3_ 'Ï~Iý²þð`ûÕßÚÝ¹àçãðð®ÝÆq{> Ï|¡>ó(£Å&o8ú¡ß¦îÝ¿ï¼Ó\jì$·½Fm#÷H%·½ÊY×}uXÝ†žºªW£­úPHç5Õ–^©ƒ¢ü<RÒ3ì7Œ©Ý?ˆ4tÄô…ÌûåùÁA®ë‡ÚÙÜð·³¹æ°ê›†ÃCÀfFHo„>óYÊú¯œxxýkÇšÌì1Šáª›#Õ7qó­z	\½…un2J˜Sòöh(¨±&é±/O­‰Å5µµA¾ÏœÖ~§¾üy)#5¬	‘öÎÈ«OÂì¯546uöÙ ôñy3W¬U5ðeÊøü
+Ï$>w²¨´b™ ²¾¢¶‘#Q&H½“y‰e^)| ïTpÏdž–x!‰À;™QlT®$(Sè“Z°OÜÚ¦niS	« ©¾iåhg!™˜.€Æåõ­¹¼ZÿtAlŽÞ1W5h4/]µw¶jµº°¨ØÃÉ.hÅ‡ÚÍÝ´–½È-=©-=¡ ÝÚ“ÞÚóž5=O¯U6 gQS]%–‹EÂ
+±HO‘D$D$~.”ˆDµµµßéòÑŒõïêNH[£5&êäGZëµ§>Ñú¨dËÛ.—sËÊJJJ2³sþrµéêø`òäG”õG´õsÞväƒ¨M_^¿rÙe×,ÙšnÚm½¨­½h0Ò8²–ÚÚ“kÑ…A†+Öu§ÑU½‚vÛ+4Òé¥ÞÔ=mí @wG/WÇp‹O¡eÊÐÓ	üÄ¶åÀ§—–ñËÙÅÅ©iiwo)Ùô–öÔÇŒæä‡ ©;ý1Ë›ö‡VÝ¹`»ãs´ùwíêê×\ùž¼ò}ýêH†"ÉÕï¡¬½>H‡9ÒDW ¯êuH¨åëCN~r`zY	[VYåéôØígÚË_3-#5¬	§ÚKÿŒÚò÷¬¸05IQ|Z€&)mU]K™¤‚Tž¬>:GâžH¤	“
+e\‰R*oT6d”Vƒ.¹'XyI|DÉà¦Oì3…ÑùÒè¼Šg©åžÉH”)‚"¥kB/TK_ñY
+?&_•[Á½yàÂ+äM7+Û †]]@ëV…îŽ‚–Öm"t[ºQ›ºÑ›ºAAØÝL`Þ­zm ³š[UUUU7‡œutnôÑy@1@ÇæES†ô’€ƒó}ìm2Y9­·eþÜ»m_ÿæ=íîßºg@ëÞ7ÛöôYÖ/Îï©~£]òè’uÆºÔ¡w¨#ïÓGß×}ÎUÞŽ[ÿñ•¿¸îœU¹šÐmíFƒa[§· IÙÚ~ž7­ýƒ‚=×SZZ|•QÐmí®Å:šDÊê÷]ÙØ_9ÉZÿ.uø]ÊÐÓœj¾“µùÃxX555¬œûçW¾¥;6Ñ"MÝñ”;ú9YNºzbÞöO¨s_i/þƒ¾ðíÄÉó§ÎëËzŽ¶÷>o=þ‘òðÅ¡!µ‡TîÜ|âƒ‚öâ?A‡‚ZXYmýI„ÕðüŒär‘øÉK	è.|Å´ƒÔ°&Ti>:Ä÷d>‡Í,úš&X(fS“èã)R´íÄ“5D°ÄnqÜgÉ‚Ø\i±P!«kÕ4²¸Õ¡™â§q<·x€Õ-®èi<Q8:5H<ùa¬Šd¼w<*&€ßg‰ÂY÷Ü®ø†˜82W_T!fZsã†¤—«!,n¡e¬çkX/+ Öœ¼|w‡GKk×Ú¹Ž pA»ž ×ëyÕÊî¾§7Èõ99¬ -Ã¥K	åÏD=¦ •„rÅ‹’’…„Ý¡u)©é.ž¸³ü{÷u?¸Z|ïfùºžZüàµiøƒ-f¬´D}úÌÎÍ¿»oUÉúþôäþ·(HÞùÛm»ûÅZ|tùü—3e+y¶Na	wµÁ³®¦X….ÑíFT ‘ôó{÷®]´?¶±lC_úÀ›¤¡#¦G õž~i›>M
+d›]âüðväŠw´ß4êhö¿µßVï~ÝÝâÛóû·æX~Hžú°Hþœ>¸æÔgä)}ä0c”Y¾¼öÓ§›F8[Nrµšê²k¦í–)á+?€Kô™/€@“„Z¸ŠÖúÃøMŸ§†ù°K¹÷Ïì-ÜôŽö}kHkê~ù\¸ýíÀ–55µLúoºªÚ¦"ÅU€Tüñ”ú°,±K,çY/§¬VTÓÂ"a]D¶øi,×1šëÃu‰å¹Ä–9EsÐi¢Xptj€£©%ÕÌÆU\,(C¾Ò©Ä¢J_´F‹Û‰áBx_(K+­JçÔÄäWÊcËP/1œô’j™¢…WÑP[ßÖeÏŠ¾+‚Áºx°n%¡[EP+	
+«QY»
+ó•Dõ²§7”‹%aa¡!¿o¸¬Æ:­Aš/HdK{8^—ž‘àû,ÀÇÛÿ™CPIR|,§¤X.—ƒ·ÎLK~|fwÈÏƒ›·÷´DÉ{_Hù¼ŸÊªOìÚ!¬³dKU`¤Þ<Ìi,á®0€uÝ0å2l•A¬Òbòg"iÙ{×ÎtÚ» bcohŸ2tÄô¤ÞÑ'Ñb°‡§¸ (—pëÌáð%t{Þ0ê€‘PQ»·Ÿvçk¾+?9mµ:gó`ˆa´'?¤O|¨=8ÞÄeˆŽJµxÿÁÎ…nnúùÂƒŒˆˆxæýì¶ÅxÅîw´ dñÞ!…«ëNÎ\?0Ü&¨Ü;{WŠ·½¥µþˆi©aìc\mZUjfÔõƒ‹}ªPÖÀ«@ëJ%bEpº äÍñŠ/++ª•­y<¹wÏ>œmQò$²QÇ1ŠãQâ`"ŽO’ÈRð‘±ùRÀ+Ä¦éÂ°l	äþ€HDåH\c¸O"Q-÷x^R°V'—TŽQõˆèÑ'IÀ•Ö‹k›Òú–6Ío¯ÀÑÖÖÆÊÍ{jÿ0`Á`z	A/%4K
+ËP™ZŠù¢rQOßSëÊåþë¾mXDh–$&Ð¡–áZ¸l”Hvw<¾IP^^!•Je2 Š
+i…T&®òå9¹9Éq1^Ž÷ºí˜bñeáê¾Í[zS;û@^¯¶ÞÒ|rÇk˜¿ÞjùjìêÁ—Îv¶š)]€¬#õæaNb	gi_}‚µvhÝl‰AîˆÂ:êÅDÒ’çOtÛ>¥j}/èQ³Cßî‘ÆªOùÚ×"V‰Ýô÷˜_…¯ý,xÙ{¼5¯Ð&:`$T¤v¾N[½¼üý›–dox_sø}êÈ$ÄÁ˜« 9åA6p6öw<¼*##£BVYS+¯­•×)|¾ 5-ýî1ËÂuýé£PGA-hDƒ«C­âõý½¯ˆŠ‰µÙ4U¾c (0-#5LêýoEmú*#.œ2Ý÷§(ôñJº%5à>ýRøŽQ¥@öáÅ¶þ™i\H§ØÂ:¸²G!E¶!Åv¡lDa%ÃJàÔTŸ$HÈ†Ð3 UàÍyÆv‹å2 L*–…e‹œ¢KAÔà’O2?±Hþ²1§¨ÒÇH^=Ú‡±ò¥R¹*+ªM?ÛÞñjÀ¯À:0½ Ò, H@Ã"T¦°„Z@T-èt500 pí·ó	_e@ª¼ ‘Ìëîvz{Ss³açWÛÜÒ*–'‡û?»rÈÍrrÐÊ3Vô®î¥\ßCµ¹eù
+½íà¤å+š­¨@[ï…ù«­›zÄ®„Áj.CÐÐÝ|dNb	g±¬k†ÖÍE—(ƒs# £žO$-zÿÌ¡Ýž[ÇÔ­ëFmC=21=’ØR±-½T[zª¶ôhÛÒ³msOr+Xø*£Ca#IKFÒ3rÙ;Ç,æf­{Wsàmêà;äÁw®>ðŽæÀ;Ô¡wÉ½ý!™K‹iSÿj[¼®®.;›åüàfðò(À ÍƒPåm®NzW¼©óÁe^žžWmÞÕmÔáKHsù¶×ƒöMã––Ð&`mnU*”|©R\ÝÇ¯y–ÄGÎ2ùK»Ð"¯d{¿”\n¥´®è¹Xø0¨Qpñ£àâ…L$Àñé¯$ƒ‹£ÓAEBŠ}RQ¹’g‰<@!R@:Híqh1Ó¶! GuAß>´Ø?EP C-ªj(ÖªÔíÀÚa‚•›_àñÄ6hþ`Ý<BP˜C0eí\=¯™ÛÝïø*.Olñ}Ól‚ÆrF”¡Êéœîg¬ZÛÚtx=\k´—ƒÇîÙQËßå¯èÞ²rR7”mê®ÝÜ]·¥»n3"zswŠ‘lÞóîªõDüÊÁ(ÁÚ1«r&êz4š‡N±¤lQ?´Ý
+	ÖšáÊYz{Œ&i±9‡HYôÁ©ýV¾›l„è|ê‘éˆé‘ÞÜ„21-›`	ÍH¶ÑKY3+{í;ÔÞþ¦;Ìv nÿ›ÍÛ^Ü1–WÊÖâ	Ú¸yÎ¢¸¸8Èß÷ÉšZ­ú ¹}P¥?ÕQÅ–½6x÷¶çÏŸ©w÷5ì,"í¾þ‚}‚.YÉ•õúåB„T@ÖP^Ù PÈ)«ñˆ/³(µ@ßN±+ÐÜ÷Ï¹íïW)Ž ªÑ;±ì^`á½€"D Üâ»þ…@F	p|Ú©ªØ† —|?@_ñ>ÖÁ¤WÃ’BèÝ+¡,µX	–T1«*­i$M>Ûþ²Àêéh¼àCílB7‹ f4 —µ³ô¼zV7ïCËKËxÁAAÁk¿mffëÕ€Ó³iU@"ÕÃýôv +tÈaùœÙ»äíš½ŽÐm t	!{	H(F²þ9W­%â1««ÕÌÊ¨0Òhž÷’²…†Õ€5Ã”æz{Œ&i±9“HYøþ‰=–¾†6­Æ)š¡£ç&µ“PF#±D‹%´ÁìèÅ¬kÞ¦v½¡EfÇÛl»úêöôSnêé¿wº°\ 5þ`Œ~ó“±qñö,Y¼¢Ûƒ÷äv½ÁìºA|¬±êí¾æŸïX1ÜõºvO?¦eLýè}r,ÞŽp½Oâï4S4UßÔHVš³¹50A> £0›?
+a?
+)y€çmÏÔûžIé…’JEkfi•-þÐª? °èŽoAŸ$~/Jî2:XÈTd$ˆ|nƒÐ¯à^`‘[7>_Ê…º¶YPÙPÄ«bñùå•JmX¦ÿ-°æåx»>	\ø) 0'¨é=ÐÍDe­9â´9QmÞÝçÐ²nYXhèµžM'Ðü°éýDæXsÒ¡±>S„RóOO[µ©T|÷ÙÑ•E^¥–ãLèg”±¡Œg%*@Æ&aªZŠV Ã£•Ï¹j9¿Â ÖéØªú¾ŒF‚¤l¾	X§ëí1š¤Å:ä"eÁû'öZú®Ú´LŸu1=7i¥ÁHCG¯ÔgiF¡1ÃaÌÂþGÖÌf­y‹ÞñšngH¹0ïƒw×úèv½®ÜÐÝïˆ‚t¿+pÈ/ÓÒ3Ÿ\=™²¼¯n×kPªÐ¸:4¢ÛÑ;`ù Ãkçe®ì­év¾Î´ŒéõÖ­½â6ý==1–iª¥UÍ×	«›ª-ÙeÕ®1œxæŒ>ùˆ}œb@áŸÜ«.qOÃrÊ*”¢šÆÀT@êæ³ü›>·|
+nxç¡S,ŽO’g/JnaD†ŠÏ%Xçq(;<K\,¬ƒTO\Ý0Í)*/(.‰ÄÆÏvaµ°ð™§›ïâ/ÕÓÝ4‚šJÐS	ÝtTÖNÓóÚé„Ï¾Åì´Ô4o7g7;·Ç÷nµŒžÖ
+:4&­¡
+T°ºŸÙÉ„×és^£Zˆƒ£pV·˜Ð-A\»e<5‰´¹¯z.þôâÌÏ²çôbtà£ÀpÕB"~	¬fUNÅ=N}nžÞ€©¬Æ0`ªÞ£IZ¬CN°~prï6_‹¡MPã´¡#¦/“|‘;¯{î¼ž@9óz°æö ž;¿ç‹’y=óçõp0÷àš¹9«ß¤-_Õmë­ÝÆðÞ”eoÚ²·nûkJ‹n‚ŽÆÆÆü‚/—'>+>%·öÔmGUh\ÑY½³¸ï¶‰Ÿ—®2HpûZ¬P»¾GàÞéÅ2¶ª4<‰ ð—ÙÜjHh˜Yø~P186<¹ÝF®.ÿ¶_Áµ§©×cc²’ÚF!Ö¼æ™wÍ+ïºWÞU kž¹ˆ¼ò€ãSƒÄóEÉu¬ƒÈP‘‘ ¿ë_à›ÄÏáÕBâ!2GT—S,Ì-ä”ñr¹\…?=Òñ:kûM-ˆ™
+
+‹|Ÿyz.ý¶É¥f
+ANAÚŒ Ìô¼ÖŒðÙa^Ä.9‹[Æ+áp3YyÎ÷®EOï‹PbF˜(C¨.™ÞÝéäÖ¨°§eß4BD; ç$æÄ¸ó‘D3ŸÈ™óÊÝU£í.÷ór¿zb_òÜþš¹yÏyë"vñ KçO;o3—‚y`äd‚Â†“˜8s	Öª¡uøeP@7‚k©§Isß·Þ·ý™ÅðúÙÅtÇD½sõ§ª¹DÜì¾g¶,~tþÈÃ_> :sðÑÙC¶ç?bèì¡‡˜ ìtíÔã.ÝÍZÕ_³¹¶ ÞSiÙæžôÖ^u«	ßÝÓË<&¢M>wCPÊá„‡<Ù2¹jÊP…ÙG„F {Ë\Ôc÷w=Å«zè%¸}(“[zV¿âsagcS­ÿ"†ZZY“ËAŠ-©iJ.”Ù… :óa¾å[pòˆ€¡ÜÏò®yd_pˆyô,µ€W%ª®ÊÝðÊ½ü”uÅ=ç’[6”1å Ç§J Šþ’¡"HÀËºF•&Hy2eEm¿B‘Ã–°
+8Å%œŠŠŠfœyÿ¾Ï  ŸÍðw[5B9™ 'šI9	. K`€å“	ÿ­ùååÌ}ZZZ
+ŠŠ®ŸIœÚAëXŸ©Õ%ÓºßÙµòñÕ313ú ôk
+IÌ)ˆq˜+žÕýáÖY	qq°ˆ]úðòéÔ9ojŒ:³žóVs"v¡¬ŒU“ô}âÌ1«Á£I®¥žL$ÍxæðnÏõcä3PŒŽºÃ‘:@mÐÝü÷mïÁd’›Ÿ”‘™§ié0ß¤Ù^?Ïú¹¯f#Ao"¨Mz§$H6w«[Õ)XáyŠÅâøÄäÇÇ·,í¡ÝŒª†F ¬ Ž%êÖ$øz‘½ò­P×GÆO °JeùE¥¬b¡@V/©iŒÏ“<,D³ö³<À"Ð5OÖUã/9%_xá[(ªª/×9G–^te]pewÉºàš…)8>íTrÑI.¸dwÎ<çœ	H}ÂŽfI8ðÎ4ð¥Š‚2iV~YQ1î´¾^iüþÈË¾ÖÒaÀårÃÂÃ]6N®™Dè`h'ôDTÐM"´“§'‰ðõÃÙìbc¤›_Xäpî@Öäîº)zë3U zÅÔW6/°Ù¿®‡˜0#Œ¹v:
+s!ˆL˜= ÖßâZ8¸<þÃ+§Óg¿Iu¦?çªiDÜ‚Á—/œqÙ6Sæ‘-.0œÆÄmØX5L‰/i
+èvp-r"‘<gà¥S‡Ÿn5«ÆmèˆéH=•H^üat°ŸJ­nmm…—3?'ûö®®–æ@.@[g8c‚Sç­æ7÷m¸r|_.„•ë~•¢$'”ÊŸ	¿Ý3 Áj³2X¬Ü<'›ËÑKß¦q•çÞ¢~5ÁZ@´Zà|nýó¯e-añ7VzªÎäÓ«`-ø­ü"Nn‰XXÙ bLŽ2q<›#B^Ð=çŠ{.xÁscn:Çf±¥0G§ÉnyœuÊ>ë”tÎ98>íTrÞ…uÖ9ë'@p–o~`jy‘PÉ¾¨º‘-¨Ê.àƒ=åB¡B¡0¾¨äÃ×P¹¼¼<&>ÁqçB!Tr<AÇc<bAM Z'ñËÿ–‘ÏÔœÅÊ~´oo’V£U@RaÖãâ†9·6Ï‘1‘åT$`ŽÂÍ©A>*ÌF?ä`å”ñ^>™9k€>–À:FÞffVÆªñú¾ŒF™‚Ua°Çhki&I³ß»~þ”ã®…Ü>eèˆéHeF¤.þ(12„¹ßÆÆ¦¸° ó·ë§
+)¦ufˆ×O%ªÌˆ'K¿»pÈ*wyÒ¢1œü%‹„)~;¬|ãŽ(mòÍUxJJKŸyzx­ù®q)ªKÚlýq&ï4f¥ŠåÝ<wÎUVêŸƒcü+ŒŽD"É+âä•T«„ÕQ,	dî—Ls/º±0å\ rÍ9ë˜zúA˜K0]^ÕèÏ;ëœ}Ú!èÌ“,LÙÀñi§’ÓÀ³ Bõˆãf–VIj›¥òfHõà…aåCŒSVSSÝÖÖfüªÂü‘ôå™}XîèFöÄî:Îq=Ž€‚ ;q8%Ç¬™o…»Û2{yÍÍ-±1Ñ¶?jœ„@™Hk¨)€uýì{¦ËÍÐý\\;ê¦Aó?,ÈJ¡ð÷À ”ytÒªxzo-ž¸#WM&âç#°ºn›Y	íƒ‘c	í8T`8©l¶a5 <ëxtIkPÐáS¨÷’4óÝ{×/ÚÛÌÚK‡#Z½I¸ ¡BÆÂAñ!>Ìê_ p}x+vúë`³Î¨9Ìˆf3Âuíè+Ç÷æ-íO-A¹£ÖÀ)œ«é–Êù„ÿNH°:ö¬	ˆD¢È˜X‡óEó»A]ÚÐÔÒb	Í$¦Kô§Â…¯x^: ÖhŒžÕ¸Ý
+þ&Ü¼Bð¯þÈHx–‚€éy—ìsˆXg‘;d;´~uÁ6"àªleqkîøœ|œ~âqúIûL™ÀñiG’ÇH‘ƒS'©PÆGßÒnâK•\iN!]Z&•J!ƒ¤ð/–š|¯æþn $e¬Ü|‡KÇ2ÌÞ€A¥Æ Bc<b,:…‚dbwïËBÔ‘UVÙ_?1m òX4ÔXD´¡
+PÅdÖë§Ë§˜x_ÌõSó$"yFß(/G5úa0M|B‚ÃúI•“»Á%ršÓµŸó¶‰DÜ<ƒgÛÀÈÑ=Î˜Íið¬+‡)Æ¢K´AA‹O¡–f,‘hþÎc›kvWOg™÷‡¨€2t¤5„`dÁÌaÎwi-óý§’û§öæšõÔÇ˜HìËa.ªšD8ZÎ¼qæhÞâþäB‹7ÌŽ¶Ùæº…„b6ág…Â€=+555Y,Û_°æ½nÜ–ƒF´§ðvp­±åDÚ‚7£|Ÿ2@5õ¬pÁ[Ë…9¥¹¥ß€×N^õÈýÅ1ó¢¬ÓŽÈ#´K:~'äW*ú¦µ¼90¥üô“Œ£RÙ¦aJŽOÛKÒNÙgÞó/ÏVOëšË+
+¸²Ü"~!›+AxZÏ|ß4å§þðïÀ-³mï†Îù°mAŽB„Æx4Äh,M¨Ç™3ú¹ì[îg{ýÉ/»ŸÎýD>Q¯H¬ÏTp_X7ûæzsÙ$ìwÁ=c¯9oì‰«§ts[7.:Ð+!2ôÞ¾5ÉÓÞÐLDW5cõÞÈ[Ç±sp‚ei.…NÁ¤‘5
+Î˜Í17$X?­.QŸB-õh"~ú;w¯º:9Ïÿ¨i<²Š2øfjœþT4©»÷þ¥<>¯©¹9:2ÒfÅèš)Ý˜¡Æé„{×µx"ápt“Íå39úiðþeàšÙ‰wûêÌ	ßí&X ihh(„œÕîAèâšg£m6¦fgŽÄÔ”¡å¶¹„ïŠ¿åçšå?Ì.Çã±òJò9âšFÈÊ}yã´f|$ö ÇìRŽØD´		Š/X•Ëm|óÝOÆ”rè~*ðƒ÷Œ§%}”rùi¶ObY@.©m‚d®˜_UÀÏ-`—ñøègJðï*¿ó/D¼l5€	˜à–ü\ÖŒª£Q8#FbÉ(4<•“z›½ÆüJã8M¬<GÆ(ÖKçÝÚù3o"ö¸ 1§Ç$ãéäî±æoEÎzmÖK5OÓcÍhìÎÇ<ç­cˆ¸9ƒgµœ)…À¤5ÎÉ™ÑWÿµ–•ÃXGê‰ÆöS¸–z‘0ýÝ'w¯†GÅØ®_5Aï•iC_$&õx"gún;çy^:ô`í$Ö”W šgÌfô5ÌË	oÑ´þ.6—ìn^Ê™ßWcXR`¸Æœ ÍÑ‚FÝt¬üÁÊ$FeeeAÁŽ£jÌñ¢„9^ `vÝÌñZŠ¹~ÉH1«›ë®ù€‰—€¥RÉåòÀ¿‚ÃHq%JXÎÇŒãviÇ‘DþòðÃ”Ã÷\ºîË*EˆÌZÛ§í·I<p7éÀÝdà¸œÈ ©g3#Ø%•‹¡Y±œUŒ¼xÉ¯—¥þ%°v@MˆÇSRÓïÝZ0éU4º#í(B‹ÇX‹O‘Ê˜£QÇÚ  m‚	,ª˜ÐãúÖÅÎJ™ø
+Š,?Çà{4ž—Gë7 ƒb‚‡1úùdtF?çªÑDòì®œµv¶œ)Û~"¨	ú'T`8…‰;Ýü<L1]¢
+`<k©"’g¾ïfw';7ÿÞé}™f¯“côMbæ ¢|b·ò‰=j'vƒÕÔlæý„²bá³nLXh°£ÍÕœy}É„vÞ]ÃœœŽvuæ„bá·½ã‹4üF)srZú½}«yæ½¨xïÒ‡F(Ìµ3ôÄ1ïåsû4“µt0hfNŸŸSÈ-âUA@Y*®s‹*=õ$ãÈC€)¢ƒ÷“Áq¸}èf {x>¸<©Ò.¸èÀ½¤½w÷ÞA|Ïí }6I'ìÒÅçUà¯Á4ñ*ù\)«€Ë.åŠ%èKcøM cóÂ¤ßÕ0 C°ÒèÛØŠü‚wW§§¿jU7‚Ðá1NÿˆÈx
+—àF]Ë€`Ñ
+É&Ÿéø·­–¹=±õœý	Œ4ªÅà#^7ŠÐÔ¿zÉH¢ÅÚQúwƒQ`8xÍŒ™ï^´>ä¼Õ¼ê‚IÃ	í¨ÀpÆÈ2°*G KZƒ²×ÒüH¤ÍäïfÏ.)ðõ±]:T>õ¢ib’¡k†è‘“fk±Ù`jÖ´~.—8Þ¾œ3·/5íW;Æí@¥k‡	–q³±®®.?¿àÑõóI³ßÔ˜l¼1ÛuÌŽiy;ûÍ”ˆ  ŒCiš`™.fÁ1Çg”—× ÂØ¢:çˆÒãvéÑŸºÿnò~ Ä½×B~y™’/‘Õ5§ÉÎ:eíº•¸ëVÒÎ›‰;n&  oxæ…f9õ•Š–òÊúÂ²Êì^A1G(*•
+O_€¯¦éÔ¿”`ÑxåˆËå¦¤¤Þ³Þ0¹/ CgŠƒáˆt&£§”+•cˆ°ñDíX½‚^çGB:®û«e¡w-/×9ö…î/ƒ^ò#ÂAúX¢p9~ÔƒÞÈA-Ú€ó¶9n™Q	æIÃípT`8c$€U¿Ýºr8ëp=éûq-Íp"}Öà(¡X’ž‘a{í¬ß´÷ZÆèß1­‰36•0/§Ñl„û|ï}K¸œRþÝ€\ +^úÐ8³y¦›J('þÛ;þl eøj?Äc¥¥o/O÷Ek™¦o­?˜éwàh¼ø ¤™Nx¯üžÏ)¡»ö+‚pÔC<PÆGº Z*o.Ö=	-ç
+0ÅŽ3qÏ¤=7¢÷^öwðË*«@ß+ôˆåî³IÞ~=a÷í¤sÎYÞñey¼ZY]$a%ÂÚœâòÜ‚R.·¬¶¦¦ùlÝoýZèŸ Væ~ ÍËË³±Z’9¡79J?º@Ô0DZŒ-Æ(#…¦1„»ÙÀ‰Gw7"†©U1®ûÝË“SÓ<\œ~]3WüQrýx$ ‚ò	=­'â9©_ëÔ8ÓŽ)/›ØûÜæ…ÖM°jÁ€¡¯Ãôœ1éWaÀOèmP`
+µÔÃˆÔYƒâCž566'‹‹¿{rwÀÔwëÇb Ç&aÛ˜w1’®…ÐÛ8Å<œñ=Ü7™åe¥ªÔjún]Ê™Óf-Þ0Ó·Ù&¡.Å$Âo[Ç«Æ¯ö3kÞñ		6Í«§ugÑâ52
+o×gÖËªÍÏÃ«ëêä¦nga ³lDáŸaäpË²ó¹%åµà!1zX|à^Ê®›	;%BáøÝ(G¿ä¬b±TÞ˜[VsÕ=rÇ°ôë,èC}ÍeEn‰8¯ˆËÆáiSSÓ¾®£Ÿdü—Â Ó†^hœ«@ ÈÊÊ
+
+¸³ke°Ù[Uc»«~B ‡¢16ÂÍ¤Ãˆ–„plÏÙŸÚürøÊ–ùezµB<€©h4!˜Ðãñ¡õ9¹¹€×Ç·.9Íù²|l÷¶9Lï™ÁÏASEã_y¼zÜõ‹g–}_5†h©o‡á-¸ÁŠ	Ý.ÏýúüœoÅc	h§å'`Ýf (C;Å`]?éä¶â‡ª‘Hø\g$Vû‰hA$Ìú 6Øî‚õl+&6Öö’µý‚æMx¥qt7¸k~Eµ†—Aÿ€ÿH¨F•c»G˜x²÷çV¤òÌ¼ôøæÅÌÙo4O!ÚÑQËd¢u2ÚÑ¨šD<³|Ùj S®¬”eegß9±;ê«$³F6I¿LFWô&9Sz†Ú]kji1Ý^ï0Á26Î¼à’ŠÙ¥™yÜR¡\&oÎáÖØøäï¾¿ýZ¬ÕxkûtßøÒ”¬Â¸ôâR!úÄ|i\nOZ_QÓXVù¸EìR!ÞŽzþ«{&X2M•ºž`µGæoü9L˜† !ÍÌÊŠŠŽ†Gg­™ÏÌAY“ßàŽ{U<¦gõ˜ÕcºKÇôäŽ5erß§³?}´kyˆ{JZúÍ3Gn/úxá×˜¾z²ä»Ç+GºÚ\‘J¥ùùùÉ)©®önoœãc>˜5ñuáØWªpk¢±½²'öñœýñ“ã–±Ñq		×öo¼7ÿ»¨{Üæ_Û/úÆ~é÷{fÿ¸aê°³¿pžó¹ãìÏæ|§9Ÿ¡S(ÏûtêöðVphØ¥sÍü.9!¬9÷'\ËyîßXLIŠ‰d^Q‘H”“““’šêëénstûÃ¥Ãƒ¦¿—5é2¸ë±½*Çô’Œé)Û«xÂkIfýÜgl³q¦·ý]0þ+¡0	Xîß¹±ð;ÇyŸ9ÏÿÜi>Ã?wœô™Ëü/|ewÌ²B"é¬zwˆ0¹°°ÐöÖ•¸é}5ñÞpAK~˜£…³‰Døì÷3cÃTš¡ù°ûª¬¬,*.É*àqDrÈ·²Jª®¹³¬nÄrÈË	+
+9¢à¨Ôøt6DàAÊ_À•eæsòÙ0‡ÔàyŸ4/@óµ««¦Gkk+^AAAvvvtLŒ›£ýýó'îØp×jÉý­sînžu×j±Íá-v7Î‡à%ÔÅÇÇ‡ #844„¡˜˜Ni©\.³ÐÛ\\‚ÐÅÁîî™C6{Vßß:÷´¶kÅÃs‡Ãƒ@§¶¶6777..ÎØTXX¨‘Ã¿Ø˜(¢ïÕøøøû
+„²?p8‰Š*ãr¸\NFf&Ä3 at°¾?ÖD’„ø¸r¿©±QkøEèÃá@”–žâh{ÿÞ¹c6‡6Ùì\~ßjÑC«E6ÛßÙ½ÊæøN‡Û—ƒüJJK›Á«fXÆ³&$$@ûF“˜îüüBC‚XÙY2™Ìø'_^ZÛT*’‚`³¹M•‘Íº}t[¶Yo´é=V¿;Cá
+om4M üÖ”•BT¿ð²fî·ªª
+&qV‘€'QHëšÓŠe£²Å’Ú&QMcvQyhdlxtR!¯J\Ó.–U,Ì-()åpe2)x4Ó¾ÚOúZÐ!Xé_‡äü-~ðˆð•””gçä¦eàŸ²B?bUPÆTUW¬uø-0Ò2ÃQi8 y“Ÿ5lnn†aDµyùùY¬h*#‹SReU5Ä|:üêêj¦P†Fà™2ÜØ8s‰á0Ë2ômÄ
+fÑ‘é‹Q€Yž)›	Ì_¦˜ŒÃës›Í.(,ÌÉCvfdez²X¹ù…Å| n–-ÓÄ=¼–|@§¦F2B¸æqiÛýL;Ê«š›Ã|=b½ìSCŸ%ø:¹žÜ4ó}@¤r> ±ˆ3;/Àá´|ø‹em]c|W,£„‰,aÔª««ŠK¸9ÅB¾¬¾BÞÄA?&Ü,ªjÌ/­@›´¹¹YYÙ™ùü\¶8§[RÊ•àe)Ï$ÆõýO$XÞƒZ˜ÆÆF]H°¢iãÏ=›º£éL¦7c”Ð†_ÈRà£¡¡PõÂb‡éëØõÛ3Õy¡G£S1Þ Q§ÃçË$V|0¿áÅüzW‡80FZ/ ±+hÞÁ›fÄOíŸ<ãÝ´i8z´ŒÃkº£Ð6ÂëhýÎp kÚÔ~ñÞö´».‚•‰À±1^¥ÊJÚ)…4¿ˆ#,¢÷V$*,.),Æái]ó;»íÇ÷¬å¦­¿àŒžü%`5Î´É¤ÐÙÍt²XMM2¹ºøÄM”Öäx94µ¿ÎýiÃÚjVVæ£Uc[ÆãEÜÑˆÓ†Í9´ ;Ê°/ƒOFÁ#Ù¹ZÃ6}¶¿hMþ¦ ¼–àþ‹!(/Ôä°…€T›q‚o©H$dÂSÓa2>º{Ð>ç2…]‡!9mò_£¹$ù«¿GoÔéŠÄØ¸±÷‚ëß’w¦ÓÞHª!­3É¿é¶Al±¸ÍÒ‘McŸo³‘?$ÞC+¾&(ŽÕÿÚae
+¸Û§S¿™`™Ž¦§†èÃ„…ìŒœ’üÂp¢0«Ð†/@èÂÌûÆ¾:Í®?º—Œf{dþÆŸÃdzzÉP4šûÂP4êtEÒ•?ýøÂŸÃl/!MþVIg:í$»ð·';“ü›þ&ø6 ë¥#Æàõ]ŒKÞf#ÔK(,^7’X9,;=™2ùCž¦&µ—üæŸÃDÎ
+‹‹Ù¦HmÿdþØh¾ðè^2ší‘Ù¥?4Lv>qÐ&S iuº"1µ¡Ã·ÊØøË'c­ÎtÚi¼»—Ð™ÄØx‡JÛÑß	ä^q±±6ËF6Ño¸ÐÌ.ŒÉ³-Ò<‚ˆ5/äÉíÖÖç?kJýa€ñ Œ2)àßßõèº2šÆŠ¿#ÁzyÌJ·MoãåSŒ˜ZelüÄ¬J´íbÖ—Ð™ÄØx‡ª}„ÚEIuuu|\Ü½å#Û ‘†·…ã-Cx·j$9sïíSµòZÓ˜þC	–©Ù:ÃG÷_©.Žïïzt]McÅß‘`%Ú¿<ë¿ß³^Z<¢tB¤|¡I(~"êF ’ ŠF‘“ßtµ˜êf+—ËM1ñgyÖGêØ³v¬]µ¿ÿÍk/¡íÚú{ßÅÎtÚ©ýÿÒ³¦¤¤Ü»pÒn÷r‡­s6š;­3³_=Á~Õ‹)ö–óìmñ²»“ÕÒÚf|H¦p|¹¤‹žµýhþï{Öö‘ÁïzÿÀ›×á»ØÞ S«þOyVæóCéé	II±qñ1q±ÑÑQ‘QQ‘±±±iéé¥e<E}i²¶m4àOô¬íGó?fmŸs½ 1NS‰ÑôÎ$í›êŠä¿»»Î0mÊmøPë”)«Tê6ó—Ož/Ïý)Ý½äîþõûýs»ëØ³šJ´&¥©¤ý»ø‚¤}S]‘üww×™]ìîÏºßÿÐî:ŽYM%LHÑ^B·ÿõ¿–´oª+’ÿîî:3 ‹ÝýY÷ûÚÝ_`ý¬ÿ1ÝýÖ¿ÀúÓÝ_1ë_1ëLwÿ  ÿÿ cZ‹ž[f    IEND®B`‚
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/contrib/joomla/includes/frontend.php gallery-1.5.2/contrib/joomla/includes/frontend.php
--- gallery-1.5.1/contrib/joomla/includes/frontend.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/includes/frontend.php	2005-10-17 19:46:12.000000000 +0200
@@ -0,0 +1,149 @@
+<?php
+// $Id: frontend.php,v 1.1 2005/10/17 17:46:12 jenst Exp $
+/**
+* Content code
+* @package Mambo Open Source
+* @Copyright (C) 2000 - 2003 Miro International Pty Ltd
+* @ All rights reserved
+* @ Mambo Open Source is Free Software
+* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
+* @version $Revision: 1.1 $
+**/
+
+defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
+
+/**
+* Utility functions and classes
+*/
+
+function mosLoadComponent( $name ) {
+	// set up some global variables for use by the frontend component
+	global $mainframe, $database;
+	
+	include( $mainframe->getCfg( 'absolute_path' )."/components/com_$name/$name.php" );
+}
+
+function mosCountModules(  $position='left' ) {
+	global $database, $my, $Itemid, $MOS_GALLERY_PARAMS;
+
+	if (isset($MOS_GALLERY_PARAMS['hideRightSide'])
+	    && $MOS_GALLERY_PARAMS['hideRightSide'])
+	{
+		if ($position == 'right' || $position == 'user2') {
+			return 0;
+		}
+	}
+
+	$query = "SELECT COUNT(*)"
+	."\nFROM #__modules AS m"
+	. "\nINNER JOIN #__modules_menu AS mm ON mm.moduleid=m.id"
+	. "\nWHERE m.published='1' AND m.access <= '$my->gid' AND m.position='$position'"
+	. "\nAND (mm.menuid = '$Itemid' OR mm.menuid = '0')";
+	
+	$database->setQuery($query);
+	//echo $database->getQuery();
+	return $database->loadResult();
+}
+
+function mosLoadModules( $position='left', $horiz=false ) {
+	global $database, $my, $Itemid;
+	
+	require_once( "includes/frontend.html.php" );
+
+	$query = "SELECT id, title, module, position, content, showtitle, params"
+	."\nFROM #__modules AS m, #__modules_menu AS mm"
+	. "\nWHERE m.published='1' AND m.access <= '$my->gid' AND m.position='$position'"
+	. "\nAND mm.moduleid=m.id"
+	. "\nAND (mm.menuid = '$Itemid' OR mm.menuid = '0')"
+	. "\nORDER BY ordering";
+	
+	$database->setQuery( $query );
+	$modules = $database->loadObjectList();
+	if($database->getErrorNum()) {
+		echo "MA ".$database->stderr(true);
+		return;
+	}
+	
+	if (count( $modules ) < 1) {
+		$horiz = false;
+	}
+	if ($horiz) {
+		echo "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" width=\"100%\">";
+		echo "\n<tr>";
+	}
+	foreach ($modules as $module) {
+		$params = mosParseParams( $module->params );
+
+		if ($horiz) {
+			echo "<td valign=\"top\">";
+		}
+			
+		if ((substr("$module->module",0,4))=="mod_") {
+			modules_html::module2( $module, $params, $Itemid );
+		} else {
+			modules_html::module( $module, $params, $Itemid );
+		}
+
+		if ($horiz) {
+			echo "</td>";
+		}
+	}
+	if ($horiz) {
+		echo "\n</tr>\n</table>";
+	}
+}
+
+/**
+*
+*/
+function mosParseParams( $txt ) {
+	$sep1 = "\n";	// line separator
+	$sep2 = "=";	// key value separator
+	
+	$temp = explode( $sep1, $txt );
+	$obj = new stdClass();
+	// We use trim() to make sure a numeric that has spaces
+	// is properly treated as a numeric
+	foreach ($temp as $item) {
+		if($item) {
+			$temp2 = explode( $sep2, $item, 2 );
+			$k = trim( $temp2[0] );
+			if (isset( $temp2[1] )) {
+				$obj->$k = trim( $temp2[1] );
+			} else {
+				$obj->$k = $k;
+			}
+		}
+	}
+	return $obj;
+}
+
+function mosSendAdminMail( $adminName, $adminEmail, $email, $type, $title, $author ) {
+	global $mosConfig_live_site;
+
+	$headers = "";
+	$subject = _MAIL_SUB." '$type'";
+	$message = _MAIL_MSG;
+	eval ("\$message = \"$message\";");
+	$headers .= "From: ".$adminName." <".$adminEmail.">\r\n";
+	$headers .= "Reply-To: <".$adminEmail.">\r\n";
+	$headers .= "X-Priority: 3\r\n";
+	$headers .= "X-MSMail-Priority: Low\r\n";
+	$headers .= "X-Mailer: Mambo Open Source 4.5\r\n";
+	@mail($adminEmail, $subject, $message, $headers);
+}
+
+/**
+* Displays a not authorised message
+*
+* If the user is not logged in then an addition message is displayed.
+*/
+function mosNotAuth() {
+	global $my;
+
+	echo _NOT_AUTH;
+	if ($my->id < 1) {
+		echo "<br>" . _DO_LOGIN;
+	}
+}
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/contrib/joomla/toolbar.gallery.php gallery-1.5.2/contrib/joomla/toolbar.gallery.php
--- gallery-1.5.1/contrib/joomla/toolbar.gallery.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/contrib/joomla/toolbar.gallery.php	2006-01-06 07:31:33.000000000 +0100
@@ -0,0 +1,34 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Gallery Component for Mambo Open Source CMS v4.5 or newer
+ * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
+ *
+ * $Id: toolbar.gallery.php,v 1.1.2.1 2006/01/06 06:31:33 jenst Exp $
+ */
+
+require_once($mainframe->getPath('toolbar_default'));
+
+mosMenuBar::startTable();
+mosMenuBar::save();
+mosMenuBar::back();
+mosMenuBar::spacer();
+mosMenuBar::endTable();
+
+?>
diff -Naur gallery-1.5.1/contrib/mambo/admin.gallery.html.php gallery-1.5.2/contrib/mambo/admin.gallery.html.php
--- gallery-1.5.1/contrib/mambo/admin.gallery.html.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/mambo/admin.gallery.html.php	2006-01-06 07:31:34.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * Gallery Component for Mambo Open Source CMS v4.5 or newer
  * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
  *
- * $Id: admin.gallery.html.php,v 1.2.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: admin.gallery.html.php,v 1.3.2.1 2006/01/06 06:31:34 jenst Exp $
  */
 
 class HTML_content {
diff -Naur gallery-1.5.1/contrib/mambo/admin.gallery.php gallery-1.5.2/contrib/mambo/admin.gallery.php
--- gallery-1.5.1/contrib/mambo/admin.gallery.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/mambo/admin.gallery.php	2006-01-06 07:31:34.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * Gallery Component for Mambo Open Source CMS v4.5 or newer
  * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
  *
- * $Id: admin.gallery.php,v 1.3.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: admin.gallery.php,v 1.4.2.1 2006/01/06 06:31:34 jenst Exp $
  */
 
 defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
diff -Naur gallery-1.5.1/contrib/mambo/gallery.php gallery-1.5.2/contrib/mambo/gallery.php
--- gallery-1.5.1/contrib/mambo/gallery.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/mambo/gallery.php	2006-01-06 07:31:34.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * Gallery Component for Mambo Open Source CMS v4.5 or newer
  * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
  *
- * $Id: gallery.php,v 1.4.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: gallery.php,v 1.5.2.1 2006/01/06 06:31:34 jenst Exp $
  */
 
 defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
diff -Naur gallery-1.5.1/contrib/mambo/gallery.xml gallery-1.5.2/contrib/mambo/gallery.xml
--- gallery-1.5.1/contrib/mambo/gallery.xml	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/mambo/gallery.xml	2006-01-06 07:31:34.000000000 +0100
@@ -1,7 +1,7 @@
 <?xml version="1.0" ?>
 <!--
  | Gallery - a web based photo album viewer and editor
- | Copyright (C) 2000-2005 Bharat Mediratta
+ | Copyright (C) 2000-2006 Bharat Mediratta
  |
  | This program is free software; you can redistribute it and/or modify
  | it under the terms of the GNU General Public License as published by
@@ -19,42 +19,43 @@
  |
  | Gallery Component for Mambo Open Source CMS v4.5 or newer
  | Original author: Beckett Madden-Woods <beckett@beckettmw.com>
+ | Last author: Kai Tomalik <kai@gallery-addons.com>
  |
- | $Id: gallery.xml,v 1.4.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ | $Id: gallery.xml,v 1.5.2.2 2006/01/06 06:31:34 jenst Exp $
 -->
 <mosinstall type="component" version="4.5">
 	<name>Gallery</name>
-	<creationDate>February 2004</creationDate>
+	<creationDate>December, 31st 2005</creationDate>
 	<author>Gallery Development Team</author>
 	<copyright>This component is released under the Gallery license (GNU General Public License)</copyright>
 	<authorEmail>gallery-devel@lists.sourceforge.net</authorEmail>
 	<authorUrl>gallery.sourceforge.net</authorUrl>
-	<version>1.4.5</version>
+	<version>1.5.2</version>
 	<description>Gallery Component For MOS 4.5 or newer</description>
 	<files>
 		<filename>gallery.php</filename>
 	</files>
 	<install>
 		<queries>
-			<query id="1">CREATE TABLE IF NOT EXISTS `mos_gallery`
+			<query id="1">CREATE TABLE IF NOT EXISTS `#__gallery`
 			           ( `field` varchar(128) PRIMARY KEY,
 				     `value` text default '')
 			</query>
-			<query id="2">INSERT INTO `mos_gallery` (`field`, `value`)
+			<query id="2">INSERT INTO `#__gallery` (`field`, `value`)
 			           VALUES ('path',          '')
 			</query>
-			<query id="3">INSERT INTO `mos_gallery` (`field`, `value`)
+			<query id="3">INSERT INTO `#__gallery` (`field`, `value`)
 			           VALUES ('minAuthType',   '20')
 			</query>
-			<query id="4">INSERT INTO `mos_gallery` (`field`, `value`)
+			<query id="4">INSERT INTO `#__gallery` (`field`, `value`)
 			           VALUES ('hideRightSide', '1')
 			</query>
 		</queries>
 	</install>
 	<uninstall>
 		<queries>
-			<query id="1">DELETE FROM `mos_gallery`;</query>
-			<query id="2">DROP TABLE `mos_gallery`;</query>
+			<query id="1">DELETE FROM `#__gallery`;</query>
+			<query id="2">DROP TABLE `#__gallery`;</query>
 		</queries>
 	</uninstall>
 	<administration>
diff -Naur gallery-1.5.1/contrib/mambo/toolbar.gallery.php gallery-1.5.2/contrib/mambo/toolbar.gallery.php
--- gallery-1.5.1/contrib/mambo/toolbar.gallery.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/mambo/toolbar.gallery.php	2006-01-06 07:31:34.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * Gallery Component for Mambo Open Source CMS v4.5 or newer
  * Original author: Beckett Madden-Woods <beckett@beckettmw.com>
  *
- * $Id: toolbar.gallery.php,v 1.2.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: toolbar.gallery.php,v 1.3.2.1 2006/01/06 06:31:34 jenst Exp $
  */
 
 require_once($mainframe->getPath('toolbar_default'));
diff -Naur gallery-1.5.1/contrib/phpBB2/ChangeLog gallery-1.5.2/contrib/phpBB2/ChangeLog
--- gallery-1.5.1/contrib/phpBB2/ChangeLog	2004-07-16 15:50:28.000000000 +0200
+++ gallery-1.5.2/contrib/phpBB2/ChangeLog	2006-01-04 12:31:30.000000000 +0100
@@ -1,3 +1,13 @@
+2006-01-04 Jens Tkotz <jens@peino.de> 1.5.2-RC2-cvs-b10
+
+  * Adapted init.php to fit with phpBB2 2.0.19
+
+  * Removed Patch, as it only would fit for a couple Versions.	
+
+2005-10-05 Jens Tkotz <jens@peino.de> 1.5.2-cvs-b13
+
+	* Adapted modules.php to fit with phpBB2 2.0.17
+
 2004-07-16 Jens Tkotz <jens@peino.de> 1.4.5-cvs-b26
 
 	* Adapted modules.php to fit with phpBB2 2.0.9
diff -Naur gallery-1.5.1/contrib/phpBB2/HowTo.txt gallery-1.5.2/contrib/phpBB2/HowTo.txt
--- gallery-1.5.1/contrib/phpBB2/HowTo.txt	2004-08-03 05:46:38.000000000 +0200
+++ gallery-1.5.2/contrib/phpBB2/HowTo.txt	2006-01-04 12:31:30.000000000 +0100
@@ -1,6 +1,6 @@
 Hello, 
 
-this a very little description what you have to do to make Gallery >=1.4.3 work with phpBB2 2.0.6 - 2.0.9
+this a very little description what you have to do to make Gallery >=1.4.3 work with phpBB2 2.0.6 - 2.0.19
 
 - Fresh phpBB2 installlation
 
@@ -13,7 +13,6 @@
   - ln -s /path/to/your/Galleryfolder gallery   (This works only on *nix Systems)
   
 - modify phpBB2 code 
-	see phpBB2-manual_changes.txt or 
-	copy the phpBB2.patch into phpBB2 folder and do 'patch -p1 <phpBB2.patch')
+	see phpBB2-manual_changes.txt
 
 Done :)
diff -Naur gallery-1.5.1/contrib/phpBB2/modules.php gallery-1.5.2/contrib/phpBB2/modules.php
--- gallery-1.5.1/contrib/phpBB2/modules.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/phpBB2/modules.php	2006-01-06 07:31:34.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: modules.php,v 1.8.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: modules.php,v 1.9.2.1 2006/01/06 06:31:34 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/contrib/phpBB2/phpBB2-manual_changes.txt gallery-1.5.2/contrib/phpBB2/phpBB2-manual_changes.txt
--- gallery-1.5.1/contrib/phpBB2/phpBB2-manual_changes.txt	2005-03-13 00:54:18.000000000 +0100
+++ gallery-1.5.2/contrib/phpBB2/phpBB2-manual_changes.txt	2005-10-05 17:25:05.000000000 +0200
@@ -18,6 +18,7 @@
  	{
  		$sessiondata = array();
  		$session_id = ( isset($_GET['sid']) ) ? $_GET['sid'] : '';
+		$sessionmethod = SESSION_METHOD_GET;
 After add:
 		// Added for Gallery
 		if(!isset($_GET['sid'])) {
@@ -29,6 +30,7 @@
  	{
  		$sessiondata = array();
  		$session_id = ( isset($_GET['sid']) ) ? $_GET['sid'] : '';
+		$sessionmethod = SESSION_METHOD_GET;
 Again add:
 		// Added for Gallery
 		if(!isset($_GET['sid'])) {
diff -Naur gallery-1.5.1/contrib/phpBB2/phpBB2.patch gallery-1.5.2/contrib/phpBB2/phpBB2.patch
--- gallery-1.5.1/contrib/phpBB2/phpBB2.patch	2005-03-14 16:03:26.000000000 +0100
+++ gallery-1.5.2/contrib/phpBB2/phpBB2.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,60 +0,0 @@
-diff -ur -x config.php phpBB2/includes/page_header.php phpBB2.gallery/includes/page_header.php
---- phpBB2/includes/page_header.php	2004-03-13 17:21:53.000000000 +0100
-+++ phpBB2.gallery/includes/page_header.php	2004-03-30 19:03:35.000000000 +0200
-@@ -393,6 +393,7 @@
- 	'U_VIEWONLINE' => append_sid('viewonline.'.$phpEx),
- 	'U_LOGIN_LOGOUT' => append_sid($u_login_logout),
- 	'U_GROUP_CP' => append_sid('groupcp.'.$phpEx),
-+	'U_GALLERY' => append_sid('modules.'.$phpEx.'?op=modload&name=gallery&file=index'),
- 
- 	'S_CONTENT_DIRECTION' => $lang['DIRECTION'],
- 	'S_CONTENT_ENCODING' => $lang['ENCODING'],
-diff -ur -x config.php phpBB2/includes/sessions.php phpBB2.gallery/includes/sessions.php
---- phpBB2/includes/sessions.php	2003-07-20 17:42:23.000000000 +0200
-+++ phpBB2.gallery/includes/sessions.php	2004-03-30 19:03:35.000000000 +0200
-@@ -44,6 +44,11 @@
- 	{
- 		$sessiondata = array();
- 		$session_id = ( isset($_GET['sid']) ) ? $_GET['sid'] : '';
-+		// Added for Gallery
-+		if(!isset($_GET['sid'])) {
-+			$session_id = ( isset($_POST['sid']) ) ? $_POST['sid'] : '';
-+		}
-+		//
- 		$sessionmethod = SESSION_METHOD_GET;
- 	}
- 
-@@ -214,6 +219,11 @@
- 	{
- 		$sessiondata = array();
- 		$session_id = ( isset($_GET['sid']) ) ? $_GET['sid'] : '';
-+		// Added for Gallery
-+		if(!isset($_GET['sid'])) {
-+			$session_id = ( isset($_POST['sid']) ) ? $_POST['sid'] : '';
-+		}
-+		// 
- 		$sessionmethod = SESSION_METHOD_GET;
- 	}
- 
-diff -ur -x config.php phpBB2/templates/subSilver/overall_header.tpl phpBB2.gallery/templates/subSilver/overall_header.tpl
---- phpBB2/templates/subSilver/overall_header.tpl	2003-07-20 17:42:25.000000000 +0200
-+++ phpBB2.gallery/templates/subSilver/overall_header.tpl	2004-03-30 19:03:35.000000000 +0200
-@@ -209,6 +209,7 @@
- @import url("templates/subSilver/formIE.css"); 
- -->
- </style>
-+<link rel="stylesheet" href="modules/gallery/css/base.css.default" type="text/css">
-+<link rel="stylesheet" href="modules/gallery/css/embedded_style.css.default" type="text/css">
- <!-- BEGIN switch_enable_pm_popup -->
- <script language="Javascript" type="text/javascript">
- <!--
-@@ -233,6 +234,9 @@
- 				<table cellspacing="0" cellpadding="2" border="0">
- 					<tr> 
- 						<td align="center" valign="top" nowrap="nowrap"><span class="mainmenu">&nbsp;<a href="{U_FAQ}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_faq.gif" width="12" height="13" border="0" alt="{L_FAQ}" hspace="3" />{L_FAQ}</a></span><span class="mainmenu">&nbsp; &nbsp;<a href="{U_SEARCH}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_search.gif" width="12" height="13" border="0" alt="{L_SEARCH}" hspace="3" />{L_SEARCH}</a>&nbsp; &nbsp;<a href="{U_MEMBERLIST}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_members.gif" width="12" height="13" border="0" alt="{L_MEMBERLIST}" hspace="3" />{L_MEMBERLIST}</a>&nbsp; &nbsp;<a href="{U_GROUP_CP}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_groups.gif" width="12" height="13" border="0" alt="{L_USERGROUPS}" hspace="3" />{L_USERGROUPS}</a>&nbsp; 
-+						<!-- Gallery -->
-+						&nbsp;&nbsp;<a href="{U_GALLERY}" class="mainmenu"><img src="modules/gallery/images/g1-phpBB2-icon.png" border="0" alt="GALLERY" hspace="3" />Gallery</a>&nbsp;
-+						<!-- Gallery -->
- 						<!-- BEGIN switch_user_logged_out -->
- 						&nbsp;<a href="{U_REGISTER}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_register.gif" width="12" height="13" border="0" alt="{L_REGISTER}" hspace="3" />{L_REGISTER}</a></span>&nbsp;
- 						<!-- END switch_user_logged_out -->
diff -Naur gallery-1.5.1/contrib/phpnuke/block-Random_Image.php.sample gallery-1.5.2/contrib/phpnuke/block-Random_Image.php.sample
--- gallery-1.5.1/contrib/phpnuke/block-Random_Image.php.sample	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/contrib/phpnuke/block-Random_Image.php.sample	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: block-Random_Image.php.sample,v 1.3.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: block-Random_Image.php.sample,v 1.4.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/copy_photo.php gallery-1.5.2/copy_photo.php
--- gallery-1.5.1/copy_photo.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/copy_photo.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: copy_photo.php,v 1.23.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: copy_photo.php,v 1.27.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -47,21 +47,22 @@
 <?php
 if ($gallery->session->albumName && isset($index)) {
 	$numPhotos = $gallery->album->numPhotos(1);
-
-        if (!empty($newAlbum)) {	// we are copying from one album to another
-            	$postAlbum = $albumDB->getAlbumByName($newAlbum);
+	// we are copying from one album to another
+	if (!empty($newAlbum)) {
+		$postAlbum = $albumDB->getAlbumByName($newAlbum);
 		if (!$postAlbum) {
 			echo gallery_error(sprintf(_("Invalid album selected: %s"),
-						$newAlbum));
+			$newAlbum));
 		} else {
 			if ($gallery->album->isAlbum($index)) {
 				echo gallery_error(sprintf(_("Can't copy album #%d"),
-						       $index));
-			} else { // copying "picture" to another album
-
+				$index));
+			}
+			// copying "picture" to another album
+			else {
 				for ($index = $startPhoto; $index <= $endPhoto; $index++) {
 					if (!$gallery->album->isAlbum($index)) {
-					        set_time_limit($gallery->app->timeLimit);
+						set_time_limit($gallery->app->timeLimit);
 						processingMsg (sprintf(_("Copying photo #%d"),$index));
 						$mydir = $gallery->album->getAlbumDir();
 						$myphoto = $gallery->album->getPhoto($index);
@@ -71,10 +72,10 @@
 						$myfile = "$mydir/$myname.$mytype";
 						$myhidden = $myphoto->isHidden();
 						if (($postAlbum->fields["thumb_size"] == $gallery->album->fields["thumb_size"]) &&
-						    (!$myphoto->isMovie())) {
-							$pathToThumb="$mydir/$myname.thumb.$mytype";
+						(!$myphoto->isMovie())) {
+							$pathToThumb = "$mydir/$myname.thumb.$mytype";
 						} else {
-							$pathToThumb="";
+							$pathToThumb = '';
 							echo "- ". _("Creating Thumbnail") ."<br>";
 							my_flush();
 						}
@@ -82,16 +83,20 @@
 
 						$id = $gallery->album->getPhotoId($index);
 
-						$err = $postAlbum->addPhoto($myfile, $mytype, $myname, 
-								$gallery->album->getCaption($index), 
-								$pathToThumb, $photo->extraFields, 
-								$gallery->album->getItemOwner($index));
+						$err = $postAlbum->addPhoto($myfile, $mytype, $myname,
+						  $gallery->album->getCaption($index),
+						  $pathToThumb, $photo->extraFields,
+						  $gallery->album->getItemOwner($index),
+						  NULL,
+						  '', 0, 0, 0, 0,
+						  false
+						);
 
 						if (!$err) {
 							if ($postAlbum->getAddToBeginning()) {
-							    $newPhotoIndex = 1;
-							} else {					
-							    $newPhotoIndex = $postAlbum->numPhotos(1);
+								$newPhotoIndex = 1;
+							} else {
+								$newPhotoIndex = $postAlbum->numPhotos(1);
 							}
 
 							// Save additional item settings... currently:
@@ -112,28 +117,33 @@
 						} else {
 							echo gallery_error($err);
 							return;
-                				}
-			     		} else {
+						}
+					} else {
 						echo sprintf(_("Skipping Album #%d"), $index)."<br>";
-						$index++; // we hit an album... don't copy it... just increment the index
+						// we hit an album... don't copy it... just increment the index
+						$index++;
 					}
-	    			} //end for
-			} //end else
+					//end for
+				}
+				//end else
+			}
 		       	?>
 			<form>
 			<input type="button" value="<?php echo _("Dismiss") ?>" onclick='parent.close()'>
 			</form>
 		       	<?php
 		       	return;
-	       	} //end if ($gallery->album != $postAlbum)
-	} //end if (isset($newAlbum))
+		       	//end if ($gallery->album != $postAlbum)
+		}
+		//end if (isset($newAlbum))
+	}
 	elseif (isset($newAlbum) && $newAlbum == 0) {
 		echo gallery_error(_("Please select the album where you want to copy the photo(s) to."));
 	}
 	if ($gallery->album->isAlbum($index)) {
 		echo gallery_error(sprintf(_("Can't copy album #%d"), $index));
 		return;
-	} else {  
+	} else {
 		echo $gallery->album->getThumbnailTag($index)
 ?>
 <p>
@@ -200,7 +210,7 @@
 	}
 ?>
 <p>
-<input type="submit" value="<?php echo _("Copy to Album!") ?>">
+<input type="submit" value="<?php echo gTranslate('core', "Copy to Album!") ?>">
 <input type="button" name="close" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
 </form>
 <?php
diff -Naur gallery-1.5.1/create_user.php gallery-1.5.2/create_user.php
--- gallery-1.5.1/create_user.php	2005-09-13 11:20:18.000000000 +0200
+++ gallery-1.5.2/create_user.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: create_user.php,v 1.53.2.2 2005/09/13 09:20:18 jenst Exp $
+ * $Id: create_user.php,v 1.56.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -150,10 +150,9 @@
 ?>
 <br>
 
-<?php echo makeFormIntro("create_user.php", array(
-				"name" => "usercreate_form", 
-				"method" => "POST",
-				'onsubmit' => 'usercreate_form.create.disabled = true;'));
+<?php echo makeFormIntro('create_user.php', array(
+        'name'     => 'usercreate_form', 
+        'onsubmit' => 'usercreate_form.create.disabled = true;'));
 ?>
 <br>
 
diff -Naur gallery-1.5.1/css/base.css.default gallery-1.5.2/css/base.css.default
--- gallery-1.5.1/css/base.css.default	2005-08-16 00:56:27.000000000 +0200
+++ gallery-1.5.2/css/base.css.default	2006-01-18 19:06:03.000000000 +0100
@@ -11,7 +11,7 @@
    Some of the styles below are overridden by specific 
    album properties.
 
-   $Id: base.css.default,v 1.22.2.1 2005/08/15 22:56:27 jenst Exp $
+   $Id: base.css.default,v 1.26.2.3 2006/01/18 18:06:03 jenst Exp $
 */ 
 
 
@@ -20,7 +20,7 @@
    album 'bgcolor', 'background', and 'textcolor' properties.
 */
 
-body {
+body, html {
 }
 
 img {
@@ -29,7 +29,6 @@
 
 td,p { 
 }
-^
 
 a {
     text-decoration: none;
@@ -116,14 +115,14 @@
  	{
  	 float: none;
 	}
- 
-.vasummary /* controls the view of Album summary */
-	{
-        font-weight:bold;
-        padding:2px;
-        margin-top:10px;
-        width:80%;
-	}
+
+ /* controls the view of Album summary */ 
+.vasummary {
+    font-weight:bold;
+    padding:2px;
+    margin-top:10px;
+    width:80%;
+}
 
 .commentIndication {
     color: red;
@@ -175,10 +174,11 @@
 .mod_toplight_left  /* Gallery & Album titles. Text is controlled by .head */
 	{
 	}
-.bread                          /* used in breadcrumb bars */
-	{ 
-	  font-size: 10px; 
-	}
+
+/* used in breadcrumb bars */
+.bread { 
+    font-size: 10px;
+}
 
 .topNavbar {
     margin-bottom: 10px;
@@ -236,6 +236,7 @@
 	  border-top-width:0px;
 	  border-bottom-width:0px;
 	  border-left-width:0px;
+	  text-align:center;
 	}
 
 .borderleft
@@ -244,6 +245,7 @@
 	  border-top-width:0px;
 	  border-bottom-width:0px;
 	  border-right-width:0px;
+	  text-align:center;
 	}
 .fineprint                      /* used for fine print */
 	{
@@ -319,6 +321,7 @@
 {
     font-size: 12px; font-weight: normal;
     padding: 5px;
+    padding-top:0px; 
     margin-bottom: 10px;
 }
 
@@ -349,7 +352,7 @@
 	height: 20px;
 	margin: 0px;
 	padding-left: 5px;
-	background: url(images/tab_bottom.gif) repeat-x bottom;
+	border-bottom: 1px solid black;
 }
 
 #tabnav li {
@@ -369,6 +372,7 @@
     text-decoration: none;
     color: #666;
     border: 1px solid #000000;
+    border-bottom: none;
     -Moz-Border-Radius-TopLeft: 20px;
     -Moz-Border-Radius-TopRight: 20px;
 }
@@ -379,6 +383,7 @@
     padding:2px 5px 2px 5px; font-size:12px;
     margin-right: 4px;
     border: 1px solid #000000;
+    border-bottom: none;
     -Moz-Border-Radius-TopLeft: 20px;
     -Moz-Border-Radius-TopRight: 20px;
 }
@@ -423,8 +428,7 @@
     display: block;
     font-size: 10px;
     text-align:center;
-    float: right;
-    margin: 3px;
+    margin-top: 1px; margin-left: 3px;
 }
 
 #menu a:hover {
@@ -511,3 +515,17 @@
     vertical-align: top;
     padding: 0px; margin: 0px;
 }
+
+.subalbumTreeLine {
+    padding: 0px; margin: 0px;
+}
+
+.subalbumTreeElement {
+    vertical-align:middle;
+    white-space:nowrap;
+}
+
+.shortdesc {
+    text-align: left;
+    font-weight: bold;
+}
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/css/config.css.default gallery-1.5.2/css/config.css.default
--- gallery-1.5.1/css/config.css.default	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/css/config.css.default	2006-01-06 07:31:35.000000000 +0100
@@ -1,8 +1,8 @@
 /*
-  $Id: config.css.default,v 1.22.2.1 2005/09/12 22:40:46 dmolavi Exp $
+  $Id: config.css.default,v 1.29.2.1 2006/01/06 06:31:35 jenst Exp $
  
   Gallery - a web based photo album viewer and editor
-  Copyright (C) 2000-2005 Bharat Mediratta
+  Copyright (C) 2000-2006 Bharat Mediratta
  
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -21,11 +21,24 @@
 */ 
 
 body { 
-    margin:20px;
-    color:#000000;
+    margin-top: 10px; margin-left: 20px; margin-right: 20px;
+    color: #000000;
     background-image: url(../images/simplex-bkg.gif);
 }
 
+.header {
+    background-color: #E6E6DC;
+    font-size: 1.5em; font-weight:bold;
+    padding: 10px;
+    border: 1px solid #000000;
+}
+
+.sitedesc {
+    background-color: #FCFCF3;
+    margin-top:10px; padding:5px;
+    border: 1px solid #000000;
+}
+
 textarea:focus, input:focus {
     background-color: #FFFFDA;
 }
@@ -36,27 +49,29 @@
 
 p#bottom	{ width: 500px; }
 
-div#top		{ width: 200px; margin-left: auto; margin-right: auto; text-align:center; align: center; }
+div#top {
+    width: 200px;
+    text-align:center;
+}
 
 .error		{ font-weight:bold; background-color: #CC0000; color: #FFFFFF ;
 		  padding:2px;
 		}
 
 .errorpct	{ font-weight:bold; background-color: #CC0000; color: #FFFFFF ;
-		  padding:2px; padding-right:20px; padding-left:20px;
+		  padding:2px;
 		}
 
 .errorlong	{ font-weight:bold; background-color: #CC0000; color: #FFFFFF ;
 		  padding:2px; width: 100%; padding-left:10px;
 		}
 
-
 .success        { font-weight:bold; background-color: green; color: #FFFFFF ;
 		  width: 150px; padding:2px; 
 		}
 
 .successpct	{ font-weight:bold; background-color: green; color: #FFFFFF ;
-		  padding:2px; padding-right:20px; padding-left:20px;
+		  padding:2px;
 		}
 
 .successlong    { font-weight:bold; background-color: green; color: #FFFFFF ;
@@ -76,30 +91,42 @@
 		  padding:2px; 
 		}
 
-.separator      { background-color: #000099; color:#FFFFFF; text-align:center;
-		  padding:2px; font-size: 22px;
-		}
+.separator {
+    text-align:center;
+    font-size: 22px;
+    background-color: #000099; color:#FFFFFF;
+	padding:2px;
+}
 
-.header		{ background-color: #E6E6DC; font-size: 1.5em;  font-weight:bold; padding:10px;
-		  border-style: solid; border-width: 1px; border-color: #000000;
-		}
 
-.sitedesc	{ background-color: #FCFCF3; margin-top:25px; padding:5px;
-		  border-style: solid; border-width: 1px ; border-color: #000000;
-		}
+.subgroup {
+    text-align:center;
+    font-size: 16px; font-weight: bold;
+    background-color: #9191FF; color:#FFFFFF;
+    padding:2px;
+    width: 60%;
+    margin-top: -10px; margin-bottom: 5px;
+}
 
-.inner		{ padding: 5px; margin-top:15px;
-		  border-style: solid; border-color: #000000; border-width:1px;
-		}
+.inner {
+    padding: 5px; margin-bottom:15px;
+    border-style: solid; border-color: #000000; border-width:1px;
+}
 
-.shortdesc	{ background-color: #DCDCC0; padding:5px; font-weight: bold;
-		}
+.shortdesc {
+    background-color: #DCDCC0;
+    padding:5px;
+    font-weight: bold;
+}
 
-.desc		{ background-color: #FCFCF3 ; padding:10px;
-		}
+.desc {
+    background-color: #FCFCF3 ;
+    padding: 3px;
+}
 
-.emphasis	{ font-weight: bold;
-		}
+.emphasis	{
+    font-weight: bold;
+}
 
 .attention	{ font-size: 1.1em; font-weight:bold; 
 		  color:red ;
@@ -120,13 +147,14 @@
 		   padding:5px; margin-left:10px;
 		}
 
-.tab-hi 	{  border-style:solid; border-width:1px;border-color: black;
-		   background-color:000099; color:#FFFFFF;
-		   -moz-border-radius-topleft:10px; -moz-border-radius-topright:10px;
-		   cursor: pointer;
-		   text-align:center;
-		   padding:5px; margin-left:10px;
-		}
+.tab-hi 	{
+    border-style:solid; border-width:1px;border-color: #000000;
+    background-color: #000099; color:#FFFFFF;
+    -moz-border-radius-topleft:10px; -moz-border-radius-topright:10px;
+    cursor: pointer;
+    text-align:center;
+    padding:5px; margin-left:10px;
+}
 
 .tab-text	{ text-decoration:underline; font-weight:bold; font-size:13px;
 		}
diff -Naur gallery-1.5.1/css/screen.css.default gallery-1.5.2/css/screen.css.default
--- gallery-1.5.1/css/screen.css.default	2005-07-20 14:46:27.000000000 +0200
+++ gallery-1.5.2/css/screen.css.default	2005-12-30 19:38:12.000000000 +0100
@@ -13,7 +13,7 @@
    Some of the styles below are overriden by specific 
    album properties. These are noted 
 
-   $Id: screen.css.default,v 1.17 2005/07/20 12:46:27 jenst Exp $
+   $Id: screen.css.default,v 1.19.2.1 2005/12/30 18:38:12 jenst Exp $
 */ 
 
 
@@ -97,6 +97,7 @@
 	{ 
 	  font-size: 12px; 
 	}
+
 .caption                        /* photo captions on all pages */
 	{ 
 	  font-size: 10px; 
@@ -149,12 +150,12 @@
 	}
 
 .attention                          /* so far, just for voting instructions*/
-        {
-          font-family: Verdana, Arial, Helvetica, sans-serif;
-          font-weight: normal;
-          color: #FBFF7F;
-          font-size: 12px;
-        }
+{
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+    font-weight: normal;
+    color: #FBFF7F;
+    font-size: 12px;
+}
 
 .headbox			/* box around the page headers */
 	{
@@ -341,7 +342,7 @@
     height: 20px;
     margin: 0px;
     padding-left: 5px;
-    background: url(images/tab_bottom.gif) repeat-x bottom;
+   
 }
 
 #tabnav li {
diff -Naur gallery-1.5.1/delete_album.php gallery-1.5.2/delete_album.php
--- gallery-1.5.1/delete_album.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/delete_album.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: delete_album.php,v 1.48.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: delete_album.php,v 1.50.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -52,10 +52,16 @@
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
 <div class="popuphead"><?php echo _("Delete Album") ?></div>
 <div class="popup" align="center">
-<?php echo _("Do you really want to delete this album?") ?>
-<br>
-<b><?php echo $gallery->album->fields["title"] ?></b>
+<?php echo _("Do you really want to delete this album?"); ?>
 <p>
+<b><?php echo $gallery->album->fields["title"] ?></b>
+<?php
+    echo "\n<br>";
+    if ($gallery->album->numPhotos(1)) {
+	echo $gallery->album->getHighlightTag();
+    }
+?>
+</p>
 <?php echo makeFormIntro("delete_album.php", 
 	array('name' => 'deletealbum_form', 'onsubmit' => 'deletealbum_form.deleteButton.disabled = true;'),
  	array("type" => "popup"));
@@ -65,11 +71,7 @@
 <input type="submit" name="deleteButton" value="<?php echo _("Delete") ?>" onclick="deletealbum_form.formaction.value='delete'">
 <input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
 </form>
-<p>
 <?php
-	if ($gallery->album->numPhotos(1)) {
-		echo $gallery->album->getHighlightTag();
-	}
 } else {
 	echo gallery_error(_("no album specified"));
 }
diff -Naur gallery-1.5.1/delete_photo.php gallery-1.5.2/delete_photo.php
--- gallery-1.5.1/delete_photo.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/delete_photo.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: delete_photo.php,v 1.70.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: delete_photo.php,v 1.72.2.2 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -28,13 +28,17 @@
     getRequestVar(array('id', 'index', 'formaction', 'albumDelete', 'albumMatch', 'nextId'));
 
 if (isset($id)) {
-        $index = $gallery->album->getPhotoIndex($id);
+	$index = $gallery->album->getPhotoIndex($id);
+} 
+if (isset($albumDelete)) {
+	$index = $gallery->album->getAlbumIndex($id);
+	$myAlbum = $gallery->album->getNestedAlbum($index, false);
 }
 
 // Hack check
-if (!$gallery->user->canDeleteFromAlbum($gallery->album) 
-	&& (!$gallery->album->getItemOwnerDelete()
-	|| !$gallery->album->isItemOwner($gallery->user->getUid(), $index))) {
+if (!$gallery->user->canDeleteFromAlbum($gallery->album) && 
+	(!$gallery->album->getItemOwnerDelete() || !$gallery->album->isItemOwner($gallery->user->getUid(), $index)) &&
+	(isset($myAlbum) && !$myAlbum->isOwner($gallery->user->getUid()))) {
 	echo _("You are not allowed to perform this action!");
 	exit;
 }
@@ -47,17 +51,17 @@
 		/* Track down the corresponding photo index and remove it */
 		$index = 0;
 		for ($i = 1; $i <= sizeof($gallery->album->photos); $i++) {
-		    $photo = $gallery->album->getPhoto($i);
-		    if ($photo->isAlbum() && !strcmp($photo->getAlbumName(), $id)) {
-			$myAlbum = new Album();
-			$myAlbum->load($id, false);
-			if ($myAlbum->fields['guid'] == $albumDelete) {
-				/* Found it */
-				$index = $i;
-				$albumMatch = 1;
-				break;
+			$photo = $gallery->album->getPhoto($i);
+			if ($photo->isAlbum() && !strcmp($photo->getAlbumName(), $id)) {
+				$myAlbum = new Album();
+				$myAlbum->load($id, false);
+				if ($myAlbum->fields['guid'] == $albumDelete) {
+					/* Found it */
+					$index = $i;
+					$albumMatch = 1;
+					break;
+				}
 			}
-		    }
 		}
 	}
 
@@ -90,23 +94,21 @@
 <div class="popuphead"><?php echo _("Delete Album") ?></div>
 <div class="popup" align="center">
 <?php 
-        echo makeFormIntro("delete_photo.php", 
-		array('name' => 'deletephoto_form','onsubmit' => "deletephoto_form.confirm.disabled = true;"),
-		array('type' => 'popup'));
-	echo _("Do you really want to delete this album?") 
-?>
+		echo makeFormIntro('delete_photo.php', array(
+	      'name' => 'deletephoto_form',
+		  'onsubmit' => 'deletephoto_form.confirm.disabled = true;'),
+	      array('type' => 'popup')
+	    );
 
-<?php
-	$myAlbum = new Album();
-	$myAlbum->load($id);
+	      echo _("Do you really want to delete this album?");
+
+	      $myAlbum = new Album();
+	      $myAlbum->load($id);
 ?>
-<p>
-<?php echo $myAlbum->getHighlightTag() ?>
-</p>
-
-<b>
-<?php echo $myAlbum->fields['title'] ?>
-</b>
+
+<p><?php echo $myAlbum->getHighlightTag() ?></p>
+
+<b><?php echo $myAlbum->fields['title'] ?></b>
 <br>
 <br>
 <?php echo $myAlbum->fields['description'] ?>
@@ -119,10 +121,12 @@
 <div class="popuphead"><?php echo _("Delete Photo") ?></div>
 <div class="popup" align="center">
 <?php 
-	echo _("Do you really want to delete this photo?") ;
-        echo makeFormIntro("delete_photo.php", 
-		array('name' => 'deletephoto_form', 'onsubmit' => "deletephoto_form.confirm.disabled = true;"),
-		array('type' => 'popup'));
+		echo _("Do you really want to delete this photo?") ;
+		echo makeFormIntro('delete_photo.php', array(
+		  'name' => 'deletephoto_form',
+		  'onsubmit' => 'deletephoto_form.confirm.disabled = true;'),
+		  array('type' => 'popup')
+		);
 ?>
 
 <p><?php echo $gallery->album->getThumbnailTag($index) ?></p>
@@ -133,7 +137,7 @@
 <?php 
 		if (isset($nextId)) {
 			echo "\n". '<input type="hidden" name="nextId" value="'. $nextId .'"> ';
-		} 
+		}
 	}
 ?>
 <input type="hidden" name="formaction" value="">
diff -Naur gallery-1.5.1/delete_user.php gallery-1.5.2/delete_user.php
--- gallery-1.5.1/delete_user.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/delete_user.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: delete_user.php,v 1.45.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: delete_user.php,v 1.46.2.2 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -65,13 +65,13 @@
 		$error++;
 	}
 }
-if (! isset($error)) {	
+if (! isset($error)) {
 	echo _("Users can have special permissions in each album.") .
-	ngettext("If you delete this user, any such permissions go away.", "if you delete these users, any permissions will go away", sizeof($unames)) .
+	gTranslate('core', "If you delete this user, any such permissions go away.", "if you delete these users, any permissions will go away", sizeof($unames)) .
 	_("Users cannot be recreated.") .
-	ngettext ("Even if this user is recreated, those permissions are gone.", "Even if you recreate one of those users, the permissions are gone.", sizeof($unames));
+	gTranslate('core', "Even if this user is recreated, those permissions are gone.", "Even if you recreate one of those users, the permissions are gone.", sizeof($unames));
 	
-	echo "\n<p>" . ngettext("Do you really want to delete user:", "Do you really want to delete these users:", sizeof($unames));
+	echo "\n<p>" . gTranslate('core', "Do you really want to delete user:", "Do you really want to delete these users:", sizeof($unames));
 	foreach ($unames as $key => $value) { 
 		echo "<input type=\"hidden\" name=\"unames[$key]\" value=\"$value\"><br>$value\n";
 	}
diff -Naur gallery-1.5.1/do_command.php gallery-1.5.2/do_command.php
--- gallery-1.5.1/do_command.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/do_command.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: do_command.php,v 1.83.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: do_command.php,v 1.88.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -57,40 +57,59 @@
 }
 
 switch ($cmd) {
+    case 'rebuild_highlights':
+        $albumDB = new AlbumDB(true);
+        $albumList = $albumDB->albumList;
+        $i = 0;
+    
+        foreach($albumList as $nr => $album) {
+            if($album->isRoot()) {
+                $i++;
+                echo "\n<br><b>". sprintf (_("Rebuilding highlight %s"), $i) . '</b>';
+                $album->setHighlight($album->getHighlight());
+                $album->save();
+            }
+        }
+        dismissAndReload();
+    break;
+    
 	case 'remake-thumbnail':
 		if ($gallery->user->canWriteToAlbum($gallery->album)) {
-			printPopupStart($title);
-
 			if (empty($rebuild_type)) {
+                printPopupStart($title, '', 'center');
 				echo _("Do you also want to rebuild the thumbnails in subalbums?");
-				echo makeFormIntro('do_command.php', 
-					array('method' => 'post'),
-					array('type' => 'popup', 'index' => $index, 'cmd' => $cmd, 
-						'return' => $return, 'parentName' => $parentName));
+				echo makeFormIntro('do_command.php', array(),
+					array('type' => 'popup',
+					    'index' => $index,
+					    'cmd' => $cmd, 
+						'return' => $return,
+						'parentName' => $parentName));
 ?>
 		<br>
-		<input type="radio" name="rebuild_type" value="recursive"><?php echo _("yes"); ?>
-		<input type="radio" name="rebuild_type" value="single" checked><?php echo _("no"); ?>
+		<input type="radio" name="rebuild_type" value="recursive"><?php echo _("Yes"); ?>
+		<input type="radio" name="rebuild_type" value="single" checked><?php echo _("No"); ?>
 		<br><br>
 		<input type="submit" value="<?php echo _("Start") ?>"><br><br>
 	</form>
 <?php
 			}
 			else {
+			    printPopupStart($title, '', 'left');
 				if ($rebuild_type == "single") {
 					if ($gallery->session->albumName && isset($index)) {
 						if ($index == "all") {
 							$np = $gallery->album->numPhotos(1);
-							echo ("<br> " . sprintf(_("Rebuilding %d thumbnails..."), $np));
+							echo ("\n<h3>" . sprintf(_("Rebuilding %d thumbnails..."), $np) .'</h3>');
 							my_flush();
 							for ($i = 1; $i <= $np; $i++) {
-								echo("<br> ". sprintf(_("Processing image %d..."), $i));
+								echo("\n<h4>". sprintf(_("Processing image %d..."), $i) .'</h4>');
 								my_flush();
 								set_time_limit($gallery->app->timeLimit);
 								$gallery->album->makeThumbnail($i);
 							}
+							echo "\n<hr width=\"100%\">";
 						} else {
-							echo ("<br> " . _("Rebuilding 1 thumbnail..."));
+							echo ("\n<h3>" . _("Rebuilding 1 thumbnail...") .'</h3>');
 							my_flush();
 							set_time_limit($gallery->app->timeLimit);
 							$gallery->album->makeThumbnail($index);
@@ -112,8 +131,8 @@
 	
 	case 'logout':
 		gallery_syslog("Logout by ". $gallery->session->username ." from ". $HTTP_SERVER_VARS['REMOTE_ADDR']);
-		$gallery->session->username = "";
-		$gallery->session->language = "";
+		$gallery->session->username = '';
+		$gallery->session->language = '';
 		destroyGallerySession();
 
 		// Prevent the 'you have to be logged in' error message
diff -Naur gallery-1.5.1/docs/g1package/gallery1-install.faq.a.html gallery-1.5.2/docs/g1package/gallery1-install.faq.a.html
--- gallery-1.5.1/docs/g1package/gallery1-install.faq.a.html	2005-09-22 15:13:43.000000000 +0200
+++ gallery-1.5.2/docs/g1package/gallery1-install.faq.a.html	2006-01-19 19:57:25.000000000 +0100
@@ -2,7 +2,7 @@
        How can I get the latest version of Gallery?
       </a></dt><dt>A.2. <a href="gallery1-install.faq.a.html#gallery1-install.faq.a.2">
        How can I get the latest CVS version of Gallery?
-      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.a.1"></a><a name="id2515817"></a><b>A.1.</b></td><td align="left" valign="top"><p>
+      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.a.1"></a><a name="id2515789"></a><b>A.1.</b></td><td align="left" valign="top"><p>
        How can I get the latest version of Gallery?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        There are two different 'latest' versions of Gallery. There is the version
@@ -14,7 +14,7 @@
        more current bugfixes and neat modifications. The version in CVS is
        typically pretty stable, since the developers use it to power their own
        personal Galleries, but it is bound to have the occasional major glitch.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.a.2"></a><a name="id2518299"></a><b>A.2.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.a.2"></a><a name="id2518272"></a><b>A.2.</b></td><td align="left" valign="top"><p>
        How can I get the latest CVS version of Gallery?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        The CVS binaries are a prerequisite. You can get them from cvshome.org.
diff -Naur gallery-1.5.1/docs/g1package/gallery1-install.faq.b.html gallery-1.5.2/docs/g1package/gallery1-install.faq.b.html
--- gallery-1.5.1/docs/g1package/gallery1-install.faq.b.html	2005-09-22 15:13:43.000000000 +0200
+++ gallery-1.5.2/docs/g1package/gallery1-install.faq.b.html	2006-01-19 19:57:25.000000000 +0100
@@ -10,7 +10,7 @@
       </a></dt><dt>B.5. <a href="gallery1-install.faq.b.html#gallery1-install.faq.b.5">
        Where can I find the unzip and zipinfo
        binaries?
-      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.1"></a><a name="id2518387"></a><b>B.1.</b></td><td align="left" valign="top"><p>
+      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.1"></a><a name="id2518359"></a><b>B.1.</b></td><td align="left" valign="top"><p>
        The setup page tells me that mod_rewrite is not installed. Since mod_rewrite is
        optional, how do I configure this option?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -25,13 +25,13 @@
        For more information on mod_rewrite check out the
        <a href="http://httpd.apache.org/docs/mod/mod_rewrite.html" target="_top">Apache
        module mod_rewrite</a> page.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.2"></a><a name="id2518430"></a><b>B.2.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.2"></a><a name="id2518403"></a><b>B.2.</b></td><td align="left" valign="top"><p>
        Does Gallery work under Windows?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Many people have gotten Gallery to work under Windows using Apache.  However,
        Gallery does not interact well with IIS, because PHP still has some issues
        with executing programs like NetPBM and ImageMagick.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.3"></a><a name="id2518455"></a><b>B.3.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.3"></a><a name="id2518428"></a><b>B.3.</b></td><td align="left" valign="top"><p>
        How do I run PHP as a CGI?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Running PHP as a CGI is usually done when PHP is not available on your
@@ -79,7 +79,7 @@
        directory.  <span class="emphasis"><em>It is extremely difficult to provide support for
        this, because there are many things that can go wrong and it's hard to
        diagnose the problem.</em></span>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.4"></a><a name="id2518662"></a><b>B.4.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.4"></a><a name="id2518634"></a><b>B.4.</b></td><td align="left" valign="top"><p>
        How do I force .php files to use PHP4?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        In the rare case that your ISP has PHP3 and PHP4 installed on the same server,
@@ -91,7 +91,7 @@
          ForceType application/x-httpd-php
         &lt;/Files&gt;
        </pre><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.5"></a><a name="id2518702"></a><b>B.5.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.b.5"></a><a name="id2518675"></a><b>B.5.</b></td><td align="left" valign="top"><p>
        Where can I find the <span><b class="command">unzip</b></span> and <span><b class="command">zipinfo</b></span>
        binaries?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
diff -Naur gallery-1.5.1/docs/g1package/gallery1-install.faq.c.html gallery-1.5.2/docs/g1package/gallery1-install.faq.c.html
--- gallery-1.5.1/docs/g1package/gallery1-install.faq.c.html	2005-09-22 15:13:45.000000000 +0200
+++ gallery-1.5.2/docs/g1package/gallery1-install.faq.c.html	2006-01-19 19:57:26.000000000 +0100
@@ -116,7 +116,7 @@
       </a></dt><dt>C.42. <a href="gallery1-install.faq.c.html#gallery1-install.faq.c.42">
        When I open Gallery inside Mambo, i get "Gallery seems to be inside Mambo, but we couldn't get the necessary info."
        What am i or my visitors doing wrong?
-      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.1"></a><a name="id2518774"></a><b>C.1.</b></td><td align="left" valign="top"><p>
+      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.1"></a><a name="id2518746"></a><b>C.1.</b></td><td align="left" valign="top"><p>
        When I try to access the configuration wizard, I get a <tt class="literal">500
        Internal Server Error</tt>.  What's up?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -134,7 +134,7 @@
        If you don't have access to your <tt class="filename">httpd.conf</tt>, delete
        the <tt class="filename">.htaccess</tt> file in the <tt class="filename">setup/</tt>
        directory.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.2"></a><a name="id2518861"></a><b>C.2.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.2"></a><a name="id2518833"></a><b>C.2.</b></td><td align="left" valign="top"><p>
        I've installed Gallery and all seems well. But when I try to upload an
        image it says <tt class="literal">Unable to make thumbnail(0)</tt> or 
        <tt class="literal">Invalid image</tt>. What gives?
@@ -215,7 +215,7 @@
         </p></li></ul></div><p>
        If you still can't find a solution, try asking in the <a href="http://gallery.sf.net/forums.php" target="_top">
        Gallery Support Forums</a>.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.3"></a><a name="id2519149"></a><b>C.3.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.3"></a><a name="id2519121"></a><b>C.3.</b></td><td align="left" valign="top"><p>
        My ISP has a really old version of PHP, something before 4.0.4pl1, which
        Gallery can't work with.  What do I do?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -224,14 +224,14 @@
        probably contains security problems.  Your only other good option is to
        install PHP as a CGI, as in <a href="gallery1-install.faq.b.html#gallery1-install.faq.b.3">FAQ B.3
        </a>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.4"></a><a name="id2519184"></a><b>C.4.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.4"></a><a name="id2519156"></a><b>C.4.</b></td><td align="left" valign="top"><p>
        Whenever I try to upload grayscale JPEG images I get a <tt class="literal">Unable to
        make thumbnail</tt> error.  Why?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        This is a bug in some versions of NetPBM that cause it to choke on grayscale
        images.  This is fixed in the version of NetPBM available on the Gallery
        download page.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.5"></a><a name="id2519215"></a><b>C.5.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.5"></a><a name="id2519187"></a><b>C.5.</b></td><td align="left" valign="top"><p>
        Whenever I try to upload an image in Gallery, I get all these errors about
        <tt class="literal">safe mode</tt>.  How can I fix this?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -249,7 +249,7 @@
          Find another host that doesn't use safe mode.  Some are listed in the
          <a href="http://gallery.sourceforge.net/wiki.php?page=Web%20Hosting%20Referral%20Page" target="_top">
          Gallery Hosting Referrals Page</a>
-        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.6"></a><a name="id2519296"></a><b>C.6.</b></td><td align="left" valign="top"><p>
+        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.6"></a><a name="id2519268"></a><b>C.6.</b></td><td align="left" valign="top"><p>
        Why can't I upload big files (over a megabyte or two)?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Craig Goranson wrote a very informative <a href="http://marc.theaimsgroup.com/?l=gallery-users&amp;m=102589601604892&amp;w=2" target="_top">
@@ -271,14 +271,14 @@
        you want (until you hit <tt class="literal">upload_max_filesize</tt> and/or
        <tt class="literal">post_max_size</tt> -- see the above email link for more
        information).
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.7"></a><a name="id2519398"></a><b>C.7.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.7"></a><a name="id2519370"></a><b>C.7.</b></td><td align="left" valign="top"><p>
        When I try to run <span><b class="command">configure.sh</b></span>, I get an error like this:
        <tt class="literal">chmod: getting attributes of `setup\r': No such file or directory</tt>
        How do I fix that?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        The answer is to simply upload the <tt class="filename">configure.sh</tt> file
        in <tt class="literal">ASCII FTP mode</tt>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.8"></a><a name="id2519445"></a><b>C.8.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.8"></a><a name="id2519418"></a><b>C.8.</b></td><td align="left" valign="top"><p>
        When I try to click on the "[login]" link on the Gallery page, nothing happens
        (no window pops up).  What's wrong?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -299,7 +299,7 @@
        (note the "www" is missing), you'll still see your Gallery, but you'll
        experience this problem. The solution is to pick one hostname and stick
        with it.  
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.9"></a><a name="id2519491"></a><b>C.9.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.9"></a><a name="id2519463"></a><b>C.9.</b></td><td align="left" valign="top"><p>
        When I try to login, everything seems to go correctly, but Gallery doesn't
        log me in?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -346,7 +346,7 @@
          you need to use the one that is specified in your configuration.  If you use the one
          that's not specified, you may be unable to login.  Another remedy for this issue is
          to follow the instructions in <a href="gallery1-install.faq.c.html#gallery1-install.faq.c.22">FAQ C.22</a>
-        </p></li></ul></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.10"></a><a name="id2519682"></a><b>C.10.</b></td><td align="left" valign="top"><p>
+        </p></li></ul></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.10"></a><a name="id2519654"></a><b>C.10.</b></td><td align="left" valign="top"><p>
        Why do I see <tt class="literal">Warning: Undefined variable: GALLERY_BASEDIR...
        </tt> at the top of the page?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -367,7 +367,7 @@
        </p><pre class="screen">
         php_value error_reporting 2039
        </pre><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.11"></a><a name="id2519767"></a><b>C.11.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.11"></a><a name="id2519739"></a><b>C.11.</b></td><td align="left" valign="top"><p>
        I can successfully upload photos, but when I look in my album all I see
        are broken image icons. Why?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -375,7 +375,7 @@
        wizard.  You can fix this by re-running the config wizard and correcting
        the Albums URL value or you can edit the <tt class="filename">config.php</tt>
        file and fix the $gallery-&gt;app-&gt;albumDirURL variable. 
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.12"></a><a name="id2519800"></a><b>C.12.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.12"></a><a name="id2519772"></a><b>C.12.</b></td><td align="left" valign="top"><p>
        Why do I get <tt class="literal">Failed opening 'html_wrap/inline_albumthumb.header.default'</tt>
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        If you unzipped/untarred the Gallery script on a Mac running OS 9.2.1
@@ -389,7 +389,7 @@
        will solve this. This is only a problem if its untarred/gzipped on a Mac.
        If they are unzipped on the server they will work fine. [Thanks James
        O'Donnell]
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.13"></a><a name="id2519864"></a><b>C.13.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.13"></a><a name="id2519836"></a><b>C.13.</b></td><td align="left" valign="top"><p>
        Why do I see this error:
        </p><pre class="screen">
         jpegtopnm: WRITING PPM FILE
@@ -403,7 +403,7 @@
         </p></li><li><p>
          Your NetPBM binaries have a bug.  Please use the NetPBM binaries found
          on the Gallery Download Page.
-        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.14"></a><a name="id2519926"></a><b>C.14.</b></td><td align="left" valign="top"><p>
+        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.14"></a><a name="id2519898"></a><b>C.14.</b></td><td align="left" valign="top"><p>
        Why, when I try to upload images, does it say <tt class="literal">No images uploaded
        </tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -417,7 +417,7 @@
          <tt class="literal">file_uploads</tt> isn't enabled, then you won't be able
          to upload images to Gallery, and you should talk to your system
          administrator.
-        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.15"></a><a name="id2520007"></a><b>C.15.</b></td><td align="left" valign="top"><p>
+        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.15"></a><a name="id2519979"></a><b>C.15.</b></td><td align="left" valign="top"><p>
        Why do I get this error: <tt class="literal">Warning: fopen(".../albums/team/album.dat.lock","a+")</tt>
        or <tt class="literal">Your Userfile is not writeable</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -440,7 +440,7 @@
        directory 777.  <span class="emphasis"><em>Make sure you chmod the <tt class="filename">.users</tt>
        directory, which can sometimes be hidden from view.  See <a href="gallery1-install.faq.c.html#gallery1-install.faq.c.19">
        FAQ C.19</a> for more details</em></span>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.16"></a><a name="id2520087"></a><b>C.16.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.16"></a><a name="id2520060"></a><b>C.16.</b></td><td align="left" valign="top"><p>
        Why do I get the error <tt class="literal">Allowed memory size of Xxx bytes exhausted
        </tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -459,7 +459,7 @@
          When adding that line to <tt class="filename">.htaccess</tt>, you must use a 
          number, in bytes.  For example, 8MB would be about 8000000 bytes.
         </p></div><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.17"></a><a name="id2520173"></a><b>C.17.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.17"></a><a name="id2520146"></a><b>C.17.</b></td><td align="left" valign="top"><p>
        Why do I get <tt class="literal">pnmtojpeg: No such file or directory when uploading
        images</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -483,7 +483,7 @@
         </p></li><li><p>
          Upgrade to Gallery v1.3.4 which lets you specify which one you have in
          the config wizard.
-        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.18"></a><a name="id2520298"></a><b>C.18.</b></td><td align="left" valign="top"><p>
+        </p></li></ol></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.18"></a><a name="id2520270"></a><b>C.18.</b></td><td align="left" valign="top"><p>
        Why do I get this warning: <tt class="literal">Your script possibly relies on a
        session side-effect which existed until PHP 4.2.3</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -504,7 +504,7 @@
        </pre><p>
       </p><p>
        This should be fixed in future versions of Gallery.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.19"></a><a name="id2520371"></a><b>C.19.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.19"></a><a name="id2520344"></a><b>C.19.</b></td><td align="left" valign="top"><p>
        Why, when I try to upload a <tt class="filename">.htaccess</tt> and chmod it with my FTP client,
        it "disappears"?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -517,7 +517,7 @@
        for Chmod with WS_FTP</a>.  If you use CuteFTP, see
        <a href="http://gallery.menalto.com/modules.php?op=modload&amp;name=phpBB_14&amp;file=index&amp;topic=701&amp;action=viewtopic&amp;topic=1902" target="_top">
        this thread in the forums.</a>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.20"></a><a name="id2520421"></a><b>C.20.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.20"></a><a name="id2520393"></a><b>C.20.</b></td><td align="left" valign="top"><p>
        Why does uploading pictures on my RedHat 8.0 system result in an error
        or scewed picture?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -530,7 +530,7 @@
        this thread in the forums</a>.  Keep in mind that these are merely
        workarounds.  The best option is to upgrade your PHP version to the latest
        from <a href="http://www.php.net/" target="_top">http://www.php.net/</a>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.21"></a><a name="id2520467"></a><b>C.21.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.21"></a><a name="id2520439"></a><b>C.21.</b></td><td align="left" valign="top"><p>
        Why doesn't Gallery work correctly on my RedHat 9.0 system?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        As in Red Hat Linux versions since 8.0, the default web server is Apache
@@ -542,7 +542,7 @@
        <a href="http://www.php.net/" target="_top">http://www.php.net/</a>.  See
        <a href="http://gallery.menalto.com/modules.php?op=modload&amp;name=phpBB_14&amp;file=index&amp;action=viewtopic&amp;topic=5741&amp;1" target="_top">
        this forum post</a> for information on how to compile PHP.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.22"></a><a name="id2520511"></a><b>C.22.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.22"></a><a name="id2520483"></a><b>C.22.</b></td><td align="left" valign="top"><p>
        How do I use Gallery both from inside my LAN and the internet?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
         There is a fix planned for future versions of Gallery to allow the config
@@ -598,7 +598,7 @@
              <span class="emphasis"><em>Linux/Unix</em></span> <tt class="filename">/etc/hosts</tt>
             </p></li></ul></div><p>
          </p></li></ul></div><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.23"></a><a name="id2520738"></a><b>C.23.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.23"></a><a name="id2520710"></a><b>C.23.</b></td><td align="left" valign="top"><p>
        I'm running Gallery 1.3.4, PHP 4.0.4 and I get <tt class="literal">Call to undefined
        function: array_search() in view_photo.php</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -622,7 +622,7 @@
 
       </pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
         This has been fixed in Gallery 1.4.0
-       </p></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.24"></a><a name="id2520804"></a><b>C.24.</b></td><td align="left" valign="top"><p>
+       </p></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.24"></a><a name="id2520776"></a><b>C.24.</b></td><td align="left" valign="top"><p>
        Why, when I edit an album or photo's text, do quotation marks appear
        as <tt class="literal">\'</tt> (e.g. <tt class="literal">John Doe\'s Album</tt>)?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -634,7 +634,7 @@
       </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
         As of Gallery 1.4.0, Gallery will strip the slashes from fields so that
         this does not happen, even if <tt class="literal">magic_quotes_gpc</tt> is on.
-       </p></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.25"></a><a name="id2520870"></a><b>C.25.</b></td><td align="left" valign="top"><p>
+       </p></div></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.25"></a><a name="id2520842"></a><b>C.25.</b></td><td align="left" valign="top"><p>
        I can't extract a <tt class="literal">.tar.gz</tt> file on my Windows machine.
        Why not?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -650,12 +650,12 @@
          </p></li><li><p>
           Unzip once more
          </p></li></ol></div><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.26"></a><a name="id2520958"></a><b>C.26.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.26"></a><a name="id2520930"></a><b>C.26.</b></td><td align="left" valign="top"><p>
        Why do I get an <tt class="literal">EOF / read error reading magic number</tt>
        error when uploading pictures with NetPBM?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Please see <a href="gallery1-install.faq.c.html#gallery1-install.faq.c.2">FAQ c.2</a>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.27"></a><a name="id2520994"></a><b>C.27.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.27"></a><a name="id2520967"></a><b>C.27.</b></td><td align="left" valign="top"><p>
        Why do I get errors like this: <tt class="literal">Warning: open_basedir restriction in effect. File is in wrong
        directory in /home/johndoe/public_html/gallery/platform/fs_unix.php on line 53</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -664,20 +664,20 @@
        Basically, your host has misconfigured this directive and not added the directory where Gallery
        is located to the directories where PHP can access and modify files.  You'll need to contact them
        and ask them to add the directory where your website files are located.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.28"></a><a name="id2521037"></a><b>C.28.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.28"></a><a name="id2521009"></a><b>C.28.</b></td><td align="left" valign="top"><p>
        Why do I get this error: <tt class="literal">Warning: write failed: No space left on device (28) in Unknown on line 0</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Your host setup a quota for the web server user.  Though <span class="emphasis"><em>your account</em></span> may still have
        space left, the quota for the web server user has been overrun.  Basically, you'll need to contact
        your host and ask them to cleanup the filesystem and/or adjust the quota.  If you are your host,
        adjust the quota using <span><b class="command">edquota</b></span>.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.29"></a><a name="id2521080"></a><b>C.29.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.29"></a><a name="id2521052"></a><b>C.29.</b></td><td align="left" valign="top"><p>
        Why do I get this error: <tt class="literal">Warning:  exec() has been disabled for security reasons</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Basically, this is a form of safe mode.  Gallery requires functions like <tt class="literal">exec()</tt> to
        perform operations on images.  The steps to "fix" this problem are the same as in
        <a href="gallery1-install.faq.c.html#gallery1-install.faq.c.5">FAQ C.5</a>.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.30"></a><a name="id2521123"></a><b>C.30.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.30"></a><a name="id2521096"></a><b>C.30.</b></td><td align="left" valign="top"><p>
        Why can't I upload images using ImageMagick on FreeBSD?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        The default install of ImageMagick on FreeBSD doesn't seem to compile with some
@@ -699,7 +699,7 @@
           Then uninstall ImageMagick via ports (<span><b class="command">make deinstall clean</b></span>)
           and reinstall it (<span><b class="command">make install clean</b></span>)
          </p></li></ol></div><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.31"></a><a name="id2521210"></a><b>C.31.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.31"></a><a name="id2521182"></a><b>C.31.</b></td><td align="left" valign="top"><p>
        How do I put my Gallery into debug mode?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        There are two ways, each pretty much equal in simplicity.
@@ -725,7 +725,7 @@
        </pre><p>
        And change "no" to "yes"  This will enable some extra debugging features and turn up PHP's
        error reporting level.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.32"></a><a name="id2521309"></a><b>C.32.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.32"></a><a name="id2521282"></a><b>C.32.</b></td><td align="left" valign="top"><p>
        I have uploaded the NetPBM or ImageMagick binaries to my site, but
        I don't know the absolute path to specify in the configuration
        wizard.  What do I do?
@@ -742,7 +742,7 @@
        </pre><p>
        View this file via the web (for example: http://www.example.com/gallery/
        netpbm/test.php).  It will tell you the absolute path to specify.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.33"></a><a name="id2521351"></a><b>C.33.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.33"></a><a name="id2521324"></a><b>C.33.</b></td><td align="left" valign="top"><p>
        When I try to enter an album, I get a 404 error.  What's up?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        One of two things in happening
@@ -762,7 +762,7 @@
 	  </pre><p>          
           Voila!  The URLs should work correctly now.
          </p></li></ul></div><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.34"></a><a name="id2521420"></a><b>C.34.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.34"></a><a name="id2521392"></a><b>C.34.</b></td><td align="left" valign="top"><p>
        I changed a value on Step 3 of the configuration wizard (or in
        <tt class="filename">config.php</tt>), but the change isn't taking effect.  What's going on?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -774,7 +774,7 @@
        Select "properties" from the &lt;&lt;admin options&gt;&gt; pulldown.
        Then, in the popup window you will be able to change the properties
        for that album.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.35"></a><a name="id2521465"></a><b>C.35.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.35"></a><a name="id2521437"></a><b>C.35.</b></td><td align="left" valign="top"><p>
        Can I host images on another server to conserve space?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        The straight answer is no.  Gallery must have the images on the local
@@ -789,7 +789,7 @@
        will attempt to use the images on the server with lots of bandwidth, so that
        the local server doesn't suffer so much.  More information is available in the
        <a href="gallery1-admin.mirroring.html" title="Mirroring Gallery">mirroring tutorial</a>.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.36"></a><a name="id2521519"></a><b>C.36.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.36"></a><a name="id2521491"></a><b>C.36.</b></td><td align="left" valign="top"><p>
        Why do I get errors with email on Windows?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        If you go to http://www.example.com/gallery/setup/check_mail.php and it gives you the following
@@ -824,7 +824,7 @@
          SMTP = smtp.server.com
          sendmail_from = youremail@server.com
         </pre><p>
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.37"></a><a name="id2521584"></a><b>C.37.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.37"></a><a name="id2521557"></a><b>C.37.</b></td><td align="left" valign="top"><p>
        I've forgotten my admin password!  How can I reset it?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        Version 1.4.3 or below: Resetting your admin password is easy; 
@@ -837,7 +837,7 @@
        and you will be required to edit the <span class="emphasis"><em>resetadmin</em></span> file,
        add the string, save, and refresh your browser.  This is a security measure to prove that you
        are an administrator.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.38"></a><a name="id2521680"></a><b>C.38.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.38"></a><a name="id2521652"></a><b>C.38.</b></td><td align="left" valign="top"><p>
        Why are my picture frames screwed up?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        If you have a file called gallery/css/embedded_style.css (ie
@@ -863,7 +863,7 @@
        If you didn't touch the CSS or frame files, this probably means that
        you didn't override the files upon upgrade.  Make sure that your FTP
        client overrides the old files and upgrades to the new ones.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.39"></a><a name="id2521737"></a><b>C.39.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.39"></a><a name="id2521709"></a><b>C.39.</b></td><td align="left" valign="top"><p>
        Why do I get this error: <tt class="literal">Fatal error: session_start(): Failed to
        initialize storage module: user...</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -876,7 +876,7 @@
        </pre><p>
        This should fix it if you host allows you to edit PHP directives in <tt class="filename">.htaccess</tt>.
        If not, you may need to contact them to get it changed globally.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.40"></a><a name="id2521790"></a><b>C.40.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.40"></a><a name="id2521763"></a><b>C.40.</b></td><td align="left" valign="top"><p>
        I need to remove my albums directory, but I can't since the webserver user
        owns the files.  What can I do?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -885,7 +885,7 @@
        here: <a href="http://gallery.menalto.com/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=viewdownload&amp;cid=6" target="_top">
        Gallery Utilities</a> ("Bharat's Cleanup Script").  Instructions are included
        in the top of the file.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.41"></a><a name="id2521825"></a><b>C.41.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.41"></a><a name="id2521798"></a><b>C.41.</b></td><td align="left" valign="top"><p>
        Why is my Gallery blue?!
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        As of Gallery 1.5, the CSS system has changed.  There is a <tt class="filename">base.css</tt>
@@ -894,7 +894,7 @@
        Finally, there is <tt class="filename">embedded.css</tt> which loads when your gallery is embedded
        in another program.  To change the color of your gallery, you can edit the appropriate CSS
        file or select a skin in the configuration wizard.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.42"></a><a name="id2521871"></a><b>C.42.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.c.42"></a><a name="id2521844"></a><b>C.42.</b></td><td align="left" valign="top"><p>
        When I open Gallery inside Mambo, i get "Gallery seems to be inside Mambo, but we couldn't get the necessary info."
        What am i or my visitors doing wrong?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
diff -Naur gallery-1.5.1/docs/g1package/gallery1-install.faq.d.html gallery-1.5.2/docs/g1package/gallery1-install.faq.d.html
--- gallery-1.5.1/docs/g1package/gallery1-install.faq.d.html	2005-09-22 15:13:45.000000000 +0200
+++ gallery-1.5.2/docs/g1package/gallery1-install.faq.d.html	2006-01-19 19:57:26.000000000 +0100
@@ -8,7 +8,7 @@
        (comment, images, etc..)?
       </a></dt><dt>D.4. <a href="gallery1-install.faq.d.html#gallery1-install.faq.d.4">
        Something went wrong, it's not working! What do I do?
-      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.1"></a><a name="id2521918"></a><b>D.1.</b></td><td align="left" valign="top"><p>
+      </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.1"></a><a name="id2521890"></a><b>D.1.</b></td><td align="left" valign="top"><p>
        How can I migrate my Gallery from one host to another?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>
         If you are moving between a Windows and non-Windows host, please
@@ -52,14 +52,14 @@
        the albums directory you just uploaded, not a blank directory, as you
        would on a clean install of Gallery. After you secure Gallery, all your
        data should show up intact!
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.2"></a><a name="id2522044"></a><b>D.2.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.2"></a><a name="id2522016"></a><b>D.2.</b></td><td align="left" valign="top"><p>
        Why do I get this error after migration: <tt class="literal">Warning: fopen
        ('.../albums/foo/album.dat.lock', 'a+')</tt>?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        This is caused by not recursively chmodding the new albums directory 0777.
        See FAQ <a href="gallery1-install.faq.c.html#gallery1-install.faq.c.15">C.15</a> for information
        on how to fix this.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.3"></a><a name="id2522082"></a><b>D.3.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.3"></a><a name="id2522054"></a><b>D.3.</b></td><td align="left" valign="top"><p>
        Will moving my Gallery to another host cause me to lose data
        (comment, images, etc..)?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
@@ -67,7 +67,7 @@
        </a>, there should be no lose of data whatsoever. However, because of Murphy's
        law, it's a good idea not to delete your albums directory on your old host before
        you know everything is working on the new host.
-      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.4"></a><a name="id2522116"></a><b>D.4.</b></td><td align="left" valign="top"><p>
+      </p></td></tr><tr class="question"><td align="left" valign="top"><a name="gallery1-install.faq.d.4"></a><a name="id2522089"></a><b>D.4.</b></td><td align="left" valign="top"><p>
        Something went wrong, it's not working! What do I do?
       </p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
        First, try again. Make sure you follow all the instructions in
diff -Naur gallery-1.5.1/docs/g1package/index.html gallery-1.5.2/docs/g1package/index.html
--- gallery-1.5.1/docs/g1package/index.html	2005-09-22 15:13:51.000000000 +0200
+++ gallery-1.5.2/docs/g1package/index.html	2006-01-19 19:57:27.000000000 +0100
@@ -1,6 +1,6 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Gallery Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.66.0"><link rel="start" href="index.html" title="Gallery Manual"><link rel="next" href="gallery1-install.html" title="Chapter 1. Gallery 1.x Installation Guide"><link rel="stylesheet" href="html.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Gallery Manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="gallery1-install.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="manual"></a>Authors</h1></div><div><div class="authorgroup"><div class="author"><span class="firstname">Bharat</span> <span class="surname">Mediratta</span></div><div class="author"><span class="firstname">Gaile</span> <span class="surname">Elliott</span></div><div class="author"><span class="firstname">Christian</span> <span class="surname">Mohn</span></div><div class="author"><span class="firstname">Andrew</span> <span class="surname">Lindeman</span></div><div class="author"><span class="firstname">Joan</span> <span class="surname">McGalliard</span></div><div class="author"><span class="firstname">Pierre-Luc</span> <span class="surname">Paour</span></div><div class="author"><span class="firstname">Beckett</span> <span class="surname">Madden-Woods</span></div><div class="author"><span class="firstname">Jens</span> <span class="surname">Tkotz</span></div><h4 class="editedby">Edited by</h4><span class="firstname">Michael</span> <span class="surname">Schultheiss</span></div></div><div><p class="copyright">Copyright © 2003-2005 Gallery Documentation Group</p></div><div><div class="legalnotice"><a name="id2464580"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Gallery Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.66.0"><link rel="start" href="index.html" title="Gallery Manual"><link rel="next" href="gallery1-install.html" title="Chapter 1. Gallery 1.x Installation Guide"><link rel="stylesheet" href="html.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Gallery Manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="gallery1-install.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="manual"></a>Authors</h1></div><div><div class="authorgroup"><div class="author"><span class="firstname">Bharat</span> <span class="surname">Mediratta</span></div><div class="author"><span class="firstname">Gaile</span> <span class="surname">Elliott</span></div><div class="author"><span class="firstname">Christian</span> <span class="surname">Mohn</span></div><div class="author"><span class="firstname">Andrew</span> <span class="surname">Lindeman</span></div><div class="author"><span class="firstname">Joan</span> <span class="surname">McGalliard</span></div><div class="author"><span class="firstname">Pierre-Luc</span> <span class="surname">Paour</span></div><div class="author"><span class="firstname">Beckett</span> <span class="surname">Madden-Woods</span></div><div class="author"><span class="firstname">Jens</span> <span class="surname">Tkotz</span></div><h4 class="editedby">Edited by</h4><span class="firstname">Michael</span> <span class="surname">Schultheiss</span></div></div><div><p class="copyright">Copyright © 2003-2005 Gallery Documentation Group</p></div><div><div class="legalnotice"><a name="id2464537"></a><p>
     This guide is distributed under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt" target="_top">
     GNU General Public License</a>.
    </p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="gallery1-install.html">1. Gallery 1.x Installation Guide</a></span></dt><dd><dl><dt><span class="sect1"><a href="gallery1-install.overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="gallery1-install.features.html">Features</a></span></dt><dt><span class="sect1"><a href="gallery1-install.credits.html">Credits</a></span></dt><dt><span class="sect1"><a href="gallery1-install.requirements.html">Installation Requirements</a></span></dt><dt><span class="sect1"><a href="gallery1-install.unix-ftp.html">Installing on a Unix/Linux Server with FTP</a></span></dt><dt><span class="sect1"><a href="gallery1-install.unix-shell.html">Installing on a Unix/Linux Server with Shell Access</a></span></dt><dt><span class="sect1"><a href="gallery1-install.windows.html">Installing on a Windows Server (Apache)</a></span></dt><dt><span class="sect1"><a href="gallery1-install.windows-iis.html">Installing on a Windows Server (IIS)</a></span></dt><dt><span class="sect1"><a href="gallery1-install.upgrade.html">Upgrading a Previous Gallery Installation</a></span></dt><dt><span class="sect1"><a href="gallery1-install.help.html">Getting Additional Help</a></span></dt><dt><span class="sect1"><a href="gallery1-install.required-programs.html">Installing Required Programs</a></span></dt><dt><span class="sect1"><a href="gallery1-install.remote-applets.html">Installing (or updating) Gallery Remote Applets</a></span></dt><dt><span class="sect1"><a href="gallery1-install.language-packs.html">Installing Language Packs</a></span></dt><dt><span class="sect1"><a href="gallery1-install.config-wizard.html">The Configuration Wizard</a></span></dt><dt><span class="sect1"><a href="gallery1-install.faq.html">Frequently Asked Questions</a></span></dt></dl></dd><dt><span class="chapter"><a href="gallery1-admin.html">2. Gallery 1.x Administration Guide</a></span></dt><dd><dl><dt><span class="sect1"><a href="gallery1-admin.basics.html">Basics</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.users.html">Users and Permissions</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.embedding.html">Embedding Gallery</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.securing.html">Securing Gallery</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.performance.html">Performance Tips</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.backup.html">Backup and Restore</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.offline.html">Creating an Offline Copy</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.patching.html">Patching your Gallery</a></span></dt><dt><span class="sect1"><a href="gallery1-admin.mirroring.html">Mirroring Gallery</a></span></dt></dl></dd><dt><span class="chapter"><a href="gallery1-user.html">3. Gallery 1.x User's Guide</a></span></dt><dd><dl><dt><span class="sect1"><a href="gallery1-user.import.html">Importing into gallery</a></span></dt><dt><span class="sect1"><a href="gallery1-user.watermark.html">Watermarking</a></span></dt></dl></dd></dl></div><p>
-  Documentation last generated on: Thu Sep 22 09:13:31 EDT 2005
+  Documentation last generated on: Thu Jan 19 13:57:19 EST 2006
  </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="gallery1-install.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Gallery 1.x Installation Guide</td></tr></table></div></body></html>
diff -Naur gallery-1.5.1/download.php gallery-1.5.2/download.php
--- gallery-1.5.1/download.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/download.php	2006-01-06 07:31:30.000000000 +0100
@@ -0,0 +1,87 @@
+<?php
+/*
+* Gallery - a web based photo album viewer and editor
+* Copyright (C) 2000-2006 Bharat Mediratta
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or (at
+* your option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+*
+* $Id: download.php,v 1.3.2.1 2006/01/06 06:31:30 jenst Exp $
+*/
+?>
+<?php
+
+require_once(dirname(__FILE__) . '/init.php');
+
+list($doit, $full) =
+getRequestVar(array('doit', 'full'));
+
+if (!empty($doit)) {
+    $albumItemNames = $gallery->album->getAlbumItemNames($gallery->user, $full, false, true);
+    $albumcopyName = createTempAlbum($albumItemNames);
+    $zipfileName = createZip($albumcopyName, $gallery->album->fields['name']);
+    downloadFile($zipfileName);
+} else {
+    list($numItems, $numAlbums, $numPhotos) = $gallery->album->numItems($gallery->user, true);
+
+    $albumSize = $gallery->album->getAlbumSize($gallery->user, $full, false, true);
+
+    doctype();
+    echo "\n<html>";
+?>
+<head>
+  <title><?php echo gTranslate('core', "Download album as archive") ?></title>
+  <?php common_header(); ?>
+</head>
+<body dir="<?php echo $gallery->direction ?>" class="popupbody">
+<div class="popuphead"><?php echo gTranslate('core', "Download album as archive") ?></div>
+<div class="popup" align="center">
+<p class="title">
+<?php
+    if ($gallery->album->numPhotos(1)) {
+	echo $gallery->album->getHighlightTag();
+	echo "<br>";
+    }
+    echo $gallery->album->fields["title"];
+    echo "</p>";
+
+    $textNumItems = sprintf(gTranslate('core', "This album contains just one item in total.", "This album contains %d items in total.", $numItems), $numItems);
+    $textNumSubAlbums = sprintf(gTranslate('core', "One subalbum", "%d subalbums", $numAlbums, _("No subalbums")), $numAlbums);
+    $textNumPhotos = sprintf(gTranslate('core', "one photo/movie", "%d photos/movies", $numPhotos , _("no photo/movie")), $numPhotos);
+
+    echo sprintf("%s ". gTranslate('core', "%s and %s."), $textNumItems, $textNumSubAlbums, $textNumPhotos);
+
+    if($numPhotos > 0) {
+        echo '<p>'. sprintf(gTranslate('core', "Approximitaly size of zipfile: %s"), formatted_filesize($albumSize)) .'</p>';
+
+        echo makeFormIntro('download.php', array('onChange' => 'document.g1_form.submit()'), array('gallery_popup' => 'true'));
+
+        echo "\n". '<input type="radio" name="full" value="1"'. ($full ? ' checked' : '') .'>'. gTranslate('core', "Full Version") .'<br>';
+        echo "\n". '<input type="radio" name="full" value="0"'. (!$full ? ' checked' : '') .'>'. gTranslate('core', "Resized Version") .'<br>';
+        echo "\n<br>";
+        echo "\n". '<input type="submit" name="doit" value="'. gTranslate('core', "Download") .'">';
+        echo "\n". '<input type="button" value="'. gTranslate('core', "Cancel") .'" onclick="parent.close()">';
+        echo "\n</form>";
+    }
+    else {
+	echo "<br><br>";
+	echo _("This album album is not empty, but contains no photo or movie! Download would'nt make sense.");
+	echo "<br><br>";
+        echo "\n". '<input type="button" value="'. gTranslate('core', "Close Window") .'" onclick="parent.close()">';
+    }
+}
+?>
+</div>
+</body>
+</html>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/ecard_form.php gallery-1.5.2/ecard_form.php
--- gallery-1.5.1/ecard_form.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/ecard_form.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file Copyright (C) 2003-2004 Joan McGalliard
  *
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: ecard_form.php,v 1.8.2.3 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: ecard_form.php,v 1.15.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -34,7 +34,9 @@
   require_once(dirname(__FILE__) . '/init.php');
 
   list($photoIndex, $ecard, $submit_action) = getRequestVar(array('photoIndex', 'ecard', 'submit_action'));
-  $photo = $gallery->album->getPhoto($photoIndex);
+
+  $ecard['photoIndex'] = empty($ecard['photoIndex']) ? $photoIndex : $ecard['photoIndex'];
+  $photo = $gallery->album->getPhoto($ecard['photoIndex']);
 
   /* Get the dimensions of the sized Photo */
   list($width, $height) = $photo->getDimensions(0, false);  
@@ -44,20 +46,23 @@
   $msgTextError2 = _("Some input fields are not correctly filled out. Please fill out.");
   $ecard_PLAIN_data = _("You have an e-card as attachment. Click to see.");
 
-  $error_msg = "";
-
+  $error_msg = '';
+  
   $ecard_send = false;
-
   if (! empty($submit_action)) {
-    if ( check_email($ecard["email_recepient"]) && check_email($ecard["email_sender"]) && ($ecard["email_recepient"] != "") && ($ecard["name_sender"] != "") )  {
+
+    if (check_email($ecard["email_recepient"]) && 
+      check_email($ecard["email_sender"]) && 
+      ! empty($ecard["email_recepient"]) && 
+      ! empty($ecard["name_sender"])) {
       if (strlen($ecard["message"]) > $max_length) {
-	$ecard["message"] = substr($ecard["message"],0,$max_length-1);
+          $ecard["message"] = substr($ecard["message"],0,$max_length-1);
       }
       list($error,$ecard_data_to_parse) = get_ecard_template($ecard["template_name"]);
       if ($error) {
-        $error_msg = $msgTextError1;
-       } else {
-           $ecard_HTML_data = parse_ecard_template($ecard,$ecard_data_to_parse);
+          $error_msg = $msgTextError1;
+      } else {
+	$ecard_HTML_data = parse_ecard_template($ecard,$ecard_data_to_parse, false);
            $result = send_ecard($ecard,$ecard_HTML_data,$ecard_PLAIN_data);
            if ($result) {
              $ecard_send = true;
@@ -70,7 +75,7 @@
       }
   } else {
 	if (!isset($ecard["image_name"])) {
-	    $ecard["image_name"] = $gallery->album->getPhotoPath($photoIndex, false);
+	    $ecard["image_name"] = $photo->getPhotoPath($gallery->album->fields['name'], false);
 	}
     }
 doctype();
@@ -173,12 +178,12 @@
 	}
 
     echo makeFormIntro("ecard_form.php",
-                array("name" => "ecard_form", "method" => "POST"),
-                array("type" => "popup"));
+        array("name" => "ecard_form"),
+        array("type" => "popup"));
 ?>
   <input name="ecard[image_name]" type="hidden" value="<?php echo $ecard["image_name"] ?>">
   <input name="ecard[template_name]" type="hidden" value="ecard_1.tpl">
-  <input name="photoIndex" type="hidden" value="<?php echo $photoIndex; ?>">
+  <input name="ecard[photoIndex]" type="hidden" value="<?php echo $photoIndex; ?>">
   <input name="submit_action" type="hidden" value="">
 
   <br>
@@ -213,11 +218,11 @@
   <tr>
     <td colspan="5" align="center">
   	  <select id="ecardstamp" name="ecard[stamp]">
-            <option selected value="<?php echo getImagePath('ecard_images/08.gif') ?>"><?php echo _("Choose a Stamp"); ?></option>
+            <option selected value="08"><?php echo _("Choose a Stamp"); ?></option>
 <?php
 for($i = 1; $i <= 27; $i++) {
     $nr = sprintf("%02d", $i-1);
-    echo "\n\t" . '<option value="'. getImagePath("ecard_images/$nr.gif") .'">';
+    echo "\n\t" . '<option value="'. $nr .'">';
     echo sprintf(_("Stamp #%d"), $i);
     echo "</option>";
 }
@@ -266,7 +271,7 @@
 <?php } else {
     echo sprintf(_("Your E-C@rd with the picture below has been sent to %s &lt;%s&gt;."), $ecard["name_recepient"], $ecard["email_recepient"]);
 ?>
-  <p align="center"><?php echo $gallery->album->getThumbnailTag($photoIndex); ?></p>
+  <p align="center"><?php echo $gallery->album->getThumbnailTag($ecard['photoIndex']); ?></p>
   <br>
   <a href="javascript:window.close()"><?php echo _("Close this window") ?></a>
 <?php }
diff -Naur gallery-1.5.1/ecard_preview.php gallery-1.5.2/ecard_preview.php
--- gallery-1.5.1/ecard_preview.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/ecard_preview.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,48 +1,46 @@
-<?php
-/*
- * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- *
- * This file Copyright (C) 2003-2004 Joan McGalliard
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
- *
- * $Id: ecard_preview.php,v 1.1.2.1 2005/09/12 22:40:44 dmolavi Exp $
- */
-?>
-<?php
-/*
-###################################################################
-# IBPS E-C@ard for Gallery           Version 1                    #
-# Copyright 2002 IBPS Friedrichs     info@ibps-friedrichs.de      #
-# Ported for Gallery By freenik      webmaster@cittadipolicoro.com#
-###################################################################
-*/
-?>
-<?php
-
-require_once(dirname(__FILE__) . '/init.php');
-
-$ecard = getRequestVar('ecard');
-
-list($error,$ecard_data_to_parse) = get_ecard_template($ecard["template_name"]);
-
-if (!empty($error)) {
-    header("Location: " . makeGalleryHeaderUrl("includes/ecard/_templates/error.htm"));
-} else {
-    echo parse_ecard_template($ecard,$ecard_data_to_parse);
-}
-
-?>
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: ecard_preview.php,v 1.3.2.1 2006/01/06 06:31:30 jenst Exp $
+ */
+?>
+<?php
+/*
+###################################################################
+# IBPS E-C@ard for Gallery           Version 1                    #
+# Copyright 2002 IBPS Friedrichs     info@ibps-friedrichs.de      #
+# Ported for Gallery By freenik      webmaster@cittadipolicoro.com#
+###################################################################
+*/
+?>
+<?php
+
+require_once(dirname(__FILE__) . '/init.php');
+
+$ecard = getRequestVar('ecard');
+
+list($error,$ecard_data_to_parse) = get_ecard_template($ecard["template_name"]);
+
+if (!empty($error)) {
+    header("Location: " . makeGalleryHeaderUrl("includes/ecard/_templates/error.htm"));
+} else {
+    echo parse_ecard_template($ecard,$ecard_data_to_parse, true);
+}
+
+?>
diff -Naur gallery-1.5.1/edit_appearance.php gallery-1.5.2/edit_appearance.php
--- gallery-1.5.1/edit_appearance.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/edit_appearance.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: edit_appearance.php,v 1.108.2.3 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: edit_appearance.php,v 1.116.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -46,9 +46,8 @@
      * 1.) get the values given by user, so we can put them into the album later.
      * 2.) Load the properties and check wether a user input is invalid.
      */
-
     include (dirname(__FILE__) . '/includes/definitions/albumProperties.php');
-    foreach ($gallery->album->fields as $fieldName => $values) {
+    foreach ($properties as $fieldName => $values) {
         ${$fieldName} = getRequestVar($fieldName);
         if (isset($properties[$fieldName]['vartype'])) {
             list($status, ${$fieldName}, $infoMessage) =
@@ -69,10 +68,11 @@
     $gallery->album->fields["border"] = $border;
     $gallery->album->fields["background"] = $background;
     $gallery->album->fields["thumb_size"] = $thumb_size;
+    $gallery->album->fields["thumb_ratio"] = $thumb_ratio;
     $gallery->album->fields["resize_size"] = $resize_size;
     $gallery->album->fields["resize_file_size"] = $resize_file_size;
-    $gallery->album->fields['max_size'] = $max_size;
-    $gallery->album->fields['max_file_size'] = $max_file_size;
+    $gallery->album->fields["max_size"] = $max_size;
+    $gallery->album->fields["max_file_size"] = $max_file_size;
     $gallery->album->fields["returnto"] = $returnto;
     $gallery->album->fields["rows"] = $rows;
     $gallery->album->fields["cols"] = $cols;
@@ -107,10 +107,10 @@
     /* Poll properties */
     for ($i = 0; $i < $gallery->album->getPollScale() ; $i++) {
         //convert values to numbers
-        $nv_pairs[$i]["value"]=0+$nv_pairs[$i]["value"];
+        $nv_pairs[$i]["value"] = 0+$nv_pairs[$i]["value"];
     }
-    $gallery->album->fields["poll_nv_pairs"]=$nv_pairs;
-    $gallery->album->fields["poll_hint"]=$poll_hint;
+    $gallery->album->fields["poll_nv_pairs"] = $nv_pairs;
+    $gallery->album->fields["poll_hint"] = $poll_hint;
     $gallery->album->fields["poll_type"] = $poll_type;
     if ($voter_class == "Logged in" &&
     $gallery->album->fields["voter_class"] == "Everybody" &&
@@ -137,7 +137,7 @@
         $extra_fields[$i] = str_replace('"', '&quot;', $extra_fields[$i]);
     }
 
-    $num_fields = $num_user_fields+num_special_fields($extra_fields);
+    $num_fields = $num_user_fields + num_special_fields($extra_fields);
 
     $gallery->album->setExtraFields($extra_fields);
 
@@ -234,17 +234,18 @@
 
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
 <?php if ($reloadOpener) reload(); ?>
-<div class="popuphead"><?php echo _("Album Properties") ?></div>
+<div class="popuphead"><?php echo gTranslate('core', "Album Properties") ?></div>
 <?php echo infoLine($infoMessages, 'error'); ?>
 <div class="popup" align="center">
 <?php 
 
 echo makeFormIntro("edit_appearance.php",
-    array("name" => "theform", "method" => "POST"),
+    array("name" => "theform"),
     array("type" => "popup"));
 
 $i = 0;
-makeSectionTabs($properties,5, $initialtab);
+
+makeSectionTabs($properties,5, $initialtab, true);
 
 foreach ($properties as $key => $val) {
     if(!empty($val['skip'])) {
diff -Naur gallery-1.5.1/edit_caption.php gallery-1.5.2/edit_caption.php
--- gallery-1.5.1/edit_caption.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/edit_caption.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: edit_caption.php,v 1.64.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: edit_caption.php,v 1.68.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -33,39 +33,39 @@
 	echo _("You are not allowed to perform this action!");
 	exit;
 }
-$err = "";
+$err = '';
 
 doctype();
-echo "\n<html>";	
+echo "\n<html>";
 if (isset($save)) {
-    // Only allow dates which mktime() will operate on.  
+    // Only allow dates which mktime() will operate on.
     // 1970-2037 (Windows and some UNIXes) -- 1970-2069 (Some UNIXes)
-    // Two digit values between 0-69 mapping to 2000-2069 and 70-99 to 1970-1999 
-    if ((($capture_year < 2070) && ($capture_year > 1969)) || ($capture_year < 100)) { 
-	$gallery->album->setCaption($index, $data);
-	$gallery->album->setKeywords($index, $keywords);
-	$dateArray["year"] = $capture_year;	
-	$dateArray["mon"] = $capture_mon;
-	$dateArray["mday"] = $capture_mday;
-	$dateArray["hours"] = $capture_hours;
-	$dateArray["minutes"] = $capture_minutes;
-	$dateArray["seconds"] = $capture_seconds;
-
-	$timestamp = mktime($capture_hours, $capture_minutes, $capture_seconds, $capture_mon, $capture_mday, $capture_year);
-	$gallery->album->setItemCaptureDate($index, $timestamp);
-	if (isset($extra_fields)) {
-	    foreach ($extra_fields as $field => $value){
-		$gallery->album->setExtraField($index, $field, trim($value));
-	    }
-	}
-	$gallery->album->save(array(i18n("Captions and/or custom fields modified for %s"), 
-	    makeAlbumURL($gallery->album->fields["name"], $gallery->album->getPhotoId($index))));
-	dismissAndReload();
-	if (!isDebugging()) {
-	    return;
-	}
+    // Two digit values between 0-69 mapping to 2000-2069 and 70-99 to 1970-1999
+    if ((($capture_year < 2070) && ($capture_year > 1969)) || ($capture_year < 100)) {
+        $gallery->album->setCaption($index, $data);
+        $gallery->album->setKeywords($index, $keywords);
+        $dateArray["year"] = $capture_year;
+        $dateArray["mon"] = $capture_mon;
+        $dateArray["mday"] = $capture_mday;
+        $dateArray["hours"] = $capture_hours;
+        $dateArray["minutes"] = $capture_minutes;
+        $dateArray["seconds"] = $capture_seconds;
+
+        $timestamp = mktime($capture_hours, $capture_minutes, $capture_seconds, $capture_mon, $capture_mday, $capture_year);
+        $gallery->album->setItemCaptureDate($index, $timestamp);
+        if (isset($extra_fields)) {
+            foreach ($extra_fields as $field => $value){
+                $gallery->album->setExtraField($index, $field, trim($value));
+            }
+        }
+        $gallery->album->save(array(i18n("Captions and/or custom fields modified for %s"),
+        makeAlbumURL($gallery->album->fields["name"], $gallery->album->getPhotoId($index))));
+        dismissAndReload();
+        if (!isDebugging()) {
+            return;
+        }
     } else {
-	$err = _("Year must be between 1969 and 2070");
+        $err = _("Year must be between 1969 and 2070");
     }
 }
 ?>
@@ -79,44 +79,43 @@
 	<?php echo $gallery->album->getThumbnailTag($index) ?>
 
 <?php echo makeFormIntro("edit_caption.php", 
-		array("name" => "theform", "method" => "POST"),
+		array("name" => "theform"),
 		array("type" => "popup"));
 ?>
 
-<input type=hidden name="index" value="<?php echo $index ?>">
+<input type="hidden" name="index" value="<?php echo $index ?>">
 <table>
 <tr>
-	<td valign="top"><b><?php echo _("Caption") ?>:</b></td>
+	<td style="vertical-align: top"><b><?php echo _("Caption") ?>:</b></td>
 	<td><textarea name="data" rows="4" cols="40"><?php echo $gallery->album->getCaption($index) ?></textarea></td>
 </tr>
 <?php
 
-$translateableFields=translateableFields();
+$translateableFields = translateableFields();
 
-foreach ($gallery->album->getExtraFields() as $field)
-{
+foreach ($gallery->album->getExtraFields() as $field) {
 	if (in_array($field, array_keys(automaticFieldsList()))) {
 		continue;
 	}
-        $value=$gallery->album->getExtraField($index, $field);
+    $value = $gallery->album->getExtraField($index, $field);
 
 	if (in_array($field, array_keys($translateableFields))) {
-		$fieldLabel=$translateableFields[$field];
-		$rows=1;
+		$fieldLabel = $translateableFields[$field];
+		$rows = 1;
 	} else {
-		$fieldLabel=$field;
-		$rows=3;
+		$fieldLabel = $field;
+		$rows = 3;
 	}
 
 	echo "\n<tr>";		
-	echo "\n\t". '<td valign="top"><b>'. $fieldLabel .':</b></td>';
+	echo "\n\t". '<td style="vertical-align: top; font-weight:bold">'. $fieldLabel .':</td>';
 	echo "\n\t". '<td><textarea name="extra_fields['. $field .']" rows="'. $rows .'" cols="40">'. $value .'</textarea></td>';
 	echo "\n</tr>";
 }
 ?>
 
 <tr>
-	<td valign=top><b><?php echo _("Keywords") ?>:</b></td>
+	<td valign=top><b><?php echo gTranslate('core', "Keywords") ?>:</b></td>
 	<td><textarea name="keywords" rows="1" cols="40"><?php echo $gallery->album->getKeywords($index) ?></textarea></td>
 </tr>
 </table>
@@ -140,7 +139,7 @@
 <br>
 <table border="0">
   <tr>
-	<td colspan="6" align="center"><?php echo _("Photo Capture Date") ?></td>
+	<td colspan="6" align="center"><?php echo gTranslate('core', "Photo Capture Date") ?></td>
   </tr>
   <tr>
     <td><?php echo _("Month") ?></td>
diff -Naur gallery-1.5.1/edit_field.php gallery-1.5.2/edit_field.php
--- gallery-1.5.1/edit_field.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/edit_field.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: edit_field.php,v 1.45.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: edit_field.php,v 1.49.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -28,7 +28,7 @@
 
 // Hack check
 if (!$gallery->user->canChangeTextOfAlbum($gallery->album)) {
-	echo _("You are not allowed to perform this action!");
+	echo gTranslate('core', "You are not allowed to perform this action!");
 	exit;
 }
 
@@ -36,8 +36,8 @@
 echo "\n<html>";
 
 if (isset($save)) {
-    if (!strcmp($field, 'title')) {
-	$data = removeTags($data);
+    if ($field == 'title') {
+        $data = strip_tags($data);
     }
     $gallery->album->fields[$field] = $data;
     $gallery->album->save(array(i18n("%s modified"), $field));
@@ -46,24 +46,25 @@
 }
 ?>
 <head>
-  <title><?php echo sprintf(_("Edit %s"), _($field)) ?></title>
+  <title><?php echo sprintf(gTranslate('core', "Edit %s"), gTranslate('common', $field)) ?></title>
   <?php common_header(); ?>
 </head>
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
-<div class="popuphead"><?php echo sprintf(_("Edit %s"), _($field)) ?></div>
+<div class="popuphead"><?php echo sprintf(gTranslate('core', "Edit %s"), gTranslate('common', $field)) ?></div>
 <div class="popup" align="center">
 <?php 
-	echo sprintf(_("Edit the %s and click %s when you're done"), _($field), '<b>' . _("Save") . '</b>');
+	echo sprintf(gTranslate('core', "Edit the %s and click %s when you're done"), gTranslate('common', $field), 
+	  '<b>' . gTranslate('core', "Save") . '</b>');
 
 	echo makeFormIntro("edit_field.php", 
-		array("name" => "theform", "method" => "POST"),
+		array("name" => "theform"),
 		array("type" => "popup")); 
 ?>
 	<input type="hidden" name="field" value="<?php echo $field ?>">
 	<textarea name="data" rows="8" cols="50"><?php echo $gallery->album->fields[$field] ?></textarea>
 	<p>
-		<input type="submit" name="save" value="<?php echo _("Save") ?>">
-		<input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
+		<input type="submit" name="save" value="<?php echo gTranslate('core', "Save") ?>">
+		<input type="button" name="cancel" value="<?php echo gTranslate('core', "Cancel") ?>" onclick='parent.close()'>
 	</p>
 	</form>
 
diff -Naur gallery-1.5.1/edit_thumb.php gallery-1.5.2/edit_thumb.php
--- gallery-1.5.1/edit_thumb.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/edit_thumb.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: edit_thumb.php,v 1.43.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: edit_thumb.php,v 1.44.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/edit_watermark.php gallery-1.5.2/edit_watermark.php
--- gallery-1.5.1/edit_watermark.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/edit_watermark.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,23 +1,23 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: edit_watermark.php,v 1.16.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: edit_watermark.php,v 1.20.2.2 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -33,15 +33,19 @@
  */
 require_once(dirname(__FILE__) . '/init.php');
 
+list($index, $save, $preview, $previewFull) = 
+	getRequestVar(array('index', 'save', 'preview', 'previewFull'));
+list($wmName, $wmAlign, $wmAlignX, $wmAlignY, $wmSelect) = 
+	getRequestVar(array('wmName', 'wmAlign', 'wmAlignX', 'wmAlignY', 'wmSelect'));
+
 // Hack check
-if (!$gallery->user->canChangeTextOfAlbum($gallery->album)) {
-    echo _("You are not allowed to perform this action!");
-    exit;
+if (! $gallery->user->canWriteToAlbum($gallery->album) &&
+  ! $gallery->album->getItemOwnerModify() &&
+  ! $gallery->album->isItemOwner($gallery->user->getUid(), $index)) {
+	echo _("You are not allowed to perform this action!");
+	exit;
 }
 
-list($index, $save, $preview, $previewFull) = getRequestVar(array('index', 'save', 'preview', 'previewFull'));
-list($wmName, $wmAlign, $wmAlignX, $wmAlignY) = getRequestVar(array('wmName', 'wmAlign', 'wmAlignX', 'wmAlignY'));
-list($wmSelect) = getRequestVar(array('wmSelect'));
 
 $photo = $gallery->album->getPhoto($index);
 $err = '';
@@ -52,21 +56,26 @@
             if (isset($save)) {
                 my_flush();
                 set_time_limit($gallery->app->timeLimit);
-		$gallery->album->watermarkPhoto($index, $wmName, "", $wmAlign,
-		    isset($wmAlignX) ? $wmAlignX : 0,
-		    isset($wmAlignY) ? $wmAlignY : 0,
-		    0, 0, // Not a preview
-		    isset($wmSelect) ? $wmSelect : 0);
+                $gallery->album->watermarkPhoto($index, $wmName, "", $wmAlign,
+                  isset($wmAlignX) ? $wmAlignX : 0,
+                  isset($wmAlignY) ? $wmAlignY : 0,
+                  0, 0, // Not a preview
+                  isset($wmSelect) ? $wmSelect : 0
+                );
                 dismissAndReload();
                 return;
             }
             else {
-                $gallery->album->watermarkPhoto($index, $wmName, "",
-		    $wmAlign,
-                    isset($wmAlignX) ? $wmAlignX : 0,
-                    isset($wmAlignY) ? $wmAlignY : 0,
-                    1, // set as preview
-                    isset($previewFull) ? $previewFull : 0);
+                $gallery->album->watermarkPhoto(
+                  $index,
+                  $wmName,
+                  '',
+                  $wmAlign,
+                  isset($wmAlignX) ? $wmAlignX : 0,
+                  isset($wmAlignY) ? $wmAlignY : 0,
+                  1, // set as preview
+                  isset($previewFull) ? $previewFull : 0
+                );
             }
         } else {
             $err = _("Please select a watermark.");
@@ -102,11 +111,12 @@
     echo '<p class="error">'. $err . '</p>';
 }
 
+
 if ($photo->image->type == 'gif') {
     echo infoLine(_("Your image is a gif. Watermarking on animated gifs is currently not supported and will 'deface & unanimate' your picture."), 'notice');
 }
 
-echo makeFormIntro("edit_watermark.php", array("name" => "theform", "method" => "POST"));
+echo makeFormIntro('edit_watermark.php', array('name' => 'theform'));
 global $watermarkForm;
 $watermarkForm["askRecursive"] = 0;
 $watermarkForm["askPreview"] = 1;
@@ -130,7 +140,7 @@
 </div>
 <?php 
 print gallery_validation_link("edit_watermark.php", false,
-    array('index' => $index, 'set_albumName' => $gallery->album->fields["name"]));
+  array('index' => $index, 'set_albumName' => $gallery->album->fields["name"]));
 ?>
 </body>
 </html>
diff -Naur gallery-1.5.1/extra_fields.php gallery-1.5.2/extra_fields.php
--- gallery-1.5.1/extra_fields.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/extra_fields.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file Copyright (C) 2003-2004 Joan McGalliard
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: extra_fields.php,v 1.32.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: extra_fields.php,v 1.34.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -82,7 +82,7 @@
 <div class="popup" align="center">
 <p>
 <?php echo makeFormIntro("extra_fields.php", 
-		array("name" => "theform", "method" => "POST"),
+		array("name" => "theform"),
 		array("type" => "popup")); 
 
 	$num_user_fields=sizeof($gallery->album->getExtraFields()) - num_special_fields($gallery->album->getExtraFields());
@@ -91,7 +91,7 @@
 <table>
 
 <?php
-$extra_fields=$gallery->album->getExtraFields();
+$extra_fields = $gallery->album->getExtraFields();
 
 // Translate the first "Title" in the line below only
 ?>
@@ -134,8 +134,7 @@
 <tr>
 	<td colspan="2">&nbsp;</td></tr>
 <?php
-$i=0;
-
+$i = 0;
 foreach ($extra_fields as $value) {
 	if (in_array($value, array_keys(automaticFieldsList())))
 		continue;
@@ -150,8 +149,7 @@
 }
 
 function num_special_fields($extra_fields) {
-
-	$num_special_fields=0;
+	$num_special_fields = 0;
 	foreach (array_keys(automaticFieldsList()) as $special_field) {
 		if (in_array($special_field, $extra_fields))
 			$num_special_fields++;
diff -Naur gallery-1.5.1/gallery_remote2.php gallery-1.5.2/gallery_remote2.php
--- gallery-1.5.1/gallery_remote2.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/gallery_remote2.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: gallery_remote2.php,v 1.75.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: gallery_remote2.php,v 1.77.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/gallery_remote.php gallery-1.5.2/gallery_remote.php
--- gallery-1.5.1/gallery_remote.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/gallery_remote.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: gallery_remote.php,v 1.26.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: gallery_remote.php,v 1.27.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/help/imagemap.php gallery-1.5.2/help/imagemap.php
--- gallery-1.5.1/help/imagemap.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/help/imagemap.php	2006-01-06 07:31:35.000000000 +0100
@@ -0,0 +1,92 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: imagemap.php,v 1.1.2.1 2006/01/06 06:31:35 jenst Exp $
+ */
+?><?php
+
+require_once(dirname(dirname(__FILE__)) . '/init.php');
+
+printPopupStart(_("ImageMap Help"),'', langLeft());
+?>
+  <style>
+        li { font-weight: bold; color: red;}
+  </style>
+
+    <div align="center" style="font-weight: bold">
+      <?php  echo _("This is a help for working with gallerys so called 'imagemaps'"); ?>
+    </div>   
+
+    <p align="left">
+	<?php echo _("An ImageMap is a predefined area of a picture, or a hotspot if you will."); ?>
+    <br><?php echo _("A sample usage scenario is a family photo, where you can apply an ImageMap for each of the family members featured in the photo."); ?>
+    <br><?php echo _("The defined area can contain information you want displayed when a user places his mouse pointer on top of that area."); ?>
+    <br><br><?php echo _("You can add basic text, or even define an URL that gets activated when a user clicks the area you have defined as an ImageMap."); ?>
+    </p>
+
+    <ul>
+      <li><?php echo _("How to create an ImageMap in Gallery?"); ?></li>
+
+      <p>
+        <?php echo _("It's as easy as it is fun. First, you need to create your ImageMap, this is done by clicking on the image, in the position where you want the first corner of the ImageMap to be."); ?>
+        <br><?php echo _("Click again on a new spot, and you'll see that Gallery creates a polygon shape based on the two spots you have created."); ?>
+        <br><?php echo _("Click again to create another spot. Add spots until your polygon shape surrounds the entire area you want to use as an ImageMap."); ?>
+      </p>
+
+      <p>
+        <?php echo _("When you are satisifed with your selection (e.g. a person or object), enter the describing text for your for your ImageMap in the 'Description' form on the left hand side."); ?>
+        <br><?php echo _("The text entered in the Description field, will be displayed when your users point their mousecursor over the ImageMap"); ?>
+      </p>
+
+      <p>
+        <?php echo _("Optionally you can enter a Link-Url for your ImageMap, which is activated when a user clicks your ImageMap selection."); ?>
+        <br><?php echo _("When you satisfied, click the 'Save ImageMap' button at the left side."); ?>
+      </p>
+    </ul>
+
+    <ul>
+      <li><?php echo _("How to update an ImageMap in Gallery?"); ?></li>
+
+      <p>
+        <?php echo _("Currently you can only modify the text and the url for an ImageMap. The polygon for the ImageMap is currently not changeable."); ?>
+        <br><?php echo _("If you do need to change the actual shape of the selection, you need to delete it and create a new selection in the shape you want."); ?>
+      </p>
+      <p>
+        <?php echo _("Select the ImageMap you want to edit in the box on the left hand side."); ?>
+        <br><?php echo _("The Image preview on the right hand side, will show which area is covered by the ImageMap currently selected."); ?>
+        <br><?php echo _("You can then modify your 'Description', or edit the 'Link-URL'."); ?>
+        <br><?php echo _("When finished, click the 'Update ImageMap' button. "); ?>
+      </p>
+    </ul>
+
+    <ul>
+      <li><?php echo _("How to delete an ImageMap in Gallery?"); ?></li>
+
+      <p>
+	<?php echo _("Just select the ImageMap(s) you want to delete in the box. Then click the 'Delete selectes ImageMap(s)' button."); ?>
+      </p>
+
+    </ul>
+
+    <div align="center">
+      <input type="button" value="<?php echo _("Close Window"); ?>" onclick="parent.close()">
+    </div>
+  </div>
+</body>
+</html>
diff -Naur gallery-1.5.1/help/metadataOnUpload.php gallery-1.5.2/help/metadataOnUpload.php
--- gallery-1.5.1/help/metadataOnUpload.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/help/metadataOnUpload.php	2006-01-06 07:31:35.000000000 +0100
@@ -0,0 +1,81 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: metadataOnUpload.php,v 1.2.2.1 2006/01/06 06:31:35 jenst Exp $
+ */
+?><?php
+
+require_once(dirname(dirname(__FILE__)) . '/init.php');
+
+printPopupStart(_("Metadata on Upload Help"),'', langLeft());
+?> 
+  <style>
+        li.top { font-weight: bold; color: red;}
+  </style>
+    <ul>
+      <li class="top"><?php echo _("What is meant with metadata in this context ?"); ?></li>
+
+      <p>
+        <?php echo _("Photos in Gallery have descriptive fields, like caption, title and other data fields. You can also define your own custom fields."); ?>
+        <br><?php echo _("This information is called Metadata."); ?>
+      </p>
+      
+      <p>
+        <?php echo _("Normally this info is added manually inside the Gallery for each photo."); ?>
+        <br><?php echo _("You can also do this automatically during your uploads."); ?>
+      </p>
+
+    </ul>
+
+    <ul>
+      <li class="top"><?php echo _("How can i add the metadata?"); ?></li>
+
+      <p>
+        <?php printf(_("Create a %s'csv-file (Comma Separated Values)'%s which contains the data you want associated with the files you are uploading."), '<a href="http://en.wikipedia.org/wiki/Comma-separated_values">', '</a>'); ?>
+        <br><?php echo _("Upload this file at the same time as you upload your files, you cannot upload it later and expect Gallery to import the metadata from it."); ?>
+      </p>
+    </ul>
+
+    <ul>
+      <li class="top"><?php echo _("In which format has the data to be?"); ?></li>
+
+      <p>
+	<?php echo _("The first row must be the fieldnames, there is one mandatory field, some predefined fields and you can use your own custom fields."); ?>
+	<?php echo _("Order does not matter, but you have to you a <b>;</b> (Semicolon) as separator."); ?>
+        <ul><li><?php printf(_("Mandatory: %s"), "'Filename'"); ?>
+            <li><?php printf(_("Predefined: %s, %s, %s"), "'Caption'", "'Title'", "'Description'"); ?>
+        </ul>
+
+        <br><?php echo _("Then follow the lines containing the info it self"); ?>
+	</ul>
+        
+	<b><?php echo _("Example:"); ?></b>
+        <div style="padding: 2px; border: 1px solid black">Filename;Caption;Title;Note
+	  <br>madonna.jpg;Madonna in Concert;Madonna Picture;Live in Concert in NYC
+          <br>myExGirlfriend.jpg;Joan;Joan;I miss her so
+          <br>car.jpg;Mercedes 200D/8;Mercedes Benz Diesel built in 1976;Some day i will own it
+        </div>
+      </p>
+
+    <div align="center">
+      <input type="button" value="<?php echo _("Back to upload"); ?>" onclick="history.back()">
+    </div>
+  </div>
+</body>
+</html>
diff -Naur gallery-1.5.1/html/errorRow.inc gallery-1.5.2/html/errorRow.inc
--- gallery-1.5.1/html/errorRow.inc	2003-06-27 04:14:13.000000000 +0200
+++ gallery-1.5.2/html/errorRow.inc	1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-<?php /* $Id: errorRow.inc,v 1.6 2003/06/27 02:14:13 beckettmw Exp $ */ ?>
-<tr>
- <td colspan=2>
-  <?php echo gallery_error($error) ?>
- </td>
-</tr>
diff -Naur gallery-1.5.1/html/userData.inc gallery-1.5.2/html/userData.inc
--- gallery-1.5.1/html/userData.inc	2005-07-20 14:46:27.000000000 +0200
+++ gallery-1.5.2/html/userData.inc	2005-12-23 20:26:50.000000000 +0100
@@ -1,4 +1,4 @@
-<?php /* $Id: userData.inc,v 1.23 2005/07/20 12:46:27 jenst Exp $ */ ?>
+<?php /* $Id: userData.inc,v 1.25 2005/12/23 19:26:50 jenst Exp $ */ ?>
 <?php 
  if (!isset($uname)) {  $uname=""; }
  if (!isset($old_password)) {  $old_password=""; }
@@ -10,7 +10,7 @@
  if (!isset($isAdmin)) { $isAdmin = 0; }
 
  $hidden = array();
- $yesNoChoices = array(1 => _("yes"), 0 => _("no"));
+ $yesNoChoices = array(1 => _("Yes"), 0 => _("No"));
 ?>
 <table>
 <?php if ($allowChange["member_file"] === true) { ?>
@@ -62,14 +62,14 @@
 if ($allowChange["fullname"] === true) { ?>
 <tr>
 	<td><?php echo _("Full Name") ?></td>
-	<td><input name="fullname" type="text" value="<?php echo $fullname ?>"></td>
+	<td><input name="fullname" type="text" size="25" value="<?php echo $fullname ?>"></td>
 </tr>
 <?php echo errorRow("fullname");
 }
 if ($allowChange["email"] === true) { ?>
 <tr>
 	<td><?php echo _("Email Address") ?></td>
-	<td><input name="email" type="text" value="<?php echo $email ?>"></td>
+	<td><input name="email" type="text" size="35" value="<?php echo $email ?>"></td>
 </tr>
 <?php echo errorRow("email");
 }
diff -Naur gallery-1.5.1/html_wrap/album.footer.default gallery-1.5.2/html_wrap/album.footer.default
--- gallery-1.5.1/html_wrap/album.footer.default	2005-04-25 12:47:46.000000000 +0200
+++ gallery-1.5.2/html_wrap/album.footer.default	2005-09-26 16:19:07.000000000 +0200
@@ -5,14 +5,14 @@
 // To override this footer, create a file called album.footer
 // in this directory.
 // 
-// $Id: album.footer.default,v 1.38 2005/04/25 10:47:46 jenst Exp $
+// $Id: album.footer.default,v 1.39 2005/09/26 14:19:07 jenst Exp $
 ?>
 <?php
 includeTemplate('album.footer.tpl');
 ?>
       <table width="100%" cellspacing="0" cellpadding="0" class="modfooter">
         <tr>
-          <td valign=top>
+          <td style="vertical-align: top">
             <!-- The Gallery code version number, linked to the Gallery home page -->
             <span class="fineprint">
 	    <?php print poweredBy() ?>
@@ -33,7 +33,7 @@
 
           <!-- donation block -->
 
-          <td width=300 align=right>
+          <td width="300" align="right">
             <span class="fineprint"> 
               Are you happy with Gallery?<br>
 	      Make us happy too!  Donate!<br>
diff -Naur gallery-1.5.1/html_wrap/album.header.default gallery-1.5.2/html_wrap/album.header.default
--- gallery-1.5.1/html_wrap/album.header.default	2005-08-16 00:56:27.000000000 +0200
+++ gallery-1.5.2/html_wrap/album.header.default	2005-08-16 01:01:22.000000000 +0200
@@ -12,7 +12,7 @@
 //      - Gallery Title: $gallery->app->galleryTitle    
 //      - Album Title: $gallery->album->fields["title"]    
 //      
-// $Id: album.header.default,v 1.18.2.1 2005/08/15 22:56:27 jenst Exp $
+// $Id: album.header.default,v 1.19 2005/08/15 23:01:22 jenst Exp $
 ?>
 <?php
 includeHtmlWrap("wrapper.header");
diff -Naur gallery-1.5.1/html_wrap/gallery.footer.default gallery-1.5.2/html_wrap/gallery.footer.default
--- gallery-1.5.1/html_wrap/gallery.footer.default	2005-04-25 12:47:46.000000000 +0200
+++ gallery-1.5.2/html_wrap/gallery.footer.default	2005-09-26 16:19:07.000000000 +0200
@@ -13,14 +13,14 @@
 //   a little. Use the following code snippet to display the current
 //   Gallery version linked to the Gallery home page.
 //
-// $Id: gallery.footer.default,v 1.42 2005/04/25 10:47:46 jenst Exp $
+// $Id: gallery.footer.default,v 1.43 2005/09/26 14:19:07 jenst Exp $
 ?>
 <?php
 includeTemplate('gallery.footer.tpl');
 ?>
       <table width="100%" cellspacing="0" cellpadding="0" class="modfooter">
         <tr>
-          <td valign=top>
+          <td style="vertical-align: top">
             <!-- The Gallery code version number, linked to the Gallery home page -->
             <span class="fineprint">
 	    <?php print poweredBy() ?>
@@ -39,7 +39,7 @@
 
           <!-- donation block -->
 
-          <td width=300 align=right>
+          <td width="300" align="right">
             <span class="fineprint"> 
               Are you happy with Gallery?<br>
 	      Make us happy too!  Donate!<br>
diff -Naur gallery-1.5.1/html_wrap/gallery.header.default gallery-1.5.2/html_wrap/gallery.header.default
--- gallery-1.5.1/html_wrap/gallery.header.default	2005-08-16 00:56:27.000000000 +0200
+++ gallery-1.5.2/html_wrap/gallery.header.default	2005-08-16 01:01:22.000000000 +0200
@@ -11,7 +11,7 @@
 // * Some application variables:
 //      - Gallery Title: $gallery->app->galleryTitle
 //
-// $Id: gallery.header.default,v 1.19.2.1 2005/08/15 22:56:27 jenst Exp $
+// $Id: gallery.header.default,v 1.20 2005/08/15 23:01:22 jenst Exp $
 ?>
 <?php
 includeHtmlWrap("wrapper.header");
diff -Naur gallery-1.5.1/html_wrap/general.footer.default gallery-1.5.2/html_wrap/general.footer.default
--- gallery-1.5.1/html_wrap/general.footer.default	2005-04-25 12:47:46.000000000 +0200
+++ gallery-1.5.2/html_wrap/general.footer.default	2005-09-26 16:19:07.000000000 +0200
@@ -13,7 +13,7 @@
 //   a little. Use the following code snippet to display the current
 //   Gallery version linked to the Gallery home page.
 //
-// $Id: general.footer.default,v 1.3 2005/04/25 10:47:46 jenst Exp $
+// $Id: general.footer.default,v 1.4 2005/09/26 14:19:07 jenst Exp $
 ?>
 <?php
 includeTemplate('general.footer.tpl');
@@ -22,7 +22,7 @@
 ?>
       <table width="100%" cellspacing="0" cellpadding="0" class="modfooter">
         <tr>
-          <td valign=top>
+          <td style="vertical-align: top">
             <!-- The Gallery code version number, linked to the Gallery home page -->
             <span class="fineprint">
 	    <?php print poweredBy() ?>
diff -Naur gallery-1.5.1/html_wrap/inline_imagewrap.inc gallery-1.5.2/html_wrap/inline_imagewrap.inc
--- gallery-1.5.1/html_wrap/inline_imagewrap.inc	2004-10-23 04:35:04.000000000 +0200
+++ gallery-1.5.2/html_wrap/inline_imagewrap.inc	2005-10-25 15:30:02.000000000 +0200
@@ -1,25 +1,23 @@
 <?php
-// $Id: inline_imagewrap.inc,v 1.34 2004/10/23 02:35:04 cryptographite Exp $
+// $Id: inline_imagewrap.inc,v 1.36 2005/10/25 13:30:02 jenst Exp $
+
 
 //-- shorten the variables for convinience ---
 $borderWidth = $gallery->html_wrap['borderWidth'];
 $borderColor = $gallery->html_wrap['borderColor'];
-$pixelImage = isset($gallery->html_wrap['pixelImage']) ?
-     $gallery->html_wrap['pixelImage'] :
-    dirname(dirname(__FILE__)) . '/images/pixel_trans.gif';
+$pixelImage = isset($gallery->html_wrap['pixelImage']) ? $gallery->html_wrap['pixelImage'] : getImagePath('pixel_trans.gif');
 $imageWidth = $gallery->html_wrap['imageWidth'];
 $imageHeight = $gallery->html_wrap['imageHeight'];
 $href = $gallery->html_wrap['imageHref'];
 $tag = $gallery->html_wrap['imageTag'];
 $frame = $gallery->html_wrap['frame'];
-$attr=isset($gallery->html_wrap['attr']) ? $gallery->html_wrap['attr'] : "";
+$attr = isset($gallery->html_wrap['attr']) ? $gallery->html_wrap['attr'] : '';
 
+$base = '';
 if (isset($gallery->html_wrap['base'])) {
-	$base = $gallery->html_wrap['base'];
-	if (!realpath($base)) {
-		print _("Security violation") ."\n";
-		exit;
-	}
+    $base = $gallery->html_wrap['base'];
+} else {
+    $base = getGalleryBaseUrl();
 }
 
 if (!empty($href) ) {
@@ -63,11 +61,7 @@
   <?php
   break;
 default: // use frames directory
-  if (isset($base)) {
-    $base = $base . "/html_wrap/frames/$frame";
-  } else {
-    $base = $gallery->app->photoAlbumURL . "/html_wrap/frames/$frame";
-  }
+  $base = $base . "/html_wrap/frames/$frame";
 
   include (dirname(__FILE__) . "/frames/$frame/frame.def");
   // Safari/Opera ignore height="100%" for table, but this ensures HTML
diff -Naur gallery-1.5.1/html_wrap/photo.footer.default gallery-1.5.2/html_wrap/photo.footer.default
--- gallery-1.5.1/html_wrap/photo.footer.default	2004-11-06 09:59:08.000000000 +0100
+++ gallery-1.5.2/html_wrap/photo.footer.default	2006-01-18 19:06:05.000000000 +0100
@@ -1,5 +1,5 @@
 <?php
-// $Id: photo.footer.default,v 1.28 2004/11/06 08:59:08 cryptographite Exp $
+// $Id: photo.footer.default,v 1.29.2.1 2006/01/18 18:06:05 jenst Exp $
 // This is the default photo footer (for the gallery photo
 // page: view_photo.php). It's companion is photo.header.default.
 //
@@ -13,7 +13,7 @@
 ?>
       <table width="100%" cellspacing="0" cellpadding="0" class="modfooter">
         <tr>
-          <td valign="top">
+          <td valign="top" align="<?php echo langLeft(); ?>">
             <!-- The Gallery code version number, linked to the Gallery home page -->
             <span class="fineprint">
 	    <?php print poweredBy() ?>
@@ -32,7 +32,7 @@
 
           <!-- donation block -->
 
-          <td width=300 align=right>
+          <td width="300" align="right">
             <span class="fineprint"> 
               Are you happy with Gallery?<br>
 	      Make us happy too!  Donate!<br>
diff -Naur gallery-1.5.1/html_wrap/photo.header.default gallery-1.5.2/html_wrap/photo.header.default
--- gallery-1.5.1/html_wrap/photo.header.default	2005-08-16 00:56:27.000000000 +0200
+++ gallery-1.5.2/html_wrap/photo.header.default	2005-08-16 01:01:22.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-// $Id: photo.header.default,v 1.15.2.1 2005/08/15 22:56:27 jenst Exp $
+// $Id: photo.header.default,v 1.16 2005/08/15 23:01:22 jenst Exp $
 // This is the default photo header (for the gallery photo
 // page: view_photo.php). It's companion is photo.footer.default.
 //
diff -Naur gallery-1.5.1/html_wrap/slideshow.header.default gallery-1.5.2/html_wrap/slideshow.header.default
--- gallery-1.5.1/html_wrap/slideshow.header.default	2005-08-16 00:56:27.000000000 +0200
+++ gallery-1.5.2/html_wrap/slideshow.header.default	2005-08-16 01:01:22.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-// $Id: slideshow.header.default,v 1.12.2.1 2005/08/15 22:56:27 jenst Exp $
+// $Id: slideshow.header.default,v 1.13 2005/08/15 23:01:22 jenst Exp $
 // This is the default slideshow header (for the gallery slideshow
 // page: slideshow.php). It's companion is slideshow.footer.default.
 //
diff -Naur gallery-1.5.1/html_wrap/stats.header.default gallery-1.5.2/html_wrap/stats.header.default
--- gallery-1.5.1/html_wrap/stats.header.default	2005-08-16 00:56:27.000000000 +0200
+++ gallery-1.5.2/html_wrap/stats.header.default	2005-09-25 21:20:37.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-// $Id: stats.header.default,v 1.3.2.1 2005/08/15 22:56:27 jenst Exp $
+// $Id: stats.header.default,v 1.5 2005/09/25 19:20:37 jenst Exp $
 // This is the default stats header (for the stats results page: stats.php).
 // It's companion is stats.footer.default. 
 //
@@ -12,6 +12,7 @@
 <?php
 	includeHtmlWrap("wrapper.header");
 	global $stats_title;
+	if (!includeTemplate("stats.header.tpl")) {
 ?>
 
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
@@ -40,3 +41,6 @@
   </tr>
   <tr>
     <td valign="top">
+<?php
+}
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/html_wrap/wrapper.footer.default gallery-1.5.2/html_wrap/wrapper.footer.default
--- gallery-1.5.1/html_wrap/wrapper.footer.default	2005-08-08 22:22:54.000000000 +0200
+++ gallery-1.5.2/html_wrap/wrapper.footer.default	2005-08-07 16:11:03.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-// $Id: wrapper.footer.default,v 1.15.2.1 2005/08/08 20:22:54 jenst Exp $
+// $Id: wrapper.footer.default,v 1.16 2005/08/07 14:11:03 jenst Exp $
 // This footer file detects whether Gallery is embedded in any 
 // known PHP applications and then decorates Gallery appropriately.
 
diff -Naur gallery-1.5.1/html_wrap/wrapper.header.default gallery-1.5.2/html_wrap/wrapper.header.default
--- gallery-1.5.1/html_wrap/wrapper.header.default	2005-08-19 02:08:52.000000000 +0200
+++ gallery-1.5.2/html_wrap/wrapper.header.default	2005-08-19 02:12:05.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-// $Id: wrapper.header.default,v 1.23.2.2 2005/08/19 00:08:52 jenst Exp $
+// $Id: wrapper.header.default,v 1.26 2005/08/19 00:12:05 jenst Exp $
 ?>
 <?php
 /**
diff -Naur gallery-1.5.1/imagemap.php gallery-1.5.2/imagemap.php
--- gallery-1.5.1/imagemap.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/imagemap.php	2006-01-06 07:31:30.000000000 +0100
@@ -0,0 +1,307 @@
+<?php
+/*
+* Gallery - a web based photo album viewer and editor
+* Copyright (C) 2000-2006 Bharat Mediratta
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or (at
+* your option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+*
+* $Id: imagemap.php,v 1.5.2.1 2006/01/06 06:31:30 jenst Exp $
+*/
+?>
+<?php
+/**
+ * @package Item
+ */
+
+require_once(dirname(__FILE__) . '/init.php');
+
+list($full, $index, $imageareas, $formaction) = getRequestVar(array('full', 'index', 'imageareas', 'formaction'));
+
+// Hack check and prevent errors
+if (! $gallery->user->canChangeTextOfAlbum($gallery->album)) {
+    header("Location: " . makeAlbumHeaderUrl());
+    return;
+}
+
+if ($index > $gallery->album->numPhotos(1)) {
+    $index = 1;
+}
+$id = $gallery->album->getPhotoId($index);
+
+// Determine if user has the rights to view full-sized images
+if (!empty($full) && !$gallery->user->canViewFullImages($gallery->album)) {
+    header("Location: " . makeAlbumHeaderUrl($gallery->session->albumName, $id));
+    return;
+} elseif (!$gallery->album->isResized($index) && !$gallery->user->canViewFullImages($gallery->album)) {
+    header("Location: " . makeAlbumHeaderUrl($gallery->session->albumName));
+    return;
+}
+
+if (!isset($full) || (isset($full) && !$gallery->album->isResized($index))) {
+    $full = NULL;
+}
+
+switch($formaction) {
+    case 'delete':
+        if(!empty($imageareas)) {
+            foreach($imageareas as $nr) {
+                $gallery->album->deleteImageArea($index, $nr);
+            }
+            $gallery->album->save();
+        }
+    break;
+    case 'create':
+        list($xvals, $yvals, $url, $text) = getRequestVar(array('xvals', 'yvals', 'areaurl', 'areatext'));
+        if (isset($xvals) && isset($yvals)) {
+            $xcoords = explode(',', $xvals);
+            $ycoords = explode(',', $yvals);
+    
+            if (!empty($xcoords)) {
+                $coords = $xcoords[0] .',' . $ycoords[0];
+                for ($i = 1 ; $i < sizeof($xcoords); $i++) {
+                    $coords .= ','. $xcoords[$i] .',' . $ycoords[$i];
+                }
+                $gallery->album->addImageArea($index, array(
+                    'coords'   => $coords,
+                    'x_coords' => $xvals,
+                    'y_coords' => $yvals,
+                    'url'      => $url,
+                    'hover_text' => $text)
+                );
+                $gallery->album->save();
+            }
+        }
+    break;
+    case 'update':
+        list($url, $text) = getRequestVar(array('areaurl', 'areatext'));
+        foreach($imageareas as $area_index) {
+            $gallery->album->updateImageArea($index, $area_index, array(
+                'url'      => $url,
+                'hover_text' => $text)
+            );
+        }
+        $gallery->album->save();
+    break;
+    default:
+    break;
+}
+
+$photo = $gallery->album->getPhoto($index);
+$image = $photo->image;
+
+$photoURL = $gallery->album->getAlbumDirURL("full") . "/" . $image->name . "." . $image->type;
+list($imageWidth, $imageHeight) = $image->getRawDimensions();
+
+if (!$GALLERY_EMBEDDED_INSIDE) {
+	doctype(); ?>
+<html> 
+<head>
+  <title><?php echo $gallery->app->galleryTitle; ?> :: ImageMaps :: </title>
+  <?php
+common_header();
+?>
+</head>
+<body dir="<?php echo $gallery->direction ?>">
+<?php
+} // End if ! embedded
+
+includeHtmlWrap("photo.header");
+
+?>
+  <script language="JavaScript" type="text/javascript" src="<?php echo $gallery->app->photoAlbumURL .'/js/wz_jsgraphics.js'; ?>"></script>
+  <script language="JavaScript" type="text/javascript" src="<?php echo $gallery->app->photoAlbumURL .'/js/imagemap.js'; ?>"></script>
+  <script type="text/javascript">
+      init_mousemove();
+ </script>
+ 
+<?php
+
+$rows = $gallery->album->fields["rows"];
+$cols = $gallery->album->fields["cols"];
+$perPage = $rows * $cols;
+$page = (int)(ceil($index / ($rows * $cols)));
+
+$iconElements = array();
+if (!$GALLERY_EMBEDDED_INSIDE && !$gallery->session->offline) {
+    if ($gallery->user->isLoggedIn()) {
+        $iconText = getIconText('exit.gif', _("logout"));
+        $iconElements[] = '<a href="'.
+          doCommand("logout", array(), "view_album.php", array("page" => $page)) .
+          '">'. $iconText .'</a>';
+    } else {
+        $iconText = getIconText('identity.gif', _("login"));
+        $iconElements[] = popup_link($iconText, "login.php", false);
+    }
+}
+
+$navigator["id"] = $id;
+$navigator["allIds"] = $gallery->album->getIds($gallery->user->canWriteToAlbum($gallery->album));
+$navigator["fullWidth"] = "100";
+$navigator["widthUnits"] = "%";
+$navigator["url"] = ".";
+
+#-- breadcrumb text ---
+$upArrowURL = gImage('nav_home.gif', _("navigate UP"));
+
+foreach ($gallery->album->getParentAlbums(true) as $navAlbum) {
+    $breadcrumb["text"][] = $navAlbum['prefixText'] .': '.
+      galleryLink($navAlbum['url'], $navAlbum['title'] .'&nbsp;'. $upArrowURL, array('class' => 'bread'));
+}
+
+$breadcrumb["text"][] = galleryLink(
+	makeAlbumUrl($gallery->session->albumName, $id),
+	  _("Original photo") .'&nbsp;'. $upArrowURL,
+	  array('class' => 'bread')
+	);
+
+$adminbox["commands"] = makeIconMenu($iconElements, 'right');
+
+includeLayout('navtablebegin.inc');
+includeLayout('adminbox.inc');
+includeLayout('navtablemiddle.inc');
+
+$breadcrumb["bordercolor"] = $gallery->album->fields["bordercolor"];
+includeLayout('breadcrumb.inc');
+includeLayout('navtableend.inc');
+
+echo "</td></tr>\n";
+echo "\n<!-- End Header Part -->";
+
+echo "\n<!-- Real Content -->";
+echo "\n<tr><td>\n\t";
+
+list($width, $height) = $photo->getDimensions($full);
+
+//print_r($photo);
+
+echo showImageMap($index);
+
+$allImageAreas = $gallery->album->getAllImageAreas($index);
+
+if (!empty($allImageAreas)) {
+    echo "\n". '<script type="text/javascript">';
+    echo "\n\tvar map = new Array();";
+    foreach($gallery->album->getAllImageAreas($index) as $nr => $area) {
+        echo "\n\t map[$nr] = new Array();";
+        echo "\n\t map[$nr]['x_coords'] = new Array(". $area['x_coords'] .');';
+        echo "\n\t map[$nr]['y_coords'] = new Array(". $area['y_coords'] .');';
+        echo "\n\t map[$nr]['url'] = '". $area['url'] ."';";
+        echo "\n\t map[$nr]['hover_text'] = '". $area['hover_text'] ."';";
+    }
+
+    echo "\n</script>";
+
+    $photoTag = $gallery->album->getPhotoTag($index, $full,"id=\"myPic\" usemap=\"myMap\"");
+}
+else {
+    $photoTag = $gallery->album->getPhotoTag($index, $full,"id=\"myPic\"");
+}
+?>
+
+<div class="popup" style="text-align: <?php echo langLeft(); ?>">
+<?php
+echo _("Here you can create, edit or delete imagemaps for the selected photo.");
+echo "\n<br>";
+echo _("Click the questionmark icon for helpful instructions.");
+echo popup_link('<img src="'. getImagePath('icons/help.gif') .'">', 'help/imagemap.php');
+?>
+</div>
+
+<?php 
+echo makeFormIntro('imagemap.php',
+    array('name' => 'areas'),
+    array('index' => $index, 'formaction' => '')
+    );
+?>
+<table width="100%" border="0">
+<tr>
+  <td width="300" style="vertical-align: top;">
+    <?php $type = (isDebugging()) ? 'text':'hidden'; ?>
+	<input type="<?php echo $type; ?>" name="ausg" id="current_position">
+	<input type="<?php echo $type; ?>" name="xvals">
+	<input type="<?php echo $type; ?>" name="yvals">
+	<br>
+	<input type="button" onClick="resetAndClear();" value="<?php echo _("Clear and reset canvas"); ?>">
+	<hr>
+	<?php echo gTranslate('core', "Optional link-url"); ?><br>
+	<input type="text" size="50" name="areaurl" id="areaurl"><br>
+	<?php echo gTranslate('core', "Description"); ?><br>
+	<textarea name="areatext" id="areatext" cols="40" rows="5"></textarea>
+	<input type="submit" value="<?php echo _("Save Imagemap") ?>" onclick="document.areas.formaction.value='create'">
+    <hr>
+<?php
+//print_r($photo);
+if (!empty($allImageAreas)) {
+    $selectSize = (sizeof($allImageAreas) > 10) ? 10:sizeof($allImageAreas);
+
+    echo _("Select entries to show image area in your photo.");
+    echo "<br><select id=\"imageareas\" name=\"imageareas[]\" size=\"$selectSize\" multiple onChange=\"updatePictureAndArea()\">";
+    foreach($gallery->album->getAllImageAreas($index) as $nr => $coords) {
+        echo "\n<option value=\"$nr\">Map $nr</option>";
+    }
+    echo "\n</select>";
+
+    echo "\n<hr>";
+    echo "<input type=\"submit\" value=\"". _("Delete selected ImageMap(s)") ."\" onclick=\"document.areas.formaction.value='delete'\">";
+
+    echo "\n<hr>";
+    echo "<input type=\"submit\" value=\"". _("Update selected ImageMap(s)") ."\" onclick=\"document.areas.formaction.value='update'\">";
+
+    echo '<div class="attention">'. gTranslate('core', "Be aware, that the text of ALL selected entries will be updated!") .'</div>';
+}
+else {
+    echo _("No ImageMaps");
+}
+?>
+  </td>
+  <td>
+    <div id="myCanvas" style="border: 1px dashed red; width:<?php echo $image->width; ?>px; height:<?php echo $image->height; ?>px">
+      <?php echo $photoTag; ?>
+    </div>
+  </td>
+</tr>
+</table>
+</form>
+
+  </td>
+</tr>
+<!-- End Real Content -->
+<!-- Start Footer Part -->
+<tr>
+  <td>
+<?php 
+
+includeLayout('navtablebegin.inc');
+includeLayout('breadcrumb.inc');
+includeLayout('navtableend.inc');
+echo languageSelector();
+
+includeHtmlWrap("photo.footer");
+
+if (!empty($allImageAreas)) {
+    echo '<script language="JavaScript" type="text/javascript" src="'. $gallery->app->photoAlbumURL .'/js/wz_tooltip.js"></script>';
+}
+?>    
+    <script type="text/javascript">
+    <!--
+      initPaintArea ();
+    //-->
+    </script>
+<?php
+if (!$GALLERY_EMBEDDED_INSIDE) { ?>
+</body>
+</html>
+<?php }
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/collapse.gif gallery-1.5.2/images/collapse.gif
--- gallery-1.5.1/images/collapse.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/collapse.gif	2005-10-20 15:37:00.000000000 +0200
@@ -0,0 +1,2 @@
+GIF89a  æ{ ~£æ<ÿûûûŽ­èf–î>t×F†üm ÿÌÚòH‡üP~ÓI€æèëñ4rä³ÂÞäëù|›ÔÎàÿJ€ä²Ún•ÜeŽÛ÷ùüž³Û±Æìùúþ°ÅëðððÁÒòÎßÿ÷÷÷^ˆÕÜßæ¹Èäìðö…¤Ü;€ÿ¬çõøýÖÛãäëø>uÙ;pÕ¬æ[ˆÜÜæö¡ºé5räe—òZŠãìñû«á6vëáéø—³äFvÑËÒÞÎÙíKyÐçíùQÙtéäêõyŸå’¯æÔàô<qÕd”ìJâ»Íïl”àòõúÄÔñ¸ÌîËÙó=‚ÿ4qãúüþÎÛôÒáþ¡¼îQÚ’¯ç8sàz¡êÍÚôW‰äçí÷ìñú±ìQƒàBuÒ¹ÌîJyÑHˆüŽ­ån™èÎÛó…¤ß4rås¤þÐáÿùúý£¼êAtÒGxÑîóûŒ¬åØäúÚæúD|åŽ±ò¹Ìð¨Âõ²ÊöŒ°ôô÷üÈØò »ì7vë@ƒÿªÁìÿÿÿÿÿÿ            !ù  { ,       Ú€{‚‚Nƒ‹{&R)cZ,bWŒ2Qq(yMypV[9ƒ&<CA5yzzy-?h"‚_HU«¬ztyJ1#fYI¹Xu¬jy6BaS.¹;gE\¬$L!Dk«@zPszØ4n`=T0lºów/ùO¬¬Kx8°P —2þôÓC&
+{fHÃê‹mXI€°aÏF8Ø@’$‡]NäCA…b(QA‹DŒHó…7 œÀÉH ƒ&8 ±a¥ @ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/expand.gif gallery-1.5.2/images/expand.gif
--- gallery-1.5.1/images/expand.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/expand.gif	2005-10-20 15:37:00.000000000 +0200
@@ -0,0 +1,5 @@
+GIF89a  æz m ÿf–îûûû~£æáéø<ÿÎàÿ>t×H‡ü÷÷÷’¯æèëñP~Ó£¼êÍÚôOŠöòõû|›Ô¬çI€æ¹Èäž³Û²Ú±ÆìJ€äl”àn•ÜeŽÛ4räîóûõøýÌÚò;€ÿÜßæÖÛã÷ùüððð…¤Ü°ÅëŽ­è^ˆÕ³ÂÞìðöìñú@ƒÿ¨Âõ>uÙäëøQƒàZŠãçíù«á’¯çÎÙíGxÑÇÖò[ˆÜ—³äŽ±ò;pÕ¡ºéHˆü7vëŽ­å4råâêøÒâþ<qÕäêõFvÑäëùBuÒAtÒD|åÐàÿQÚŠ¯ô4qãKyÐI‡ø±ìÎÛôæíùn™è5rä »ìÚæúW‰äÈ×ôJyÑ¹Ìð­æŒ¬åô÷üF‡üëðúd”ì«Âî„§çÝæ÷›¸îËÒÞìñûùúþòõú«ÁêàéùÎÛóF†üw¦ü…¤ßéïúÐàþùúýQÙ6vëJâs¤ýçí÷8sà¸Ìîÿÿÿÿÿÿ               !ù  z ,       â€z‚‚gQ&#ƒ‹z4.@08nvŒfK-/_ZWG5ƒr`Rx«xbH*‚?cyyxx]·1%qPx+·x®·79Ckw<2·o·iO Mt\[
+
+F·yL s&ISdyAy  y>Tlu·p
+Ô»¥„‡# èÑæ–{y„xA°#„žÐA."Ðƒ†A†ªÜRƒ2Ca°AÂ‰0XNHØà¤L‚E*JØ@¡AŠ"Düd$`…
+R„ SP  ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/favicon.ico gallery-1.5.2/images/favicon.ico
--- gallery-1.5.1/images/favicon.ico	2004-09-11 04:01:53.000000000 +0200
+++ gallery-1.5.2/images/favicon.ico	2005-10-03 23:50:12.000000000 +0200
@@ -1 +1,2 @@
-        h     (                @                      ÿÿÿ ûÿÿ ©Ñÿ xáÿ ñòò m¤È }œ£ ¾Öá ~Œœ ¤¿Æ Œ§ }‰— Œ¯Ä ÿÿý ðòñ ççå ËÔÌ ÚàÚ ÿþû ÿþý ýû÷ ýùô úõì ùôë ôèÖ òéÚ íÜÃ äÚÉ ûöî öêÚ ìÖ¹ ÷íá ïÝÃ õëÝ ðàÉ ßÛÎ ßÝØ Úº‘ åÐ² úôê íÛÀ òâÍ ûïâ ÚÐ¼ ×¹› ÖÁ¤ ÖÇ­ ÖÅ¬ ßÄ  êÓ² æÈ¢ þüû öìÜ ÛºŒ Ó·‘ Ñµ ÌÁ® Ì«€ Ê³“ ×· Ô´‰ Ùº’ îÞÇ Ñ°‡ ýúö åÍ® År Ë¥t Ï¬ƒ Ã¿³ º_ È¢s çÓ¶ èÐ° ×¸ ðåÙ íÙ¼ ¹‹] þüù çÌ¥ Ï¦s Ð­ Ç t ³‚R ²S ½‘f Í¨~ Ñ¨u Ö¶Ž À™n Ë¤z Ô²Š óëâ òèÛ È£z À–k »e ±‰^ µ…X °…[ ·‰] È¢w Ë§} ¿“d Å˜g ¾“i º` ìÛÂ ñãÏ Ëª„ ¶ˆ] ¯|J Çk ­wD «„^ °U ªS «zM ´’n ±S ©vF »–p ÊŸn ãÃ‚ Ê© Á“` §uH §tF Â¨‡ µ†Y §{T ôæÖ ¦qC ¨vI À”f Õµ ÛÀ ËÂ³ °‚U ¦pC ªvI Ä¦ƒ ¡k< ¥o= ¥n> ¡wP ­|N É§ Ò°Š ¬X že2 ½` ±U šg; ²ƒW Ò¨t ÞÛÒ Äšm ša4 žf7 À { d3 Ãœr Ó»› Ø¹“ ¸‰Z ¯T Å¡x Ò½Ÿ äÈŸ Ó»™ ÕÄ¨ ºŽb Û‘  ÝÚÔ                                                                                                                                                                                                                                                                                                                                      %               0SS            Nd;7S          ¨¢G£UCS        ¤rš¡UŸ ¦S      9b€s”‘…Œp:    Š–ƒŽ­†vvvyž   ©zw}xt™‹§‚›“˜   gnfceok{œiq~‡   lRYWVa`X\-[•ˆ    IHEKSZQJM&^      Bhj<@Dª>‰        1T_62]?        ¥G)  *        ='   !#A          „3P|ûÿ  øÿ  ð  à?  À  €        €  À  à  ð  ø  ü1  þ`  ÿ`  
\ Pas de fin de ligne à la fin du fichier.
+         h     (                                                                                                                 ãáß_íìëqòòó                                                ïïð.èßÙîêáÛÿâàßÇèææ‚ñññ
+                                    ÷÷÷:êãÞìã¼ÿÙ°ÿôä×ÿë×ÇÿéãÞÙçææc                            ùùùéãàìæÅªÿÎ[ÿÈ—rÿôä×ÿÍ\ÿâ¹™ÿêÛÏÿçäã¸éèè'                ñññåßÜÖèÉ°ÿÕ™kÿË‘fÿôä×ÿÚ¦~ÿÏ’cÿÏ‘bÿÕ›oÿæÄ¨ÿêßÖüèæå¨ïïð        êäàÄêÏ¸ÿÛ¦}ÿ×Ÿsÿ×³–ÿôä×ÿÔ›nÿÖŸtÿÖŸtÿÕrÿÔšnÿà²ÿéÎ¹ÿéáÜççæåféééõåÙÁæÀ ÿÝ©ÿÓ¥€ÿôä×ÿÞ®‡ÿÚ¦~ÿÛ¨ÿÛ¨ÿÛ¨ÿÛ¨ÿÚ¥{ÿÚ¤yÿå»šÿìÙÊÿæßÚ¼ñÞÑóáÔ¥éÆªÿäÄªÿôä×ÿÞ­…ÿà±‹ÿà²Œÿà²Œÿà²Œÿà²Œÿà²Œÿà²ŒÿÞ®†ÿã¸”ÿöå×à        øìä°íÏ¶ÿôä×ÿôä×ÿçÀžÿåº•ÿæ¼˜ÿæ¼˜ÿæ¼˜ÿæ¼˜ÿæ¼˜ÿåº•ÿìÎ³ÿ÷ìä[            òàÓƒîÒ¹ÿèÃ¡ÿôä×ÿôä×ÿéÄ¡ÿèÀœÿèÂŸÿèÂ ÿèÁžÿêÅ¥ÿõæÛÊ                    õæÜzðØÁÿä¹”ÿä¼œÿôä×ÿìÍ²ÿçÀœÿèÁžÿçÁÿðØÃ÷úòí>                        ùïè|ïÕ¿þÝ©ÿÝ¬‡ÿôä×ñôä×ÿèÃ¡ÿêÈ©ÿ÷êá³                                ðÛÎSñÚÇÿñÜËÖôäÚôãÙóáÔ²ôâÔòøîé                                    õçÝhûôðI            ôåÛ+                                                                            ÿÿ˜ ÿÿ  ðÿ  à  À  €         €   À  à  ø  ü  þg  ÿÿ  ÿÿ  
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/green_trafficlight.gif gallery-1.5.2/images/green_trafficlight.gif
--- gallery-1.5.1/images/green_trafficlight.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/green_trafficlight.gif	2005-10-20 15:37:00.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a   ÷  USSk‰–5CKzŠ” Ì   Ž¢È69J u $)ty}‚ž¼€œ­rŽ¦s|NKJ±ÂÌxxx”ªÔ 5  ‹ l‰§inrYVUm„‘|™º g  £ p þ 1m0Š£ÄQ`h¶¾Ñƒ¡Äl³ºÊnŽ ‰Ÿ¬ î ºÂÔu’¥ \ Vlz/<A’ZYY Ú ky}˜¦!),
+	£³Î ³ jw~mŒ› Â DWa.35c_]Õàægii , l~ˆq¢iqv3G= â puw 5,-,*grvm‡(39 ¿  ƒ  Õ $#"rqpisy²±¯,9?tuv¸-)%½¾ÁoŠ™m‹›;74>NU20/‡š¦ ú ).1J_ky~€l}‡C@> Ç SepDEEZ^v,&$#F “ 7[<3222/.'    ëïñŒ§µ8FNáçëõ÷øçíðš³À_x†Ì×Þÿÿÿûûük‡–¼ÌÕn‰˜¯ÄÑbaa	ÿ	Xo|MSlºÈÐ·ÿ·UÿU © Š—©ÑÜâ–ÿ–o‹š9>QZr‰ ¬’ª¸gjl+ÿ+´ÃÍÉÕÛ€ÿ€÷øù õ ýýþ*!;s…x•¨š­Í}—³x•§qsvw–»lŠ—’ªÏv„„ ÊŠª¼¥°Á$!¤¹Æ©±À®¸Ñe“TRNhff³ºÃn†”>PUŸ¬³J^p\XR\ì\Ž­Þ‰¨Ë­·ÊAQ[OOOVhq‡“ª‚©r«v‚ˆ!`wˆz…%&'noo3AGu†k{„{…‹lr¸nƒ‘±¶½‘°Ñopq{šÃEGH€ƒŠ“žB<8Š¥ÏŽ©ÓZr‚\ø\ž·ÖpŽ«r’¦¤µÐ«·Ó![›®Ôtvxwˆ’^~Ž`y…28:<<<ku{¼¾É`im "o’¤¨Ê—¬Ï Ï qonÓ´ÄÌ}™	€ ¶‹ ¿ >  N    ÿÿÿ!ù  ÿ ,        ÿ ÿ	H° Áƒ*\È°¡Á;1äH”ãÎÀL…½y³¨P¦7n¬(Ð'*4¨àdBà&AHÎ<à5†Š M%%¸0@IÿÉÑ@ˆMä<úéÍX(qPð&Ò¿?ö\XÀB	Ë{h €C48ø'CÝ1Ä¤Ø§EÛ;0Áå þ
+œèÓ§CüýÛ P Rd{µíŸ?"zÈºAÊ€f6xyÑÚfþÍpdÄâØ«ìoŠY¤@}Š…Êß (x9Š€É Õƒ;u…:*–pè1BÂlùüM‚6á“úéX›ôÏD ?âE™¦Í]K=T´xÂ¥Ô,*zð¬ÀW€6ø¬€Ç?e•Â®lC’~o„J9¼!à?tÔáÏ…þÔAA{ q!{T!†nèÐ‰(¦(P@ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/behavior-capplet.gif gallery-1.5.2/images/icons/behavior-capplet.gif
--- gallery-1.5.1/images/icons/behavior-capplet.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/behavior-capplet.gif	2005-11-21 22:06:24.000000000 +0100
@@ -0,0 +1,2 @@
+GIF89a  æM ›››ÿÁ5ýÖYÿ×[Õ”zóÅ‰Ý™ê5çÇ“Ú·œÿ´ÿÉÿ»——˜ñÀë¾$ÑŸKŠWDÙŒm†cYù¨OÜ„VüŸ+Äž|ÿ™»wMì¶}ìÔÌÍÍÎ° þÚ9þÍâŽd•³éÿÄ'™†‚ÿÕJå±”­˜¬lEúˆæn(ÿ¶ ÿ»Jæˆ6Î¯{úÎ\÷ìãßÖÌÞÜÚÿ­Á¼¼à·Dÿßÿ­$ÿÔ…™}tÿà_É–‚••—ÑÈÈùÊ;ýÖG™™šúwùÌjÿ¡òàÛúÑü×+Œ·ÿMsì©Ïÿ§§§÷÷÷ÞÞÞYYYÿÿÿ                                                                                                                                                      !ù  M ,       ˜€M‚I…†…L‚M9J‘‰‚6*0K›K‡ˆM@B-H¥HI’J‰)!F±Iœ›‰(
+D#G¼I¦¥”2=/I±É” "E1¼Ó”M,4& ¨’Õ+$>AJ³´Õ8.KLïðÕ;'75 ø ÕŠ?<:	¼)RÔ€ÃŒ	ÎdŽV­…MâI¬ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/compressed.png gallery-1.5.2/images/icons/compressed.png
--- gallery-1.5.1/images/icons/compressed.png	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/compressed.png	2005-10-17 19:46:12.000000000 +0200
@@ -0,0 +1,8 @@
+‰PNG
+
+   IHDR         (-S   PLTE        
+³M6€/v:/  OV`mƒ˜Xž~°Óq­Ò‹ÌìS”ª 4=Í-	ÿ¥„ÿ³žÿÀ±Z+        + .`s’Ýà &Ó¿Ë8.­- Š ·F$œ( ¡3 k X7WI>ôÿÿ 
+¨ÑÉ  ÇÿÐÊÿ¾¹ÿÒÆÿãÃÿÂ‡ÿÁjÿ³RÿÐvô¤]  óôæ ¨½¸¡%ÿàÚÿåâÿàÑÿùÏÿãšú¶GÿÄEÿ½Hê¿c
+ òÿú ´ÃÊ
+  ¤3#ÿ×ÈÿîäÿñÚöè·îÚ„ûËOÿÆ;öÀBíÏo  àùö ·¾Û § ÿàÁÿéÐÿïÌìÉæ¾fÿÁEÿ¸3ýºEá·e îýÿ  3²³ì ©, ÿÜ°þº•ôÅ™ôÎûÍuÿ¼EÿÑRÿÐc©}4 Üîÿ @´Áö '‡6 ÿñ½ÿá³îÒ ÜÀôÐzÿÆ[ñ¯?¿…"Ð¯hÌîí &¡Òá 	y@$        =      UW“ÈÂG1 DR[\nxi~‰¥»“¸Óˆ²ÈŠ¯·  # 2 2 3 ) % 
+&r“² 	;B &Fo… #-No )GdŒ.R` "Vo +Cv‘ &,K`                                                                                                                                                                                                                         ™Ó   tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ S÷%   bKGDÿ¥òÅ   	pHYs   H   H FÉk>   iIDAT(ÏcüÏ ŒðÈúÏÁÈø*Àø–Q˜ÜcáG`@8ÌÀÂ‡"àÃ@H~Ú° ÄÐµ!ŒŒÁ*ÁNŸS• `XäügbŒb€	€ÀrÆ„ÀJ¨ž ¨4ÌZ "Àµ0Ã1y    IEND®B`‚
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/help.gif gallery-1.5.2/images/icons/help.gif
--- gallery-1.5.1/images/icons/help.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/help.gif	2005-12-12 00:38:11.000000000 +0100
@@ -0,0 +1,5 @@
+GIF89a  ÷ÿ Ž¯ÔáéñÛâì4]•}ŸÈFkŸBiŸ¾ËÝNt§µÅÛ%OŠDk ¦¸Ñ2Y‘[{§ˆªÐ†¨Ï8`˜†§Îƒ¤Ë€£ÊLr¥Pq ¡É‡ž¾5[’MoŸHo£}–»s—Áw‘¶=a—b†µ5\”(P‹Nq¢Kr¥U{¬àæî]‚²ÏØåèíó*RŒW}®ÉÉÉ@gx›Åçìòìðõîò÷w™Ãk¼æëòéîôóóóÜÜÜ ²Ì©ºÒ£´Îíñöp“¿÷ùûöööõöù:b™g‹¹úûü’³×jŽ»-Vd‰·3[”³ÁÖçìó+S‚™¼Pv¨>b—æëñ_ƒ³´Â×ÈÓã˜­ÉQw©lˆ°Rxª\{©°¿ÕàààÁÎßc‡¶,TŽ¡³Í²ÂØPt¤Yy¦w…›k¸b­€›À)QŒßåîéïöcˆ¶Ÿ»Ú”¨ÅbªÙàë/W‘¸¸¸8`—¯¿Õr³kŽ»7^•a†´ž²Ìéîõ¥¥¥òòòÈÖç;cšýþþéíó£º×´ÄÙTz¬<dšÂÑãˆ©Ð1Y‘#L‡^ƒ²X|¬\z¨\{¨„›½ðó÷yœÅ|šÂFf–¦ºÔ¤µÎÀÀÀƒ¢ÇÁÑäÆÑàË×çîîî›»Ý‰ªÐQf„Z€°ÉÔäâèï¿ÅÌÎÙèX}®w–¾äää1WhŒ¹²ÅÛŸ¼Ü°»ËºÈÛZ°™±Ï˜µÖx“·çíõêïõs~ãèð­¼Óûûûfˆ³\{§²²²±²¶èèèb…³IkKmž€˜»ÓÜçŸ¶ÓÓÞë»»»SjŒ1WPr£Rr£p‹²tŽ´´´´ëëë7]”6^–a…´ÔÔÔóõø|Å?d˜åêñ¯ÀÖàåî¤»×Œ¢Á¶ÆÛ¤ÃéïõÀÌÝ·ÇÜ{—½ž¹ØÛÛÛ’©Ç} Èœ°Ìùúü‚œ¿r•Ààæï¸ÇÛºÇÚ7V‚6W‡‘²Ö§Å^|§¢É–­ËµÄÙÇÇÇZ¯ÎÎÎk»àèòÁÐâ#M‰~Äa€«LmŸƒš¼É×ç¨ºÒ*S&M…dˆ¶¨¹Ð©¼Ô©¹Ñ^ƒ³ÿÿÿÿÿÿ!ù  ÿ ,       ÿ ÿ	H° Áƒÿà,ƒ§D…ˆyôD¤b$&L@Á`a‹Äàpâ(Õˆ_rìáÒ@ÍÁ·ÊðÁæˆ±@€Hg˜‡‚K™ RDLºV=’	È¶À@·o
+’Ñ¡¯Hˆþ²jÝGbC)³ÀLÎ€<öÀYƒÕ(+?S
+Áø2°	4G€ Á¤„©0YZW"Z¹%á…óà¦Å&…Näã”P-'ÐÐ PÉ‹ (qÂÈ¤¬îdðˆcÄ2U¤ðâ¸
+&-¢PO àÂ[»EI|	Tp€ƒ
+%ú	õZ 	ç\ðÐ•Å@[iˆ^qŒˆŒs– Ž @‡wRâr@£‚N fìRefT¥!.(‹a}à½7Í °ÂDL“C  xtaAAÅ¼0F	O„RGV¨XÏÔVA±’Dµœ1CŠhsÁõ¬bBÂÓGÕœ$|DC!|ô(òlÅ;dB‡9Œø(½Œ3>â\ÂŠ’T ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/nav_first.gif gallery-1.5.2/images/icons/nav_first.gif
--- gallery-1.5.1/images/icons/nav_first.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/nav_first.gif	2005-12-09 00:32:42.000000000 +0100
@@ -0,0 +1,3 @@
+GIF89a  æ  ëíéùùùö÷õ¡£œïðîòóñLMIˆ‹„ãæáðñîóôòüüüýýýXYU÷øöìíêêìéjkgööõÇÉÄýýüz|wëìêëëêŠŒ†ÈÊÅíïëàáÞŽŒëìéZ[X®¯«”–øùøÁÃ¿‚~ÔÖÒÜàÙprmøø÷ôõô¼¿¸æèãlmkîðídfa•—ˆŠ„KLI|}yéêèôôò|~yîïìÜÜÜ‰Œ†³³²çéæhieª«ªïñîVWTôõóÎÐÍõöô„…‚—˜•°²« £›ûûûce`µ¸°íïìWXU°±®¬¯§›˜×ÙÖïðí”—ÏÏÎŸ¡›ÉËÅ×ØÖdeaûûúíîì­°¨ÙÙÙFGDÿÿÿÿÿÿ                                                                                                            !ù  [ ,       y€W‚[„…[G‚ZW†[)RKZ†C9UZD.O„Q$N%Z [2*3/4?V  <7&	1"5	
+>(
+-'T[#S!EF„:BI@…JH,0YYŒ+YòíŒ;=Y ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/nav_last.gif gallery-1.5.2/images/icons/nav_last.gif
--- gallery-1.5.1/images/icons/nav_last.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/nav_last.gif	2005-12-09 00:32:42.000000000 +0100
@@ -0,0 +1,3 @@
+GIF89a  æ  ëíéùùùö÷õ¡£œïðîòóñLMIˆ‹„ãæáðñîóôòüüüýýýXYU÷øöìíêêìéjkgööõÇÉÄýýüz|wëìêëëêŠŒ†ÈÊÅíïëàáÞŽŒëìéZ[X®¯«”–øùøÁÃ¿‚~ÔÖÒÜàÙprmøø÷ôõô¼¿¸æèãlmkîðídfa•—ˆŠ„KLI|}yéêèôôò|~yîïìÜÜÜ‰Œ†³³²çéæhieª«ªïñîVWTôõóÎÐÍõöô„…‚—˜•°²« £›ûûûce`µ¸°íïìWXU°±®¬¯§›˜×ÙÖïðí”—ÏÏÎŸ¡›ÉËÅ×ØÖdeaûûúíîì­°¨ÙÙÙFGDÿÿÿÿÿÿ                                                                                                            !ù  [ ,       z€WG[„…[WˆKR)†‡ZWDZU9C†Z Z%N$Q„O./3*2[7<  V?4
+(>
+	5"1	&FE!S#[T'-IB:„0,HJ…@Y+ŽYYY=;Ž[òY ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/nav_next.gif gallery-1.5.2/images/icons/nav_next.gif
--- gallery-1.5.1/images/icons/nav_next.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/nav_next.gif	2005-12-09 00:32:42.000000000 +0100
@@ -0,0 +1,3 @@
+GIF89a  æ  óôòýýýÖÖÖ÷øöïñîíîììíêëíéøøøö÷õãæáôõóôõôˆ‰‡×××××ÖîðíæèãJKHúúùVWTüüûª«¨ÅÇÃÿÿÿïðîìíëûûúþþþÏÑÌêìé««ªòóðÕÕÕFGDUVSòòòçèæüüüKLIíïìêêéèèèûûûðñîøùøyzwtvq¾À¼äæãÍÏË™›•¬­ª‰Šˆ’•¨©§ÜàÚåæãÕÖÕŽ‹kkiƒ„éêè[]YPQNhie¾À»fhd˜›•wxt¿Á¼ÑÑÑÍÍÍÒÓÑ˜™•PQM²µ®ÞßÜ¤§Ÿ¿Â¼ÉÊÇwyu¤¦ [\Xèéç¹»¸\]ZkliŠÜàÙÐÒÏ¬¬«ÎÎÍÉÊÆ¬¯§ghe€‚}stp£¥¡ÑÒÐõöõ¢¥Ÿ»½¹‚„~£¥ åæåªª©ÎÏÌööö‘ŒÞàÜ³¶¯[\Z²´¯³µ¯’”tur¥¨ Ž‹ùùùÓÔÒŠŠˆtvsƒ}­°¨ÔÔÔÿÿÿ!ù   ,       ©€_L„…}p†ŠNBrŠvOsŠ„D9f0…3˜1RFŠY826„wZ§lt†| 
+
+%inh´¶¸cJ„/^=ÄÆÈPaA   ,VuÕ×Ùgb7S&+-	I{Q?æè	yE.„K	U;q„@÷	>¨\ùPèFè)xÆˆŠ$\Â#â0X*ýA "Žk4þ	 ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/nav_prev.gif gallery-1.5.2/images/icons/nav_prev.gif
--- gallery-1.5.1/images/icons/nav_prev.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/nav_prev.gif	2005-12-09 00:32:42.000000000 +0100
@@ -0,0 +1,4 @@
+GIF89a  æ  óôòýýýÖÖÖ÷øöïñîíîììíêëíéøøøö÷õãæáôõóôõôˆ‰‡×××××ÖîðíæèãJKHúúùVWTüüûª«¨ÅÇÃÿÿÿïðîìíëûûúþþþÏÑÌêìé««ªòóðÕÕÕFGDUVSòòòçèæüüüKLIíïìêêéèèèûûûðñîøùøyzwtvq¾À¼äæãÍÏË™›•¬­ª‰Šˆ’•¨©§ÜàÚåæãÕÖÕŽ‹kkiƒ„éêè[]YPQNhie¾À»fhd˜›•wxt¿Á¼ÑÑÑÍÍÍÒÓÑ˜™•PQM²µ®ÞßÜ¤§Ÿ¿Â¼ÉÊÇwyu¤¦ [\Xèéç¹»¸\]ZkliŠÜàÙÐÒÏ¬¬«ÎÎÍÉÊÆ¬¯§ghe€‚}stp£¥¡ÑÒÐõöõ¢¥Ÿ»½¹‚„~£¥ åæåªª©ÎÏÌööö‘ŒÞàÜ³¶¯[\Z²´¯³µ¯’”tur¥¨ Ž‹ùùùÓÔÒŠŠˆtvsƒ}­°¨ÔÔÔÿÿÿ!ù   ,       ©€‚ƒƒp}„ƒL_ˆ‚sOvˆrBNˆFR13ƒ0f9›D„tlZw‚62§8Y‚Jc%
+
+ hni¶¸º|aP=^ÆÈÊ/7bg,   uV×ÙÛ A‚.Ey	-+&?Q{Iéë&SƒWT>	@‚q;ªì°Q4P@81HÏ
+2Âæ‚D<†Xd$hŒ>| ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/tree/joinbottom-left.gif gallery-1.5.2/images/icons/tree/joinbottom-left.gif
--- gallery-1.5.1/images/icons/tree/joinbottom-left.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/tree/joinbottom-left.gif	2005-12-18 18:22:11.000000000 +0100
@@ -0,0 +1 @@
+GIF89a  €    ÿÿÿ!ù   ,       ŒÉíœ4ÉŠáÍÜvº„Ê¸}æ‰¦êÊR ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/tree/joinbottom-right.gif gallery-1.5.2/images/icons/tree/joinbottom-right.gif
--- gallery-1.5.1/images/icons/tree/joinbottom-right.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/tree/joinbottom-right.gif	2005-12-18 18:22:11.000000000 +0100
@@ -0,0 +1 @@
+GIF89a  €    ÿÿÿ!ù   ,       Œo€Ëí¯žœ.ÒK-ÞMóŸÊ(–à‰¦êÊ¶N ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/tree/join-left.gif gallery-1.5.2/images/icons/tree/join-left.gif
--- gallery-1.5.1/images/icons/tree/join-left.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/tree/join-left.gif	2005-12-18 18:22:11.000000000 +0100
@@ -0,0 +1 @@
+GIF89a  €    ÿÿÿ!ù   ,       ŒÉíœ4ÉŠáÍÜvº„Ê¸}]ifhZ­ìä¦ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/tree/join-right.gif gallery-1.5.2/images/icons/tree/join-right.gif
--- gallery-1.5.1/images/icons/tree/join-right.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/tree/join-right.gif	2005-12-18 18:22:11.000000000 +0100
@@ -0,0 +1 @@
+GIF89a  €    ÿÿÿ!ù   ,        Œo€Ëí¯žœ.ÒK-ÞMóŸÊ(– ä[ª^l;½pP  ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/icons/unsortedList.gif gallery-1.5.2/images/icons/unsortedList.gif
--- gallery-1.5.1/images/icons/unsortedList.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/icons/unsortedList.gif	2005-10-17 19:46:12.000000000 +0200
@@ -0,0 +1 @@
+GIF89a  ¢  ÿÿ  ÿ   ÿÿÿ         !ù   ,       $HºÜÂI"X#ë¼À`(:Ð¨T±m]j¾pi¢ØÊ)¬›	 ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/nav_dot_left.gif gallery-1.5.2/images/nav_dot_left.gif
--- gallery-1.5.1/images/nav_dot_left.gif	2001-01-02 08:13:14.000000000 +0100
+++ gallery-1.5.2/images/nav_dot_left.gif	2005-12-09 00:32:41.000000000 +0100
@@ -1 +1,4 @@
-GIF89a  ‘  ÿÿÿ   ÿÿÿ   !ù   ,       T„i§œxJNh/ÊXGZAQ# ;
\ Pas de fin de ligne à la fin du fichier.
+GIF89a
+  æ  ÂÄ¾çççûûûíîë³µ®ÒÕÐRSP}~{çèæ¤¦ òóñàãÞìîêƒ„‚ŒŽ‰––•ÁÄÀ_`]vxsèêçããâìíêzzw­¯ª›œ˜ÍÏËÊËÊÜßÚòóðÔÔÔ”—åçãª«¨ghdàáÞÂÂÂçèåSTQùúùPQN´·°úúù¢¥ŸáãÞ³¶®…‡ƒóóóÛÜÙÐÑÍáäß±²±×ÚÓööõ|}z“•‘áãßvwuùùùQROÑÓÏ|~yâäáúûúXYVÒÓÑûûúèéçáâá¢¤Ÿôôóº¼¶óôòëìéîïìÿÿÿ                                                                                                                                                               !ù  J ,    
+   U€ Jƒ„„,F‚…ƒ&7(	Š*A
+)„3GDƒ-I1+0 IIH<!$4>9@5ƒ?="2„6:Š'%Šƒ8Ð„ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/nav_dot_right.gif gallery-1.5.2/images/nav_dot_right.gif
--- gallery-1.5.1/images/nav_dot_right.gif	2001-01-02 08:13:14.000000000 +0100
+++ gallery-1.5.2/images/nav_dot_right.gif	2005-12-09 00:32:41.000000000 +0100
@@ -1 +1,4 @@
-GIF89a  ‘  ÿÿÿ   ÿÿÿ   !ù   ,       ”‡©lÜC 2iiÖ0N%" ;
\ Pas de fin de ligne à la fin du fichier.
+GIF89a
+  æ  ÂÄ¾çççûûûíîë³µ®ÒÕÐRSP}~{çèæ¤¦ òóñàãÞìîêƒ„‚ŒŽ‰––•ÁÄÀ_`]vxsèêçããâìíêzzw­¯ª›œ˜ÍÏËÊËÊÜßÚòóðÔÔÔ”—åçãª«¨ghdàáÞÂÂÂçèåSTQùúùPQN´·°úúù¢¥ŸáãÞ³¶®…‡ƒóóóÛÜÙÐÑÍáäß±²±×ÚÓööõ|}z“•‘áãßvwuùùùQROÑÓÏ|~yâäáúûúXYVÒÓÑûûúèéçáâá¢¤Ÿôôóº¼¶óôòëìéîïìÿÿÿ                                                                                                                                                               !ù  J ,    
+   T€J‚ƒƒ „…F,‡	(7&„	)
+A*‚DG3 0+1I-<HII‚5@9>4$!ƒ2"=?‡:6‡‚%'Ìƒ8 ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/nav_first.gif gallery-1.5.2/images/nav_first.gif
--- gallery-1.5.1/images/nav_first.gif	2001-01-06 07:08:18.000000000 +0100
+++ gallery-1.5.2/images/nav_first.gif	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-GIF89a  ‘  ÿÿÿ   ÿÿÿ   !ù   ,       *”o¡ˆÁß€{Â i¶z¼q‘'€¡˜„æ‰b¤I¶,‹n‡ŽWÍ)|	)  ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/nav_last.gif gallery-1.5.2/images/nav_last.gif
--- gallery-1.5.1/images/nav_last.gif	2001-01-06 07:08:18.000000000 +0100
+++ gallery-1.5.2/images/nav_last.gif	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-GIF89a  ‘  ÿÿÿ   ÿÿÿ   !ù   ,       -”§½¯Ü AHm¬¾iòF6.T©¡)ù‰îËÄªùÎ¤˜J7?ž| ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/nav_next.gif gallery-1.5.2/images/nav_next.gif
--- gallery-1.5.1/images/nav_next.gif	2001-01-06 07:08:18.000000000 +0100
+++ gallery-1.5.2/images/nav_next.gif	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-GIF89aH  ‘  ÿÿÿ   ÿÿÿ   !ù   ,    H   @”©+ÁÎ¢œt˜nÝ¼Ÿ `_è•¦’H*žî–ªFÜ¾öär,ß~¦Ñ~D`¯‘«} Zs	m(5Ñ¥²Q  ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/nav_prev.gif gallery-1.5.2/images/nav_prev.gif
--- gallery-1.5.1/images/nav_prev.gif	2001-01-06 07:08:18.000000000 +0100
+++ gallery-1.5.2/images/nav_prev.gif	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-GIF89aH  ‘  ÿÿÿ   ÿÿÿ   !ù   ,    H   >”©›ÁÎ¢œTØpÝœ _Ø•æñ ž®™¶"+¿öË9y÷+«‰ñ|DA*t,*W¤Ñò)â] ÐáðU  ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/red_trafficlight.gif gallery-1.5.2/images/red_trafficlight.gif
--- gallery-1.5.1/images/red_trafficlight.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/red_trafficlight.gif	2005-10-20 15:37:00.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a   ÷  Ž¢È§  ty}‚ž¼rŽ¦s|±ÂÌ$)NKJÔxxx”ªÔl‰§inrYWVm„‘|™ºpœ&½Ã  Š£ÄQ`h¶¾Ñƒ¡Äl³ºÊnŸ/<Am10‰¡­Ë  ºÂÔ}˜¦u’¥l‰—  Umz’h  ZYYky!),4  £³Î+*+jw~mŒ›
+	‹  v  DWa.357BJþ  c_]0++giiY  l~ˆq¢iqvî  puwC;;grvm‡(39%%$rqpisyÚ  ).1²±¯´  ,9?tuv-)%=;=â  ½¾ÁoŠ™m‹›;74>NU20.	ƒ  ‡š¦j‰•J_ky~€l}‡-  C@>USQSepLlvDEE,&$VUUXTRú  X:<  322“  >  Œ§µ8FNëïñáçëõ÷ø_x†ÿÿÿûûük‡–¼ÌÕš³ÀÌ×Þn‰˜ºÈÐÿ		baaÿ––  ÑÜâZro‹šgjlÿ€€s…¯ÄÑçíð÷øù,CJÿ··Xo|õ  5;èíðÕàæ’ª¸³ÄÍÉÕÛÿUUÿ++Õßåýýþ0HQƒ©ˆŸ«x‰”ø\\qonnoo$ {šÃ}—³o’¤ "¥°ÁZr‚3CMG©±À±¶½hff³ºÃŽ©ÓŠª¼`y…lu{\XRŸ¬³¸‹ ¿‡“ª}™Vhq@alOOOu‡TRNwˆe“{…‹J^p&'(AQ[€œ­z…3@F?al^~Ž¼¾Ék{„ì\\n†”nƒ‘ž·ÖEGH€ƒŠ“žqsv‰¨ËŠ¥Ïr«Ž­Þx•§š­Í28:‘°Ñw–»u†\ >PU¤·Ëx•¨®¸Ñ›®Ôl‹˜tvx«·Óju|lr`im­·ÊpŽ«¨Ê’ªÏ—¬Ïr’¦€ ¶‡žªopqw‚‰v„3AH‚©2DOa ´ÄÌQQU„ Ê{Š’   ÿÿÿ!ù  ÿ ,        ÿ ÿ	H° Áƒ*\È°¡Á9"°HÄ"bÎÀEŽòIÌçhÑ@ˆlB²©(ð4	t‰AðA`¦DÌ¤s Q¦’vì@±RK<ZR8˜RhÊ-xþÂr„ŸB`ô~üÈx„‚¡	p@ðŠ½}+þ­€
+‚ƒ/#jUI[ ˆF@”ˆ‚¢€? t,ƒA€ ÿ°¥á££‡„®xaûç¯Ä;vnÜ˜!ÃŸ?'–‘u­Õ+Ä1RøÐ ƒ€9dÇ&—	 &É½QJ”ñ' °R¦ÁCý€ñ;~RÆÁšü§Äj¶ÎÈòG¶*á¦-i÷›žœˆQáán‰¨S¥âý›„ˆÅ,?dì@4‰Ž	,^¬•†Å5‚¾`C’}X” ƒnô÷ŸpxærTÇžQAJè……(âˆ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/yellow_red_trafficlight.gif gallery-1.5.2/images/yellow_red_trafficlight.gif
--- gallery-1.5.1/images/yellow_red_trafficlight.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/yellow_red_trafficlight.gif	2005-10-20 15:37:00.000000000 +0200
@@ -0,0 +1 @@
+GIF89a   ÷     €   € €€   €€ € €€€€€ÀÜÀ¦Êð™  Ä &ÿffÿ™™ÿÌÌS ]T¥†³Ô¾Þ (V =„\j¦’ÀÌÌÿ Ak c¤Y„½§ÑÆÖó  ˆ  ª3™ÿŽÍðÙîù$M2lM¦ŒÀl³Ó›DY _} ’À ¸ÒkÑßœPPff3™™fÌÌ™ÿÿÖyp ª èÒXÿë ÿðžnG šd ÿf ÿ™ ÷³WÿÌ3V5nJ ¦~NÇŸmÿÌ™æææÙÙÙ¿¿¿¦¦¦™™™ŒŒŒfff@@@oŒœÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûð  ¤€€€ÿ   ÿ ÿÿ   ÿ    ÿÿ   !ù  ý ,        ß û	H° Áƒ*\È°áÁ$ÿ"þKbPâ¿‚A’ Ø Iˆ<2q D(u”hI€—&ÜëòH›$)öû§cß¾žJj/Ñ ÿ‰¼™$É’ýŽô¬WïçÏ#ýPà ÈPÊ´éÓ‹<÷Qõ‰ò" ù”()ú€R›f‡@ÜÙÓ§U•ýÞæ[0®»8Ù°WêßŸ:°1lÔh ›d7,†¨3mÏ¶7l¬\wM²˜užN©R§½#o·"­`¤EÕo!šã½ƒ>0  ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/images/yellow_trafficlight.gif gallery-1.5.2/images/yellow_trafficlight.gif
--- gallery-1.5.1/images/yellow_trafficlight.gif	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/images/yellow_trafficlight.gif	2005-10-20 15:37:00.000000000 +0200
@@ -0,0 +1 @@
+GIF89a   ÷     €   € €€   €€ € €€€€€ÀÜÀ¦Êð™  Ä &ÿffÿ™™ÿÌÌS ]T¥†³Ô¾Þ (V =„\j¦’ÀÌÌÿ Ak c¤Y„½§ÑÆÖó  ˆ  ª3™ÿŽÍðÙîù$M2lM¦ŒÀl³Ó›DY _} ’À ¸ÒkÑßœPPff3™™fÌÌ™ÿÿÖyp ª èÒXÿë ÿðžnG šd ÿf ÿ™ ÷³WÿÌ3V5nJ ¦~NÇŸmÿÌ™æææÙÙÙ¿¿¿¦¦¦™™™ŒŒŒfff@@@oŒœÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûð  ¤€€€ÿ   ÿ ÿÿ   ÿ    ÿÿ   !ù  ý ,        ´ û	H° Áƒ*\È°áÁ$ÿ"þKbPâ?ƒ%RñˆÇ#BÔARGHŽÿ>‚¤ØñH—+þÓ±oÍ![¾|91%Ì$I6€ìw„f½z6méçsgP)>½8sßÑš$©þ*4¢G A‡@dJ³fR“L¿rëuç†!Æ=kSÇÒ¨.ßÆí™.ÄUifeUïß~wžD<³äâÄ.[ÜHprÁŒ);ÜÌ¹s¿€ ;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/includes/add_photos/add_admin.inc gallery-1.5.2/includes/add_photos/add_admin.inc
--- gallery-1.5.1/includes/add_photos/add_admin.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_admin.inc	1970-01-01 01:00:00.000000000 +0100
@@ -1,34 +0,0 @@
-<?php
-/*
- * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
- *
- * $Id: add_admin.inc,v 1.5.2.1 2005/09/12 22:40:46 dmolavi Exp $
- */
-?>
-<?php
-    $grHelpUrl = 'http://gallery.menalto.com/modules.php?op=modload&name=GalleryDocs&file=index&page=gallery1-install.remote-applets.php';
-?>
-<p><?php echo _("Admin help") ?></p>
-
-<p>
-<?php 
-    echo _("To install or upgrade the Gallery Remote Applets, please refer to ") .
-	'<a href="'. $grHelpUrl .'" target="other">'. _("the documentation page") .'</a>' .
-	_(" on the Gallery web site.");
-?>
-</p>
diff -Naur gallery-1.5.1/includes/add_photos/add_applet.cfg gallery-1.5.2/includes/add_photos/add_applet.cfg
--- gallery-1.5.1/includes/add_photos/add_applet.cfg	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_applet.cfg	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_applet.cfg,v 1.2.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_applet.cfg,v 1.3.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
 
diff -Naur gallery-1.5.1/includes/add_photos/add_applet.inc gallery-1.5.2/includes/add_photos/add_applet.inc
--- gallery-1.5.1/includes/add_photos/add_applet.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_applet.inc	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_applet.inc,v 1.8.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_applet.inc,v 1.9.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
 
diff -Naur gallery-1.5.1/includes/add_photos/add_applet_mini.cfg gallery-1.5.2/includes/add_photos/add_applet_mini.cfg
--- gallery-1.5.1/includes/add_photos/add_applet_mini.cfg	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_applet_mini.cfg	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_applet_mini.cfg,v 1.2.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_applet_mini.cfg,v 1.3.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
 
diff -Naur gallery-1.5.1/includes/add_photos/add_applet_mini.inc gallery-1.5.2/includes/add_photos/add_applet_mini.inc
--- gallery-1.5.1/includes/add_photos/add_applet_mini.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_applet_mini.inc	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_applet_mini.inc,v 1.7.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_applet_mini.inc,v 1.8.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
 
diff -Naur gallery-1.5.1/includes/add_photos/add_form.inc gallery-1.5.2/includes/add_photos/add_form.inc
--- gallery-1.5.1/includes/add_photos/add_form.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_form.inc	2006-01-08 21:07:17.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,89 +17,72 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_form.inc,v 1.24.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_form.inc,v 1.28.2.3 2006/01/08 20:07:17 jenst Exp $
  */
 ?>
 <?php
 
-list($boxes, $metaboxes) = getRequestVar(array('boxes','metaboxes'));
+include_once(dirname(dirname(dirname(__FILE__))) . '/js/multifile.js.php');
 
-list($boxes_status, $boxes, $boxes_msg) = isValidInteger($boxes, false, 5);
-list($metaboxes_status, $metaboxes, $metaboxes_msg) = isValidInteger($metaboxes, false, 0);
- 
-echo "\n\t<p>";
-echo _("Click the <b>Browse</b> button to locate a photo to upload.");
-echo '<br>';
-echo _("Supported file types") ?>: <?php echo join(", ", acceptableFormatList());
-echo '</p>';
-
-if ($gallery->app->feature["zip"] || $gallery->app->rar) {
-    echo '<p><b>'. _("Tip:") . '</b> ';
-    echo _("Upload a compressed file (zip, rar, ace ...) full of photos and movies!");
-    echo "</p>\n\t";
+echo "\n<p>". _("Click the <b>Browse</b> button to locate a photo to upload.");
+echo '<br>'. _("After you added a file, you can add more files on the sane way, just use the browse button as often as you want.");
+echo '<br>'. _("Its possible to enter a manual caption for each item you upload, or you can gallery set the captions.");
+echo '<br>'. sprintf(_("Supported file types: %s"),join(", ", acceptableFormatList()));
+
+if (isset($gallery->app->feature["zip"]) || isset($gallery->app->rar)) {
+    $ftype = '';
+    if(isset($gallery->app->feature["zip"])) {
+        $ftype .= "zip";
+    }
+    if(isset($gallery->app->rar)) {
+        $ftype .= ($ftype) ? _(" or " ) : '';
+        $ftype .= ("rar");
+    }
+    echo "\n<br><br>". sprintf(_("You can also upload compressed archive files (%s) full of photos and movies!"), $ftype);
 }
 
-echo makeFormIntro("add_photos.php", array("name" => "count_form", "method" => "POST"), array('type' => 'popup')); ?>
-<input type="hidden" name="mode" value="<?php echo $mode ?>"/>
+echo "</p>\n";
 
-<table>
-<tr>
-	<td><?php echo _("1. Select the number of files you want to upload:") ?></td>
-	<td><input type="text" size="2" maxlength="2" name="boxes" value="<?php echo $boxes; ?>" onChange="javascript:document.count_form.submit(); return false;"></td>
-</tr>
-<tr>
-    <td><?php
-echo '<b>'. _("Optional:") .'</b> ';
-echo _("Select the number of meta data files you want to upload:");
+echo makeFormIntro("save_photos.php",
+	array("name" => "upload_form","enctype" => "multipart/form-data"),
+	array('type' => 'popup'));
+
+echo "\n<input id=\"trash_userfile\" type=\"file\">";
+echo "\n<br>". _("Use the Browse button to find the photos on your computer");
+echo "\n<br><br>". _("Files:");
 ?>
-    </td>
-    <td><input type="text" size="2" maxlength="2" name="metaboxes" value="<?php echo $metaboxes; ?>" onChange="javascript:document.count_form.submit(); return false;"></td>
-</tr>
-</table>
-
-</form>
-
-<?php echo makeFormIntro("save_photos.php",
-	array("name" => "upload_form",
-		"enctype" => "multipart/form-data",
-		"method" => "POST"), array('type' => 'popup')); ?>
-<table>
-<tr>
-	<td colspan="2"><?php echo _("2. Use the Browse button to find the photos on your computer") ?></td>
-</tr>
-<?php for ($i = 0; $i < $boxes;  $i++) { ?>
-<tr>
-	<td><?php echo _("File") ?></td>
-		<td><input name="userfile[]" type="file" size="40"></td>
-	</tr>
-	<tr>
-		<td><?php echo _("Caption") ?></td>
-		<td><input name="usercaption[]" type="text" size="40"><br><br></td>
-	</tr>
-<?php }
-	if ($metaboxes >0) {
-		echo '<tr><td colspan="2">' . _("3. Use the Browse button to find the meta data files on your computer") . '</td></tr>';
-		for ($i = 0; $i < $metaboxes;  $i++) {
-			echo "\n<tr>";
-			echo "\n\t<td>" . _("File") .'</td>';
-			echo "\n\t<td>". '<input name="metafile[]" type="file" size="40"></td>';
-			echo "\n</tr>";
-		}
-	}
+
+<div style="padding: 2px; border: 1px solid black;" id="files_list"></div>
+<script type="text/javascript">
+    var userfile_selector = new MultiSelector(document.getElementById('files_list'), -1, 'userfile', true);
+    userfile_selector.addElement(document.getElementById('trash_userfile'));
+</script>
+
+<p><?php 
+    echo _("Do the same for optional metafiles.");
+    echo popup_link(gImage('icons/help.gif', _("Help")), 'help/metadataOnUpload.php');
 ?>
+</p>
+<input id="trash_metafile" type="file">
 
-	</table><br>
+<br><?php echo _("MetaFiles:"); ?>
+<div style="padding: 2px; border: 1px solid black;" id="metafiles_list"></div>
+<script type="text/javascript">
+    var userfile_selector = new MultiSelector(document.getElementById('metafiles_list'), -1, 'metafile', false);
+    userfile_selector.addElement(document.getElementById('trash_metafile'));
+</script>
+<br>
 <?php 
-	echo _("If no caption is set, what would you like the captions to default to?");
-	echo "\n<p>";
-	include(dirname(__FILE__) .'/captionOptions.inc.php');
-
-if (isset($gallery->app->watermarkDir)) {
-    global $watermarkForm;
-    $watermarkForm["askRecursive"] = 0;
-    $watermarkForm["askPreview"] = 0;
-    $watermarkForm["allowNone"] = 1;
-    includeLayout('watermarkform.inc');
+    echo _("If no caption is set, what would you like the captions to default to?");
+    echo "\n<p>";
+    include(dirname(__FILE__) .'/captionOptions.inc.php');
+
+    if (isset($gallery->app->watermarkDir)) {
+	global $watermarkForm;
+	$watermarkForm["askRecursive"] = 0;
+	$watermarkForm["askPreview"] = 0;
+	$watermarkForm["allowNone"] = 1;
+	includeLayout('watermarkform.inc');
 }
 ?>
 	<p align="center">
diff -Naur gallery-1.5.1/includes/add_photos/add_other.inc gallery-1.5.2/includes/add_photos/add_other.inc
--- gallery-1.5.1/includes/add_photos/add_other.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_other.inc	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /**
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_other.inc,v 1.11.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_other.inc,v 1.12.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
 <p>
diff -Naur gallery-1.5.1/includes/add_photos/add_url.inc gallery-1.5.2/includes/add_photos/add_url.inc
--- gallery-1.5.1/includes/add_photos/add_url.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/add_url.inc	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,26 +17,21 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: add_url.inc,v 1.14.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: add_url.inc,v 1.17.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
-
-<p>
 <?php
-	echo _("Upload any images found at this location.");
+	echo "\n<p>";
+	echo _("Upload any images found at this location.") . ' ';
 	echo _("The location can either be a URL or a local directory on the server.");
-?>
-<br>
-<?php 
-	echo '<p><b>'. _("Tip:") . '</b> ';
+	echo "\n<p>\n";
+
+	echo '<b>'. _("Tip:") . '</b> ';
 	echo _("FTP images to a directory on your server then provide that path here!");
-?>
-</p>
 
-<?php 
 	echo makeFormIntro("save_photos.php",
-			array("name" => "uploadurl_form",
-				"method" => "POST"), array('type' => 'popup'));
+			array('name' => 'uploadurl_form'),
+			array('type' => 'popup'));
 ?>
 <input type="text" name="urls[]" size="40">
 <p>
diff -Naur gallery-1.5.1/includes/add_photos/captionOptions.inc.php gallery-1.5.2/includes/add_photos/captionOptions.inc.php
--- gallery-1.5.1/includes/add_photos/captionOptions.inc.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/add_photos/captionOptions.inc.php	2006-01-06 07:31:35.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,23 +17,23 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: captionOptions.inc.php,v 1.3.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: captionOptions.inc.php,v 1.5.2.1 2006/01/06 06:31:35 jenst Exp $
  */
 ?>
-<input type="radio" name="setCaption" value="0" id="setCaption0"><label for="setCaption0"><?php echo _("Leave blank.") ?></label>
+<input type="radio" name="setCaption" value="0" id="setCaption0"><label for="setCaption0"><?php echo gTranslate('core', "Leave blank.") ?></label>
 <br>
-<input type="radio" name="setCaption" value="1" id="setCaption1" checked><label for="setCaption1"><?php echo _("Use filename as caption.") ?></label>
+<input type="radio" name="setCaption" value="1" id="setCaption1" checked><label for="setCaption1"><?php echo gTranslate('core', "Use filename as caption.") ?></label>
 <br>
-<input type="radio" name="setCaption" value="2" id="setCaption2"><label for="setCaption2"><?php echo _("Use file creation date/time stamp.") ?></label>
+<input type="radio" name="setCaption" value="2" id="setCaption2"><label for="setCaption2"><?php echo gTranslate('core', "Use file creation date/time stamp.") ?></label>
 <br>
 <?php
 if (isset($gallery->app->use_exif)) {
         echo '<input type="radio" name="setCaption" value="3" id="setCaption3">';
 	echo '<label for="setCaption3">';
-        echo _("Set photo captions with file capture times.");
+        echo gTranslate('core', "Set photo captions with file capture times.");
 	echo '</label>';
 }
 
 echo "\n<br><br>";
-echo _("For the last two options Gallery will use the format you specified in the config for date/time strings.");
+echo gTranslate('core', "For the last two options Gallery will use the format you specified in the config for date/time strings.");
 ?>
diff -Naur gallery-1.5.1/includes/definitions/albumProperties.php gallery-1.5.2/includes/definitions/albumProperties.php
--- gallery-1.5.1/includes/definitions/albumProperties.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/definitions/albumProperties.php	2006-01-06 07:31:36.000000000 +0100
@@ -1,482 +1,491 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: albumProperties.php,v 1.4.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: albumProperties.php,v 1.10.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 ?>
 <?php
 
 $properties = array(
-	'group_text_start' => array (
-		'type' => "group_start",
-		'name' => "group_text",
-		'default' => "inline",
-		'title' => _("Texts"),
-		'contains_required' => false,
-	),
-	'summary' => array(
-		'prompt' => _("Album Summary"),
-		'desc' => '',
-		'value' => $gallery->album->fields["summary"],
-		'type' => "textarea",
-		'attrs' => array('cols' => 40, 'rows' => 6)
-	),
-	'title' => array(
-		'prompt' => _("Album Title"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["title"]
-	),
-	'group_text_end' => array (
-		'type' => "group_end",
-	),
-	'group_layout_start' => array (
-		'type' => "group_start",
-		'name' => "group_layout",
-		'default' => "none",
-		'title' => _("Layout"),
-		'desc' => ""
-	),
-	'background' => array(
-		'prompt' => _("Background Image (URL)"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["background"]
-	),
-	'font' => array(
-		'prompt' => _("Font"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["font"]
-	),
-	'rows' => array(
-		'prompt' => _("Rows"),
-		'desc' => '',
-		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
-		'value' => $gallery->album->fields["rows"]
-	),
-	'cols' => array(
-		'prompt' => _("Columns"),
-		'desc' => '',
-		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
-		'value' => $gallery->album->fields["cols"]
-	),
-	'border' => array(
-		'prompt' => _("Borders"),
-		'desc' => '',
-		'choices' => array(0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 10 => 10, 15 => 15, 20 => 20),
-		'value' => $gallery->album->fields["border"]
-	),
-	'subgroup_colors' => array (
-		'type' => "subgroup",
-		'title' => _("Colors")
-	),
-	'bgcolor' => array(
-		'prompt' => _("Background Color"),
-		'desc' => '',
-		'type' => 'colorpicker',
-		'value' => $gallery->album->fields["bgcolor"]
-	),
-	'textcolor' => array(
-		'prompt' => _("Text Color"),
-		'desc' => '',
-		'type' => 'colorpicker',
-		'value' => $gallery->album->fields["textcolor"]
-	),
-	'linkcolor' => array(
-		'prompt' => _("Link Color"),
-		'desc' => '',
-		'type' => 'colorpicker',
-		'value' => $gallery->album->fields["linkcolor"]
-	),
-	'bordercolor' => array(
-		'prompt' => _("Border color"),
-		'desc' => '',
-		'type' => 'colorpicker',
-		'value' => $gallery->album->fields["bordercolor"]
-	),
-	'subgroup_frams' => array (
-		'type' => "subgroup",
-		'title' => _("Frames")
-	),
-	'album_frame' => array(
-		'prompt' => _("Album Frame"),
-		'desc' => '',
-		'choices' => available_frames(),
-		'value' => $gallery->album->fields["album_frame"]
-	),
-	'thumb_frame' => array(
-		'prompt' => _("Thumb Frame"),
-		'desc' => '',
-		'choices' => available_frames(),
-		'value' => $gallery->album->fields["thumb_frame"]
-	),
-	'image_frame' => array(
-		'prompt' => _("Image Frame"),
-		'desc' => '',
-		'choices' => available_frames(),
-		'value' => $gallery->album->fields["image_frame"]
-	),
-	'group_layout_end' => array (
-		'type' => "group_end"
-	),
-	'group_slideshow_start' => array (
-		'type' => "group_start",
-		'name' => "group_slideshow",
-		'default' => "none",
-		'title' => _("Slideshow"),
-		'desc' => ""
-	),
-	'slideshow_type' => array(
-		'prompt' => _("Slideshow Type"),
-		'desc' => '',
-		'choices' => array( "off" => _("Off"), "ordered" => _("Ordered"), "random" => _("Random")),
-		'value' => $gallery->album->fields["slideshow_type"]
-	),
-	'slideshow_recursive' => array(
-		'prompt' => _("Include sub-albums in slideshow"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["slideshow_recursive"]
-	),
-	'slideshow_loop' => array(
-		'prompt' => _("Allow slideshow to loop"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["slideshow_loop"]
-	),
-	'slideshow_length' => array(
-		'prompt' => _("Slideshow Length"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["slideshow_length"],
-		'vartype' => 'int_empty'
-	),
-	'group_slideshow_end' => array (
-		'type' => "group_end"
-	),
-	'group_sizes_start' => array (
-		'type' => "group_start",
-		'name' => "group_sizes",
-		'default' => "none",
-		'title' => _("Sizes"),
-		'desc' => ""
-	),
-	'thumb_size' => array(
-		'prompt' => _("Thumbnail size"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["thumb_size"],
-		'vartype' => 'int_notnull'
-	),
-	'resize_size' => array(
-		'prompt' => _("Maximum dimensions of intermediate sized images"),
-		'desc' => '',
-		'choices' => array(0 => _("off"), 400 => 400, 500 => 500, 600 => 600, 640 => 640, 700 => 700, 800 => 800, 1024 => 1024, 1280 => 1280),
-		'value' => $gallery->album->fields["resize_size"],
-		'vartype' => 'int_empty'
-	),
-	'resize_file_size' => array(
-		'prompt' => _("Maximum file size of intermediate sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["resize_file_size"],
-		'vartype' => 'int_empty'
-	),
-	'max_size' => array(
-		'prompt' => _("Maximum dimensions of full sized images"),
-		'desc' => '',
-		'choices' => array(0 => _('off'), 400 => 400, 500 => 500, 600 => 600, 640 => 640, 700 => 700, 800 => 800, 1024 => 1024, 1280 => sprintf(_('%d (%d MPix)'), 1280, 1), 1600 => sprintf(_('%d (%d MPix)'), 1600, 2), 2048 => sprintf(_('%d (%d MPix)'), 2048, 3)),
-		'value' => $gallery->album->fields["max_size"],
-		'vartype' => 'int_empty'
-	),
-	'max_file_size' => array(
-		'prompt' => _("Maximum file size of full sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"),
-		'desc' => '',
-		'type' => 'text',
-		'value' => $gallery->album->fields["max_file_size"],
-		'vartype' => 'int_empty'
-	),
-	'group_sizes_end' => array (
-		'type' => "group_end"
-	),
-	'group_display_start' => array (
-		'type' => "group_start",
-		'name' => "group_display",
-		'default' => "none",
-		'title' => _("Display"),
-		'desc' => ""
-	),
-	'display_clicks' => array(
-		'prompt' => _("Display click counter for this album?"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["display_clicks"]
-	),
-	'item_owner_display' => array(
-		'prompt' => _("Display owners name with caption"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["item_owner_display"]
-	),
-	'showDimensions' => array(
-		'prompt' => _("Display clickable image dimensions"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["showDimensions"]
-	),
-	'use_exif' => array(
-		'prompt' => _("Display EXIF data?"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["use_exif"],
-		'skip' => (empty($gallery->app->use_exif)) ? true : false
-	),
-	'group_display_end' => array (
-		'type' => "group_end"
-	),
-	'group_services_start' => array (
-		'type' => "group_start",
-		'name' => "group_services",
-		'default' => "none",
-		'title' => _("Services"),
-		'desc' => ""
-	),
-	'print_photos' => array(
-                'prompt' => _("Which photo printing services<br>do you want to let visitors use?"),
-                'desc' => '',
-		'multiple_choices' => array(
-                        'photoaccess' => '<a href="http://www.photoworks.com/">PhotoWorks</a>',
-                        'shutterfly'  => '<a href="http://www.shutterfly.com/">Shutterfly</a>',
-                        'fotoserve'   => '<a href="http://www.fotoserve.com/">Fotoserve.com</a>',
-                        'fotokasten'  => '<a href="http://www.fotokasten.de/">Fotokasten</a>',
-                        'mpush'       => '<a href="http://www.mpush.cc/">mPush</a>'
-                ),
-                'value' => $gallery->album->fields['print_photos']
-        ),
-	'ecards' => array(
-		'prompt' => _("Enable Ecards ?"),
-                'desc' => '',
-                'choices' => array("yes" => _("yes"), "no" => _("no")),
-                'value' => isset($gallery->album->fields["ecards"]) ? $gallery->album->fields["ecards"] : 'no',
-                'skip' => ($gallery->app->emailOn == 'yes') ? false : true
-        ),
-	'group_services_end' => array (
-		'type' => "group_end"
-	),
-	'group_pollProperties_start' => array (
-                'type' => "group_start",
-                'name' => "group_pollProperties",
-                'default' => "none",
-                'title' => _("Poll Properties"),
-                'desc' => ""
-        ),
-	'poll_type' => array(
-		'prompt' => _("Type of poll for this album"),
-		'desc' => '',
-		'choices' => array("rank" => _("Rank"), "critique" => _("Critique")),
-		'value' => $gallery->album->fields["poll_type"]
-	),
-	'poll_scale' => array(
-                'prompt' => _("Number of voting options"),
-                'desc' => '',
-                'type' => 'text',
-                'value' => $gallery->album->getPollScale(),
-		'vartype' => 'int_empty'
-        ),
-	'poll_show_results' => array(
-                'prompt' => _("Show results of voting to all visitors?"),
-                'desc' => '',
-                'choices' => array("yes" => _("yes"), "no" => _("no")),
-                'value' => $gallery->album->fields["poll_show_results"]
-        ),
-	'poll_num_results' => array(
-                'prompt' => _("Number of lines of results graph to display on the album page"),
-                'desc' => '',
-                'type' => 'text',
-                'value' => $gallery->album->getPollNumResults(),
-		'vartype' => 'int_empty'
-        ),
-	'voter_class' => array(
-                'prompt' => _("Who can vote?"),
-                'desc' => '',
-                'choices' => array("Logged in" => _("Logged in"), "Everybody" => _("Everybody"), "Nobody" => _("Nobody")),
-                'value' => $gallery->album->fields["voter_class"]
-        ),
-	'poll_orientation' => array(
-                'prompt' => _("Orientation of vote choices"),
-                'desc' => '',
-                'choices' => array('horizontal' => _("Horizontal"), 'vertical' => _("Vertical")),
-                'value' => isset($gallery->album->fields['poll_orientation']) ? 
-				 $gallery->album->fields['poll_orientation'] : ''
+    'group_text_start' => array (
+        'type' => "group_start",
+        'name' => "group_text",
+        'default' => "inline",
+        'title' => gTranslate('common', "Texts"),
+        'contains_required' => false,
+    ),
+    'summary' => array(
+        'prompt' => gTranslate('common', "Album Summary"),
+        'desc' => '',
+        'value' => $gallery->album->fields["summary"],
+        'type' => "textarea",
+        'attrs' => array('cols' => 40, 'rows' => 6)
+    ),
+    'title' => array(
+        'prompt' => gTranslate('common', "Album Title"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["title"],
+        'attrs' => array('size' => 50)
+    ),
+    'group_text_end' => array (
+        'type' => "group_end",
+    ),
+    'group_layout_start' => array (
+        'type' => "group_start",
+        'name' => "group_layout",
+        'default' => "none",
+        'title' => gTranslate('common', "Layout"),
+        'desc' => ""
+    ),
+    'background' => array(
+        'prompt' => gTranslate('common', "Background Image (URL)"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["background"]
+    ),
+    'font' => array(
+        'prompt' => gTranslate('common', "Font"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["font"]
+    ),
+    'rows' => array(
+        'prompt' => gTranslate('common', "Rows"),
+        'desc' => '',
+        'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
+        'value' => $gallery->album->fields["rows"]
+    ),
+    'cols' => array(
+        'prompt' => gTranslate('common', "Columns"),
+        'desc' => '',
+        'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
+        'value' => $gallery->album->fields["cols"]
+    ),
+    'border' => array(
+        'prompt' => gTranslate('common', "Borders"),
+        'desc' => '',
+        'choices' => array(0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 10 => 10, 15 => 15, 20 => 20),
+        'value' => $gallery->album->fields["border"]
+    ),
+    'subgroup_colors' => array (
+        'type' => "subgroup",
+        'title' => gTranslate('common', "Colors")
+    ),
+    'bgcolor' => array(
+        'prompt' => gTranslate('common', "Background Color"),
+        'desc' => '',
+        'type' => 'colorpicker',
+        'value' => $gallery->album->fields["bgcolor"]
+    ),
+    'textcolor' => array(
+        'prompt' => gTranslate('common', "Text Color"),
+        'desc' => '',
+        'type' => 'colorpicker',
+        'value' => $gallery->album->fields["textcolor"]
+    ),
+    'linkcolor' => array(
+        'prompt' => gTranslate('common', "Link Color"),
+        'desc' => '',
+        'type' => 'colorpicker',
+        'value' => $gallery->album->fields["linkcolor"]
+    ),
+    'bordercolor' => array(
+        'prompt' => gTranslate('common', "Border Color"),
+        'desc' => '',
+        'type' => 'colorpicker',
+        'value' => $gallery->album->fields["bordercolor"]
+    ),
+    'subgroup_frams' => array (
+        'type' => "subgroup",
+        'title' => gTranslate('common', "Frames")
+    ),
+    'album_frame' => array(
+        'prompt' => gTranslate('common', "Album Frame"),
+        'desc' => '',
+        'choices' => available_frames(),
+        'value' => $gallery->album->fields["album_frame"]
+    ),
+    'thumb_frame' => array(
+        'prompt' => gTranslate('common', "Thumb Frame"),
+        'desc' => '',
+        'choices' => available_frames(),
+        'value' => $gallery->album->fields["thumb_frame"]
+    ),
+    'image_frame' => array(
+        'prompt' => gTranslate('common', "Image Frame"),
+        'desc' => '',
+        'choices' => available_frames(),
+        'value' => $gallery->album->fields["image_frame"]
+    ),
+    'group_layout_end' => array (
+        'type' => "group_end"
+    ),
+    'group_slideshow_start' => array (
+        'type' => "group_start",
+        'name' => "group_slideshow",
+        'default' => "none",
+        'title' => gTranslate('common', "Slideshow"),
+        'desc' => ""
+    ),
+    'slideshow_type' => array(
+        'prompt' => gTranslate('common', "Slideshow Type"),
+        'desc' => '',
+        'choices' => array( "off" => gTranslate('common', "Off"), "ordered" => gTranslate('common', "Ordered"), "random" => gTranslate('common', "Random")),
+        'value' => $gallery->album->fields["slideshow_type"]
+    ),
+    'slideshow_recursive' => array(
+        'prompt' => gTranslate('common', "Include sub-albums in slideshow"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["slideshow_recursive"]
+    ),
+    'slideshow_loop' => array(
+        'prompt' => gTranslate('common', "Allow slideshow to loop"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["slideshow_loop"]
+    ),
+    'slideshow_length' => array(
+        'prompt' => gTranslate('common', "Slideshow Length"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["slideshow_length"],
+        'vartype' => 'int_empty'
+    ),
+    'group_slideshow_end' => array (
+        'type' => "group_end"
+    ),
+    'group_sizes_start' => array (
+        'type' => "group_start",
+        'name' => "group_sizes",
+        'default' => "none",
+        'title' => gTranslate('common', "Sizes"),
+        'desc' => ""
+    ),
+    'thumb_size' => array(
+        'prompt' => gTranslate('common', "Thumbnail size"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["thumb_size"],
+        'vartype' => 'int_notnull'
+    ),
+    'thumb_ratio' => array(
+        'prompt' => gTranslate('common', "The ratio in which the thumbnails are made.<br>This affects only new thumbs. For existing use 'rebuild thumbs'"),
+        'desc' => '',
+        'choices' => array('0' => gTranslate('common', "As the original image"), '1/1' => gTranslate('common', "Square thumbs")),
+        'value' => getPropertyDefault('thumb_ratio', $gallery->album, false),
+    ),
+    'resize_size' => array(
+        'prompt' => gTranslate('common', "Maximum dimensions of intermediate sized images"),
+        'desc' => '',
+        'choices' => array(0 => gTranslate('common', "Off"), 400 => 400, 500 => 500, 600 => 600, 640 => 640, 700 => 700, 800 => 800, 1024 => 1024, 1280 => 1280),
+        'value' => $gallery->album->fields["resize_size"],
+        'vartype' => 'int_empty'
+    ),
+    'resize_file_size' => array(
+        'prompt' => gTranslate('common', "Maximum file size of intermediate sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["resize_file_size"],
+        'vartype' => 'int_empty'
+    ),
+    'max_size' => array(
+        'prompt' => gTranslate('common', "Maximum dimensions of full sized images"),
+        'desc' => '',
+        'choices' => array(0 => gTranslate('common', "Off"), 400 => 400, 500 => 500, 600 => 600, 640 => 640, 700 => 700, 800 => 800, 1024 => 1024, 1280 => sprintf(gTranslate('common', '%d (%d MPix)'), 1280, 1), 1600 => sprintf(gTranslate('common', '%d (%d MPix)'), 1600, 2), 2048 => sprintf(gTranslate('common', '%d (%d MPix)'), 2048, 3)),
+        'value' => $gallery->album->fields["max_size"],
+        'vartype' => 'int_empty'
+    ),
+    'max_file_size' => array(
+        'prompt' => gTranslate('common', "Maximum file size of full sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["max_file_size"],
+        'vartype' => 'int_empty'
+    ),
+    'group_sizes_end' => array (
+        'type' => "group_end"
+    ),
+    'group_display_start' => array (
+        'type' => "group_start",
+        'name' => "group_display",
+        'default' => "none",
+        'title' => gTranslate('common', "Display"),
+        'desc' => ""
+    ),
+    'display_clicks' => array(
+        'prompt' => gTranslate('common', "Display click counter for this album?"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["display_clicks"]
+    ),
+    'item_owner_display' => array(
+        'prompt' => gTranslate('common', "Display owners name with caption"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["item_owner_display"]
+    ),
+    'showDimensions' => array(
+        'prompt' => gTranslate('common', "Display clickable image dimensions"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["showDimensions"]
+    ),
+    'use_exif' => array(
+        'prompt' => gTranslate('common', "Display EXIF data?"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["use_exif"],
+        'skip' => (empty($gallery->app->use_exif)) ? true : false
+    ),
+    'group_display_end' => array (
+        'type' => "group_end"
+    ),
+    'group_services_start' => array (
+        'type' => "group_start",
+        'name' => "group_services",
+        'default' => "none",
+        'title' => gTranslate('common', "Services"),
+        'desc' => ""
+    ),
+    'print_photos' => array(
+        'prompt' => gTranslate('common', "Which photo printing services<br>do you want to let visitors use?"),
+        'desc' => '',
+        'multiple_choices' => array(
+            'photoaccess' => '<a href="http://www.photoworks.com/">PhotoWorks</a>',
+            'shutterfly'  => '<a href="http://www.shutterfly.com/">Shutterfly</a>',
+            'fotoserve'   => '<a href="http://www.fotoserve.com/">Fotoserve.com</a>',
+            'fotokasten'  => '<a href="http://www.fotokasten.de/">Fotokasten</a>',
+            'mpush'       => '<a href="http://www.mpush.cc/">mPush</a>'
         ),
-        'poll_hint' => array(
-                'prompt' => _("Vote hint"),
-                'desc' => '',
-                'type' => 'text',
-                'value' => $gallery->album->getPollHint(),
-		'attrs' => array('size' => 60)
-	),
-        'poll_displayed_values' => array(
-                'prompt' => _("Voting Options"),
-                'desc' => '',
-                'type' => 'table_values',
-		'elements' => buildVotingInputFields(),
-		'columns' => array(_("Displayed Value"),_("Points")),
-		'value' => ''
-	),
-	'group_pollProperties_end' => array (
-                'type' => "group_end"
+        'value' => $gallery->album->fields['print_photos']
+    ),
+    'ecards' => array(
+        'prompt' => gTranslate('common', "Enable Ecards ?"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => isset($gallery->album->fields["ecards"]) ? $gallery->album->fields["ecards"] : 'no',
+        'skip' => ($gallery->app->emailOn == 'yes') ? false : true
+    ),
+    'group_services_end' => array (
+        'type' => "group_end"
+    ),
+    'group_pollProperties_start' => array (
+        'type' => "group_start",
+        'name' => "group_pollProperties",
+        'default' => "none",
+        'title' => gTranslate('common', "Poll Properties"),
+        'desc' => ""
+    ),
+    'voter_class' => array(
+        'prompt' => gTranslate('common', "Who can vote?"),
+        'desc' => gTranslate('common', "This enables/disable voting and if enabled it controlles who can vote."),
+        'choices' => array("Logged in" => gTranslate('common', "Logged in"), "Everybody" => gTranslate('common', "Everybody"), "Nobody" => gTranslate('common', "Nobody")),
+        'value' => $gallery->album->fields["voter_class"]
+    ),
+    'poll_type' => array(
+        'prompt' => gTranslate('common', "Type of poll for this album"),
+        'desc' => '',
+        'choices' => array("rank" => gTranslate('common', "Rank"), "critique" => gTranslate('common', "Critique")),
+        'value' => $gallery->album->fields["poll_type"]
+    ),
+    'poll_scale' => array(
+        'prompt' => gTranslate('common', "Number of voting options"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->getPollScale(),
+        'vartype' => 'int_empty'
+    ),
+    'poll_show_results' => array(
+        'prompt' => gTranslate('common', "Show results of voting to all visitors?"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["poll_show_results"]
+    ),
+    'poll_num_results' => array(
+        'prompt' => gTranslate('common', "Number of lines of results graph to display on the album page"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->getPollNumResults(),
+        'vartype' => 'int_empty'
+    ),
+    'poll_orientation' => array(
+        'prompt' => gTranslate('common', "Orientation of vote choices"),
+        'desc' => '',
+        'choices' => array('horizontal' => gTranslate('common', "Horizontal"), 'vertical' => gTranslate('common', "Vertical")),
+        'value' => isset($gallery->album->fields['poll_orientation']) ? 
+          $gallery->album->fields['poll_orientation'] : ''
         ),
-	'group_misc_start' => array (
-		'type' => "group_start",
-		'name' => "group_misc",
-		'default' => "none",
-		'title' => _("Misc"),
-		'desc' => ""
-	),
-	'add_to_beginning' => array(
-		'prompt' => _("Add new items at beginning of album"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["add_to_beginning"]
-	),
-	'returnto' => array(
-		'prompt' => _("Show <i>Return to</i> link"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["returnto"]
-	),
-	'use_fullOnly' => array(
-		'prompt' => _("Offer visitors ability to specify<br>preference for full-size or resized images"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["use_fullOnly"]
-	),
-	'fit_to_window' => array(
-		'prompt' => _("Auto fit-to-window for<br>images without a resized copy"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["fit_to_window"]
-	),
-	'subgroup_ermission' => array (
-		'type' => "subgroup",
-		'title' => _("Permissions")
-	),
-	'item_owner_modify' => array(
-		'prompt' => _("Allow item owners to modify their images"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["item_owner_modify"]
-	),
-	'item_owner_delete' => array(
-		'prompt' => _("Allow item owners to delete their images"),
-		'desc' => '',
-		'choices' => array("yes" => _("yes"), "no" => _("no")),
-		'value' => $gallery->album->fields["item_owner_delete"]
-	),
-	'group_misc_end' => array (
-		'type' => "group_end"
-	),
-	'group_CustomFields_start' => array (
-            'type' => "group_start",
-            'name' => "group_CustomFields",
-            'default' => "none",
-            'title' => _("Custom Fields")
-    	),
-	'extra_fields' => array(
-	    'prompt' => '',
-	    'desc' => '',
-	    'multiple_choices' => isset($multiple_choices_EF) ? $multiple_choices_EF : '',
-	    'value' => !empty($checked_EF) ? $checked_EF : '',
-	),
-        'num_user_fields' => array(
-	    'prompt' => _("Number of user defined custom fields"),
-	    'desc' => '',
-	    'type' => 'text',
-	    'value' => $num_user_fields,
-	    'attrs' => array('size' => 2),
-	)
-    );
+    'poll_hint' => array(
+        'prompt' => gTranslate('common', "Vote hint"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->getPollHint(),
+        'attrs' => array('size' => 60)
+    ),
+    'poll_displayed_values' => array(
+        'prompt' => gTranslate('common', "Voting Options"),
+        'desc' => '',
+        'type' => 'table_values',
+        'elements' => buildVotingInputFields(),
+        'columns' => array(gTranslate('common', "Displayed Value"),gTranslate('common', "Points")),
+        'value' => ''
+    ),
+    'group_pollProperties_end' => array (
+        'type' => "group_end"
+    ),
+    'group_misc_start' => array (
+        'type' => "group_start",
+        'name' => "group_misc",
+        'default' => "none",
+        'title' => gTranslate('common', "Misc"),
+        'desc' => ""
+    ),
+    'add_to_beginning' => array(
+        'prompt' => gTranslate('common', "Add new items at beginning of album"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["add_to_beginning"]
+    ),
+    'returnto' => array(
+        'prompt' => gTranslate('common', "Show <i>Return to</i> link"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["returnto"]
+    ),
+    'use_fullOnly' => array(
+        'prompt' => gTranslate('common', "Offer visitors ability to specify<br>preference for full-size or resized images"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["use_fullOnly"]
+    ),
+    'fit_to_window' => array(
+        'prompt' => gTranslate('common', "Auto fit-to-window for<br>images without a resized copy"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["fit_to_window"]
+    ),
+    'subgroup_ermission' => array (
+        'type' => "subgroup",
+        'title' => gTranslate('common', "Permissions")
+    ),
+    'item_owner_modify' => array(
+        'prompt' => gTranslate('common', "Allow item owners to modify their images"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["item_owner_modify"]
+    ),
+    'item_owner_delete' => array(
+        'prompt' => gTranslate('common', "Allow item owners to delete their images"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["item_owner_delete"]
+    ),
+    'group_misc_end' => array (
+        'type' => "group_end"
+    ),
+    'group_CustomFields_start' => array (
+        'type' => "group_start",
+        'name' => "group_CustomFields",
+        'default' => "none",
+        'title' => gTranslate('common', "Custom Fields")
+    ),
+    'extra_fields' => array(
+        'prompt' => '',
+        'desc' => '',
+        'multiple_choices' => isset($multiple_choices_EF) ? $multiple_choices_EF : '',
+        'value' => !empty($checked_EF) ? $checked_EF : '',
+    ),
+    'num_user_fields' => array(
+        'prompt' => gTranslate('common', "Number of user defined custom fields"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $num_user_fields,
+        'attrs' => array('size' => 2),
+    )
+);
 if (isset($customFields)) {
     $properties = array_merge($properties, $customFields);
 }
-    $properties = array_merge($properties, array(
-        'group_CustomFields_end' => array (
+$properties = array_merge($properties, array(
+    'group_CustomFields_end' => array (
         'type' => "group_end"
-	),
+    ),
     'group_MicroThumbs_start' => array (
         'type' => "group_start",
         'name' => "group_MicroThumbs",
         'default' => "none",
-        'title' => _("Microthumbs")
+        'title' => gTranslate('common', "Microthumbs")
     ),
     'nav_thumbs' => array(
-                'prompt' => _("Use micro thumb photo navigation"),
-                'desc' => '',
-                'choices' => array("yes" => _("yes"), "no" => _("no"), "both" => _("both")),
-                'value' => $gallery->album->fields["nav_thumbs"]
+        'prompt' => gTranslate('common', "Use microthumb photo navigation"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No"), "both" => gTranslate('common', "both")),
+        'value' => $gallery->album->fields["nav_thumbs"]
     ),
     'nav_thumbs_style' => array(
-                'prompt' => _("Micro thumb style"),
-                'desc' => '',
-                'choices' => array("fixed" => _("Fixed"), "dynamic" => _("Dynamic")),
-                'value' => $gallery->album->fields["nav_thumbs_style"]
+        'prompt' => gTranslate('common', "Microthumb style"),
+        'desc' => '',
+        'choices' => array("fixed" => gTranslate('common', "Fixed"), "dynamic" => gTranslate('common', "Dynamic")),
+        'value' => $gallery->album->fields["nav_thumbs_style"]
     ),
     'nav_thumbs_first_last' => array(
-                'prompt' => _("Show first & last micro thumb"),
-                'desc' => '',
-                'choices' => array("yes" => _("yes"), "no" => _("no")),
-                'value' => $gallery->album->fields["nav_thumbs_first_last"]
+        'prompt' => gTranslate('common', "Show first & last microthumb"),
+        'desc' => '',
+        'choices' => array("yes" => gTranslate('common', "Yes"), "no" => gTranslate('common', "No")),
+        'value' => $gallery->album->fields["nav_thumbs_first_last"]
     ),
     'nav_thumbs_prev_shown' => array(
-                'prompt' => _("Number of previous thumbs"),
-                'desc' => '',
-                'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
-                'value' => $gallery->album->fields["nav_thumbs_prev_shown"]
+        'prompt' => gTranslate('common', "Number of previous thumbs"),
+        'desc' => '',
+        'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
+        'value' => $gallery->album->fields["nav_thumbs_prev_shown"]
     ),
     'nav_thumbs_next_shown' => array(
-                'prompt' => _("Number of next thumbs"),
-                'desc' => '',
-                'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
-                'value' => $gallery->album->fields["nav_thumbs_next_shown"]
+        'prompt' => gTranslate('common', "Number of next thumbs"),
+        'desc' => '',
+        'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
+        'value' => $gallery->album->fields["nav_thumbs_next_shown"]
     ),
     'nav_thumbs_location' => array(
-                'prompt' => _("Position of micro-thumb navigation bar"),
-                'desc' => '',
-                'choices' => array("top" => _("Top"), "both" => _("Both"), "bottom" => _("Bottom")),
-                'value' => $gallery->album->fields["nav_thumbs_location"]
+        'prompt' => gTranslate('common', "Position of microthumb navigation bar"),
+        'desc' => '',
+        'choices' => array("top" => gTranslate('common', "Top"), 
+			   "both" => gTranslate('common', "Both"), 
+			   "bottom" => gTranslate('common', "Bottom")),
+        'value' => $gallery->album->fields["nav_thumbs_location"]
     ),
     'nav_thumbs_size' => array(
-                'prompt' => _("Height of micro-thumbs in navigation bar"),
-                'desc' => '',
-                'type' => 'text',
-                'value' => $gallery->album->fields["nav_thumbs_size"],
-                'attrs' => array('size' => 3)
+        'prompt' => gTranslate('common', "Height of microthumbs in navigation bar"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["nav_thumbs_size"],
+        'attrs' => array('size' => 3)
     ),
     'nav_thumbs_current_bonus' => array(
-                'prompt' => _("Bonus to height of current micro-thumb (pixels)"),
-                'desc' => '',
-                'type' => 'text',
-                'value' => $gallery->album->fields["nav_thumbs_current_bonus"],
-                'attrs' => array('size' => 3)
-        ),
+        'prompt' => gTranslate('common', "Bonus to height of current microthumb (pixels)"),
+        'desc' => '',
+        'type' => 'text',
+        'value' => $gallery->album->fields["nav_thumbs_current_bonus"],
+        'attrs' => array('size' => 3)
+    ),
     'group_MicroThumbs_end' => array (
         'type' => "group_end"
     ),
diff -Naur gallery-1.5.1/includes/definitions/mime.mapping.php gallery-1.5.2/includes/definitions/mime.mapping.php
--- gallery-1.5.1/includes/definitions/mime.mapping.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/includes/definitions/mime.mapping.php	2005-10-11 19:38:29.000000000 +0200
@@ -0,0 +1,143 @@
+<?php
+/**
+ * This file contains a mapping of common file extensions to
+ * MIME types.
+ *
+ * Any unknown file extensions will automatically be mapped to
+ * 'x-extension/<ext>' where <ext> is the unknown file extension.
+ *
+ */
+$mime_extension_map = array(
+    'arj'           => 'application/x-arj',
+    'asc'           => 'text/plain',
+    'avi'           => 'video/x-msvideo',
+    'bak'           => 'application/x-trash',
+    'bin'           => 'application/octet-stream',
+    'bmp'           => 'image/bmp',
+    'bz'            => 'application/x-bzip',
+    'bz2'           => 'application/x-bzip',
+    'csh'           => 'application/x-shellscript',
+    'css'           => 'text/css',
+    'cssl'          => 'text/css',
+    'csv'           => 'text/x-comma-separated-values',
+    'diff'          => 'text/x-patch',
+    'doc'           => 'application/vnd.ms-word',
+    'dtd'           => 'text/x-dtd',
+    'exe'           => 'application/x-ms-dos-executable',
+    'gif'           => 'image/gif',
+    'gtar'          => 'application/x-gtar',
+    'gz'            => 'application/x-gzip',
+    'htm'           => 'text/html',
+    'html'          => 'text/html',
+    'ics'           => 'text/calendar',
+    'ico'           => 'image/x-ico',
+    'iff'           => 'image/x-iff',
+    'iso'           => 'application/x-cd-image',
+    'jar'           => 'application/x-jar',
+    'jng'           => 'image/x-jng',
+    'jp2'           => 'image/jpeg2000',
+    'jpg'           => 'image/jpeg',
+    'jpe'           => 'image/jpeg',
+    'jpeg'          => 'image/jpeg',
+    'lha'           => 'application/x-lha',
+    'lhz'           => 'application/x-lhz',
+    'log'           => 'text/x-log',
+    'lzh'           => 'application/x-lha',
+    'lzo'           => 'application/x-lzop',
+    'moov'          => 'video/quicktime',
+    'mov'           => 'video/quicktime',
+    'movie'         => 'video/x-sgi-movie',
+    'mp2'           => 'video/mpeg',
+    'mp3'           => 'audio/x-mp3',
+    'mpe'           => 'video/mpeg',
+    'mpeg'          => 'video/mpeg',
+    'mpg'           => 'video/mpeg',
+    'mpga'          => 'audio/mpeg',
+    'nsv'           => 'video/x-nsv',
+    'ogg'           => 'application/ogg',
+    'pdf'           => 'application/pdf',
+    'pem'           => 'application/x-x509-ca-cert',
+    'perl'          => 'application/x-perl',
+    'pgp'           => 'application/pgp',
+    'php'           => 'application/x-php',
+    'php3'          => 'application/x-php',
+    'php4'          => 'application/x-php',
+    'pict'          => 'image/x-pict',
+    'pict1'         => 'image/x-pict',
+    'pict2'         => 'image/x-pict',
+    'pl'            => 'application/x-perl',
+    'pm'            => 'application/x-perl',
+    'png'           => 'image/png',
+    'po'            => 'text/x-gettext-translation',
+    'pot'           => 'text/x-gettext-translation-template',
+    'ppm'           => 'image/x-portable-pixmap',
+    'pps'           => 'application/vnd.ms-powerpoint',
+    'ppt'           => 'application/vnd.ms-powerpoint',
+    'ppz'           => 'application/vnd.ms-powerpoint',
+    'ps'            => 'application/postscript',
+    'ps.gz'         => 'application/x-gzpostscript',
+    'psd'           => 'image/x-psd',
+    'qt'            => 'video/quicktime',
+    'qtvr'          => 'video/quicktime',
+    'ra'            => 'audio/x-pn-realaudio',
+    'ram'           => 'audio/x-pn-realaudio',
+    'rar'           => 'application/x-rar',
+    'rm'            => 'audio/x-pn-realaudio',
+    'rpm'           => 'application/x-rpm',
+    'rss'           => 'text/rss',
+    'rtf'           => 'application/rtf',
+    'rtx'           => 'text/richtext',
+    'scm'           => 'text/x-scheme',
+    'sgm'           => 'text/sgml',
+    'sgml'          => 'text/sgml',
+    'sh'            => 'application/x-shellscript',
+    'shtml'         => 'text/html',
+    'sql'           => 'text/x-sql',
+    'sty'           => 'text/x-tex',
+    'svg'           => 'image/svg+xml',
+    'swf'           => 'application/x-shockwave-flash',
+    't'             => 'application/x-troff',
+    'tar'           => 'application/x-tar',
+    'tar.Z'         => 'application/x-tarz',
+    'tar.bz'        => 'application/x-bzip-compressed-tar',
+    'tar.bz2'       => 'application/x-bzip-compressed-tar',
+    'tar.gz'        => 'application/x-compressed-tar',
+    'tar.lzo'       => 'application/x-tzo',
+    'tcl'           => 'text/x-tcl',
+    'tex'           => 'text/x-tex',
+    'texi'          => 'text/x-texinfo',
+    'texinfo'       => 'text/x-texinfo',
+    'tgz'           => 'application/x-compressed-tar',
+    'theme'         => 'application/x-theme',
+    'tif'           => 'image/tiff',
+    'tiff'          => 'image/tiff',
+    'tk'            => 'text/x-tcl',
+    'torrent'       => 'application/x-bittorrent',
+    'ttf'           => 'application/x-font-ttf',
+    'txt'           => 'text/plain',
+    'uri'           => 'text/x-uri',
+    'url'           => 'text/x-uri',
+    'vcf'           => 'text/x-vcalendar',
+    'vcs'           => 'text/x-vcalendar',
+    'vct'           => 'text/x-vcard',
+    'vfb'           => 'text/calendar',
+    'vob'           => 'video/mpeg',
+    'wav'           => 'audio/x-wav',
+    'wmf'           => 'image/x-wmf',
+    'wml'           => 'text/vnd.wap.wml',
+    'xla'           => 'application/vnd.ms-excel',
+    'xlc'           => 'application/vnd.ms-excel',
+    'xld'           => 'application/vnd.ms-excel',
+    'xll'           => 'application/vnd.ms-excel',
+    'xlm'           => 'application/vnd.ms-excel',
+    'xls'           => 'application/vnd.ms-excel',
+    'xlt'           => 'application/vnd.ms-excel',
+    'xlw'           => 'application/vnd.ms-excel',
+    'xm'            => 'audio/x-mod',
+    'xmi'           => 'text/x-xmi',
+    'xml'           => 'text/xml',
+    'xul'           => 'application/vnd.mozilla.xul+xml',
+    'z'             => 'application/x-compress',
+    'zip'           => 'application/zip',
+    'zoo'           => 'application/x-zoo',
+);
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/includes/definitions/navIcons.php gallery-1.5.2/includes/definitions/navIcons.php
--- gallery-1.5.1/includes/definitions/navIcons.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/includes/definitions/navIcons.php	2005-12-09 00:32:40.000000000 +0100
@@ -0,0 +1,15 @@
+<?php /* $Id: navIcons.php,v 1.1 2005/12/08 23:32:40 jenst Exp $ */ ?>
+<?php
+
+if ($gallery->direction == "ltr") {
+    $fpImgUrl= getImagePath('icons/nav_first.gif');
+    $ppImgUrl= getImagePath('icons/nav_prev.gif');
+    $npImgUrl= getImagePath('icons/nav_next.gif');
+    $lpImgUrl= getImagePath('icons/nav_last.gif');
+} else {
+    $fpImgUrl= getImagePath('icons/nav_last.gif');
+    $ppImgUrl= getImagePath('icons/nav_next.gif');
+    $npImgUrl= getImagePath('icons/nav_prev.gif');
+    $lpImgUrl= getImagePath('icons/nav_first.gif');
+}
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/includes/definitions/services.php gallery-1.5.2/includes/definitions/services.php
--- gallery-1.5.1/includes/definitions/services.php	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/definitions/services.php	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: services.php,v 1.1.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: services.php,v 1.3.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 ?>
 <?php
@@ -42,7 +42,7 @@
     'mpush'       => array(
 	'name'    => 'mPUSH',
 	'url'     => 'http://www.mpush.cc/',
-	'description' => _("mPUSH is a photo service that adds the ability to send thumbnail images to your, or a friend's, cellphone for a small fee.")
+	'description' => gTranslate('common', "mPUSH is a photo service that adds the ability to send thumbnail images to your, or a friend's, cellphone for a small fee.")
     )
 );
 ?>
diff -Naur gallery-1.5.1/includes/slideshow/applet.cfg gallery-1.5.2/includes/slideshow/applet.cfg
--- gallery-1.5.1/includes/slideshow/applet.cfg	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/slideshow/applet.cfg	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: applet.cfg,v 1.2.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: applet.cfg,v 1.3.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 ?>
 
diff -Naur gallery-1.5.1/includes/slideshow/applet.inc gallery-1.5.2/includes/slideshow/applet.inc
--- gallery-1.5.1/includes/slideshow/applet.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/slideshow/applet.inc	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: applet.inc,v 1.9.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: applet.inc,v 1.10.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/includes/slideshow/high.inc gallery-1.5.2/includes/slideshow/high.inc
--- gallery-1.5.1/includes/slideshow/high.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/slideshow/high.inc	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: high.inc,v 1.17.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: high.inc,v 1.18.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/includes/slideshow/low.inc gallery-1.5.2/includes/slideshow/low.inc
--- gallery-1.5.1/includes/slideshow/low.inc	2005-09-13 00:40:46.000000000 +0200
+++ gallery-1.5.2/includes/slideshow/low.inc	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: low.inc,v 1.15.2.1 2005/09/12 22:40:46 dmolavi Exp $
+ * $Id: low.inc,v 1.16.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 
 /*
diff -Naur gallery-1.5.1/includes/stats/stats.inc.php gallery-1.5.2/includes/stats/stats.inc.php
--- gallery-1.5.1/includes/stats/stats.inc.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/includes/stats/stats.inc.php	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: stats.inc.php,v 1.10.2.1 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: stats.inc.php,v 1.12.2.1 2006/01/06 06:31:36 jenst Exp $
  *
  */
 ?>
@@ -104,11 +104,12 @@
 /*	'svo'		=> array('type' => 'checkbox',
 				 'default' => '',
 				 'text' => _("Show the number of 'simplified' votes an image has")),
-*/
 	'sav'		=> array('type' => 'checkbox',
 				 'default' => '',
 				 'text' => _("Show the add vote link")),
+*/
 	'sao'		=> array('type' => 'checkbox',
+
 				 'default' => '',
 				 'text' => _("Show the album owners")),
 	'stm'		=> array('type' => 'checkbox',
diff -Naur gallery-1.5.1/index.php gallery-1.5.2/index.php
--- gallery-1.5.1/index.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/index.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: index.php,v 1.72.2.3 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: index.php,v 1.78.2.2 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -28,7 +28,7 @@
 global $GALLERY_MODULENAME;
 global $MOS_GALLERY_PARAMS;
 
-// Mambo calls index.php directly for popups - we need to make
+// Mambo / Joomla calls index.php directly for popups - we need to make
 // sure that the option var has been extracted into the environment
 // otherwise it just won't work.
 $option = isset($_REQUEST['option']) ? $_REQUEST['option'] : null;
@@ -66,6 +66,12 @@
 		$mamboDir = getcwd();
 		$GALLERY_EMBEDDED_INSIDE = 'mambo';
 		$GALLERY_EMBEDDED_INSIDE_TYPE = 'mambo';
+
+		if (isset($GLOBALS['_VERSION']->PRODUCT) && 
+		  $GLOBALS['_VERSION']->PRODUCT == 'Joomla!') {
+		    $GALLERY_EMBEDDED_INSIDE = 'joomla';
+		    $GALLERY_EMBEDDED_INSIDE_TYPE = 'joomla';
+		}
 	}
 	elseif (isset($GLOBALS['phpbb_root_path'])) {
 		$GALLERY_EMBEDDED_INSIDE='phpBB2';
@@ -104,6 +110,7 @@
 		       "add_photos.php",
 		       "add_photos_frame.php",
 		       "admin-page.php",
+		       "administer_startpage.php",
 		       "album_permissions.php",
 		       "albums.php",
 		       "block-random.php",
@@ -114,6 +121,7 @@
 		       "delete_photo.php",
 		       "delete_user.php",
 		       "do_command.php",
+		       "download.php",
 		       "ecard_form.php",
 		       "edit_appearance.php",
 		       "edit_caption.php",
@@ -123,7 +131,10 @@
 		       "extra_fields.php",
 		       "gallery_remote.php",
 		       "gallery_remote2.php",
+		       "help/imagemap.php",
+		       "help/metadataOnUpload.php",
 		       "highlight_photo.php",
+		       "imagemap.php",
 		       "lib/colorpicker.php",
 		       "login.php",
 		       "manage_users.php",
diff -Naur gallery-1.5.1/init.php gallery-1.5.2/init.php
--- gallery-1.5.1/init.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/init.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,29 +1,29 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: init.php,v 1.132.2.2 2005/09/12 22:40:44 dmolavi Exp $
- */
+ * $Id: init.php,v 1.135.2.2 2006/01/06 06:31:30 jenst Exp $
+*/
 ?>
 <?php
 
 // Hack Prevention
-$sensitiveList = array('gallery', 'GALLERY_EMBEDDED_INSIDE', 'GALLERY_EMBEDDED_INSIDE_TYPE', 'GLOBALS', 'modpath');
+$sensitiveList = array('gallery', 'GALLERY_EMBEDDED_INSIDE', 'GALLERY_EMBEDDED_INSIDE_TYPE', 'GLOBALS');
 foreach ($sensitiveList as $sensitive) {
     if (!empty($_REQUEST[$sensitive])) {
         print _("Security violation") ."\n";
@@ -59,23 +59,23 @@
     include_once(dirname(__FILE__) . "/config.php");
 
     /* Here we set a default execution time limit for the entire Gallery script
-    * the value is defined by the user during setup, so we want it inside the
-    * 'if config.php' block.  If the user increases from the default, this will cover
-    * potential execution issues on slow systems, or installs with gigantic galleries.
-    * By calling set_time_limit() again further in the script (in locations we know can
-    * take a long time) we reset the counter to 0 so that a longer execution can occur.
+     * the value is defined by the user during setup, so we want it inside the
+     * 'if config.php' block.  If the user increases from the default, this will cover
+     * potential execution issues on slow systems, or installs with gigantic galleries.
+     * By calling set_time_limit() again further in the script (in locations we know can
+     * take a long time) we reset the counter to 0 so that a longer execution can occur.
     */
     set_time_limit($gallery->app->timeLimit);
 }
 
 /*
-*  We TRY to make sure that register_globals is disabled.  If the user has not disabled
-*  register_globals in their php.ini, we try to emulate its functionality by unsetting all
-*  variables from $_REQUEST.  Some *Nuke systems apparently do not function well with this
-*  emulation, so we have given users a method to opt-out.
-*
-*  WE DO NOT OFFICIALLY SUPPORT THE USE OF skipRegisterGlobals BECAUSE IT COULD POTENTIALLY
-*  OPEN Gallery TO SECURITY RISKS!  This is for advanced users only.
+ *  We TRY to make sure that register_globals is disabled.  If the user has not disabled
+ *  register_globals in their php.ini, we try to emulate its functionality by unsetting all
+ *  variables from $_REQUEST.  Some *Nuke systems apparently do not function well with this
+ *  emulation, so we have given users a method to opt-out.
+ *
+ *  WE DO NOT OFFICIALLY SUPPORT THE USE OF skipRegisterGlobals BECAUSE IT COULD POTENTIALLY
+ *  OPEN Gallery TO SECURITY RISKS!  This is for advanced users only.
 */
 if (empty($gallery->app->skipRegisterGlobals) || $gallery->app->skipRegisterGlobals != "yes") {
     $register_globals = @ini_get('register_globals');
@@ -93,13 +93,13 @@
 }
 
 /*
-** Now we can catch if were are in GeekLog
-** We also include the common lib file as we need it in initLanguage()
+ * Now we can catch if were are in GeekLog
+ * We also include the common lib file as we need it in initLanguage()
+ *
+ * If the old example path is still set, remove it.
 */
-
-// If the old example path is still set, remove it.
 if (!empty($gallery->app->geeklog_dir) && $gallery->app->geeklog_dir == "/path/to/geeklog/public_html") {
-    $gallery->app->geeklog_dir = "";
+    $gallery->app->geeklog_dir = '';
 }
 
 // Verify that the geeklog_dir isn't overwritten with a remote exploit
@@ -117,8 +117,7 @@
     require_once(GEEKLOG_DIR . '/lib-common.php');
 }
 
-if (isset($gallery->app->devMode) &&
-$gallery->app->devMode == "yes") {
+if (isset($gallery->app->devMode) && $gallery->app->devMode == 'yes') {
     ini_set("display_errors", "1");
     error_reporting(E_ALL);
 } else {
@@ -126,23 +125,23 @@
 }
 
 /*
-* Detect if we're running under SSL and adjust the URL accordingly.
+ * Detect if we're running under SSL and adjust the URL accordingly.
 */
 if(isset($gallery->app)) {
     if (isset($_SERVER["HTTPS"] ) && stristr($_SERVER["HTTPS"], "on")) {
         $gallery->app->photoAlbumURL =
-        eregi_replace("^http:", "https:", $gallery->app->photoAlbumURL);
+            eregi_replace("^http:", "https:", $gallery->app->photoAlbumURL);
         $gallery->app->albumDirURL =
-        eregi_replace("^http:", "https:", $gallery->app->albumDirURL);
+            eregi_replace("^http:", "https:", $gallery->app->albumDirURL);
     } else {
         $gallery->app->photoAlbumURL =
-        eregi_replace("^https:", "http:", $gallery->app->photoAlbumURL);
+            eregi_replace("^https:", "http:", $gallery->app->photoAlbumURL);
         $gallery->app->albumDirURL =
-        eregi_replace("^https:", "http:", $gallery->app->albumDirURL);
+            eregi_replace("^https:", "http:", $gallery->app->albumDirURL);
     }
 
     /*
-    * We have a Coral (http://www.scs.cs.nyu.edu/coral/) request coming in, adjust outbound links
+     * We have a Coral (http://www.scs.cs.nyu.edu/coral/) request coming in, adjust outbound links
     */
     if(isset($_SERVER['HTTP_USER_AGENT']) && strstr($_SERVER['HTTP_USER_AGENT'], 'CoralWebPrx')) {
         if (ereg("^(http://[^:]+):(\d+)(.*)$", $gallery->app->photoAlbumURL)) {
@@ -158,15 +157,14 @@
 }
 
 /*
-* Turn off magic quotes runtime as they interfere with saving and
-* restoring data from our file-based database files
+ * Turn off magic quotes runtime as they interfere with saving and
+ * restoring data from our file-based database files
 */
 set_magic_quotes_runtime(0);
 
 /* Load classes and session information
-** Note: Some classes and libs are loaded in util.php
+ * Note: Some classes and libs are loaded in util.php
 */
-
 require(dirname(__FILE__) . "/classes/Album.php");
 require(dirname(__FILE__) . "/classes/Image.php");
 require(dirname(__FILE__) . "/classes/AlbumItem.php");
@@ -204,7 +202,7 @@
                 /* pre 0.7.1 */
                 include_once(dirname(__FILE__) . "/classes/postnuke/UserDB.php");
                 include_once(dirname(__FILE__) . "/classes/postnuke/User.php");
-    
+
                 $gallery->database{"db"} = $GLOBALS['dbconn'];
                 $gallery->database{"prefix"} = $GLOBALS['pnconfig']['prefix'] . "_";
             }
@@ -213,14 +211,14 @@
                 include_once(dirname(__FILE__) . "/classes/postnuke0.7.1/UserDB.php");
                 include_once(dirname(__FILE__) . "/classes/postnuke0.7.1/User.php");
             }
-    
+
             /* Load our user database (and user object) */
             $gallery->userDB = new PostNuke_UserDB;
-    
+
             if (isset($GLOBALS['user'])) {
                 $gallery->session->username = $GLOBALS['user'];
             }
-    
+
             if (isset($GLOBALS['user']) && is_user($GLOBALS['user'])) {
                 $user_info = getusrinfo($GLOBALS['user']);
                 $gallery->session->username = $user_info["uname"];
@@ -233,13 +231,13 @@
             include_once(dirname(__FILE__) . "/classes/database/mysql/Database.php");
             include_once(dirname(__FILE__) . "/classes/nuke5/UserDB.php");
             include_once(dirname(__FILE__) . "/classes/nuke5/User.php");
-    
+
             $gallery->database{"nuke"} = new MySQL_Database(
-                $GLOBALS['dbhost'],
-                $GLOBALS['dbuname'],
-                $GLOBALS['dbpass'],
-                $GLOBALS['dbname']);
-    
+            $GLOBALS['dbhost'],
+            $GLOBALS['dbuname'],
+            $GLOBALS['dbpass'],
+            $GLOBALS['dbname']);
+
             if (isset($GLOBALS['user_prefix'])) {
                 $gallery->database{"user_prefix"} = $GLOBALS['user_prefix'] . '_';
             }
@@ -247,33 +245,33 @@
                 $gallery->database{"user_prefix"} = 'nuke_';
             }
             $gallery->database{"prefix"} = $GLOBALS['prefix'] . '_';
-    
+
             /* PHP-Nuke changed its "users" table field names in v.6.5 */
             /* Select the appropriate field names */
             if (isset($Version_Num) && $Version_Num >= "6.5") {
                 $gallery->database{'fields'} = array (
-		    'name'  => 'name',
-                    'uname' => 'username',
-                    'email' => 'user_email',
-                    'uid'   => 'user_id');
+                'name'  => 'name',
+                'uname' => 'username',
+                'email' => 'user_email',
+                'uid'   => 'user_id');
             }
             else {
                 $gallery->database{'fields'} = array (
-		    'name'  => 'name',
-                    'uname' => 'uname',
-                    'email' => 'email',
-                    'uid'   => 'uid');
+                'name'  => 'name',
+                'uname' => 'uname',
+                'email' => 'email',
+                'uid'   => 'uid');
             }
-    
+
             /* Load our user database (and user object) */
             $gallery->userDB = new Nuke5_UserDB;
             if ($GLOBALS['user']) {
                 $gallery->session->username = $GLOBALS['user'];
             }
-    
+
             if (isset($GLOBALS['admin']) && is_admin($GLOBALS['admin'])) {
                 include_once(dirname(__FILE__) . "/classes/nuke5/AdminUser.php");
-    
+
                 $gallery->user = new Nuke5_AdminUser($GLOBALS['admin']);
                 $gallery->session->username = $gallery->user->getUsername();
             }
@@ -283,19 +281,19 @@
                 $gallery->user = $gallery->userDB->getUserByUsername($gallery->session->username);
             }
             break;
-            case 'nsnnuke':
+        case 'nsnnuke':
             /* we're in nsnnuke */
             include_once(dirname(__FILE__) . "/classes/Database.php");
             include_once(dirname(__FILE__) . "/classes/database/mysql/Database.php");
             include_once(dirname(__FILE__) . "/classes/nsnnuke/UserDB.php");
             include_once(dirname(__FILE__) . "/classes/nsnnuke/User.php");
-    
+
             $gallery->database{"nsnnuke"} = new MySQL_Database(
-                $GLOBALS['dbhost'],
-                $GLOBALS['dbuname'],
-                $GLOBALS['dbpass'],
-                $GLOBALS['dbname']);
-    
+            $GLOBALS['dbhost'],
+            $GLOBALS['dbuname'],
+            $GLOBALS['dbpass'],
+            $GLOBALS['dbname']);
+
             if (isset($GLOBALS['user_prefix'])) {
                 $gallery->database{"user_prefix"} = $GLOBALS['user_prefix'] . '_';
             }
@@ -304,23 +302,23 @@
             }
             $gallery->database{"prefix"} = $GLOBALS['prefix'] . '_';
             $gallery->database{"admin_prefix"} = $GLOBALS['prefix'] . 'b_';
-    
+
             /* Select the appropriate field names */
             $gallery->database{'fields'} = array (
-		'name'  => 'realname',
-		'uname' => 'username',
-		'email' => 'user_email',
-		'uid'   => 'user_id');
-    
+                'name'  => 'realname',
+                'uname' => 'username',
+                'email' => 'user_email',
+                'uid'   => 'user_id');
+
             /* Load our user database (and user object) */
             $gallery->userDB = new NsnNuke_UserDB;
             if ($GLOBALS['user']) {
                 $gallery->session->username = $GLOBALS['user'];
             }
-    
+
             if (isset($GLOBALS['admin']) && is_admin($GLOBALS['admin'])) {
                 include_once(dirname(__FILE__) . "/classes/nsnnuke/AdminUser.php");
-    
+
                 $gallery->user = new NsnNuke_AdminUser($GLOBALS['admin']);
                 $gallery->session->username = $gallery->user->getUsername();
             }
@@ -331,16 +329,28 @@
             }
             break;
         case 'phpBB2':
+        //print_r($GLOBALS['board_config']['version']);
             include_once(dirname(__FILE__) . "/classes/Database.php");
             include_once(dirname(__FILE__) . "/classes/database/mysql/Database.php");
             include_once(dirname(__FILE__) . "/classes/phpbb/UserDB.php");
             include_once(dirname(__FILE__) . "/classes/phpbb/User.php");
-            $gallery->database{"phpbb"} = new MySQL_Database(
-		$GLOBALS['dbhost'],
-		$GLOBALS['dbuser'],
-		$GLOBALS['dbpasswd'],
-		$GLOBALS['dbname']);
-//	    $gallery->database{"phpbb"}->setTablePrefix($GLOBALS['table_prefix']);
+
+            if(!isset($GLOBALS['board_config']['version']) ||
+              $GLOBALS['board_config']['version'] < '.0.17' ) {
+              	$dbhost = $GLOBALS['dbhost'];
+            	$dbuser = $GLOBALS['dbuser'];
+            	$dbpasswd = $GLOBALS['dbpasswd'];
+            	$dbname = $GLOBALS['dbname'];
+            } else {
+            	$dbhost = $GLOBALS['db']->server;
+            	$dbuser = $GLOBALS['db']->user;
+            	$dbpasswd = $GLOBALS['db']->password;
+            	$dbname = $GLOBALS['db']->dbname;
+            }
+
+            $gallery->database{"phpbb"} = new MySQL_Database($dbhost, $dbuser, $dbpasswd, $dbname);
+
+            //	    $gallery->database{"phpbb"}->setTablePrefix($GLOBALS['table_prefix']);
             $gallery->database{"prefix"} = $GLOBALS['table_prefix'];
             /* Load our user database (and user object) */
             $gallery->userDB = new phpbb_UserDB;
@@ -353,11 +363,12 @@
             }
             break;
         case 'mambo':
+        case 'joomla':
             include_once(dirname(__FILE__) . '/classes/Database.php');
             include_once(dirname(__FILE__) . '/classes/database/mysql/Database.php');
             include_once(dirname(__FILE__) . '/classes/mambo/UserDB.php');
             include_once(dirname(__FILE__) . '/classes/mambo/User.php');
-    
+
             global $mosConfig_host;
             global $mosConfig_user;
             global $mosConfig_password;
@@ -365,7 +376,7 @@
             global $mosConfig_dbprefix;
             global $mosConfig_lang;
             global $my;
-    
+
             /* Session info about Mambo are available when we open a Popup from Mambo,
             ** but content isnt parsed through Mambo
             */
@@ -393,23 +404,24 @@
                 echo 'init.php: ' . _("Gallery seems to be inside Mambo, but we couldn't get the necessary info.");
                 exit;
             }
-    
+
             $gallery->database{'mambo'} = new MySQL_Database($mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db);
             $gallery->database{'user_prefix'} = $mosConfig_dbprefix;
             $gallery->database{'fields'} =
-            array ('name'  => 'name',
+            array (
+                'name'  => 'name',
                 'uname' => 'username',
                 'email' => 'email',
                 'uid'   => 'id',
                 'gid'   => 'gid');
-    
+
             $gallery->userDB = new Mambo_UserDB;
-    
+
             /* Check if user is logged in, else explicit log him/her out */
             if (!empty($my->username)) {
                 $gallery->session->username = $my->username;
                 $gallery->user = $gallery->userDB->getUserByUsername($gallery->session->username);
-    
+
                 /* We were loaded correctly through Mambo, so we dont need/want "old" session infos */
             } elseif (!empty($gallery->session->username) && empty($my)) {
                 /* This happens, when we are in a Popup */
@@ -419,10 +431,11 @@
                 unset($gallery->session->username);
                 unset($gallery->session->language);
             }
-    
+
             /* For proper Mambo breadcrumb functionality, we need
-            * to know the Item ID of the Gallery component's menu
-            * item. +2 DB calls. <sigh> */
+             * to know the Item ID of the Gallery component's menu
+             * item. +2 DB calls. <sigh>
+            */
             $db = $gallery->database{'mambo'};
             $results = $db->query('SELECT id FROM ' . $gallery->database{'user_prefix'} . "components WHERE link='option=$GALLERY_MODULENAME'");
             $row = $db->fetch_row($results);
@@ -431,12 +444,12 @@
             $row = $db->fetch_row($results);
             $MOS_GALLERY_PARAMS['itemid'] = $row[0]; // pick the first one
             break;
-            case 'GeekLog':
+        case 'GeekLog':
             // Cheat, and grab USER information from the global session variables.
             // Hey, it's faster and easier than reading them out of the database.
-    
+
             global $_USER;
-    
+
             /* Check if user is logged in, else explicit log him/her out */
             if (isset($_USER["username"])) {
                 $gallery->session->username = $_USER['username'];
@@ -444,15 +457,15 @@
                 unset($gallery->session->username);
                 unset($gallery->session->language);
             }
-    
+
             /* Implement GeekLogUserDB and User class. */
             require(dirname(__FILE__) . "/classes/geeklog/UserDB.php");
             require(dirname(__FILE__) . "/classes/geeklog/User.php");
-    
+
             /* Load GeekLog user database (and user object) */
-    
+
             $gallery->userDB = new Geeklog_UserDB;
-    
+
             /* Load their user object with their username as the key */
             if (isset($gallery->session->username)) {
                 $gallery->user = $gallery->userDB->getUserByUsername($gallery->session->username);
@@ -464,13 +477,13 @@
             include_once(dirname(__FILE__) . "/classes/database/mysql/Database.php");
             include_once(dirname(__FILE__) . "/classes/nsnnuke/UserDB.php");
             include_once(dirname(__FILE__) . "/classes/nsnnuke/User.php");
-    
+
             $gallery->database{"cpgnuke"} = new MySQL_Database(
             $GLOBALS['dbhost'],
             $GLOBALS['dbuname'],
             $GLOBALS['dbpass'],
             $GLOBALS['dbname']);
-    
+
             if (isset($GLOBALS['user_prefix'])) {
                 $gallery->database{"user_prefix"} = $GLOBALS['prefix'] . '_';
             }
@@ -479,28 +492,28 @@
             }
             $gallery->database{"prefix"} = $GLOBALS['prefix'] . '_';
             $gallery->database{"admin_prefix"} = $GLOBALS['prefix'] . 'b_';
-    
+
             /* Select the appropriate field names */
             $gallery->database{'fields'} =
-            array ('name'  => 'name',
-            'uname' => 'username',
-            'email' => 'user_email',
-            'uid'   => 'user_id');
-    
+            array (
+                'name'  => 'name',
+                'uname' => 'username',
+                'email' => 'user_email',
+                'uid'   => 'user_id');
+
             /* Load our user database (and user object) */
             $gallery->userDB = new CPGNuke_UserDB;
             if (is_user()) {
                 $gallery->session->username = $userinfo['username'];
                 $gallery->user = $gallery->userDB->getUserByUsername($gallery->session->username);
             }
-    
+
             if (is_admin()) {
                 include_once(dirname(__FILE__) . "/classes/nsnnuke/AdminUser.php");
-    
+
                 $gallery->user = new CPGNuke_AdminUser();
                 $gallery->session->username = $gallery->user->getUsername();
             }
-    
             break;
     }
 }
@@ -528,7 +541,7 @@
 }
 
 /* Now we init the language
-** Its done after initializing the user.
+ * Its done after initializing the user.
 */
 initLanguage();
 
diff -Naur gallery-1.5.1/js/fitToWindow.js.php gallery-1.5.2/js/fitToWindow.js.php
--- gallery-1.5.1/js/fitToWindow.js.php	2005-06-21 12:11:46.000000000 +0200
+++ gallery-1.5.2/js/fitToWindow.js.php	2006-01-18 19:06:05.000000000 +0100
@@ -5,49 +5,45 @@
 ** These values define the margin between your image and the navigation and or a left block.
 ** Change to your suites.
 */
-	var marginLeft = 100;
-	var marginTop  = 275;
+    var marginLeft = 100;
+    var marginTop  = 275;
 
 /* 
 ** Dont touch
 ** Here are the dimensions of the original image
 */
-	var imagewidth  = <?php echo $imageWidth; ?>;
-	var imageheight = <?php echo $imageHeight; ?>;
-	var imageratio  = imagewidth/imageheight;
+    var imagewidth  = <?php echo $imageWidth; ?>;
+    var imageheight = <?php echo $imageHeight; ?>;
+    var imageratio  = imagewidth/imageheight;
 
 /* 
 ** Get the window width. NS and IE use different methods 
 */
-
-function windowWidth()
-{
- if (window.innerWidth) {
+function windowWidth() {
+    if (window.innerWidth) {
 	return window.innerWidth;
- }
- else if (document.body && document.body.offsetWidth) {
-	return document.body.offsetWidth;
- }
- else {
-	return 0;
- }
+    }
+     else if (document.documentElement.clientWidth) {
+        return document.documentElement.clientWidth;
+    }
+    else {
+	return document.body.clientWidth;
+    }
 }
 
 /* 
 ** Get the window height. NS and IE use different methods 
 */
-
-function windowHeight()
-{
- if (window.innerHeight) {
+function windowHeight() {
+    if (window.innerHeight) {
 	return window.innerHeight;
- }
- else if (document.body && document.body.offsetHeight) {
-	return document.body.offsetHeight;
- }
- else {
-	return 0;
- }
+     }
+    else if (document.documentElement.clientHeight) {
+	return document.documentElement.clientHeight;
+    }
+    else {
+	return document.body.clientHeight;
+    }
 }
 
 /*
@@ -55,7 +51,6 @@
 ** save the windowdimensions.
 */
 function calculateNewSize(){
-
     windowWidth = windowWidth();
     windowHeight= windowHeight();
 
@@ -64,41 +59,40 @@
 
     if ( imagewidth > (windowWidth - marginLeft)) {
 	newwidth = windowWidth - marginLeft;
-	newheight = newwidth / imageratio;
+	newheight = parseInt(newwidth / imageratio);
     }
 
     if ( newheight > (windowHeight - marginTop)) {
 	newheight = windowHeight - marginTop;
-	newwidth = newheight * imageratio;
+	newwidth = parseInt( newheight * imageratio);
     }
 
     setReducedSize();
 }
 
 function setReducedSize() {
-	document.photo_j.height = newheight;
-	document.photo_j.width = newwidth;
-	if (document.frameRR) {
-		document.frameRR.height = newheight;
-		document.frameLL.height = newheight;
-	}
+    document.getElementById('galleryImage').height = newheight;
+    document.getElementById('galleryImage').width = newwidth;
+    if (document.getElementsByName('frameRR')) {
+	document.getElementsByName('frameRR').height = newheight;
+	document.getElementsByName('frameLL').height = newheight;
+    }
 }
 
 function sizeChange() {
+    this.full = false;
 
-	this.full = false;
-
-	this.toggle = function toggle() {
-		if (this.full == true) {
-			this.full = false;
-			setReducedSize();
-		} else {
-			document.photo_j.height = imageheight;
-			document.photo_j.width = imagewidth;
+    this.toggle = function toggle() {
+	if (this.full == true) {
+	    this.full = false;
+	    setReducedSize();
+	} else {
+	    document.getElementById('galleryImage').height = imageheight;
+	    document.getElementById('galleryImage').width = imagewidth;
 
-			this.full = true;
-		}
+	    this.full = true;
 	}
+    }
 }
 
 sizeChange = new sizeChange();
diff -Naur gallery-1.5.1/js/imagemap.js gallery-1.5.2/js/imagemap.js
--- gallery-1.5.1/js/imagemap.js	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/js/imagemap.js	2005-12-09 15:59:12.000000000 +0100
@@ -0,0 +1,164 @@
+  var minX;
+  var minY;
+  var width;
+  var height;
+
+  var xVals = new Array();
+  var yVals = new Array();
+  var imgxVals = new Array();
+  var imgyVals = new Array();
+
+  var jg;
+  function initPaintArea() {
+      jg = new jsGraphics("myCanvas");
+      jg.setColor("#FFFFFF");
+
+      getMyPicCoords();
+      /* Update map coords */
+      for(i=0; i< map.length; ++i) {
+          for (j=0; j< map[i]['x_coords'].length; ++j) {
+              map[i]['x_coords'][j] = map[i]['x_coords'][j] + minX;
+              map[i]['y_coords'][j] = map[i]['y_coords'][j] + minY;
+          }
+      }
+  }
+
+    
+  // find out if ie runs in quirks mode
+  var docEl = (typeof document.compatMode != "undefined" && document.compatMode != "BackCompat")? "documentElement" : "body";
+
+  // register event
+  // capture it for nc 4x (ok it's a dino)
+  function init_mousemove() {
+      if(document.layers) document.captureEvents(Event.MOUSEMOVE);
+      document.onmousemove = dpl_mouse_move;
+      document.onmousedown = dpl_mouse_click;
+  }
+
+  function dpl_mouse_move(e) {
+
+      // position where mousemove fired
+      //
+      var xPos    =  e? e.pageX : window.event.x;
+      var yPos    =  e? e.pageY : window.event.y;
+
+      // for ie add scroll position
+      //
+      if (document.all && !document.captureEvents) {
+          xPos    += document[docEl].scrollTop;
+          yPos    += document[docEl].scrollTop;
+      }
+
+      var imgPosX = xPos - minX;
+      var imgPosY = yPos - minY;
+
+      el = document.getElementById('current_position');
+      // display position
+      if(!(xPos < minX || yPos < minY || xPos > minX+width || yPos > minY+height)) {
+          el.style.backgroundColor='green';
+      } else {
+          el.style.backgroundColor='red';
+          imgPosX = 0;
+          imgPosY = 0;
+      }
+
+      // display position
+      document.areas.ausg.value    =  "Left = " + xPos + " : Top = " + yPos;
+
+      // for the dino pass event
+      if (document.layers) routeEvent(e);
+  }
+  
+  function dpl_mouse_click(e) {
+      getMyPicCoords();
+      // position where mousemove fired
+      var xPos    =  e? e.pageX : window.event.x;
+      var yPos    =  e? e.pageY : window.event.y;
+
+      // for ie add scroll position
+      //
+      if (document.all && !document.captureEvents) {
+          xPos    += document[docEl].scrollTop;
+          yPos    += document[docEl].scrollTop;
+      }
+
+      if(xPos < minX || yPos < minY || xPos > minX+width || yPos > minY+height) {
+          // do nothing
+      }
+      else {
+          var imgPosX = xPos - minX;
+          var imgPosY = yPos - minY;
+
+          imgxVals.push(imgPosX);
+          imgyVals.push(imgPosY);
+          xVals.push(xPos);
+          yVals.push(yPos);
+          document.areas.xvals.value    = imgxVals;
+          document.areas.yvals.value    = imgyVals;
+          // draw
+
+          jg.clear();
+          jg.drawPolygon(xVals, yVals);
+          jg.paint();
+      }
+
+      // for the dino pass event
+      if (document.layers) routeEvent(e);
+
+  }
+
+  function Int(d_x, d_y) {
+        return isNaN(d_y = parseInt(d_x))? 0 : d_y;
+  };
+
+  function getMyPicCoords() {
+      element = document.getElementById('myPic');
+    
+      width   = element.width;
+      height  = element.height;
+
+      minX = minY = 0; //global helper vars
+      while(element) {
+          minX += Int(element.offsetLeft);
+          minY += Int(element.offsetTop);
+          element = element.offsetParent || null;
+      }
+  };
+
+    
+  function resetAndClear() {
+      jg.clear();
+      xVals = new Array();
+      yVals = new Array();
+      imgxVals = new Array();
+      imgyVals = new Array();
+      document.areas.xvals.value    =  xVals;
+      document.areas.yvals.value    =  yVals;
+  }
+  
+  function updatePictureAndArea () {
+      el = document.getElementById('imageareas');
+      areaurl = document.getElementById('areaurl');
+      areatext = document.getElementById('areatext');
+      selected = 0;
+      count_selected = 0;
+
+      jg.clear();
+      for (i = 0; i < el.length; ++i) {
+          if (el.options[i].selected == true) {
+              area_index = el.options[i].value;
+              jg.drawPolygon(map[area_index]['x_coords'], map[area_index]['y_coords']);
+              selected = area_index;
+              count_selected++;
+          }
+      }
+      jg.paint();
+      if (count_selected == 1) {
+          areaurl.value = map[selected]['url'];
+          areatext.value = map[selected]['hover_text'];
+      }
+      else {
+          areaurl.value = '';
+          areatext.value = '';
+      }
+  }
diff -Naur gallery-1.5.1/js/multifile.js.php gallery-1.5.2/js/multifile.js.php
--- gallery-1.5.1/js/multifile.js.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/js/multifile.js.php	2005-12-30 19:38:13.000000000 +0100
@@ -0,0 +1,162 @@
+<script language="JavaScript" type="text/javascript">
+/**
+ *
+ * Licence:
+ *   Use this however/wherever you like, just don't blame me if it breaks anything.
+ *
+ * Credit:
+ *   If you're nice, you'll leave this bit:
+ *
+ *   Class by Stickman -- http://www.the-stickman.com
+ *      with thanks to:
+ *      [for Safari fixes]
+ *         Luis Torrefranca -- http://www.law.pitt.edu
+ *         and
+ *         Shawn Parker & John Pennypacker -- http://www.fuzzycoconut.com
+ *      [for duplicate name bug]
+ *         'neal'
+ */
+function MultiSelector(list_target, max, fieldname, withCaption){
+
+    // Where to write the list
+    this.list_target = list_target;
+
+    // How many elements?
+    this.count = 0;
+
+    // Is there a maximum?
+    if( max ){
+        this.max = max;
+    } else {
+        this.max = -1;
+    };
+    this.fieldname = fieldname;
+    
+    /**
+    * Add a new file input element
+    */
+    this.addElement = function(element){
+
+        // Make sure it's a file input element
+        if( element.tagName == 'INPUT' && element.type == 'file' ){
+
+            // Element name -- what number am I?
+            element.name = this.fieldname + '[]';
+
+            // Add reference to this object
+            element.multi_selector = this;
+
+            // What to do when a file is selected
+            element.onchange = function(){
+
+                // New file input
+                var new_element = document.createElement('input');
+                new_element.type = 'file';
+
+                // Add new element
+                this.parentNode.insertBefore(new_element, this);
+
+                // Apply 'update' to element
+                this.multi_selector.addElement(new_element);
+
+                // Update list
+                this.multi_selector.addListRow(this);
+
+                // Hide this: we can't use display:none because Safari doesn't like it
+                this.style.position = 'absolute';
+                this.style.left = '-1000px';
+
+            };
+            // If we've reached maximum number, disable input element
+            if( this.max != -1 && this.count >= this.max ){
+                element.disabled = true;
+            };
+
+            // File element counter
+            this.count++;
+            // Most recent element
+            this.current_element = element;
+
+        } else {
+            // This can only be applied to file input elements!
+            alert('Error: not a file input element');
+        };
+
+    };
+
+    /**
+    * Add a new row to the list of files
+    */
+
+    this.addListRow = function( element ){
+
+        var line = document.createElement('div');
+        line.style.textAlign='right';
+        if(! (this.count % 2)) {
+        	line.style.backgroundColor='white';
+        }
+        var filenameCaptionDiv = document.createElement('div');
+        filenameCaptionDiv.style.textAlign='left';
+
+        line.appendChild(filenameCaptionDiv);
+
+        // Delete button
+        var deleteButton = document.createElement('input');
+        deleteButton.type = 'button';
+        deleteButton.value = '<?php echo _("Delete"); ?>';
+
+        // Caption field
+        var caption = document.createElement('input');
+        caption.type = 'text';
+        caption.size = 60;
+        caption.name = 'usercaption[]';
+
+	// horizontal line
+	var hr = document.createElement('hr');
+
+        // References
+        line.element = element;
+
+        // Delete function
+        deleteButton.onclick= function(){
+
+            // Remove element from form
+            this.parentNode.element.parentNode.removeChild(this.parentNode.element);
+
+            // Remove this row from the list
+            this.parentNode.parentNode.removeChild(this.parentNode);
+
+            // Decrement counter
+            this.parentNode.element.multi_selector.count--;
+
+            // Re-enable input element (if it's disabled)
+            this.parentNode.element.multi_selector.current_element.disabled = false;
+
+            // Appease Safari
+            //    without it Safari wants to reload the browser window
+            //    which nixes your already queued uploads
+            return false;
+        };
+
+        if(withCaption) {
+            // Set row value
+            filenameCaptionDiv.innerHTML = '<b>'+ element.value +'</b><br><?php echo _("Caption:"); ?> ';
+            // Add caption
+            filenameCaptionDiv.appendChild(caption);
+        }
+        else {
+            // Set row value
+            filenameCaptionDiv.innerHTML = '<b>'+ element.value +'</b>';
+        }
+        
+        // Add button
+        line.appendChild(deleteButton);
+
+        // Add button
+        line.appendChild(hr);
+
+        // Add it to the list
+        this.list_target.appendChild(line);
+    };
+};
+</script>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/js/toggle.js gallery-1.5.2/js/toggle.js
--- gallery-1.5.1/js/toggle.js	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/js/toggle.js	2005-10-20 15:41:06.000000000 +0200
@@ -0,0 +1,15 @@
+function gallery_toggle(id) {
+	var img;
+	var elem;
+
+	img = document.getElementById('toogleBut_' + id);
+	elem = document.getElementById('toogleFrame_' + id);
+	
+	if (elem.style.display == 'none') {
+		elem.style.display = 'inline';
+		img.src = '../images/collapse.gif';
+	} else {
+		elem.style.display = 'none';
+		img.src = '../images/expand.gif';
+	}
+}
diff -Naur gallery-1.5.1/js/wz_jsgraphics.js gallery-1.5.2/js/wz_jsgraphics.js
--- gallery-1.5.1/js/wz_jsgraphics.js	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/js/wz_jsgraphics.js	2005-11-21 22:06:24.000000000 +0100
@@ -0,0 +1,943 @@
+/* This notice must be untouched at all times.
+
+wz_jsgraphics.js    v. 2.33
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
+Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 24. 10. 2005
+
+Performance optimizations for Internet Explorer
+by Thomas Frank and John Holdsworth.
+fillPolygon method implemented by Matthieu Haller.
+
+High Performance JavaScript Graphics Library.
+Provides methods
+- to draw lines, rectangles, ellipses, polygons
+	with specifiable line thickness,
+- to fill rectangles and ellipses
+- to draw text.
+NOTE: Operations, functions and branching have rather been optimized
+to efficiency and speed than to shortness of source code.
+
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA,
+or see http://www.gnu.org/copyleft/lesser.html
+*/
+
+
+var jg_ihtm, jg_ie, jg_fast, jg_dom, jg_moz,
+jg_n4 = (document.layers && typeof document.classes != "undefined");
+
+
+function chkDHTM(x, i)
+{
+	x = document.body || null;
+	jg_ie = x && typeof x.insertAdjacentHTML != "undefined";
+	jg_dom = (x && !jg_ie &&
+		typeof x.appendChild != "undefined" &&
+		typeof document.createRange != "undefined" &&
+		typeof (i = document.createRange()).setStartBefore != "undefined" &&
+		typeof i.createContextualFragment != "undefined");
+	jg_ihtm = !jg_ie && !jg_dom && x && typeof x.innerHTML != "undefined";
+	jg_fast = jg_ie && document.all && !window.opera;
+	jg_moz = jg_dom && typeof x.style.MozOpacity != "undefined";
+}
+
+
+function pntDoc()
+{
+	this.wnd.document.write(jg_fast? this.htmRpc() : this.htm);
+	this.htm = '';
+}
+
+
+function pntCnvDom()
+{
+	var x = document.createRange();
+	x.setStartBefore(this.cnv);
+	x = x.createContextualFragment(jg_fast? this.htmRpc() : this.htm);
+	this.cnv.appendChild(x);
+	this.htm = '';
+}
+
+
+function pntCnvIe()
+{
+	this.cnv.insertAdjacentHTML("BeforeEnd", jg_fast? this.htmRpc() : this.htm);
+	this.htm = '';
+}
+
+
+function pntCnvIhtm()
+{
+	this.cnv.innerHTML += this.htm;
+	this.htm = '';
+}
+
+
+function pntCnv()
+{
+	this.htm = '';
+}
+
+
+function mkDiv(x, y, w, h)
+{
+	this.htm += '<div style="position:absolute;'+
+		'left:' + x + 'px;'+
+		'top:' + y + 'px;'+
+		'width:' + w + 'px;'+
+		'height:' + h + 'px;'+
+		'clip:rect(0,'+w+'px,'+h+'px,0);'+
+		'background-color:' + this.color +
+		(!jg_moz? ';overflow:hidden' : '')+
+		';"><\/div>';
+}
+
+
+function mkDivIe(x, y, w, h)
+{
+	this.htm += '%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';
+}
+
+
+function mkDivPrt(x, y, w, h)
+{
+	this.htm += '<div style="position:absolute;'+
+		'border-left:' + w + 'px solid ' + this.color + ';'+
+		'left:' + x + 'px;'+
+		'top:' + y + 'px;'+
+		'width:0px;'+
+		'height:' + h + 'px;'+
+		'clip:rect(0,'+w+'px,'+h+'px,0);'+
+		'background-color:' + this.color +
+		(!jg_moz? ';overflow:hidden' : '')+
+		';"><\/div>';
+}
+
+
+function mkLyr(x, y, w, h)
+{
+	this.htm += '<layer '+
+		'left="' + x + '" '+
+		'top="' + y + '" '+
+		'width="' + w + '" '+
+		'height="' + h + '" '+
+		'bgcolor="' + this.color + '"><\/layer>\n';
+}
+
+
+var regex =  /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;
+function htmRpc()
+{
+	return this.htm.replace(
+		regex,
+		'<div style="overflow:hidden;position:absolute;background-color:'+
+		'$1;left:$2;top:$3;width:$4;height:$5"></div>\n');
+}
+
+
+function htmPrtRpc()
+{
+	return this.htm.replace(
+		regex,
+		'<div style="overflow:hidden;position:absolute;background-color:'+
+		'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');
+}
+
+
+function mkLin(x1, y1, x2, y2)
+{
+	if (x1 > x2)
+	{
+		var _x2 = x2;
+		var _y2 = y2;
+		x2 = x1;
+		y2 = y1;
+		x1 = _x2;
+		y1 = _y2;
+	}
+	var dx = x2-x1, dy = Math.abs(y2-y1),
+	x = x1, y = y1,
+	yIncr = (y1 > y2)? -1 : 1;
+
+	if (dx >= dy)
+	{
+		var pr = dy<<1,
+		pru = pr - (dx<<1),
+		p = pr-dx,
+		ox = x;
+		while ((dx--) > 0)
+		{
+			++x;
+			if (p > 0)
+			{
+				this.mkDiv(ox, y, x-ox, 1);
+				y += yIncr;
+				p += pru;
+				ox = x;
+			}
+			else p += pr;
+		}
+		this.mkDiv(ox, y, x2-ox+1, 1);
+	}
+
+	else
+	{
+		var pr = dx<<1,
+		pru = pr - (dy<<1),
+		p = pr-dy,
+		oy = y;
+		if (y2 <= y1)
+		{
+			while ((dy--) > 0)
+			{
+				if (p > 0)
+				{
+					this.mkDiv(x++, y, 1, oy-y+1);
+					y += yIncr;
+					p += pru;
+					oy = y;
+				}
+				else
+				{
+					y += yIncr;
+					p += pr;
+				}
+			}
+			this.mkDiv(x2, y2, 1, oy-y2+1);
+		}
+		else
+		{
+			while ((dy--) > 0)
+			{
+				y += yIncr;
+				if (p > 0)
+				{
+					this.mkDiv(x++, oy, 1, y-oy);
+					p += pru;
+					oy = y;
+				}
+				else p += pr;
+			}
+			this.mkDiv(x2, oy, 1, y2-oy+1);
+		}
+	}
+}
+
+
+function mkLin2D(x1, y1, x2, y2)
+{
+	if (x1 > x2)
+	{
+		var _x2 = x2;
+		var _y2 = y2;
+		x2 = x1;
+		y2 = y1;
+		x1 = _x2;
+		y1 = _y2;
+	}
+	var dx = x2-x1, dy = Math.abs(y2-y1),
+	x = x1, y = y1,
+	yIncr = (y1 > y2)? -1 : 1;
+
+	var s = this.stroke;
+	if (dx >= dy)
+	{
+		if (dx > 0 && s-3 > 0)
+		{
+			var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;
+			_s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;
+		}
+		else var _s = s;
+		var ad = Math.ceil(s/2);
+
+		var pr = dy<<1,
+		pru = pr - (dx<<1),
+		p = pr-dx,
+		ox = x;
+		while ((dx--) > 0)
+		{
+			++x;
+			if (p > 0)
+			{
+				this.mkDiv(ox, y, x-ox+ad, _s);
+				y += yIncr;
+				p += pru;
+				ox = x;
+			}
+			else p += pr;
+		}
+		this.mkDiv(ox, y, x2-ox+ad+1, _s);
+	}
+
+	else
+	{
+		if (s-3 > 0)
+		{
+			var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;
+			_s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;
+		}
+		else var _s = s;
+		var ad = Math.round(s/2);
+
+		var pr = dx<<1,
+		pru = pr - (dy<<1),
+		p = pr-dy,
+		oy = y;
+		if (y2 <= y1)
+		{
+			++ad;
+			while ((dy--) > 0)
+			{
+				if (p > 0)
+				{
+					this.mkDiv(x++, y, _s, oy-y+ad);
+					y += yIncr;
+					p += pru;
+					oy = y;
+				}
+				else
+				{
+					y += yIncr;
+					p += pr;
+				}
+			}
+			this.mkDiv(x2, y2, _s, oy-y2+ad);
+		}
+		else
+		{
+			while ((dy--) > 0)
+			{
+				y += yIncr;
+				if (p > 0)
+				{
+					this.mkDiv(x++, oy, _s, y-oy+ad);
+					p += pru;
+					oy = y;
+				}
+				else p += pr;
+			}
+			this.mkDiv(x2, oy, _s, y2-oy+ad+1);
+		}
+	}
+}
+
+
+function mkLinDott(x1, y1, x2, y2)
+{
+	if (x1 > x2)
+	{
+		var _x2 = x2;
+		var _y2 = y2;
+		x2 = x1;
+		y2 = y1;
+		x1 = _x2;
+		y1 = _y2;
+	}
+	var dx = x2-x1, dy = Math.abs(y2-y1),
+	x = x1, y = y1,
+	yIncr = (y1 > y2)? -1 : 1,
+	drw = true;
+	if (dx >= dy)
+	{
+		var pr = dy<<1,
+		pru = pr - (dx<<1),
+		p = pr-dx;
+		while ((dx--) > 0)
+		{
+			if (drw) this.mkDiv(x, y, 1, 1);
+			drw = !drw;
+			if (p > 0)
+			{
+				y += yIncr;
+				p += pru;
+			}
+			else p += pr;
+			++x;
+		}
+		if (drw) this.mkDiv(x, y, 1, 1);
+	}
+
+	else
+	{
+		var pr = dx<<1,
+		pru = pr - (dy<<1),
+		p = pr-dy;
+		while ((dy--) > 0)
+		{
+			if (drw) this.mkDiv(x, y, 1, 1);
+			drw = !drw;
+			y += yIncr;
+			if (p > 0)
+			{
+				++x;
+				p += pru;
+			}
+			else p += pr;
+		}
+		if (drw) this.mkDiv(x, y, 1, 1);
+	}
+}
+
+
+function mkOv(left, top, width, height)
+{
+	var a = width>>1, b = height>>1,
+	wod = width&1, hod = (height&1)+1,
+	cx = left+a, cy = top+b,
+	x = 0, y = b,
+	ox = 0, oy = b,
+	aa = (a*a)<<1, bb = (b*b)<<1,
+	st = (aa>>1)*(1-(b<<1)) + bb,
+	tt = (bb>>1) - aa*((b<<1)-1),
+	w, h;
+	while (y > 0)
+	{
+		if (st < 0)
+		{
+			st += bb*((x<<1)+3);
+			tt += (bb<<1)*(++x);
+		}
+		else if (tt < 0)
+		{
+			st += bb*((x<<1)+3) - (aa<<1)*(y-1);
+			tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
+			w = x-ox;
+			h = oy-y;
+			if (w&2 && h&2)
+			{
+				this.mkOvQds(cx, cy, -x+2, ox+wod, -oy, oy-1+hod, 1, 1);
+				this.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1);
+			}
+			else this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, oy-h+hod, w, h);
+			ox = x;
+			oy = y;
+		}
+		else
+		{
+			tt -= aa*((y<<1)-3);
+			st -= (aa<<1)*(--y);
+		}
+	}
+	this.mkDiv(cx-a, cy-oy, a-ox+1, (oy<<1)+hod);
+	this.mkDiv(cx+ox+wod, cy-oy, a-ox+1, (oy<<1)+hod);
+}
+
+
+function mkOv2D(left, top, width, height)
+{
+	var s = this.stroke;
+	width += s-1;
+	height += s-1;
+	var a = width>>1, b = height>>1,
+	wod = width&1, hod = (height&1)+1,
+	cx = left+a, cy = top+b,
+	x = 0, y = b,
+	aa = (a*a)<<1, bb = (b*b)<<1,
+	st = (aa>>1)*(1-(b<<1)) + bb,
+	tt = (bb>>1) - aa*((b<<1)-1);
+
+	if (s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0))
+	{
+		var ox = 0, oy = b,
+		w, h,
+		pxl, pxr, pxt, pxb, pxw;
+		while (y > 0)
+		{
+			if (st < 0)
+			{
+				st += bb*((x<<1)+3);
+				tt += (bb<<1)*(++x);
+			}
+			else if (tt < 0)
+			{
+				st += bb*((x<<1)+3) - (aa<<1)*(y-1);
+				tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
+				w = x-ox;
+				h = oy-y;
+
+				if (w-1)
+				{
+					pxw = w+1+(s&1);
+					h = s;
+				}
+				else if (h-1)
+				{
+					pxw = s;
+					h += 1+(s&1);
+				}
+				else pxw = h = s;
+				this.mkOvQds(cx, cy, -x+1, ox-pxw+w+wod, -oy, -h+oy+hod, pxw, h);
+				ox = x;
+				oy = y;
+			}
+			else
+			{
+				tt -= aa*((y<<1)-3);
+				st -= (aa<<1)*(--y);
+			}
+		}
+		this.mkDiv(cx-a, cy-oy, s, (oy<<1)+hod);
+		this.mkDiv(cx+a+wod-s+1, cy-oy, s, (oy<<1)+hod);
+	}
+
+	else
+	{
+		var _a = (width-((s-1)<<1))>>1,
+		_b = (height-((s-1)<<1))>>1,
+		_x = 0, _y = _b,
+		_aa = (_a*_a)<<1, _bb = (_b*_b)<<1,
+		_st = (_aa>>1)*(1-(_b<<1)) + _bb,
+		_tt = (_bb>>1) - _aa*((_b<<1)-1),
+
+		pxl = new Array(),
+		pxt = new Array(),
+		_pxb = new Array();
+		pxl[0] = 0;
+		pxt[0] = b;
+		_pxb[0] = _b-1;
+		while (y > 0)
+		{
+			if (st < 0)
+			{
+				st += bb*((x<<1)+3);
+				tt += (bb<<1)*(++x);
+				pxl[pxl.length] = x;
+				pxt[pxt.length] = y;
+			}
+			else if (tt < 0)
+			{
+				st += bb*((x<<1)+3) - (aa<<1)*(y-1);
+				tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
+				pxl[pxl.length] = x;
+				pxt[pxt.length] = y;
+			}
+			else
+			{
+				tt -= aa*((y<<1)-3);
+				st -= (aa<<1)*(--y);
+			}
+
+			if (_y > 0)
+			{
+				if (_st < 0)
+				{
+					_st += _bb*((_x<<1)+3);
+					_tt += (_bb<<1)*(++_x);
+					_pxb[_pxb.length] = _y-1;
+				}
+				else if (_tt < 0)
+				{
+					_st += _bb*((_x<<1)+3) - (_aa<<1)*(_y-1);
+					_tt += (_bb<<1)*(++_x) - _aa*(((_y--)<<1)-3);
+					_pxb[_pxb.length] = _y-1;
+				}
+				else
+				{
+					_tt -= _aa*((_y<<1)-3);
+					_st -= (_aa<<1)*(--_y);
+					_pxb[_pxb.length-1]--;
+				}
+			}
+		}
+
+		var ox = 0, oy = b,
+		_oy = _pxb[0],
+		l = pxl.length,
+		w, h;
+		for (var i = 0; i < l; i++)
+		{
+			if (typeof _pxb[i] != "undefined")
+			{
+				if (_pxb[i] < _oy || pxt[i] < oy)
+				{
+					x = pxl[i];
+					this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, _oy+hod, x-ox, oy-_oy);
+					ox = x;
+					oy = pxt[i];
+					_oy = _pxb[i];
+				}
+			}
+			else
+			{
+				x = pxl[i];
+				this.mkDiv(cx-x+1, cy-oy, 1, (oy<<1)+hod);
+				this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
+				ox = x;
+				oy = pxt[i];
+			}
+		}
+		this.mkDiv(cx-a, cy-oy, 1, (oy<<1)+hod);
+		this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
+	}
+}
+
+
+function mkOvDott(left, top, width, height)
+{
+	var a = width>>1, b = height>>1,
+	wod = width&1, hod = height&1,
+	cx = left+a, cy = top+b,
+	x = 0, y = b,
+	aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,
+	st = (aa2>>1)*(1-(b<<1)) + bb,
+	tt = (bb>>1) - aa2*((b<<1)-1),
+	drw = true;
+	while (y > 0)
+	{
+		if (st < 0)
+		{
+			st += bb*((x<<1)+3);
+			tt += (bb<<1)*(++x);
+		}
+		else if (tt < 0)
+		{
+			st += bb*((x<<1)+3) - aa4*(y-1);
+			tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3);
+		}
+		else
+		{
+			tt -= aa2*((y<<1)-3);
+			st -= aa4*(--y);
+		}
+		if (drw) this.mkOvQds(cx, cy, -x, x+wod, -y, y+hod, 1, 1);
+		drw = !drw;
+	}
+}
+
+
+function mkRect(x, y, w, h)
+{
+	var s = this.stroke;
+	this.mkDiv(x, y, w, s);
+	this.mkDiv(x+w, y, s, h);
+	this.mkDiv(x, y+h, w+s, s);
+	this.mkDiv(x, y+s, s, h-s);
+}
+
+
+function mkRectDott(x, y, w, h)
+{
+	this.drawLine(x, y, x+w, y);
+	this.drawLine(x+w, y, x+w, y+h);
+	this.drawLine(x, y+h, x+w, y+h);
+	this.drawLine(x, y, x, y+h);
+}
+
+
+function jsgFont()
+{
+	this.PLAIN = 'font-weight:normal;';
+	this.BOLD = 'font-weight:bold;';
+	this.ITALIC = 'font-style:italic;';
+	this.ITALIC_BOLD = this.ITALIC + this.BOLD;
+	this.BOLD_ITALIC = this.ITALIC_BOLD;
+}
+var Font = new jsgFont();
+
+
+function jsgStroke()
+{
+	this.DOTTED = -1;
+}
+var Stroke = new jsgStroke();
+
+
+function jsGraphics(id, wnd)
+{
+	this.setColor = new Function('arg', 'this.color = arg.toLowerCase();');
+
+	this.setStroke = function(x)
+	{
+		this.stroke = x;
+		if (!(x+1))
+		{
+			this.drawLine = mkLinDott;
+			this.mkOv = mkOvDott;
+			this.drawRect = mkRectDott;
+		}
+		else if (x-1 > 0)
+		{
+			this.drawLine = mkLin2D;
+			this.mkOv = mkOv2D;
+			this.drawRect = mkRect;
+		}
+		else
+		{
+			this.drawLine = mkLin;
+			this.mkOv = mkOv;
+			this.drawRect = mkRect;
+		}
+	};
+
+
+	this.setPrintable = function(arg)
+	{
+		this.printable = arg;
+		if (jg_fast)
+		{
+			this.mkDiv = mkDivIe;
+			this.htmRpc = arg? htmPrtRpc : htmRpc;
+		}
+		else this.mkDiv = jg_n4? mkLyr : arg? mkDivPrt : mkDiv;
+	};
+
+
+	this.setFont = function(fam, sz, sty)
+	{
+		this.ftFam = fam;
+		this.ftSz = sz;
+		this.ftSty = sty || Font.PLAIN;
+	};
+
+
+	this.drawPolyline = this.drawPolyLine = function(x, y, s)
+	{
+		for (var i=0 ; i<x.length-1 ; i++ )
+			this.drawLine(x[i], y[i], x[i+1], y[i+1]);
+	};
+
+
+	this.fillRect = function(x, y, w, h)
+	{
+		this.mkDiv(x, y, w, h);
+	};
+
+
+	this.drawPolygon = function(x, y)
+	{
+		this.drawPolyline(x, y);
+		this.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]);
+	};
+
+
+	this.drawEllipse = this.drawOval = function(x, y, w, h)
+	{
+		this.mkOv(x, y, w, h);
+	};
+
+
+	this.fillEllipse = this.fillOval = function(left, top, w, h)
+	{
+		var a = (w -= 1)>>1, b = (h -= 1)>>1,
+		wod = (w&1)+1, hod = (h&1)+1,
+		cx = left+a, cy = top+b,
+		x = 0, y = b,
+		ox = 0, oy = b,
+		aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,
+		st = (aa2>>1)*(1-(b<<1)) + bb,
+		tt = (bb>>1) - aa2*((b<<1)-1),
+		pxl, dw, dh;
+		if (w+1) while (y > 0)
+		{
+			if (st < 0)
+			{
+				st += bb*((x<<1)+3);
+				tt += (bb<<1)*(++x);
+			}
+			else if (tt < 0)
+			{
+				st += bb*((x<<1)+3) - aa4*(y-1);
+				pxl = cx-x;
+				dw = (x<<1)+wod;
+				tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3);
+				dh = oy-y;
+				this.mkDiv(pxl, cy-oy, dw, dh);
+				this.mkDiv(pxl, cy+y+hod, dw, dh);
+				ox = x;
+				oy = y;
+			}
+			else
+			{
+				tt -= aa2*((y<<1)-3);
+				st -= aa4*(--y);
+			}
+		}
+		this.mkDiv(cx-a, cy-oy, w+1, (oy<<1)+hod);
+	};
+
+
+/* fillPolygon method, implemented by Matthieu Haller.
+This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.
+C source of GD 1.8.4 found at http://www.boutell.com/gd/
+
+THANKS to Kirsten Schulz for the polygon fixes!
+
+The intersection finding technique of this code could be improved
+by remembering the previous intertersection, and by using the slope.
+That could help to adjust intersections to produce a nice
+interior_extrema. */
+	this.fillPolygon = function(array_x, array_y)
+	{
+		var i;
+		var y;
+		var miny, maxy;
+		var x1, y1;
+		var x2, y2;
+		var ind1, ind2;
+		var ints;
+
+		var n = array_x.length;
+
+		if (!n) return;
+
+
+		miny = array_y[0];
+		maxy = array_y[0];
+		for (i = 1; i < n; i++)
+		{
+			if (array_y[i] < miny)
+				miny = array_y[i];
+
+			if (array_y[i] > maxy)
+				maxy = array_y[i];
+		}
+		for (y = miny; y <= maxy; y++)
+		{
+			var polyInts = new Array();
+			ints = 0;
+			for (i = 0; i < n; i++)
+			{
+				if (!i)
+				{
+					ind1 = n-1;
+					ind2 = 0;
+				}
+				else
+				{
+					ind1 = i-1;
+					ind2 = i;
+				}
+				y1 = array_y[ind1];
+				y2 = array_y[ind2];
+				if (y1 < y2)
+				{
+					x1 = array_x[ind1];
+					x2 = array_x[ind2];
+				}
+				else if (y1 > y2)
+				{
+					y2 = array_y[ind1];
+					y1 = array_y[ind2];
+					x2 = array_x[ind1];
+					x1 = array_x[ind2];
+				}
+				else continue;
+
+				 // modified 11. 2. 2004 Walter Zorn
+				if ((y >= y1) && (y < y2))
+					polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
+
+				else if ((y == maxy) && (y > y1) && (y <= y2))
+					polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
+			}
+			polyInts.sort(integer_compare);
+			for (i = 0; i < ints; i+=2)
+				this.mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1);
+		}
+	};
+
+
+	this.drawString = function(txt, x, y)
+	{
+		this.htm += '<div style="position:absolute;white-space:nowrap;'+
+			'left:' + x + 'px;'+
+			'top:' + y + 'px;'+
+			'font-family:' +  this.ftFam + ';'+
+			'font-size:' + this.ftSz + ';'+
+			'color:' + this.color + ';' + this.ftSty + '">'+
+			txt +
+			'<\/div>';
+	};
+
+
+/* drawStringRect() added by Rick Blommers.
+Allows to specify the size of the text rectangle and to align the
+text both horizontally (e.g. right) and vertically within that rectangle */
+	this.drawStringRect = function(txt, x, y, width, halign)
+	{
+		this.htm += '<div style="position:absolute;overflow:hidden;'+
+			'left:' + x + 'px;'+
+			'top:' + y + 'px;'+
+			'width:'+width +'px;'+
+			'text-align:'+halign+';'+
+			'font-family:' +  this.ftFam + ';'+
+			'font-size:' + this.ftSz + ';'+
+			'color:' + this.color + ';' + this.ftSty + '">'+
+			txt +
+			'<\/div>';
+	};
+
+
+	this.drawImage = function(imgSrc, x, y, w, h, a)
+	{
+		this.htm += '<div style="position:absolute;'+
+			'left:' + x + 'px;'+
+			'top:' + y + 'px;'+
+			'width:' +  w + ';'+
+			'height:' + h + ';">'+
+			'<img src="' + imgSrc + '" width="' + w + '" height="' + h + '"' + (a? (' '+a) : '') + '>'+
+			'<\/div>';
+	};
+
+
+	this.clear = function()
+	{
+		this.htm = "";
+		if (this.cnv) this.cnv.innerHTML = this.defhtm;
+	};
+
+
+	this.mkOvQds = function(cx, cy, xl, xr, yt, yb, w, h)
+	{
+		this.mkDiv(xr+cx, yt+cy, w, h);
+		this.mkDiv(xr+cx, yb+cy, w, h);
+		this.mkDiv(xl+cx, yb+cy, w, h);
+		this.mkDiv(xl+cx, yt+cy, w, h);
+	};
+
+	this.setStroke(1);
+	this.setFont('verdana,geneva,helvetica,sans-serif', String.fromCharCode(0x31, 0x32, 0x70, 0x78), Font.PLAIN);
+	this.color = '#000000';
+	this.htm = '';
+	this.wnd = wnd || window;
+
+	if (!(jg_ie || jg_dom || jg_ihtm)) chkDHTM();
+	if (typeof id != 'string' || !id) this.paint = pntDoc;
+	else
+	{
+		this.cnv = document.all? (this.wnd.document.all[id] || null)
+			: document.getElementById? (this.wnd.document.getElementById(id) || null)
+			: null;
+		this.defhtm = (this.cnv && this.cnv.innerHTML)? this.cnv.innerHTML : '';
+		this.paint = jg_dom? pntCnvDom : jg_ie? pntCnvIe : jg_ihtm? pntCnvIhtm : pntCnv;
+	}
+
+	this.setPrintable(false);
+}
+
+
+
+function integer_compare(x,y)
+{
+	return (x < y) ? -1 : ((x > y)*1);
+}
+
diff -Naur gallery-1.5.1/js/wz_tooltip.js gallery-1.5.2/js/wz_tooltip.js
--- gallery-1.5.1/js/wz_tooltip.js	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/js/wz_tooltip.js	2005-11-21 22:06:24.000000000 +0100
@@ -0,0 +1,475 @@
+/* This notice must be untouched at all times.
+
+wz_tooltip.js    v. 3.34
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
+Created 1. 12. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 9. 9. 2005
+
+Cross-browser tooltips working even in Opera 5 and 6,
+as well as in NN 4, Gecko-Browsers, IE4+, Opera 7 and Konqueror.
+No onmouseouts required.
+Appearance of tooltips can be individually configured
+via commands within the onmouseovers.
+
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+////////////////  GLOBAL TOOPTIP CONFIGURATION  /////////////////////
+var ttAbove       = false;        // tooltip above mousepointer? Alternative: true
+var ttBgColor     = "#e6ecff";
+var ttBgImg       = "";           // path to background image;
+var ttBorderColor = "#003399";
+var ttBorderWidth = 1;
+var ttDelay       = 300;          // time span until tooltip shows up [milliseconds]
+var ttFontColor   = "#003399";
+var ttFontFace    = "arial,helvetica,sans-serif";
+var ttFontSize    = "11px";
+var ttFontWeight  = "normal";     // alternative: "bold";
+var ttLeft        = false;        // tooltip on the left of the mouse? Alternative: true
+var ttOffsetX     = 12;           // horizontal offset of left-top corner from mousepointer
+var ttOffsetY     = 15;           // vertical offset                   "
+var ttOpacity     = 100;          // opacity of tooltip in percent (must be integer between 0 and 100)
+var ttPadding     = 3;            // spacing between border and content
+var ttShadowColor = "";
+var ttShadowWidth = 0;
+var ttStatic      = false;        // tooltip NOT move with the mouse? Alternative: true
+var ttSticky      = false;        // do NOT hide tooltip on mouseout? Alternative: true
+var ttTemp        = 0;            // time span after which the tooltip disappears; 0 (zero) means "infinite timespan"
+var ttTextAlign   = "left";
+var ttTitleColor  = "#ffffff";    // color of caption text
+var ttWidth       = 175;
+////////////////////  END OF TOOLTIP CONFIG  ////////////////////////
+
+
+
+//////////////  TAGS WITH TOOLTIP FUNCTIONALITY  ////////////////////
+// List may be extended or shortened:
+var tt_tags = new Array("a","area","b","big","caption","center","code","dd","div","dl","dt","em","h1","h2","h3","h4","h5","h6","i","img","input","li","map","ol","p","pre","s","small","span","strike","strong","sub","sup","table","td","th","tr","tt","u","var","ul","layer");
+/////////////////////////////////////////////////////////////////////
+
+
+
+///////// DON'T CHANGE ANYTHING BELOW THIS LINE /////////////////////
+var tt_obj,                // current tooltip
+tt_ifrm,                   // iframe to cover windowed controls in IE
+tt_objW = 0, tt_objH = 0,  // width and height of tt_obj
+tt_objX = 0, tt_objY = 0,
+tt_offX = 0, tt_offY = 0,
+xlim = 0, ylim = 0,        // right and bottom borders of visible client area
+tt_sup = false,            // true if T_ABOVE cmd
+tt_sticky = false,         // tt_obj sticky?
+tt_wait = false,
+tt_act = false,            // tooltip visibility flag
+tt_sub = false,            // true while tooltip below mousepointer
+tt_u = "undefined",
+tt_mf,                     // stores previous mousemove evthandler
+// Opera: disable href when hovering <a>
+tt_tag = null;             // stores hovered dom node, href and previous statusbar txt
+
+
+var tt_db = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body? document.body : null,
+tt_n = navigator.userAgent.toLowerCase(),
+tt_nv = navigator.appVersion;
+// Browser flags
+var tt_op = !!(window.opera && document.getElementById),
+tt_op6 = tt_op && !document.defaultView,
+tt_op7 = tt_op && !tt_op6,
+tt_ie = tt_n.indexOf("msie") != -1 && document.all && tt_db && !tt_op,
+tt_ie6 = tt_ie && parseFloat(tt_nv.substring(tt_nv.indexOf("MSIE")+5)) >= 5.5;
+tt_n4 = (document.layers && typeof document.classes != tt_u),
+tt_n6 = (!tt_op && document.defaultView && typeof document.defaultView.getComputedStyle != tt_u),
+tt_w3c = !tt_ie && !tt_n6 && !tt_op && document.getElementById;
+
+function tt_Int(t_x)
+{
+	var t_y;
+	return isNaN(t_y = parseInt(t_x))? 0 : t_y;
+}
+function wzReplace(t_x, t_y)
+{
+	var t_ret = "",
+	t_str = this,
+	t_xI;
+	while((t_xI = t_str.indexOf(t_x)) != -1)
+	{
+		t_ret += t_str.substring(0, t_xI) + t_y;
+		t_str = t_str.substring(t_xI + t_x.length);
+	}
+	return t_ret+t_str;
+}
+String.prototype.wzReplace = wzReplace;
+function tt_N4Tags(tagtyp, t_d, t_y)
+{
+	t_d = t_d || document;
+	t_y = t_y || new Array();
+	var t_x = (tagtyp=="a")? t_d.links : t_d.layers;
+	for(var z = t_x.length; z--;) t_y[t_y.length] = t_x[z];
+	for(z = t_d.layers.length; z--;) t_y = tt_N4Tags(tagtyp, t_d.layers[z].document, t_y);
+	return t_y;
+}
+function tt_Htm(tt, t_id, txt)
+{
+	var t_bgc = (typeof tt.T_BGCOLOR != tt_u)? tt.T_BGCOLOR : ttBgColor,
+	t_bgimg   = (typeof tt.T_BGIMG != tt_u)? tt.T_BGIMG : ttBgImg,
+	t_bc      = (typeof tt.T_BORDERCOLOR != tt_u)? tt.T_BORDERCOLOR : ttBorderColor,
+	t_bw      = (typeof tt.T_BORDERWIDTH != tt_u)? tt.T_BORDERWIDTH : ttBorderWidth,
+	t_ff      = (typeof tt.T_FONTFACE != tt_u)? tt.T_FONTFACE : ttFontFace,
+	t_fc      = (typeof tt.T_FONTCOLOR != tt_u)? tt.T_FONTCOLOR : ttFontColor,
+	t_fsz     = (typeof tt.T_FONTSIZE != tt_u)? tt.T_FONTSIZE : ttFontSize,
+	t_fwght   = (typeof tt.T_FONTWEIGHT != tt_u)? tt.T_FONTWEIGHT : ttFontWeight,
+	t_opa     = (typeof tt.T_OPACITY != tt_u)? tt.T_OPACITY : ttOpacity,
+	t_padd    = (typeof tt.T_PADDING != tt_u)? tt.T_PADDING : ttPadding,
+	t_shc     = (typeof tt.T_SHADOWCOLOR != tt_u)? tt.T_SHADOWCOLOR : (ttShadowColor || 0),
+	t_shw     = (typeof tt.T_SHADOWWIDTH != tt_u)? tt.T_SHADOWWIDTH : (ttShadowWidth || 0),
+	t_algn    = (typeof tt.T_TEXTALIGN != tt_u)? tt.T_TEXTALIGN : ttTextAlign,
+	t_tit     = (typeof tt.T_TITLE != tt_u)? tt.T_TITLE : "",
+	t_titc    = (typeof tt.T_TITLECOLOR != tt_u)? tt.T_TITLECOLOR : ttTitleColor,
+	t_w       = (typeof tt.T_WIDTH != tt_u)? tt.T_WIDTH  : ttWidth;
+	if(t_shc || t_shw)
+	{
+		t_shc = t_shc || "#cccccc";
+		t_shw = t_shw || 5;
+	}
+	if(tt_n4 && (t_fsz == "10px" || t_fsz == "11px")) t_fsz = "12px";
+
+	var t_optx = (tt_n4? '' : tt_n6? ('-moz-opacity:'+(t_opa/100.0)) : tt_ie? ('filter:Alpha(opacity='+t_opa+')') : ('opacity:'+(t_opa/100.0))) + ';';
+	var t_y = '<div id="'+t_id+'" style="position:absolute;z-index:1010;';
+	t_y += 'left:0px;top:0px;width:'+(t_w+t_shw)+'px;visibility:'+(tt_n4? 'hide' : 'hidden')+';'+t_optx+'">' +
+		'<table border="0" cellpadding="0" cellspacing="0"'+(t_bc? (' bgcolor="'+t_bc+'" style="background:'+t_bc+';"') : '')+' width="'+t_w+'">';
+	if(t_tit)
+	{
+		t_y += '<tr><td style="padding-left:3px;padding-right:3px;" align="'+t_algn+'"><font color="'+t_titc+'" face="'+t_ff+'" ' +
+			'style="color:'+t_titc+';font-family:'+t_ff+';font-size:'+t_fsz+';"><b>' +
+			(tt_n4? '&nbsp;' : '')+t_tit+'<\/b><\/font><\/td><\/tr>';
+	}
+	t_y += '<tr><td><table border="0" cellpadding="'+t_padd+'" cellspacing="'+t_bw+'" width="100%">' +
+		'<tr><td'+(t_bgc? (' bgcolor="'+t_bgc+'"') : '')+(t_bgimg? ' background="'+t_bgimg+'"' : '')+' style="text-align:'+t_algn+';';
+	if(tt_n6) t_y += 'padding:'+t_padd+'px;';
+	t_y += '" align="'+t_algn+'"><font color="'+t_fc+'" face="'+t_ff+'"' +
+		' style="color:'+t_fc+';font-family:'+t_ff+';font-size:'+t_fsz+';font-weight:'+t_fwght+';">';
+	if(t_fwght == 'bold') t_y += '<b>';
+	t_y += txt;
+	if(t_fwght == 'bold') t_y += '<\/b>';
+	t_y += '<\/font><\/td><\/tr><\/table><\/td><\/tr><\/table>';
+	if(t_shw)
+	{
+		var t_spct = Math.round(t_shw*1.3);
+		if(tt_n4)
+		{
+			t_y += '<layer bgcolor="'+t_shc+'" left="'+t_w+'" top="'+t_spct+'" width="'+t_shw+'" height="0"><\/layer>' +
+				'<layer bgcolor="'+t_shc+'" left="'+t_spct+'" align="bottom" width="'+(t_w-t_spct)+'" height="'+t_shw+'"><\/layer>';
+		}
+		else
+		{
+			t_optx = tt_n6? '-moz-opacity:0.85;' : tt_ie? 'filter:Alpha(opacity=85);' : 'opacity:0.85;';
+			t_y += '<div id="'+t_id+'R" style="position:absolute;background:'+t_shc+';left:'+t_w+'px;top:'+t_spct+'px;width:'+t_shw+'px;height:1px;overflow:hidden;'+t_optx+'"><\/div>' +
+				'<div style="position:relative;background:'+t_shc+';left:'+t_spct+'px;top:0px;width:'+(t_w-t_spct)+'px;height:'+t_shw+'px;overflow:hidden;'+t_optx+'"><\/div>';
+		}
+	}
+	return(t_y+'<\/div>' +
+		(tt_ie6 ? '<iframe id="TTiEiFrM" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"><\/iframe>' : ''));
+}
+function tt_EvX(t_e)
+{
+	var t_y = tt_Int(t_e.pageX || t_e.clientX || 0) +
+		tt_Int(tt_ie? tt_db.scrollLeft : 0) +
+		tt_offX;
+	if(t_y > xlim) t_y = xlim;
+	var t_scr = tt_Int(window.pageXOffset || (tt_db? tt_db.scrollLeft : 0) || 0);
+	if(t_y < t_scr) t_y = t_scr;
+	return t_y;
+}
+function tt_EvY(t_e)
+{
+	var t_y = tt_Int(t_e.pageY || t_e.clientY || 0) +
+		tt_Int(tt_ie? tt_db.scrollTop : 0);
+	if(tt_sup) t_y -= (tt_objH + tt_offY - 15);
+	else if(t_y > ylim || !tt_sub && t_y > ylim-24)
+	{
+		t_y -= (tt_objH + 5);
+		tt_sub = false;
+	}
+	else
+	{
+		t_y += tt_offY;
+		tt_sub = true;
+	}
+	return t_y;
+}
+function tt_ReleasMov()
+{
+	if(document.onmousemove == tt_Move)
+	{
+		if(!tt_mf && document.releaseEvents) document.releaseEvents(Event.MOUSEMOVE);
+		document.onmousemove = tt_mf;
+	}
+}
+function tt_ShowIfrm(t_x)
+{
+	if(!tt_ie6 || !tt_obj) return;
+	tt_ifrm = document.getElementById("TTiEiFrM");
+	//tt_obj.style.display = t_x? "block" : "none";
+	if(t_x)
+	{
+		tt_ifrm.style.width = tt_objW+'px';
+		tt_ifrm.style.height = tt_objH+'px';
+		tt_ifrm.style.zIndex = tt_obj.style.zIndex - 1;
+		tt_ifrm.style.display = "block";
+	}
+	else tt_ifrm.style.display = "none";
+}
+function tt_GetDiv(t_id)
+{
+	return(
+		tt_n4? (document.layers[t_id] || null)
+		: tt_ie? (document.all[t_id] || null)
+		: (document.getElementById(t_id) || null)
+	);
+}
+function tt_GetDivW()
+{
+	return tt_Int(
+		tt_n4? tt_obj.clip.width
+		: (tt_obj.style.pixelWidth || tt_obj.offsetWidth)
+	);
+}
+function tt_GetDivH()
+{
+	return tt_Int(
+		tt_n4? tt_obj.clip.height
+		: (tt_obj.style.pixelHeight || tt_obj.offsetHeight)
+	);
+}
+
+// Compat with DragDrop Lib: Ensure that z-index of tooltip is lifted beyond toplevel dragdrop element
+function tt_SetDivZ()
+{
+	var t_i = tt_obj.style || tt_obj;
+	if(window.dd && dd.z)
+		t_i.zIndex = Math.max(dd.z+1, t_i.zIndex);
+}
+function tt_SetDivPos(t_x, t_y)
+{
+	var t_i = tt_obj.style || tt_obj;
+	var t_px = (tt_op6 || tt_n4)? '' : 'px';
+	t_i.left = (tt_objX = t_x) + t_px;
+	t_i.top = (tt_objY = t_y) + t_px;
+	if(tt_ifrm)
+	{
+		tt_ifrm.style.left = t_i.left;
+		tt_ifrm.style.top = t_i.top;
+	}
+}
+function tt_ShowDiv(t_x)
+{
+	if(tt_n4) tt_obj.visibility = t_x? 'show' : 'hide';
+	else tt_obj.style.visibility = t_x? 'visible' : 'hidden';
+	tt_act = t_x;
+	tt_ShowIfrm(t_x);
+}
+function tt_OpDeHref(t_e)
+{
+		var t_tag;
+	if(t_e)
+		{
+				t_tag = t_e.target;
+				while(t_tag)
+				{
+						if(t_tag.hasAttribute("href"))
+					{
+						tt_tag = t_tag
+						tt_tag.t_href = tt_tag.getAttribute("href");
+						tt_tag.removeAttribute("href");
+						tt_tag.style.cursor = "hand";
+						tt_tag.onmousedown = tt_OpReHref;
+						tt_tag.stats = window.status;
+						window.status = tt_tag.t_href;
+						break;
+					}
+					t_tag = t_tag.parentElement;
+				}
+		}
+}
+function tt_OpReHref()
+{
+	if(tt_tag)
+	{
+		tt_tag.setAttribute("href", tt_tag.t_href);
+		window.status = tt_tag.stats;
+		tt_tag = null;
+	}
+}
+function tt_Show(t_e, t_id, t_sup, t_delay, t_fix, t_left, t_offx, t_offy, t_static, t_sticky, t_temp)
+{
+	if(tt_obj) tt_Hide();
+	tt_mf = document.onmousemove || null;
+	if(window.dd && (window.DRAG && tt_mf == DRAG || window.RESIZE && tt_mf == RESIZE)) return;
+	var t_uf = document.onmouseup || null, t_sh, t_h;
+	if(tt_mf && t_uf) t_uf(t_e);
+
+	tt_obj = tt_GetDiv(t_id);
+	if(tt_obj)
+	{
+		t_e = t_e || window.event;
+		tt_sub = !(tt_sup = t_sup);
+		tt_sticky = t_sticky;
+		tt_objW = tt_GetDivW();
+		tt_objH = tt_GetDivH();
+		tt_offX = t_left? -(tt_objW+t_offx) : t_offx;
+		tt_offY = t_offy;
+		if(tt_op7) tt_OpDeHref(t_e);
+		if(tt_n4)
+		{
+			if(tt_obj.document.layers.length)
+			{
+				t_sh = tt_obj.document.layers[0];
+				t_sh.clip.height = tt_objH - Math.round(t_sh.clip.width*1.3);
+			}
+		}
+		else
+		{
+			t_sh = tt_GetDiv(t_id+'R');
+			if(t_sh)
+			{
+				t_h = tt_objH - tt_Int(t_sh.style.pixelTop || t_sh.style.top || 0);
+				if(typeof t_sh.style.pixelHeight != tt_u) t_sh.style.pixelHeight = t_h;
+				else t_sh.style.height = t_h+'px';
+			}
+		}
+
+		xlim = tt_Int((tt_db && tt_db.clientWidth)? tt_db.clientWidth : window.innerWidth) +
+			tt_Int(window.pageXOffset || (tt_db? tt_db.scrollLeft : 0) || 0) -
+			tt_objW -
+			(tt_n4? 21 : 0);
+		ylim = tt_Int(window.innerHeight || tt_db.clientHeight) +
+			tt_Int(window.pageYOffset || (tt_db? tt_db.scrollTop : 0) || 0) -
+			tt_objH - tt_offY;
+
+		tt_SetDivZ();
+		if(t_fix) tt_SetDivPos(tt_Int((t_fix = t_fix.split(','))[0]), tt_Int(t_fix[1]));
+		else tt_SetDivPos(tt_EvX(t_e), tt_EvY(t_e));
+
+		var t_txt = 'tt_ShowDiv(\'true\');';
+		if(t_sticky) t_txt += '{'+
+				'tt_ReleasMov();'+
+				'window.tt_upFunc = document.onmouseup || null;'+
+				'if(document.captureEvents) document.captureEvents(Event.MOUSEUP);'+
+				'document.onmouseup = new Function("window.setTimeout(\'tt_Hide();\', 10);");'+
+			'}';
+		else if(t_static) t_txt += 'tt_ReleasMov();';
+		if(t_temp > 0) t_txt += 'window.tt_rtm = window.setTimeout(\'tt_sticky = false; tt_Hide();\','+t_temp+');';
+		window.tt_rdl = window.setTimeout(t_txt, t_delay);
+
+		if(!t_fix)
+		{
+			if(document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
+			document.onmousemove = tt_Move;
+		}
+	}
+}
+var tt_area = false;
+function tt_Move(t_ev)
+{
+	if(!tt_obj) return;
+	if(tt_n6 || tt_w3c)
+	{
+		if(tt_wait) return;
+		tt_wait = true;
+		setTimeout('tt_wait = false;', 5);
+	}
+	var t_e = t_ev || window.event;
+	tt_SetDivPos(tt_EvX(t_e), tt_EvY(t_e));
+	if(tt_op6)
+	{
+		if(tt_area && t_e.target.tagName != 'AREA') tt_Hide();
+		else if(t_e.target.tagName == 'AREA') tt_area = true;
+	}
+}
+function tt_Hide()
+{
+	if(window.tt_obj)
+	{
+		if(window.tt_rdl) window.clearTimeout(tt_rdl);
+		if(!tt_sticky || !tt_act)
+		{
+			if(window.tt_rtm) window.clearTimeout(tt_rtm);
+			tt_ShowDiv(false);
+			tt_SetDivPos(-tt_objW, -tt_objH);
+			tt_obj = null;
+			if(typeof window.tt_upFunc != tt_u) document.onmouseup = window.tt_upFunc;
+		}
+		tt_sticky = false;
+		if(tt_op6 && tt_area) tt_area = false;
+		tt_ReleasMov();
+		if(tt_op7) tt_OpReHref();
+	}
+}
+function tt_Init()
+{
+	if(!(tt_op || tt_n4 || tt_n6 || tt_ie || tt_w3c)) return;
+
+	var htm = tt_n4? '<div style="position:absolute;"><\/div>' : '',
+	tags,
+	t_tj,
+	over,
+	esc = 'return escape(';
+	var i = tt_tags.length; while(i--)
+	{
+		tags = tt_ie? (document.all.tags(tt_tags[i]) || 1)
+			: document.getElementsByTagName? (document.getElementsByTagName(tt_tags[i]) || 1)
+			: (!tt_n4 && tt_tags[i]=="a")? document.links
+			: 1;
+		if(tt_n4 && (tt_tags[i] == "a" || tt_tags[i] == "layer")) tags = tt_N4Tags(tt_tags[i]);
+		var j = tags.length; while(j--)
+		{
+			if(typeof (t_tj = tags[j]).onmouseover == "function" && t_tj.onmouseover.toString().indexOf(esc) != -1 && !tt_n6 || tt_n6 && (over = t_tj.getAttribute("onmouseover")) && over.indexOf(esc) != -1)
+			{
+				if(over) t_tj.onmouseover = new Function(over);
+				var txt = unescape(t_tj.onmouseover());
+				htm += tt_Htm(
+					t_tj,
+					"tOoLtIp"+i+""+j,
+					txt.wzReplace("& ","&")
+				);
+
+				t_tj.onmouseover = new Function('e',
+					'tt_Show(e,'+
+					'"tOoLtIp' +i+''+j+ '",'+
+					((typeof t_tj.T_ABOVE != tt_u)? t_tj.T_ABOVE : ttAbove)+','+
+					((typeof t_tj.T_DELAY != tt_u)? t_tj.T_DELAY : ttDelay)+','+
+					((typeof t_tj.T_FIX != tt_u)? '"'+t_tj.T_FIX+'"' : '""')+','+
+					((typeof t_tj.T_LEFT != tt_u)? t_tj.T_LEFT : ttLeft)+','+
+					((typeof t_tj.T_OFFSETX != tt_u)? t_tj.T_OFFSETX : ttOffsetX)+','+
+					((typeof t_tj.T_OFFSETY != tt_u)? t_tj.T_OFFSETY : ttOffsetY)+','+
+					((typeof t_tj.T_STATIC != tt_u)? t_tj.T_STATIC : ttStatic)+','+
+					((typeof t_tj.T_STICKY != tt_u)? t_tj.T_STICKY : ttSticky)+','+
+					((typeof t_tj.T_TEMP != tt_u)? t_tj.T_TEMP : ttTemp)+
+					');'
+				);
+				t_tj.onmouseout = tt_Hide;
+				if(t_tj.alt) t_tj.alt = "";
+				if(t_tj.title) t_tj.title = "";
+			}
+		}
+	}
+	document.write(htm);
+}
+tt_Init();
diff -Naur gallery-1.5.1/layout/adminAlbumCommands.inc gallery-1.5.2/layout/adminAlbumCommands.inc
--- gallery-1.5.1/layout/adminAlbumCommands.inc	2005-06-30 13:16:57.000000000 +0200
+++ gallery-1.5.2/layout/adminAlbumCommands.inc	2006-01-08 21:07:17.000000000 +0100
@@ -3,41 +3,41 @@
 
 /* User is allowed to delete the album */
 if ($gallery->user->canDeleteAlbum($gallery->album)) {
-	echo "\n\t". popup_link("[". _("delete album") ."]", "delete_album.php?set_albumName={$tmpAlbumName}");
+	echo "\n\t". popup_link("[". gTranslate('core',"delete album") ."]", "delete_album.php?set_albumName={$tmpAlbumName}");
 }
 
 /* User is allowed to change the album */
 if ($gallery->user->canWriteToAlbum($gallery->album)) {
-	echo "\n\t". popup_link("[". _("move album") ."]", "move_album.php?set_albumName={$tmpAlbumName}&index=$i&reorder=0");
-	echo "\n\t". popup_link("[". _("reorder album") ."]", "move_album.php?set_albumName={$tmpAlbumName}&index=$i&reorder=1");
-	echo "\n\t". popup_link("[". _("rename album") ."]", "rename_album.php?set_albumName={$tmpAlbumName}&index=$i");
+	echo "\n\t". popup_link("[". gTranslate('core',"move album") ."]", "move_album.php?set_albumName={$tmpAlbumName}&index=$i&reorder=0");
+	echo "\n\t". popup_link("[". gTranslate('core',"reorder album") ."]", "move_album.php?set_albumName={$tmpAlbumName}&index=$i&reorder=1");
+	echo "\n\t". popup_link("[". gTranslate('core',"rename album") ."]", "rename_album.php?set_albumName={$tmpAlbumName}&index=$i");
 }
 
 /* User ist allowed to change album captions */
 /* Should this be into the above group ? */
 if ($gallery->user->canChangeTextOfAlbum($gallery->album) && !$gallery->session->offline) {
 	echo "\n\t". '<a href="'. makeGalleryUrl("captionator.php", array("set_albumName" => $tmpAlbumName)) . '">' . 
-		'['. _("edit captions") . ']</a>';
+		'['. gTranslate('core',"edit captions") . ']</a>';
 }
 
 /* User is Admin or Owner */
 if ($gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($gallery->album)) {
 
 	/* User is allowed to change Album Permissions */
-	echo "\n\t". popup_link("[" . _("permissions") ."]", "album_permissions.php?set_albumName={$tmpAlbumName}");
-	echo "\n\t". popup_link("[" . _("properties") ."]", "edit_appearance.php?set_albumName={$tmpAlbumName}", 0, true, 500, 600);
+	echo "\n\t". popup_link("[" . gTranslate('core',"permissions") ."]", "album_permissions.php?set_albumName={$tmpAlbumName}");
+	echo "\n\t". popup_link("[" . gTranslate('core',"properties") ."]", "edit_appearance.php?set_albumName={$tmpAlbumName}", 0, true, 500, 600);
 
 	/* User is allowed to view ALL comments */
 	if ($gallery->user->canViewComments($gallery->album)
 		&& ($gallery->app->comments_enabled == 'yes')
 		&& ($gallery->album->lastCommentDate("no") != -1)) {
 	    	echo "\n\t". '<a href="'. makeGalleryUrl("view_comments.php", array("set_albumName" => $tmpAlbumName)) . '">' .
-			'[' . _("view&nbsp;comments") . ']</a>';
+			'[' . gTranslate('core',"view&nbsp;comments") . ']</a>';
 	}
 
 	/* Watermarking support is enabled and user is allowed to watermark images/albums */
 	if (!empty($gallery->app->watermarkDir) && $gallery->album->numPhotos(1)) {
-		echo "\n\t". popup_link("[" . _("watermark&nbsp;album") . "]", "watermark_album.php?set_albumName={$tmpAlbumName}");
+		echo "\n\t". popup_link("[" . gTranslate('core',"watermark&nbsp;album") . "]", "watermark_album.php?set_albumName={$tmpAlbumName}");
 	}
 }
 ?>
diff -Naur gallery-1.5.1/layout/breadcrumb.inc gallery-1.5.2/layout/breadcrumb.inc
--- gallery-1.5.1/layout/breadcrumb.inc	2005-06-27 11:26:21.000000000 +0200
+++ gallery-1.5.2/layout/breadcrumb.inc	2005-12-04 20:43:46.000000000 +0100
@@ -1,51 +1,52 @@
 <?php
-// $Id: breadcrumb.inc,v 1.28 2005/06/27 09:26:21 paour Exp $
+// $Id: breadcrumb.inc,v 1.31 2005/12/04 19:43:46 jenst Exp $
 ?>
 <?php
 global $breadcrumb, $navigator, $gallery;
 global $navigator, $adminbox, $adminText;
 
-if(!includeTemplate('breadcrumb.tpl')) {
-	// If the border color is not passed in, we do a black/white combo
-	
-	if (isset($breadcrumb["bordercolor"])) {
-		$borderIn = $breadcrumb["bordercolor"];
-	} else {
-		$borderIn = "#FFFFFF";
-	}
-	
-	if (!isset($navigator) && !isset($adminbox) && !isset($adminText)) {
-		$style="border-color: $borderIn; border-width:1px; border-style: solid;";
-	} else {
-		$style='';
-	}
+if(!includeTemplate('breadcrumb.tpl')
+  && (!empty($breadcrumb['text']) || $gallery->user->isLoggedIn())) {
 
-	if (!isset($navigator)) {
-		$navigator["fullWidth"] = 100;
-		$navigator["widthUnits"] = "%";
-	}
+    /* If the border color is not passed in, we do a black/white combo */
+    if (isset($breadcrumb["bordercolor"])) {
+        $borderIn = $breadcrumb["bordercolor"];
+    } else {
+        $borderIn = "#FFFFFF";
+    }
 
-	$pixelImage = '<img src="' . getImagePath('pixel_trans.gif') .'" width="1" height="1" alt="transpixel">';
-	?>
+    if (!isset($navigator) && !isset($adminbox) && !isset($adminText)) {
+        $style = "border-color: $borderIn; border-width:1px; border-style: solid;";
+    } else {
+        $style = '';
+    }
+
+    if (!isset($navigator)) {
+        $navigator["fullWidth"] = 100;
+        $navigator["widthUnits"] = "%";
+    }
+
+    $pixelImage = '<img src="' . getImagePath('pixel_trans.gif') .'" width="1" height="1" alt="transpixel">';
+?>
 
 <table style="<?php echo $style; ?>" width="<?php echo $navigator["fullWidth"] . $navigator["widthUnits"] ?>" border="0" cellspacing="0" cellpadding="0" class="modnavboxmid">
 <tr> 
 	<?php
-		if ($gallery->user->isLoggedIn()) {
-			$name = $gallery->user->getFullName();
-			if (!$name) {
-				$name = $gallery->user->getUsername();
-			}
-			echo "\t". '<td style="padding-left:5px;" class="bread" height="18">'. _("Logged in as:") .' '. $name .'</td>';
-		}
+	if ($gallery->user->isLoggedIn()) {
+	    $name = $gallery->user->getFullName();
+	    if (!$name) {
+	        $name = $gallery->user->getUsername();
+	    }
+	    echo "\t". '<td class="bread" height="18" style="text-align:'. langLeft() .'; padding-left: 5px; padding-right: 5px;">'. _("Logged in as:") .' '. $name .'</td>';
+	}
 	?>
 		
-	<td class="bread" height="18" align="right">
+	<td class="bread" style="text-align:<?php echo langRight(); ?>; padding-left: 5px; padding-right: 5px;">
 	<?php
 	if (isset($breadcrumb['text'])) {
-	foreach($breadcrumb["text"] as $nr => $text) {
-	    echo "\t\t$text\n";
-	}
+	    foreach($breadcrumb["text"] as $nr => $text) {
+	        echo "\t\t$text\n";
+	    }
 	}
 	?>
 	</td> 
diff -Naur gallery-1.5.1/layout/commentbox.inc gallery-1.5.2/layout/commentbox.inc
--- gallery-1.5.1/layout/commentbox.inc	2005-07-06 12:49:53.000000000 +0200
+++ gallery-1.5.2/layout/commentbox.inc	2005-10-17 19:46:12.000000000 +0200
@@ -1,10 +1,10 @@
-<?php /* $Id: commentbox.inc,v 1.22 2005/07/06 10:49:53 jenst Exp $ */ ?>
+<?php /* $Id: commentbox.inc,v 1.23 2005/10/17 17:46:12 jenst Exp $ */ ?>
 <?php 
 	global $gallery, $comment, $index, $j;
 
 	$fromString = wordwrap($comment->getName(), 50, " ", 1) .'&nbsp;&nbsp;'. $comment->getDatePosted();
 	if ($gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($gallery->album)) {
-	    $fromString .= ' (@'. removeTags($comment->getIPNumber()) .')';
+	    $fromString .= ' (@'. strip_tags($comment->getIPNumber()) .')';
 	}
 ?>
 		<table width="100%" border="0" cellspacing="0" cellpadding="0" class="albumdesc">
diff -Naur gallery-1.5.1/layout/commentboxtop.inc gallery-1.5.2/layout/commentboxtop.inc
--- gallery-1.5.1/layout/commentboxtop.inc	2005-08-08 22:23:11.000000000 +0200
+++ gallery-1.5.2/layout/commentboxtop.inc	2005-10-05 00:29:01.000000000 +0200
@@ -1,4 +1,4 @@
-<?php /* $Id: commentboxtop.inc,v 1.22.4.1 2005/08/08 20:23:11 jenst Exp $ */ ?>
+<?php /* $Id: commentboxtop.inc,v 1.24 2005/10/04 22:29:01 jenst Exp $ */ ?>
 <?php global $commentbox, $embeddedAlbum, $myAlbumName, $myHighlightTag, $myAlbum, $index, $id, $i; ?>
         
 
@@ -39,18 +39,16 @@
 ?>
 	<td width="150" valign="top" ><a href="<?php echo makeAlbumUrl($gallery->session->albumName, $id) ?>"><?php echo $gallery->album->getThumbnailTag($i) ?></a></td>
 	<td width="20">&nbsp;</td>
-	<td valign="top">
+	<td style="vertical-align: top">
 <?php 
 	if ($gallery->album->isHidden($i)) {
 		echo "  (". _("hidden") .")";
 	} 
 
-	echo makeFormIntro('view_comments.php',array(
-		'name' => 'delete_comments',
-		'method' => 'post'));
+	echo makeFormIntro('view_comments.php',array('name' => 'delete_comments'));
 ?>
 	<input type="hidden" name="index" value="<?php echo $index ?>">
-	<table width="100%" border="0" cellspacing="0" cellpadding=0>
+	<table width="100%" border="0" cellspacing="0" cellpadding="0">
 	<tr>
 		<td colspan="2"><img src="<?php echo getImagePath('pixel_trans.gif') ?>" width="1" height="1" alt=""></td>
 		<td colspan="2"><img src="<?php echo getImagePath('pixel_trans.gif') ?>" width="1" height="1" alt=""></td>
diff -Naur gallery-1.5.1/layout/navigator.inc gallery-1.5.2/layout/navigator.inc
--- gallery-1.5.1/layout/navigator.inc	2005-08-08 22:23:11.000000000 +0200
+++ gallery-1.5.2/layout/navigator.inc	2005-12-09 00:32:38.000000000 +0100
@@ -1,4 +1,4 @@
-<?php /* $Id: navigator.inc,v 1.37.2.1 2005/08/08 20:23:11 jenst Exp $ */ ?>
+<?php /* $Id: navigator.inc,v 1.40 2005/12/08 23:32:38 jenst Exp $ */ ?>
 <?php
 global $navigator;
 if(!includeTemplate('navigator.tpl')) {
@@ -27,7 +27,7 @@
 	if ($navigator["bordercolor"]) {
 		$borderIn = $navigator["bordercolor"];
 	} else {
-		$borderIn = "";
+		$borderIn = '';
 	}
 
 	$url = $navigator["url"];
@@ -43,17 +43,7 @@
 	$npAltText= _("Next Page");
 	$lpAltText= _("Last Page");
 
-	if ($gallery->direction == "ltr") {
-		$fpImgUrl= getImagePath('nav_first.gif');
-		$ppImgUrl= getImagePath('nav_prev.gif');
-		$npImgUrl= getImagePath('nav_next.gif');
-		$lpImgUrl= getImagePath('nav_last.gif');
-	} else {
-		$fpImgUrl= getImagePath('nav_last.gif');
-		$ppImgUrl= getImagePath('nav_next.gif');
-		$npImgUrl= getImagePath('nav_prev.gif');
-		$lpImgUrl= getImagePath('nav_first.gif');
-	}
+	include(dirname(dirname(__FILE__)) .'/includes/definitions/navIcons.php');
 
 	$current = $navigator["page"];
 	$prevPage = $current -1;
@@ -63,11 +53,11 @@
 	#-- 'first' and 'previous button cell ---
 	if ($navigator["page"] != 1) {
 		$fpContent ='<a href="'. $url . $navigator['pageVar'] .'=1">';
-		$fpContent .='<img src="'. $fpImgUrl . '" border="0" width="27" height="11" alt="'. $fpAltText .'" title="'. $fpAltText .'">';
+		$fpContent .='<img src="'. $fpImgUrl . '"  alt="'. $fpAltText .'" title="'. $fpAltText .'">';
 		$fpContent .='</a>';
 	
 		$ppContent ='<a href="'. $url . $navigator['pageVar'] .'='. $prevPage .'">';
-		$ppContent .='<img src="'. $ppImgUrl . '" border="0" width="72" height="11" alt="'. $ppAltText .'" title="'. $ppAltText .'">';
+		$ppContent .='<img src="'. $ppImgUrl . '"  alt="'. $ppAltText .'" title="'. $ppAltText .'">';
 	        $ppContent .='</a>';
 
 		$pClass='borderright';
@@ -80,11 +70,11 @@
 
 	#-- 'page numbers' cell ---                  
 	if ($begin != $end) {
-		$ndlUrl=getImagePath('nav_dot_left.gif');
-		$ndrUrl=getImagePath('nav_dot_right.gif');
-		$ndUrl=getImagePath('nav_dot.gif');
+		$ndlUrl = getImagePath('nav_dot_left.gif');
+		$ndrUrl = getImagePath('nav_dot_right.gif');
+		$ndUrl = getImagePath('nav_dot.gif');
 	
-		$mpContent = "\n\t\t". '<table border="0" cellpadding="0" cellspacing="0"><tr>';
+		$mpContent = "\n\t\t". '<table align="center" border="0" cellpadding="0" cellspacing="0"><tr>';
 		if (isset($beginNextBlock)) {
 		     $title = sprintf(_("Jump to page %d"), $beginNextBlock);
 		     $mpContent .= "\n\t". '<td><a title="'. $title .'" href="'. $url . $navigator['pageVar'] .'='. $beginNextBlock .'">...</a></td>';
@@ -123,11 +113,11 @@
 	#-- 'next' and 'last' button cell ---
 	if ($current < $maxPages) {
 		$npContent ='<a href="'. $url . $navigator['pageVar'] .'='. $nextPage .'">';
-		$npContent .='<img src="'. $npImgUrl . '" border="0" width="72" height="11" alt="'. $npAltText .'" title="'. $npAltText .'">';
+		$npContent .='<img src="'. $npImgUrl . '"  alt="'. $npAltText .'" title="'. $npAltText .'">';
 	        $npContent .='</a>';
 
 		$lpContent ='<a href="'. $url . $navigator['pageVar'] .'='. $navigator['maxPages'] .'">';
-		$lpContent .='<img src="'. $lpImgUrl . '" border="0" width="27" height="11" alt="'. $lpAltText .'" title="'. $lpAltText .'">';
+		$lpContent .='<img src="'. $lpImgUrl . '"  alt="'. $lpAltText .'" title="'. $lpAltText .'">';
 		$lpContent .='</a>';
 
 		$nClass='borderleft';
@@ -135,7 +125,7 @@
 		$npContent='&nbsp;';
 		$lpContent='&nbsp;';
 
-	        $nClass ='';
+	    $nClass ='';
 	}
 	?>
 
diff -Naur gallery-1.5.1/layout/navmicro.inc gallery-1.5.2/layout/navmicro.inc
--- gallery-1.5.1/layout/navmicro.inc	2005-06-20 16:45:43.000000000 +0200
+++ gallery-1.5.2/layout/navmicro.inc	2005-12-29 15:37:10.000000000 +0100
@@ -1,6 +1,8 @@
-<?php /* $Id: navmicro.inc,v 1.3 2005/06/20 14:45:43 jenst Exp $ */ ?>
+<?php /* $Id: navmicro.inc,v 1.4.2.1 2005/12/29 14:37:10 jenst Exp $ */ ?>
 <?php
 global $navigator;
+global $full;
+
 if(!includeTemplate('navmicro.tpl')) {
 	// Calculate the beginning and ending of the navigator range
 	$begin = 0;
@@ -24,20 +26,22 @@
 
 /* If first/last thumbs are enabled, generate them here. */
 if ( !strcmp($gallery->album->fields["nav_thumbs_first_last"],"yes") ) {
-	$navThumbsFirst = '<a href="'. makeAlbumUrl($gallery->session->albumName, $firstPage) .'">';
+	$fpUrl =  makeAlbumUrl($gallery->session->albumName, $firstPage, ($full) ? array('full' => 1) : NULL) ;
+	$navThumbsFirst = "<a href=\"$fpUrl\">";
 	$navThumbsFirst .= $gallery->album->getThumbnailTagById($firstPage,
 	   $gallery->album->fields["nav_thumbs_size"],"class=\"nav_micro_first_img\"");
-	$navThumbsFirst .='</a>&nbsp';
+	$navThumbsFirst .='</a>&nbsp;';
 
-	$navThumbsLast ='<a href="'. makeAlbumUrl($gallery->session->albumName, $lastPage) .'">';
+	$lpUrl = makeAlbumUrl($gallery->session->albumName, $lastPage, ($full) ? array('full' => 1) : NULL);
+	$navThumbsLast = "<a href=\"$lpUrl\">";
 	$navThumbsLast .= $gallery->album->getThumbnailTagById($lastPage,
 	   $gallery->album->fields["nav_thumbs_size"],"class=\"nav_micro_last_img\"");
-	$navThumbsLast .='</a>&nbsp';
+	$navThumbsLast .='</a>&nbsp;';
 
 /* If first/last thumbs are disabled, fill each with a space. */
 } else {
-	$navThumbsFirst = '&nbsp';
-	$navThumbsLast = '&nbsp';
+	$navThumbsFirst = '&nbsp;';
+	$navThumbsLast = '&nbsp;';
 }
 
 /* If the "Dynamic" style is selected, generate it */
@@ -48,10 +52,11 @@
 	for ($i = $gallery->album->fields["nav_thumbs_prev_shown"]; $i >= 1; $i--) {
 		if ( $navpage-$i < 0 ) { continue; }
 		$prevPage = $navigator["allIds"][$navpage-$i];
-		$navThumbsPrev .= '<a href="'. makeAlbumUrl($gallery->session->albumName, ($prevPage)).'">';
+		$ppUrl = makeAlbumUrl($gallery->session->albumName, $prevPage, ($full) ? array('full' => 1) : NULL);
+		$navThumbsPrev .= "<a href=\"$ppUrl\">";
 		$navThumbsPrev .= $gallery->album->getThumbnailTagById($prevPage,
 		   $gallery->album->fields["nav_thumbs_size"],"class=\"nav_micro_img\"");
-		$navThumbsPrev .='</a>&nbsp&nbsp';
+		$navThumbsPrev .='</a>&nbsp;&nbsp;';
 	}
 	
 	/* Create a list of the next thumbs, starting from right after current. */
@@ -59,7 +64,8 @@
 	for ($i = 1; $i <= $gallery->album->fields["nav_thumbs_next_shown"]; $i++) {
 		if ( $navpage+$i > $navcount-1 ) { break; }
 		$nextPage = $navigator["allIds"][$navpage+$i];
-		$navThumbsNext .= '&nbsp&nbsp<a href="'. makeAlbumUrl($gallery->session->albumName, ($nextPage)).'">';
+		$npUrl = makeAlbumUrl($gallery->session->albumName, $nextPage, ($full) ? array('full' => 1) : NULL);
+		$navThumbsNext .= "&nbsp;&nbsp;<a href=\"$npUrl\">";
 		$navThumbsNext .= $gallery->album->getThumbnailTagById($nextPage,
 		   $gallery->album->fields["nav_thumbs_size"],"class=\"nav_micro_img\"");
 		$navThumbsNext .='</a>';
@@ -113,7 +119,7 @@
         	           $gallery->album->fields["nav_thumbs_size"],"class=\"nav_micro_img\"");
 		}
 		$navBlogThumb .= '</a>';
-		$navBlogThumb .= '&nbsp&nbsp';
+		$navBlogThumb .= '&nbsp;&nbsp;';
 	}
 }
 ?>
diff -Naur gallery-1.5.1/layout/navphoto.inc gallery-1.5.2/layout/navphoto.inc
--- gallery-1.5.1/layout/navphoto.inc	2005-08-08 22:23:11.000000000 +0200
+++ gallery-1.5.2/layout/navphoto.inc	2005-12-28 19:11:17.000000000 +0100
@@ -1,4 +1,4 @@
-<?php /* $Id: navphoto.inc,v 1.37.2.1 2005/08/08 20:23:11 jenst Exp $ */ ?>
+<?php /* $Id: navphoto.inc,v 1.40 2005/12/28 18:11:17 jenst Exp $ */ ?>
 <?php
 global $navigator;
 global $full;
@@ -26,30 +26,22 @@
     $npAltText = _("Next Photo");
     $lpAltText = _("Last Photo");
 
-    if ($gallery->direction == "ltr") {
-        $fpImgUrl = getImagePath('nav_first.gif');
-        $ppImgUrl = getImagePath('nav_prev.gif');
-        $npImgUrl = getImagePath('nav_next.gif');
-        $lpImgUrl = getImagePath('nav_last.gif');
-    } else {
-        $fpImgUrl = getImagePath('nav_last.gif');
-        $ppImgUrl = getImagePath('nav_next.gif');
-        $npImgUrl = getImagePath('nav_prev.gif');
-        $lpImgUrl = getImagePath('nav_first.gif');
-    }
-
+   	include(dirname(dirname(__FILE__)) .'/includes/definitions/navIcons.php');
+   	
     $firstPage = $navigator["allIds"][0];
     $lastPage = $navigator["allIds"][$navcount-1];
 
     #-- 'first' and 'previous button cell ---
     if ($navpage > 0) {
-        $fpContent = '<a href="'. makeAlbumUrl($gallery->session->albumName, $firstPage, ($full) ? array('full' => 1) : NULL) .'">';
-        $fpContent .= '<img src="'. $fpImgUrl . '" border="0" width="27" height="11" alt="'. $fpAltText .'" title="'. $fpAltText .'">';
+    	$fpUrl =  makeAlbumUrl($gallery->session->albumName, $firstPage, ($full) ? array('full' => 1) : NULL) ;
+        $fpContent = "<a href=\"$fpUrl\">";
+        $fpContent .= '<img src="'. $fpImgUrl . '" alt="'. $fpAltText .'" title="'. $fpAltText .'">';
         $fpContent .= '</a>';
 
         $prevPage = $navigator["allIds"][$navpage-1];
-        $ppContent = '<a href="'. makeAlbumUrl($gallery->session->albumName, $prevPage, ($full) ? array('full' => 1) : NULL) .'">';
-        $ppContent .= '<img src="'. $ppImgUrl . '" border="0" width="72" height="11" alt="'. $ppAltText .'" title="'. $ppAltText .'">';
+        $ppUrl = makeAlbumUrl($gallery->session->albumName, $prevPage, ($full) ? array('full' => 1) : NULL);
+        $ppContent = "<a href=\"$ppUrl\">";
+        $ppContent .= '<img src="'. $ppImgUrl . '" alt="'. $ppAltText .'" title="'. $ppAltText .'">';
         $ppContent .= '</a>';
 
         $pClass= 'borderright';
@@ -61,17 +53,19 @@
     }
 
     #-- 'page numbers' cell ---
-    $mpContent=sprintf(_("%d of %d"), $navpage+1, $navcount);
+    $mpContent = sprintf(_("%d of %d"), $navpage+1, $navcount);
 
     #-- 'next' and 'last' button cell ---
     if ($navpage < $navcount-1) {
         $nextPage = $navigator["allIds"][$navpage+1];
-        $npContent = '<a href="'. makeAlbumUrl($gallery->session->albumName, $nextPage, ($full) ? array('full' => 1) : NULL) .'">';
-        $npContent .= '<img src="'. $npImgUrl . '" border="0" width="72" height="11" alt="'. $npAltText .'" title="'. $npAltText .'">';
+        $npUrl = makeAlbumUrl($gallery->session->albumName, $nextPage, ($full) ? array('full' => 1) : NULL);
+        $npContent = "<a href=\"$npUrl\">";
+        $npContent .= '<img src="'. $npImgUrl . '" alt="'. $npAltText .'" title="'. $npAltText .'">';
         $npContent .= '</a>';
 
-        $lpContent = '<a href="'. makeAlbumUrl($gallery->session->albumName, $lastPage, ($full) ? array('full' => 1) : NULL) .'">';
-        $lpContent .= '<img src="'. $lpImgUrl . '" border="0" width="27" height="11" alt="'. $lpAltText .'" title="'. $lpAltText .'">';
+        $lpUrl = makeAlbumUrl($gallery->session->albumName, $lastPage, ($full) ? array('full' => 1) : NULL);
+        $lpContent = "<a href=\"$lpUrl\">";
+        $lpContent .= '<img src="'. $lpImgUrl . '" alt="'. $lpAltText .'" title="'. $lpAltText .'">';
         $lpContent .= '</a>';
 
         $nClass = 'borderleft';
diff -Naur gallery-1.5.1/layout/watermarkform.inc gallery-1.5.2/layout/watermarkform.inc
--- gallery-1.5.1/layout/watermarkform.inc	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/layout/watermarkform.inc	2006-01-06 07:31:36.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: watermarkform.inc,v 1.21.2.1 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: watermarkform.inc,v 1.22.2.3 2006/01/06 06:31:36 jenst Exp $
  */
 
 /**
@@ -81,9 +81,9 @@
     closedir($wmDir);
     
     if(sizeof($options) > 0) {
-        echo "<b>" . _("Watermark") . ":</b>&nbsp;";
+        echo "<b>". _("Watermark:") ."</b>&nbsp;";
         
-        array_sort_by_fields(&$options, 'text', 'desc', false);
+        array_sort_by_fields($options, 'text', 'desc', false);
         if ($watermarkForm["allowNone"]) {
             $options[] = array('value' => '', 'text' => _("* No Watermark *"), 'selected' => true);
         }
@@ -102,7 +102,8 @@
 ?>
 </p>
 
-<p><b><?php echo _("Alignment") ?>:</b></p>
+<b><?php echo _("Alignment:") ?></b>
+<div align="<?php echo langLeft(); ?>">
 <table border="1" width="100%">
 <tr>
  <td><input <?php if ($wmAlign==1) echo " checked"; ?> type="radio" name="wmAlign" value="1">
@@ -114,9 +115,9 @@
 </tr>
 <tr>
  <td><input <?php if ($wmAlign==4) echo " checked"; ?> type="radio" name="wmAlign" value="4">
-     <?php echo _("Left") ?></td>
+ 	<?php echo _("Left") ?></td>
  <td><input <?php if ($wmAlign==5) echo " checked"; ?> type="radio" name="wmAlign" value="5">
-     <?php echo _("Center") ?></td>
+ 	<?php echo _("Center") ?></td>
  <td><input <?php if ($wmAlign==6) echo " checked"; ?> type="radio" name="wmAlign" value="6">
      <?php echo _("Right") ?></td>
 </tr>
@@ -137,6 +138,7 @@
   </td>
 </tr>
 </table>
+</div>
 <br>
 <?php if ($watermarkForm["askPreview"] && $gallery->user->canViewFullImages($gallery->album)) { ?>
 <b><?php echo _("Preview Size") ?>:</b><br>
diff -Naur gallery-1.5.1/lib/albumItem.php gallery-1.5.2/lib/albumItem.php
--- gallery-1.5.1/lib/albumItem.php	2005-07-19 22:57:21.000000000 +0200
+++ gallery-1.5.2/lib/albumItem.php	2006-01-09 03:47:03.000000000 +0100
@@ -1,4 +1,25 @@
 <?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: albumItem.php,v 1.14.2.3 2006/01/09 02:47:03 jenst Exp $
+ */
+
 /**
  * @package	Item
  * @author	Jens Tkotz
@@ -9,223 +30,270 @@
  * @param	integer $i	index number of the item
  * @return 	array		Array of all possible album item for the current user.
  */
-function getItemActions($i, $withIcons = false) {
-    global $gallery;
-    global $nextId;
+function getItemActions($i, $withIcons = false, $popupsOnly = false) {
+	global $gallery;
+	global $nextId;
 
-    static $javascriptSet;
+	static $javascriptSet;
 
-    $id = $gallery->album->getPhotoId($i);
-    $override = ($withIcons) ? '' : 'no';
-    $options = array();
+	$id = $gallery->album->getPhotoId($i);
+	$override = ($withIcons) ? '' : 'no';
+	$options = array();
 
-    if (!$gallery->session->offline && empty($javascriptSet)) { ?>
+    if (!$gallery->session->offline && empty($javascriptSet) && !$withIcons) { ?>
   <script language="javascript1.2" type="text/JavaScript">
   <!-- //
 
   function imageEditChoice(selected_select) {
-      var sel_index = selected_select.selectedIndex;
-      var sel_value = selected_select.options[sel_index].value;
-      var sel_class = selected_select.options[sel_index].className;
-      selected_select.options[0].selected = true;
-      selected_select.blur();
-      if (sel_class == 'url') {
-          document.location = sel_value;
-      } else {
-          // the only other option should be popup
-          <?php echo popup('sel_value', 1) ?>
-      }
+  	var sel_index = selected_select.selectedIndex;
+  	var sel_value = selected_select.options[sel_index].value;
+  	var sel_class = selected_select.options[sel_index].className;
+  	selected_select.options[0].selected = true;
+  	selected_select.blur();
+  	if (sel_class == 'url') {
+  		document.location = sel_value;
+  	} else {
+  		// the only other option should be popup
+  		<?php echo popup('sel_value', 1) ?>
+  	}
   }
   //-->
   </script>
 <?php 
-    $javascriptSet = true;
+$javascriptSet = true;
     }
 
-    if ($gallery->album->isMovieByIndex($i)) {
-        $label = _("Movie");
-    } elseif ($gallery->album->isAlbum($i)) {
-        $label = _("Album");
+    $isAlbum = false;
+    $isMovie = false;
+    $isPhoto = false;
+
+    if ($gallery->album->isAlbum($i)) {
+    	$label = _("Album");
+    	if(!isset($myAlbum)) {
+    		$myAlbum = $gallery->album->getNestedAlbum($i, true);
+    	}
+    	$isAlbum = true;
+    }
+    elseif ($gallery->album->isMovieByIndex($i)) {
+    	$label = _("Movie");
+    	$isMovie = true;
     } else {
-        $label = _("Photo");
-    }
-
-    if($gallery->album->isAlbum($i)) {
-        if(!isset($myAlbum)) {
-            $albumName = $gallery->album->getAlbumName($i);
-            $myAlbum = new Album();
-            $myAlbum->load($albumName);
-        }
+    	$label = _("Photo");
+		$isPhoto = true;
     }
 
-    $options[] = array(
-        'text' => '&laquo; '. sprintf(_("%s actions"), $label) . ' &raquo;',
-        'value' => ''
-    );
-
-    if ($gallery->album->getItemOwnerDelete() &&
-      $gallery->album->isItemOwner($gallery->user->getUid(), $i) &&
-      !$gallery->album->isAlbum($i) &&
-      !$gallery->user->canDeleteFromAlbum($gallery->album)) {
-        $options[] = array(
-          'text' => getIconText('delete.gif',_("Delete"), $override, $withIcons),
-            'value' => showChoice2('delete_photo.php', array('id' => $id, 'nextId' => $nextId))
-        );
+    if ($gallery->user->isAdmin()) {
+    	$isAdmin = true;
     }
-
-    if ($gallery->user->canChangeTextOfAlbum($gallery->album)) {
-        if (isset($myAlbum)) {
-            if ($gallery->user->canChangeTextOfAlbum($myAlbum)) {
-                $options[] = array(
-                    'text' => getIconText('',_('Edit Title'), $override, $withIcons),
-                    'value' =>  showChoice2("edit_field.php", array("set_albumName" => $myAlbum->fields["name"], "field" => "title"))
-                );
-                $options[] = array(
-                    'text' => getIconText('',_('Edit Description'), $override, $withIcons),
-                    'value' =>  showChoice2("edit_field.php", array("set_albumName" => $myAlbum->fields["name"], "field" => "description"))
-                );
-            }
-            if ($gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($myAlbum)) {
-                $options[] = array(
-                    'text' => getIconText('',_("Rename Album"), $override, $withIcons),
-                    'value' => showChoice2("rename_album.php", array("set_albumName" => $myAlbum->fields["name"], "index" => $i))
-                );
-            }
-        } else {
-            $options[] = array(
-                'text' => getIconText('kcmfontinst.gif',_("Edit Text"), $override, $withIcons),
-                'value' => showChoice2("edit_caption.php", array("index" => $i))
-            );
-        }
+    
+    if (isset($isAdmin) ||
+      (isset($myAlbum) && $gallery->user->isOwnerOfAlbum($myAlbum)) ||
+      $gallery->album->isItemOwner($gallery->user->getUid(), $i)) {
+      	$isOwner = true;
+	}
+      
+    if ($gallery->user->canWriteToAlbum($gallery->album) ||
+       ($gallery->album->getItemOwnerModify() && isset($isOwner))) {
+		$canModify = true;
+	}
+          
+    /* ----- User can write to album, or is owner of the item and item-owner can modify items ----- */
+    if (isset($canModify)) {
+    	if ($isPhoto) {
+    		$options[] = array(
+	    		'pure_text' => _("Edit Text"),
+	    		'text' => getIconText('kcmfontinst.gif', _("Edit Text"), $override, $withIcons),
+	    		'value' => showChoice2("edit_caption.php", array("index" => $i))
+    		);
+    		$options[] = array(
+	    		'pure_text' => _("Edit Thumbnail"),
+	    		'text' => getIconText('thumbnail.gif', _("Edit Thumbnail"), $override, $withIcons),
+	    		'value' => showChoice2('edit_thumb.php', array('index' => $i))
+    		);
+    		$options[] = array(
+	    		'pure_text' => sprintf(_("Rotate/Flip"), $label),
+	    		'text' => getIconText('reload.gif', sprintf(_("Rotate/Flip"), $label), $override, $withIcons),
+	    		'value' => showChoice2('rotate_photo.php', array('index' => $i))
+    		);
+    		$options[] = array(
+	    		'pure_text' => _("Resize"),
+	    		'text' => getIconText('window_fullscreen.gif', _("Resize"), $override, $withIcons),
+	    		'value' => showChoice2('resize_photo.php', array('index' => $i))
+    		);
+    		if (!empty($gallery->app->watermarkDir)) {
+    			$options[] = array(
+	    			'pure_text' => _("Watermark"),
+	    			'text' => getIconText('camera.gif', _("Watermark"), $override, $withIcons),
+	    			'value' =>  showChoice2('edit_watermark.php', array('index' => $i))
+    			);
+    		}
+    		if(!$popupsOnly) {
+    			$options[] = array(
+	    			'pure_text' => _("ImageMap"),
+	    			'text' => getIconText('behavior-capplet.gif', _("ImageMap"), $override, $withIcons),
+	    			'value' => showChoice2('imagemap.php', array('index' => $i), false)
+    			);
+    		}
+    	}
+
+    	/* ----- Item is subalbum ----- */
+    	if ($isAlbum) {
+    		$options[] = array(
+	    		'pure_text' => _('Edit Title'),
+	    		'text' => getIconText('', _('Edit Title'), $override, $withIcons),
+	    		'value' =>  showChoice2("edit_field.php", array("set_albumName" => $myAlbum->fields["name"], "field" => "title"))
+    		);
+    		$options[] = array(
+	    		'pure_text' => _('Edit Description'),
+	    		'text' => getIconText('', _('Edit Description'), $override, $withIcons),
+	    		'value' =>  showChoice2("edit_field.php", array("set_albumName" => $myAlbum->fields["name"], "field" => "description"))
+    		);
+
+    		$options[] = array(
+	    		'pure_text' => _("Rename Album"),
+	    		'text' => getIconText('', _("Rename Album"), $override, $withIcons),
+	    		'value' => showChoice2("rename_album.php", array("set_albumName" => $myAlbum->fields["name"], "index" => $i))
+    		);
+
+    		$options[] = array(
+	    		'pure_text' => _("Reset Counter"),
+	    		'text' => getIconText('', _("Reset Counter"), $override, $withIcons),
+	    		'value' => showChoice2("do_command.php",
+		    		array(
+			    		'cmd' => 'reset-album-clicks',
+			    		'set_albumName' => $gallery->album->getAlbumName($i),
+			    		'return' => urlencode(makeGalleryUrl("view_album.php"))
+		    		)
+	    		)
+    		);
+
+    		$options[] = array(
+	    		'pure_text' => _("Permissions"),
+	    		'text' => getIconText('decrypted.gif', _("Permissions"), $override, $withIcons),
+	    		'value' => showChoice2("album_permissions.php", array("set_albumName" => $myAlbum->fields["name"]))
+    		);
+    		
+    		// Watermarking support is enabled and user is allowed to watermark images/albums /
+    		if (!empty($gallery->app->watermarkDir) && $myAlbum->numPhotos(1)) {
+    			$options[] = array(
+	    			'pure_text' => _("Watermark Album"),
+	    			'text' => getIconText('', _("Watermark Album"), $override, $withIcons),
+	    			'value' => showChoice2("watermark_album.php", array("set_albumName" => $myAlbum->fields["name"]))
+    			);
+    		}
+    		if ($gallery->user->canViewComments($myAlbum) && ($myAlbum->lastCommentDate("no") != -1)) {
+    			$options[] = array(
+	    			'pure_text' => _("View Comments"),
+	    			'text' => getIconText('', _("View Comments"), $override, $withIcons),
+	    			'value' => showChoice2("view_comments.php", array("set_albumName" => $myAlbum->fields["name"]),"url")
+    			);
+    		}
+    	}
     }
 
     if ($gallery->user->canWriteToAlbum($gallery->album)) {
-        if (!$gallery->album->isMovieByIndex($i) && !$gallery->album->isAlbum($i)) {
-            $options[] = array(
-                'text' => getIconText('thumbnail.gif',_("Edit Thumbnail"), $override, $withIcons),
-                'value' => showChoice2('edit_thumb.php', array('index' => $i))
-            );
-            $options[] = array(
-                'text' => getIconText('reload.gif',sprintf(_("Rotate/Flip"), $label), $override, $withIcons),
-                'value' => showChoice2('rotate_photo.php', array('index' => $i))
-            );
-            $options[] = array(
-                'text' => getIconText('window_fullscreen.gif',_("Resize"), $override, $withIcons),
-                'value' => showChoice2('resize_photo.php', array('index' => $i))
-            );
-            if (!empty($gallery->app->watermarkDir)) {
-                $options[] = array(
-                    'text' => getIconText('camera.gif',_("Watermark"), $override, $withIcons),
-                    'value' =>  showChoice2('edit_watermark.php', array('index' => $i))
-                );
-            }
-        }
-        if (!$gallery->album->isMovieByIndex($i)) {
-            $nestedAlbum=$gallery->album->getNestedAlbum($i);
-            if (!$gallery->album->isAlbum($i) || $nestedAlbum->hasHighlight()) {
-                $options[] = array(
-                    'text' => getIconText('viewmag1.gif',sprintf(_("Set as highlight"),$label), $override, $withIcons),
-                    'value' => showChoice2('do_command.php', array('cmd' => 'highlight', 'index' => $i))
-                );
-            }
-        }
-        if ($gallery->album->isAlbum($i)) {
-            $options[] = array(
-                'text' => getIconText('',_("Reset Counter"), $override, $withIcons),
-                'value' => showChoice2("do_command.php", array("cmd" => "reset-album-clicks", "set_albumName" => $gallery->album->getAlbumName($i),"return" => urlencode(makeGalleryUrl("view_album.php"))))
-            );
-        }
-        $options[] = array(
-            'text' => getIconText('tab_duplicate.gif',_("Move"), $override, $withIcons),
-            'value' => showChoice2("move_photo.php", array("index" => $i, 'reorder' => 0))
-        );
-        $options[] = array(
-            'text' => getIconText('tab_duplicate.gif',_("Reorder"), $override, $withIcons),
-            'value' => showChoice2("move_photo.php", array("index" => $i, 'reorder' => 1))
-        );
-        if (!$gallery->album->isAlbum($i)) {
-            $options[] = array(
-                'text' => getIconText('editcopy.gif',_("Copy"), $override, $withIcons),
-                'value' => showChoice2("copy_photo.php", array("index" => $i))
-            );
-        }
-    }
-
-    if ($gallery->user->isAdmin() || ((isset($myAlbum) && $gallery->user->isOwnerOfAlbum($myAlbum)) ||
-      $gallery->album->isItemOwner($gallery->user->getUid(), $i))) {
-        if ($gallery->album->isHidden($i)) {
-            $options[] = array(
-                'text' => getIconText('idea.gif',_("Show"), $override, $withIcons),
-                'value' => showChoice2("do_command.php", array("cmd" => "show", "index" => $i))
-            );
-        } else {
-            $options[] = array(
-                'text' => getIconText('no_idea.gif',_("Hide"), $override, $withIcons),
-                'value' => showChoice2("do_command.php", array("cmd" => "hide", "index" => $i))
-            );
-        }
-    }
-
-    if ($gallery->user->canDeleteFromAlbum($gallery->album)) {
-        if($gallery->album->isAlbum($i)) {
-            if($gallery->user->canDeleteAlbum($myAlbum)) {
-                $options[] = array(
-                    'text' =>getIconText('delete.gif', _("Delete"), $override, $withIcons),
-                    'value' => showChoice2("delete_photo.php", array("id" => $myAlbum->fields["name"], "albumDelete" => 1))
-                );
-            }
-        } else {
-            $options[] = array(
-                'text' => getIconText('delete.gif',_("Delete"), $override, $withIcons),
-                'value' => showChoice2('delete_photo.php', array('id' => $id, 'nextId' => $nextId))
-            );
-        }
-    }
-
-    if($gallery->album->isAlbum($i)) {
-        if ($gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($myAlbum)) {
-            $options[] = array(
-                'text' => getIconText('decrypted.gif',_("Permissions"), $override, $withIcons),
-                'value' => showChoice2("album_permissions.php", array("set_albumName" => $myAlbum->fields["name"]))
-            );
-            // Watermarking support is enabled and user is allowed to watermark images/albums /
-            if (!empty($gallery->app->watermarkDir) && $myAlbum->numPhotos(1)) {
-                $options[] = array(
-                    'text' => getIconText('',_("Watermark Album"), $override, $withIcons),
-                    'value' => showChoice2("watermark_album.php", array("set_albumName" => $myAlbum->fields["name"]))
-                );
-            }
-            if ($gallery->user->canViewComments($myAlbum) && ($myAlbum->lastCommentDate("no") != -1)) {
-                $options[] = array(
-                    'text' => getIconText('',_("View Comments"), $override, $withIcons),
-                    'value' => showChoice2("view_comments.php", array("set_albumName" => $myAlbum->fields["name"]),"url")
-                );
-            }
-        }
-    } else {
-        $photo = $gallery->album->getPhoto($i);
-        if ($gallery->album->fields["use_exif"] == "yes" &&
-          (eregi("jpe?g\$", $photo->image->type)) &&
-          (isset($gallery->app->use_exif) || isset($gallery->app->exiftags))) {
-            $options[] = array(
-                'text' => getIconText('frame_query.gif',_("Photo properties"), $override, $withIcons),
-                'value' => showChoice2("view_photo_properties.php", array("index" => $i))
-            );
-        }
+    	$options[] = array(
+	    	'pure_text' => _("Move"),
+	    	'text' => getIconText('tab_duplicate.gif',_("Reorder"), $override, $withIcons),
+	    	'value' => showChoice2("move_photo.php", array("index" => $i, 'reorder' => 1))
+    	);
+    	
+    	/* ----- Item is photo, or subalbum with highlight ----- */
+    	if ($isPhoto || (isset($myAlbum) && $myAlbum->hasHighlight())) {
+    		$options[] = array(
+	    		'pure_text' => _("Set as highlight"),
+	    		'text' => getIconText('viewmag1.gif', _("Set as highlight"), $override, $withIcons),
+	    		'value' => showChoice2('do_command.php', array('cmd' => 'highlight', 'index' => $i))
+    		);
+    	}
+    }
+
+    if (isset($isAdmin)) {
+    	$options[] = array(
+	    	'pure_text' => _("Move"),
+	    	'text' => getIconText('tab_duplicate.gif', _("Move"), $override, $withIcons),
+	    	'value' => showChoice2("move_photo.php", array("index" => $i, 'reorder' => 0))
+    	);
+
+    	if (! $isAlbum) {
+    		$options[] = array(
+	    		'pure_text' => _("Copy"),
+	    		'text' => getIconText('editcopy.gif', _("Copy"), $override, $withIcons),
+	    		'value' => showChoice2("copy_photo.php", array("index" => $i))
+    		);
+
+    		$options[] = array(
+	    		'pure_text' => _("Change Owner"),
+	    		'text' => getIconText('yast_kuser.gif', _("Change Owner"), $override, $withIcons),
+	    		'value' => showChoice2("photo_owner.php", array("id" => $id))
+    		);
+    	}
+    }
+
+    if (isset($isOwner)) {
+    	if ($gallery->album->isHidden($i)) {
+    		$options[] = array(
+	    		'pure_text' => _("Show"),
+	    		'text' => getIconText('idea.gif', _("Show"), $override, $withIcons),
+	    		'value' => showChoice2("do_command.php", array("cmd" => "show", "index" => $i))
+    		);
+    	} else {
+    		$options[] = array(
+	    		'pure_text' => _("Hide"),
+	    		'text' => getIconText('no_idea.gif', _("Hide"), $override, $withIcons),
+	    		'value' => showChoice2("do_command.php", array("cmd" => "hide", "index" => $i))
+    		);
+    	}
+    }
+
+    if ($gallery->user->canDeleteFromAlbum($gallery->album) ||
+      ($gallery->album->getItemOwnerDelete() && isset($isOwner))) {
+    	if($isAlbum) {
+    		if($gallery->user->canDeleteAlbum($myAlbum)) {
+    			$options[] = array(
+	    			'pure_text' => _("Delete"),
+	    			'text' =>getIconText('delete.gif', _("Delete"), $override, $withIcons),
+	    			'value' => showChoice2("delete_photo.php", array("id" => $myAlbum->fields["name"], "albumDelete" => 1))
+    			);
+    		}
+    	} else {
+    		$options[] = array(
+	    		'pure_text' => _("Delete"),
+	    		'text' => getIconText('delete.gif',_("Delete"), $override, $withIcons),
+	    		'value' => showChoice2('delete_photo.php', array('id' => $id, 'nextId' => $nextId))
+    		);
+    	}
+    }
+
+    if($isPhoto) {
+    	$photo = $gallery->album->getPhoto($i);
+    	if ($gallery->album->fields["use_exif"] == 'yes' &&
+    	  (eregi("jpe?g\$", $photo->image->type)) &&
+    	  (isset($gallery->app->use_exif) || isset($gallery->app->exiftags))) {
+    		$options['showExif'] = array(
+	    		'pure_text' => _("Photo properties"),
+	    		'text' => getIconText('frame_query.gif', _("Photo properties"), $override, $withIcons),
+	    		'value' => showChoice2("view_photo_properties.php", array("index" => $i))
+    		);
+    	}
+    }
+
+    if(!empty($options)) {
+    	if(sizeof($options) > 1) {
+    		array_sort_by_fields($options, 'pure_text', 'asc', false, true);
+    	}
+    	$options = array_merge(array(
+    	  array(
+	    	'pure_text' => sprintf(_("%s actions"), $label),
+	    	'text' => '&laquo; '. sprintf(_("%s actions"), $label) . ' &raquo;',
+	    	'value' => '',
+	    	'selected' => true)
+	    	), $options
+    	);
     }
-
-    if ($gallery->user->isAdmin() && !$gallery->album->isAlbum($i)) {
-        $options[] = array(
-            'text' => getIconText('yast_kuser.gif',_("Change Owner"), $override, $withIcons),
-            'value' => showChoice2("photo_owner.php", array("id" => $id))
-        );
-    }
-
-    array_sort_by_fields($options, 'text');
     return $options;
 }
 
-
 function showComments ($index, $albumName, $reverse = false) {
     global $gallery;
 
diff -Naur gallery-1.5.1/lib/album.php gallery-1.5.2/lib/album.php
--- gallery-1.5.1/lib/album.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/lib/album.php	2006-01-08 21:07:18.000000000 +0100
@@ -0,0 +1,175 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: album.php,v 1.4.2.2 2006/01/08 20:07:18 jenst Exp $
+ */
+
+/**
+ * @package	Album
+ * @author	Jens Tkotz
+ */
+
+/**
+ * Returns the default value for an album property. Either for a specific album, or global
+ * @param   string    $property
+ * @param   object    $album
+ * @param   boolean   $global
+ * @return  mixed     $retPoperty
+ * @author Jens Tkotz <jens@peino.de>
+ */
+function getPropertyDefault($property, $album = false, $global = false) {
+    global $gallery;
+    
+    $retProperty = false;
+    
+    if ($album) {
+        if ($global) {
+            if(isset($gallery->app->default[$property])) {
+                $retProperty = $gallery->app->default[$property];
+            }
+        }    
+        else {
+            if(isset($album->fields[$property])) {
+                $retProperty = $album->fields[$property];
+            }
+        }
+    }
+    elseif ($global) {
+        $retProperty = $gallery->app->$property;
+    }
+    
+    return $retProperty;
+} 
+
+function createNewAlbum( $parentName, $newAlbumName = '', $newAlbumTitle = '', $newAlbumDesc = '') {
+	global $gallery;
+
+	// get parent album name
+	$albumDB = new AlbumDB(FALSE);
+
+	// set new album name from param or default
+	$gallery->session->albumName = $albumDB->newAlbumName($newAlbumName);
+
+	$gallery->album = new Album();
+	$gallery->album->fields["name"] = $gallery->session->albumName;
+
+	// guid is not created during new Album() as a performance optimization
+	// it only needs to be created when an album is created or modified by adding or deleting photos
+	$gallery->album->fields['guid'] = genGUID();
+
+	// set title and description
+	if (!empty($newAlbumTitle)) {
+		$gallery->album->fields["title"] = $newAlbumTitle;
+	}
+	if (!empty($newAlbumDesc)) {
+		$gallery->album->fields["description"] = $newAlbumDesc;
+	}
+
+	$gallery->album->setOwner($gallery->user->getUid());
+	$gallery->album->fields['creation_date']  = time();
+
+	/* if this is a nested album, set nested parameters */
+	if (!empty($parentName)) {
+		$gallery->album->fields['parentAlbumName'] = $parentName;
+		$parentAlbum = $albumDB->getAlbumByName($parentName);
+		$parentAlbum->addNestedAlbum($gallery->session->albumName);
+		$parentAlbum->save(array(i18n("Album \"{$gallery->album->fields['name']}\" created as a sub-album of \"$parentName\".")));
+		// Set default values in nested album to match settings of parent.
+		$gallery->album->fields["perms"]           = $parentAlbum->fields["perms"];
+		$gallery->album->fields['extra_fields']    = $parentAlbum->fields['extra_fields'];
+		$gallery->album->fields["bgcolor"]         = $parentAlbum->fields["bgcolor"];
+		$gallery->album->fields["textcolor"]       = $parentAlbum->fields["textcolor"];
+		$gallery->album->fields["linkcolor"]       = $parentAlbum->fields["linkcolor"];
+		$gallery->album->fields['background']      = $parentAlbum->fields['background'];
+		$gallery->album->fields["font"]            = $parentAlbum->fields["font"];
+		$gallery->album->fields["border"]          = $parentAlbum->fields["border"];
+		$gallery->album->fields["bordercolor"]     = $parentAlbum->fields["bordercolor"];
+		$gallery->album->fields["thumb_size"]      = $parentAlbum->fields["thumb_size"];
+		$gallery->album->fields["resize_size"]     = $parentAlbum->fields["resize_size"];
+		$gallery->album->fields["resize_file_size"]     = $parentAlbum->fields["resize_file_size"];
+		$gallery->album->fields['max_size']        = $parentAlbum->fields['max_size'];
+		$gallery->album->fields['max_file_size']   = $parentAlbum->fields['max_file_size'];
+		$gallery->album->fields['returnto']        = $parentAlbum->fields['returnto'];
+		$gallery->album->fields["rows"]            = $parentAlbum->fields["rows"];
+		$gallery->album->fields["cols"]            = $parentAlbum->fields["cols"];
+		$gallery->album->fields["fit_to_window"]   = $parentAlbum->fields["fit_to_window"];
+		$gallery->album->fields["use_fullOnly"]    = $parentAlbum->fields["use_fullOnly"];
+		$gallery->album->fields["print_photos"]    = $parentAlbum->fields["print_photos"];
+		$gallery->album->fields['slideshow_type']  = $parentAlbum->fields['slideshow_type'];
+		$gallery->album->fields['slideshow_recursive'] = $parentAlbum->fields['slideshow_recursive'];
+		$gallery->album->fields['slideshow_length'] = $parentAlbum->fields['slideshow_length'];
+		$gallery->album->fields['slideshow_loop'] = $parentAlbum->fields['slideshow_loop'];
+		$gallery->album->fields['album_frame']    = $parentAlbum->fields['album_frame'];
+		$gallery->album->fields['thumb_frame']    = $parentAlbum->fields['thumb_frame'];
+		$gallery->album->fields['image_frame']    = $parentAlbum->fields['image_frame'];
+		$gallery->album->fields["use_exif"]        = $parentAlbum->fields["use_exif"];
+		$gallery->album->fields["display_clicks"]  = $parentAlbum->fields["display_clicks"];
+		$gallery->album->fields["item_owner_display"] = $parentAlbum->fields["item_owner_display"];
+		$gallery->album->fields["item_owner_modify"]  = $parentAlbum->fields["item_owner_modify"];
+		$gallery->album->fields["item_owner_delete"]  = $parentAlbum->fields["item_owner_delete"];
+		$gallery->album->fields["add_to_beginning"]   = $parentAlbum->fields["add_to_beginning"];
+		$gallery->album->fields['showDimensions']  = $parentAlbum->fields['showDimensions'];
+
+		$returnVal = $gallery->album->save(array(i18n("Album \"{$gallery->album->fields['name']}\" created as a sub-album of \"$parentName\".")));
+	} else {
+		$gallery->album->save(array(i18n("Root album \"{$gallery->album->fields['name']}\" created.")));
+		/*
+		* Get a new albumDB because our old copy is not up to
+		* date after we created a new album
+		*/
+		$albumDB = new AlbumDB(FALSE);
+
+		/* move the album to the top if not a nested album*/
+		$numAlbums = $albumDB->numAlbums($gallery->user);
+		$albumDB->moveAlbum($gallery->user, $numAlbums, 1);
+		$returnVal = $albumDB->save();
+	}
+
+	if (!empty($returnVal)) {
+		return $gallery->session->albumName;
+	} else {
+		return 0;
+	}
+}
+
+/**
+ * Returns an array of the parent album names for a given child
+ * album.
+ * Array is reverted, so the first Element is the topalbum.
+ * If you set $addChild true, then the child album itself is added as last Element.
+ * Based on code by: Dariush Molavi
+ */
+function getParentAlbums($childAlbum, $addChild = false) {
+	$pAlbum = $childAlbum;
+	$parentNameArray = array();
+
+	if ($addChild == true) {
+		$parentNameArray[$pAlbum->fields['name']] = $pAlbum->fields['title'];
+	}
+
+	while ($pAlbum = $pAlbum->getParentAlbum(FALSE)) {
+		$parentNameArray[$pAlbum->fields['name']] = $pAlbum->fields['title'];
+	}
+
+	$parentNameArray = array_reverse($parentNameArray);
+
+	return $parentNameArray;
+}
+
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/lib/content.php gallery-1.5.2/lib/content.php
--- gallery-1.5.1/lib/content.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/lib/content.php	2006-01-13 18:38:10.000000000 +0100
@@ -0,0 +1,1212 @@
+<?php
+/*
+* Gallery - a web based photo album viewer and editor
+* Copyright (C) 2000-2006 Bharat Mediratta
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or (at
+* your option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+*
+* $Id: content.php,v 1.14.2.3 2006/01/13 17:38:10 jenst Exp $
+*/
+
+/**
+ * @package	Layout
+ * @author	Jens Tkotz
+ */
+
+function editField($album, $field, $link = null) {
+    global $gallery;
+
+    $buf = '';
+    if ($link) {
+        $buf .= "<a href=\"$link\">";
+    }
+    $buf .= $album->fields[$field];
+    if ($link) {
+        $buf .= '</a>';
+    }
+    if ($gallery->user->canChangeTextOfAlbum($album)) {
+        if (!strcmp($buf, "")) {
+            $buf = "<i>&lt;". gTranslate('common', "Empty") . "&gt;</i>";
+        }
+        $url = "edit_field.php?set_albumName={$album->fields['name']}&field=$field"; // should replace with &amp; for validatation
+        $buf .= ' <span class="editlink">';
+        $buf .= popup_link( "[". sprintf(gTranslate('common', "edit %s"), _($field)) . "]", $url) ;
+        $buf .= '</span>';
+    }
+    return $buf;
+}
+
+function editCaption($album, $index) {
+    global $gallery;
+
+    $abuf ='';
+    $buf  = nl2br($album->getCaption($index));
+
+    if (($gallery->user->canChangeTextOfAlbum($album) ||
+      ($gallery->album->getItemOwnerModify() &&
+      $gallery->album->isItemOwner($gallery->user->getUid(), $index))) && 
+      !$gallery->session->offline) {
+
+        if (empty($buf)) {
+            $buf = '<i>&lt;'. gTranslate('common', "No Caption") .'&gt;</i>';
+        }
+        $url = "edit_caption.php?set_albumName={$album->fields['name']}&index=$index";
+        $abuf = '<span class="editlink">';
+        $abuf .= popup_link("[". gTranslate('common',"edit") ."]", $url);
+        $abuf .= '</span>';
+    }
+    $buf .= $album->getCaptionName($index);
+    $buf .= $abuf;
+
+    return $buf;
+}
+
+function viewComments($index, $addComments, $page_url, $newestFirst = false, $addType = '', $album = false) {
+    global $gallery;
+    global $commenter_name;
+
+    echo showComments($index, $album, $newestFirst);
+
+    if ($addComments) {
+        /* Default is the popup link.
+		 * addType given through function call overrides default.
+		 */
+        if (empty($addType)) {
+            $addType = (isset($gallery->app->comments_addType) ? $gallery->app->comments_addType : "popup");
+        }
+        if ($addType == 'inside') {
+            echo '<br><form action="'. $page_url .'" name="theform" method="POST">';
+            drawCommentAddForm($commenter_name);
+            echo '</form>';
+        }
+        else {
+            $id = $gallery->album->getPhotoId($index);
+            $url = "add_comment.php?set_albumName={$gallery->album->fields['name']}&id=$id";
+            echo "\n" .'<div align="center" class="editlink">' .
+            popup_link('[' . gTranslate('common', "add comment") . ']', $url, 0) .
+            '</div><br>';
+        }
+    }
+}
+
+function drawCommentAddForm($commenter_name = '', $cols = 50) {
+    global $gallery;
+    if ($gallery->user->isLoggedIn() &&
+      (empty($commenter_name) || $gallery->app->comments_anonymous == 'no')) {
+        $commenter_name = $gallery->user->printableName($gallery->app->comments_display_name);
+    }
+?>
+
+<table class="commentbox" cellpadding="0" cellspacing="0">
+<tr>
+	<td colspan="2" class="commentboxhead"><?php echo gTranslate('common', "Add your comment") ?></td>
+</tr>
+<tr>
+	<td class="commentboxhead"><?php echo gTranslate('common', "Commenter:"); ?></td>
+	<td class="commentboxhead">
+<?php
+
+if (!$gallery->user->isLoggedIn() ) {
+    echo '<input name="commenter_name" value="'. $commenter_name .'" size="30">';
+} else {
+    if ($gallery->app->comments_anonymous == 'yes') {
+        echo '<input name="commenter_name" value="'. $commenter_name. '" size="30">';
+    } else {
+        echo $commenter_name;
+        echo '<input type="hidden" name="commenter_name" value="'. $commenter_name .'" size="30">';
+    }
+}
+?>
+</td>
+</tr>
+<tr>
+	<td class="commentlabel" valign="top"><?php echo gTranslate('common', "Message:") ?></td>
+	<td><textarea name="comment_text" cols="<?php echo $cols ?>" rows="5"></textarea></td>
+</tr>
+<tr>
+	<td colspan="2" class="commentboxfooter" align="right"><input name="save" type="submit" value="<?php echo gTranslate('common', "Post comment") ?>"></td>
+</tr>
+</table>
+<?php 
+}
+
+function drawApplet($width, $height, $code, $archive, $album, $defaults, $overrides, $configFile, $errorMsg) {
+    global $gallery, $GALLERY_EMBEDDED_INSIDE, $GALLERY_EMBEDDED_INSIDE_TYPE;
+    global $_CONF; // for geeklog
+    global $board_config; // for phpBB2
+
+    if (file_exists($configFile)) {
+        include($configFile);
+
+        if (isset($configDefaults)) {
+            $defaults = array_merge($defaults, $configDefaults);
+        }
+        if (isset($configOverrides)) {
+            $overrides = array_merge($overrides, $configOverrides);
+        }
+    }
+
+    $cookieInfo = session_get_cookie_params();
+
+    $cookie_name = session_name();
+    $cookie_value = session_id();
+    $cookie_domain = $cookieInfo['domain'];
+    $cookie_path = $cookieInfo['path'];
+
+    // handle CMS-specific overrides
+    if (isset($GALLERY_EMBEDDED_INSIDE)) {
+        switch ($GALLERY_EMBEDDED_INSIDE_TYPE) {
+            case 'phpnuke':
+                $cookie_name = 'user';
+                $cookie_value = $_COOKIE[$cookie_name];
+            break;
+            case 'GeekLog':
+                $cookie_name = $_CONF['cookie_session'];
+                $cookie_value = $_COOKIE[$cookie_name];
+            break;
+            case 'phpBB2':
+                $cookie_name = $board_config['cookie_name'] . '_sid';
+                $cookie_value = $_COOKIE[$cookie_name];
+            break;
+            case 'mambo':
+	    case 'joomla':
+                $cookie1_name = 'sessioncookie';
+                $cookie1_value = $_COOKIE[$cookie1_name];
+            break;
+        }
+    }
+
+    $defaults['uiLocale'] = $gallery->language;
+?>
+	<object
+		classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
+		codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"
+		width="<?php echo $width ?>" height="<?php echo $height ?>">
+	<param name="code" value="<?php echo $code ?>">
+	<param name="archive" value="<?php echo $archive ?>">
+	<param name="type" value="application/x-java-applet;version=1.4">
+	<param name="scriptable" value="false">
+	<param name="progressbar" value="true">
+	<param name="boxmessage" value="Downloading the Gallery Remote Applet">
+	<param name="gr_url" value="<?php echo $gallery->app->photoAlbumURL ?>">
+<?php if (isset($GALLERY_EMBEDDED_INSIDE)) { ?>
+	<param name="gr_url_full" value="<?php echo makeGalleryUrl('gallery_remote2.php') ?>">
+<?php } ?>
+	<param name="gr_cookie_name" value="<?php echo $cookie_name ?>">
+	<param name="gr_cookie_value" value="<?php echo $cookie_value ?>">
+	<param name="gr_cookie_domain" value="<?php echo $cookie_domain ?>">
+	<param name="gr_cookie_path" value="<?php echo $cookie_path ?>">
+<?php if (isset($cookie1_name)) { ?>
+	<param name="gr_cookie1_name" value="<?php echo $cookie1_name ?>">
+	<param name="gr_cookie1_value" value="<?php echo $cookie1_value ?>">
+<?php } ?>
+	<param name="gr_album" value="<?php echo $album ?>">
+<?php
+foreach ($defaults as $key => $value) {
+    echo "\t<param name=\"GRDefault_". $key ."\" value=\"". $value ."\">\n";
+}
+
+foreach ($overrides as $key => $value) {
+    echo "\t<param name=\"GROverride_". $key ."\" value=\"". $value ."\">\n";
+}
+?>
+
+	<comment>
+		<embed
+				type="application/x-java-applet;version=1.4"
+				code="<?php echo $code ?>"
+				archive="<?php echo $archive ?>"
+				width="<?php echo $width ?>"
+				height="<?php echo $height ?>"
+				scriptable="false"
+				progressbar="true"
+				boxmessage="Downloading the Gallery Remote Applet"
+				pluginspage="http://java.sun.com/j2se/1.4.2/download.html"
+				gr_url="<?php echo $gallery->app->photoAlbumURL ?>"
+<?php if (isset($GALLERY_EMBEDDED_INSIDE)) { ?>
+				gr_url_full="<?php echo makeGalleryUrl('gallery_remote2.php') ?>"
+<?php } ?>
+				gr_cookie_name="<?php echo $cookie_name ?>"
+				gr_cookie_value="<?php echo $cookie_value ?>"
+				gr_cookie_domain="<?php echo $cookie_domain ?>"
+				gr_cookie_path="<?php echo $cookie_path ?>"
+<?php if (isset($cookie1_name)) { ?>
+				gr_cookie1_name="<?php echo $cookie1_name ?>"
+				gr_cookie1_value="<?php echo $cookie1_value ?>"
+<?php } ?>
+				gr_album="<?php echo $album ?>"
+<?php
+foreach ($defaults as $key => $value) {
+    echo "\t\t\t\tGRDefault_". $key ."=\"". $value ."\"\n";
+}
+
+foreach ($overrides as $key => $value) {
+    echo "\t\t\t\tGROverride_". $key ."=\"". $value ."\"\n";
+}
+?>
+			<noembed alt="<?php echo $errorMsg ?>"><?php echo $errorMsg ?></noembed>
+		</embed>
+	</comment>
+</object>
+<?php
+}
+
+function createTreeArray($albumName,$depth = 0) {
+    global $gallery;
+    $printedHeader = 0;
+    $myAlbum = new Album();
+    $myAlbum->load($albumName);
+    $numPhotos = $myAlbum->numPhotos(1);
+
+    $tree = array();
+    if ($depth >= $gallery->app->albumTreeDepth) {
+        return $tree;
+    }
+
+    for ($i = 1; $i <= $numPhotos; $i++) {
+        set_time_limit($gallery->app->timeLimit);
+        if ($myAlbum->isAlbum($i) && !$myAlbum->isHidden($i)) {
+            $myName = $myAlbum->getAlbumName($i, false);
+            $nestedAlbum = new Album();
+            $nestedAlbum->load($myName);
+            if ($gallery->user->canReadAlbum($nestedAlbum)) {
+                $title = $nestedAlbum->fields['title'];
+                if (!strcmp($nestedAlbum->fields['display_clicks'], 'yes')
+                  && !$gallery->session->offline) {
+                    $clicksText = "(" . gTranslate('common', "1 view", "%d views", $nestedAlbum->getClicks()) . ")";
+                } else {
+                    $clicksText = '';
+                }
+
+		$albumUrl = makeAlbumUrl($myName);
+		$subtree = createTreeArray($myName, $depth+1);
+		$highlightTag = $nestedAlbum->getHighlightTag($gallery->app->default["nav_thumbs_size"],
+                  'class="nav_micro_img"', "$title $clicksText");
+                $microthumb = "<a href=\"$albumUrl\">$highlightTag</a> ";
+		$tree[] = array(
+		    'albumUrl' => $albumUrl,
+		    'albumName' => $myName, 
+		    'titel' => $title,
+		    'clicksText' => $clicksText,
+		    'microthumb' => $microthumb,
+		    'subTree' => $subtree);
+            }
+        }
+    }
+    return $tree;
+}
+
+function printChildren($tree, $depth = 0) {
+	if ($depth == 0 && !empty($tree)) {
+		echo '<div style="font-weight: bold; margin-bottom: 3px">'. gTranslate('common', "Sub-albums:") ."</div>\n";
+	}
+
+	foreach($tree as $nr => $content) {
+		echo "\n<table cellpadding=\"0\" cellspacing=\"0\" class=\"subalbumTreeLine\" style=\"margin-". langLeft() .":". 20 * $depth ."px\">";
+		echo "<tr><td>";
+		if(empty($content['subTree']) && $nr < sizeof($tree)-1) {
+			echo gImage('icons/tree/join-'. langRight(). '.gif', '');
+		}
+		else {
+			echo gImage('icons/tree/joinbottom-'. langRight() .'.gif', '');
+		}
+		echo "</td><td class=\"subalbumTreeElement\">";
+		echo '<a href="'. $content['albumUrl'] .'">';
+		echo $content['titel'] .' ';
+		echo $content['clicksText'] .'</a>';
+		echo "</td></tr></table>";
+		if(!empty($content['subTree'])) {
+			printChildren($content['subTree'], $depth+1);
+		}
+	}
+}
+
+function printMicroChildren2($tree, $depth = 0) {
+    if ($depth == 0 && !empty($tree)) {
+        echo '<div style="font-weight: bold; margin-bottom: 3px">'. gTranslate('common', "Sub-albums:") ."</div>\n";
+    }
+
+    foreach($tree as $nr => $content) {
+	echo $content['microthumb'];
+	if(!empty($content['subTree'])) {
+            printMicroChildren2($content['subTree'], $depth+1);
+        }
+    }
+}
+
+function printMetaData($image_info) {
+    // Print meta data
+    echo "<table border=\"1\">\n";
+    $row = 0;
+    foreach ($image_info as $info) {
+        echo '<tr>';
+        if ($row == 0) {
+            $keys = array_keys($info);
+            foreach ($keys as $key) {
+                echo "<th>$key</th>";
+            }
+            echo "</tr>\n<tr>";
+        }
+
+        foreach ($keys as $key) {
+            echo '<td>'. $info[$key]. '</td>';
+        }
+        $row++;
+        echo "</tr>\n";
+    }
+    echo "</table>\n";
+}
+
+/**
+ * Returns a link to the docs, if present, or NULL
+ * @author    Andrew Lindeman
+ */
+function galleryDocs() {
+    global $gallery;
+
+    $base = dirname(dirname(__FILE__));
+
+    if (fs_file_exists("$base/docs/index.html")) {
+        if (isset($gallery->app->photoAlbumURL)) {
+            $url = $gallery->app->photoAlbumURL . '/docs/index.html';
+        }
+        else {  // When first time config without $gallery set.
+            $url = '../docs/index.html';
+        }
+        return $url;
+    } else {
+        return NULL;
+    }
+}
+
+/**
+ * This function displays tables with the Fields of an Photo
+ * @param	integer	$index				Fields of this photo are displayed.
+ * @param	array	$extra_fields		You need to give the extrafields ; hint: use getExtraFields()
+ * @param	boolean	$withExtraFields	if true, then the extra fields are displayed
+ * @param 	boolean	$withExif			if true, then the EXIF Data are displayed
+ * @param	mixed	$full				Needed for getting dimensions of the photo
+ * @param	boolean	$forceRefresh		Needed for getting EXIF Data
+ */
+function displayPhotoFields($index, $extra_fields, $withExtraFields = true, $withExif = true, $full = NULL, $forceRefresh = 0) {
+    global $gallery;
+
+    $photo = $gallery->album->getPhoto($index);
+
+    // if we have extra fiels and we want to show them, then get the values
+    if (isset($extra_fields) && $withExtraFields) {
+        $CF = getExtraFieldsValues($index, $extra_fields, $full);
+        if (!empty($CF)) {
+            $tables = array('' => $CF);
+        }
+    }
+
+    if ($withExif && (isset($gallery->app->use_exif) || isset($gallery->app->exiftags)) &&
+      (eregi("jpe?g\$", $photo->image->type))) {
+        $myExif = $gallery->album->getExif($index, isset($forceRefresh));
+        if (!empty($myExif) && !isset($myExif['Error'])) {
+
+            $tables[gTranslate('common', "EXIF Data")]  = $myExif;
+        } elseif (isset($myExif['status']) && $myExif['status'] == 1) {
+            echo '<p class="warning">'. gTranslate('common', "Display of EXIF data enabled, but no data found.") .'</p>';
+        }
+    }
+
+    if (!isset($tables)) {
+        return;
+    }
+
+    foreach ($tables as $caption => $fields) {
+        $customFieldsTable = new galleryTable();
+        $customFieldsTable->setAttrs(array('class' => 'customFieldsTable'));
+        $customFieldsTable->setCaption($caption, 'customFieldsTableCaption');
+
+        foreach ($fields as $key => $value) {
+            $customFieldsTable->addElement(array('content' => $key));
+            $customFieldsTable->addElement(array('content' => ':'));
+            $customFieldsTable->addElement(array('content' => $value));
+        }
+        echo $customFieldsTable->render();
+    }
+}
+
+function includeTemplate($tplName, $skinname='') {
+    global $gallery;
+
+    $base = dirname(dirname(__FILE__));
+
+    if (!$skinname) {
+        $skinname = $gallery->app->skinname;
+    }
+
+    $filename = "$base/skins/$skinname/tpl/$tplName";
+    if (fs_is_readable($filename)) {
+        include($filename);
+        return true;
+    } else {
+        return false;
+    }
+}
+
+/**
+ * Displays the ownename, if an email is available, then as mailto: link
+ * @param  object  $owner
+ * @return string
+ * @author Jens Tkotz <jens@peino.de
+ */
+function showOwner($owner) {
+    global $GALLERY_EMBEDDED_INSIDE_TYPE;
+    global $_CONF;				/* Needed for GeekLog */
+
+    switch ($GALLERY_EMBEDDED_INSIDE_TYPE) {
+        case 'GeekLog':
+        return '<a href="'. $_CONF['site_url'] .'/users.php?mode=profile&uid='. $owner->uid .'">'. $owner->displayName() .'</a>';
+        break;
+
+        default:
+        $name = $owner->displayName();
+
+        if (!$owner->getEmail()) {
+            return $name;
+        } else {
+            return '<a href="mailto:' . $owner->getEmail() . '">' . $name . '</a>';
+        }
+        break;
+    }
+}
+
+function getIconText($iconName = '', $altText = '', $overrideMode = '', $useBrackets = true) {
+    global $gallery;
+
+    $text = $altText;
+    $base = dirname(dirname(__FILE__));
+
+    if (!empty($overrideMode)) {
+        $iconMode = $overrideMode;
+    } elseif (isset($gallery->app->useIcons)) {
+        $iconMode = $gallery->app->useIcons;
+    } else {
+        $iconMode = 'no';
+    }
+
+    if ($iconMode != "no" && $iconName != '') {
+        if ($iconMode == 'both') {
+            $altText = '';
+        }
+
+        if (file_exists("$base/images/icons/$iconName")) {
+            $imgSrc = $gallery->app->photoAlbumURL .'/images/icons/'. $iconName;
+            $linkText = "<img src=\"$imgSrc\" title=\"$altText\" alt=\"$altText\" style=\"border: none;\">";
+
+            if ($iconMode == "both") {
+                $linkText .= "<br>$text";
+            }
+        }
+    }
+
+    if (empty($linkText)) {
+        if($useBrackets) {
+            $linkText = '['. $text . ']';
+        } else {
+            $linkText = $text;
+        }
+    }
+
+    return $linkText;
+}
+
+function makeIconMenu($iconElements, $align = 'left', $closeTable = true, $linebreak = false) {
+    global $gallery;
+
+    if (empty($iconElements)) {
+        return '';
+    }
+
+    // For rtl/ltr stuff
+    if ($gallery->direction == 'rtl') {
+        $align = ($align == 'left') ? 'right' : 'left';
+    }
+
+    $html = "\n". '<table id="menu" align="'. $align .'"><tr>';
+    $i = 0;
+    foreach ($iconElements as $element) {
+        $i++;
+        if (stristr($element,'</a>')) {
+            $html .= "\n\t". '<td>'. $element .'</td>';
+        } else {
+            $html .= "\n\t". '<td class="noLink">'. $element .'</td>';
+        }
+        if($i > sizeof($iconElements)/2 && $linebreak) {
+            $html .= "\n</tr>\n</tr>";
+            $i=0;
+        }
+    }
+
+    if ($closeTable == true) {
+        $html .= "</tr>\n</table>";
+    }
+
+    return $html;
+}
+
+/**
+ * @param	string	$formerSearchString	Optional former searchh string
+ * @param	string	$align			Optional alignment
+ * @return	string	$html			HTML code that contains a form for entering the searchstring
+ * @author	Jens Tkotz <jens@peino.de>
+ */
+function addSearchForm($formerSearchString = '', $align = '') {
+    $html = '';
+
+    $html .= makeFormIntro('search.php', array(
+        'name'     => 'search_form',
+        'style'    => "text-align: $align",
+        'class'   => 'search')
+    );
+
+    $html .= "\t". gTranslate('common', "Search:");
+    $html .= '<input class="searchform" type="text" name="searchstring" value="'. $formerSearchString .'" size="25">';
+    $html .= "\n</form>\n";
+
+    return $html;
+}
+
+/**
+ * This is either a wrapper around fs_file_size(), 
+ * or just a formatter for a filesize given in bytes.
+ * Return a human readable filesize.
+ * 
+ * @param   string  $filesize   if omitted, function gets filesize of given filename
+ * @param	string	$filename
+ * @return	string  the formated filesize
+ * @author	Jens Tkotz <jens@peino.de>
+ */
+function formatted_filesize($filesize = 0, $filename = '') {
+
+    $filesize = (int)$filesize;
+    if($filesize == 0 || $filename != '') {
+        $filesize = fs_filesize($filename);
+    }
+    
+    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
+    $unit_count = (count($units) - 1);
+
+    $pass = 0; // set zero, for Bytes
+    while( $filesize >= 1024 && $pass < $unit_count ) {
+        $filesize /= 1024;
+        $pass++;
+    }
+
+    return round($filesize, 2) .'&nbsp;'. $units[$pass];
+}
+
+function dismissAndReload() {
+    if (isDebugging()) {
+        echo "\n<body onLoad='opener.location.reload();'>\n";
+        echo '<p align="center" class="error">';
+        echo gTranslate('common', "Not closing this window because debug mode is on") ;
+        echo "\n<hr>\n</p>";
+        echo "\n</body>";
+    } else {
+        echo "<body onLoad='opener.location.reload(); parent.close()'></body>";
+    }
+    echo "\n</html>";
+}
+
+function reload() {
+    echo '<script language="javascript1.2" type="text/JavaScript">';
+    echo 'opener.location.reload()';
+    echo '</script>';
+}
+
+function dismissAndLoad($url) {
+    if (isDebugging()) {
+        echo("<BODY onLoad='opener.location = \"$url\"; '>");
+        echo("Loading URL: $url");
+        echo("<center><b>" . gTranslate('common', "Not closing this window because debug mode is on") ."</b></center>");
+        echo("<hr>");
+    } else {
+        echo("<BODY onLoad='opener.location = \"$url\"; parent.close()'>");
+    }
+}
+
+function dismiss() {
+    echo("<BODY onLoad='parent.close()'>");
+}
+
+function includeLayout($name, $skinname='') {
+    global $gallery;
+
+    $base = dirname(dirname(__FILE__));
+
+    if (!$skinname) {
+        $skinname = $gallery->app->skinname;
+    }
+
+    $defaultname = "$base/layout/$name";
+    $fullname = "$base/skins/$skinname/layout/$name";
+
+    if (fs_file_exists($fullname) && !broken_link($fullname)) {
+        include ($fullname);
+    } elseif (fs_file_exists($defaultname) && !broken_link($defaultname)) {
+        include ($defaultname);
+    } else {
+        echo gallery_error(sprintf(gTranslate('common', "Problem including file %s"), $name));
+    }
+}
+
+function includeHtmlWrap($name, $skinname = '') {
+
+    // define these globals to make them available to custom text
+    global $gallery;
+
+    $base = dirname(dirname(__FILE__));
+    $domainname = $base . '/html_wrap/' . $_SERVER['HTTP_HOST'] . "/$name";
+
+    if (!$skinname) {
+        $skinname = $gallery->app->skinname;
+    }
+
+    if (fs_file_exists($domainname) && !broken_link($domainname)) {
+        include ($domainname);
+    }
+    else {
+        $defaultname = "$base/html_wrap/$name";
+        $fullname = "$base/skins/$skinname/html_wrap/$name";
+
+        if (fs_file_exists($fullname) && !broken_link($fullname)) {
+            include ($fullname);
+        }
+        elseif (fs_file_exists($defaultname) && !broken_link($defaultname)) {
+            include ($defaultname);
+        } else {
+            include ("$defaultname.default");
+        }
+    }
+
+    return 1;
+}
+
+/**
+ * Wrapper around _getStyleSheetLink, its defines which stylesheet link is generated.
+ * @return	string	$styleSheetLinks	The generated HTML <LINK> to load the stylesheets. Empty when already loaded.
+ */
+function getStyleSheetLink() {
+    global $GALLERY_EMBEDDED_INSIDE;
+    global $GALLERY_OK;
+
+    static $styleSheetSet;
+
+    $styleSheetLinks = '';
+
+    if(! $styleSheetSet) {
+        if (isset($GALLERY_OK) && $GALLERY_OK == false) {
+            $styleSheetLinks = _getStyleSheetLink("config");
+        } else {
+            $styleSheetLinks = _getStyleSheetLink("base");
+
+            if ($GALLERY_EMBEDDED_INSIDE) {
+                $styleSheetLinks .= _getStyleSheetLink("embedded_style");
+            } else {
+                $styleSheetLinks .= _getStyleSheetLink("screen");
+            }
+        }
+
+        $styleSheetSet = true;
+    }
+
+    return $styleSheetLinks;
+}
+
+/**
+ * Generates a HTML <link> to a css file.
+ *
+ * @param	string	$filename	Name of css file.
+ * @param	string	$skinname	Optional skinname, if omitted and not embedded, default skin is used.
+ * @return	string
+ */
+function _getStyleSheetLink($filename, $skinname='') {
+    global $gallery;
+    global $GALLERY_EMBEDDED_INSIDE;
+
+    $base = dirname(dirname(__FILE__));
+
+    if (!$skinname && isset($gallery->app) && isset($gallery->app->skinname) && !$GALLERY_EMBEDDED_INSIDE) {
+        $skinname = $gallery->app->skinname;
+    }
+
+    $sheetname = "skins/$skinname/css/$filename.css";
+    $sheetpath = "$base/$sheetname";
+
+    $sheetdefaultdomainname = 'css/'. $_SERVER['HTTP_HOST'] ."/$filename.css";
+    $sheetdefaultname = "css/$filename.css";
+    $sheetdefaultpath = "$base/$sheetdefaultname";
+
+    if (fs_file_exists($sheetpath) && !broken_link($sheetpath)) {
+        $file = $sheetname;
+    } elseif (fs_file_exists($sheetdefaultpath) && !broken_link($sheetdefaultpath)) {
+        $file = $sheetdefaultname;
+    } elseif (fs_file_exists($sheetdefaultdomainname) && !broken_link($sheetdefaultdomainname)) {
+        $file = $sheetdefaultdomainname;
+    } else {
+        $file = $sheetdefaultname. '.default';
+    }
+
+    $url = getGalleryBaseUrl() ."/$file";
+
+    return "\n". '  <link rel="stylesheet" type="text/css" href="' .$url . '">';
+}
+
+// The following 2 functions, printAlbumOptionList and printNestedVals provide
+// a html options list for moving photos and albums around within gallery.  There
+// were some defects in the original implimentation (I take full credit for the
+// defects), and thus on 5/22/03, I rewrote the 2 functions to conform to the
+// following requirements:
+//
+// For moving albums, there are 2 cases:
+// 1. moving root albums:  the user should be able to move a
+//    root album to any album to which they have write permissions
+//    AND not to an album nested beneath it in the same tree
+//    AND not to itself.
+// 2. moving nested albums:  the user should be able to move a
+//    nested album to any album to which they have write permissions
+//    AND not to an album nested beneath it in the same tree
+//    AND not to itself
+//    AND not to its parent album.
+//    The user should also be able to move it to the ROOT level
+//    with appropriate permissions.
+//
+// For moving pictures, there is 1 case:
+// 1. moving pictures:  the user should be able to move a picture
+//    to any album to which they have write permissions
+//    AND not to the album to which it already belongs.
+//
+// -jpk
+
+function printAlbumOptionList($rootDisplay = true, $moveRootAlbum = false, $movePhoto = false, $readOnly = false) {
+    global $gallery, $albumDB, $index;
+
+    $uptodate = true;
+    $mynumalbums = $albumDB->numAlbums($gallery->user);
+
+    if (!$readOnly) {
+        echo "\n\t<option value=\"0\" selected> << ". gTranslate('common', "Select Album") ." >> </option>\n\t";
+    }
+
+    // create a ROOT option for the user to move the
+    // album to the main display
+    if ($gallery->user->canCreateAlbums() && $rootDisplay && !$readOnly) {
+        echo "\n\t<option value=\".root\">". gTranslate('common', "Move to top level") ."</option>\n\t";
+    }
+
+    // display all albums that the user can move album to
+    for ($i = 1; $i <= $mynumalbums; $i++) {
+        $myAlbum = $albumDB->getAlbum($gallery->user, $i);
+        $myAlbumName = $myAlbum->fields['name'];
+        $myAlbumTitle = $myAlbum->fields['title'];
+
+        if ($gallery->user->canWriteToAlbum($myAlbum) ||
+          ($readOnly && $gallery->user->canReadAlbum($myAlbum))) {
+            if ($myAlbum->versionOutOfDate()) {
+                $uptodate = false;
+                continue;
+            }
+            if (!$readOnly && ($myAlbum == $gallery->album)) {
+                // Don't allow the user to move to the current location with
+                // value=0, but notify them that this is the current location
+                echo "<option value=\"$myAlbumName\">-- $myAlbumTitle (". gTranslate('common', "current location"). ")</option>\n\t";
+            } else {
+                if (sizeof($gallery->album->fields["votes"]) && $gallery->album->pollsCompatible($myAlbum)) {
+                    $myAlbumTitle .= ' *';
+                }
+                echo "<option value=\"$myAlbumName\">-- $myAlbumTitle</option>\n\t";
+            }
+        }
+
+        if ( !$readOnly && $moveRootAlbum && ($myAlbum == $gallery->album) && !$movePhoto )  {
+            // do nothing -- we are moving a root album, and we don't
+            // want to move it into its own album tree
+
+        } elseif (!$readOnly && !$gallery->album->isRoot() &&
+            ($myAlbum == $gallery->album->getNestedAlbum($index)) && !$movePhoto )  {
+            // do nothing -- we are moving an album, and we don't
+            // want to move it into its own album tree
+        } else {
+            printNestedVals(1, $myAlbumName, $movePhoto, $readOnly);
+        }
+    }
+
+    return $uptodate;
+}
+
+function printNestedVals($level, $albumName, $movePhoto, $readOnly) {
+    global $gallery, $index;
+
+    $myAlbum = new Album();
+    $myAlbum->load($albumName);
+
+    $numPhotos = $myAlbum->numPhotos(1);
+
+    for ($i = 1; $i <= $numPhotos; $i++) {
+        if ($myAlbum->isAlbum($i)) {
+            $myName = $myAlbum->getAlbumName($i);
+            $nestedAlbum = new Album();
+            $nestedAlbum->load($myName);
+            if ($gallery->user->canWriteToAlbum($nestedAlbum) ||
+              ($readOnly && $gallery->user->canReadAlbum($myAlbum))) {
+                $val2 = str_repeat("-- ", $level+1);
+                $val2 .= $nestedAlbum->fields['title'];
+
+                if (!$readOnly && ($nestedAlbum == $gallery->album)) {
+                    // don't allow user to move to here (value=0), but
+                    // notify them that this is their current location
+                    echo "<option value=\"0\"> $val2 (". gTranslate('common', "Current location") .")</option>\n\t";
+                } elseif (!$readOnly && !$gallery->album->isRoot() &&
+                  ($nestedAlbum == $gallery->album->getNestedAlbum($index))) {
+                    echo "<option value=\"0\"> $val2 (". gTranslate('common', "This album itself"). ")</option>\n\t";
+                } else {
+                    echo "<option value=\"$myName\"> $val2</option>\n\t";
+                }
+            }
+
+            if (!$readOnly && !$gallery->album->isRoot() &&
+             ($nestedAlbum == $gallery->album->getNestedAlbum($index)) && !$movePhoto ) {
+                // do nothing -- don't allow album move into its own tree
+            } else {
+                printNestedVals($level + 1, $myName, $movePhoto, $readOnly);
+            }
+        }
+    }
+}
+
+/* Formats a nice string to print below an item with comments */
+function lastCommentString($lastCommentDate, &$displayCommentLegend) {
+    global $gallery;
+    if ($lastCommentDate  <= 0) {
+        return  '';
+    }
+    if ($gallery->app->comments_indication_verbose == 'yes') {
+        $ret = "<br>". 
+          sprintf(gTranslate('common', "Last comment %s."), strftime($gallery->app->dateString, $lastCommentDate));
+    } else {
+        $ret= '<span class="commentIndication">*</span>';
+        $displayCommentLegend = 1;
+    }
+    return $ret;
+}
+
+function available_skins($description_only = false) {
+    global $gallery;
+    $version = '';
+    $last_update = '';
+    $possibleSkins = array();
+    $base = dirname(dirname(__FILE__));
+
+    if (isset($gallery->app->photoAlbumURL)) {
+        $base_url = $gallery->app->photoAlbumURL;
+    }
+    else {
+        $base_url = '..';
+    }
+
+    $dir = "$base/skins";
+    $opts['none'] = gTranslate('common', "No Skin");
+    $descriptions = '<dl>';
+    $name = "<a href=\"#\" onClick=\"document.config.skinname.options[0].selected=true; return false;\">". 
+	gTranslate('common', "No Skin") . "</a>";
+    $descriptions .= sprintf("<dt>%s</dt>", $name);
+    $descriptions .= '<dd>'. gTranslate('common', "The original look and feel.") .'</dd>';
+    $skincount = 0;
+
+    if (fs_is_dir($dir) && is_readable($dir) && $fd = fs_opendir($dir)) {
+        while ($file = readdir($fd)) {
+            $subdir = "$dir/$file/css";
+            $skincss = "$subdir/screen.css";
+            if (fs_is_dir($subdir) && fs_file_exists($skincss)) {
+                $possibleSkins[] = $file;
+            }
+        }
+
+        sort($possibleSkins);
+        foreach($possibleSkins as $file) {
+            $subdir = "$dir/$file/css";
+            $skininc = "$dir/$file/style.def";
+            $name = '';
+            $description = '';
+            $skincss = "$subdir/screen.css";
+            $skincount++;
+
+            if (fs_file_exists($skininc)) {
+                require($skininc);
+            }
+
+            if (empty($name)) {
+                $name = $file;
+            }
+
+            $opts[$file]=$name;
+            if (fs_file_exists("$dir/$file/images/screenshot.jpg")) {
+                $screenshot = $base_url . "/skins/$file/images/screenshot.jpg";
+            } elseif (fs_file_exists("$dir/$file/images/screenshot.gif")) {
+                $screenshot = $base_url . "/skins/$file/images/screenshot.gif";
+            } else {
+                $screenshot = '';
+            }
+
+            if ($screenshot) {
+                $name = popup_link($name, $screenshot, 1, false,
+                500, 800, '', 'document.config.skinname.options['. $skincount. '].selected=true; ');
+            }
+
+            $descriptions.="\n<dt style=\"margin-top:5px;\">$name";
+            if (!isset ($version)) {
+                $version = gTranslate('common', "unknown");
+            }
+
+            if (!isset($last_update)) {
+                $last_update = gTranslate('common', "unknown");
+            }
+
+            $descriptions .= '<span style="margin-left:10px; font-size:x-small">';
+            $descriptions .= sprintf(gTranslate('common', "Version: %s"),$version);
+            $descriptions .= '&nbsp;&nbsp;&nbsp;';
+            $descriptions .= sprintf(gTranslate('common', "Last Update: %s"), $last_update) ."</span></dt>";
+            $descriptions .= "<dd style=\"font-weight:bold; background-color:white;\">$description<br></dd>";
+        }
+
+        $descriptions .="\n</dl>";
+
+        if ($description_only) {
+            return $descriptions;
+        } else {
+            return $opts;
+        }
+    }
+}
+
+function available_frames($description_only = false) {
+    $GALLERY_BASE = dirname(dirname(__FILE__));
+
+    $opts = array(
+        'none' => gTranslate('common', "None"),
+        'dots' => gTranslate('common', "Dots"),
+        'solid' => gTranslate('common', "Solid"),
+        );
+        
+    $descriptions="<dl>" .
+        "<dt>" . popup_link(gTranslate('common', "None"), "frame_test.php?frame=none", 1)  . "</dt><dd>". gTranslate('common', "No frames")."</dd>" .
+        "<dt>" . popup_link(gTranslate('common', "Dots"), "frame_test.php?frame=dots", 1)  . "</dt><dd>". gTranslate('common', "Just a simple dashed border around the thumb.")."</dd>" .
+        "<dt>" . popup_link(gTranslate('common', "Solid"), "frame_test.php?frame=solid", 1) . "</dt><dd>". gTranslate('common', "Just a simple solid border around the thumb.")."</dd>" ;
+        
+    $dir = $GALLERY_BASE . '/html_wrap/frames';
+    
+    if (fs_is_dir($dir) && is_readable($dir) && $fd = fs_opendir($dir)) {
+        while ($file = readdir($fd)) {
+            $subdir = "$dir/$file";
+            $frameinc = "$subdir/frame.def";
+            if (fs_is_dir($subdir) && fs_file_exists($frameinc)) {
+                $name = NULL;
+                $description = NULL;
+                require($frameinc);
+                if (empty($name )) {
+                    $name = $file;
+                }
+                if (empty($description )) {
+                    $description = $file;
+                }
+                $opts[$file] = $name;
+                $descriptions.="\n<dt>" . popup_link($name, "frame_test.php?frame=$file", 1) . "</a></dt><dd>$description</dd>";
+            } else {
+                if (false && isDebugging()) {
+                    echo gallery_error(sprintf(gTranslate('common', "Skipping %s."),
+                    $subdir));
+                }
+            }
+        }
+    } else {
+        echo gallery_error(sprintf(gTranslate('common', "Can't open %s"), $dir));
+    }
+
+    $descriptions .= "\n</dl>";
+    if ($description_only) {
+        return $descriptions;
+    } else {
+        return $opts;
+    }
+}
+
+function doctype() {
+    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' . "\n";
+}
+
+function common_header($adds = array()) {
+    $metaTagAdds = array();
+    if(isset($adds['metaTags'])) {
+        $metaTagAdds = $adds['metaTags'];
+    }
+
+    // Do some meta tags
+    metatags($metaTagAdds);
+
+    // Import CSS Style_sheet
+    echo getStyleSheetLink();
+
+    // Set the Gallery Icon
+    echo "\n  <link rel=\"shortcut icon\" href=\"". makeGalleryUrl('images/favicon.ico') . "\">\n";
+}
+
+function metatags($adds = array()) {
+    global $gallery;
+
+    echo '<meta http-equiv="content-style-type" content="text/css">';
+    echo "\n  ". '<meta http-equiv="content-type" content="Mime-Type; charset='. $gallery->charset .'">';
+    echo "\n  ". '<meta name="content-language" content="' . str_replace ("_","-",$gallery->language) . '">';
+
+    if(!empty($adds)) {
+        foreach ($adds as $name => $content) {
+            echo "\n  ". '<meta name="'. $name .'" content="'. $content .'">';
+        }
+    }
+    echo "\n";
+}
+
+/**
+ * Generates a link to w3c validator
+ * 
+ * @param	string	$file	file to validate, relative to gallery dir
+ * @param	boolean	$valid	true/false wether we know the result ;)
+ * @param	array	$arg	optional array with urlargs
+ * @return	string	$link	HTML hyperlink
+ */
+function gallery_validation_link($file, $valid=true, $args = array()) {
+    global $gallery;
+
+    if (isset($gallery->app->devMode) && $gallery->app->devMode == "no") {
+        return '';
+    }
+
+    $args['PHPSESSID'] = session_id();
+    $url = makeGalleryURL($file, $args);
+
+    if (!empty($file) && isset($gallery->app->photoAlbumURL)) {
+        $uri = urlencode(eregi_replace("&amp;", "&", $url));
+    }
+    else {
+        $uri = 'referer&amp;PHPSESSID='. $args['PHPSESSID'];
+    }
+
+    $link = '<a href="http://validator.w3.org/check?uri='. $uri .'">'.
+      '<img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>';
+
+    if (!$valid) {
+        $link .= gTranslate('common', "Not valid yet");
+    }
+
+    return $link;
+}
+
+// uses makeAlbumURL
+function album_validation_link($album, $photo='', $valid=true) {
+    global $gallery;
+    if ($gallery->app->devMode == "no") {
+        return '';
+    }
+    $args=array();
+    $args['PHPSESSID']=session_id();
+    $link='<a href="http://validator.w3.org/check?uri='.
+      urlencode(eregi_replace("&amp;", "&",
+      makeAlbumURL($album, $photo, $args))).
+      '"> <img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>';
+    
+    if (!$valid) {
+        $link .= gTranslate('common', "Not valid yet");
+    }
+    return $link;
+}
+
+/**
+ * This function outputs the HTML Start elements of an Popup.
+ * It was made to beautify php code ;)
+ */
+function printPopupStart($title = '', $header = '', $align = 'center') {
+	global $gallery;
+	if (!empty($title) && empty($header)) {
+		$header = $title;
+	}
+?>
+<html>
+<head>
+  <title><?php echo $title; ?></title>
+  <?php common_header(); ?>
+</head>
+<body dir="<?php echo $gallery->direction ?>" class="popupbody">
+<div class="popuphead"><?php echo $header; ?></div>
+<div class="popup" align="<?php echo $align; ?>">
+
+<?php
+}
+
+
+function showImageMap($index) {
+    global $gallery;
+    
+    $allImageAreas = $gallery->album->getAllImageAreas($index);
+    $html = '';
+   
+    if (!empty($allImageAreas)) {
+        $html .= "\n". '<map name="myMap">';
+        foreach($allImageAreas as $nr => $area) {
+            $html .= "\n\t<area alt=\"my nice Map $nr\" title=\"my nice Map $nr\" shape=\"poly\" ".
+                "coords=\"". $area['coords'] ."\" ".
+                "onmouseover=\"return escape('". $area['hover_text'] ."')\"";
+
+            if(!empty($area['url'])) {
+                $html .=' href="'. $area['url'] .'"';
+            }
+            $html .='>';
+        }
+        $html .= "\n</map>\n";
+    }
+
+    return $html;
+}
+
+/**
+ * Generates a complete <img ...> html
+ * @param $relativPath  string  path to the images relativ to gallery root
+ * @param $altText      string  alt Text
+ * @param $attrs        array   optional additional attributs (id, name..)
+ * @param $skin		string	optional input of skin, because the image could be in skindir.
+ * @author Jens Tkotz <jens@peino.de>
+ */
+function gImage($relativePath, $altText, $attrs = array(), $skin = '') {
+    global $gallery;
+
+    $html = '';
+    $imgUrl = getImagePath($relativePath, $skin);
+
+    $html .= "<img src=\"$imgUrl\" alt=\"$altText\" title=\"$altText\"";
+
+    if(!empty($attrs)) {
+        foreach ($attrs as $key => $value) {
+            $html .= " $key=\"$value\"";
+        }
+    }
+    $html .= '>';
+    
+    return $html;
+}
+
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/lib/Form.php gallery-1.5.2/lib/Form.php
--- gallery-1.5.1/lib/Form.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/lib/Form.php	2006-01-06 07:31:36.000000000 +0100
@@ -1,23 +1,23 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Form.php,v 1.25.2.1 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: Form.php,v 1.31.2.1 2006/01/06 06:31:36 jenst Exp $
  */
 ?>
 <?php 
@@ -26,20 +26,20 @@
 
 ?>
 <script type="text/javascript" language="javascript">
-// <!-- 
+// <!--
 function setCheck(val,elementName) {
     ufne = document.<?php echo $formName; ?>;
     for(i = 0 ; i < ufne.elements.length; i++) {
-	if (ufne.elements[i].name == elementName) {
-	    if (ufne.elements[i].type == 'select-multiple') {
-		for (j = 0; j < ufne.elements[i].length; j++) {
-		    ufne.elements[i].options[j].selected = val;
-		}
-	    }
-	    else {
-	        ufne.elements[i].checked = val;
-	    }
-	}
+        if (ufne.elements[i].name == elementName) {
+            if (ufne.elements[i].type == 'select-multiple') {
+                for (j = 0; j < ufne.elements[i].length; j++) {
+                    ufne.elements[i].options[j].selected = val;
+                }
+            }
+            else {
+                ufne.elements[i].checked = val;
+            }
+        }
     }
 }
 
@@ -47,16 +47,16 @@
     ufne = document.<?php echo $formName; ?>;
     len = ufne.elements.length;
     for(i = 0 ; i < ufne.elements.length; i++) {
-	if (ufne.elements[i].name==elementName) {
-	    if (ufne.elements[i].type == 'select-multiple') {
-		for (j = 0; j < ufne.elements[i].length; j++) {
-		    ufne.elements[i].options[j].selected = !(ufne.elements[i].options[j].selected);
-		}
-	    }
-	    else {
-		ufne.elements[i].checked = !(ufne.elements[i].checked);
-	    }
-	}
+        if (ufne.elements[i].name==elementName) {
+            if (ufne.elements[i].type == 'select-multiple') {
+                for (j = 0; j < ufne.elements[i].length; j++) {
+                    ufne.elements[i].options[j].selected = !(ufne.elements[i].options[j].selected);
+                }
+            }
+            else {
+                ufne.elements[i].checked = !(ufne.elements[i].checked);
+            }
+        }
     }
 }
 // -->
@@ -65,39 +65,35 @@
 }
 
 function insertFormJSLinks($elementName) {
-$buf='
+    $buf='
 	<a href="javascript:setCheck(1,\'' . $elementName . '\')">'. _("Check All") . '</a>
 	-
 	<a href="javascript:setCheck(0,\'' . $elementName . '\')">'. _("Clear All") . '</a>
 	-
 	<a href="javascript:invertCheck(\'' . $elementName . '\')">'. _("Invert Selection") .'</a>';
 
-return $buf;
+    return $buf;
 }
 
-/*
-** $opts is now a name/value array, where $key is the value returned, and $name
-** is the value displayed (and translated).
+/**
+ * $opts is now a name/value array, where $key is the value returned, and $name
+ * is the value displayed (and translated).
 */
-
 function selectOptions($album, $field, $opts) {
-	foreach ($opts as $key => $value) {
-		$sel = "";
-		if (isset($album->fields[$field]) && !strcmp($key, $album->fields[$field])) {
-			$sel = "selected";
-		}
-		echo "\n\t<option value=\"$key\" $sel>$value</option>";
-	}
-	echo "\n";
+    foreach ($opts as $key => $value) {
+        $sel = '';
+        if (isset($album->fields[$field]) && !strcmp($key, $album->fields[$field])) {
+            $sel = 'selected';
+        }
+        echo "\n\t<option value=\"$key\" $sel>$value</option>";
+    }
+    echo "\n";
 }
 
+function generateAttrs($attrList) {
+	$attrs = '';
 
-function drawSelect($name, $options, $selected, $size, $attrList=array(), $prettyPrinting = false) {
-	$attrs = "";
-	$crlf = ($prettyPrinting) ? "\n\t" : '';
-
-	if (!empty($attrList)) {
-		$attrs = " ";
+	if(!empty($attrList) && is_array($attrList)) {
 		foreach ($attrList as $key => $value) {
 			if ($value == NULL) {
 				$attrs .= " $key";
@@ -107,47 +103,50 @@
 			}
 		}
 	}
+	
+	return $attrs;
+}
 
-	$buf = "";
-	$buf .= "<select name=\"$name\" size=\"$size\"$attrs>" . $crlf;
-	foreach ($options as $value => $text) {
-		$sel = "";
-		if (is_array($selected)) {
-			if (in_array($value, $selected)) {
-				$sel = " selected";
-			}
-		}
-		else if (!strcmp($value, $selected) || !strcmp($text, $selected) || $selected == '__ALL__') {
-			$sel = " selected";
+function drawSelect($name, $options, $selected, $size, $attrList = array(), $prettyPrinting = false) {
+    $crlf = ($prettyPrinting) ? "\n\t" : '';
+    $attrs = generateAttrs($attrList);
+    $buf = "<select name=\"$name\" size=\"$size\"$attrs>" . $crlf;
+
+    if(!empty($options)) {
+        foreach ($options as $value => $text) {
+            $sel = '';
+            if (is_array($selected)) {
+                if (in_array($value, $selected)) {
+                    $sel = ' selected';
                 }
-		$buf .= "<option value=\"$value\"$sel>". $text ."</option>" . $crlf;
-	}
-	$buf .= "</select>". $crlf;
+            }
+            else if (!strcmp($value, $selected) || !strcmp($text, $selected) || $selected == '__ALL__') {
+                $sel = ' selected';
+            }
+            $buf .= "<option value=\"$value\"$sel>". $text ."</option>" . $crlf;
+        }
+    }
+    $buf .= '</select>'. $crlf;
 
-	return $buf;
+    return $buf;
 }
 
-
 function drawSelect2($name, $options, $attrList = array(), $args = array()) {
-    $attrs = '';
     $crlf = (isset($args['prettyPrinting'])) ? "\n\t" : '';
-    if (!isset($attrList['size'])) {
-	$attrList['size'] = 1;
-    }
 
-    if (!empty($attrList)) {
-	foreach ($attrList as $attr => $value) {
-	    if ($value != NULL) {
-		$attrs .= " $attr=\"$value\"";
-	    }
-	}
+    if (!isset($attrList['size'])) {
+        $attrList['size'] = 1;
     }
 
+    $attrs = generateAttrs($attrList);
+    
     $buf = "<select name=\"$name\" $attrs>$crlf";
 
-    foreach ($options as $nr => $option) {
-	$sel = isset($option['selected']) ? ' selected' : '';
-	$buf .= "\n\t". '<option value="'. $option['value'] .'"'. $sel.'>'. $option['text'] .'</option>' . $crlf;
+    if(!empty($options)) {
+        foreach ($options as $nr => $option) {
+            $sel = isset($option['selected']) ? ' selected' : '';
+            $buf .= "\n\t". '<option value="'. $option['value'] .'"'. $sel.'>'. $option['text'] .'</option>' . $crlf;
+        }
     }
 
     $buf .= "</select>". $crlf;
@@ -155,7 +154,7 @@
     return $buf;
 }
 
-/*
+/**
  * makeFormIntro() is a wrapper around makeGalleryUrl() that will generate
  * a <form> tag suitable for usage in either standalone or embedded mode.
  * You can specify the additional attributes you want in the optional second
@@ -165,62 +164,67 @@
  *                      array("name" => "count_form",
  *                              "enctype" => "multipart/form-data",
  *                              "method" => "POST"));
+ *
+ * If no method is given in attrList, then "POST" is used.
  */
-function makeFormIntro($target, $attrList=array(), $urlargs=array()) {
-
-	// We don't want the result HTML escaped since we split on "&", below
-	// use the header version of makeGalleryUrl()
-	$url = makeGalleryHeaderUrl($target, $urlargs);
-
-	$result = split("\?", $url);
-	$target = $result[0];
-	if (sizeof($result) > 1) {
-		$tmp = $result[1];
-	} else {
-		$tmp = "";
-	}
-
-	$attrs = '';
-	foreach ($attrList as $key => $value) {
-		$attrs .= " $key=\"$value\"";
-	}
+function makeFormIntro($target, $attrList = array(), $urlargs = array()) {
+    // We don't want the result HTML escaped since we split on "&", below
+    // use the header version of makeGalleryUrl()
+    $url = makeGalleryHeaderUrl($target, $urlargs);
+
+    $result = split("\?", $url);
+    $target = $result[0];
+    $tmp = (sizeof($result) > 1) ? $result[1] :'';
+
+    $defaults = array(
+		'method' => 'POST',
+		'name'	 => 'g1_form'
+    );
 
-	$form = "\n<form action=\"$target\" $attrs>\n";
+    foreach($defaults as $attr => $value) {
+    	if(!isset($attrList[$attr])) {
+    		$attrList[$attr] = $value;
+    	}
+    }
 
-	$args = split("&", $tmp);
-	foreach ($args as $arg) {
-		if (strlen($arg) == 0) {
-			continue;
-		}
-		list($key, $val) = split("=", $arg);
-		$form .= "<input type=\"hidden\" name=\"$key\" value=\"$val\">\n";
-	}
-	return $form;
+    $attrs = generateAttrs($attrList);
+    
+    $form = "\n<form action=\"$target\"$attrs>\n";
+
+    $args = split("&", $tmp);
+    foreach ($args as $arg) {
+        if (strlen($arg) == 0) {
+            continue;
+        }
+        list($key, $val) = split("=", $arg);
+        $form .= "<input type=\"hidden\" name=\"$key\" value=\"$val\">\n";
+    }
+    return $form;
 }
 
 function formVar($name) {
-	if (!strncmp($_REQUEST[$name], 'false', 5)) {
-		return false;
-	} else {
-		return getRequestVar($name); 
-	}
+    if (!strncmp($_REQUEST[$name], 'false', 5)) {
+        return false;
+    } else {
+        return getRequestVar($name);
+    }
 }
 
-
 function emptyFormVar($name) {
-	return !isset($_REQUEST[$name]);
+    return !isset($_REQUEST[$name]);
 }
 
-/* The code below was inspired from the Horde Framework (http://www.horde.org)
-** It was taken from: framework/UI/UI/VarRenderer/html.php,v 1.106
-** Copyright 2003-2005 Jason M. Felice <jfelice@cronosys.com>
-**
-** Jens Tkotz 25.04.2005
+/**
+ * The code below was inspired from the Horde Framework (http://www.horde.org)
+ * It was taken from: framework/UI/UI/VarRenderer/html.php,v 1.106
+ * Copyright 2003-2005 Jason M. Felice <jfelice@cronosys.com>
+ *
+ * Jens Tkotz 25.04.2005
 */
 function showColorpicker($attrs = array()) {
     $args = array(
-	'target' => $attrs['name'],
-	'gallery_popup' => true
+        'target' => $attrs['name'],
+        'gallery_popup' => true
     );
 
     $colorPickerUrl = makeGalleryUrl('lib/colorpicker.php', $args);
@@ -230,7 +234,7 @@
     $html .= '<tr>';
     $html .= '<td><input type="text" size="10" maxlength="7" name="'. $attrs['name'] .'" id="'. $attrs['name'] .'" value="'. $attrs['value'] .'"></td>';
     $html .= '<td width="20" id="colordemo_' . $attrs['name'] . '" style="background-color:' . $attrs['value'] . '"> </td>';
-    $html .= "<td><a href=\"$colorPickerUrl\" onclick=\"window.open('$colorPickerUrl', 'colorpicker', 'toolbar=no,location=no,status=no,scrollbars=no,resizable=no,width=120,height=250,left=100,top=100'); return false;\" onmouseout=\"window.status='';\" onmouseover=\"window.status='". _("Colorpicker") ."'; return true;\" target=\"colorpicker\">".  $imgColorpicker .'</a></td>'; 
+    $html .= "<td><a href=\"$colorPickerUrl\" onclick=\"window.open('$colorPickerUrl', 'colorpicker', 'toolbar=no,location=no,status=no,scrollbars=no,resizable=no,width=120,height=250,left=100,top=100'); return false;\" onmouseout=\"window.status='';\" onmouseover=\"window.status='". _("Colorpicker") ."'; return true;\" target=\"colorpicker\">".  $imgColorpicker .'</a></td>';
     $html .= '<td><div id="colorpicker_' . $attrs['name'] . '" class="control"></div></td>';
     $html .= '</tr></table>';
 
@@ -247,13 +251,15 @@
     echo "\t<option class=\"$class\" value='" . makeGalleryUrl($target, $args) . "'>$label</option>\n";
 }
 
-function showChoice2($target, $args) {
+function showChoice2($target, $args, $popup = true) {
     global $gallery;
 
     if (empty($args['set_albumName'])) {
         $args['set_albumName'] = $gallery->session->albumName;
     }
-    $args['type'] = 'popup';
+    if($popup) {
+        $args['type'] = 'popup';
+    }
     return makeGalleryUrl($target, $args);
 }
 
diff -Naur gallery-1.5.1/lib/imageManipulation.php gallery-1.5.2/lib/imageManipulation.php
--- gallery-1.5.1/lib/imageManipulation.php	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/lib/imageManipulation.php	2006-01-11 11:29:42.000000000 +0100
@@ -0,0 +1,787 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * $Id: imageManipulation.php,v 1.7.2.4 2006/01/11 10:29:42 jenst Exp $
+ */
+
+/**
+ * Functions that provide possibilities to manipulate images
+ *
+ * @package	ImageManipulation
+ */
+
+/**
+ *  Valid return codes:
+ *  0:  File was not resized, no processing to be done
+ *  1:  File resized, process normally
+ *  2:  Existing resized file should be removed
+ */
+function resize_image($src, $dest, $target = 0, $target_fs = 0, $keepProfiles = 0, $createThumbnail = false, $quality = 0) {
+    debugMessage(sprintf(_("Resizing Image: %s"), $src), __FILE__, __LINE__);
+
+    global $gallery;
+
+    if (!strcmp($src,$dest)) {
+        $useTemp = true;
+        $out = "$dest.tmp";
+    }
+    else {
+        $out = $dest;
+        $useTemp = false;
+    }
+
+    $type = getExtension($src);
+    list($width, $height) = getDimensions($src);
+
+    if ($type != 'jpg' && $type != 'png') {
+        $target_fs = 0; // can't compress other images
+    }
+
+    if ($target === 'off') {
+        $target = 0;
+    }
+
+    if ($quality == 0) {
+        $quality = $gallery->app->jpegImageQuality;
+    }
+
+    /* Check for images smaller then target size, don't blow them up. */
+    if ((empty($target) || ($width <= $target && $height <= $target)) && 
+      (empty($target_fs) || ((int) fs_filesize($src) >> 10) <= $target_fs)) {
+        echo debugMessage("&nbsp;&nbsp;&nbsp;". _("No resizing required"), __FILE__, __LINE__,1);
+
+        /* If the file is already smaller than the target filesize, don't
+        * create a new sized image.  return 2 indicates that the current .sized.
+        * needs to be removed */
+        if ($useTemp == false && !strstr($dest, ".sized.")) {
+            fs_copy($src, $dest);
+            return 1;
+        }
+        elseif (fs_file_exists($dest) && strstr($dest, ".sized.")) {
+            return 2;
+        }
+        return 0;
+    }
+    $target = min($target, max($width, $height));
+
+    if ($target_fs == 0) {
+        compressImage($src, $out, $target, $quality, $keepProfiles, $createThumbnail);
+    } else {
+        $filesize = (int) fs_filesize($src) >> 10;
+        $max_quality = $gallery->app->jpegImageQuality;
+        $min_quality = 5;
+        $max_filesize = $filesize;
+
+        if (!isset($quality)) {
+            $quality = $gallery->album->fields['last_quality'];
+        }
+        processingMsg("&nbsp;&nbsp;&nbsp;". sprintf(_("target file size %d kbytes"), $target_fs)."\n");
+
+        do {
+            compressImage($src, $out, $target, $quality, $keepProfiles, $createThumbnail);
+
+            $prev_quality = $quality;
+            printf(_("-> file size %d kbytes"), round($filesize));
+            processingMsg("&nbsp;&nbsp;&nbsp;" . sprintf(_("trying quality %d%%"), $quality));
+            clearstatcache();
+            $filesize = (int)fs_filesize($out) >> 10;
+            if ($filesize < $target_fs) {
+                $min_quality = $quality;
+            } elseif ($filesize > $target_fs){
+                $max_quality = $quality;
+                $max_filesize = $filesize;
+            } elseif ($filesize == $target_fs){
+                $min_quality = $quality;
+                $max_quality = $quality;
+                $max_filesize = $filesize;
+            }
+            $quality = ($max_quality + $min_quality)/2;
+            $quality = round($quality);
+            if ($quality == $prev_quality) {
+                if ($filesize == $max_filesize) {
+                    $quality--;
+                } else {
+                    $quality++;
+                }
+            }
+        } while ($max_quality-$min_quality > 2 &&
+        abs(($filesize-$target_fs)/$target_fs) > .02 );
+
+        $gallery->album->fields['last_quality'] = $prev_quality;
+        printf(_("-> file size %d kbytes"), round($filesize));
+        processingMsg(_("Done."));
+    }
+    if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
+        if ($useTemp) {
+            fs_copy($out, $dest);
+            fs_unlink($out);
+        }
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+/**
+ * In order for pnmcomp to support watermarking from formats other than pnm, the watermark
+ * first needs to be converted to .pnm. Second the alpha channel needs to be decomposed as a
+ * second image
+ *
+ * Returns a list of 2 temporary files (overlay, and alphamask), these files should be deleted (unlinked)
+ * by the calling function
+ */
+function netpbm_decompose_image($input, $format) {
+    global $gallery;
+    $overlay = tempnam($gallery->app->tmpDir, "netpbm_");
+    $alpha = tempnam($gallery->app->tmpDir, "netpbm_");
+    
+    switch ($format) {
+        case "png":
+            $getOverlay = netPBM("pngtopnm", "$input > $overlay");
+            $getAlpha   = netPBM("pngtopnm", "-alpha $input > $alpha");
+        break;
+        case "gif":
+            $getOverlay = netPPM("giftopnm", "--alphaout=$alpha $input > $overlay");
+        break;
+            case "tif":
+        $getOverlay = netPBM("tifftopnm", "-alphaout=$alpha $input > $overlay");
+        break;
+    }
+    
+    exec_wrapper($getOverlay);
+    if (isset($getAlpha)) {
+        exec_wrapper($getAlpha);
+    }
+    return array($overlay, $alpha);
+}
+
+function watermark_image($src, $dest, $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY) {
+    global $gallery;
+    if (!strcmp($src,$dest)) {
+        $useTemp = true;
+        $out = "$dest.tmp";
+    } else {
+        $useTemp = false;
+        $out = $dest;
+    }
+    if (isDebugging()) {
+        print "<table border=\"1\">";
+        print "<tr><td>src</td><td>$src</td></tr>";
+        print "<tr><td>dest</td><td>$dest</td></tr>";
+        print "<tr><td>wmName</td><td>$wmName</td></tr>";
+        print "<tr><td>wmAlign</td><td>$wmAlign</td></tr>";
+        print "<tr><td>wmAlignX</td><td>$wmAlignX</td></tr>";
+        print "<tr><td>wmAlignY</td><td>$wmAlignY</td></tr>";
+        print "</table>";
+    }
+
+    $srcSize = getDimensions($src);
+    $overlaySize = getDimensions($wmName);
+    if (strlen($wmName)) {
+        switch($gallery->app->graphics) {
+            case 'ImageMagick':
+                $overlayFile = $wmName;
+            break;
+
+            case 'NetPBM':
+                if (eregi('\.png$',$wmName, $regs)) {
+                    list ($overlayFile, $alphaFile) = netpbm_decompose_image($wmName, "png");
+                    $tmpOverlay = 1;
+                } elseif (eregi('\.tiff?$',$wmName, $regs)) {
+                    list ($overlayFile, $alphaFile) = netpbm_decompose_image($wmName, "tif");
+                    $tmpOverlay = 1;
+                } elseif (eregi('\.gif$',$wmName, $regs)) {
+                    list ($overlayFile, $alphaFile) = netpbm_decompose_image($wmName, "gif");
+                    $tmpOverlay = 1;
+                } else {
+                    $alphaFile = $wmName;
+                    if (strlen($wmAlphaName)) {
+                        $overlayFile = $wmAlphaName;
+                    }
+                }
+            break;
+            default:
+                echo debugMessage(_("You have no graphics package configured for use!"), __FILE__, __LINE__);
+            return 0;
+        }
+    } else {
+        echo gallery_error(_("No watermark name specified!"));
+        return 0;
+    }
+
+    // Set or Clip $wmAlignX and $wmAlignY
+    switch ($wmAlign) {
+        case 1: // Top - Left
+            $wmAlignX = 0;
+            $wmAlignY = 0;
+        break;
+        case 2: // Top
+            $wmAlignX = ($srcSize[0] - $overlaySize[0]) / 2;
+            $wmAlignY = 0;
+        break;
+        case 3: // Top - Right
+            $wmAlignX = ($srcSize[0] - $overlaySize[0]);
+            $wmAlignY = 0;
+        break;
+        case 4: // Left
+            $wmAlignX = 0;
+            $wmAlignY = ($srcSize[1] - $overlaySize[1]) / 2;
+        break;
+        case 5: // Center
+            $wmAlignX = ($srcSize[0] - $overlaySize[0]) / 2;
+            $wmAlignY = ($srcSize[1] - $overlaySize[1]) / 2;
+        break;
+        case 6: // Right
+            $wmAlignX = ($srcSize[0] - $overlaySize[0]);
+            $wmAlignY = ($srcSize[1] - $overlaySize[1]) / 2;
+        break;
+        case 7: // Bottom - Left
+            $wmAlignX = 0;
+            $wmAlignY = ($srcSize[1] - $overlaySize[1]);
+        break;
+        case 8: // Bottom
+            $wmAlignX = ($srcSize[0] - $overlaySize[0]) / 2;
+            $wmAlignY = ($srcSize[1] - $overlaySize[1]);
+        break;
+        case 9: // Bottom Right
+            $wmAlignX = ($srcSize[0] - $overlaySize[0]);
+            $wmAlignY = ($srcSize[1] - $overlaySize[1]);
+        break;
+        case 10: // Other
+            // Check for percents
+            if (ereg('([0-9]+)(\%?)', $wmAlignX, $regs)) {
+                if ($regs[2] == '%') {
+                    $wmAlignX = round($regs[1] / 100 * ($srcSize[0] - $overlaySize[0]));
+                } else {
+                    $wmAlignX = $regs[1];
+                }
+            } else {
+                $wmAlignX = 0;
+            }
+    
+            if (ereg('([0-9]+)(\%?)', $wmAlignY, $regs)) {
+                if ($regs[2] == '%') {
+                    $wmAlignY = round($regs[1] / 100 * ($srcSize[1] - $overlaySize[1]));
+                } else {
+                    $wmAlignY = $regs[1];
+                }
+            } else {
+                $wmAlignY = 0;
+            }
+    
+            // clip left side
+            if ($wmAlignX < 1) {
+                $wmAlignX = 0;
+            }
+            // clip right side
+            elseif ($wmAlignX > ($srcSize[0] - $overlaySize[0])) {
+                $wmAlignX = ($srcSize[0] - $overlaySize[0]);
+            }
+            // clip top
+            if ($wmAlignY < 1) {
+                $wmAlignY = 0;
+            }
+            // clip bottom
+            elseif ($wmAlignY > ($srcSize[1] - $overlaySize[1])) {
+                $wmAlignY = ($srcSize[1] - $overlaySize[1]);
+            }
+        break;
+    } // end switch ($wmAlign)
+
+    $wmAlignX = floor($wmAlignX);
+    $wmAlignY = floor($wmAlignY);
+
+    // Execute
+    switch($gallery->app->graphics) {
+        case 'ImageMagick':
+            $srcOperator = "-geometry +$wmAlignX+$wmAlignY $overlayFile";
+            exec_wrapper(ImCmd('composite', $srcOperator, $src, '', $out));
+        break;
+
+        case 'NetPBM':
+            $args  = "-yoff=$wmAlignY -xoff=$wmAlignX ";
+            if ($alphaFile) {
+                $args .= "-alpha=$alphaFile ";
+            }
+            $args .= $overlayFile;
+            exec_wrapper(toPnmCmd($src) ." | ". NetPBM($gallery->app->pnmcomp, $args) ." | " . fromPnmCmd($out));
+        break;
+    }
+
+    // copy exif headers from original image to rotated image
+    if (isset($gallery->app->use_exif)) {
+        $path = $gallery->app->use_exif;
+        exec_internal(fs_import_filename($path, 1) . " -te $src $out");
+    }
+
+    // Test to see if it worked, and copy Temp file if needed
+    if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
+        if ($useTemp) {
+            fs_copy($out, $dest);
+            fs_unlink($out);
+        }
+        if (!empty($tmpOverlay)) {
+            fs_unlink($overlayFile);
+            if ($alphaFile) {
+                fs_unlink($alphaFile);
+            }
+        }
+        return 1;
+    } else {
+        return 0;
+    }
+} // end watermark_image()
+
+function rotate_image($src, $dest, $target, $type) {
+    global $gallery;
+
+    if (!strcmp($src,$dest)) {
+        $useTemp = true;
+        $out = "$dest.tmp";
+    }
+    else {
+        $out = $dest;
+    }
+
+    $outFile = fs_import_filename($out, 1);
+    $srcFile = fs_import_filename($src, 1);
+
+    $type = strtolower($type);
+    if (isset($gallery->app->use_jpegtran) && !empty($gallery->app->use_jpegtran) && ($type === 'jpg' || $type === 'jpeg')) {
+        if (!strcmp($target, '-90')) {
+            $args = '-rotate 90';
+        } elseif (!strcmp($target, '180')){
+            $args = '-rotate 180';
+        } elseif (!strcmp($target, '90')) {
+            $args = '-rotate 270';
+        } elseif (!strcmp($target, 'fv')) {
+            $args = '-flip vertical';
+        } elseif (!strcmp($target, 'fh')) {
+            $args = '-flip horizontal';
+        } elseif (!strcmp($target, 'tr')) {
+            $args = '-transpose';
+        } elseif (!strcmp($target, 'tv')) {
+            $args = '-transverse';
+        } else {
+            $args = '';
+        }
+
+        $path = $gallery->app->use_jpegtran;
+        // -copy all ensures all headers (i.e. EXIF) are copied to the rotated image
+        exec_internal(fs_import_filename($path, 1) . " $args -trim -copy all -outfile $outFile $srcFile");
+    } else {
+        switch($gallery->app->graphics) {
+            case "NetPBM":
+                $args2 = '';
+                if (!strcmp($target, '-90')) {
+                    /* NetPBM's docs mix up CW and CCW...
+                    * We'll do it right. */
+                    $args = '-r270';
+                } elseif (!strcmp($target, '180')) {
+                    $args = '-r180';
+                } elseif (!strcmp($target, '90')) {
+                    $args = '-r90';
+                } elseif (!strcmp($target, 'fv')) {
+                    $args = '-tb';
+                } elseif (!strcmp($target, 'fh')) {
+                    $args = '-lr';
+                } elseif (!strcmp($target, 'tr')) {
+                    $args = '-xy';
+                } elseif (!strcmp($target, 'tv')) {
+                    /* Because of NetPBM inconsistencies, the only
+                    * way to do this transformation on *all*
+                    * versions of NetPBM is to pipe two separate
+                    * operations in sequence. Versions >= 10.13
+                    * have the new -xform flag, and versions <=
+                    * 10.6 could take the '-xy -r180' commands in
+                    * sequence, but versions 10.7--> 10.12 can't
+                    * do *either*, so we're left with this little
+                    * workaround. -Beckett 9/9/2003 */
+                    $args = '-xy';
+                    $args2 = ' | ' . NetPBM('pnmflip', '-r180');
+                } else {
+                    $args = '';
+                }
+    
+                exec_wrapper(toPnmCmd($src) . ' | ' .
+                NetPBM('pnmflip', $args) .
+                $args2 .
+                ' | ' . fromPnmCmd($out));
+    
+                // copy exif headers from original image to rotated image
+                if (isset($gallery->app->use_exif)) {
+                    $path = $gallery->app->use_exif;
+                    exec_internal(fs_import_filename($path, 1) . " -te $srcFile $outFile");
+                }
+            break;
+            case "ImageMagick":
+                if (!strcmp($target, '-90')) {
+                    $destOperator = '-rotate 90';
+                } elseif (!strcmp($target, '180')) {
+                    $destOperator = '-rotate 180';
+                } elseif (!strcmp($target, '90')) {
+                    $destOperator = '-rotate -90';
+                } elseif (!strcmp($target, 'fv')) {
+                    $destOperator = '-flip';
+                } elseif (!strcmp($target, 'fh')) {
+                    $destOperator = '-flop';
+                } elseif (!strcmp($target, 'tr')) {
+                    $destOperator = '-affine 0,1,1,0,0,0 -transform';
+                } elseif (!strcmp($target, 'tv')) {
+                    $destOperator = '-affine 0,-1,-1,0,0,0 -transform';
+                } else {
+                    $destOperator = '';
+                }
+    
+                exec_wrapper(ImCmd('convert', '', $srcFile, $destOperator, $outFile));
+            break;
+            default:
+                if (isDebugging())
+                echo "<br>". _("You have no graphics package configured for use!") ."<br>";
+                return 0;
+            break;
+        }
+    }
+
+    if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
+        if ($useTemp) {
+            fs_copy($out, $dest);
+            fs_unlink($out);
+        }
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+function cut_image($src, $dest, $offsetX, $offsetY, $width, $height) {
+    echo debugMessage(_("Cropping Image"),__FILE__, __LINE__);
+    global $gallery;
+
+    if (!strcmp($src,$dest)) {
+        $useTemp = true;
+        $out = "$dest.tmp";
+    }
+    else {
+        $out = $dest;
+    }
+
+    $srcFile = fs_import_filename($src);
+    $outFile = fs_import_filename($out);
+
+    switch($gallery->app->graphics) {
+        case "NetPBM":
+            exec_wrapper(toPnmCmd($src) .
+            " | " .
+            NetPBM("pnmcut") .
+            " $offsetX $offsetY $width $height" .
+            " | " .
+            fromPnmCmd($out));
+        break;
+        case "ImageMagick":
+            if (floor(getImVersion()) < 6) {
+                $repage = "-page +0+0";
+            }
+            else {
+                $repage = "+repage";
+            }
+            exec_wrapper(ImCmd('convert', '', $srcFile, "-crop ${width}x${height}+${offsetX}+${offsetY} $repage", $outFile));
+        break;
+        default:
+            if (isDebugging()) {
+                echo "<br>" . _("You have no graphics package configured for use!") ."<br>";
+                return 0;
+            }
+        break;
+    }
+
+    if (isDebugging(2)) {
+        echo "Source";
+        getDimensions($src);
+        echo "Dest";
+        getDimensions($dest);
+    }
+
+    if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
+        if (isset($useTemp)) {
+            fs_copy($out, $dest);
+            fs_unlink($out);
+        }
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+function cropImageToRatio($src, $dest, $destSize, $ratio) {
+    list($width, $height) = getDimensions($src);
+    $size = 0;
+
+    switch($ratio) {
+        case '1/1':
+        debugMessage(sprintf(_("Generating squared Version to %dpx"), $destSize), __FILE__, __LINE__);
+
+        if($width > $height && $height > $destSize) {
+            $offsetX = round(($width - $height)/2);
+            $offsetY = 0;
+            $size = $height;
+        }
+        elseif ($height > $width && $width > $destSize) {
+            $offsetX = 0;
+            $offsetY = round(($height - $width)/2);
+            $size = $width;
+        }
+
+        if($size >0) {
+            $ret = cut_image($src, $dest,
+            $offsetX,
+            $offsetY,
+            $size,
+            $size);
+        }
+        else {
+            debugMessage(_("No Cropping Done"), __FILE__, __LINE__);
+            $ret = false;
+        }
+        break;
+    }
+    return $ret;
+}
+
+function valid_image($file) {
+    if (($type = getimagesize($file)) == FALSE) {
+        debugMessage(sprintf(_("Call to %s failed in %s for file %s!"), 'getimagesize()', 'valid_image()', $file), __FILE__, __LINE__);
+        return 0;
+    }
+
+    debugMessage(sprintf(_("File %s type %d."), $file, $type[2]), __FILE__, __LINE__);
+
+    switch($type[2]) {
+        case 1: // GIF
+        case 2: // JPEG
+        case 3: // PNG
+            return 1;
+        break;
+
+        default:
+            return 0;
+        break;
+    }
+}
+
+function toPnmCmd($file) {
+    global $gallery;
+
+    $type = getExtension($file);
+    switch($type) {
+	case 'png':
+	    $cmd = "pngtopnm";
+	break;
+	case 'jpg':
+	case 'jpeg':
+	    $cmd = "jpegtopnm";
+	break;	
+	case 'gif':
+	    $cmd = "giftopnm";
+	break;
+    }
+
+    if (!empty($cmd)) {
+	return netPBM($cmd) .' '. fs_import_filename($file);
+    }
+    else {
+	echo gallery_error(
+	  sprintf(_("Files with type %s are not supported by Gallery with netPBM"), $type)
+	);
+	return '';
+    }
+}
+
+function fromPnmCmd($file, $quality = NULL) {
+    global $gallery;
+    if ($quality == NULL) {
+	$quality = $gallery->app->jpegImageQuality;
+    }
+
+    if (eregi("\.png(\.tmp)?\$", $file)) {
+	$cmd = netPBM("pnmtopng");
+    } elseif (eregi("\.jpe?g(\.tmp)?\$", $file)) {
+	$cmd = netPBM($gallery->app->pnmtojpeg, "--quality=$quality");
+    } elseif (eregi("\.gif(\.tmp)?\$", $file)) {
+	$cmd = netPBM("ppmquant", "256") . " | " . NetPBM("ppmtogif");
+    }
+
+    if (!empty($cmd)) {
+	return "$cmd > " . fs_import_filename($file);
+    } else {
+	echo gallery_error(
+	  sprintf(_("Files with type %s are not supported by Gallery with netPBM"), 
+	  getExtension($file))
+	);
+	return '';
+    }
+}
+
+function netPBM($cmd, $args = '') {
+	global $gallery;
+
+	$cmd = fs_import_filename($gallery->app->pnmDir . "/$cmd");
+	if (!isDebugging() && $cmd != 'ppmquant') {
+		// ppmquant doesn't like --quiet for some reason
+		$cmd  .= " --quiet";
+	}
+	$cmd .= " $args";
+	return $cmd;
+}
+
+/**
+ * Returns the command line command for ImageMagick depending on Version.
+ * If no Version is detected, we assume Version 5.x
+ * @param   string  $cmd	  The command, e.g. convert
+ * @param   string  $srcOperator
+ * @param   string  $src	  The sourcefile the command is perfomed on
+ * @param   string  $dest 	  Optional destination file
+ * @param   string  $destOperator
+ * @return  $string $cmdLine	  The complete commandline
+ */
+function ImCmd($cmd, $srcOperator, $src, $destOperator, $dest) {
+    global $gallery;
+    static $ImVersion;
+    
+    if(empty($ImVersion)) {
+        $ImVersion = floor(getImVersion());
+    }
+    $cmd = fs_import_filename($gallery->app->ImPath . "/$cmd");
+    
+    if($ImVersion < 6) {
+        $cmdLine = "$cmd $srcOperator $destOperator $src $dest";
+    }
+    else {
+        $cmdLine = "$cmd $srcOperator $src $destOperator $dest";
+    }
+    
+    return $cmdLine;
+}
+
+function compressImage($src = '', $dest = '', $targetSize = 0, $quality, $keepProfiles = false, $createThumbnail = false) {
+    debugMessage(sprintf(_("Compressing image: %s"), $src), __FILE__, __LINE__); 
+    global $gallery;
+    static $ImVersion;
+
+    if (empty($src) || empty($dest) || empty($targetSize)) {
+        echo gallery_error(_("Not all necessary params for resizing given."));
+        echo debugMessage(sprintf(_("Resizing params: src: %s, dest : %s, targetSize: %s"), $src, $dest, $targetSize), __FILE__, __LINE__);
+        return false;
+    }
+
+    $stripProfiles = '';
+    
+    if(empty($ImVersion)) {
+        $ImVersion = floor(getImVersion());
+    }
+
+    if ($targetSize === 'off') {
+        $targetSize = '';
+    }
+    $srcFile = fs_import_filename($src);
+    $destFile = fs_import_filename($dest);
+
+    switch($gallery->app->graphics)	{
+        case "NetPBM":
+            $result = exec_wrapper(toPnmCmd($src) . ' | ' .
+              NetPBM('pnmscale', " -xysize $targetSize $targetSize")  . ' | ' .
+              fromPnmCmd($dest, $quality)
+            );
+            if (!$result) {
+                return false;
+            }
+            
+            /* copy over EXIF data if a JPEG if $keepProfiles is set.
+            *  Unfortunately, we can't also keep comments.
+            */
+            if ($keepProfiles && eregi('\.jpe?g$', $src)) {
+                if (isset($gallery->app->use_exif)) {
+                    exec_wrapper(fs_import_filename($gallery->app->use_exif, 1) . ' -te '
+                    . $srcFile . ' ' . $destFile);
+                    return true;
+                } else {
+                    processingMsg(_('Unable to preserve EXIF data (jhead not installed)') . "\n");
+                    return true;
+                }
+            }
+        break;
+        case "ImageMagick":
+            /* Set the stripProfiles parameter based on the version of ImageMagick being used.
+            * 6.0.0 changed the parameters.
+            * Preserve comment, EXIF data if a JPEG if $keepProfiles is set.
+            */
+            if(!$keepProfiles || $createThumbnail) {   
+                switch ($ImVersion) {
+                    case '5':
+                        $stripProfiles = ' +profile \'*\' ';
+                        break;
+                    case '6':
+                        $stripProfiles = ' -strip ';
+                        break;
+                }
+            }
+
+            $destOperator = '';
+            $srcOperator = '';
+            /* If not targetSize is given, then this is just for setting (decreasing) quality */
+            $destOperator = "-quality $quality";
+
+            if ($targetSize) {
+                if ($createThumbnail) {
+                    if ($ImVersion < 6) {
+                        $destOperator .= " -resize ${targetSize}x${targetSize}";
+                    }
+                    else {
+                        $srcOperator = "-size ${targetSize}x${targetSize}";
+                        $destOperator .= " -thumbnail ${targetSize}x${targetSize}";
+                    }
+                }
+                else {
+                    if ($ImVersion < 6) {
+                        $destOperator .= " -resize ${targetSize}x${targetSize} $stripProfiles";
+                    }
+                    else {
+                        if($gallery->app->IM_HQ == 'yes') {
+                            echo debugMessage(_("Using IM high quality"), __FILE__, __LINE__, 3);
+                        }
+                        else {
+                            $srcOperator = "-size ${targetSize}x${targetSize}";
+                            echo debugMessage(_("Not using IM high quality"), __FILE__, __LINE__, 3);
+                        }
+                        $destOperator .= " -resize ${targetSize}x${targetSize} $stripProfiles";
+                    }
+                }
+                //$geometryCmd = "-coalesce -geometry ${targetSize}x${targetSize} ";
+            }
+
+            return exec_wrapper(ImCmd('convert', $srcOperator, $srcFile, $destOperator, $destFile)); 
+        break;
+        default:
+            echo debugMessage(_("You have no graphics package configured for use!"), __FILE__, __LINE__);
+            return false;
+        break;
+    }
+    return false;
+}
+?>
diff -Naur gallery-1.5.1/lib/lang.php gallery-1.5.2/lib/lang.php
--- gallery-1.5.1/lib/lang.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/lib/lang.php	2006-01-06 18:42:26.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: lang.php,v 1.55.2.2 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: lang.php,v 1.66.2.3 2006/01/06 17:42:26 jenst Exp $
  */
 
 /**
@@ -29,54 +29,87 @@
  * This function is a wrapper around ngettext for two reasons
  * 1.) We can use %s and %d in translation
  * 2.) We can use a special "none" without modifying the plural definition.
- * Note: The redundant $count is always needed, when you use %d
  *
- * example: pluralize_n2(ngettext("1 car", "5 cars", $numCars), $numCars, _("No cars"));
- * @param	string    $singPlu   Already translated singlular/plural text
+ * @param	string    $domain
+ * @param	string    $singular
+ * @param	string    $plural
  * @param	int       $count
- * @param	string    $none
- * @return	mixed
+ * @param	string    $nonetext
+ * @return  string    $translation	string with translation on success, otherwise '--- TranslationError --'
  * @author	Jens Tkotz
  */
-function pluralize_n2($singPlu, $count, $none='') {
-	if ($count == 0 && $none != '') {
-		return $none;
-	} else {
-		return sprintf($singPlu, $count);
+function gTranslate($domain = null, $singular, $plural = '', $count = null, $nonetext = '') {
+    global $gallery;
+
+    $allowedDomain = array('config', 'common', 'core');
+    if(!in_array($domain, $allowedDomain)) {
+        return '<span class="error">'. ("-- Translation Domain wrong --") .'</span>';
+    }
+
+    if ($count == 0 && $nonetext != '') {
+        return $nonetext;
+    }
+
+	if (gettext_installed()) {        	
+	    $gDomain = $gallery->language. "-gallery_$domain";
+	    bindtextdomain($gDomain, dirname(dirname(__FILE__)) . '/locale');
+	    textdomain($gDomain);
 	}
+
+    if(!$plural) {
+    	if (gettext_installed()) {        	
+        	$translation = dgettext($gDomain, $singular);
+    	}
+    	else {
+    		$translation = _($singular);
+    	}
+    }
+    else {
+        if (!empty($count) && intval($count) == 0) {
+            $count = 1;
+        }
+        if (ngettext_installed()) {
+        	$translation = sprintf(dngettext($gDomain, $singular, $plural, $count), $count);
+        }
+        else {
+        	$translation = sprintf(ngettext($singular, $plural, $count), $count);
+        }
+    }
+    return $translation;
 }
 
 /**
  * Detect the first Language of users Browser
  * Some Browser only send 2 digits like he or de.
  * This is caught later with the aliases
+ * @author Jens Tkotz <jens@peino.de>
+ * @return string   $browserLang
 */
 function getBrowserLanguage() {
     if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
-	$lang = explode (",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
+        $lang = explode (",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
 
-	/* Maybe there are some extra infos we dont need, so we strip them. */
-	$spos = strpos($lang[0],";");
-	if ($spos >0) {
-	    $lang[0] = substr($lang[0],0,$spos);
-	}
-		
-	/* browser may send aa-bb, then we convert to aa_BB */
-	$lang_pieces = explode ("-",$lang[0]);
-	if (strlen($lang[0]) >2) {
-		$browserLang=strtolower($lang_pieces[0]). "_".strtoupper($lang_pieces[1]) ;
-	} else {
-		$browserLang = $lang[0];
-	}
+        /* Maybe there are some extra infos we dont need, so we strip them. */
+        $spos = strpos($lang[0],";");
+        if ($spos >0) {
+            $lang[0] = substr($lang[0],0,$spos);
+        }
+
+        /* browser may send aa-bb, then we convert to aa_BB */
+        $lang_pieces = explode ("-",$lang[0]);
+        if (strlen($lang[0]) >2) {
+            $browserLang = strtolower($lang_pieces[0]). "_".strtoupper($lang_pieces[1]) ;
+        } else {
+            $browserLang = $lang[0];
+        }
     }
     else {
-	$browserLang = false;
+        $browserLang = false;
     }
-	
+
     return $browserLang;
 }
 
-
 /**
  * Set Gallery Default:
  * - language
@@ -101,10 +134,10 @@
 function getEnvLang() {
 	global $GALLERY_EMBEDDED_INSIDE_TYPE;
 
-	global $board_config;                       /* Needed for phpBB2    */
-	global $_CONF;                              /* Needed for GeekLog   */
-	global $mosConfig_locale, $mosConfig_lang;  /* Needed for Mambo     */
-	global $currentlang;                        /* Needed for CPGNuke   */
+	global $board_config;                       /* Needed for phpBB2    		*/
+	global $_CONF;                              /* Needed for GeekLog   		*/
+	global $mosConfig_locale, $mosConfig_lang;  /* Needed for Mambo / Joomla!	*/
+	global $currentlang;                        /* Needed for CPGNuke		*/
 
 	$envLang = NULL;
 
@@ -141,8 +174,10 @@
 		break;
 
 		case 'mambo':
+		case 'joomla':
 			$envLang = $mosConfig_lang;
-			if (! getLanguageAlias($envLang)) {
+			/* if Alias and Lang are equal, then now Alias was defined */
+			if (getLanguageAlias($envLang) == $envLang) {
 				if (isset($mosConfig_locale)){
 					$envLang = $mosConfig_locale;
 				}
@@ -164,6 +199,25 @@
 }
 
 /**
+ * Gets the default language for Gallery.
+ * If not set, fallback to browserlanguage.
+ * @author Jens Tkotz <jens@peino.de>
+ * @return string $defaultLanguage;
+ */
+function getDefaultLanguage() {
+    global $gallery;
+    if(isset($gallery->app->default_language) 
+      && $gallery->app->default_language != 'browser') {
+        $defaultLanguage = $gallery->app->default_language;
+    }
+    else {
+        $defaultLanguage = getBrowserLanguage();
+    }
+
+    return $defaultLanguage;
+}
+
+/**
  * In some Environments we dont want to allow the user
  * to change the language.
  * In this case we override Mode 3 with Mode 1 and
@@ -173,219 +227,213 @@
 	global $GALLERY_EMBEDDED_INSIDE_TYPE;
 	global $gallery;
 
-	$useStatic=array('mambo', 'phpBB2', 'GeekLog');
+	$useStatic = array('joomla', 'mambo', 'phpBB2', 'GeekLog');
 
 	if (in_array($GALLERY_EMBEDDED_INSIDE_TYPE, $useStatic)) {
-		$gallery->app->ML_mode=1;
+		$gallery->app->ML_mode = 1;
 	}
 }	
 
 /**
- *
-*/
+ * This function does the initialization of language related things.
+ * @author Jens Tkotz <jens@peino.de>
+ */
 function initLanguage($sendHeader=true) {
-	static $languages_initialized = false;
-
-	global $gallery, $GALLERY_EMBEDDED_INSIDE, $GALLERY_EMBEDDED_INSIDE_TYPE;
-
-	// $locale is *NUKEs locale var
-	global $locale ;
-
-	$nls = getNLS();
-
-	/* Set Defaults, they may be overwritten. */
-	setLangDefaults($nls);
-
-	// before we do any tests or settings test if we are in mode 0
-	// If so, we skip language settings at all
+    static $languages_initialized = false;
 
-	// Mode 0 means no Multilanguage at all.
-	if (isset($gallery->app->ML_mode) && $gallery->app->ML_mode == 0 && !$languages_initialized) {
-		// Maybe PHP has no (n)gettext, then we have to substitute _() and ngettext
-		if (!gettext_installed()) {
-			function _($string) {
-				return $string ;
-			}
-		}
-		if (!ngettext_installed()) {
-			function ngettext($singular, $quasi_plural,$num=0) {
-                       		if ($num == 1) {
-                               		return $singular;
-	                        } else {
-       		                        return $quasi_plural;
-               		        }
-			}
-		}
+    global $gallery, $GALLERY_EMBEDDED_INSIDE, $GALLERY_EMBEDDED_INSIDE_TYPE;
 
-		/* Skip rest*/
-		$languages_initialized = true;
-		return;
-	}
+    /* $locale is *NUKEs locale var*/
+    global $locale ;
 
-	/* 
-	** Does the user wants a new lanuage ?
-	** This is used in Standalone and *Nuke
-	*/
-	$newlang = getRequestVar('newlang');
+    $nls = getNLS();
 
-	/**
-	 ** Note: ML_mode is only used when not embedded
-	 **/
+    /* Set Defaults, they may be overwritten. */
+    setLangDefaults($nls);
 
-	if (isset($GALLERY_EMBEDDED_INSIDE_TYPE)) {
-		/* Gallery is embedded
+    /* Before we do any tests or settings test if we are in mode 0
+    If so, we skip language settings at all */
 
-		/* Gallery can set nukes language.
-		** For phpBB2, GeekLog and Mambo this is not possible, Gallery will always use their language.
-		*/
-		forceStaticLang();
-
-		if (!empty($newlang)) {
-			// Set Language to the User selected language.
-			$gallery->language=$newlang;
-		} else {
-			/* No new language.
-			** Lets see in which Environment were are and look for a language.
-			** Lets try to determ the used language
-			*/ 
-			$gallery->language = getEnvLang();
-		}
-	} else {
-		// We're not embedded.
-		// If we got a ML_mode from config.php we use it
-		// If not we use Mode 2 (Browserlanguage)
+    /* Mode 0 means no Multilanguage at all. */
+    if (isset($gallery->app->ML_mode) && $gallery->app->ML_mode == 0 && !$languages_initialized) {
+        /* Maybe PHP has no (n)gettext, then we have to substitute _() and ngettext*/
+        if (!gettext_installed()) {
+            function _($string) {
+                return $string ;
+            }
+        }
+        if (!ngettext_installed()) {
+            function ngettext($singular, $quasi_plural,$num=0) {
+                if ($num == 1) {
+                    return $singular;
+                } else {
+                    return $quasi_plural;
+                }
+            }
+        }
 
-		if (isset($gallery->app->ML_mode)) {
-			$ML_mode=$gallery->app->ML_mode;
-		} else {
-			$ML_mode=2;
-		}
+        /* Skip rest*/
+        $languages_initialized = true;
+        return;
+    }
 
-		switch ($ML_mode) {
-			case 1:
-				//Static Language
-				$gallery->language = $gallery->app->default_language;
-				break;
-			case 3:
-				// Does the user want a new language ?
-				if (!empty($newlang)) {
-					// Set Language to the User selected language.
-					$gallery->language=$newlang;
-				} elseif (isset($gallery->session->language)) {
-					//maybe we already have a language
-					$gallery->language=$gallery->session->language;
-				} elseif (isset($gallery->app->default_language)) {
-					// Maybe we have a defaultlanguage set in config.php
-		                        $gallery->language = $gallery->app->default_language;
-				}
-				break;
-			default:
-				// Use Browser Language or Userlanguage 
-				// when mode 2 or any other (wrong) mode
-
-				$gallery->browser_language=getBrowserLanguage();
-
-				if (!empty($gallery->user) && $gallery->user->getDefaultLanguage() != "") {
-					$gallery->language = $gallery->user->getDefaultLanguage();
-				} elseif (isset($gallery->browser_language)) {
-					$gallery->language=$gallery->browser_language;
-				}
-				break;
-		}
-	}
+    /**
+	 * Does the user wants a new lanuage ?
+	 * This is used in Standalone and *Nuke
+	 */
+    $newlang = getRequestVar('newlang');
+
+    /**
+	 * Note: ML_mode is only used when not embedded
+	 */
+
+    if (isset($GALLERY_EMBEDDED_INSIDE_TYPE)) {
+        /* Gallery is embedded */
+
+        /* Gallery can set nukes language.
+        * For phpBB2, GeekLog, Mambo and Joomla! this is not possible, Gallery will always use their language.
+        */
+        forceStaticLang();
+
+        if (!empty($newlang)) {
+            /* Set Language to the User selected language. */
+            $gallery->language=$newlang;
+        } else {
+            /** No new language.
+			 * Lets see in which Environment were are and look for a language.
+			 * Lets try to determ the used language
+			 */ 
+            $gallery->language = getEnvLang();
+        }
+    } else {
+        /** We're not embedded.
+		 * If we got a ML_mode from config.php we use it
+		 * If not we use Mode 2 (Browserlanguage)
+		 */
+        if (isset($gallery->app->ML_mode)) {
+            $ML_mode = $gallery->app->ML_mode;
+        } else {
+            $ML_mode = 2;
+        }
 
-	// if an alias for the (new or Env) language is given, use it
-	getLanguageAlias($gallery->language) ;
+        switch ($ML_mode) {
+            case 1:
+            /* Static Language */
+            $gallery->language = getDefaultLanguage();
+            break;
+            
+            case 3:
+            /* Does the user want a new language ?*/
+            if (!empty($newlang)) {
+                /* Set Language to the User selected language.*/
+                $gallery->language = $newlang;
+            } elseif (isset($gallery->session->language)) {
+                /* Maybe we already have a language*/
+                $gallery->language = $gallery->session->language;
+            } else {
+                $gallery->language = getDefaultLanguage();
+            }
+            break;
+            default:
+            /* Use Browser Language or Userlanguage when mode 2 or any other (wrong) mode*/
+            $gallery->browser_language = getBrowserLanguage();
 
-	/**
-	 **  Fall back to Default Language if :
-	 **	- we cant detect Language
-	 **	- Nuke/phpBB2 sent an unsupported
-	 **	- User sent an undefined
-	 **/
-
-	if (! isset($nls['language'][$gallery->language])) {
-		if (isset($gallery->app->default_language)) {
-			$gallery->language = $gallery->app->default_language;
-		} elseif(isset($gallery->browser_language)) {
-			$gallery->language = $gallery->browser_language;
-		} else {
-			// when we REALLY REALLY cant detect a language
-			$gallery->language="en_US";
-		}
-	}
+            if (!empty($gallery->user) && $gallery->user->getDefaultLanguage() != '') {
+                $gallery->language = $gallery->user->getDefaultLanguage();
+            }
+            break;
+        }
+    }
 
-	// And now set this language into session
-	$gallery->session->language = $gallery->language;
+    /* if an alias for the (new or Env) language is given, use it*/
+    $gallery->language = getLanguageAlias($gallery->language) ;
 
-	// locale
-	if (isset($gallery->app->locale_alias[$gallery->language])) {
-		$gallery->locale=$gallery->app->locale_alias["$gallery->language"];
-	} else {
-		$gallery->locale=$gallery->language;
-	}
+    /**
+	 *  Fall back to Default Language if :
+	 *	- we cant detect Language
+	 *	- Nuke/phpBB2 sent an unsupported
+	 *	- User sent an undefined
+	 */
+
+    if (! isset($nls['language'][$gallery->language])) {
+        $gallery->language = getLanguageAlias(getDefaultLanguage());
+        /* when we REALLY REALLY cant detect a language */
+        if (! isset($nls['language'][$gallery->language])) {
+            $gallery->language = 'en_US';
+        }
+    }
 
-	// Override NUKEs locale :)))	
-	$locale=$gallery->locale;
+    /* And now set this language into session*/
+    $gallery->session->language = $gallery->language;
 
-	// Check defaults :
-	$checklist=array('direction', 'charset', 'alignment') ;
+    /* locale*/
+    if (isset($gallery->app->locale_alias[$gallery->language])) {
+        $gallery->locale = $gallery->app->locale_alias["$gallery->language"];
+    } else {
+        $gallery->locale = $gallery->language;
+    }
 
-	/*
-	** This checks wether the previously defined values are available.
-	** All available values are in $nls
-	** If they are not defined we used the defaults from nls.php
-	*/
-	foreach($checklist as $check) {
-		// if no ... is given, use default
-		if ( !isset($nls[$check][$gallery->language])) {
-			$gallery->$check = $nls['default'][$check] ;
-		} else {
-			$gallery->$check = $nls[$check][$gallery->language] ;
-		}
-	}
+    /* Override NUKEs locale :)))*/
+    $locale = $gallery->locale;
 
-	// When all is done do the settings
-	
-	// There was previously a != SUNOS check around the LANG= line.  We've determined that it was
-	// probably a bogus bug report, since all documentation says this is fine.
-	putenv("LANG=". $gallery->language);
-	putenv("LANGUAGE=". $gallery->language);
-	// This line was added in 1.5-cvs-b190 to fix problems on FreeBSD 4.10
-	putenv("LC_ALL=". $gallery->language);
+    /* Check defaults */
+    $checklist = array('direction', 'charset', 'alignment') ;
 
-	// Set Locale
-	setlocale(LC_ALL,$gallery->locale);
+    /**
+     * This checks wether the previously defined values are available.
+     * All available values are in $nls
+     * If they are not defined we used the defaults from nls.php
+     */
+    foreach($checklist as $check) {
+        /* if no ... is given, use default*/
+        if ( !isset($nls[$check][$gallery->language])) {
+            $gallery->$check = $nls['default'][$check] ;
+        } else {
+            $gallery->$check = $nls[$check][$gallery->language] ;
+        }
+    }
 
-	/* 
-	** Set Charset header
-	** We do this only if we are not embedded and the "user" wants it.
-	** Because headers might be sent already.
-	*/
-	if (! isset($GALLERY_EMBEDDED_INSIDE) || $sendHeader == false) {
-		header('Content-Type: text/html; charset=' . $gallery->charset);
-	}
+    /* When all is done do the settings*/
 
-	/*
-	** Test if we're using gettext.
-	** if yes, do some gettext settings.
-	** if not emulate _() function or ngettext()
-	**/
+    /* There was previously a != SUNOS check around the LANG= line.  We've determined that it was
+     probably a bogus bug report, since all documentation says this is fine.*/
+    putenv("LANG=". $gallery->language);
+    putenv("LANGUAGE=". $gallery->language);
+    /* This line was added in 1.5-cvs-b190 to fix problems on FreeBSD 4.10*/
+    putenv("LC_ALL=". $gallery->language);
+
+    /* Set Locale*/
+    setlocale(LC_ALL,$gallery->locale);
+
+    /**
+     * Set Charset header
+     * We do this only if we are not embedded and the "user" wants it.
+     * Because headers might be sent already.
+     */
+    if (!headers_sent() && ($sendHeader == true  || ! isset($GALLERY_EMBEDDED_INSIDE))) {
+        header('Content-Type: text/html; charset=' . $gallery->charset);
+    }
 
-	if (gettext_installed()) {
-		bindtextdomain($gallery->language. "-gallery_". where_i_am(), dirname(dirname(__FILE__)) . '/locale');
-		textdomain($gallery->language. "-gallery_". where_i_am());
+    /**
+     * Test if we're using gettext.
+     * if yes, do some gettext settings.
+     * if not emulate _() function or ngettext()
+     */
+
+    if (gettext_installed()) {
+        bindtextdomain($gallery->language. "-gallery_". where_i_am(), dirname(dirname(__FILE__)) . '/locale');
+        textdomain($gallery->language. "-gallery_". where_i_am());
 
-	} elseif (!$languages_initialized) {
-		emulate_gettext();
-	}
+    } elseif (!$languages_initialized) {
+        emulate_gettext();
+    }
 
-	// We test this separate because ngettext() is only available in PHP >=4.2.0 but _() in all PHP4
-	if (!ngettext_installed() && !$languages_initialized) {
-		emulate_ngettext();
-	}
+    // We test this separate because ngettext() is only available in PHP >=4.2.0 but _() in all PHP4
+    if (!ngettext_installed() && !$languages_initialized) {
+        emulate_ngettext();
+    }
 
-	$languages_initialized = true;
+    $languages_initialized = true;
 }
 
 
@@ -486,7 +534,7 @@
 				&& ! stristr($lines[$key],"msgid_plural")
 				&& ! stristr($value,"msgid_plural")) {
 				$new_key=substr($value, 7,-1);
-				$translation[$new_key]=substr(trim($lines[$key+1]),8,-1);
+				$translation[$new_key] = substr(trim($lines[$key+1]),8,-1);
 //		echo "\n<br>NK". $new_key;
 //		echo "\n<br>NT". $translation[$new_key];
 			}
@@ -519,7 +567,8 @@
 }
 
 function ngettext_installed() {
-	if (in_array("ngettext", get_loaded_extensions()) || function_exists('ngettext')) {
+	if (in_array("ngettext", get_loaded_extensions()) || 
+	  (function_exists('ngettext') && function_exists('dngettext'))) {
 		return true;
 	}
 	else {
@@ -538,19 +587,18 @@
 
 /**
  * This function tries to find an alias for an given "language".
- * Given language is set to Alias if found.
+ * Alias or the original input is returned.
  * @param	string	$language
- * @return 	boolean true if Alias was found and set.
+ * @return 	string  If alias was found that, else the input
  * @author	Jens Tkotz
  */
-function getLanguageAlias(& $language) {
+function getLanguageAlias($language) {
     $nls = getNLS();
 
     if (isset($nls['alias'][$language])) {
-	   $language = $nls['alias'][$language];
-	   return true;
+	   return $nls['alias'][$language];
     } else {
-        return false;
+        return $language;
     }
 }
 
@@ -592,7 +640,7 @@
 }
 
 function i18n($buf) {
-       	return $buf;
+    return $buf;
 }
 
 function isSupportedCharset($charset) {
@@ -614,22 +662,22 @@
 		'KOI8-R'
 	);
 
-        /*
-         * Check if we are using PHP >= 4.1.0
-         * If yes, we can use 3rd Parameter so e.g. titles in chinese BIG5 or UTF8 are displayed correct.
-         * Otherwise they are messed.
-         * Not all Gallery Charsets are supported by PHP, so only thoselisted are recognized.
-         */
+	/**
+     * Check if we are using PHP >= 4.1.0
+     * If yes, we can use 3rd Parameter so e.g. titles in chinese BIG5 or UTF8 are displayed correct.
+     * Otherwise they are messed.
+     * Not all Gallery Charsets are supported by PHP, so only thoselisted are recognized.
+     */
 	if (function_exists('version_compare')) {
 		if ( (version_compare(phpversion(), "4.1.0", ">=") && in_array($charset, $supportedCharsets)) ||
 		     (version_compare(phpversion(), "4.3.2", ">=") && in_array($charset, $supportedCharsetsNewerPHP)) ) {
 			return true;
 		} else {
-			// Unsupported Charset
+			/* Unsupported Charset*/
 			return false;
 		}
 	} else {
-		// PHP too old
+		/* PHP too old*/
 		return false;
 	}
 }
@@ -646,7 +694,7 @@
 		return htmlentities($string,ENT_COMPAT ,$gallery->charset);
 	} else {
 		return htmlentities($string);
-        }
+    }
 }
 
 /**
@@ -660,11 +708,11 @@
 	}
 
 	if (function_exists('html_entity_decode')) {
-		$nls=getNLS();
+		$nls = getNLS();
 		if (isset ($nls['charset'][$gallery->language])) {
-			$charset=$nls['charset'][$gallery->language];
+			$charset = $nls['charset'][$gallery->language];
 		} else {
-			$charset=$nls['default']['charset'];
+			$charset = $nls['default']['charset'];
 		}
 
 		if (isSupportedCharset($charset) && strtolower($charset) != 'utf-8') {
@@ -693,11 +741,11 @@
  * as appropriate in the ML version.
  */
 function automaticFieldsList() {
-        return array(
-		'Upload Date' 	=> _("Upload Date"),
-                'Capture Date' 	=> _("Capture Date"),
-                'Dimensions' 	=> _("Image Size"),
-                'EXIF' 		=> _("Additional EXIF Data"));
+    return array(
+        'Upload Date'   => gTranslate('common', "Upload Date"),
+        'Capture Date' 	=> gTranslate('common', "Capture Date"),
+        'Dimensions' 	=> gTranslate('common', "Image Size"),
+        'EXIF'          => gTranslate('common', "Additional EXIF Data"));
 }
 
 /** These are custom fields which can be entered manual by the User
@@ -705,10 +753,11 @@
  */
 function translateableFields() {
 	return array(
-		'Title'		=> _("Title"),
-		'Description'	=> _("Description"),
-		'description'	=> _("description"),
-		'AltText'	=> _("Alt Text / onMouseOver")
+		'title'		=> gTranslate('common', "title"),
+		'Title'		=> gTranslate('common', "Title"),
+		'Description'	=> gTranslate('common', "Description"),
+		'description'	=> gTranslate('common', "description"),
+		'AltText'	=> gTranslate('common', "Alt Text / onMouseOver"),
 	);
 }
 
@@ -821,7 +870,6 @@
     }
 }
 
-
 /**
  * @return string
  * @author Jens Tkotz
diff -Naur gallery-1.5.1/lib/mail.php gallery-1.5.2/lib/mail.php
--- gallery-1.5.1/lib/mail.php	2005-09-15 17:46:29.000000000 +0200
+++ gallery-1.5.2/lib/mail.php	2006-01-06 07:31:37.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: mail.php,v 1.2.2.7 2005/09/15 15:46:29 jenst Exp $
+ * $Id: mail.php,v 1.8.2.1 2006/01/06 06:31:37 jenst Exp $
  */
 
 /**
@@ -119,14 +119,15 @@
 	$gallery_mail = new htmlMimeMail();
 
 	$gallery_mail->setSubject($subject);
+	$gallery_mail->setHeadCharset($gallery->charset);
 
 	if($isHTML) {
 	    $gallery_mail->setHtmlCharset($gallery->charset);
-            $gallery_mail->setHtml($msg,
-		_("This is a HTML mail, please have a look at the Attachment."));
+        $gallery_mail->setHtml($msg, _("This is a HTML mail, please have a look at the Attachment."));
 	}
 	else {
 	    $gallery_mail->setText($msg);
+	    $gallery_mail->setTextCharset($gallery->charset);
 	}
 	$gallery_mail->setFrom($from);
 	$gallery_mail->setReturnPath($reply_to);
@@ -147,7 +148,6 @@
 		);
 	}
 
-
 	$result = $gallery_mail->send($to, ($gallery->app->useOtherSMTP != "yes") ? 'mail' : 'smtp');
 
 	if(! $isNotifyMail) {
@@ -244,19 +244,17 @@
 	    $text .= sprintf(_("The comment was added by %s to this %s in this %s."),
 			$commenter_name,
 			'<a href="'. makeAlbumHeaderUrl($gallery->session->albumName, $id) .'">'. _("Item") .'</a>',
-			'<a href="'. makeAlbumHeaderUrl($gallery->session->albumName)) .'">'. _("Album") .'</a>';
-	    $text .= "\n<br>". _("*** Begin comment ***")."<br>\n";
+			'<a href="'. makeAlbumHeaderUrl($gallery->session->albumName) .'">'. _("Album") .'</a>');
+	    $text .= "\n<br>". _("*** Begin comment ***") ."<br>\n";
 	    $text .= nl2br($comment_text);
 	    $text .= "<br>\n". _("***End comment ***") . "\n<p>\n";
 	    $text .= _("If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when comments are added' is unchecked in both the photo and album page (You'll need to login first).");
 	    $text .= "\n</p>\n</body>\n</html>";
 
-	    $logmsg = sprintf(_("New comment for %s."), makeAlbumHeaderUrl($gallery->session->albumName, $id));
+        $logmsg = sprintf(_("New comment for %s."), makeAlbumHeaderUrl($gallery->session->albumName, $id));
 
 	    gallery_mail($to, $subject, $text, $logmsg, true, NULL, false, true);
 	}
-	elseif (isDebugging()) {
-	}
 }
 
 function emailLogMessage($logmsg, $result, $isNotifyMail) {
@@ -265,13 +263,13 @@
 		$logmsg = sprintf(_("FAILED") ." / FAILED: %s", $logmsg);
 	}
 	if (isset($gallery->app->email_notification) &&
-	in_array("logfile", $gallery->app->email_notification)) {
+	  in_array("logfile", $gallery->app->email_notification)) {
 		$logfile = $gallery->app->userDir."/email.log";
 		logMessage($logmsg, $logfile);
 	}
 
 	if (isset($gallery->app->email_notification) &&
-	in_array("email", $gallery->app->email_notification)) {
+	  in_array("email", $gallery->app->email_notification)) {
 		$subject = _("Email activity");
 		if ($subject != "Email activity") {
 			$subject .= "/Email activity";
diff -Naur gallery-1.5.1/lib/messages.php gallery-1.5.2/lib/messages.php
--- gallery-1.5.1/lib/messages.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/lib/messages.php	2006-01-19 11:31:54.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: messages.php,v 1.3.2.1 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: messages.php,v 1.4.2.2 2006/01/19 10:31:54 jenst Exp $
  */
 ?>
 <?php
@@ -39,16 +39,15 @@
 }
 
 function errorRow($key) {
-        global $gErrors;
+    global $gErrors;
 
-        if (isset($gErrors[$key])) {
-                $error = $gErrors[$key];
-        } else {
-                $error = NULL;
-        }
-        if ($error) {
-                include(dirname(dirname(__FILE__)) . "/html/errorRow.inc");
-        }
+    if (!empty($gErrors[$key])) {
+        echo "\n<tr>";
+        echo "\n  <td colspan=\"2\">";
+	echo "\n  ". gallery_error($gErrors[$key]);
+	echo "  </td>";
+        echo "\n</tr>";
+    }
 }
 
 function processingMsg($buf) {
diff -Naur gallery-1.5.1/lib/popup.php gallery-1.5.2/lib/popup.php
--- gallery-1.5.1/lib/popup.php	2005-07-13 03:44:44.000000000 +0200
+++ gallery-1.5.2/lib/popup.php	2005-12-15 21:00:30.000000000 +0100
@@ -1,17 +1,16 @@
 <?php
 function build_popup_url($url, $url_is_complete=0) {
-
 	/* Separate the target from the arguments */
 	$result = explode('?', $url);
 	$target = $result[0];
 	if (isset($result[1])) {
 		$arglist = $result[1];
 	} else {
-		$arglist = "";
+		$arglist = '';
 	}
 
 	/* Parse the query string arguments */
-	$args=array();
+	$args = array();
 	parse_str($arglist, $args);
 	$args['gallery_popup'] = 'true';
 
@@ -76,25 +75,4 @@
 
 	return "$a1";
 }
-
-/* This function outputs the HTML Start elements of an Popup.
-** It was made to beautify php code ;)
-*/
-function printPopupStart($title="", $header="") {
-	global $gallery;
-	if (!empty($title) && empty($header)) {
-		$header = $title;
-	}
-?>
-<html>
-<head>
-  <title><?php echo $title; ?></title>
-  <?php common_header(); ?>
-</head>
-<body dir="<?php echo $gallery->direction ?>" class="popupbody">
-<div class="popuphead"><?php echo $header; ?></div>
-<div class="popup" align="center">
-
-<?php
-}
 ?>
diff -Naur gallery-1.5.1/lib/setup.php gallery-1.5.2/lib/setup.php
--- gallery-1.5.1/lib/setup.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/lib/setup.php	2006-01-10 06:30:53.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: setup.php,v 1.1.2.2 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: setup.php,v 1.11.2.3 2006/01/10 05:30:53 jenst Exp $
  */
 ?>
 <?php
@@ -116,7 +116,7 @@
 
 function form_textarea($key, $arr) {
 	$attrs = make_attrs($arr["attrs"]);
-	return "<textarea name=\"$key\" $attrs>$arr[value]</textarea>";
+	return "<textarea name=\"$key\" $attrs>". $arr['value'] ."</textarea>";
 }
 
 function form_input($key, $arr) {
@@ -126,7 +126,7 @@
 
     $name  = (isset($arr['name'])) ? $arr['name'] : $key;
 	
-    return "<input $type name=\"$name\" value=\"$arr[value]\" $attrs>";
+    return "<input $type name=\"$name\" value=\"". $arr['value'] ."\" $attrs>";
 }
 
 function form_password($key, $arr) {
@@ -182,18 +182,9 @@
 }
 
 function form_choice($key, $arr) {
-	
-	$buf = "\n\t<select name=$key>";
-	foreach ($arr["choices"] as $choice => $value) {
-		$selected = "";
-		if (!strcmp($choice, $arr["value"])) {
-			$selected = "SELECTED";
-		}
-		$buf .= "\n\t\t". '<option value="' . $choice . '" ' . $selected . '>'. $value . '</option>';
-	}
-	$buf .= "\n\t</select>\n";
-	return $buf;
-}
+    $attrs  = !empty($arr['attrs']) ? $arr['attrs'] : array();
+    return drawSelect($key, $arr["choices"], $arr["value"], 1, $attrs, true);
+    }
 
 function form_multiple_choice($key, $arr) {
 	if (empty($arr["multiple_choices"])) {
@@ -365,13 +356,9 @@
 
 function error_missing($desc, $key) {
 	if (empty($desc)) {
-		$desc=$key;
+		$desc = $key;
 	}
-	return gallery_error("// " . _("Missing value") . ": <b>$desc</b>!");
-}
-
-function error_row_wrap($buf) {
-	return "// $buf";
+	return gallery_error(sprintf(_("Missing value: %s"),"<b>$desc</b>!"));
 }
 
 function check_exec() {
@@ -389,7 +376,7 @@
 	}
 
 	if (empty($fail['fail-exec'])) {
-		$success[] = _("<b>exec()</b> is not disabled on this server.");
+		$success[] = _("<b>exec()</b> is enabled on this server.");
 	}
 
 	return array($success, $fail, $warn);
@@ -425,12 +412,18 @@
 
 	if (!function_exists('version_compare') || !version_compare($version, "4.1.0", ">=")) {
 		$fail['fail-too-old'] = 1;
+	}
+	
+	if (strstr(__FILE__, 'lib/setup.php') ||
+	  strstr(__FILE__, 'lib\\setup.php')) {
+        $success[] = sprintf(_("PHP v%s is OK."), $version);
 	} else {
-		$success[] = sprintf(_("PHP v%s is OK."), $version);
+		$fail['fail-buggy__FILE__'] = 1;
 	}
-
+	
 	return array($success, $fail, $warn);
 }
+
 function check_mod_rewrite()  {
 	global $GALLERY_REWRITE_OK;
 
@@ -547,20 +540,17 @@
 		}
 		
 		if (empty($dir)) {
-			if (isset($optional[$bin])) {
-				$warn[$bin] = sprintf(_("Missing optional binary %s. %s"), $bin, $optional[$bin]);
-			}
-			else {
-				$missing_critical[$bin] = sprintf(_("Can't find %s!"), "<i>$bin</i>");
-			}
-			$missing++;
+		    if (isset($optional[$bin])) {
+			$warn[$bin] = '<br>'. sprintf(_("Missing optional binary %s. %s"), $bin, $optional[$bin]);
+		    }
+		else {
+			$missing_critical[$bin] = '<br>'. sprintf(_("Can't find %s!"), "<i>$bin</i>");
+		    }
+		$missing++;
 		}
 
-		if (!empty($dir) && inOpenBasedir($dir)) {
-		    if (!fs_is_executable("$dir/$bin")) {
-				$warn[$bin] = sprintf(_("%s is not executable!"),
-					"<i>$bin</i> "); 
-			}
+		if (!empty($dir) && inOpenBasedir($dir) && !fs_is_executable("$dir/$bin")) {
+		    $warn[$bin] = '<br>'. sprintf(_("%s is not executable!"), "<i>$bin</i> "); 
 		}
 	}
 	
@@ -617,32 +607,29 @@
 	}
 
 	foreach ($imagick as $bin) {
-		if (!empty($location)) {
-			$dir = locateDir($bin, $location, true);
-		}
-		elseif (isset($gallery->app->ImPath)) {
-			$dir = locateDir($bin, $gallery->app->ImPath, true);
+	    if (!empty($location)) {
+		$dir = locateDir($bin, $location, true);
+	    }
+	    elseif (isset($gallery->app->ImPath)) {
+		$dir = locateDir($bin, $gallery->app->ImPath, true);
+	    }
+	    else {
+		$dir = locateDir($bin);
+	    }
+
+	    if (empty($dir)) {
+		if (isset($optional[$bin])) {
+		    $warn[$bin] = '<br>'. sprintf(_("Missing optional binary %s. %s"), $bin, $optional[$bin]);
 		}
 		else {
-			$dir = locateDir($bin);
-		}
-
-		if (empty($dir)) {
-			if (isset($optional[$bin])) {
-				$warn[$bin] = sprintf(_("Missing optional binary %s. %s"), $bin, $optional[$bin]);
-			}
-			else {
-				$missing_critical[$bin] = sprintf(_("Can't find %s!"), "<i>$bin</i>");
-			}
-			$missing++;
+		    $missing_critical[$bin] = '<br>'. sprintf(_("Can't find %s!"), "<i>$bin</i>");
 		}
+		$missing++;
+	    }
 
-		if (!empty($dir) && inOpenBasedir($dir)) {
-		    if (!fs_is_executable("$dir/$bin")) {
-				$warn[$bin] = sprintf(_("%s is not executable!"),
-					"<i>$bin</i> "); 
-			}
-		}
+	    if (!empty($dir) && inOpenBasedir($dir) && !fs_is_executable("$dir/$bin")) {
+		$warn[$bin] = '<br>'. sprintf(_("%s is not executable!"), "<i>$bin</i> ");
+	    }
 	}
 	
 	if ($missing == count($imagick)) {
@@ -736,8 +723,7 @@
 
 	$link="<a href=\"$gallery->url\">$gallery->url</a>";
 
-	$visit=sprintf(_("You can check for more recent versions by visiting %s."), 
-			$link);
+	$visit = sprintf(_("You can check for more recent versions by visiting %s."), $link);
 	$this_version = sprintf(_("This version of %s was released on %s."),
 			Gallery(), strftime("%x", $gallery->last_change));
 	$this_beta_version = sprintf(_("This is a development build of %s that was released on %s."),
@@ -1236,7 +1222,7 @@
     $buf ="\n<div class=\"inner\">";
     $buf .= "\n\t<div class=\"separator\">". $arr["title"] ."</div>";
     if( isset($arr["desc"])) {
-	$buf .= "\n<div class=\"desc\">". $arr["desc"] ."</div>";
+	   $buf .= "\n<div class=\"desc\">". $arr["desc"] ."</div>";
     }
     $buf .="\n</div>";
 
@@ -1250,10 +1236,11 @@
 	if (!is_array($subject)) {
 		return ($subject);
 	}
-	$ret=array();
+	$ret = array();
 	foreach ($subject as $key => $value) {
-		$ret[$key]=array_stripslashes($value);
+		$ret[$key] = array_stripslashes($value);
 	}
+	
 	return $ret;
 }
 
@@ -1517,21 +1504,6 @@
 		     );
 }
 
-function check_filedirective() {
-	$success = array();
-	$fail = array();
-	$warn = array();
-
-	if (strstr(__FILE__, 'lib/setup.php') ||
-		strstr(__FILE__, 'lib\\setup.php')) {
-		$success[]=_("Your version of PHP handles this issue properly.");
-	} else {
-		$fail['buggy__FILE__'] = 1;
-	}
-
-	return array($success, $fail, $warn);
-}
-
 function checkVersions($verbose=false) {
 	global $gallery;
 	/* we assume setup/init.php was loaded ! */
@@ -1612,7 +1584,7 @@
  * "default"		: Indicates wether the group is visible or not. Possible values: 'inlineÄ', 'none'.
  * "title"		: When the group is visible, this title is displayed in the header line.
  * "desc"		: This optional Description is displayed under the title.
- * ""contains_required"	: Indicates that this Group contains field that are required
+ * "contains_required"	: Indicates that this Group contains field that are required
  *
  * Note: - The first group which default is 'inline' will the group that is selected when opening the Page.
  *	 - You always need a group_end for a group. Otherwise everything below will belong to the group.
@@ -1620,19 +1592,24 @@
  * @author Jens Tkotz
  */ 
 
-function makeSectionTabs($array, $break = 7, $initialtab = '') {
+function makeSectionTabs($array, $break = 7, $initialtab = '', $sortByTitle = false) {
 	$tabs = array();
 
 	foreach ($array as $key => $var) {
         	if(isset($var['type']) && $var['type'] == 'group_start') {
-			$tab[]=$var;
+			$tabs[]=$var;
 		}
 	}
 
+	if ($sortByTitle) {
+	    array_sort_by_fields($tabs, 'title');
+	}
+
 	echo "\n<table width=\"100%\" cellspacing=\"0\">";
 	echo "\n<tr>";
 	$tabcount = 0;
-	foreach ($tab as $cell) {
+
+	foreach ($tabs as $cell) {
         	$tabcount++;
 		if (($cell['default'] == 'inline' && !$initialtab) || $initialtab == $cell['name']) {
 		        $class = 'class="tab-hi"';
@@ -1650,7 +1627,7 @@
 		}
 		echo '</td>';
 		echo "\n\t<td class=\"tabspacer\">&nbsp;</td>";
-		if ($tabcount % $break == 0) {
+		if ($tabcount % $break == 0 && $tabcount < sizeof($tabs)) {
 			echo "\n</tr>\n</table>";
 			echo "\n<table width=\"100%\"cellspacing=\"0\" style=\"margin-top:5px;\">\n<tr>";
 		}
@@ -1736,5 +1713,100 @@
 	'</div>';
 
     return $placeholderDescription;
-}	
+}
+
+/**
+ * 0 - success
+ * 5 - warning, optional
+ * 10 - serious warning, but optional
+ * 51 - serious warning
+ * 100 - failure
+ */
+function getCheckStatus($result, $check) {
+    list($success, $fail, $warn) = $result;
+    if(!empty($success)) {
+        return 0;
+    }
+
+    if (isset($check['optional']) && $check['optional'] == 1) {
+        if (isset($check["serious"]) && $check["serious"] == 1) {
+            if(empty($fail)) {
+                return 5;
+            }
+            else {
+                return 10;
+            }
+        } else {
+            return 5;
+        }
+    } else {
+        if (isset($check["serious"]) && $check["serious"] == 1) {
+            return 51;
+        } else {
+            return 100;
+        }
+    }
+
+}
+
+function checkImageMagick($cmd) {
+    global $gallery;
+    global $show_details;
+    global $debugfile;
+
+    $cmd = fs_executable($gallery->app->ImPath . "/$cmd");
+    $result[]= fs_import_filename($cmd);
+
+    $ok = 1;
+    if (inOpenBasedir($gallery->app->ImPath)) {
+        if (! fs_file_exists($cmd)) {
+            $result['error'] = sprintf(_("File %s does not exist."), $cmd);
+            $ok = 0;
+        }
+    }
+
+    fs_exec("$cmd -version", $results, $status, $debugfile);
+
+    if ($ok) {
+        if ($status != $gallery->app->expectedExecStatus) {
+            $result['error'] = sprintf(_("Expected status: %s, but actually received status %s."),
+            $gallery->app->expectedExecStatus,
+            $status);
+            $ok = 0;
+        }
+    }
+
+    /*
+    * Windows does not appear to allow us to redirect STDERR output, which
+    * means that we can't detect the version number.
+    */
+    if ($ok) {
+        if (getOS() == OS_WINDOWS) {
+            $version = "<i>" . _("can't detect version on Windows") ."</i>";
+        }
+        else if (eregi("version: (.*) http(.*)$", $results[0], $regs)) {
+            $version = $regs[1];
+        } else {
+            $result['error'] = $results[0];
+            $ok = 0;
+        }
+    }
+
+    if (! empty($ok)) {
+        $result['ok'] = sprintf(_("OK!  Version: %s"), $version);
+    }
+    return $result;
+}
+/**
+ * returns the current graphicTool set in config.php
+ * if not found, then the default is returned
+ */
+function getCurrentGraphicTool() {
+    global $gallery;
+    if(isset($gallery->app->graphics)) {
+        return $gallery->app->graphics;
+    } else {
+        return default_graphics();
+    }
+}
 ?>
diff -Naur gallery-1.5.1/lib/url.php gallery-1.5.2/lib/url.php
--- gallery-1.5.1/lib/url.php	2005-09-21 22:35:24.000000000 +0200
+++ gallery-1.5.2/lib/url.php	2005-12-26 22:23:03.000000000 +0100
@@ -77,7 +77,7 @@
 	global $userdata;
 	global $board_config;
         
-	/* Needed for Mambo */
+	/* Needed for Mambo / Joomla! */
 	global $MOS_GALLERY_PARAMS;
 
 	/* Needed for CPGNuke */
@@ -99,7 +99,7 @@
 	$urlprefix = ereg_replace("\/$", "", $urlprefix);
 	
 	/* Add the folder to the url when *Nuke is not direct in the main folder */
-	$addpath = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/'));
+	$addpath = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'));
 
 	if( isset($GALLERY_EMBEDDED_INSIDE) && !$isSetupUrl && where_i_am() != 'config') {
 		switch ($GALLERY_EMBEDDED_INSIDE_TYPE) {
@@ -160,13 +160,14 @@
 			break;
 							
 			case 'mambo':
+			case 'joomla':
 				$args['option'] = $GALLERY_MODULENAME;
 				$args['Itemid'] = $MOS_GALLERY_PARAMS['itemid'];
 				$args['include'] = $target;
 
-				/* We cant/wantTo load the complete Mambo Environment into the pop up
+				/* We cant/wantTo load the complete Mambo / Joomla! Environment into the pop up
 				** E.g. the Upload Framwork does not work then
-				** So we need to put necessary infos of Mambo into session.
+				** So we need to put necessary infos of Mambo / Joomla! into session.
 				*/
 				if ((isset($args['type']) && $args['type'] == 'popup') ||
 					(!empty($args['gallery_popup']))) {
@@ -294,27 +295,70 @@
     $fullURL = "$base/skins/$skinname/images/$name";
 
     if (fs_file_exists($fullname) && !broken_link($fullname)) {
-	$retUrl = $fullURL;
+    	$retUrl = $fullURL;
     } else {
-	$retUrl = $defaultname;
+    	$retUrl = $defaultname;
     }
 
     return $retUrl;
 }
 
 /**
+ * @param	string	$name		Name of Image
+ * @param	string	$skinname	Optional Name skin, if file is not found, fallback to default location
+ * @return	string	$retPath	Complete Path to the Image
+ * @author	Jens Tkotz <jens@peino.de>
+ */
+function getAbsoluteImagePath($name, $skinname = '') {
+    global $gallery;
+    $retPath = '';
+
+    $base = dirname(dirname(__FILE__));
+
+    $defaultPath = "$base/images/$name";
+
+    /* Skin maybe 'none', but this is never found, so we fall back to default. */
+    if (!$skinname) {
+    	$skinname = $gallery->app->skinname;
+    }
+    $skinPath = "$base/skins/$skinname/images/$name";
+
+    if (fs_file_exists($skinPath)) {
+    	$retPath = $skinPath;
+    } else {
+    	$retPath = $defaultPath;
+    }
+
+    return $retPath;
+}
+
+/**
  * Checkes wether an URL is relative or not
  * @param	string	$url
  * @return	boolean
- * @author	Jens Tkotz
+ * @author	Jens Tkotz <jens@peino.de>
  */
 function urlIsrelative($url) {
-     if (substr($url, 0,4) == 'http') {
-	return false;
-    }
-    else {
-	return true;
+	if (substr($url, 0,4) == 'http') {
+		return false;
+	}
+	else {
+		return true;
+	}
+}
+
+function broken_link($file) {
+    if (fs_is_link($file)) {
+        return !fs_is_file($file);
+    } else {
+        return 0;
     }
 }
 
+function galleryLink($url, $content, $attrList = array()) {
+	$attrs = generateAttrs($attrList);
+	$html = "<a href=\"$url\"$attrs>$content</a>";
+	
+	return $html;
+}
 ?>
diff -Naur gallery-1.5.1/lib/valchecks.php gallery-1.5.2/lib/valchecks.php
--- gallery-1.5.1/lib/valchecks.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/lib/valchecks.php	2006-01-06 07:31:37.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: valchecks.php,v 1.2.2.1 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: valchecks.php,v 1.3.2.1 2006/01/06 06:31:37 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/lib/voting.php gallery-1.5.2/lib/voting.php
--- gallery-1.5.1/lib/voting.php	2005-09-13 00:40:47.000000000 +0200
+++ gallery-1.5.2/lib/voting.php	2006-01-06 07:31:37.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: voting.php,v 1.7.2.1 2005/09/12 22:40:47 dmolavi Exp $
+ * $Id: voting.php,v 1.10.2.1 2006/01/06 06:31:37 jenst Exp $
  */
 ?>
 <?php
@@ -154,52 +154,52 @@
 		return;
 	}
 
-	if (isset($gallery->album->fields["votes"][$id][getVotingID()])) {
-	       	$current_vote = $gallery->album->fields["votes"][$id][getVotingID()];
+	if (isset($gallery->album->fields['votes'][$id][getVotingID()])) {
+	       	$current_vote = $gallery->album->fields['votes'][$id][getVotingID()];
 	} else {
 		$current_vote = -1;
 	}
 
 	$nv_pairs=$gallery->album->getVoteNVPairs();
 	print $gallery->album->getPollHint();
-	if ($gallery->album->getPollScale() == 1 && $gallery->album->getPollType() == "critique") {
+	if ($gallery->album->getPollScale() == 1 && $gallery->album->getPollType() == 'critique') {
 		print "\n<input type=checkbox name=\"votes[$id]\" value=\"1\"";
 		if ($current_vote > 0) {
-			print "checked";
+			print 'checked';
 		}
-		print ">".$nv_pairs[0]["name"];
+		print '>'.$nv_pairs[0]['name'];
 	}
-	else if ($gallery->album->getPollType() == "rank") {
+	else if ($gallery->album->getPollType() == 'rank') {
 		if ($gallery->album->getPollHorizontal()) {
-			print "<table><tr>";
+			print '<table><tr>';
 			for ($i = 0; $i < $gallery->album->getPollScale() ; $i++) {
-				print "\n<td align=center><input type=radio name=\"votes[$i]\" value=$id onclick=\"chooseOnlyOne($i, $form_pos,".
+				print "\n<td align=\"center\"><input type=\"radio\" name=\"votes[$i]\" value=$id onclick=\"chooseOnlyOne($i, $form_pos,".
 				$gallery->album->getPollScale().")\" ";
 				if ($current_vote === $i) {
-					print "checked";
+					print 'checked';
 				}
-				print "></td>";
+				print '></td>';
 			}
-			print "</tr><tr>";
+			print '</tr><tr>';
 			for ($i = 0; $i < $gallery->album->getPollScale() ; $i++) {
-				print "<td align=center>".$nv_pairs[$i]["name"]."</td>";
+				print '<td align="center" class="attention">'. $nv_pairs[$i]['name'] .'</td>';
 			}
-			print "</tr></table>";
+			print '</tr></table>';
 		    }
 		else {
-			print "<table>";
+			print '<table>';
 			for ($i = 0; $i < $gallery->album->getPollScale() ; $i++) {
-				print "<tr>";
-				print "\n<td align=center><input type=radio name=\"votes[$i]\" value=$id onclick=\"chooseOnlyOne($i, $form_pos,".
+				print '<tr>';
+				print "\n<td align=\"center\"><input type=\"radio\" name=\"votes[$i]\" value=$id onclick=\"chooseOnlyOne($i, $form_pos,".
 				$gallery->album->getPollScale().")\" ";
 				if ($current_vote === $i) {
-					print "checked";
+					print 'checked';
 				}
-				print "></td>";
-				print "<td >".$nv_pairs[$i]["name"]."</td>";
-				print "</tr><tr>";
+				print '></td>';
+				print '<td class="attention">'. $nv_pairs[$i]['name']. '</td>';
+				print '</tr><tr>';
 			}
-			print "</table>";
+			print '</table>';
 	    	}
 	}
 	else { // "critique"
@@ -212,17 +212,17 @@
 		}
 
 		if ($current_vote == -1) {
-			print "<option value=NULL><< ". _("Vote") . " >></option>\n";
+			print '<option value="NULL"><< '. _("Vote") . " >></option>\n";
 		}
 
 		for ($i = 0; $i < $gallery->album->getPollScale() ; $i++) {
-			$sel="";
+			$sel='';
 			if ($current_vote === $i) {
-				$sel="selected";
+				$sel = 'selected';
 			}
-			print "<option value=$i $sel>".$nv_pairs[$i]["name"]."</option>\n";
+			print "<option value=\"$i\" $sel>". $nv_pairs[$i]['name']. "</option>\n";
 		}
-		print "</select>";
+		print '</select>';
 	}
 }
 
@@ -300,7 +300,7 @@
 		$name_string.= $desc;
 		$name_string.= "</a>";
 		$name_string.= " - ".
-		      	pluralize_n2(ngettext("1 voter", "%d voters", $results_count[$element]), $results_count[$element]);
+		      	gTranslate('common', "1 voter", "%d voters", $results_count[$element]);
 	       	$graph[$name_string]=$count;
 	}
 
@@ -311,10 +311,9 @@
 	$graph=arrayToBarGraph($graph, 300, "border=0");
 	$buf .="\n<br>";
 	if ($graph) {
-                $buf .="<span class=\"title\">".
-		      	pluralize_n2(ngettext("Result from one voter", 
-			"Result of %d voters", sizeof($voters)), sizeof($voters)).
-                        "</span>";
+            $buf .="<span class=\"title\">".
+		gTranslate('common', "Result from one voter", "Result of %d voters", sizeof($voters)).
+                "</span>";
                 if ($gallery->album->getPollType() == "critique") {
                         $key_string="";
                         foreach ($nv_pairs as $nv_pair) {
@@ -365,7 +364,7 @@
 
 	foreach ($vote_tally as $key => $value) {
 		$buf .= sprintf(_("%s: %s"), $nv_pairs[$key]["name"],
-		      	pluralize_n2(ngettext("one vote", "%d votes", $value), $value)) . "<br>";
+		      	gTranslate('common', "one vote", "%d votes", $value)) . "<br>";
 
 	}
 	return $buf;
diff -Naur gallery-1.5.1/LICENSE.txt gallery-1.5.2/LICENSE.txt
--- gallery-1.5.1/LICENSE.txt	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/LICENSE.txt	2005-09-12 19:31:20.000000000 +0200
@@ -1,11 +1,11 @@
-$Id: LICENSE.txt,v 1.2.24.1 2005/09/12 22:40:44 dmolavi Exp $
+$Id: LICENSE.txt,v 1.3 2005/09/12 17:31:20 dmolavi Exp $
 
 		    GNU GENERAL PUBLIC LICENSE
 		       Version 2, June 1991
 
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street - Fifth Floor, Boston, MA  02110-1301 USA
-Everyone is permitted to copy and distribute verbatim copies
+ 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
 			    Preamble
diff -Naur gallery-1.5.1/login.php gallery-1.5.2/login.php
--- gallery-1.5.1/login.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/login.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: login.php,v 1.65.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: login.php,v 1.70.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -27,7 +27,7 @@
 list($username, $gallerypassword, $forgot, $login) = getRequestVar(array('username', 'gallerypassword', 'forgot', 'login'));
 
 /* decode user data, remove tags, and then re-encode using html entities for safe page display */
-$username = htmlspecialchars(removeTags(urldecode($username)));
+$username = htmlspecialchars(strip_tags(urldecode($username)));
 
 if (!empty($username) && !empty($gallerypassword)) {
 	$tmpUser = $gallery->userDB->getUserByUsername($username);
@@ -56,7 +56,7 @@
 		$gallerypassword = null;
 		gallery_syslog("Failed login for $username from " . $_SERVER['REMOTE_ADDR']);
 	}
-} elseif (!empty($submitted)) {
+} elseif (!empty($login)) {
 	$error=_("Please enter username and password.");
 }
 
@@ -71,7 +71,7 @@
 <div class="popuphead"><?php echo sprintf(_("Login to %s"), $gallery->app->galleryTitle) ?></div>
 <div class="popup" align="center">
 
-<?php echo makeFormIntro("login.php", array("name" => "login_form", "method" => "POST")); ?>
+<?php echo makeFormIntro('login.php', array('name' => 'login_form')); ?>
 <?php echo _("Logging in gives you greater permission to view, create, modify and delete albums.") ?>
 
 <table align="center">
@@ -103,7 +103,7 @@
 <div class="popuphead"><?php echo _("Forgotten your password?") ?></div>
 <div class="popup" align="center">
 <?php
-    echo makeFormIntro("login.php", array("name" => "forgot_form", "method" => "POST"));
+    echo makeFormIntro('login.php', array('name' => 'forgot_form'));
 
     if (!empty($forgot)) {
     	$tmpUser = $gallery->userDB->getUserByUsername($username);
@@ -153,7 +153,16 @@
 </form>
 </div>
 
-<?php } /* End if-email-on */ ?>
+<?php } /* End if-email-on */
+if ($gallery->app->selfReg == 'yes') {
+?>
+<div class="popuphead"><?php echo _("No account at all?") ?></div>
+<div class="popup" align="center">
+<a href="<?php echo makeGalleryUrl('register.php') ?>"><?php echo _("Register a new account."); ?></a>
+</div>
+<?php
+}
+?>
 
 <script language="javascript1.2" type="text/JavaScript">
 <!--
diff -Naur gallery-1.5.1/manage_users.php gallery-1.5.2/manage_users.php
--- gallery-1.5.1/manage_users.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/manage_users.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: manage_users.php,v 1.46.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: manage_users.php,v 1.49.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -25,7 +25,7 @@
 require_once(dirname(__FILE__) . '/init.php');
 
 list($create, $bulk_create, $modify, $delete, $unames) =
-                getRequestVar(array('create', 'bulk_create', 'modify', 'delete', 'unames'));
+    getRequestVar(array('create', 'bulk_create', 'modify', 'delete', 'unames'));
 
 if (!$gallery->user->isAdmin()) {
 	echo _("You are not allowed to perform this action!");
@@ -54,9 +54,10 @@
 		continue;
 	}
 
-	array_push($displayUsers, $tmpUser->getUsername());
+	$tmpUserName = $tmpUser->getUsername();
+	$displayUsers[$tmpUserName] = $tmpUserName;
 }
-sort($displayUsers); 
+asort($displayUsers); 
 doctype();
 ?>
 <html>
@@ -72,9 +73,7 @@
 	echo infoline(gallery_error($error),'error');
 }
 
-echo makeFormIntro("manage_users.php", array(
-			"name" => "manageusers_form", 
-			"method" => "POST"));
+echo makeFormIntro('manage_users.php', array('name' => 'manageusers_form'));
 
 echo _("You can create, modify and delete users here.");
 echo "\n<p>";
@@ -82,11 +81,7 @@
 if (!$displayUsers) {
 	print "<i>". _("There are no users!  Create one.") ."</i>";
 } else {
-	echo '<select name="unames[]" size="15" multiple>';
-	foreach ($displayUsers as $name) {
-		print "\t<option value=\"$name\">$name</option>\n";
-	}
-	echo "\n</select>";
+	echo drawSelect('unames[]', $displayUsers, '', 15, array('multiple' => ''), true);
 }	
 
 echo "\n</p>";
diff -Naur gallery-1.5.1/manifest.inc gallery-1.5.2/manifest.inc
--- gallery-1.5.1/manifest.inc	2005-09-22 15:13:54.000000000 +0200
+++ gallery-1.5.2/manifest.inc	2006-01-19 19:57:28.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: gpl.txt,v 1.7.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: gpl.txt,v 1.8.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/modify_user.php gallery-1.5.2/modify_user.php
--- gallery-1.5.1/modify_user.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/modify_user.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: modify_user.php,v 1.44.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: modify_user.php,v 1.47.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -39,30 +39,31 @@
 $msg = '';
 $infoLineType = '';
 
-/* User pressed "save" Button
-** If (changed) user name is valid and password match,
-** then load former user as temp user and overwrite with new values
-** If one modified itself, changes current user.
-*/
+/**
+ * User pressed "save" Button
+ * If (changed) user name is valid and password match,
+ * then load former user as temp user and overwrite with new values
+ * If one modified itself, changes current user.
+ */
 if (!empty($save)) {
-   if (strcmp($old_uname, $uname)) {
-	$gErrors["uname"] = $gallery->userDB->validNewUserName($uname);
-	    if ($gErrors["uname"]) {
-		$errorCount++;
-		$uname = $old_uname;
-	    }
+    if (strcmp($old_uname, $uname)) {
+        $gErrors["uname"] = $gallery->userDB->validNewUserName($uname);
+        if ($gErrors["uname"]) {
+            $errorCount++;
+            $uname = $old_uname;
+        }
     }
 
     if ($new_password1 || $new_password2) {
-	if (strcmp($new_password1, $new_password2)) {
-	    $gErrors["new_password2"] = _("Passwords do not match!");
-	    $errorCount++;
-	} else {
-	    $gErrors["new_password1"] = $gallery->userDB->validPassword($new_password1);
-	    if ($gErrors["new_password1"]) {
-		$errorCount++;
-	    }
-	}
+        if (strcmp($new_password1, $new_password2)) {
+            $gErrors["new_password2"] = _("Passwords do not match!");
+            $errorCount++;
+        } else {
+            $gErrors["new_password1"] = $gallery->userDB->validPassword($new_password1);
+            if ($gErrors["new_password1"]) {
+                $errorCount++;
+            }
+        }
     }
 
     if (!$errorCount) {
@@ -89,8 +90,8 @@
         $infoLineType = 'success';
     }
     else {
-	$msg = gallery_error(_("User information was not succesfully updated !!"));
-	$infoLineType = 'error';
+        $msg = gallery_error(_("User information was not succesfully updated !!"));
+        $infoLineType = 'error';
     }
 } else if (isset($dismiss)) {
     header("Location: " . makeGalleryHeaderUrl("manage_users.php"));
@@ -150,9 +151,7 @@
 ?>
 <br>
 
-<?php echo makeFormIntro("modify_user.php", 
-				array("name" => "usermodify_form", 
-					"method" => "POST")); ?>
+<?php echo makeFormIntro("modify_user.php", array('name' => 'usermodify_form')); ?>
 
 <input type="hidden" name="old_uname" value="<?php echo $uname ?>">
 
diff -Naur gallery-1.5.1/move_album.php gallery-1.5.2/move_album.php
--- gallery-1.5.1/move_album.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/move_album.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,24 +1,24 @@
 <?php
 /*
- * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
- *
- * $Id: move_album.php,v 1.58.2.1 2005/09/12 22:40:44 dmolavi Exp $
- */
+* Gallery - a web based photo album viewer and editor
+* Copyright (C) 2000-2006 Bharat Mediratta
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or (at
+* your option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+*
+* $Id: move_album.php,v 1.61.2.1 2006/01/06 06:31:30 jenst Exp $
+*/
 ?>
 <?php
 
@@ -28,19 +28,19 @@
 
 // Hack check
 if (!$gallery->user->canWriteToAlbum($gallery->album)) {
-	echo _("You are not allowed to perform this action!");
-	exit;
+    echo gTranslate('core', "You are not allowed to perform this action!");
+    exit;
 }
 
 doctype();
 ?>
 <html>
 <head>
-  <title><?php echo _("Move Album") ?></title>
+  <title><?php echo gTranslate('core', "Move Album") ?></title>
   <?php common_header(); ?>
 </head>
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
-<div class="popuphead"><?php echo _("Move Album") ?></div>
+<div class="popuphead"><?php echo gTranslate('core', "Move Album") ?></div>
 <div class="popup" align="center">
 <?php
 /* Read the album list */
@@ -48,105 +48,101 @@
 
 if ($gallery->session->albumName && isset($index)) {
     if (isset($newAlbum)) { // moving album to a nested location
-	if ($gallery->album->fields['name'] != $newAlbum) {
-	    $old_parent = $gallery->album->fields['parentAlbumName'];
-	    $gallery->album->fields['parentAlbumName'] = $newAlbum;
-			
-	    // Regenerate highlight if needed..
-	    if ($gallery->app->highlight_size != $newAlbum->fields["thumb_size"]) {
-		$hIndex = $gallery->album->getHighlight();
-		if (isset($hIndex)) {
-		    $hPhoto =& $gallery->album->getPhoto($hIndex);
-		    $hPhoto->setHighlight($gallery->album->getAlbumDir(), true, $gallery->album);
-		}
-	    }
-			
-	    if ($old_parent == 0) {
-		$old_parent=".root";
-	    }
-	
-	    $gallery->album->save(array(i18n("Album moved from %s to %s"),
-					$old_parent,
-					$newAlbum));
-
-	    $newAlbum = $albumDB->getAlbumByName($newAlbum);
-	    $newAlbum->addNestedAlbum($gallery->album->fields['name']);
-	    if ($newAlbum->numPhotos(1) == 1) {
-		$newAlbum->setHighlight(1);
-	    }
-	
-	    $newAlbum->save(array(i18n("New subalbum %s, moved from %s"),
-				$gallery->album->fields['name'], 
-				$old_parent));
-	}
-	dismissAndReload();
-	return;
+    if ($gallery->album->fields['name'] != $newAlbum) {
+        $old_parent = $gallery->album->fields['parentAlbumName'];
+        $gallery->album->fields['parentAlbumName'] = $newAlbum;
+
+        // Regenerate highlight if needed..
+        if ($gallery->app->highlight_size != $newAlbum->fields["thumb_size"]) {
+            $hIndex = $gallery->album->getHighlight();
+            if (isset($hIndex)) {
+                $hPhoto =& $gallery->album->getPhoto($hIndex);
+                $hPhoto->setHighlight($gallery->album->getAlbumDir(), true, $gallery->album);
+            }
+        }
+
+        if ($old_parent == 0) {
+            $old_parent=".root";
+        }
+
+        $gallery->album->save(array(i18n("Album moved from %s to %s"),
+        $old_parent,
+        $newAlbum));
+
+        $newAlbum = $albumDB->getAlbumByName($newAlbum);
+        $newAlbum->addNestedAlbum($gallery->album->fields['name']);
+        if ($newAlbum->numPhotos(1) == 1) {
+            $newAlbum->setHighlight(1);
+        }
+
+        $newAlbum->save(array(i18n("New subalbum %s, moved from %s"),
+        $gallery->album->fields['name'],
+        $old_parent));
     }
-	
+    dismissAndReload();
+    return;
+    }
+
     if (isset($newIndex)) {
-	$albumDB->moveAlbum($gallery->user, $index, $newIndex);
-	$albumDB->save();
-	dismissAndReload();
-	return;
+        $albumDB->moveAlbum($gallery->user, $index, $newIndex);
+        $albumDB->save();
+        dismissAndReload();
+        return;
     } else {
-	$visibleAlbums = $albumDB-> getVisibleAlbums($gallery->user);
+        $visibleAlbums = $albumDB-> getVisibleAlbums($gallery->user);
 
-	echo sprintf(_("Select the new location of album: %s"), $gallery->album->fields["title"]);
-	echo "\n<br>" . _("Your Album will be moved to the position you choose below.");
-	echo '<p>' .  $gallery->album->getHighlightTag() . '</p>';
-
-	if (!empty($reorder)) { // Reorder, intra-album move
-	    echo makeFormIntro("move_album.php", 
-		array("name" => "theform"),
-		array("type" => "popup")); 
-?>
-<input type="hidden" name="index" value="<?php echo $index ?>">
-<select name="newIndex">
-<?php
-	foreach ($visibleAlbums as $albumIndex => $album) {
-	    $i = $albumIndex+1;
-	    $sel = "";
-	    if ($i == $index) {
-		$sel = "selected";
-	    } 
-	
-	    echo "\n\t<option value=\"$i\" $sel>$i . ". $album->fields['title'] ."</option>";
-	}
-?>
-</select>
-<input type="submit" name="move" value="<?php echo _("Move it!") ?>">
-<input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
+        echo sprintf(gTranslate('core', "Select the new location of album: %s"), $gallery->album->fields["title"]);
+        echo "\n<br>" . gTranslate('core', "Your Album will be moved to the position you choose below.");
+        echo '<p>' .  $gallery->album->getHighlightTag() . '</p>';
+
+        if (!empty($reorder)) { // Reorder, intra-album move
+        echo makeFormIntro("move_album.php",
+          array("name" => "theform"),
+          array("type" => "popup"));
+?>
+    <input type="hidden" name="index" value="<?php echo $index ?>">
+    <select name="newIndex">
+<?php
+        foreach ($visibleAlbums as $albumIndex => $album) {
+            $i = $albumIndex+1;
+            $sel = '';
+            if ($i == $index) {
+                $sel = "selected";
+            }
+            echo "\n\t<option value=\"$i\" $sel>$i . ". $album->fields['title'] ."</option>";
+        }
+?>
+        </select>
+        <input type="submit" name="move" value="<?php echo gTranslate('core', "Move it!") ?>">
+        <input type="button" name="cancel" value="<?php echo gTranslate('core', "Cancel") ?>" onclick='parent.close()'>
 </form>
 
 <p>
 <?php
-	} else { // Reorder, trans-album move
-	    echo _("Nest within another Album:"); 
-	    echo makeFormIntro("move_album.php", 
-		array("name" => "theform"),
-		array("type" => "popup"));
-?>
-<input type="hidden" name="index" value="<?php echo $index ?>">
-<select name="newAlbum">
-<?php
-	    printAlbumOptionList(0,1)  
-?>
+        } else { // Reorder, trans-album move
+        echo gTranslate('core', "Nest within another Album:");
+        echo makeFormIntro("move_album.php",
+          array("name" => "theform"),
+          array("type" => "popup"));
+?>
+        <input type="hidden" name="index" value="<?php echo $index ?>">
+        <select name="newAlbum">
+        <?php printAlbumOptionList(false, true); ?>
 </select>
-<br><br>
-
-<input type="submit" name="move" value="<?php echo _("Move to Album!") ?>">
-<input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
+        <br><br>
+        <input type="submit" name="move" value="<?php echo gTranslate('core', "Move to Album!") ?>">
+        <input type="button" name="cancel" value="<?php echo gTranslate('core', "Cancel") ?>" onclick='parent.close()'>
 </form>
 <?php
-	} // End Reorder
+        } // End Reorder
     }
 } else {
-    echo gallery_error(_("no album / index specified"));
+    echo gallery_error(gTranslate('core', "no album / index specified"));
 }
 ?>
 
 <script language="javascript1.2" type="text/JavaScript">
-<!--   
+<!--
 <?php if (!empty($reorder)) { ?>
 // position cursor in top form field
 document.theform.newIndex.focus();
diff -Naur gallery-1.5.1/move_photo.php gallery-1.5.2/move_photo.php
--- gallery-1.5.1/move_photo.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/move_photo.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,14 +17,15 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: move_photo.php,v 1.92.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: move_photo.php,v 1.98.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
 
 require_once(dirname(__FILE__) . '/init.php');
 
-list ($reorder, $index, $newAlbum, $newIndex, $startPhoto, $endPhoto) = getRequestVar(array('reorder', 'index', 'newAlbum', 'newIndex', 'startPhoto', 'endPhoto'));
+list ($reorder, $index, $newAlbum, $newIndex, $startPhoto, $endPhoto) = 
+  getRequestVar(array('reorder', 'index', 'newAlbum', 'newIndex', 'startPhoto', 'endPhoto'));
 
 // Hack check
 if (!$gallery->user->canWriteToAlbum($gallery->album)) {
@@ -55,46 +56,53 @@
 	$numPhotos = $gallery->album->numPhotos(1);
 
 	// Here we are "moving" a photo from one album to another by "adding" it to the new album
-	// and then deleting it from the old one.  This could be optimized because our thumnails 
+	// and then deleting it from the old one.  This could be optimized because our thumnails
 	// and resized images already exist in the original directory, but the current method is an easy
 	// way to make sure all thumbnails and resized images are the correct size.
 
-        if (isset($newAlbum)) {	// we are moving from one album to another
+	// we are moving from one album to another
+	if (isset($newAlbum)) {
 		if ($gallery->session->albumName == $newAlbum) {
 			echo gallery_error(_("You can't move photos into the album they already exist in."));
 			exit;
 		}
-            	$postAlbum = $albumDB->getAlbumByName($newAlbum);
+		$postAlbum = $albumDB->getAlbumByName($newAlbum);
 		if (!$gallery->user->canWriteToAlbum($postAlbum)) {
 			printf(_("You do not have the required permissions to write to %s!"), $newAlbum);
 			exit;
 		}
-	       	if ((isset($postAlbum->fields['name']) || $newAlbum == ".root") && ($gallery->album->fields['name'] != $postAlbum->fields['name'])) {
+		if ((isset($postAlbum->fields['name']) || $newAlbum == ".root") &&
+		($gallery->album->fields['name'] != $postAlbum->fields['name'])) {
 			$votes_transferable = $gallery->album->pollsCompatible($postAlbum);
 			$vote_id=$gallery->album->getVotingIdByIndex($index);
 
-		       	if (isset($gallery->album->fields["votes"][$vote_id]) && 
-					$votes_transferable) {
-			       	$votes=$gallery->album->fields["votes"][$vote_id];
-		       	} else {
-			       	$votes=NULL;
-		       	}
-			if ($gallery->album->isAlbum($index)) { // moving "album" to another location
+			if (isset($gallery->album->fields["votes"][$vote_id]) && $votes_transferable) {
+				$votes = $gallery->album->fields["votes"][$vote_id];
+			} else {
+				$votes = NULL;
+			}
+			// moving "album" to another location
+			if ($gallery->album->isAlbum($index)) {
 				$myAlbum = $gallery->album->getNestedAlbum($index);
 				$hIndex = $myAlbum->getHighlight();
 				$oldHSize = $gallery->album->fields["thumb_size"];
-				if ($newAlbum == ".root") { // moving "album" to .root location
+				// moving "album" to .root location
+				if ($newAlbum == ".root") {
 					$myAlbum->fields['parentAlbumName'] = 0;
-					$gallery->album->deletePhoto($index, 0, 0); 
+					$gallery->album->deletePhoto($index, 0, 0);
 					if ($oldHSize != $gallery->app->highlight_size && isset($hIndex)) {
 						$hPhoto =& $myAlbum->getPhoto($hIndex);
 						$hPhoto->setHighlight($myAlbum->getAlbumDir(), true, $myAlbum);
 					}
 					$myAlbum->save(array(i18n("Moved to ROOT")));
 					$gallery->album->save(array(i18n("Subalbum %s moved to ROOT"), $myAlbum->fields['name']));
-				} else { // moving "album" to another album
-					if ($postAlbum != $myAlbum) { // we don't ever want to point an album back at itself!!!
-						$postAlbum->addNestedAlbum($gallery->album->getAlbumName($index)); // copy "album" to new album
+				}
+				// moving "album" to another album
+				else {
+					// we don't ever want to point an album back at itself!!!
+					if ($postAlbum != $myAlbum) {
+						// copy "album" to new album
+						$postAlbum->addNestedAlbum($gallery->album->getAlbumName($index));
 						if ($votes) {
 							$postAlbum->fields["votes"]["album.".$myAlbum->fields["name"]]=$votes;
 						}
@@ -106,53 +114,57 @@
 							$hPhoto =& $myAlbum->getPhoto($hIndex);
 							$hPhoto->setHighlight($myAlbum->getAlbumDir(), true, $myAlbum);
 						}
-						$gallery->album->save(array(i18n("Moved subalbum %s to %s"), 
-									$myAlbum->fields['name'], 
-									$postAlbum->fields['name']));
-					       	$myAlbum->save(array(i18n("Moved from %s to %s"),
-								       	$gallery->album->fields['name'],
-								       	$postAlbum->fields['name']));
+						$gallery->album->save(array(i18n("Moved subalbum %s to %s"),
+						$myAlbum->fields['name'],
+						$postAlbum->fields['name']));
+						$myAlbum->save(array(i18n("Moved from %s to %s"),
+						$gallery->album->fields['name'],
+						$postAlbum->fields['name']));
 						if ($postAlbum->numPhotos(1) == 1) {
 							$postAlbum->setHighlight(1);
 						}
 						$postAlbum->save(array(i18n("New subalbum %s from %s"),
-									$myAlbum->fields['name'], 
-									$gallery->album->fields['name']));
+						$myAlbum->fields['name'],
+						$gallery->album->fields['name']));
 					}
 				}
-			} else { // moving "picture" to another album
-				$index = $startPhoto; // set the index to the first photo that we are moving.	
+				// moving "picture" to another album
+			} else {
+				$index = $startPhoto; // set the index to the first photo that we are moving.
 
 				while ($startPhoto <= $endPhoto) {
 					if (!$gallery->album->isAlbum($index)) {
-					        set_time_limit($gallery->app->timeLimit);
+						set_time_limit($gallery->app->timeLimit);
 						echo _("Moving photo #").$startPhoto."<br>";
 						my_flush();
 						$mydir = $gallery->album->getAlbumDir();
 						$myphoto = $gallery->album->getPhoto($index);
 						$myname = $myphoto->image->name;
 						$myresized = $myphoto->image->resizedName;
-						$mytype=$myphoto->image->type;
-						$myfile="$mydir/$myname.$mytype";
-						$myhidden=$myphoto->isHidden();
+						$mytype = $myphoto->image->type;
+						$myfile = "$mydir/$myname.$mytype";
+						$myhidden = $myphoto->isHidden();
 						if (($postAlbum->fields["thumb_size"] == $gallery->album->fields["thumb_size"]) &&
-						    (!$myphoto->isMovie())) {
+						  (!$myphoto->isMovie())) {
 							$pathToThumb="$mydir/$myname.thumb.$mytype";
 						} else {
 							$pathToThumb="";
 							echo "- ". _("Creating Thumbnail") ."<br>";
 							my_flush();
 						}
-						$photo=$gallery->album->getPhoto($index);
-
-						$id=$gallery->album->getPhotoId($index);
+						$photo = $gallery->album->getPhoto($index);
 
-
-						$err = $postAlbum->addPhoto($myfile, $mytype, $myname, 
-								$gallery->album->getCaption($index), 
-								$pathToThumb, $photo->extraFields, 
-								$gallery->album->getItemOwner($index),
-								$votes);
+						$id = $gallery->album->getPhotoId($index);
+						$err = $postAlbum->addPhoto($myfile, $mytype, $myname,
+						  $gallery->album->getCaption($index),
+						  $pathToThumb,
+						  $photo->extraFields,
+						  $gallery->album->getItemOwner($index),
+						  $votes,
+						  '', 0, 0, 0, 0,
+						  false
+						);
+						
 						if (!$err) {
 							$newPhotoIndex = $postAlbum->getAddToBeginning() ? 1 : $postAlbum->numPhotos(1);
 
@@ -170,10 +182,10 @@
 							}
 							$postAlbum->setPhoto($newphoto,$newPhotoIndex);
 
-							$postAlbum->save(array(i18n("New image %s from album %s"), 
-								makeAlbumURL($postAlbum->fields["name"], $gallery->album->getPhotoId($index)),
+							$postAlbum->save(array(i18n("New image %s from album %s"),
+							  makeAlbumURL($postAlbum->fields["name"], $gallery->album->getPhotoId($index)),
 
-								       	$gallery->album->fields['name']));
+							$gallery->album->fields['name']));
 							if ($startPhoto == $endPhoto) {
 								if (!$gallery->album->hasHighlight()) {
 									$resetHighlight = 1;
@@ -186,56 +198,59 @@
 								$resetHighlight = -1;
 								$gallery->album->deletePhoto($index,$resetHighlight);
 							}
-						       	$gallery->album->save(array(i18n("%s moved to %s"), 
-										$id,
-										$postAlbum->fields['name']));
+							$gallery->album->save(array(
+							  i18n("%s moved to %s"),
+							  $id,
+							  $postAlbum->fields['name']
+							  )
+							);
 						} else {
 							echo gallery_error($err);
 							return;
-                				}
-			     		} else {
+						}
+					} else {
 						echo sprintf(_("Skipping Album #%d"), $startPhoto)."<br>";
-						$index++; // we hit an album... don't move it... just increment the index
+						 // we hit an album... don't move it... just increment the index
+						$index++;
 					}
 					$startPhoto++;
-	    			} //end while
-			} //end else
-		       	if ($votes) {
-			       	unset($gallery->album->fields["votes"][$vote_id]);
+					//end while
+				}
+				//end else
+			}
+			if ($votes) {
+				unset($gallery->album->fields["votes"][$vote_id]);
 				$gallery->album->save();
-		       	}
+			}
 		} //end if ($gallery->album != $postAlbum)
 		dismissAndReload();
 		return;
 	} //end if (isset($newAlbum))
 
-        if (isset($newIndex)) {
+	if (isset($newIndex)) {
 		$gallery->album->movePhoto($index, $newIndex);
 		$gallery->album->save(array(i18n("Images rearranged")));
 		dismissAndReload();
 		return;
 	} else {
-?>
-
-<?php
-echo '<br>'. $gallery->album->getThumbnailTag($index) .'<br><br>';
-if ($reorder ) { // Reorder, intra-album move
-	if ($gallery->album->isAlbum($index)) {
-		echo _("Reorder this album within the album:") ."<br>";
-	} else {
-		echo _("Reorder this photo within the album:") ."<br>";
-	}
+		echo '<br>'. $gallery->album->getThumbnailTag($index) .'<br><br>';
+		if ($reorder ) { // Reorder, intra-album move
+		if ($gallery->album->isAlbum($index)) {
+			echo _("Reorder this album within the album:") ."<br>";
+		} else {
+			echo _("Reorder this photo within the album:") ."<br>";
+		}
 ?>
 <i>(<?php echo sprintf(_("Current Location is %s"), $index) ?>)</i>
 <p>
 <p>
 <?php echo makeFormIntro("move_photo.php", array("name" => "theform")); ?>
 <?php echo _("Select the new location:") ?> 
-<input type=hidden name="index" value="<?php echo $index ?>">
+<input type="hidden" name="index" value="<?php echo $index ?>">
 <select name="newIndex">
 <?php
 for ($i = 1; $i <= $numPhotos; $i++) {
-        $sel = "";
+        $sel = '';
         if ($i == $index) {
                 $sel = "selected";
         }
@@ -250,24 +265,26 @@
 </form>
 
 <?php
-} else if (!$reorder) { // Don't reorder, trans-album move
-if ($gallery->album->isAlbum($index)) {
-	echo _("Move the album to a new album:");
-	echo makeFormIntro("move_photo.php", array("name" => "move_to_album_form"));
+// Don't reorder, trans-album move
+		} else if (!$reorder) {
+			if ($gallery->album->isAlbum($index)) {
+				echo _("Move the album to different position in your gallery:");
+				echo makeFormIntro("move_photo.php", array("name" => "move_to_album_form"));
 ?>
-<input type=hidden name="index" value="<?php echo $index ?>">
+<input type="hidden" name="index" value="<?php echo $index ?>">
 <select name="newAlbum">
 <?php
-	$uptodate=printAlbumOptionList(1,0,0);
+	$uptodate = printAlbumOptionList(1,0,0);
 ?>
 </select>
 <?php
-} else {  
-	echo _("Move a range of photos to a new album:") ?><br>
+			} else {
+				echo _("Move a range of photos to a new album:");
+?><br>
 <i>(<?php echo _("To move just one photo, make First and Last the same.") ?>)</i><br>
 <i>(<?php echo _("Nested albums in this range will be ignored.") ?>)</i>
 <?php echo makeFormIntro("move_photo.php", array("name" => "move_to_album_form")); ?>
-<input type=hidden name="index" value="<?php echo $index ?>">
+<input type="hidden" name="index" value="<?php echo $index ?>">
 
 <?php
 // Display album list for a photo and display num photos to move
@@ -283,7 +300,7 @@
 <select name="startPhoto">
 <?php
 for ($i = 1; $i <= $numPhotos; $i++) {
-        $sel = "";
+        $sel = '';
         if ($i == $index) {
                 $sel = "selected";
         }
@@ -308,7 +325,7 @@
 <td>
 <select name="newAlbum">
 <?php
-	$uptodate= printAlbumOptionList(0,0,1); 
+	$uptodate = printAlbumOptionList(0,0,1); 
 ?>
 </select>
 </td>
@@ -331,7 +348,7 @@
 }
 ?>
 <p>
-<input type="submit" value="<?php echo _("Move to Album!") ?>">
+<input type="submit" value="<?php echo $title ?>">
 <input type="button" name="close" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
 </form>
 <?php
diff -Naur gallery-1.5.1/multi_create_user.php gallery-1.5.2/multi_create_user.php
--- gallery-1.5.1/multi_create_user.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/multi_create_user.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * This additional file was created by Joan McGalliard
  *	http://www.mcgalliard.org
  *
- * $Id: multi_create_user.php,v 1.23.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: multi_create_user.php,v 1.27.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -139,8 +139,8 @@
         }
         echo "\n<p>";
         echo sprintf(_("%s added, %s skipped"),
-        pluralize_n2(ngettext("1 user", "%d users", $total_added), $total_added),
-        pluralize_n2(ngettext("1 user", "%d users", $total_skipped), $total_skipped));
+	    gTranslate('core', "1 user", "%d users", $total_added),
+	    gTranslate('core', "1 user", "%d users", $total_skipped));
         echo "\n</p>";      
 ?>
 
@@ -184,10 +184,9 @@
 
 echo makeFormIntro("multi_create_user.php", array(
     "name" => "usercreate_form",
-    "enctype" => "multipart/form-data",
-    "method" => "POST",));
+    "enctype" => "multipart/form-data"));
 
-$canCreateChoices = array(1 => _("yes"), 0 => _("no"));
+$canCreateChoices = array(1 => _("Yes"), 0 => _("No"));
 $canCreate = 0;
 ?>
 	<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
diff -Naur gallery-1.5.1/new_password.php gallery-1.5.2/new_password.php
--- gallery-1.5.1/new_password.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/new_password.php	2006-01-19 11:31:53.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,17 +17,20 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: new_password.php,v 1.16.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: new_password.php,v 1.18.2.2 2006/01/19 10:31:53 jenst Exp $
  */
 ?>
 <?php
 
 require_once(dirname(__FILE__) . '/init.php');
 
-list($hash, $uname, $save, $new_password1, $new_password2) = getRequestVar(array('hash', 'uname', 'save', 'new_password1', 'new_password2'));
-list($fullname, $email, $defaultLanguage) = getRequestVar(array('fullname', 'email', 'defaultLanguage'));
+list($hash, $uname, $save, $new_password1, $new_password2) = 
+    getRequestVar(array('hash', 'uname', 'save', 'new_password1', 'new_password2'));
+list($fullname, $email, $defaultLanguage) = 
+    getRequestVar(array('fullname', 'email', 'defaultLanguage'));
+
+$error_string = '';
 
-$error_string="";
 if (!isset($hash)) {
        	$error_string .= _("missing hash parameter") . "<br>";
 }
@@ -42,7 +45,7 @@
 	}
 }
 
-$errorCount=0;
+$errorCount = 0;
 if (!empty($save)) {
 	if (empty($new_password1) ) {
 	       	$gErrors["new_password1"] = _("You must provide your new password.");
@@ -57,23 +60,35 @@
 	       	}
        	}
 
-	if (!$error_string && !$errorCount) {
-	       	$tmpUser->setFullname($fullname);
-	       	$tmpUser->setEmail($email);
-	       	if (isset($defaultLanguage)) {
-		       	$tmpUser->setDefaultLanguage($defaultLanguage);
-		       	$gallery->session->language=$defaultLanguage;
-	       	}
-	      	if ($new_password1) {
-		       	$tmpUser->setPassword($new_password1);
-	       	}
-	       	$tmpUser->genRecoverPasswordHash(true);
-		$tmpUser->log("new_password_set");
-	       	$tmpUser->save();
-
-		// Switch over to the new username in the session
-	       	$gallery->session->username = $uname;
-	       	header("Location: " . makeAlbumHeaderUrl());
+	// security check;
+	if($fullname != strip_tags($fullname)) {
+            $gErrors["fullname"] =
+                sprintf(_("%s contained invalid data, resetting input."), htmlentities($fullname));
+            $errorCount++;
+        }
+
+	if (!empty($email) && !check_email($email)) {
+                $gErrors['email'] = _("You must specify a valid email address.");
+                $errorCount++;
+        }
+
+       	if (!$error_string && !$errorCount) {
+       	    $tmpUser->setFullname($fullname);
+       	    $tmpUser->setEmail($email);
+       	    if (isset($defaultLanguage)) {
+       	        $tmpUser->setDefaultLanguage($defaultLanguage);
+       	        $gallery->session->language=$defaultLanguage;
+       	    }
+       	    if ($new_password1) {
+       	        $tmpUser->setPassword($new_password1);
+       	    }
+       	    $tmpUser->genRecoverPasswordHash(true);
+       	    $tmpUser->log("new_password_set");
+       	    $tmpUser->save();
+
+       	    // Switch over to the new username in the session
+       	    $gallery->session->username = $uname;
+       	    header("Location: " . makeAlbumHeaderUrl());
        	}
 }
 
@@ -98,31 +113,29 @@
 <?php 
 if ($error_string) {
        	echo gallery_error($error_string);
-       	echo "<a href='albums.php'>" . _("Enter the Gallery") . "</a></body></html>"; 
+       	echo "<a href='albums.php'>" . _("Enter the Gallery") . "</a></div></body></html>"; 
 	exit;
 }
 
 echo _("You can change your user information here.");
 echo _("You must enter the new password twice.");
 
-?>
-
-<p>
+echo "\<p>";
 
-<?php echo makeFormIntro("new_password.php", array(
-			"name" => "usermodify_form", 
-			"method" => "POST"));
+echo makeFormIntro('new_password.php', array('name' => 'usermodify_form'));
 $fullname = $tmpUser->getFullname();
 $email = $tmpUser->getEmail();
 $defaultLanguage = $tmpUser->getDefaultLanguage();
-?>
-<p>
 
-<?php include(dirname(__FILE__) . '/html/userData.inc'); ?>
+echo "\n<p>";
+
+include(dirname(__FILE__) . '/html/userData.inc');
+
+?>
 <p>
-<input type=hidden name="hash" value="<?php echo $hash ?>">
+<input type="hidden" name="hash" value="<?php echo $hash ?>">
 <input type="submit" name="save" value="<?php echo _("Save") ?>">
-<input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick="parent.close()">
+<input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick="location.href='<?php echo $gallery->app->photoAlbumURL; ?>'">
 </form>
 
 <script language="javascript1.2" type="text/JavaScript">
@@ -132,5 +145,6 @@
 //--> 
 </script>
 </div>
+
 </body>
 </html>
diff -Naur gallery-1.5.1/nls.php gallery-1.5.2/nls.php
--- gallery-1.5.1/nls.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/nls.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: nls.php,v 1.40.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: nls.php,v 1.42.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 
 /**
diff -Naur gallery-1.5.1/photo_owner.php gallery-1.5.2/photo_owner.php
--- gallery-1.5.1/photo_owner.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/photo_owner.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file by Joan McGalliard
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: photo_owner.php,v 1.25.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: photo_owner.php,v 1.26.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/platform/fs_unix.php gallery-1.5.2/platform/fs_unix.php
--- gallery-1.5.1/platform/fs_unix.php	2005-09-17 15:12:36.000000000 +0200
+++ gallery-1.5.2/platform/fs_unix.php	2006-01-11 11:29:42.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,17 +17,25 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: fs_unix.php,v 1.27.2.3 2005/09/17 13:12:36 jenst Exp $
+ * $Id: fs_unix.php,v 1.33.2.3 2006/01/11 10:29:42 jenst Exp $
  */
-
+?>
+<?php
 /**
  * @package Filesystem_unix
  */
 
+/**
+ * Copies a file from $source to $dest.
+ * @param  string    $source    Full path to source file.
+ * @param  string    $dest      Full path to destination file.
+ * @return boolean   $result    true on success, otherwise false
+ */
 function fs_copy($source, $dest) {
-	$umask = umask(0113);
-	$results = copy($source, $dest);
-	umask($umask);
+    $result = copy($source, $dest);
+    chmod ($dest, 0644);
+
+    return $result;
 }
 
 function fs_exec($cmd, &$results, &$status, $debugfile="") {
@@ -94,7 +102,8 @@
 	return $dir_handle;
     }
     else {
-	echo gallery_error(sprintf(_("Gallery was not able to open dir: %s. <br>Please check permissions and existence"), $path));
+	echo "\<br>". gallery_error(sprintf(_("Gallery was not able to open dir: %s. <br>Please check permissions and existence"), $path));
+	return false;
     }
 }
 
@@ -117,12 +126,12 @@
 	return is_executable($filename);
 }
 
-function fs_import_filename($filename, $for_exec=1) {
-	if ($for_exec) {
-		$filename = escapeshellarg ($filename); // Might as well use the function PHP provides!
-	}
+function fs_import_filename($filename, $for_exec = true) {
+    if ($for_exec) {
+	$filename = escapeshellarg($filename); // Might as well use the function PHP provides!
+    }
 	
-	return $filename;
+    return $filename;
 }
 
 function fs_export_filename($filename) {
@@ -133,25 +142,29 @@
 	return $filename;
 }
 
-function fs_mkdir($filename, $perms) {
-	$umask = umask(0);
+/**
+ * Creates a directory
+ * @param  string    $dirname
+ * @param  string    $perms     Optional perms, given in octal format
+ * @return boolean   $result    true on success, otherwise false
+ */
+function fs_mkdir($dirname, $perms = 0700) {
+    /*
+     * PHP 4.2.0 on Unix (specifically FreeBSD) has a bug where mkdir
+     * causes a seg fault if you specify modes.
+     *
+     * See: http://bugs.php.net/bug.php?id=16905
+     *
+     * We can't reliably determine the OS, so let's just turn off the
+     * permissions for any Unix implementation.
+     */
+    if ( phpversion() == '4.2.0') {
+	   $result = mkdir(fs_import_filename($dirname, 0));
+       chmod($dirname, $perms);
+    } else {
+	   $result = mkdir(fs_import_filename($dirname, 0), $perms);
+    }
 
-	/*
-	 * PHP 4.2.0 on Unix (specifically FreeBSD) has a bug where mkdir
-	 * causes a seg fault if you specify modes.
-	 *
-	 * See: http://bugs.php.net/bug.php?id=16905
-	 *
-	 * We can't reliably determine the OS, so let's just turn off the
-	 * permissions for any Unix implementation.
-	 */
-	if (!strcmp(phpversion(), "4.2.0")) {
-	    $results = mkdir(fs_import_filename($filename, 0));
-	} else {
-	    $results = mkdir(fs_import_filename($filename, 0), $perms);
-	}
-	
-	umask($umask);
-	return $results;
+    return $result;
 }
 ?>
diff -Naur gallery-1.5.1/platform/fs_win32.php gallery-1.5.2/platform/fs_win32.php
--- gallery-1.5.1/platform/fs_win32.php	2005-09-17 15:12:36.000000000 +0200
+++ gallery-1.5.2/platform/fs_win32.php	2006-01-06 07:32:45.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,16 +17,25 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: fs_win32.php,v 1.31.2.3 2005/09/17 13:12:36 jenst Exp $
+ * $Id: fs_win32.php,v 1.37.2.1 2006/01/06 06:32:45 jenst Exp $
  */
 ?>
 <?php
+/**
+ * @package Filesystem_windows
+ */
+
+/**
+ * Copies a file from $source to $dest.
+ * @param  string    $source    Full path to source file.
+ * @param  string    $dest      Full path to destination file.
+ * @return boolean   $result    true on success, otherwise false
+ */
 function fs_copy($source, $dest) {
-	$umask = umask(0133);
-	$results = copy(
-		fs_import_filename($source, 0), 
-		fs_import_filename($dest, 0));
-	umask($umask);
+    $result = copy(fs_import_filename($source, 0), fs_import_filename($dest, 0));
+    chmod (fs_import_filename($dest, 0), 0644);
+
+    return $result;	
 }
 
 function fs_file_exists($filename) {
@@ -95,6 +104,7 @@
     }
     else {
         echo gallery_error(sprintf(_("Gallery was not able to open dir: %s. <br>Please check permissions and existence"), $path));
+	return false;
     }
 }
 
@@ -143,11 +153,16 @@
 	return $filename;
 }
 
-function fs_mkdir($filename, $perms) {
-	$umask = umask(0);
-	$results = mkdir(fs_import_filename($filename, 0), $perms);
-	umask($umask);
-	return $results;
+/**
+ * Creates a directory
+ * @param  string    $dirname
+ * @param  string    $perms     Optional perms, given in octal format
+ * @return boolean   $result    true on success, otherwise false
+ */
+function fs_mkdir($dirname, $perms = 0700) {
+    $result = mkdir(fs_import_filename($dirname, 0), $perms);
+
+    return $result;
 }
 
 function fs_import_filename($filename, $for_exec=1) {
diff -Naur gallery-1.5.1/po/change_version.sh gallery-1.5.2/po/change_version.sh
--- gallery-1.5.1/po/change_version.sh	2005-08-08 22:35:56.000000000 +0200
+++ gallery-1.5.2/po/change_version.sh	2006-01-19 18:43:19.000000000 +0100
@@ -1,7 +1,7 @@
 #!/bin/bash
-# $Id: change_version.sh,v 1.8.2.1 2005/08/08 20:35:56 jenst Exp $
+# $Id: change_version.sh,v 1.10.2.1 2006/01/19 17:43:19 jenst Exp $
 
-NEW_VERSION="1.5.1"
+NEW_VERSION="1.5.2"
 
 esc=`echo -en "\033"`
 tab="${esc}[5G"
@@ -59,13 +59,10 @@
 	echo "$tab Module = $module"
 
 	echo "$tab Updating ..."
-	head -1 $all_po > tmp.po
+	head -19 $all_po > tmp.po
 	echo "#" >> tmp.po
-	echo "# @version$tab $NEW_VERSION" >> tmp.po
-	echo "# @package$tab Language" >> tmp.po
-	echo "# @subpackage  Languagepack" >> tmp.po
-	echo "#" >> tmp.po
-	tail +7 $all_po >> tmp.po
+	echo "# @version      $NEW_VERSION" >> tmp.po
+	tail +21 $all_po >> tmp.po
 	mv tmp.po $all_po
 done
 
@@ -76,13 +73,9 @@
 	lang=${lang1##*/}
 
 	echo "$tab Language = $lang"
-
 	echo "$tab Updating ..."
-	head -20 $all_nls > tmp.nls
-	echo " *" >> tmp.nls
-	echo "# @version$tab $NEW_VERSION" >> tmp.po
-	echo "# @package$tab Language" >> tmp.po
-	echo "# @subpackage  Languagepack" >> tmp.po
+	head -23 $all_nls > tmp.nls
+	echo " * @version     $NEW_VERSION" >> tmp.nls
 	tail +25 $all_nls >> tmp.nls
 	mv tmp.nls $all_nls
 done
diff -Naur gallery-1.5.1/po/copyright-header.txt gallery-1.5.2/po/copyright-header.txt
--- gallery-1.5.1/po/copyright-header.txt	2005-09-13 00:41:24.000000000 +0200
+++ gallery-1.5.2/po/copyright-header.txt	2006-01-06 07:32:45.000000000 +0100
@@ -1,6 +1,6 @@
 # 
 # Gallery - a web based photo album viewer and editor
-# Copyright (C) 2000-2005 Bharat Mediratta
+# Copyright (C) 2000-2006 Bharat Mediratta
 # 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 #
-# $Id: copyright-header.txt,v 1.1.2.3 2005/09/12 22:41:24 dmolavi Exp $
+# $Id: copyright-header.txt,v 1.2.2.1 2006/01/06 06:32:45 jenst Exp $
 #
 # @version	<Version>
 # @package      Languagepack
diff -Naur gallery-1.5.1/po/create_po_template.sh gallery-1.5.2/po/create_po_template.sh
--- gallery-1.5.1/po/create_po_template.sh	2005-08-08 22:35:57.000000000 +0200
+++ gallery-1.5.2/po/create_po_template.sh	2005-11-05 02:53:07.000000000 +0100
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: create_po_template.sh,v 1.9.16.1 2005/08/08 20:35:57 jenst Exp $
+# $Id: create_po_template.sh,v 1.12 2005/11/05 01:53:07 jenst Exp $
 #
 #note: requires xgettext version 0.12.1 or greater
 #
@@ -10,9 +10,14 @@
 ##### CORE .pot ############
 cat copyright-header.txt > gallery-core.pot
 
-xgettext --files-from=filelist-core -LPHP --keyword=_ --no-wrap --msgid-bugs-address="gallery-translations@lists.sourceforge.net" -o - | tail +7 >> gallery-core.pot
+xgettext --files-from=filelist-core -LPHP --keyword=gTranslate:2,3 --no-wrap --msgid-bugs-address="gallery-translations@lists.sourceforge.net" -o - | tail +7 >> gallery-core.pot
 
 ##### CONFIG .pot
 cat copyright-header.txt > gallery-config.pot
 
-xgettext --files-from=filelist-config -LPHP --keyword=_ --no-wrap --msgid-bugs-address="gallery-translations@lists.sourceforge.net" -o - | tail +7 >> gallery-config.pot
+xgettext --files-from=filelist-config -LPHP --keyword=gTranslate:2,3 --no-wrap --msgid-bugs-address="gallery-translations@lists.sourceforge.net" -o - | tail +7 >> gallery-config.pot
+
+##### COMMON .pot
+cat copyright-header.txt > gallery-common.pot
+
+xgettext --files-from=filelist-common -LPHP --keyword=gTranslate:2,3 --no-wrap --msgid-bugs-address="gallery-translations@lists.sourceforge.net" -o - | tail +7 >> gallery-common.pot
diff -Naur gallery-1.5.1/po/edit_changelog.sh gallery-1.5.2/po/edit_changelog.sh
--- gallery-1.5.1/po/edit_changelog.sh	2005-08-08 22:35:57.000000000 +0200
+++ gallery-1.5.2/po/edit_changelog.sh	2005-12-23 20:20:39.000000000 +0100
@@ -1,5 +1,5 @@
 #!/bin/bash
-# $Id: edit_changelog.sh,v 1.9.2.1 2005/08/08 20:35:57 jenst Exp $
+# $Id: edit_changelog.sh,v 1.12 2005/12/23 19:20:39 jenst Exp $
 
 esc=`echo -en "\033"`
 tab="${esc}[5G"
@@ -48,11 +48,12 @@
 	echo "$tab Updating ..."
 	echo "" >> $all_CF
 #	echo "===============================================================================" >> $all_CF
-	echo "2005-08-08 Jens Tkotz <jens AT peino DOT de> 1.5.1-RC2-cvs-b12" >> $all_CF
+	echo "2005-10-10 Jens Tkotz <jens AT peino DOT de> 1.5.2-cvs-b54" >> $all_CF
 	echo "" >> $all_CF
 #	echo " * Release of Gallery 1.5-RC2 langpack" >> $all_CF
-	echo " * Changed format to be analog to phpDoc." >> $all_CF
-	echo " * Updated Version Numbers and sync against latest code" >> $all_CF
+	echo " * Updated to latest code. Added -common translation." >> $all_CF
+	echo " * Note: Files needs to be updated !!" >> $all_CF
+#	echo " * Updated Version Numbers and sync against latest code" >> $all_CF
 #	echo "===============================================================================" >> $all_CF
 	echo "" >> $all_CF
 #read trash
diff -Naur gallery-1.5.1/po/filelist-common gallery-1.5.2/po/filelist-common
--- gallery-1.5.1/po/filelist-common	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/po/filelist-common	2005-11-06 21:06:50.000000000 +0100
@@ -0,0 +1,15 @@
+../includes/definitions/albumProperties.php
+../includes/definitions/services.php
+../lib/Form.php
+../lib/album.php
+../lib/colorpicker.php
+../lib/content.php
+../lib/imageManipulation.php
+../lib/lang.php
+../lib/mail.php
+../lib/messages.php
+../lib/popup.php
+../lib/setup.php
+../lib/url.php
+../lib/valchecks.php
+../lib/voting.php
diff -Naur gallery-1.5.1/po/filelist-config gallery-1.5.2/po/filelist-config
--- gallery-1.5.1/po/filelist-config	2005-08-29 08:11:27.000000000 +0200
+++ gallery-1.5.2/po/filelist-config	2005-09-08 22:05:58.000000000 +0200
@@ -1,9 +1,9 @@
-../html_wrap/frames/golden/frame.def
 ../html_wrap/frames/notebook/frame.def
+../html_wrap/frames/shadows/frame.def
 ../html_wrap/frames/polaroid/frame.def
 ../html_wrap/frames/polaroids/frame.def
+../html_wrap/frames/golden/frame.def
 ../html_wrap/frames/postage_stamp/frame.def
-../html_wrap/frames/shadows/frame.def
 ../html_wrap/frames/simple_book/frame.def
 ../html_wrap/frames/wooden/frame.def
 ../lib/setup.php
diff -Naur gallery-1.5.1/po/filelist-core gallery-1.5.2/po/filelist-core
--- gallery-1.5.1/po/filelist-core	2005-08-08 22:35:58.000000000 +0200
+++ gallery-1.5.2/po/filelist-core	2005-12-23 20:20:39.000000000 +0100
@@ -1,6 +1,7 @@
 ../add_comment.php
 ../add_photos.php
 ../admin-page.php
+../administer_startpage.php
 ../album_permissions.php
 ../albums.php
 ../captionator.php
@@ -16,6 +17,7 @@
 ../delete_photo.php
 ../delete_user.php
 ../do_command.php
+../download.php
 ../ecard_form.php
 ../ecard_preview.php
 ../edit_appearance.php
@@ -24,24 +26,19 @@
 ../edit_thumb.php
 ../edit_watermark.php
 ../extra_fields.php
-../includes/add_photos/add_admin.inc
-../includes/add_photos/add_applet.inc
-../includes/add_photos/add_applet_mini.inc
-../includes/add_photos/add_form.inc
-../includes/add_photos/add_other.inc
-../includes/add_photos/add_url.inc
-../includes/definitions/albumProperties.php
-../includes/definitions/services.php
-../includes/errors/configure_help.php
-../includes/errors/reconfigure.php
-../includes/errors/unconfigured.php
-../includes/slideshow/applet.inc
-../includes/slideshow/high.inc
-../includes/slideshow/low.inc
-../includes/stats/stats.inc.php
+../help/imagemap.php
+../help/metadataOnUpload.php
 ../html/userData.inc
 ../html_wrap/album.footer.default
 ../html_wrap/album.header.default
+../html_wrap/frames/golden/frame.def
+../html_wrap/frames/notebook/frame.def
+../html_wrap/frames/polaroid/frame.def
+../html_wrap/frames/polaroids/frame.def
+../html_wrap/frames/postage_stamp/frame.def
+../html_wrap/frames/shadows/frame.def
+../html_wrap/frames/simple_book/frame.def
+../html_wrap/frames/wooden/frame.def
 ../html_wrap/gallery.footer.default
 ../html_wrap/gallery.header.default
 ../html_wrap/inline_albumthumb.footer.default
@@ -58,17 +55,23 @@
 ../html_wrap/slideshow.header.default
 ../html_wrap/wrapper.footer.default
 ../html_wrap/wrapper.header.default
-../html_wrap/frames/notebook/frame.def
-../html_wrap/frames/shadows/frame.def
-../html_wrap/frames/polaroid/frame.def
-../html_wrap/frames/polaroids/frame.def
-../html_wrap/frames/golden/frame.def
-../html_wrap/frames/postage_stamp/frame.def
-../html_wrap/frames/simple_book/frame.def
-../html_wrap/frames/wooden/frame.def
+../imagemap.php
+../includes/add_photos/add_applet.inc
+../includes/add_photos/add_applet_mini.inc
+../includes/add_photos/add_form.inc
+../includes/add_photos/add_other.inc
+../includes/add_photos/add_url.inc
+../includes/add_photos/captionOptions.inc.php
+../includes/errors/configure_help.php
+../includes/errors/reconfigure.php
+../includes/errors/unconfigured.php
+../includes/slideshow/applet.inc
+../includes/slideshow/high.inc
+../includes/slideshow/low.inc
+../includes/stats/stats.inc.php
+../js/multifile.js.php
 ../layout/adminAlbumCommands.inc
 ../layout/adminbox.inc
-../layout/searchdraw.inc
 ../layout/breadcrumb.inc
 ../layout/commentbox.inc
 ../layout/commentboxbottom.inc
@@ -76,17 +79,9 @@
 ../layout/commentdraw.inc
 ../layout/navigator.inc
 ../layout/navphoto.inc
+../layout/searchdraw.inc
 ../layout/watermarkform.inc
-../lib/Form.php
-../lib/popup.php
-../lib/mail.php
-../lib/voting.php
 ../lib/albumItem.php
-../lib/colorpicker.php
-../lib/url.php
-../lib/lang.php
-../lib/valchecks.php
-../lib/messages.php
 ../login.php
 ../manage_users.php
 ../modify_user.php
@@ -111,10 +106,10 @@
 ../slideshow.php
 ../sort_album.php
 ../stamp_preview.php
-../stats.php
 ../stats-wizard.php
-../tools/find_orphans.php
+../stats.php
 ../tools/despam-comments.php
+../tools/find_orphans.php
 ../tools/validate_albums.php
 ../upgrade_album.php
 ../upgrade_users.php
@@ -124,4 +119,4 @@
 ../view_comments.php
 ../view_photo.php
 ../view_photo_properties.php
-../watermark_album.php
\ Pas de fin de ligne à la fin du fichier.
+../watermark_album.php
diff -Naur gallery-1.5.1/po/gallery-common.pot gallery-1.5.2/po/gallery-common.pot
--- gallery-1.5.1/po/gallery-common.pot	1970-01-01 01:00:00.000000000 +0100
+++ gallery-1.5.2/po/gallery-common.pot	2006-01-19 18:43:19.000000000 +0100
@@ -0,0 +1,1422 @@
+# 
+# Gallery - a web based photo album viewer and editor
+# Copyright (C) 2000-2006 Bharat Mediratta
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at
+# your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+#
+# $Id: gallery-common.pot,v 1.7.2.10 2006/01/19 17:43:19 jenst Exp $
+#
+# @version	<Version>
+# @package      Languagepack
+# @subpackage   <Languagename in english>
+# @author       <Your name>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: gallery-translations@lists.sourceforge.net\n"
+"POT-Creation-Date: 2006-01-19 18:31+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: ../includes/definitions/albumProperties.php:30
+msgid "Texts"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:34
+msgid "Album Summary"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:41
+msgid "Album Title"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:54
+msgid "Layout"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:58
+msgid "Background Image (URL)"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:64
+msgid "Font"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:70
+msgid "Rows"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:76
+msgid "Columns"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:82
+msgid "Borders"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:89
+msgid "Colors"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:92
+msgid "Background Color"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:98
+msgid "Text Color"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:104
+msgid "Link Color"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:110
+msgid "Border Color"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:117
+msgid "Frames"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:120
+msgid "Album Frame"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:126
+msgid "Thumb Frame"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:132
+msgid "Image Frame"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:144
+msgid "Slideshow"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:148
+msgid "Slideshow Type"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:150
+#: ../includes/definitions/albumProperties.php:198
+#: ../includes/definitions/albumProperties.php:212
+msgid "Off"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:150
+msgid "Ordered"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:150
+msgid "Random"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:154
+msgid "Include sub-albums in slideshow"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:156
+#: ../includes/definitions/albumProperties.php:162
+#: ../includes/definitions/albumProperties.php:236
+#: ../includes/definitions/albumProperties.php:242
+#: ../includes/definitions/albumProperties.php:248
+#: ../includes/definitions/albumProperties.php:254
+#: ../includes/definitions/albumProperties.php:283
+#: ../includes/definitions/albumProperties.php:319
+#: ../includes/definitions/albumProperties.php:364
+#: ../includes/definitions/albumProperties.php:370
+#: ../includes/definitions/albumProperties.php:376
+#: ../includes/definitions/albumProperties.php:382
+#: ../includes/definitions/albumProperties.php:392
+#: ../includes/definitions/albumProperties.php:398
+#: ../includes/definitions/albumProperties.php:440
+#: ../includes/definitions/albumProperties.php:452
+msgid "Yes"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:156
+#: ../includes/definitions/albumProperties.php:162
+#: ../includes/definitions/albumProperties.php:236
+#: ../includes/definitions/albumProperties.php:242
+#: ../includes/definitions/albumProperties.php:248
+#: ../includes/definitions/albumProperties.php:254
+#: ../includes/definitions/albumProperties.php:283
+#: ../includes/definitions/albumProperties.php:319
+#: ../includes/definitions/albumProperties.php:364
+#: ../includes/definitions/albumProperties.php:370
+#: ../includes/definitions/albumProperties.php:376
+#: ../includes/definitions/albumProperties.php:382
+#: ../includes/definitions/albumProperties.php:392
+#: ../includes/definitions/albumProperties.php:398
+#: ../includes/definitions/albumProperties.php:440
+#: ../includes/definitions/albumProperties.php:452
+msgid "No"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:160
+msgid "Allow slideshow to loop"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:166
+msgid "Slideshow Length"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:179
+msgid "Sizes"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:183
+msgid "Thumbnail size"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:190
+msgid "The ratio in which the thumbnails are made.<br>This affects only new thumbs. For existing use 'rebuild thumbs'"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:192
+msgid "As the original image"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:192
+msgid "Square thumbs"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:196
+msgid "Maximum dimensions of intermediate sized images"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:203
+msgid "Maximum file size of intermediate sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:210
+msgid "Maximum dimensions of full sized images"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:212
+#, php-format
+msgid "%d (%d MPix)"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:217
+msgid "Maximum file size of full sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:230
+msgid "Display"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:234
+msgid "Display click counter for this album?"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:240
+msgid "Display owners name with caption"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:246
+msgid "Display clickable image dimensions"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:252
+msgid "Display EXIF data?"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:265
+msgid "Services"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:269
+msgid "Which photo printing services<br>do you want to let visitors use?"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:281
+msgid "Enable Ecards ?"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:294
+msgid "Poll Properties"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:298
+msgid "Who can vote?"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:299
+msgid "This enables/disable voting and if enabled it controlles who can vote."
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:300
+msgid "Logged in"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:300
+msgid "Everybody"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:300
+msgid "Nobody"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:304
+msgid "Type of poll for this album"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:306
+msgid "Rank"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:306
+msgid "Critique"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:310
+msgid "Number of voting options"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:317
+msgid "Show results of voting to all visitors?"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:323
+msgid "Number of lines of results graph to display on the album page"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:330
+msgid "Orientation of vote choices"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:332
+msgid "Horizontal"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:332
+msgid "Vertical"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:337
+msgid "Vote hint"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:344
+msgid "Voting Options"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:348
+msgid "Displayed Value"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:348
+msgid "Points"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:358
+msgid "Misc"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:362
+msgid "Add new items at beginning of album"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:368
+msgid "Show <i>Return to</i> link"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:374
+msgid "Offer visitors ability to specify<br>preference for full-size or resized images"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:380
+msgid "Auto fit-to-window for<br>images without a resized copy"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:387
+msgid "Permissions"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:390
+msgid "Allow item owners to modify their images"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:396
+msgid "Allow item owners to delete their images"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:408
+msgid "Custom Fields"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:417
+msgid "Number of user defined custom fields"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:435
+msgid "Microthumbs"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:438
+msgid "Use microthumb photo navigation"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:440
+msgid "both"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:444
+msgid "Microthumb style"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:446
+msgid "Fixed"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:446
+msgid "Dynamic"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:450
+msgid "Show first & last microthumb"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:456
+msgid "Number of previous thumbs"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:462
+msgid "Number of next thumbs"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:468
+msgid "Position of microthumb navigation bar"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:470
+msgid "Top"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:471
+msgid "Both"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:472
+msgid "Bottom"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:476
+msgid "Height of microthumbs in navigation bar"
+msgstr ""
+
+#: ../includes/definitions/albumProperties.php:483
+msgid "Bonus to height of current microthumb (pixels)"
+msgstr ""
+
+#: ../includes/definitions/services.php:45
+msgid "mPUSH is a photo service that adds the ability to send thumbnail images to your, or a friend's, cellphone for a small fee."
+msgstr ""
+
+#: ../lib/Form.php:69
+msgid "Check All"
+msgstr ""
+
+#: ../lib/Form.php:71
+msgid "Clear All"
+msgstr ""
+
+#: ../lib/Form.php:73
+msgid "Invert Selection"
+msgstr ""
+
+#: ../lib/Form.php:237
+msgid "Colorpicker"
+msgstr ""
+
+#: ../lib/colorpicker.php:40
+msgid "Color Picker"
+msgstr ""
+
+#: ../lib/colorpicker.php:52
+msgid "The Options window has closed. Exiting."
+msgstr ""
+
+#: ../lib/colorpicker.php:58
+msgid "This window must be called from an Options window"
+msgstr ""
+
+#: ../lib/content.php:41
+msgid "Empty"
+msgstr ""
+
+#: ../lib/content.php:45
+#, php-format
+msgid "edit %s"
+msgstr ""
+
+#: ../lib/content.php:63
+msgid "No Caption"
+msgstr ""
+
+#: ../lib/content.php:67
+msgid "edit"
+msgstr ""
+
+#: ../lib/content.php:98
+msgid "add comment"
+msgstr ""
+
+#: ../lib/content.php:114
+msgid "Add your comment"
+msgstr ""
+
+#: ../lib/content.php:117
+msgid "Commenter:"
+msgstr ""
+
+#: ../lib/content.php:135
+msgid "Message:"
+msgstr ""
+
+#: ../lib/content.php:139
+msgid "Post comment"
+msgstr ""
+
+#: ../lib/content.php:288
+#, php-format
+msgid "1 view"
+msgid_plural "%d views"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../lib/content.php:313 ../lib/content.php:338
+msgid "Sub-albums:"
+msgstr ""
+
+#: ../lib/content.php:421
+msgid "EXIF Data"
+msgstr ""
+
+#: ../lib/content.php:423
+msgid "Display of EXIF data enabled, but no data found."
+msgstr ""
+
+#: ../lib/content.php:579
+msgid "Search:"
+msgstr ""
+
+#: ../lib/content.php:619 ../lib/content.php:638
+msgid "Not closing this window because debug mode is on"
+msgstr ""
+
+#: ../lib/content.php:666
+#, php-format
+msgid "Problem including file %s"
+msgstr ""
+
+#: ../lib/content.php:805
+msgid "Select Album"
+msgstr ""
+
+#: ../lib/content.php:811
+msgid "Move to top level"
+msgstr ""
+
+#: ../lib/content.php:829
+msgid "current location"
+msgstr ""
+
+#: ../lib/content.php:875
+msgid "Current location"
+msgstr ""
+
+#: ../lib/content.php:878
+msgid "This album itself"
+msgstr ""
+
+#: ../lib/content.php:902
+#, php-format
+msgid "Last comment %s."
+msgstr ""
+
+#: ../lib/content.php:925 ../lib/content.php:928
+msgid "No Skin"
+msgstr ""
+
+#: ../lib/content.php:930
+msgid "The original look and feel."
+msgstr ""
+
+#: ../lib/content.php:975 ../lib/content.php:979
+msgid "unknown"
+msgstr ""
+
+#: ../lib/content.php:983
+#, php-format
+msgid "Version: %s"
+msgstr ""
+
+#: ../lib/content.php:985
+#, php-format
+msgid "Last Update: %s"
+msgstr ""
+
+#: ../lib/content.php:1003 ../lib/content.php:1009
+msgid "None"
+msgstr ""
+
+#: ../lib/content.php:1004 ../lib/content.php:1010
+msgid "Dots"
+msgstr ""
+
+#: ../lib/content.php:1005 ../lib/content.php:1011
+msgid "Solid"
+msgstr ""
+
+#: ../lib/content.php:1009
+msgid "No frames"
+msgstr ""
+
+#: ../lib/content.php:1010
+msgid "Just a simple dashed border around the thumb."
+msgstr ""
+
+#: ../lib/content.php:1011
+msgid "Just a simple solid border around the thumb."
+msgstr ""
+
+#: ../lib/content.php:1033
+#, php-format
+msgid "Skipping %s."
+msgstr ""
+
+#: ../lib/content.php:1039
+#, php-format
+msgid "Can't open %s"
+msgstr ""
+
+#: ../lib/content.php:1114 ../lib/content.php:1134
+msgid "Not valid yet"
+msgstr ""
+
+#: ../lib/imageManipulation.php:36
+#, php-format
+msgid "Resizing Image: %s"
+msgstr ""
+
+#: ../lib/imageManipulation.php:67
+msgid "No resizing required"
+msgstr ""
+
+#: ../lib/imageManipulation.php:94
+#, php-format
+msgid "target file size %d kbytes"
+msgstr ""
+
+#: ../lib/imageManipulation.php:100 ../lib/imageManipulation.php:127
+#, php-format
+msgid "-> file size %d kbytes"
+msgstr ""
+
+#: ../lib/imageManipulation.php:101
+#, php-format
+msgid "trying quality %d%%"
+msgstr ""
+
+#: ../lib/imageManipulation.php:128
+msgid "Done."
+msgstr ""
+
+#: ../lib/imageManipulation.php:220 ../lib/imageManipulation.php:456
+#: ../lib/imageManipulation.php:508 ../lib/imageManipulation.php:781
+msgid "You have no graphics package configured for use!"
+msgstr ""
+
+#: ../lib/imageManipulation.php:224
+msgid "No watermark name specified!"
+msgstr ""
+
+#: ../lib/imageManipulation.php:474
+msgid "Cropping Image"
+msgstr ""
+
+#: ../lib/imageManipulation.php:538
+#, php-format
+msgid "Generating squared Version to %dpx"
+msgstr ""
+
+#: ../lib/imageManipulation.php:559
+msgid "No Cropping Done"
+msgstr ""
+
+#: ../lib/imageManipulation.php:569
+#, php-format
+msgid "Call to %s failed in %s for file %s!"
+msgstr ""
+
+#: ../lib/imageManipulation.php:573
+#, php-format
+msgid "File %s type %d."
+msgstr ""
+
+#: ../lib/imageManipulation.php:610 ../lib/imageManipulation.php:634
+#, php-format
+msgid "Files with type %s are not supported by Gallery with netPBM"
+msgstr ""
+
+#: ../lib/imageManipulation.php:683
+#, php-format
+msgid "Compressing image: %s"
+msgstr ""
+
+#: ../lib/imageManipulation.php:688
+msgid "Not all necessary params for resizing given."
+msgstr ""
+
+#: ../lib/imageManipulation.php:689
+#, php-format
+msgid "Resizing params: src: %s, dest : %s, targetSize: %s"
+msgstr ""
+
+#: ../lib/imageManipulation.php:724
+msgid "Unable to preserve EXIF data (jhead not installed)"
+msgstr ""
+
+#: ../lib/imageManipulation.php:766
+msgid "Using IM high quality"
+msgstr ""
+
+#: ../lib/imageManipulation.php:770
+msgid "Not using IM high quality"
+msgstr ""
+
+#: ../lib/lang.php:745
+msgid "Upload Date"
+msgstr ""
+
+#: ../lib/lang.php:746
+msgid "Capture Date"
+msgstr ""
+
+#: ../lib/lang.php:747
+msgid "Image Size"
+msgstr ""
+
+#: ../lib/lang.php:748
+msgid "Additional EXIF Data"
+msgstr ""
+
+#: ../lib/lang.php:756
+msgid "title"
+msgstr ""
+
+#: ../lib/lang.php:757
+msgid "Title"
+msgstr ""
+
+#: ../lib/lang.php:758
+msgid "Description"
+msgstr ""
+
+#: ../lib/lang.php:759
+msgid "description"
+msgstr ""
+
+#: ../lib/lang.php:760
+msgid "Alt Text / onMouseOver"
+msgstr ""
+
+#: ../lib/mail.php:43
+#, php-format
+msgid "Note: This is an automatically generated email message sent from the %s website.  If you have received this in error, please ignore this message."
+msgstr ""
+
+#: ../lib/mail.php:45
+#, php-format
+msgid "Report abuse to %s"
+msgstr ""
+
+#: ../lib/mail.php:71
+msgid "Email not sent as it is disabled for this gallery"
+msgstr ""
+
+#: ../lib/mail.php:77
+#, php-format
+msgid "Email not sent to %s as it is not a valid address"
+msgstr ""
+
+#: ../lib/mail.php:84
+msgid "Email not sent as no reciepient address provided"
+msgstr ""
+
+#: ../lib/mail.php:95
+#, php-format
+msgid "Sender address %s is invalid, using %s."
+msgstr ""
+
+#: ../lib/mail.php:126
+msgid "This is a HTML mail, please have a look at the Attachment."
+msgstr ""
+
+#: ../lib/mail.php:164
+#, php-format
+msgid ""
+"Hi !!FULLNAME!!,\n"
+"\n"
+"Congratulations.  You have just been subscribed to %s at %s.  Your account name is !!USERNAME!!.  Please visit the gallery soon, and create a password by clicking this link:\n"
+"\n"
+"!!NEWPASSWORDLINK!!\n"
+"\n"
+"Gallery @ %s Administrator."
+msgstr ""
+
+#: ../lib/mail.php:173 ../lib/mail.php:175
+msgid "gallery title"
+msgstr ""
+
+#: ../lib/mail.php:174
+msgid "gallery URL"
+msgstr ""
+
+#: ../lib/mail.php:190
+msgid "The Url to your Gallery."
+msgstr ""
+
+#: ../lib/mail.php:191
+msgid "Title of your Gallery."
+msgstr ""
+
+#: ../lib/mail.php:192
+msgid "Admin email(s)"
+msgstr ""
+
+#: ../lib/mail.php:193
+msgid "Password for the newly created user."
+msgstr ""
+
+#: ../lib/mail.php:194 ../lib/setup.php:1489 ../lib/setup.php:1491
+#: ../lib/setup.php:1495 ../lib/setup.php:1503
+msgid "Username"
+msgstr ""
+
+#: ../lib/mail.php:195
+msgid "Fullname"
+msgstr ""
+
+#: ../lib/mail.php:196
+msgid "Will be replaced by a link the new user can click on to create a new password."
+msgstr ""
+
+#: ../lib/mail.php:233
+#, php-format
+msgid "New comment for %s"
+msgstr ""
+
+#: ../lib/mail.php:242
+#, php-format
+msgid "A new comment has been added to Gallery: %s"
+msgstr ""
+
+#: ../lib/mail.php:244
+#, php-format
+msgid "The comment was added by %s to this %s in this %s."
+msgstr ""
+
+#: ../lib/mail.php:246
+msgid "Item"
+msgstr ""
+
+#: ../lib/mail.php:247
+msgid "Album"
+msgstr ""
+
+#: ../lib/mail.php:248
+msgid "*** Begin comment ***"
+msgstr ""
+
+#: ../lib/mail.php:250
+msgid "***End comment ***"
+msgstr ""
+
+#: ../lib/mail.php:251
+msgid "If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when comments are added' is unchecked in both the photo and album page (You'll need to login first)."
+msgstr ""
+
+#: ../lib/mail.php:254
+#, php-format
+msgid "New comment for %s."
+msgstr ""
+
+#: ../lib/mail.php:263
+#, php-format
+msgid "FAILED"
+msgstr ""
+
+#: ../lib/mail.php:273
+msgid "Email activity"
+msgstr ""
+
+#: ../lib/messages.php:26
+msgid "Error:"
+msgstr ""
+
+#: ../lib/messages.php:73
+#, php-format
+msgid "Generated by %s v%s"
+msgstr ""
+
+#: ../lib/messages.php:75
+#, php-format
+msgid "Powered by %s v%s"
+msgstr ""
+
+#: ../lib/setup.php:147
+msgid "Please retype your password here"
+msgstr ""
+
+#: ../lib/setup.php:161 ../lib/setup.php:1092
+msgid "Name"
+msgstr ""
+
+#: ../lib/setup.php:162 ../lib/setup.php:1092
+msgid "Value"
+msgstr ""
+
+#: ../lib/setup.php:191 ../lib/setup.php:234
+msgid "No content"
+msgstr ""
+
+#: ../lib/setup.php:361
+#, php-format
+msgid "Missing value: %s"
+msgstr ""
+
+#: ../lib/setup.php:379
+msgid "<b>exec()</b> is enabled on this server."
+msgstr ""
+
+#: ../lib/setup.php:397
+msgid "I can read your <b>.htaccess</b> file."
+msgstr ""
+
+#: ../lib/setup.php:419
+#, php-format
+msgid "PHP v%s is OK."
+msgstr ""
+
+#: ../lib/setup.php:434
+msgid "<b>mod_rewrite</b> is enabled."
+msgstr ""
+
+#: ../lib/setup.php:457
+msgid "Can't find <i>jhead</i>"
+msgstr ""
+
+#: ../lib/setup.php:459
+msgid "<b>jhead</b> binary located."
+msgstr ""
+
+#: ../lib/setup.php:497
+msgid "Without pnmcomp and pamcomp gallery will not be able to watermark images, unless you use ImageMagick and have the composite binary installed."
+msgstr ""
+
+#: ../lib/setup.php:505
+msgid "NetPBM not being used in this installation."
+msgstr ""
+
+#: ../lib/setup.php:510 ../lib/setup.php:605
+msgid "Cannot verify this path (it's not in your open_basedir list)."
+msgstr ""
+
+#: ../lib/setup.php:544 ../lib/setup.php:622
+#, php-format
+msgid "Missing optional binary %s. %s"
+msgstr ""
+
+#: ../lib/setup.php:547 ../lib/setup.php:625
+#, php-format
+msgid "Can't find %s!"
+msgstr ""
+
+#: ../lib/setup.php:553 ../lib/setup.php:631
+#, php-format
+msgid "%s is not executable!"
+msgstr ""
+
+#: ../lib/setup.php:563 ../lib/setup.php:570
+#, php-format
+msgid "%d of %d NetPBM binaries located."
+msgstr ""
+
+#: ../lib/setup.php:594
+msgid "Without composite gallery will not be able to watermark images, except you use NetPBM and have the pnmcomp binary installed."
+msgstr ""
+
+#: ../lib/setup.php:600
+msgid "ImageMagick not being used in this installation."
+msgstr ""
+
+#: ../lib/setup.php:641 ../lib/setup.php:648
+#, php-format
+msgid "%d of %d ImageMagick binaries located."
+msgstr ""
+
+#: ../lib/setup.php:670
+msgid "Can't find <i>jpegtran</i>!"
+msgstr ""
+
+#: ../lib/setup.php:672
+msgid "<b>jpegtran</b> binary located."
+msgstr ""
+
+#: ../lib/setup.php:683
+msgid "PHP has <b>GNU gettext</b> support."
+msgstr ""
+
+#: ../lib/setup.php:685
+msgid "PHP does not have <b>GNU gettext</b> support."
+msgstr ""
+
+#: ../lib/setup.php:699
+msgid "No languages found."
+msgstr ""
+
+#: ../lib/setup.php:701
+msgid "It seems you didn't download any additional languages. This is not a problem! Gallery will appear just in English. Note: If this is not true, check that all files in locale folder are readable for the webserver, or contact the Gallery Team."
+msgstr ""
+
+#: ../lib/setup.php:704
+#, php-format
+msgid "%d languages are available.  If you are missing a language please visit the %sGallery download page%s."
+msgstr ""
+
+#: ../lib/setup.php:726
+#, php-format
+msgid "You can check for more recent versions by visiting %s."
+msgstr ""
+
+#: ../lib/setup.php:727
+#, php-format
+msgid "This version of %s was released on %s."
+msgstr ""
+
+#: ../lib/setup.php:729
+#, php-format
+msgid "This is a development build of %s that was released on %s."
+msgstr ""
+
+#: ../lib/setup.php:738
+msgid "Please check regularly for updates."
+msgstr ""
+
+#: ../lib/setup.php:757
+msgid "All gallery locales are available on this host."
+msgstr ""
+
+#: ../lib/setup.php:760
+#, php-format
+msgid "There are %d locales that Gallery was unable to locate. You may need to select manually date formats. "
+msgstr ""
+
+#: ../lib/setup.php:766
+#, php-format
+msgid "Dates in %d languages may not be formatted properly, because the corresponding locales are missing. You may need to select manually the date formats for these."
+msgstr ""
+
+#: ../lib/setup.php:771
+#, php-format
+msgid "We were unable to detect any locales.  However, your PHP installation is configured with the %s restriction so this may be interfering with the way that we detect locales.  Unfortunately this means the date format will not change for different languages.  However, it is OK to continue."
+msgstr ""
+
+#: ../lib/setup.php:775
+#, php-format
+msgid "We were unable to detect any system locales. Multi-language functions will be disabled. Please install the corresponding locales or ask your administrator to do this. This problem is known on %s systems. In this case please have a look at this %sDebian locale HowTo%s."
+msgstr ""
+
+#: ../lib/setup.php:777
+msgid "Only the default locale for this machine is available, so date format will not change for different languages."
+msgstr ""
+
+#: ../lib/setup.php:936 ../lib/setup.php:1016
+msgid "Advanced"
+msgstr ""
+
+#: ../lib/setup.php:936
+#, php-format
+msgid "<b>System</b> locale selection required"
+msgstr ""
+
+#: ../lib/setup.php:937
+msgid "There is more than one suitable <b>system</b> locale installed on your machine for the following languages.  Please chose the one you think is most suitable."
+msgstr ""
+
+#: ../lib/setup.php:939 ../lib/setup.php:1019
+msgid "This is <b>only</b> for date & time format. You only need to edit the languages you enabled above"
+msgstr ""
+
+#: ../lib/setup.php:950 ../lib/setup.php:974
+msgid "System locale"
+msgstr ""
+
+#: ../lib/setup.php:1016
+#, php-format
+msgid "<b>System</b> locale problems"
+msgstr ""
+
+#: ../lib/setup.php:1017
+msgid "There are no apparently suitable <b>system</b> locales installed on your machine for the following languages.  Please choose the one you think is most suitable."
+msgstr ""
+
+#: ../lib/setup.php:1060
+msgid "<b>safe_mode</b> is off."
+msgstr ""
+
+#: ../lib/setup.php:1072
+msgid "<b>magic_quotes</b> are off."
+msgstr ""
+
+#: ../lib/setup.php:1090
+#, php-format
+msgid "In %s, missing %s in row %d with %s %s."
+msgstr ""
+
+#: ../lib/setup.php:1091 ../lib/setup.php:1100 ../lib/setup.php:1105
+msgid "Vote words and values"
+msgstr ""
+
+#: ../lib/setup.php:1099
+#, php-format
+msgid "In %s, blank in row %d."
+msgstr ""
+
+#: ../lib/setup.php:1104
+#, php-format
+msgid "In %s, for name %s (row %d) value %s should be a positive whole number"
+msgstr ""
+
+#: ../lib/setup.php:1126
+msgid "<b>register_globals</b> is off."
+msgstr ""
+
+#: ../lib/setup.php:1297
+msgid "Your passwords do not match!"
+msgstr ""
+
+#: ../lib/setup.php:1308
+msgid "OK"
+msgstr ""
+
+#: ../lib/setup.php:1313
+msgid "Valid admin email address given."
+msgstr ""
+
+#: ../lib/setup.php:1320
+msgid "You must specify valid admin email addresses"
+msgstr ""
+
+#: ../lib/setup.php:1328
+#, php-format
+msgid "%s is not a valid email address."
+msgstr ""
+
+#: ../lib/setup.php:1337
+msgid "Valid sender email address given."
+msgstr ""
+
+#: ../lib/setup.php:1339
+msgid "You must specify a valid sender email address"
+msgstr ""
+
+#: ../lib/setup.php:1342
+#, php-format
+msgid "You must include %s in your welcome email"
+msgstr ""
+
+#: ../lib/setup.php:1347
+#, php-format
+msgid "You must include %s or %s in your welcome email"
+msgstr ""
+
+#: ../lib/setup.php:1371
+#, php-format
+msgid "The following files are out of date, corrupted or missing:<br>&nbsp;&nbsp;&nbsp;&nbsp;%s."
+msgstr ""
+
+#: ../lib/setup.php:1373
+msgid "This should be fixed before proceeding"
+msgstr ""
+
+#: ../lib/setup.php:1374 ../lib/setup.php:1378
+#, php-format
+msgid "Look at %sCheck Versions%s for more details."
+msgstr ""
+
+#: ../lib/setup.php:1377
+#, php-format
+msgid "%d files are more recent than expected.  This is OK if you are using pre-release, beta, CVS or modified code."
+msgstr ""
+
+#: ../lib/setup.php:1382
+#, php-format
+msgid "All tested files up-to-date."
+msgstr ""
+
+#: ../lib/setup.php:1384
+#, php-format
+msgid "All %d tested files up-to-date."
+msgstr ""
+
+#: ../lib/setup.php:1393
+#, php-format
+msgid "this is new in version %s"
+msgstr ""
+
+#: ../lib/setup.php:1398
+#, php-format
+msgid "Return to %s."
+msgstr ""
+
+#: ../lib/setup.php:1399
+msgid "Configuration Wizard"
+msgstr ""
+
+#: ../lib/setup.php:1448
+#, php-format
+msgid "You must enter a password for the %s account."
+msgstr ""
+
+#: ../lib/setup.php:1453
+#, php-format
+msgid "It seems you've already configured Gallery, because there is one admin account, but its not called %s."
+msgstr ""
+
+#: ../lib/setup.php:1456
+#, php-format
+msgid "It seems you've already configured Gallery, because there are %d admin accounts, but no user called %s."
+msgstr ""
+
+#: ../lib/setup.php:1458
+#, php-format
+msgid "You don't have to enter a password.  But if you do, Gallery will create an administrator account called %s with that password."
+msgstr ""
+
+#: ../lib/setup.php:1467
+#, php-format
+msgid "It seems you've already configured Gallery, because the %s user exists.  You don't have to enter a password.  But if you do, Gallery will change the password for the %s user."
+msgstr ""
+
+#: ../lib/setup.php:1474
+msgid "Admin password"
+msgstr ""
+
+#: ../lib/setup.php:1489 ../lib/setup.php:1491 ../lib/setup.php:1493
+#: ../lib/setup.php:1501
+msgid "Full Name"
+msgstr ""
+
+#: ../lib/setup.php:1497
+msgid "Full name that you can click on to send email (mailto:)"
+msgstr ""
+
+#: ../lib/setup.php:1499
+msgid "Username that you can click on to send email (mailto:)"
+msgstr ""
+
+#: ../lib/setup.php:1501 ../lib/setup.php:1503
+msgid "email address"
+msgstr ""
+
+#: ../lib/setup.php:1516
+msgid "File missing or unreadable.  Please install then re-run this test."
+msgstr ""
+
+#: ../lib/setup.php:1520
+#, php-format
+msgid "Please ensure that %s is the latest version."
+msgstr ""
+
+#: ../lib/setup.php:1525
+#, php-format
+msgid "Testing status of %d files."
+msgstr ""
+
+#: ../lib/setup.php:1532
+#, php-format
+msgid "Cannot read file %s."
+msgstr ""
+
+#: ../lib/setup.php:1534
+msgid "File missing or unreadable."
+msgstr ""
+
+#: ../lib/setup.php:1539
+#, php-format
+msgid "Version information not found in %s.  File must be old version or corrupted."
+msgstr ""
+
+#: ../lib/setup.php:1541
+msgid "Missing version"
+msgstr ""
+
+#: ../lib/setup.php:1548
+#, php-format
+msgid "Problem with %s.  Expected version %s (or greater) but found %s."
+msgstr ""
+
+#: ../lib/setup.php:1550
+#, php-format
+msgid "Expected version %s (or greater) but found %s."
+msgstr ""
+
+#: ../lib/setup.php:1554
+#, php-format
+msgid "%s OK.  Actual version (%s) more recent than expected version (%s)"
+msgstr ""
+
+#: ../lib/setup.php:1556
+#, php-format
+msgid "Expected version %s but found %s."
+msgstr ""
+
+#: ../lib/setup.php:1560
+#, php-format
+msgid "%s OK"
+msgstr ""
+
+#: ../lib/setup.php:1562
+#, php-format
+msgid "Found expected version %s."
+msgstr ""
+
+#: ../lib/setup.php:1698
+msgid "This email will be sent when new accounts are created."
+msgstr ""
+
+#: ../lib/setup.php:1699
+msgid "Leaving this field empty sets Gallery to use the default message (see below) which can be translated, or use your own welcome message."
+msgstr ""
+
+#: ../lib/setup.php:1700
+msgid "The following placeholder can be used:"
+msgstr ""
+
+#: ../lib/setup.php:1763
+#, php-format
+msgid "File %s does not exist."
+msgstr ""
+
+#: ../lib/setup.php:1772
+#, php-format
+msgid "Expected status: %s, but actually received status %s."
+msgstr ""
+
+#: ../lib/setup.php:1785
+msgid "can't detect version on Windows"
+msgstr ""
+
+#: ../lib/setup.php:1796
+#, php-format
+msgid "OK!  Version: %s"
+msgstr ""
+
+#: ../lib/valchecks.php:68
+msgid "Value was set to given default. Because the original value is not numeric."
+msgstr ""
+
+#: ../lib/valchecks.php:70
+msgid "The given Value is not numeric."
+msgstr ""
+
+#: ../lib/valchecks.php:76
+msgid "Value was set to given default. Because the original value is not a valid Integer"
+msgstr ""
+
+#: ../lib/valchecks.php:78
+msgid "The given Value not a valid Integer."
+msgstr ""
+
+#: ../lib/voting.php:215
+msgid "Vote"
+msgstr ""
+
+#: ../lib/voting.php:253
+msgid "Total points in brackets"
+msgstr ""
+
+#: ../lib/voting.php:257
+msgid "Average points in brackets"
+msgstr ""
+
+#: ../lib/voting.php:275
+#, php-format
+msgid "Album: %s"
+msgstr ""
+
+#: ../lib/voting.php:303
+#, php-format
+msgid "1 voter"
+msgid_plural "%d voters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../lib/voting.php:315
+#, php-format
+msgid "Result from one voter"
+msgid_plural "Result of %d voters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../lib/voting.php:323
+#, php-format
+msgid "%s: %s points; "
+msgstr ""
+
+#: ../lib/voting.php:328
+#, php-format
+msgid "Key - %s"
+msgstr ""
+
+#: ../lib/voting.php:334
+msgid "No votes so far."
+msgstr ""
+
+#: ../lib/voting.php:355
+msgid "Poll results:"
+msgstr ""
+
+#: ../lib/voting.php:358
+msgid "No votes"
+msgstr ""
+
+#: ../lib/voting.php:362
+#, php-format
+msgid "Number %d overall."
+msgstr ""
+
+#: ../lib/voting.php:366
+#, php-format
+msgid "%s: %s"
+msgstr ""
+
+#: ../lib/voting.php:367
+#, php-format
+msgid "one vote"
+msgid_plural "%d votes"
+msgstr[0] ""
+msgstr[1] ""
diff -Naur gallery-1.5.1/po/gallery-config.pot gallery-1.5.2/po/gallery-config.pot
--- gallery-1.5.1/po/gallery-config.pot	2005-09-20 01:17:36.000000000 +0200
+++ gallery-1.5.2/po/gallery-config.pot	2006-01-19 18:43:19.000000000 +0100
@@ -1,6 +1,6 @@
 # 
 # Gallery - a web based photo album viewer and editor
-# Copyright (C) 2000-2005 Bharat Mediratta
+# Copyright (C) 2000-2006 Bharat Mediratta
 # 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 #
-# $Id: gallery-config.pot,v 1.109.2.6 2005/09/19 23:17:36 jenst Exp $
+# $Id: gallery-config.pot,v 1.128.2.10 2006/01/19 17:43:19 jenst Exp $
 #
 # @version	<Version>
 # @package      Languagepack
@@ -27,7 +27,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: gallery-translations@lists.sourceforge.net\n"
-"POT-Creation-Date: 2005-09-20 01:15+0200\n"
+"POT-Creation-Date: 2006-01-19 18:31+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -36,14 +36,6 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: ../html_wrap/frames/golden/frame.def:4
-msgid "Gold Frame"
-msgstr ""
-
-#: ../html_wrap/frames/golden/frame.def:5
-msgid "A fancy golden frame"
-msgstr ""
-
 #: ../html_wrap/frames/notebook/frame.def:5
 msgid "Spiral Notebook"
 msgstr ""
@@ -52,6 +44,14 @@
 msgid "A white shadowed frame with spiral notebook binding on the left side"
 msgstr ""
 
+#: ../html_wrap/frames/shadows/frame.def:3
+msgid "Shadows"
+msgstr ""
+
+#: ../html_wrap/frames/shadows/frame.def:4
+msgid "PNG transparent shadows falling to the right and below. Proper transparency, so should work against most backgrounds, except black."
+msgstr ""
+
 #: ../html_wrap/frames/polaroid/frame.def:3
 msgid "Polaroid"
 msgstr ""
@@ -68,20 +68,20 @@
 msgid "A stack of photos with a large white frame, extra wide at the bottom edge"
 msgstr ""
 
-#: ../html_wrap/frames/postage_stamp/frame.def:2
-msgid "Postage Stamp"
+#: ../html_wrap/frames/golden/frame.def:4
+msgid "Gold Frame"
 msgstr ""
 
-#: ../html_wrap/frames/postage_stamp/frame.def:3
-msgid "A simple postage stamp effect."
+#: ../html_wrap/frames/golden/frame.def:5
+msgid "A fancy golden frame"
 msgstr ""
 
-#: ../html_wrap/frames/shadows/frame.def:3
-msgid "Shadows"
+#: ../html_wrap/frames/postage_stamp/frame.def:2
+msgid "Postage Stamp"
 msgstr ""
 
-#: ../html_wrap/frames/shadows/frame.def:4
-msgid "PNG transparent shadows falling to the right and below. Proper transparency, so should work against most backgrounds, except black."
+#: ../html_wrap/frames/postage_stamp/frame.def:3
+msgid "A simple postage stamp effect."
 msgstr ""
 
 #: ../html_wrap/frames/simple_book/frame.def:3
@@ -105,517 +105,544 @@
 msgid "Please retype your password here"
 msgstr ""
 
-#: ../lib/setup.php:161 ../lib/setup.php:1106
+#: ../lib/setup.php:161 ../lib/setup.php:1092
 msgid "Name"
 msgstr ""
 
-#: ../lib/setup.php:162 ../lib/setup.php:1106
+#: ../lib/setup.php:162 ../lib/setup.php:1092
 msgid "Value"
 msgstr ""
 
-#: ../lib/setup.php:200 ../lib/setup.php:243
+#: ../lib/setup.php:191 ../lib/setup.php:234
 msgid "No content"
 msgstr ""
 
-#: ../lib/setup.php:370
-msgid "Missing value"
+#: ../lib/setup.php:361
+#, php-format
+msgid "Missing value: %s"
 msgstr ""
 
-#: ../lib/setup.php:392
-msgid "<b>exec()</b> is not disabled on this server."
+#: ../lib/setup.php:379
+msgid "<b>exec()</b> is enabled on this server."
 msgstr ""
 
-#: ../lib/setup.php:410
+#: ../lib/setup.php:397
 msgid "I can read your <b>.htaccess</b> file."
 msgstr ""
 
-#: ../lib/setup.php:429
+#: ../lib/setup.php:419
 #, php-format
 msgid "PHP v%s is OK."
 msgstr ""
 
-#: ../lib/setup.php:441
+#: ../lib/setup.php:434
 msgid "<b>mod_rewrite</b> is enabled."
 msgstr ""
 
-#: ../lib/setup.php:464
+#: ../lib/setup.php:457
 msgid "Can't find <i>jhead</i>"
 msgstr ""
 
-#: ../lib/setup.php:466
+#: ../lib/setup.php:459
 msgid "<b>jhead</b> binary located."
 msgstr ""
 
-#: ../lib/setup.php:504
+#: ../lib/setup.php:497
 msgid "Without pnmcomp and pamcomp gallery will not be able to watermark images, unless you use ImageMagick and have the composite binary installed."
 msgstr ""
 
-#: ../lib/setup.php:512
+#: ../lib/setup.php:505
 msgid "NetPBM not being used in this installation."
 msgstr ""
 
-#: ../lib/setup.php:517 ../lib/setup.php:615
+#: ../lib/setup.php:510 ../lib/setup.php:605
 msgid "Cannot verify this path (it's not in your open_basedir list)."
 msgstr ""
 
-#: ../lib/setup.php:551 ../lib/setup.php:632
+#: ../lib/setup.php:544 ../lib/setup.php:622
 #, php-format
 msgid "Missing optional binary %s. %s"
 msgstr ""
 
-#: ../lib/setup.php:554 ../lib/setup.php:635
+#: ../lib/setup.php:547 ../lib/setup.php:625
 #, php-format
 msgid "Can't find %s!"
 msgstr ""
 
-#: ../lib/setup.php:561 ../lib/setup.php:642
+#: ../lib/setup.php:553 ../lib/setup.php:631
 #, php-format
 msgid "%s is not executable!"
 msgstr ""
 
-#: ../lib/setup.php:573 ../lib/setup.php:580
+#: ../lib/setup.php:563 ../lib/setup.php:570
 #, php-format
 msgid "%d of %d NetPBM binaries located."
 msgstr ""
 
-#: ../lib/setup.php:604
+#: ../lib/setup.php:594
 msgid "Without composite gallery will not be able to watermark images, except you use NetPBM and have the pnmcomp binary installed."
 msgstr ""
 
-#: ../lib/setup.php:610
+#: ../lib/setup.php:600
 msgid "ImageMagick not being used in this installation."
 msgstr ""
 
-#: ../lib/setup.php:654 ../lib/setup.php:661
+#: ../lib/setup.php:641 ../lib/setup.php:648
 #, php-format
 msgid "%d of %d ImageMagick binaries located."
 msgstr ""
 
-#: ../lib/setup.php:683
+#: ../lib/setup.php:670
 msgid "Can't find <i>jpegtran</i>!"
 msgstr ""
 
-#: ../lib/setup.php:685
+#: ../lib/setup.php:672
 msgid "<b>jpegtran</b> binary located."
 msgstr ""
 
-#: ../lib/setup.php:696
+#: ../lib/setup.php:683
 msgid "PHP has <b>GNU gettext</b> support."
 msgstr ""
 
-#: ../lib/setup.php:698
+#: ../lib/setup.php:685
 msgid "PHP does not have <b>GNU gettext</b> support."
 msgstr ""
 
-#: ../lib/setup.php:712
+#: ../lib/setup.php:699
 msgid "No languages found."
 msgstr ""
 
-#: ../lib/setup.php:714
+#: ../lib/setup.php:701
 msgid "It seems you didn't download any additional languages. This is not a problem! Gallery will appear just in English. Note: If this is not true, check that all files in locale folder are readable for the webserver, or contact the Gallery Team."
 msgstr ""
 
-#: ../lib/setup.php:717
+#: ../lib/setup.php:704
 #, php-format
 msgid "%d languages are available.  If you are missing a language please visit the %sGallery download page%s."
 msgstr ""
 
-#: ../lib/setup.php:739
+#: ../lib/setup.php:726
 #, php-format
 msgid "You can check for more recent versions by visiting %s."
 msgstr ""
 
-#: ../lib/setup.php:741
+#: ../lib/setup.php:727
 #, php-format
 msgid "This version of %s was released on %s."
 msgstr ""
 
-#: ../lib/setup.php:743
+#: ../lib/setup.php:729
 #, php-format
 msgid "This is a development build of %s that was released on %s."
 msgstr ""
 
-#: ../lib/setup.php:752
+#: ../lib/setup.php:738
 msgid "Please check regularly for updates."
 msgstr ""
 
-#: ../lib/setup.php:771
+#: ../lib/setup.php:757
 msgid "All gallery locales are available on this host."
 msgstr ""
 
-#: ../lib/setup.php:774
+#: ../lib/setup.php:760
 #, php-format
 msgid "There are %d locales that Gallery was unable to locate. You may need to select manually date formats. "
 msgstr ""
 
-#: ../lib/setup.php:780
+#: ../lib/setup.php:766
 #, php-format
 msgid "Dates in %d languages may not be formatted properly, because the corresponding locales are missing. You may need to select manually the date formats for these."
 msgstr ""
 
-#: ../lib/setup.php:785
+#: ../lib/setup.php:771
 #, php-format
 msgid "We were unable to detect any locales.  However, your PHP installation is configured with the %s restriction so this may be interfering with the way that we detect locales.  Unfortunately this means the date format will not change for different languages.  However, it is OK to continue."
 msgstr ""
 
-#: ../lib/setup.php:789
+#: ../lib/setup.php:775
 #, php-format
 msgid "We were unable to detect any system locales. Multi-language functions will be disabled. Please install the corresponding locales or ask your administrator to do this. This problem is known on %s systems. In this case please have a look at this %sDebian locale HowTo%s."
 msgstr ""
 
-#: ../lib/setup.php:791
+#: ../lib/setup.php:777
 msgid "Only the default locale for this machine is available, so date format will not change for different languages."
 msgstr ""
 
-#: ../lib/setup.php:950 ../lib/setup.php:1030 ../setup/config_data.inc:445
-#: ../setup/config_data.inc:674 ../setup/config_data.inc:684
-#: ../setup/config_data.inc:1151
+#: ../lib/setup.php:936 ../lib/setup.php:1016 ../setup/config_data.inc:777
+#: ../setup/config_data.inc:787 ../setup/config_data.inc:1320
 msgid "Advanced"
 msgstr ""
 
-#: ../lib/setup.php:950
+#: ../lib/setup.php:936
 #, php-format
 msgid "<b>System</b> locale selection required"
 msgstr ""
 
-#: ../lib/setup.php:951
+#: ../lib/setup.php:937
 msgid "There is more than one suitable <b>system</b> locale installed on your machine for the following languages.  Please chose the one you think is most suitable."
 msgstr ""
 
-#: ../lib/setup.php:953 ../lib/setup.php:1033
+#: ../lib/setup.php:939 ../lib/setup.php:1019
 msgid "This is <b>only</b> for date & time format. You only need to edit the languages you enabled above"
 msgstr ""
 
-#: ../lib/setup.php:964 ../lib/setup.php:988
+#: ../lib/setup.php:950 ../lib/setup.php:974
 msgid "System locale"
 msgstr ""
 
-#: ../lib/setup.php:1030
+#: ../lib/setup.php:1016
 #, php-format
 msgid "<b>System</b> locale problems"
 msgstr ""
 
-#: ../lib/setup.php:1031
+#: ../lib/setup.php:1017
 msgid "There are no apparently suitable <b>system</b> locales installed on your machine for the following languages.  Please choose the one you think is most suitable."
 msgstr ""
 
-#: ../lib/setup.php:1074
+#: ../lib/setup.php:1060
 msgid "<b>safe_mode</b> is off."
 msgstr ""
 
-#: ../lib/setup.php:1086
+#: ../lib/setup.php:1072
 msgid "<b>magic_quotes</b> are off."
 msgstr ""
 
-#: ../lib/setup.php:1104
+#: ../lib/setup.php:1090
 #, php-format
 msgid "In %s, missing %s in row %d with %s %s."
 msgstr ""
 
-#: ../lib/setup.php:1105 ../lib/setup.php:1114 ../lib/setup.php:1119
-#: ../setup/config_data.inc:1604
+#: ../lib/setup.php:1091 ../lib/setup.php:1100 ../lib/setup.php:1105
+#: ../setup/config_data.inc:1855
 msgid "Vote words and values"
 msgstr ""
 
-#: ../lib/setup.php:1113
+#: ../lib/setup.php:1099
 #, php-format
 msgid "In %s, blank in row %d."
 msgstr ""
 
-#: ../lib/setup.php:1118
+#: ../lib/setup.php:1104
 #, php-format
 msgid "In %s, for name %s (row %d) value %s should be a positive whole number"
 msgstr ""
 
-#: ../lib/setup.php:1140
+#: ../lib/setup.php:1126
 msgid "<b>register_globals</b> is off."
 msgstr ""
 
-#: ../lib/setup.php:1310
+#: ../lib/setup.php:1297
 msgid "Your passwords do not match!"
 msgstr ""
 
-#: ../lib/setup.php:1321 ../setup/check_imagemagick.php:73
+#: ../lib/setup.php:1308 ../setup/check_imagemagick.php:68
 #: ../setup/check_netpbm.php:73
 msgid "OK"
 msgstr ""
 
-#: ../lib/setup.php:1326
+#: ../lib/setup.php:1313
 msgid "Valid admin email address given."
 msgstr ""
 
-#: ../lib/setup.php:1333
+#: ../lib/setup.php:1320
 msgid "You must specify valid admin email addresses"
 msgstr ""
 
-#: ../lib/setup.php:1341
+#: ../lib/setup.php:1328
 #, php-format
 msgid "%s is not a valid email address."
 msgstr ""
 
-#: ../lib/setup.php:1350
+#: ../lib/setup.php:1337
 msgid "Valid sender email address given."
 msgstr ""
 
-#: ../lib/setup.php:1352
+#: ../lib/setup.php:1339
 msgid "You must specify a valid sender email address"
 msgstr ""
 
-#: ../lib/setup.php:1355
+#: ../lib/setup.php:1342
 #, php-format
 msgid "You must include %s in your welcome email"
 msgstr ""
 
-#: ../lib/setup.php:1360
+#: ../lib/setup.php:1347
 #, php-format
 msgid "You must include %s or %s in your welcome email"
 msgstr ""
 
-#: ../lib/setup.php:1384
+#: ../lib/setup.php:1371
 #, php-format
 msgid "The following files are out of date, corrupted or missing:<br>&nbsp;&nbsp;&nbsp;&nbsp;%s."
 msgstr ""
 
-#: ../lib/setup.php:1386
+#: ../lib/setup.php:1373
 msgid "This should be fixed before proceeding"
 msgstr ""
 
-#: ../lib/setup.php:1387 ../lib/setup.php:1391
+#: ../lib/setup.php:1374 ../lib/setup.php:1378
 #, php-format
 msgid "Look at %sCheck Versions%s for more details."
 msgstr ""
 
-#: ../lib/setup.php:1390
+#: ../lib/setup.php:1377
 #, php-format
 msgid "%d files are more recent than expected.  This is OK if you are using pre-release, beta, CVS or modified code."
 msgstr ""
 
-#: ../lib/setup.php:1395
+#: ../lib/setup.php:1382
 #, php-format
 msgid "All tested files up-to-date."
 msgstr ""
 
-#: ../lib/setup.php:1397
+#: ../lib/setup.php:1384
 #, php-format
 msgid "All %d tested files up-to-date."
 msgstr ""
 
-#: ../lib/setup.php:1406
+#: ../lib/setup.php:1393
 #, php-format
 msgid "this is new in version %s"
 msgstr ""
 
-#: ../lib/setup.php:1411
+#: ../lib/setup.php:1398
 #, php-format
 msgid "Return to %s."
 msgstr ""
 
-#: ../lib/setup.php:1412
+#: ../lib/setup.php:1399
 msgid "Configuration Wizard"
 msgstr ""
 
-#: ../lib/setup.php:1461
+#: ../lib/setup.php:1448
 #, php-format
 msgid "You must enter a password for the %s account."
 msgstr ""
 
-#: ../lib/setup.php:1466
+#: ../lib/setup.php:1453
 #, php-format
 msgid "It seems you've already configured Gallery, because there is one admin account, but its not called %s."
 msgstr ""
 
-#: ../lib/setup.php:1469
+#: ../lib/setup.php:1456
 #, php-format
 msgid "It seems you've already configured Gallery, because there are %d admin accounts, but no user called %s."
 msgstr ""
 
-#: ../lib/setup.php:1471
+#: ../lib/setup.php:1458
 #, php-format
 msgid "You don't have to enter a password.  But if you do, Gallery will create an administrator account called %s with that password."
 msgstr ""
 
-#: ../lib/setup.php:1480
+#: ../lib/setup.php:1467
 #, php-format
 msgid "It seems you've already configured Gallery, because the %s user exists.  You don't have to enter a password.  But if you do, Gallery will change the password for the %s user."
 msgstr ""
 
-#: ../lib/setup.php:1487
+#: ../lib/setup.php:1474
 msgid "Admin password"
 msgstr ""
 
-#: ../lib/setup.php:1502 ../lib/setup.php:1504 ../lib/setup.php:1506
-#: ../lib/setup.php:1514
+#: ../lib/setup.php:1489 ../lib/setup.php:1491 ../lib/setup.php:1493
+#: ../lib/setup.php:1501
 msgid "Full Name"
 msgstr ""
 
-#: ../lib/setup.php:1502 ../lib/setup.php:1504 ../lib/setup.php:1508
-#: ../lib/setup.php:1516 ../setup/login.inc:93
+#: ../lib/setup.php:1489 ../lib/setup.php:1491 ../lib/setup.php:1495
+#: ../lib/setup.php:1503 ../setup/login.inc:93
 msgid "Username"
 msgstr ""
 
-#: ../lib/setup.php:1510
+#: ../lib/setup.php:1497
 msgid "Full name that you can click on to send email (mailto:)"
 msgstr ""
 
-#: ../lib/setup.php:1512
+#: ../lib/setup.php:1499
 msgid "Username that you can click on to send email (mailto:)"
 msgstr ""
 
-#: ../lib/setup.php:1514 ../lib/setup.php:1516
+#: ../lib/setup.php:1501 ../lib/setup.php:1503
 msgid "email address"
 msgstr ""
 
-#: ../lib/setup.php:1527
-msgid "Your version of PHP handles this issue properly."
-msgstr ""
-
-#: ../lib/setup.php:1544
+#: ../lib/setup.php:1516
 msgid "File missing or unreadable.  Please install then re-run this test."
 msgstr ""
 
-#: ../lib/setup.php:1548
+#: ../lib/setup.php:1520
 #, php-format
 msgid "Please ensure that %s is the latest version."
 msgstr ""
 
-#: ../lib/setup.php:1553
+#: ../lib/setup.php:1525
 #, php-format
 msgid "Testing status of %d files."
 msgstr ""
 
-#: ../lib/setup.php:1560
+#: ../lib/setup.php:1532
 #, php-format
 msgid "Cannot read file %s."
 msgstr ""
 
-#: ../lib/setup.php:1562
+#: ../lib/setup.php:1534
 msgid "File missing or unreadable."
 msgstr ""
 
-#: ../lib/setup.php:1567
+#: ../lib/setup.php:1539
 #, php-format
 msgid "Version information not found in %s.  File must be old version or corrupted."
 msgstr ""
 
-#: ../lib/setup.php:1569
+#: ../lib/setup.php:1541
 msgid "Missing version"
 msgstr ""
 
-#: ../lib/setup.php:1576
+#: ../lib/setup.php:1548
 #, php-format
 msgid "Problem with %s.  Expected version %s (or greater) but found %s."
 msgstr ""
 
-#: ../lib/setup.php:1578
+#: ../lib/setup.php:1550
 #, php-format
 msgid "Expected version %s (or greater) but found %s."
 msgstr ""
 
-#: ../lib/setup.php:1582
+#: ../lib/setup.php:1554
 #, php-format
 msgid "%s OK.  Actual version (%s) more recent than expected version (%s)"
 msgstr ""
 
-#: ../lib/setup.php:1584
+#: ../lib/setup.php:1556
 #, php-format
 msgid "Expected version %s but found %s."
 msgstr ""
 
-#: ../lib/setup.php:1588
+#: ../lib/setup.php:1560
 #, php-format
 msgid "%s OK"
 msgstr ""
 
-#: ../lib/setup.php:1590
+#: ../lib/setup.php:1562
 #, php-format
 msgid "Found expected version %s."
 msgstr ""
 
-#: ../lib/setup.php:1721
+#: ../lib/setup.php:1698
 msgid "This email will be sent when new accounts are created."
 msgstr ""
 
-#: ../lib/setup.php:1722
+#: ../lib/setup.php:1699
 msgid "Leaving this field empty sets Gallery to use the default message (see below) which can be translated, or use your own welcome message."
 msgstr ""
 
-#: ../lib/setup.php:1723
+#: ../lib/setup.php:1700
 msgid "The following placeholder can be used:"
 msgstr ""
 
-#: ../setup/check.inc:27 ../setup/confirm.inc:28 ../setup/constants.inc:30
+#: ../lib/setup.php:1763 ../setup/check_netpbm.php:250
+#, php-format
+msgid "File %s does not exist."
+msgstr ""
+
+#: ../lib/setup.php:1772 ../setup/check_netpbm.php:261
+#, php-format
+msgid "Expected status: %s, but actually received status %s."
+msgstr ""
+
+#: ../lib/setup.php:1785 ../setup/check_netpbm.php:275
+msgid "can't detect version on Windows"
+msgstr ""
+
+#: ../lib/setup.php:1796 ../setup/check_netpbm.php:301
+#, php-format
+msgid "OK!  Version: %s"
+msgstr ""
+
+#: ../setup/check.inc:29 ../setup/confirm.inc:28 ../setup/constants.inc:30
 #: ../setup/defaults.inc:27
 #, php-format
 msgid "Gallery Configuration Wizard: Step %d"
 msgstr ""
 
-#: ../setup/check.inc:31
+#: ../setup/check.inc:33
 msgid "This is the Gallery system check page."
 msgstr ""
 
-#: ../setup/check.inc:32
+#: ../setup/check.inc:34
 msgid "This page will validate your installation to make sure that you have all the necessary components and permissions on this system and that everything is configured reasonably."
 msgstr ""
 
-#: ../setup/check.inc:37 ../setup/diagnostics.php:28
+#: ../setup/check.inc:39 ../setup/diagnostics.php:28
 msgid "Gallery Diagnostics Page"
 msgstr ""
 
-#: ../setup/check.inc:38
+#: ../setup/check.inc:40
 msgid "Gallery Help Page"
 msgstr ""
 
-#: ../setup/check.inc:42
+#: ../setup/check.inc:44
 #, php-format
 msgid "Having problems?  Try the %s, %s and %s."
 msgstr ""
 
-#: ../setup/check.inc:43 ../setup/confirm.inc:36
+#: ../setup/check.inc:45 ../setup/confirm.inc:36
 msgid "documentation"
 msgstr ""
 
-#: ../setup/check.inc:45
+#: ../setup/check.inc:47
 #, php-format
 msgid "Having problems?  Try the %s and %s."
 msgstr ""
 
-#: ../setup/check.inc:68
+#: ../setup/check.inc:56 ../setup/check.inc:57
 msgid "Success"
 msgstr ""
 
-#: ../setup/check.inc:80 ../setup/check.inc:94
-msgid "Serious Warning"
+#: ../setup/check.inc:61 ../setup/check.inc:62
+msgid "Warning, but optional"
 msgstr ""
 
-#: ../setup/check.inc:83 ../setup/check.inc:123 ../setup/check_mail.php:84
-msgid "Warning"
+#: ../setup/check.inc:66 ../setup/check.inc:67
+msgid "Serious warning, but optional"
 msgstr ""
 
-#: ../setup/check.inc:96
-msgid "Failed"
+#: ../setup/check.inc:71 ../setup/check.inc:72
+msgid "Serious warning, no go !"
 msgstr ""
 
-#: ../setup/check.inc:146
+#: ../setup/check.inc:76 ../setup/check.inc:77 ../setup/write.inc:244
+msgid "Failure"
+msgstr ""
+
+#: ../setup/check.inc:104 ../setup/check_versions.php:75
+msgid "Show/hide more information"
+msgstr ""
+
+#: ../setup/check.inc:182
+msgid "Legend:"
+msgstr ""
+
+#: ../setup/check.inc:193
 msgid "There are errors in your configuration that will prevent Gallery from functioning properly."
 msgstr ""
 
-#: ../setup/check.inc:148
+#: ../setup/check.inc:195
 msgid "You must fix them before you can continue."
 msgstr ""
 
-#: ../setup/check.inc:153
+#: ../setup/check.inc:200
 msgid "Your installation has <b>serious warnings</b>!<br>Continue at your own risk..."
 msgstr ""
 
-#: ../setup/check.inc:156
+#: ../setup/check.inc:203
 msgid "Your installation has warnings, but this is usually OK.  Keep going!"
 msgstr ""
 
-#: ../setup/check.inc:160
+#: ../setup/check.inc:207
 msgid "Your installation passed with flying colors!  Go go go!"
 msgstr ""
 
-#: ../setup/check.inc:163 ../setup/constants.inc:44 ../setup/constants.inc:159
+#: ../setup/check.inc:210 ../setup/constants.inc:44 ../setup/constants.inc:187
 #: ../setup/defaults.inc:46 ../setup/defaults.inc:132
 msgid "Next Step"
 msgstr ""
@@ -639,110 +666,91 @@
 msgid "You should run this script <b>after</b> you have run the config wizard, if you have had problems with your %s installation that the wizard did not detect."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:51 ../setup/check_netpbm.php:51
+#: ../setup/check_imagemagick.php:48 ../setup/check_netpbm.php:51
 msgid "Loading configuration files.  If you see an error here, it is probably because you have not successfully run the config wizard."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:59 ../setup/check_netpbm.php:59
+#: ../setup/check_imagemagick.php:55 ../setup/check_netpbm.php:59
 msgid "It seems that you did not configure your GALLERY. Please run and finish the configuration wizard."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:83 ../setup/check_netpbm.php:83
+#: ../setup/check_imagemagick.php:75 ../setup/check_netpbm.php:83
 msgid "Let us see if we can figure out what operating system you are using."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:87 ../setup/check_netpbm.php:87
+#: ../setup/check_imagemagick.php:79 ../setup/check_netpbm.php:87
 msgid "This is what your system reports"
 msgstr ""
 
-#: ../setup/check_imagemagick.php:90 ../setup/check_netpbm.php:90
+#: ../setup/check_imagemagick.php:82 ../setup/check_netpbm.php:90
 msgid "This is the type of system on which PHP was compiled"
 msgstr ""
 
-#: ../setup/check_imagemagick.php:92 ../setup/check_netpbm.php:92
+#: ../setup/check_imagemagick.php:84 ../setup/check_netpbm.php:92
 msgid "Make sure that the values above make sense to you."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:95 ../setup/check_netpbm.php:95
+#: ../setup/check_imagemagick.php:88 ../setup/check_netpbm.php:95
 #, php-format
 msgid "Look for keywords like %s, %s, %s etc. in the output above."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:97 ../setup/check_netpbm.php:97
+#: ../setup/check_imagemagick.php:91 ../setup/check_netpbm.php:97
 msgid "If both the attempts above failed, you should ask your ISP what operating system you are using."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:98 ../setup/check_netpbm.php:98
+#: ../setup/check_imagemagick.php:92 ../setup/check_netpbm.php:98
 #, php-format
 msgid "You can check via %s, they can often tell you."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:114 ../setup/check_netpbm.php:114
+#: ../setup/check_imagemagick.php:104 ../setup/check_netpbm.php:114
 #, php-format
 msgid "You told the config wizard that your %s binaries live here:"
 msgstr ""
 
-#: ../setup/check_imagemagick.php:116 ../setup/check_netpbm.php:116
+#: ../setup/check_imagemagick.php:106 ../setup/check_netpbm.php:116
 #, php-format
 msgid "If that is not right (or if it is blank), re-run the configuration wizard and enter a location for %s."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:125 ../setup/check_netpbm.php:125
+#: ../setup/check_imagemagick.php:115 ../setup/check_netpbm.php:125
 #, php-format
 msgid "<b>Note:</b> Your %s directory (%s) is not in your open_basedir list %s"
 msgstr ""
 
-#: ../setup/check_imagemagick.php:129 ../setup/check_netpbm.php:129
+#: ../setup/check_imagemagick.php:119 ../setup/check_netpbm.php:129
 msgid "The open_basedir list is specified in php.ini."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:130 ../setup/check_netpbm.php:130
+#: ../setup/check_imagemagick.php:120 ../setup/check_netpbm.php:130
 msgid "The result is, that we can't perform all of our basic checks on the files to make sure that they exist and they're executable."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:141 ../setup/check_netpbm.php:142
+#: ../setup/check_imagemagick.php:128 ../setup/check_netpbm.php:142
 #, php-format
 msgid "We are going to test each %s binary individually."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:156 ../setup/check_netpbm.php:183
+#: ../setup/check_imagemagick.php:137 ../setup/check_netpbm.php:183
 msgid "Checking:"
 msgstr ""
 
-#: ../setup/check_imagemagick.php:179 ../setup/check_netpbm.php:213
+#: ../setup/check_imagemagick.php:156 ../setup/check_netpbm.php:213
 #, php-format
 msgid "If you see an error above complaining about reading or writing to %s then this is likely a permission/configuration issue on your system.  If it mentions %s then it's because your system is configured with %s enabled."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:183 ../setup/check_netpbm.php:217
+#: ../setup/check_imagemagick.php:160 ../setup/check_netpbm.php:217
 #, php-format
 msgid "You should talk to your system administrator about this, or see the %sGallery Help Page%s."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:188 ../setup/check_netpbm.php:222
+#: ../setup/check_imagemagick.php:165 ../setup/check_netpbm.php:222
 #, php-format
 msgid "For other errors, please refer to the list of possible responses in %s to get more information."
 msgstr ""
 
-#: ../setup/check_imagemagick.php:216 ../setup/check_netpbm.php:250
-#, php-format
-msgid "File %s does not exist."
-msgstr ""
-
-#: ../setup/check_imagemagick.php:227 ../setup/check_netpbm.php:261
-#, php-format
-msgid "Expected status: %s, but actually received status %s."
-msgstr ""
-
-#: ../setup/check_imagemagick.php:240 ../setup/check_netpbm.php:275
-msgid "can't detect version on Windows"
-msgstr ""
-
-#: ../setup/check_imagemagick.php:251 ../setup/check_netpbm.php:301
-#, php-format
-msgid "OK!  Version: %s"
-msgstr ""
-
 #: ../setup/check_mail.php:29 ../setup/check_mail.php:35
 msgid "Check Mail"
 msgstr ""
@@ -796,6 +804,10 @@
 msgid "%s not set."
 msgstr ""
 
+#: ../setup/check_mail.php:84
+msgid "Warning"
+msgstr ""
+
 #: ../setup/check_mail.php:98
 msgid "Your email address:"
 msgstr ""
@@ -808,7 +820,7 @@
 msgid "Gallery NetPBM Check"
 msgstr ""
 
-#: ../setup/check_netpbm.php:145 ../setup/check_versions.php:51
+#: ../setup/check_netpbm.php:145
 #, php-format
 msgid "%sClick here%s to hide the details"
 msgstr ""
@@ -818,64 +830,59 @@
 msgid "If you see errors, you should %sclick here%s to see more details"
 msgstr ""
 
-#: ../setup/check_versions.php:32 ../setup/check_versions.php:41
+#: ../setup/check_versions.php:30 ../setup/check_versions.php:41
 msgid "Check Versions"
 msgstr ""
 
-#: ../setup/check_versions.php:43
+#: ../setup/check_versions.php:44
 #, php-format
 msgid "This page gives you information about the version of each necessary %s file. "
 msgstr ""
 
-#: ../setup/check_versions.php:44
+#: ../setup/check_versions.php:46
 msgid "If you see any error(s), we highly suggest to get the actual version of that file(s)."
 msgstr ""
 
-#: ../setup/check_versions.php:54
-#, php-format
-msgid "%sClick here%s to see more details"
-msgstr ""
-
-#: ../setup/check_versions.php:69
+#: ../setup/check_versions.php:55
 #, php-format
 msgid "One file is missing, corrupt or older than expected."
 msgid_plural "%d files are missing, corrupt or older than expected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../setup/check_versions.php:71 ../setup/check_versions.php:102
+#: ../setup/check_versions.php:55 ../setup/check_versions.php:60
 msgid "All files okay."
 msgstr ""
 
-#: ../setup/check_versions.php:78
+#: ../setup/check_versions.php:57
 #, php-format
 msgid "There are problems with the following files.  Please correct them before configuring %s."
 msgstr ""
 
-#: ../setup/check_versions.php:100
+#: ../setup/check_versions.php:60
 #, php-format
 msgid "One file is more recent than expected."
 msgid_plural "%d files are more recent than expected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../setup/check_versions.php:110
+#: ../setup/check_versions.php:62
 #, php-format
 msgid "The following files are more up-to-date than expected for this version of %s.  If you are using pre-release code, this is OK."
 msgstr ""
 
-#: ../setup/check_versions.php:128
+#: ../setup/check_versions.php:65
 #, php-format
 msgid "One file is up-to-date."
 msgid_plural "%d files are up-to-date."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../setup/check_versions.php:130
+#: ../setup/check_versions.php:65
 msgid "All files are up-to-date."
 msgstr ""
 
-#: ../setup/check_versions.php:136
+#: ../setup/check_versions.php:67
 msgid "The following files are up-to-date."
 msgstr ""
 
@@ -883,104 +890,124 @@
 msgid "unknown"
 msgstr ""
 
-#: ../setup/config_data.inc:72
+#: ../setup/config_data.inc:71
 #, php-format
 msgid "Gallery prefers NetPBM version 9.9 and up.  You can install just the binaries Gallery needs from the %sGallery Download Page%s. Or, you can compile and install the entire NetPBM package from the %sNetPBM website%s."
 msgstr ""
 
-#: ../setup/config_data.inc:77 ../setup/config_data.inc:87
-#: ../setup/config_data.inc:95 ../setup/config_data.inc:136
-#: ../setup/config_data.inc:715 ../setup/confirm.inc:396
+#: ../setup/config_data.inc:76 ../setup/config_data.inc:86
+#: ../setup/config_data.inc:94 ../setup/config_data.inc:134
+#: ../setup/config_data.inc:816 ../setup/confirm.inc:391
 msgid "Note:"
 msgstr ""
 
-#: ../setup/config_data.inc:78
+#: ../setup/config_data.inc:77
 msgid "You can install the binaries from the Gallery site even if you don't have root access on your box!  If you can't get it working, try leaving the NetPBM path blank and using ImageMagick instead."
 msgstr ""
 
-#: ../setup/config_data.inc:81
+#: ../setup/config_data.inc:80
 msgid "I've found part of NetPBM, but some critical components are missing (see below).  Perhaps your version of NetPBM is out of date."
 msgstr ""
 
-#: ../setup/config_data.inc:85
+#: ../setup/config_data.inc:84
 #, php-format
 msgid "Gallery prefers ImageMagick version 5.4.8 and up.  You can compile and install the entire ImageMagick package from the %sImageMagick website%s."
 msgstr ""
 
-#: ../setup/config_data.inc:88
+#: ../setup/config_data.inc:87
 msgid "The site also has binaries available for assorted operating systems.  If you can't get it working, try leaving the ImageMagick path blank and using NetPBM instead."
 msgstr ""
 
-#: ../setup/config_data.inc:91
+#: ../setup/config_data.inc:90
 msgid "I've found part of ImageMagick , but some critical components are missing (see below)."
 msgstr ""
 
-#: ../setup/config_data.inc:96
+#: ../setup/config_data.inc:95
 #, php-format
 msgid "Your PHP installation is configured with the %s restriction.   This may make it difficult for Gallery to detect and verify your binaries, even if you've already successfully used the Config. Wizard in the past.  Don't worry too much if this page gives warnings; your settings will still be saved properly."
 msgstr ""
 
+#: ../setup/config_data.inc:100
+msgid "Gallery version"
+msgstr ""
+
 #: ../setup/config_data.inc:102
 #, php-format
 msgid "Check to see how old %s version %s is."
 msgstr ""
 
 #: ../setup/config_data.inc:108
-msgid "Check to see if you are running PHP 4.1.0 or greater."
+msgid "PHP version"
 msgstr ""
 
-#: ../setup/config_data.inc:108
-msgid "Since Gallery 1.4.5 Gallery needs at least PHP 4.1.0, this is due to that some versions of PHP have bugs that cause Gallery to fail and that older Version does not have required functionality."
+#: ../setup/config_data.inc:109
+msgid "Check to see if you are running a supported Version of PHP."
 msgstr ""
 
-#: ../setup/config_data.inc:110
+#: ../setup/config_data.inc:109
+msgid "Due to bugs and missing functionality in some PHP versions, the minimum PHP version for Gallery 1.5 and newer is at least PHP 4.1.0"
+msgstr ""
+
+#: ../setup/config_data.inc:111
 #, php-format
 msgid "You're running PHP version %s.  You need to upgrade to PHP %s."
 msgstr ""
 
-#: ../setup/config_data.inc:111
+#: ../setup/config_data.inc:112
 #, php-format
 msgid "You're running PHP version %s which has known bugs that cause Gallery to fail."
 msgstr ""
 
-#: ../setup/config_data.inc:115
-msgid "We are using predefined variables which some older version of PHP have problems with."
+#: ../setup/config_data.inc:113
+msgid "It seems your PHP has a problem with __FILE__, please upgrade to a recent Version"
 msgstr ""
 
 #: ../setup/config_data.inc:117
-msgid "It seems your PHP has a problem with __FILE__, please upgrade to a recent Version"
+msgid "Register globals"
 msgstr ""
 
-#: ../setup/config_data.inc:121
+#: ../setup/config_data.inc:118
 msgid "Gallery highly recommends that the PHP option 'register_globals' be turned off, for security purposes.  Some software, notably the 'Geeklog' CMS, requires that 'register_globals' be enabled."
 msgstr ""
 
-#: ../setup/config_data.inc:123
+#: ../setup/config_data.inc:120
 msgid "The PHP option 'register_globals' is enabled on your server. Gallery highly recommends that you disable 'register_globals' unless it is required by software on your site.  Gallery does not officially support 'register_globals' being enabled, and will attempt to disable it internally."
 msgstr ""
 
-#: ../setup/config_data.inc:128
+#: ../setup/config_data.inc:125
+msgid "PHPs safe mode disabled"
+msgstr ""
+
+#: ../setup/config_data.inc:126
 msgid "Check to see if PHP is running in <b>safe_mode</b>.  Safe Mode is a PHP security feature commonly used in shared environments.  Gallery cannot run when Safe Mode is enabled because it imposes too many restrictions."
 msgstr ""
 
-#: ../setup/config_data.inc:130
+#: ../setup/config_data.inc:128
 #, php-format
 msgid "<b>safe_mode</b> is enabled on this server.  You must disable it before you can use Gallery.  Refer to the FAQ, the forums, and the help page on the %sGallery website%s and the %sPHP website%s for assistance."
 msgstr ""
 
-#: ../setup/config_data.inc:137
+#: ../setup/config_data.inc:135
 #, php-format
 msgid "In some rare circumstances, Gallery thinks that Safe Mode is on, when it's really off.  You can see for yourself by looking in the <i>Local</i> column of the <i>safe_mode</i> row in the %sPHP Info%s page.  If it says 'Off' or '0' or 'undefined' then it's possible that Gallery made a mistake and you can continue.  If not, then you must resolve this problem before you can use Gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:144
+#: ../setup/config_data.inc:142
+msgid "PHPs exec() function enabled"
+msgstr ""
+
+#: ../setup/config_data.inc:143
 msgid "The <b>exec()</b> function is what Gallery uses to launch programs such as NetPBM, ImageMagick, and jhead.  If <b>exec()</b> is disabled on your server then Gallery will not be able operate."
 msgstr ""
 
-#: ../setup/config_data.inc:146
+#: ../setup/config_data.inc:145
 msgid "The <b>exec()</b> function is disabled on your server.  Gallery will not function with this PHP configuration."
 msgstr ""
 
+#: ../setup/config_data.inc:149
+msgid ".htaccess processed by apache"
+msgstr ""
+
 #: ../setup/config_data.inc:150
 msgid "Allow the Gallery <b>.htaccess</b> file to set application specific configuration options for the Gallery application.  This is controlled by the webserver owner so it's not always possible for you to change it.  The main drawbacks to not having this are that you may not be able to upload files > 2MB (e.g. big ZIP files or movies)."
 msgstr ""
@@ -993,1846 +1020,1959 @@
 msgid "If you are running PHP in CGI mode, this message is unavoidable."
 msgstr ""
 
-#: ../setup/config_data.inc:161
+#: ../setup/config_data.inc:160
+msgid "PHPs magic quotes off"
+msgstr ""
+
+#: ../setup/config_data.inc:162
 #, php-format
 msgid "Check to see if %smagic quotes%s are enabled on your PHP server.  If they're on, you may notice strange behavior if you put ' (single-quote), &quot; (double quote) or &#92; (backslash) characters in titles or captions in Gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:165
+#: ../setup/config_data.inc:166
 #, php-format
 msgid "Magic quotes are on.  Your webserver administrator can turn them off by putting %s in your <b>php.ini</b> file."
 msgstr ""
 
-#: ../setup/config_data.inc:169
-msgid "Check to see if your webserver is compiled with <b>mod_rewrite</b>.  This Apache module allows Gallery to use shorter URLs that are easier to read and look nicer when you mail them to your web-challenged relatives.  It's not an essential feature."
+#: ../setup/config_data.inc:170
+msgid "Apache mod_rewrite"
 msgstr ""
 
 #: ../setup/config_data.inc:171
+msgid "Check to see if your webserver is compiled with <b>mod_rewrite</b>.  This Apache module allows Gallery to use shorter URLs that are easier to read and look nicer when you mail them to your web-challenged relatives.  It's not an essential feature."
+msgstr ""
+
+#: ../setup/config_data.inc:173
 msgid "Either <b>mod_rewrite</b> is not installed or your <b>.htaccess</b> file is not enabled (see above).  Either way, we'll have to use longer URLs in the Gallery.  If you want to turn it on, first make sure that your <b>.htaccess</b> file is being obeyed. If it still doesn't work, you may need to reconfigure and rebuild Apache with this flag: "
 msgstr ""
 
-#: ../setup/config_data.inc:177
+#: ../setup/config_data.inc:178
+msgid "NetPBM installed"
+msgstr ""
+
+#: ../setup/config_data.inc:180
 msgid "Check to see if NetPBM is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either NetPBM <b>or</b> ImageMagick installed."
 msgstr ""
 
-#: ../setup/config_data.inc:179
+#: ../setup/config_data.inc:182
 msgid "I can't find NetPBM.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path to NetPBM by hand on the following page.  If it's not installed, you have two choices: "
 msgstr ""
 
-#: ../setup/config_data.inc:184
+#: ../setup/config_data.inc:186
 msgid "If NetPBM is installed and Gallery isn't finding it automatically that's OK&#8212;you can specify the path to NetPBM by hand on the following page."
 msgstr ""
 
 #: ../setup/config_data.inc:190
-msgid "Check to see if ImageMagick is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either ImageMagick <b>or</b> NetPBM installed."
+msgid "ImageMagick installed"
 msgstr ""
 
 #: ../setup/config_data.inc:192
+msgid "Check to see if ImageMagick is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either ImageMagick <b>or</b> NetPBM installed."
+msgstr ""
+
+#: ../setup/config_data.inc:194
 msgid "I can't find ImageMagick.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path to ImageMagick by hand on the following page.  If it's not installed, you must install it.  "
 msgstr ""
 
-#: ../setup/config_data.inc:196
+#: ../setup/config_data.inc:198
 msgid "If ImageMagick is installed and Gallery isn't finding it automatically that's OK&#8212;you can specify the path to ImageMagick by hand on the following page."
 msgstr ""
 
-#: ../setup/config_data.inc:201
+#: ../setup/config_data.inc:202
+msgid "Jhead installed"
+msgstr ""
+
+#: ../setup/config_data.inc:204
 msgid "Check to see if <b>jhead</b> is installed so that Gallery can examine EXIF headers embedded in images created with most digital cameras."
 msgstr ""
 
-#: ../setup/config_data.inc:203
+#: ../setup/config_data.inc:206
 #, php-format
 msgid "I can't find <b>jhead</b>.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path by hand on the following page.  If it's not installed, you can install it yourself. Jhead is a public domain EXIF parser.  Source, linux binaries, and windows binaries can be found at the %sjhead homepage%s."
 msgstr ""
 
-#: ../setup/config_data.inc:210
+#: ../setup/config_data.inc:212
+msgid "jpegtran installed"
+msgstr ""
+
+#: ../setup/config_data.inc:214
 msgid "Check to see if <b>jpegtran</b> is installed so that Gallery can perform lossless rotations on JPEG images."
 msgstr ""
 
-#: ../setup/config_data.inc:212
+#: ../setup/config_data.inc:216
 #, php-format
 msgid "I can't find <b>jpegtran</b>.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path by hand on the following page.  If it's not installed, you can install it yourself.  Jpegtran is a free tool distributed by the Independent JPEG Group as part of <i>libjpeg</i>.  Source may be found at the %sIJG homepage%s.  Binaries may be found at the %sJPEG Club website%s or in the <i>libjpeg</i> package of Linux distributions."
 msgstr ""
 
-#: ../setup/config_data.inc:219
+#: ../setup/config_data.inc:222
+msgid "Gettext support in PHP"
+msgstr ""
+
+#: ../setup/config_data.inc:224
 msgid "Check to see if PHP is compiled with <b>GNU gettext</b> support for fast translations."
 msgstr ""
 
-#: ../setup/config_data.inc:221
+#: ../setup/config_data.inc:226
 #, php-format
 msgid "Your PHP does not have <b>GNU gettext</b> support installed.  To include it, you'll need to recompile PHP (see the %sPHP docs%s for more information). Multi-language support is still available in Gallery without <b>gettext</b>, but the pages may take slightly longer to load."
 msgstr ""
 
-#: ../setup/config_data.inc:226
-msgid "Check to see what languages are available."
+#: ../setup/config_data.inc:230
+msgid "Locales needed for Gallery"
 msgstr ""
 
 #: ../setup/config_data.inc:232
+msgid "Check to see what languages are available."
+msgstr ""
+
+#: ../setup/config_data.inc:236
+msgid "missing locales"
+msgstr ""
+
+#: ../setup/config_data.inc:239
 msgid "Testing to see which <b>system</b> locales (if any) are absent."
 msgstr ""
 
-#: ../setup/config_data.inc:233
-msgid "These locales are required to use multilanguage capabilities of Gallery when your PHP has gettext support. They are also needed to show date and time in the according format to the language."
+#: ../setup/config_data.inc:240
+msgid "These locales are required to use multilanguage capabilities of Gallery when your PHP has gettext support. They are also needed to format dates and times according to the selected language."
+msgstr ""
+
+#: ../setup/config_data.inc:245
+msgid "File integrity"
 msgstr ""
 
-#: ../setup/config_data.inc:238
+#: ../setup/config_data.inc:246
 msgid "Checking to see if you have the latest versions of all Gallery files."
 msgstr ""
 
-#: ../setup/config_data.inc:257
+#: ../setup/config_data.inc:264
 msgid "General settings"
 msgstr ""
 
-#: ../setup/config_data.inc:261
+#: ../setup/config_data.inc:268
 msgid "Gallery Title"
 msgstr ""
 
-#: ../setup/config_data.inc:262
+#: ../setup/config_data.inc:269
 msgid "The name of your Gallery.  E.g. <i>My Cool Photos</i>"
 msgstr ""
 
-#: ../setup/config_data.inc:263
+#: ../setup/config_data.inc:270
 msgid "Gallery"
 msgstr ""
 
-#: ../setup/config_data.inc:269
+#: ../setup/config_data.inc:276
 msgid "Use Icons ?"
 msgstr ""
 
-#: ../setup/config_data.inc:270
+#: ../setup/config_data.inc:277
 msgid "You can choose wether you want to use Gallery icons, text only, or both. When you choose icons only, then there will be an onMousoverText."
 msgstr ""
 
-#: ../setup/config_data.inc:271
+#: ../setup/config_data.inc:279
 msgid "Icons and text"
 msgstr ""
 
-#: ../setup/config_data.inc:272
+#: ../setup/config_data.inc:280
 msgid "Text only"
 msgstr ""
 
-#: ../setup/config_data.inc:273
+#: ../setup/config_data.inc:281
 msgid "Icons only"
 msgstr ""
 
-#: ../setup/config_data.inc:278
+#: ../setup/config_data.inc:286
 msgid "Skin Name"
 msgstr ""
 
-#: ../setup/config_data.inc:279
+#: ../setup/config_data.inc:287
 msgid "Select a skin to use for Gallery. You now have a wide choice of &quot;skins&quot; that affect the look of every page of your Gallery.  You can have fun experimenting with the available skins. Choose &quot;None&quot; to use the look from v1.4."
 msgstr ""
 
-#: ../setup/config_data.inc:280
+#: ../setup/config_data.inc:288
 msgid "Here you can get a more Gallery Skins by Drazan"
 msgstr ""
 
-#: ../setup/config_data.inc:286
+#: ../setup/config_data.inc:294
 msgid "Default upload method"
 msgstr ""
 
-#: ../setup/config_data.inc:287
+#: ../setup/config_data.inc:295
 msgid "Which method of uploading photos should be defaulted to for users who don't specify?"
 msgstr ""
 
-#: ../setup/config_data.inc:288
+#: ../setup/config_data.inc:297
 msgid "Form-based Upload"
 msgstr ""
 
-#: ../setup/config_data.inc:289
+#: ../setup/config_data.inc:298
 msgid "Mini-Applet"
 msgstr ""
 
-#: ../setup/config_data.inc:290
+#: ../setup/config_data.inc:299
 msgid "Full-Applet"
 msgstr ""
 
-#: ../setup/config_data.inc:291
+#: ../setup/config_data.inc:300
 msgid "URL"
 msgstr ""
 
-#: ../setup/config_data.inc:302
+#: ../setup/config_data.inc:312
 msgid "Locations and URLs"
 msgstr ""
 
-#: ../setup/config_data.inc:306
+#: ../setup/config_data.inc:316
 msgid "Album directory"
 msgstr ""
 
-#: ../setup/config_data.inc:307 ../setup/config_data.inc:319
-#: ../setup/config_data.inc:331 ../setup/config_data.inc:342
+#: ../setup/config_data.inc:317 ../setup/config_data.inc:330
+#: ../setup/config_data.inc:343 ../setup/config_data.inc:354
 msgid "REQUIRED"
 msgstr ""
 
-#: ../setup/config_data.inc:308
+#: ../setup/config_data.inc:318
 #, php-format
 msgid "The full path on physical disk to the directory where your photos will be stored.  This directory should start off empty&#8212;Gallery will fill it.  Note that this directory needs to have write access by the user who is running the web server (in your case this user is %s)."
 msgstr ""
 
-#: ../setup/config_data.inc:318
+#: ../setup/config_data.inc:329
 msgid "Temporary directory"
 msgstr ""
 
-#: ../setup/config_data.inc:320
+#: ../setup/config_data.inc:331
 #, php-format
 msgid "The filesystem path to a temporary directory.  E.g. %s or %s.  Note that if you have <b>open_basedir</b> configured on your system, then this temporary directory must be inside the <b>open_basedir</b> path!  In that case you may need to create the directory yourself and make sure that it's writable by the webserver process."
 msgstr ""
 
-#: ../setup/config_data.inc:332
+#: ../setup/config_data.inc:344
 #, php-format
 msgid "The full URL to the Gallery web application. (e.g. %s) Gallery can operate with relative URLs, however some features, such as printing, may not function correctly."
 msgstr ""
 
-#: ../setup/config_data.inc:341
+#: ../setup/config_data.inc:353
 msgid "Albums URL"
 msgstr ""
 
-#: ../setup/config_data.inc:343
+#: ../setup/config_data.inc:355
 #, php-format
 msgid "The full URL to your album directory on your web server.  (e.g. %s) Gallery can operate with relative URLs, however some features, such as printing, may not function correctly."
 msgstr ""
 
-#: ../setup/config_data.inc:353
+#: ../setup/config_data.inc:364
 msgid "Thumbnail image"
 msgstr ""
 
-#: ../setup/config_data.inc:354
+#: ../setup/config_data.inc:365
 #, php-format
 msgid "The filesystem path to the thumbnail image to show for movies. E.g. %s"
 msgstr ""
 
-#: ../setup/config_data.inc:360
+#: ../setup/config_data.inc:372
 msgid "Mirror sites"
 msgstr ""
 
-#: ../setup/config_data.inc:361
+#: ../setup/config_data.inc:373
 #, php-format
 msgid "A list of URLs that contain mirrors of your albums directory.  Specify one URL per line with the ones that are more reliable towards the top.  E.g. %s"
 msgstr ""
 
-#: ../setup/config_data.inc:378
+#: ../setup/config_data.inc:390
 msgid "Toolkits / image processing"
 msgstr ""
 
-#: ../setup/config_data.inc:382
+#: ../setup/config_data.inc:394
 msgid "Graphics suite to use"
 msgstr ""
 
-#: ../setup/config_data.inc:383
+#: ../setup/config_data.inc:395
 msgid "This setting tells Gallery which set of graphics tools you prefer it to use.  If Gallery says both are okay (on the first page) then this is simply user preference.  Otherwise go with the one that Gallery was able to find without error."
 msgstr ""
 
-#: ../setup/config_data.inc:390
-msgid "Path to NetPBM"
+#: ../setup/config_data.inc:403
+msgid "ImageMagick Settings"
 msgstr ""
 
-#: ../setup/config_data.inc:391
-#, php-format
-msgid "The path to the directory containing NetPBM on your system.  If you downloaded NetPBM from the Gallery download page, don't forget to make the files executable.  E.g. %s or %s or %s"
+#: ../setup/config_data.inc:408
+msgid "Path to ImageMagick"
 msgstr ""
 
-#: ../setup/config_data.inc:395 ../setup/config_data.inc:424
+#: ../setup/config_data.inc:409
+msgid "The path to the directory containing ImageMagick on your system."
+msgstr ""
+
+#: ../setup/config_data.inc:410 ../setup/config_data.inc:438
 #, php-format
 msgid "This path is only required if you choosed %s above. Otherwise you can leave it like it is, or empty."
 msgstr ""
 
-#: ../setup/config_data.inc:398
+#: ../setup/config_data.inc:413
+msgid "I can't find ImageMagick at the location you provided."
+msgstr ""
+
+#: ../setup/config_data.inc:428
+msgid "NetPBM Settings"
+msgstr ""
+
+#: ../setup/config_data.inc:433
+msgid "Path to NetPBM"
+msgstr ""
+
+#: ../setup/config_data.inc:434
+#, php-format
+msgid "The path to the directory containing NetPBM on your system.  If you downloaded NetPBM from the Gallery download page, don't forget to make the files executable.  E.g. %s or %s or %s"
+msgstr ""
+
+#: ../setup/config_data.inc:441
 msgid "I can't find NetPBM at the location you provided."
 msgstr ""
 
-#: ../setup/config_data.inc:409
+#: ../setup/config_data.inc:453
 msgid "PNM to JPEG converter"
 msgstr ""
 
-#: ../setup/config_data.inc:410
+#: ../setup/config_data.inc:454
 msgid "This value is only relevant if you use NetPBM.  NetPBM uses a tool to encode its internal image format into JPEG.  This tool is called either <i>ppmtojpeg</i> or <i>pnmtojpeg</i> depending on the version of NetPBM that you have installed.  Check your NetPBM directory to see which one you have installed and specify it here.  If you aren't sure, just take a guess and we'll try to verify it for you."
 msgstr ""
 
-#: ../setup/config_data.inc:415
+#: ../setup/config_data.inc:459
 msgid "PNM Composite (Overlay)"
 msgstr ""
 
-#: ../setup/config_data.inc:416
+#: ../setup/config_data.inc:460
 msgid "This value is only relevant if you use NetPBM.  NetPBM uses a tool to overlay one image over another.  This tool is called either <i>pnmcomp</i> or <i>pamcomp</i> depending on the version of NetPBM that you have installed.  Check your NetPBM directory to see which one you have installed and specify it here.  If you aren't sure, just take a guess and we'll try to verify it for you."
 msgstr ""
 
-#: ../setup/config_data.inc:422
-msgid "Path to ImageMagick"
+#: ../setup/config_data.inc:468
+msgid "Auto-rotate images"
 msgstr ""
 
-#: ../setup/config_data.inc:423
-msgid "The path to the directory containing ImageMagick on your system."
+#: ../setup/config_data.inc:469
+msgid "Selecting this option has Gallery automatically attempt to rotate images on upload, based on the orientation information that is stored in JPEG EXIF data by some newer digital cameras."
 msgstr ""
 
-#: ../setup/config_data.inc:427
-msgid "I can't find ImageMagick at the location you provided."
+#: ../setup/config_data.inc:470
+msgid "Requires Jhead EXIF parser v.1.9 or greater (See optional tools)."
 msgstr ""
 
-#: ../setup/config_data.inc:437
-msgid "Auto-rotate images"
+#: ../setup/config_data.inc:471 ../setup/config_data.inc:559
+#: ../setup/config_data.inc:578 ../setup/config_data.inc:591
+#: ../setup/config_data.inc:597 ../setup/config_data.inc:772
+#: ../setup/config_data.inc:820 ../setup/config_data.inc:861
+#: ../setup/config_data.inc:871 ../setup/config_data.inc:879
+#: ../setup/config_data.inc:888 ../setup/config_data.inc:897
+#: ../setup/config_data.inc:918 ../setup/config_data.inc:1004
+#: ../setup/config_data.inc:1031 ../setup/config_data.inc:1060
+#: ../setup/config_data.inc:1068 ../setup/config_data.inc:1070
+#: ../setup/config_data.inc:1101 ../setup/config_data.inc:1276
+#: ../setup/config_data.inc:1294 ../setup/config_data.inc:1323
+#: ../setup/config_data.inc:1333 ../setup/config_data.inc:1342
+#: ../setup/config_data.inc:1351 ../setup/config_data.inc:1384
+#: ../setup/config_data.inc:1425 ../setup/config_data.inc:1433
+#: ../setup/config_data.inc:1441 ../setup/config_data.inc:1588
+#: ../setup/config_data.inc:1597 ../setup/config_data.inc:1607
+#: ../setup/config_data.inc:1616 ../setup/config_data.inc:1666
+#: ../setup/config_data.inc:1675 ../setup/config_data.inc:1703
+#: ../setup/config_data.inc:1720 ../setup/config_data.inc:1738
+#: ../setup/config_data.inc:1747 ../setup/config_data.inc:1755
+#: ../setup/config_data.inc:1833 ../setup/config_data.inc:1842
+#: ../setup/config_data.inc:1897 ../setup/config_data.inc:1899
+#: ../setup/config_data.inc:1908 ../setup/config_data.inc:1936
+#: ../setup/config_data.inc:1960
+msgid "Yes"
 msgstr ""
 
-#: ../setup/config_data.inc:438
-msgid "Selecting this option has Gallery automatically attempt to rotate images on upload, based on the orientation information that is stored in JPEG EXIF data by some newer digital cameras."
+#: ../setup/config_data.inc:471 ../setup/config_data.inc:559
+#: ../setup/config_data.inc:578 ../setup/config_data.inc:591
+#: ../setup/config_data.inc:597 ../setup/config_data.inc:772
+#: ../setup/config_data.inc:815 ../setup/config_data.inc:821
+#: ../setup/config_data.inc:862 ../setup/config_data.inc:872
+#: ../setup/config_data.inc:880 ../setup/config_data.inc:889
+#: ../setup/config_data.inc:898 ../setup/config_data.inc:917
+#: ../setup/config_data.inc:1002 ../setup/config_data.inc:1005
+#: ../setup/config_data.inc:1032 ../setup/config_data.inc:1061
+#: ../setup/config_data.inc:1071 ../setup/config_data.inc:1102
+#: ../setup/config_data.inc:1277 ../setup/config_data.inc:1295
+#: ../setup/config_data.inc:1324 ../setup/config_data.inc:1334
+#: ../setup/config_data.inc:1343 ../setup/config_data.inc:1352
+#: ../setup/config_data.inc:1385 ../setup/config_data.inc:1426
+#: ../setup/config_data.inc:1434 ../setup/config_data.inc:1442
+#: ../setup/config_data.inc:1589 ../setup/config_data.inc:1598
+#: ../setup/config_data.inc:1608 ../setup/config_data.inc:1617
+#: ../setup/config_data.inc:1667 ../setup/config_data.inc:1676
+#: ../setup/config_data.inc:1704 ../setup/config_data.inc:1721
+#: ../setup/config_data.inc:1739 ../setup/config_data.inc:1748
+#: ../setup/config_data.inc:1756 ../setup/config_data.inc:1831
+#: ../setup/config_data.inc:1834 ../setup/config_data.inc:1900
+#: ../setup/config_data.inc:1906 ../setup/config_data.inc:1909
+#: ../setup/config_data.inc:1937 ../setup/config_data.inc:1961
+msgid "No"
 msgstr ""
 
-#: ../setup/config_data.inc:439
-msgid "Requires Jhead EXIF parser v.1.9 or greater (See optional tools)."
+#: ../setup/config_data.inc:476
+msgid "JPEG Quality <b>(Advanced)</b>"
 msgstr ""
 
-#: ../setup/config_data.inc:440 ../setup/config_data.inc:495
-#: ../setup/config_data.inc:508 ../setup/config_data.inc:522
-#: ../setup/config_data.inc:528 ../setup/config_data.inc:669
-#: ../setup/config_data.inc:718 ../setup/config_data.inc:759
-#: ../setup/config_data.inc:767 ../setup/config_data.inc:773
-#: ../setup/config_data.inc:779 ../setup/config_data.inc:785
-#: ../setup/config_data.inc:803 ../setup/config_data.inc:891
-#: ../setup/config_data.inc:912 ../setup/config_data.inc:938
-#: ../setup/config_data.inc:944 ../setup/config_data.inc:945
-#: ../setup/config_data.inc:970 ../setup/config_data.inc:1118
-#: ../setup/config_data.inc:1153 ../setup/config_data.inc:1160
-#: ../setup/config_data.inc:1166 ../setup/config_data.inc:1172
-#: ../setup/config_data.inc:1383 ../setup/config_data.inc:1389
-#: ../setup/config_data.inc:1396 ../setup/config_data.inc:1402
-#: ../setup/config_data.inc:1444 ../setup/config_data.inc:1451
-#: ../setup/config_data.inc:1475 ../setup/config_data.inc:1489
-#: ../setup/config_data.inc:1504 ../setup/config_data.inc:1510
-#: ../setup/config_data.inc:1516 ../setup/config_data.inc:1585
-#: ../setup/config_data.inc:1592 ../setup/config_data.inc:1644
-#: ../setup/config_data.inc:1645 ../setup/config_data.inc:1651
-#: ../setup/config_data.inc:1676 ../setup/config_data.inc:1693
-msgid "yes"
-msgstr ""
-
-#: ../setup/config_data.inc:440 ../setup/config_data.inc:495
-#: ../setup/config_data.inc:508 ../setup/config_data.inc:522
-#: ../setup/config_data.inc:528 ../setup/config_data.inc:669
-#: ../setup/config_data.inc:714 ../setup/config_data.inc:718
-#: ../setup/config_data.inc:759 ../setup/config_data.inc:767
-#: ../setup/config_data.inc:773 ../setup/config_data.inc:779
-#: ../setup/config_data.inc:785 ../setup/config_data.inc:803
-#: ../setup/config_data.inc:890 ../setup/config_data.inc:891
-#: ../setup/config_data.inc:912 ../setup/config_data.inc:938
-#: ../setup/config_data.inc:945 ../setup/config_data.inc:970
-#: ../setup/config_data.inc:1118 ../setup/config_data.inc:1153
-#: ../setup/config_data.inc:1160 ../setup/config_data.inc:1166
-#: ../setup/config_data.inc:1172 ../setup/config_data.inc:1383
-#: ../setup/config_data.inc:1389 ../setup/config_data.inc:1396
-#: ../setup/config_data.inc:1402 ../setup/config_data.inc:1444
-#: ../setup/config_data.inc:1451 ../setup/config_data.inc:1475
-#: ../setup/config_data.inc:1489 ../setup/config_data.inc:1504
-#: ../setup/config_data.inc:1510 ../setup/config_data.inc:1516
-#: ../setup/config_data.inc:1584 ../setup/config_data.inc:1585
-#: ../setup/config_data.inc:1645 ../setup/config_data.inc:1650
-#: ../setup/config_data.inc:1651 ../setup/config_data.inc:1676
-#: ../setup/config_data.inc:1693
-msgid "no"
+#: ../setup/config_data.inc:477
+msgid "The JPEG file format trades off size versus quality.  Gallery can control the quality of the JPEGs that it produces when you resize, rotate or make thumbnails from JPEG images.  Higher quality images are larger in size than lower quality images.  However, in many cases there's a point at which raising the quality increases the size of the files without noticeably affecting the appearance of the image.  Setting this value to &quot;100&quot; is not recommended. If you notice that your thumbnails and resized images are larger than the originals and you don't like this, you can try lowering this value.  <b>Note</b> that changing this value will only affect images changed in the <i>future</i>."
 msgstr ""
 
-#: ../setup/config_data.inc:445
-msgid "JPEG Quality"
+#: ../setup/config_data.inc:481
+msgid "JPEG Quality for resized images"
 msgstr ""
 
-#: ../setup/config_data.inc:446
-msgid "The JPEG file format trades off size versus quality.  Gallery can control the quality of the JPEGs that it produces when you resize, rotate or make thumbnails from JPEG images.  Higher quality images are larger in size than lower quality images.  However, in many cases there's a point at which raising the quality increases the size of the files without noticeably affecting the appearance of the image.  Setting this value to &quot;100&quot; is not recommended. If you notice that your thumbnails and resized images are larger than the originals and you don't like this, you can try lowering this value.  <b>Note</b> that changing this value will only affect images changed in the <i>future</i>."
+#: ../setup/config_data.inc:491
+msgid "JPEG Quality for highlight images on the startpage"
 msgstr ""
 
-#: ../setup/config_data.inc:459
+#: ../setup/config_data.inc:501
+msgid "JPEG Quality for thumbs inside the albums"
+msgstr ""
+
+#: ../setup/config_data.inc:520
 msgid "Embedded Gallery"
 msgstr ""
 
-#: ../setup/config_data.inc:460
+#: ../setup/config_data.inc:521
 msgid "Gallery automatically detects when it is embedded within one of the supported CMS environments, however there may be some environments which have special options which need to be set.  Any options which are not automatically detected will need to be specified on this screen."
 msgstr ""
 
-#: ../setup/config_data.inc:460
+#: ../setup/config_data.inc:521
 msgid "If your ISP or CMS requires register_globals to be enabled, you may be required to enable the 'Disable register_globals check' option under the Technical tab."
 msgstr ""
 
-#: ../setup/config_data.inc:463
+#: ../setup/config_data.inc:524
 msgid "GeekLog Dir"
 msgstr ""
 
-#: ../setup/config_data.inc:465
+#: ../setup/config_data.inc:526
 msgid "If you use Geeklog, please enter the location of the GeekLog public_html directory. i.e. '/path/to/geeklog/public_html'"
 msgstr ""
 
-#: ../setup/config_data.inc:477
+#: ../setup/config_data.inc:539
 msgid "Main Gallery page"
 msgstr ""
 
-#: ../setup/config_data.inc:480
+#: ../setup/config_data.inc:542
 msgid "Show the album tree ?"
 msgstr ""
 
-#: ../setup/config_data.inc:481
+#: ../setup/config_data.inc:543
 msgid "If you turn this option on, you'll see a list of sub-albums when you're browsing the top level of your Gallery.  This will make navigating to a specific sub album much easier. You can choose whether or not you want to limit the depth of the tree to avoid severely cluttering the appearance of the top Gallery page."
 msgstr ""
 
-#: ../setup/config_data.inc:482
+#: ../setup/config_data.inc:545
 msgid "No tree"
 msgstr ""
 
-#: ../setup/config_data.inc:483
+#: ../setup/config_data.inc:546
 #, php-format
 msgid "%d sublevel"
 msgstr ""
 
-#: ../setup/config_data.inc:484 ../setup/config_data.inc:485
-#: ../setup/config_data.inc:486 ../setup/config_data.inc:487
-#: ../setup/config_data.inc:488
+#: ../setup/config_data.inc:547 ../setup/config_data.inc:548
+#: ../setup/config_data.inc:549 ../setup/config_data.inc:550
+#: ../setup/config_data.inc:551
 #, php-format
 msgid "%d sublevels"
 msgstr ""
 
-#: ../setup/config_data.inc:489
+#: ../setup/config_data.inc:552
 msgid "Complete Tree"
 msgstr ""
 
-#: ../setup/config_data.inc:493
-msgid "Replace album tree with micro thumbs"
+#: ../setup/config_data.inc:557
+msgid "Replace album tree with microthumbs"
 msgstr ""
 
-#: ../setup/config_data.inc:494
-msgid "If you have set album tree to anything but off, this will display micro thumbs of the sub albums instead of the album tree."
+#: ../setup/config_data.inc:558
+msgid "If you have set album tree to anything but off, this will display microthumbs of the sub albums instead of the album tree."
 msgstr ""
 
-#: ../setup/config_data.inc:499
+#: ../setup/config_data.inc:563
 msgid "Highlight size"
 msgstr ""
 
-#: ../setup/config_data.inc:500
+#: ../setup/config_data.inc:564
 msgid "The target size (in pixels) of thumbnails shown in the Gallery page (highlight images)."
 msgstr ""
 
-#: ../setup/config_data.inc:506
+#: ../setup/config_data.inc:570
+msgid "Highlight Ratio"
+msgstr ""
+
+#: ../setup/config_data.inc:571
+msgid "The ratio in which the highlights are made. This affects only new highlights. For existing use 'rebuild highlights'"
+msgstr ""
+
+#: ../setup/config_data.inc:572 ../setup/config_data.inc:1529
+msgid "As the original image"
+msgstr ""
+
+#: ../setup/config_data.inc:572
+msgid "Square highlight"
+msgstr ""
+
+#: ../setup/config_data.inc:576
 msgid "Show Owner"
 msgstr ""
 
-#: ../setup/config_data.inc:507
+#: ../setup/config_data.inc:577
 msgid "Show album owner's name next to each album?"
 msgstr ""
 
-#: ../setup/config_data.inc:513
+#: ../setup/config_data.inc:582
 msgid "Albums per page"
 msgstr ""
 
-#: ../setup/config_data.inc:514
+#: ../setup/config_data.inc:583
 msgid "How many albums should be displayed per Gallery page?"
 msgstr ""
 
-#: ../setup/config_data.inc:520
+#: ../setup/config_data.inc:589
 msgid "Search Engine"
 msgstr ""
 
-#: ../setup/config_data.inc:521
+#: ../setup/config_data.inc:590
 msgid "Display search engine on main Gallery page?"
 msgstr ""
 
-#: ../setup/config_data.inc:526
+#: ../setup/config_data.inc:595
 msgid "Accurate Photo Count"
 msgstr ""
 
-#: ../setup/config_data.inc:527
+#: ../setup/config_data.inc:596
 msgid "Display the album and photo count on the Gallery root page using an accurate, but incredibly slow, counting method.  This was added at the request of many users, however it is not recommended for Galleries where you will have large numbers of albums and photos.  Some examples have been shown to cause the index page to load in as long as 30 seconds with this option enabled."
 msgstr ""
 
-#: ../setup/config_data.inc:532
+#: ../setup/config_data.inc:601
 msgid "Frame around albums"
 msgstr ""
 
-#: ../setup/config_data.inc:533
+#: ../setup/config_data.inc:602
 msgid "On the main page, the image representing each album has a frame around it.  The following styles are available:"
 msgstr ""
 
-#: ../setup/config_data.inc:546
+#: ../setup/config_data.inc:614
 msgid "Optional tools"
 msgstr ""
 
-#: ../setup/config_data.inc:550 ../setup/config_data.inc:562
-#: ../setup/config_data.inc:574
+#: ../setup/config_data.inc:618
+msgid "Archives"
+msgstr ""
+
+#: ../setup/config_data.inc:623 ../setup/config_data.inc:636
+#: ../setup/config_data.inc:649 ../setup/config_data.inc:662
 #, php-format
 msgid "The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."
 msgstr ""
 
-#: ../setup/config_data.inc:586 ../setup/config_data.inc:598
+#: ../setup/config_data.inc:678
+msgid "EXIF Data"
+msgstr ""
+
+#: ../setup/config_data.inc:683 ../setup/config_data.inc:696
 #, php-format
 msgid "The filesystem path to the <b>%s</b> EXIF parser.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."
 msgstr ""
 
-#: ../setup/config_data.inc:610
+#: ../setup/config_data.inc:712
+msgid "Other"
+msgstr ""
+
+#: ../setup/config_data.inc:717
 #, php-format
 msgid "The filesystem path to the <b>jpegtran</b> utility.  E.g. %s or %s.  This is optional so if you don't have it, don't worry about it too much."
 msgstr ""
 
-#: ../setup/config_data.inc:635
+#: ../setup/config_data.inc:738
 msgid "Languages and locales"
 msgstr ""
 
-#: ../setup/config_data.inc:638
+#: ../setup/config_data.inc:741
 msgid "Default language"
 msgstr ""
 
-#: ../setup/config_data.inc:640
+#: ../setup/config_data.inc:743
 #, php-format
 msgid "This is the language you will see as %s, and what users will see if no other preference is set."
 msgstr ""
 
-#: ../setup/config_data.inc:647
+#: ../setup/config_data.inc:745
+msgid "Language given by Browser"
+msgstr ""
+
+#: ../setup/config_data.inc:750
 msgid "Multi language mode"
 msgstr ""
 
-#: ../setup/config_data.inc:648
+#: ../setup/config_data.inc:751
 msgid "Gallery has three multi language modes.  These affect the language that a user will see when visiting the site."
 msgstr ""
 
-#: ../setup/config_data.inc:651
+#: ../setup/config_data.inc:754
 msgid "Gallery is only displayed in one language"
 msgstr ""
 
-#: ../setup/config_data.inc:652
+#: ../setup/config_data.inc:755
 msgid "Gallery is displayed in the language the browser sends"
 msgstr ""
 
-#: ../setup/config_data.inc:653
+#: ../setup/config_data.inc:756
 msgid "The User can choose the language via pulldown menu or national flags."
 msgstr ""
 
-#: ../setup/config_data.inc:657
+#: ../setup/config_data.inc:760
 msgid "Available languages"
 msgstr ""
 
-#: ../setup/config_data.inc:660
+#: ../setup/config_data.inc:763
 msgid "These languages will be available as user choices in a pulldown menu or national flags, if you have choosen language Mode 3, and will be available to registered users as their default language in Mode 2 or 3."
 msgstr ""
 
-#: ../setup/config_data.inc:666
+#: ../setup/config_data.inc:769
 msgid "Show flags?"
 msgstr ""
 
-#: ../setup/config_data.inc:668
+#: ../setup/config_data.inc:771
 msgid "In Mode 3 you can choose to display national flags instead of a small pulldown menu for the available languages."
 msgstr ""
 
-#: ../setup/config_data.inc:674
+#: ../setup/config_data.inc:777
 msgid "Format for date strings."
 msgstr ""
 
-#: ../setup/config_data.inc:675 ../setup/config_data.inc:685
+#: ../setup/config_data.inc:778 ../setup/config_data.inc:788
 #, php-format
 msgid "This format string will be used to display %s in %s.  It is recommended to use %s which will change format depending on language choice.  However, if you wish to change this string, please look at the %sPHP documentation%s."
 msgstr ""
 
-#: ../setup/config_data.inc:676
+#: ../setup/config_data.inc:779
 msgid "date without time"
 msgstr ""
 
-#: ../setup/config_data.inc:677 ../setup/config_data.inc:687
+#: ../setup/config_data.inc:780 ../setup/config_data.inc:790
 msgid "http://www.php.net/manual/en/function.strftime.php"
 msgstr ""
 
-#: ../setup/config_data.inc:678
+#: ../setup/config_data.inc:781
 #, php-format
 msgid "For example, %s will display date like this: %s."
 msgstr ""
 
-#: ../setup/config_data.inc:684
+#: ../setup/config_data.inc:787
 msgid "Format for date/time strings."
 msgstr ""
 
-#: ../setup/config_data.inc:686
+#: ../setup/config_data.inc:789
 msgid "date with time"
 msgstr ""
 
-#: ../setup/config_data.inc:688
+#: ../setup/config_data.inc:791
 #, php-format
 msgid "For example, %s will display date and time like this: %s."
 msgstr ""
 
-#: ../setup/config_data.inc:707
+#: ../setup/config_data.inc:808
 msgid "Email and Registration"
 msgstr ""
 
-#: ../setup/config_data.inc:708
+#: ../setup/config_data.inc:809
 #, php-format
 msgid "If you are having problems with email, please run the %s diagnostic."
 msgstr ""
 
-#: ../setup/config_data.inc:709 ../setup/diagnostics.php:90
+#: ../setup/config_data.inc:810 ../setup/diagnostics.php:90
 msgid "Check Email"
 msgstr ""
 
-#: ../setup/config_data.inc:712
+#: ../setup/config_data.inc:813
 msgid "Enable email"
 msgstr ""
 
-#: ../setup/config_data.inc:714
+#: ../setup/config_data.inc:815
 #, php-format
 msgid "Turns email on for the whole gallery.  If you set this to %s then none of the rest of this section will apply."
 msgstr ""
 
-#: ../setup/config_data.inc:716
+#: ../setup/config_data.inc:817
 msgid "If you enable these settings you give your users the opportunity to let Gallery send them their lost password via email."
 msgstr ""
 
-#: ../setup/config_data.inc:717
+#: ../setup/config_data.inc:818
 msgid "You need to enable this setting if you want to enable Self Registration."
 msgstr ""
 
-#: ../setup/config_data.inc:722
+#: ../setup/config_data.inc:826
 msgid "Admin email address"
 msgstr ""
 
-#: ../setup/config_data.inc:723
+#: ../setup/config_data.inc:827
 msgid "Set this value to a valid working email address to receive email notices upon certain user actions and also so that users know whom to reach in case of problems. You may specify more than one address by separating them with commas."
 msgstr ""
 
-#: ../setup/config_data.inc:731
+#: ../setup/config_data.inc:834
 msgid "Sender email address"
 msgstr ""
 
-#: ../setup/config_data.inc:732
+#: ../setup/config_data.inc:835
 msgid "Set this value to a valid working email address.  Emails that are automatically sent by Gallery will use this as a return address.  You should monitor this email address for bounce messages and replies from recipients."
 msgstr ""
 
-#: ../setup/config_data.inc:740
+#: ../setup/config_data.inc:842
 msgid "Email subject prefix"
 msgstr ""
 
-#: ../setup/config_data.inc:741
+#: ../setup/config_data.inc:843
 msgid "All Gallery emails will have this as the first part of their subject."
 msgstr ""
 
-#: ../setup/config_data.inc:749
+#: ../setup/config_data.inc:849
 msgid "Welcome email message text"
 msgstr ""
 
-#: ../setup/config_data.inc:756
+#: ../setup/config_data.inc:857
 msgid "Allow visitors to self register."
 msgstr ""
 
-#: ../setup/config_data.inc:757
+#: ../setup/config_data.inc:858
 msgid "Enabling this will allow visitors to your site to create their own login accounts."
 msgstr ""
 
-#: ../setup/config_data.inc:758 ../setup/config_data.inc:1443
+#: ../setup/config_data.inc:859 ../setup/config_data.inc:1664
 msgid "This option requires the Email feature to be enabled."
 msgstr ""
 
-#: ../setup/config_data.inc:761
+#: ../setup/config_data.inc:865
 msgid "Email"
 msgstr ""
 
-#: ../setup/config_data.inc:764
+#: ../setup/config_data.inc:868
 msgid "Self registered users can create albums."
 msgstr ""
 
-#: ../setup/config_data.inc:765
+#: ../setup/config_data.inc:869
 msgid "Enabling this will allow self registered users to create their own albums as soon as they register.  Not having this enabled means you will have to give them permission manually before they can create or alter any contents of the Gallery.  This setting is ignored if self-registration is disabled."
 msgstr ""
 
-#: ../setup/config_data.inc:770
+#: ../setup/config_data.inc:876
 msgid "Enable bulk account creation"
 msgstr ""
 
-#: ../setup/config_data.inc:771
+#: ../setup/config_data.inc:877
 msgid "This option allows you to create many new user accounts at one time by creating a file of new users."
 msgstr ""
 
-#: ../setup/config_data.inc:777
+#: ../setup/config_data.inc:885
 msgid "This allows the &quot;admin&quot; account to get email whenever a comment is added to any album"
 msgstr ""
 
-#: ../setup/config_data.inc:778
+#: ../setup/config_data.inc:886
 msgid "Admin comment email"
 msgstr ""
 
-#: ../setup/config_data.inc:783
+#: ../setup/config_data.inc:894
 msgid "This allows the &quot;admin&quot; account to get email whenever a change is made to any album"
 msgstr ""
 
-#: ../setup/config_data.inc:784
+#: ../setup/config_data.inc:895
 msgid "Admin Other Changes email"
 msgstr ""
 
-#: ../setup/config_data.inc:790
+#: ../setup/config_data.inc:903
 msgid "Admin notification of email activity"
 msgstr ""
 
-#: ../setup/config_data.inc:791
+#: ../setup/config_data.inc:904
 msgid "You can keep a record of every email that is sent by Gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:793
+#: ../setup/config_data.inc:906
 msgid "Send summary email"
 msgstr ""
 
-#: ../setup/config_data.inc:794
+#: ../setup/config_data.inc:907
 msgid "Log to a file"
 msgstr ""
 
-#: ../setup/config_data.inc:795
+#: ../setup/config_data.inc:908
 msgid "Send duplicate email"
 msgstr ""
 
-#: ../setup/config_data.inc:800
+#: ../setup/config_data.inc:914
 msgid "Use non-local SMTP server."
 msgstr ""
 
-#: ../setup/config_data.inc:801
+#: ../setup/config_data.inc:915
 msgid "Use a smtp server running on a different machine (ie: Your ISPs mail server) to process outgoing gallery email."
 msgstr ""
 
-#: ../setup/config_data.inc:808
+#: ../setup/config_data.inc:924
 msgid "SMTP Server"
 msgstr ""
 
-#: ../setup/config_data.inc:809
+#: ../setup/config_data.inc:925
 msgid "The name or IP address of the SMTP Server you want to use."
 msgstr ""
 
-#: ../setup/config_data.inc:817
+#: ../setup/config_data.inc:932
 msgid "Sender hostname"
 msgstr ""
 
-#: ../setup/config_data.inc:818
+#: ../setup/config_data.inc:933
 msgid "The full hostname of the server you are sending the mail from (The Server where your Gallery is installed on). If your Server is behind a NAT, this would be the DNS name of your router."
 msgstr ""
 
-#: ../setup/config_data.inc:825
+#: ../setup/config_data.inc:940
 msgid "SMTP Port"
 msgstr ""
 
-#: ../setup/config_data.inc:826
+#: ../setup/config_data.inc:941
 msgid "The port on the SMTP server you are connecting to."
 msgstr ""
 
-#: ../setup/config_data.inc:834
+#: ../setup/config_data.inc:948
 msgid "SMTP account name"
 msgstr ""
 
-#: ../setup/config_data.inc:835
+#: ../setup/config_data.inc:949
 msgid "If your provide requires a username for outgoing email, use it here, otherwise leave blank."
 msgstr ""
 
-#: ../setup/config_data.inc:843
+#: ../setup/config_data.inc:956
 msgid "SMTP password"
 msgstr ""
 
-#: ../setup/config_data.inc:844
+#: ../setup/config_data.inc:957
 msgid "Password for sending email through smtp server. NOTE: This password is stored in cleartext in config.php. Make sure that permissions are set to keep others from getting at it!"
 msgstr ""
 
-#: ../setup/config_data.inc:859
+#: ../setup/config_data.inc:971
 msgid "Gallery wide slideshow"
 msgstr ""
 
-#: ../setup/config_data.inc:860
+#: ../setup/config_data.inc:972
 msgid "Adds a slide show link on the main page of the gallery.   Note for large galleries this may run very slowly and use a lot of system resources."
 msgstr ""
 
-#: ../setup/config_data.inc:861 ../setup/config_data.inc:1623
+#: ../setup/config_data.inc:973 ../setup/config_data.inc:1876
 msgid "These settings do not apply to the low tech slideshow."
 msgstr ""
 
-#: ../setup/config_data.inc:864
+#: ../setup/config_data.inc:976
 msgid "Slideshow preferences"
 msgstr ""
 
-#: ../setup/config_data.inc:866 ../setup/config_data.inc:874
-#: ../setup/config_data.inc:918 ../setup/config_data.inc:928
-#: ../setup/config_data.inc:1033 ../setup/config_data.inc:1044
-#: ../setup/config_data.inc:1055 ../setup/config_data.inc:1066
-#: ../setup/config_data.inc:1077 ../setup/config_data.inc:1088
-#: ../setup/config_data.inc:1628 ../setup/config_data.inc:1636
+#: ../setup/config_data.inc:978 ../setup/config_data.inc:986
+#: ../setup/config_data.inc:1039 ../setup/config_data.inc:1049
+#: ../setup/config_data.inc:1169 ../setup/config_data.inc:1183
+#: ../setup/config_data.inc:1197 ../setup/config_data.inc:1211
+#: ../setup/config_data.inc:1225 ../setup/config_data.inc:1239
+#: ../setup/config_data.inc:1563 ../setup/config_data.inc:1881
+#: ../setup/config_data.inc:1889
 msgid "Off"
 msgstr ""
 
-#: ../setup/config_data.inc:867 ../setup/config_data.inc:1629
+#: ../setup/config_data.inc:979 ../setup/config_data.inc:1882
 msgid "No slideshow link will appear."
 msgstr ""
 
-#: ../setup/config_data.inc:868 ../setup/config_data.inc:875
-#: ../setup/config_data.inc:1630 ../setup/config_data.inc:1637
+#: ../setup/config_data.inc:980 ../setup/config_data.inc:987
+#: ../setup/config_data.inc:1883 ../setup/config_data.inc:1890
 msgid "Ordered"
 msgstr ""
 
-#: ../setup/config_data.inc:869 ../setup/config_data.inc:1631
+#: ../setup/config_data.inc:981 ../setup/config_data.inc:1884
 msgid "Images will display in the same order as they appear in the Gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:870 ../setup/config_data.inc:876
-#: ../setup/config_data.inc:1632 ../setup/config_data.inc:1638
+#: ../setup/config_data.inc:982 ../setup/config_data.inc:988
+#: ../setup/config_data.inc:1885 ../setup/config_data.inc:1891
 msgid "Random"
 msgstr ""
 
-#: ../setup/config_data.inc:871 ../setup/config_data.inc:1633
+#: ../setup/config_data.inc:983 ../setup/config_data.inc:1886
 msgid "Images will appear in a random order."
 msgstr ""
 
-#: ../setup/config_data.inc:881 ../setup/config_data.inc:1655
+#: ../setup/config_data.inc:993 ../setup/config_data.inc:1914
 msgid "Slideshow length"
 msgstr ""
 
-#: ../setup/config_data.inc:882 ../setup/config_data.inc:1656
+#: ../setup/config_data.inc:994 ../setup/config_data.inc:1915
 msgid "Number of images to display in slideshow.  Set to 0 or blank to display all images.  Set to a number if slideshow is random and you want to display only a selection of the images."
 msgstr ""
 
-#: ../setup/config_data.inc:889 ../setup/config_data.inc:1649
+#: ../setup/config_data.inc:1001 ../setup/config_data.inc:1905
 msgid "Allow slideshow to loop"
 msgstr ""
 
-#: ../setup/config_data.inc:890
+#: ../setup/config_data.inc:1002
 #, php-format
 msgid "This option will allow visitors to have your slideshows repeat until they close the window or go to another page.  Set it to %s if you want to save bandwidth."
 msgstr ""
 
-#: ../setup/config_data.inc:895
+#: ../setup/config_data.inc:1010
 msgid "Slideshow Mode"
 msgstr ""
 
-#: ../setup/config_data.inc:896
+#: ../setup/config_data.inc:1011
 msgid "This allows you to set the default mode for the slideshow.  &quot;Java Applet&quot; requires that the user has the Java Runtime Environment installed in their browser, but allows for fullscreen viewing. &quot;JavaScript&quot; is supported by all modern browsers without extra plugins, but is more limited than the Java Applet."
 msgstr ""
 
-#: ../setup/config_data.inc:897
+#: ../setup/config_data.inc:1013
 msgid "Java Applet"
 msgstr ""
 
-#: ../setup/config_data.inc:897
+#: ../setup/config_data.inc:1014
 msgid "JavaScript"
 msgstr ""
 
-#: ../setup/config_data.inc:907
+#: ../setup/config_data.inc:1025
 msgid "Comments"
 msgstr ""
 
-#: ../setup/config_data.inc:910
+#: ../setup/config_data.inc:1028
 msgid "Enable commenting"
 msgstr ""
 
-#: ../setup/config_data.inc:911
+#: ../setup/config_data.inc:1029
 msgid "This option will enable or disable the possibility for your users to make comment.  If you set this to &quot;no&quot; all comment functionality is disabled."
 msgstr ""
 
-#: ../setup/config_data.inc:916
+#: ../setup/config_data.inc:1037
 msgid "Indicate if there are comments available"
 msgstr ""
 
-#: ../setup/config_data.inc:919
+#: ../setup/config_data.inc:1040
 msgid "No indication that an item has comments."
 msgstr ""
 
-#: ../setup/config_data.inc:920 ../setup/config_data.inc:929
+#: ../setup/config_data.inc:1041 ../setup/config_data.inc:1050
 msgid "Photos"
 msgstr ""
 
-#: ../setup/config_data.inc:921
+#: ../setup/config_data.inc:1042
 msgid "Images that have comments will be marked."
 msgstr ""
 
-#: ../setup/config_data.inc:922 ../setup/config_data.inc:930
+#: ../setup/config_data.inc:1043 ../setup/config_data.inc:1051
 msgid "Albums"
 msgstr ""
 
-#: ../setup/config_data.inc:923
+#: ../setup/config_data.inc:1044
 msgid "Albums and sub-albums that have comments will be marked."
 msgstr ""
 
-#: ../setup/config_data.inc:924 ../setup/config_data.inc:931
-#: ../setup/config_data.inc:1717
+#: ../setup/config_data.inc:1045 ../setup/config_data.inc:1052
+#: ../setup/config_data.inc:1990
 msgid "Both"
 msgstr ""
 
-#: ../setup/config_data.inc:925
+#: ../setup/config_data.inc:1046
 msgid "Images and albums that have comments will be marked."
 msgstr ""
 
-#: ../setup/config_data.inc:936
+#: ../setup/config_data.inc:1057
 msgid "Display date of last comment?"
 msgstr ""
 
-#: ../setup/config_data.inc:937
+#: ../setup/config_data.inc:1058
 #, php-format
 msgid "If an item has comments, display date of last comment, rather than a %s."
 msgstr ""
 
-#: ../setup/config_data.inc:942
+#: ../setup/config_data.inc:1066
 msgid "Anonymous comments from known users?"
 msgstr ""
 
-#: ../setup/config_data.inc:943
+#: ../setup/config_data.inc:1067
 #, php-format
 msgid "When logged in, comments will automatically use format described below, unless this is set to %s."
 msgstr ""
 
-#: ../setup/config_data.inc:949
+#: ../setup/config_data.inc:1076
 msgid "Format for commenter names"
 msgstr ""
 
-#: ../setup/config_data.inc:950
+#: ../setup/config_data.inc:1077
 msgid "Commenter names of logged in users can be displayed in a variety of different ways"
 msgstr ""
 
-#: ../setup/config_data.inc:955
+#: ../setup/config_data.inc:1082
 msgid "Add comments inside the photo page"
 msgstr ""
 
-#: ../setup/config_data.inc:956
+#: ../setup/config_data.inc:1083
 msgid "Do you want to have the possibility to add comments inside the view photo page, or do you prefer a link to a popup"
 msgstr ""
 
-#: ../setup/config_data.inc:957
+#: ../setup/config_data.inc:1085
 msgid "Popup"
 msgstr ""
 
-#: ../setup/config_data.inc:957
+#: ../setup/config_data.inc:1086
 msgid "Inside"
 msgstr ""
 
-#: ../setup/config_data.inc:961
+#: ../setup/config_data.inc:1091
 msgid "Maximum length of comments"
 msgstr ""
 
-#: ../setup/config_data.inc:962
+#: ../setup/config_data.inc:1092
 msgid "Enter a suitable value for the maximum length of comments to prevent abuse. Gallery limits comments to no more than 1000 characters.  This value will be used if less than 1000."
 msgstr ""
 
-#: ../setup/config_data.inc:968
+#: ../setup/config_data.inc:1098
 msgid "Can every permitted user see a comments overview"
 msgstr ""
 
-#: ../setup/config_data.inc:969
+#: ../setup/config_data.inc:1099
 msgid "Do you want to allow every user who is allowed to view comments (set in permission) to see a complete overview of all comments of an Album? Set this to &quot;no&quot; if only admin and owners can use this feature."
 msgstr ""
 
-#: ../setup/config_data.inc:980
+#: ../setup/config_data.inc:1113
 msgid "Watermarking"
 msgstr ""
 
-#: ../setup/config_data.inc:982
+#: ../setup/config_data.inc:1115
 msgid "Choose wether you want to enable or disable watermarking. And set the defaults"
 msgstr ""
 
-#: ../setup/config_data.inc:983
+#: ../setup/config_data.inc:1116
 msgid "Watermarking is not possible in this installation !"
 msgstr ""
 
-#: ../setup/config_data.inc:986
+#: ../setup/config_data.inc:1119
 msgid "Watermark directory"
 msgstr ""
 
-#: ../setup/config_data.inc:987
+#: ../setup/config_data.inc:1120
 #, php-format
 msgid "The full path on physical disk to the directory where your watermark images will be stored.  This directory may contain .png, .tif, and .gif images used to overlay visible watermarks on photos. These formats are supported because they may contain transparency or alpha channels.  <b>Leaving this blank will disable watermarking support.</b> Note that this directory needs to have read access by the user who is running the web server (in your case this user is %s)."
 msgstr ""
 
-#: ../setup/config_data.inc:997
+#: ../setup/config_data.inc:1130
 msgid "Which Imagetype is watermarked"
 msgstr ""
 
-#: ../setup/config_data.inc:998
+#: ../setup/config_data.inc:1131
 msgid "Here you can choose which of the images should be watermarked per default."
 msgstr ""
 
-#: ../setup/config_data.inc:1003
+#: ../setup/config_data.inc:1136
 msgid "Watermark both resized and full images"
 msgstr ""
 
-#: ../setup/config_data.inc:1004
+#: ../setup/config_data.inc:1137
 msgid "Watermark resized image only"
 msgstr ""
 
-#: ../setup/config_data.inc:1005
+#: ../setup/config_data.inc:1138
 msgid "Watermark full sized image only"
 msgstr ""
 
-#: ../setup/config_data.inc:1015
+#: ../setup/config_data.inc:1149
 msgid "Statistics"
 msgstr ""
 
-#: ../setup/config_data.inc:1016
+#: ../setup/config_data.inc:1150
 msgid "Caching improves performance for a large gallery at the cost of potentially displaying photos that are out of order or with out of date rating information."
 msgstr ""
 
-#: ../setup/config_data.inc:1017
+#: ../setup/config_data.inc:1151
 msgid "There's a different cache for each stats type supported with the exception of random."
 msgstr ""
 
-#: ../setup/config_data.inc:1018
+#: ../setup/config_data.inc:1152
 msgid "The caches can be refreshed by reloading the stats page and specifying the url variable 'refreshcache'."
 msgstr ""
 
-#: ../setup/config_data.inc:1019
+#: ../setup/config_data.inc:1153
 msgid "Caches will also refresh themselves after they have expired."
 msgstr ""
 
-#: ../setup/config_data.inc:1020
+#: ../setup/config_data.inc:1154
 msgid "The expire time in seconds is specified for each cache below."
 msgstr ""
 
-#: ../setup/config_data.inc:1021
+#: ../setup/config_data.inc:1155
 msgid "If the expire time is set to -1 then the cache will not auto refresh."
 msgstr ""
 
-#: ../setup/config_data.inc:1025
+#: ../setup/config_data.inc:1159
 msgid "Available Stats for 'normal' users"
 msgstr ""
 
-#: ../setup/config_data.inc:1026
+#: ../setup/config_data.inc:1160
 msgid "Gallery can give a lot of statistics for admins, however you can enable some of them to normal users."
 msgstr ""
 
-#: ../setup/config_data.inc:1027
+#: ../setup/config_data.inc:1161
 #, php-format
 msgid "For every selected item Gallery will create a link on the mainpage. The stats are based on the defaults defined in %s."
 msgstr ""
 
-#: ../setup/config_data.inc:1032
+#: ../setup/config_data.inc:1166
 msgid "View cache"
 msgstr ""
 
-#: ../setup/config_data.inc:1033 ../setup/config_data.inc:1044
-#: ../setup/config_data.inc:1055 ../setup/config_data.inc:1066
-#: ../setup/config_data.inc:1077 ../setup/config_data.inc:1088
+#: ../setup/config_data.inc:1168 ../setup/config_data.inc:1182
+#: ../setup/config_data.inc:1196 ../setup/config_data.inc:1210
+#: ../setup/config_data.inc:1224 ../setup/config_data.inc:1238
 msgid "On"
 msgstr ""
 
-#: ../setup/config_data.inc:1037
+#: ../setup/config_data.inc:1174
 msgid "View cache expiration"
 msgstr ""
 
-#: ../setup/config_data.inc:1043
+#: ../setup/config_data.inc:1180
 msgid "Comment cache"
 msgstr ""
 
-#: ../setup/config_data.inc:1048
+#: ../setup/config_data.inc:1188
 msgid "Comment cache expiration"
 msgstr ""
 
-#: ../setup/config_data.inc:1054
+#: ../setup/config_data.inc:1194
 msgid "Date cache"
 msgstr ""
 
-#: ../setup/config_data.inc:1059
+#: ../setup/config_data.inc:1202
 msgid "Date cache expiration"
 msgstr ""
 
-#: ../setup/config_data.inc:1065
+#: ../setup/config_data.inc:1208
 msgid "Vote cache"
 msgstr ""
 
-#: ../setup/config_data.inc:1070
+#: ../setup/config_data.inc:1216
 msgid "Vote cache expiration"
 msgstr ""
 
-#: ../setup/config_data.inc:1076
+#: ../setup/config_data.inc:1222
 msgid "Rating cache"
 msgstr ""
 
-#: ../setup/config_data.inc:1081
+#: ../setup/config_data.inc:1230
 msgid "Rating cache expiration"
 msgstr ""
 
-#: ../setup/config_data.inc:1087
+#: ../setup/config_data.inc:1236
 msgid "Capturedate cache"
 msgstr ""
 
-#: ../setup/config_data.inc:1092
+#: ../setup/config_data.inc:1244
 msgid "Capturedate cache expiration"
 msgstr ""
 
-#: ../setup/config_data.inc:1104
+#: ../setup/config_data.inc:1256
 msgid "Technical"
 msgstr ""
 
-#: ../setup/config_data.inc:1105
+#: ../setup/config_data.inc:1257
 msgid "The settings in this section are intended for advanced users only."
 msgstr ""
 
-#: ../setup/config_data.inc:1107
+#: ../setup/config_data.inc:1259
 msgid "Be aware that settings changed on this tab may have severe performance or security consequences and do so at your own risk."
 msgstr ""
 
-#: ../setup/config_data.inc:1110
+#: ../setup/config_data.inc:1263
 msgid "Debug Level"
 msgstr ""
 
-#: ../setup/config_data.inc:1111
+#: ../setup/config_data.inc:1264
 msgid "Turn debug on so that you can diagnose problems?"
 msgstr ""
 
-#: ../setup/config_data.inc:1111
+#: ../setup/config_data.inc:1264
 msgid "Note: Dont leave this option on in production systems! Else you might show users more information about your Gallery and system than you want!"
 msgstr ""
 
-#: ../setup/config_data.inc:1112
+#: ../setup/config_data.inc:1266
 msgid "No Debug"
 msgstr ""
 
-#: ../setup/config_data.inc:1112
+#: ../setup/config_data.inc:1267
 msgid "Normal"
 msgstr ""
 
-#: ../setup/config_data.inc:1112
+#: ../setup/config_data.inc:1268
 msgid "High (former Debug 'on')"
 msgstr ""
 
-#: ../setup/config_data.inc:1116
+#: ../setup/config_data.inc:1269
+msgid "Paranoid"
+msgstr ""
+
+#: ../setup/config_data.inc:1273
 msgid "Disable register_globals check"
 msgstr ""
 
-#: ../setup/config_data.inc:1117
+#: ../setup/config_data.inc:1274
 #, php-format
 msgid "<b>Be aware that changing this setting potentially decreases the security of your Gallery, and we may or may not support you if you encounter issues that don't occur when this is turned off.</b><br><br>Enabling this causes %s to ignore register_globals being turned on.  %s normally tries to unset all variables created by register_globals to help enforce security.  If a script that you run requires register_globals to be on, and will not cooperate with %s, set this to &quot;yes&quot;."
 msgstr ""
 
-#: ../setup/config_data.inc:1122
+#: ../setup/config_data.inc:1282
 msgid "Time Limit"
 msgstr ""
 
-#: ../setup/config_data.inc:1123
+#: ../setup/config_data.inc:1283
 msgid "The maximum amount of time in seconds any single operation should take.  If you find that you are getting the <b>Maximum execution time exceeded</b> error message, you can try making this a larger number.  Be warned that if you make this too large you <i>might</i> have a process that is stuck for a very long time without doing anything.  The default value is 30 which is pretty reasonable."
 msgstr ""
 
-#: ../setup/config_data.inc:1131
+#: ../setup/config_data.inc:1291
+msgid "ImageMagick high quality"
+msgstr ""
+
+#: ../setup/config_data.inc:1292
+msgid "If this setting is 'yes' and you use ImageMagick then resized Images will have a slightly(!) higher quality, but with the drawback of a higher load and a higher creation time."
+msgstr ""
+
+#: ../setup/config_data.inc:1300
 msgid "Random Block Cache Time"
 msgstr ""
 
-#: ../setup/config_data.inc:1132
+#: ../setup/config_data.inc:1301
 msgid "This is the amount of time that the Random Block will cache data about your photos and albums, speeding up requests for random photos.  The more often that your albums are modified, the lower you should set this value to ensure that new photos are chosen quickly, and to prevent attempts to retrieve photos which may have been deleted. The cache is automatically regenerated when a user views the random block after the time limit has expired."
 msgstr ""
 
-#: ../setup/config_data.inc:1135
+#: ../setup/config_data.inc:1304
 msgid "24 Hours"
 msgstr ""
 
-#: ../setup/config_data.inc:1136
+#: ../setup/config_data.inc:1305
 msgid "12 Hours"
 msgstr ""
 
-#: ../setup/config_data.inc:1137
+#: ../setup/config_data.inc:1306
 msgid "6 Hours"
 msgstr ""
 
-#: ../setup/config_data.inc:1138
+#: ../setup/config_data.inc:1307
 msgid "1 Hour"
 msgstr ""
 
-#: ../setup/config_data.inc:1139
+#: ../setup/config_data.inc:1308
 msgid "30 Minutes"
 msgstr ""
 
-#: ../setup/config_data.inc:1143
+#: ../setup/config_data.inc:1312
 msgid "Random Block Retrieval Attempts"
 msgstr ""
 
-#: ../setup/config_data.inc:1144
+#: ../setup/config_data.inc:1313
 msgid "This variable controls the number of times that the random block will attempt to retrieve an image from Gallery.  The larger the value, the less likely a 'No Photo Chosen' will be returned, but it increases the time it takes for the Random Block to load."
 msgstr ""
 
-#: ../setup/config_data.inc:1151
+#: ../setup/config_data.inc:1320
 msgid "Cache EXIF data"
 msgstr ""
 
-#: ../setup/config_data.inc:1152
+#: ../setup/config_data.inc:1321
 msgid "The EXIF data extracted from JPEG files can be cached after it is read the first time.  The tradeoff is that if you cache this data it's possible for your album data files to get quite large which may slow down viewing your albums.  But, if you don't cache this data then it needs to be retrieved every time any user looks at the properties of a photo which can also be slow."
 msgstr ""
 
-#: ../setup/config_data.inc:1158
+#: ../setup/config_data.inc:1330
 msgid "Developer Mode"
 msgstr ""
 
-#: ../setup/config_data.inc:1159
+#: ../setup/config_data.inc:1331
 msgid "Turn on developer mode to see all PHP warnings and notices.  Enabling this is not recommended for users that aren't familiar with PHP."
 msgstr ""
 
-#: ../setup/config_data.inc:1164
+#: ../setup/config_data.inc:1339
 msgid "Use Syslog"
 msgstr ""
 
-#: ../setup/config_data.inc:1165
+#: ../setup/config_data.inc:1340
 msgid "Report user login, logout, and serious errors via syslog (UNIX) or System Event Manager (Windows)"
 msgstr ""
 
-#: ../setup/config_data.inc:1170
+#: ../setup/config_data.inc:1348
 #, php-format
 msgid "Use %s"
 msgstr ""
 
-#: ../setup/config_data.inc:1171
+#: ../setup/config_data.inc:1349
 msgid "Gallery uses a locking system called flock() for added protection against data corruption.  This is not supported on all platforms.  If you're seeing errors like <i>Could not acquire lock</i> then set this value to <i>no</i>."
 msgstr ""
 
-#: ../setup/config_data.inc:1175
+#: ../setup/config_data.inc:1357
 msgid "Status code"
 msgstr ""
 
-#: ../setup/config_data.inc:1176
+#: ../setup/config_data.inc:1358
 msgid "The status code Gallery expects to see after a successful <i>exec()</i> call.  Gallery will try to figure this out on its own so you probably won't need to change this value unless you have problems."
 msgstr ""
 
-#: ../setup/config_data.inc:1182
+#: ../setup/config_data.inc:1364
 msgid "Session variable"
 msgstr ""
 
-#: ../setup/config_data.inc:1183
+#: ../setup/config_data.inc:1365
 msgid "This is the session variable used to contain all Gallery session information.  Change this if there is a conflict between Gallery and another PHP app on your website."
 msgstr ""
 
-#: ../setup/config_data.inc:1195
+#: ../setup/config_data.inc:1377
 msgid "RSS Publisher"
 msgstr ""
 
-#: ../setup/config_data.inc:1196
+#: ../setup/config_data.inc:1378
 msgid "Options for the Gallery RSS Publisher"
 msgstr ""
 
-#: ../setup/config_data.inc:1199
+#: ../setup/config_data.inc:1381
 msgid "Enable RSS Generator"
 msgstr ""
 
-#: ../setup/config_data.inc:1200
+#: ../setup/config_data.inc:1382
 msgid "Enable or Disable the Gallery RSS Generator"
 msgstr ""
 
-#: ../setup/config_data.inc:1202 ../setup/config_data.inc:1243
-#: ../setup/config_data.inc:1251 ../setup/config_data.inc:1259
-msgid "Yes"
-msgstr ""
-
-#: ../setup/config_data.inc:1203 ../setup/config_data.inc:1244
-#: ../setup/config_data.inc:1252 ../setup/config_data.inc:1260
-msgid "No"
-msgstr ""
-
-#: ../setup/config_data.inc:1207
+#: ../setup/config_data.inc:1389
 msgid "RSS Content"
 msgstr ""
 
-#: ../setup/config_data.inc:1208
+#: ../setup/config_data.inc:1390
 msgid "Specifies which information is to be included in your RSS feed."
 msgstr ""
 
-#: ../setup/config_data.inc:1210
+#: ../setup/config_data.inc:1392
 msgid "Basic information only"
 msgstr ""
 
-#: ../setup/config_data.inc:1211
+#: ../setup/config_data.inc:1393
 msgid "Album highlight"
 msgstr ""
 
-#: ../setup/config_data.inc:1212
+#: ../setup/config_data.inc:1394
 msgid "All image thumbnails"
 msgstr ""
 
-#: ../setup/config_data.inc:1213
+#: ../setup/config_data.inc:1395
 msgid "All image thumbnails and captions"
 msgstr ""
 
-#: ../setup/config_data.inc:1217
+#: ../setup/config_data.inc:1399
 msgid "RSS Highlight"
 msgstr ""
 
-#: ../setup/config_data.inc:1218
+#: ../setup/config_data.inc:1400
 msgid "Specify which album will be displayed as the icon for all feed entries: An empty field means that there will be no default highlight.  '*' uses the most recently update album's highlight.  Specifying an album name will use that album's highlight image."
 msgstr ""
 
-#: ../setup/config_data.inc:1224
+#: ../setup/config_data.inc:1406
 msgid "Maximum Albums Returned"
 msgstr ""
 
-#: ../setup/config_data.inc:1225
+#: ../setup/config_data.inc:1407
 msgid "This value is the maximum number of albums that the RSS feed will display to the user. Only the most recently modified albums are chosen for this value."
 msgstr ""
 
-#: ../setup/config_data.inc:1232
+#: ../setup/config_data.inc:1414
 msgid "Visible Albums Only"
 msgstr ""
 
-#: ../setup/config_data.inc:1233
+#: ../setup/config_data.inc:1415
 msgid "Specifies whether hidden albums should be included in the RSS feed.  This is not advised unless you are the only Gallery user.  Other users could become very upset if their hidden images become displayed to the public."
 msgstr ""
 
-#: ../setup/config_data.inc:1235
+#: ../setup/config_data.inc:1417
 msgid "Display Visible Albums Only"
 msgstr ""
 
-#: ../setup/config_data.inc:1236
+#: ../setup/config_data.inc:1418
 msgid "Display Hidden Albums"
 msgstr ""
 
-#: ../setup/config_data.inc:1240
+#: ../setup/config_data.inc:1422
 msgid "Use dc:date"
 msgstr ""
 
-#: ../setup/config_data.inc:1241
+#: ../setup/config_data.inc:1423
 msgid "(Advanced) If users complain about their RSS readers being unable to process the RSS Feed, try enabling this option.  Including dc:date is not RSS 2.0 compliant, but some feed readers require it anyway. Turning this on will cause your feed to not validate as RSS 2.0."
 msgstr ""
 
-#: ../setup/config_data.inc:1248
+#: ../setup/config_data.inc:1430
 msgid "Use Big Photo"
 msgstr ""
 
-#: ../setup/config_data.inc:1249
+#: ../setup/config_data.inc:1431
 msgid "(Advanced) If users complain about their RSS readers corrupting the channel thumbnail, you can turn this feature on.  Turning this on will cause your feed to not validate as valid RSS 2.0."
 msgstr ""
 
-#: ../setup/config_data.inc:1256
+#: ../setup/config_data.inc:1438
 msgid "Use Photo Tag"
 msgstr ""
 
-#: ../setup/config_data.inc:1257
+#: ../setup/config_data.inc:1439
 msgid "(Advanced) Turning this off will cause two RSS extensions which allow for images representing items to be removed from the feed.  Leaving this enabled should cause no problems - disabling it is a personal preference."
 msgstr ""
 
-#: ../setup/config_data.inc:1285
+#: ../setup/config_data.inc:1466
 msgid "Layout"
 msgstr ""
 
-#: ../setup/config_data.inc:1288
+#: ../setup/config_data.inc:1469
 msgid "Default Columns"
 msgstr ""
 
-#: ../setup/config_data.inc:1289
+#: ../setup/config_data.inc:1470
 msgid "The default number of columns in an album."
 msgstr ""
 
-#: ../setup/config_data.inc:1294
+#: ../setup/config_data.inc:1475
 msgid "Default Rows"
 msgstr ""
 
-#: ../setup/config_data.inc:1295
+#: ../setup/config_data.inc:1476
 msgid "The default number of rows in an album."
 msgstr ""
 
-#: ../setup/config_data.inc:1306
+#: ../setup/config_data.inc:1487
 msgid "Appearance"
 msgstr ""
 
-#: ../setup/config_data.inc:1309
+#: ../setup/config_data.inc:1490
 msgid "Border color"
 msgstr ""
 
-#: ../setup/config_data.inc:1310
+#: ../setup/config_data.inc:1491
 #, php-format
 msgid "Default color of (image) borders. You can learn about %scolors%s here."
 msgstr ""
 
-#: ../setup/config_data.inc:1320
+#: ../setup/config_data.inc:1497
 msgid "Border width"
 msgstr ""
 
-#: ../setup/config_data.inc:1321
+#: ../setup/config_data.inc:1498
 msgid "Default width of (image) borders."
 msgstr ""
 
-#: ../setup/config_data.inc:1326
+#: ../setup/config_data.inc:1503
 msgid "Default Font"
 msgstr ""
 
-#: ../setup/config_data.inc:1327
+#: ../setup/config_data.inc:1504
 msgid "Default font face.  E.g. <i>arial</i> or <i>trebuchet</i>"
 msgstr ""
 
-#: ../setup/config_data.inc:1340
+#: ../setup/config_data.inc:1516
 msgid "Image Processing and Display"
 msgstr ""
 
-#: ../setup/config_data.inc:1343
+#: ../setup/config_data.inc:1519
 msgid "Thumbnail size"
 msgstr ""
 
-#: ../setup/config_data.inc:1344
+#: ../setup/config_data.inc:1520
 msgid "The default target size (in pixels) of album thumbnails."
 msgstr ""
 
-#: ../setup/config_data.inc:1350
+#: ../setup/config_data.inc:1526
+msgid "Thumbnail Ratio"
+msgstr ""
+
+#: ../setup/config_data.inc:1527
+msgid "The ratio in which the thumbnails are made"
+msgstr ""
+
+#: ../setup/config_data.inc:1530
+msgid "Square thumbs"
+msgstr ""
+
+#: ../setup/config_data.inc:1535
 msgid "Resized image size"
 msgstr ""
 
-#: ../setup/config_data.inc:1351
+#: ../setup/config_data.inc:1536
 msgid "When large images are added to an album, an intermediate version will automatically be generated at this size."
 msgstr ""
 
-#: ../setup/config_data.inc:1353 ../setup/config_data.inc:1369
+#: ../setup/config_data.inc:1539
 msgid "off"
 msgstr ""
 
-#: ../setup/config_data.inc:1356
+#: ../setup/config_data.inc:1550
 msgid "Resized JPEG/PNG images file size"
 msgstr ""
 
-#: ../setup/config_data.inc:1357
+#: ../setup/config_data.inc:1551
 msgid "The default target size (in kilobytes) of resized JPEG/PNG images.  Including a value may slow down file uploads, but will speed up page viewing time especially for people with dialup connections.  Set to 0 for no target size."
 msgstr ""
 
-#: ../setup/config_data.inc:1364
+#: ../setup/config_data.inc:1557
 msgid "Maximum image size"
 msgstr ""
 
-#: ../setup/config_data.inc:1365
+#: ../setup/config_data.inc:1558
 msgid "You can optionally limit the dimensions your images on upload to Gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:1366 ../setup/config_data.inc:1374
+#: ../setup/config_data.inc:1559 ../setup/config_data.inc:1578
 msgid "Warning:"
 msgstr ""
 
-#: ../setup/config_data.inc:1367
+#: ../setup/config_data.inc:1560
 msgid "Enabling this feature will leave you <b>without a full size original</b> image in your Gallery, but allows you to save limited hard drive space. Gallery will attempt to preserve JPEG comments and EXIF data for the shrunken image, but this will require either <b>ImageMagick</b> or the optional <b>jhead</b> programs (see Step 2)."
 msgstr ""
 
-#: ../setup/config_data.inc:1369
+#: ../setup/config_data.inc:1571 ../setup/config_data.inc:1572
+#: ../setup/config_data.inc:1573
 #, php-format
 msgid "%d (%d MPix)"
 msgstr ""
 
-#: ../setup/config_data.inc:1372
+#: ../setup/config_data.inc:1576
 msgid "Maximum JPEG/PNG image file size"
 msgstr ""
 
-#: ../setup/config_data.inc:1373
+#: ../setup/config_data.inc:1577
 msgid "You can optionally limit the filesize of your JPEG/PNG images on upload to Gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:1375
+#: ../setup/config_data.inc:1579
 msgid "Enabling this feature will leave you <b>without an original quality image</b> in your Gallery. Set the default target filesize (in kilobytes).  Including a value may slow down file uploads, but will speed up page viewing time especially for people with dialup connections. Set to 0 if you don't want to restrict filesize."
 msgstr ""
 
-#: ../setup/config_data.inc:1381
+#: ../setup/config_data.inc:1585
 msgid "Preserve Names"
 msgstr ""
 
-#: ../setup/config_data.inc:1382
+#: ../setup/config_data.inc:1586
 msgid "When uploading images to Gallery, should we preserve the original names?  If you select <i>no</i>, Gallery will assign a new name for each photo or movie that gets uploaded."
 msgstr ""
 
-#: ../setup/config_data.inc:1387
+#: ../setup/config_data.inc:1594
 msgid "Add to beginning"
 msgstr ""
 
-#: ../setup/config_data.inc:1388
+#: ../setup/config_data.inc:1595
 msgid "New images added to beginning rather than end of albums."
 msgstr ""
 
-#: ../setup/config_data.inc:1393
+#: ../setup/config_data.inc:1603
 msgid "Fit-to-window"
 msgstr ""
 
-#: ../setup/config_data.inc:1394
+#: ../setup/config_data.inc:1604
 msgid "When viewing photos which don't have an intermediate version, Gallery can automatically resize the image to fit the viewer's browser window (using JavaScript).  This may not work in embedded environments such as Nuke."
 msgstr ""
 
-#: ../setup/config_data.inc:1399
+#: ../setup/config_data.inc:1612
 msgid "Visitor size prefs"
 msgstr ""
 
-#: ../setup/config_data.inc:1400
+#: ../setup/config_data.inc:1613
 msgid "Offer visitors the choice of always viewing the full sized version of an image instead of the intermediate size.  This setting only lasts for the visitor's session."
 msgstr ""
 
-#: ../setup/config_data.inc:1411
+#: ../setup/config_data.inc:1626
 msgid "Options"
 msgstr ""
 
-#: ../setup/config_data.inc:1414
+#: ../setup/config_data.inc:1631
 msgid "Printing Services"
 msgstr ""
 
-#: ../setup/config_data.inc:1415
+#: ../setup/config_data.inc:1632
 msgid "Allow visitors to print photos directly from the album.  Fotoserve is based in the United Kindom and Fotokasten is a print service based in Germany so they are good for the European market. EZ Prints, PhotoWorks and Shutterfly are based in the United States. mPUSH is a service that allows you to send photos to cellular phones worldwide. All services will give a small donation to the Gallery project for every print you make. Using these services is a great way for you to help support this free software."
 msgstr ""
 
-#: ../setup/config_data.inc:1434
+#: ../setup/config_data.inc:1655
 msgid "Account for the mPUSH service"
 msgstr ""
 
-#: ../setup/config_data.inc:1435
+#: ../setup/config_data.inc:1656
 #, php-format
 msgid "If you want to use mPUSH cellular photo service you can either use your own account, or leave this to 'gallery'. Visit this link to %screate your own account%s."
 msgstr ""
 
-#: ../setup/config_data.inc:1441
+#: ../setup/config_data.inc:1662
 msgid "Enable Ecards ?"
 msgstr ""
 
-#: ../setup/config_data.inc:1442
+#: ../setup/config_data.inc:1663
 msgid "Set this to 'yes' to allow users to send a picure as eCard via eMail"
 msgstr ""
 
-#: ../setup/config_data.inc:1448
+#: ../setup/config_data.inc:1672
 msgid "Gallery Link"
 msgstr ""
 
-#: ../setup/config_data.inc:1449
+#: ../setup/config_data.inc:1673
 msgid "Display a link navigation from your album to the top level Gallery link within the album?  If you turn this feature off, the user will not be able to navigate out of the album.  This is only useful when you want to embed an album within a website and not allow users to (easily) view the other albums in the gallery."
 msgstr ""
 
-#: ../setup/config_data.inc:1454
+#: ../setup/config_data.inc:1681
 msgid "Default Album Permissions"
 msgstr ""
 
-#: ../setup/config_data.inc:1455
+#: ../setup/config_data.inc:1682
 msgid "Defines the default set of permissions for an album.  Specifically, who can see the album, and view its photos."
 msgstr ""
 
-#: ../setup/config_data.inc:1457 ../setup/config_data.inc:1545
-#: ../setup/config_data.inc:1551
+#: ../setup/config_data.inc:1684 ../setup/config_data.inc:1787
+#: ../setup/config_data.inc:1794
 msgid "Everybody"
 msgstr ""
 
-#: ../setup/config_data.inc:1458
+#: ../setup/config_data.inc:1685
 msgid "Logged-In Users"
 msgstr ""
 
-#: ../setup/config_data.inc:1459 ../setup/config_data.inc:1543
-#: ../setup/config_data.inc:1550
+#: ../setup/config_data.inc:1686 ../setup/config_data.inc:1785
+#: ../setup/config_data.inc:1793
 msgid "Nobody"
 msgstr ""
 
-#: ../setup/config_data.inc:1470
+#: ../setup/config_data.inc:1697
 msgid "Data displayed"
 msgstr ""
 
-#: ../setup/config_data.inc:1473
+#: ../setup/config_data.inc:1700
 msgid "Click counts"
 msgstr ""
 
-#: ../setup/config_data.inc:1474
+#: ../setup/config_data.inc:1701
 msgid "Display click counts within Albums?"
 msgstr ""
 
-#: ../setup/config_data.inc:1479
+#: ../setup/config_data.inc:1709
 msgid "Custom Fields"
 msgstr ""
 
-#: ../setup/config_data.inc:1481
+#: ../setup/config_data.inc:1711
 msgid "Custom fields that are available to describe each image.  They should be separated by commas.  E.g. <i>Description, Location, Film Type</i>"
 msgstr ""
 
-#: ../setup/config_data.inc:1487
+#: ../setup/config_data.inc:1717
 msgid "Display clickable image dimensions"
 msgstr ""
 
-#: ../setup/config_data.inc:1488
+#: ../setup/config_data.inc:1718
 msgid "Display clickable image dimensions beneath the thumbnails.  Will show dimensions for resized images (if any) first, then for the full image, depending on album settings user permissions.  You may click on these instead of the thumbnail to either image."
 msgstr ""
 
-#: ../setup/config_data.inc:1499
+#: ../setup/config_data.inc:1732
 msgid "Item Owner"
 msgstr ""
 
-#: ../setup/config_data.inc:1502
+#: ../setup/config_data.inc:1735
 msgid "Photo owner modification"
 msgstr ""
 
-#: ../setup/config_data.inc:1503
+#: ../setup/config_data.inc:1736
 msgid "Allow photo owners to edit and rotate/flip their own photos?"
 msgstr ""
 
-#: ../setup/config_data.inc:1508
+#: ../setup/config_data.inc:1744
 msgid "Photo owner deletion"
 msgstr ""
 
-#: ../setup/config_data.inc:1509
+#: ../setup/config_data.inc:1745
 msgid "Allow photo owners to delete their own photos?"
 msgstr ""
 
-#: ../setup/config_data.inc:1514
+#: ../setup/config_data.inc:1752
 msgid "Photo owner display"
 msgstr ""
 
-#: ../setup/config_data.inc:1515
+#: ../setup/config_data.inc:1753
 msgid "Display the name of photo owners with the caption?"
 msgstr ""
 
-#: ../setup/config_data.inc:1526
+#: ../setup/config_data.inc:1767
 msgid "Polling configuration"
 msgstr ""
 
-#: ../setup/config_data.inc:1528
+#: ../setup/config_data.inc:1769
 #, php-format
-msgid "It allows your visitors to vote for or rate the contents of an album.  You set defaults for polling here, which will apply to new albums, and to all existing albums when you first upgrade to version %s."
+msgid "It allows your visitors to vote for or rate the contents of an album.  You set defaults for polling here, which will apply to new albums, and to all existing albums when you upgraded from an earlier version then %s."
 msgstr ""
 
-#: ../setup/config_data.inc:1531
+#: ../setup/config_data.inc:1772
 msgid "In each album, voting can be switched off, restricted to logged in users or open to all visitors."
 msgstr ""
 
-#: ../setup/config_data.inc:1533
+#: ../setup/config_data.inc:1774
 #, php-format
 msgid "There are two sorts of polls: %s, which allows voters to chose their favourites as first, second, third etc., and %s, which allows voters to rate any or all of the images without restriction.  %s is like a film review where all the images can get (for example) 5 points, while %s is useful in scoring competitions."
 msgstr ""
 
-#: ../setup/config_data.inc:1534 ../setup/config_data.inc:1537
-#: ../setup/config_data.inc:1558 ../setup/config_data.inc:1563
+#: ../setup/config_data.inc:1775 ../setup/config_data.inc:1778
+#: ../setup/config_data.inc:1803 ../setup/config_data.inc:1809
 msgid "Rank"
 msgstr ""
 
-#: ../setup/config_data.inc:1535 ../setup/config_data.inc:1536
-#: ../setup/config_data.inc:1560 ../setup/config_data.inc:1564
+#: ../setup/config_data.inc:1776 ../setup/config_data.inc:1777
+#: ../setup/config_data.inc:1805 ../setup/config_data.inc:1810
 msgid "Critique"
 msgstr ""
 
-#: ../setup/config_data.inc:1540
+#: ../setup/config_data.inc:1782
 msgid "Voter class"
 msgstr ""
 
-#: ../setup/config_data.inc:1541
+#: ../setup/config_data.inc:1783
 msgid "Voting is available to:"
 msgstr ""
 
-#: ../setup/config_data.inc:1544
+#: ../setup/config_data.inc:1786
 msgid "Voting is off."
 msgstr ""
 
-#: ../setup/config_data.inc:1546
+#: ../setup/config_data.inc:1788
 msgid "Anyone can vote.  Votes are recorded against session ID."
 msgstr ""
 
-#: ../setup/config_data.inc:1547 ../setup/config_data.inc:1552
+#: ../setup/config_data.inc:1789 ../setup/config_data.inc:1795
 msgid "Logged in"
 msgstr ""
 
-#: ../setup/config_data.inc:1548
+#: ../setup/config_data.inc:1790
 msgid "Registered users can vote.  Votes are recorded against User ID, and voters can come back and change their choices."
 msgstr ""
 
-#: ../setup/config_data.inc:1555
+#: ../setup/config_data.inc:1800
 msgid "Poll type"
 msgstr ""
 
-#: ../setup/config_data.inc:1556
+#: ../setup/config_data.inc:1801
 msgid "Gallery offers two sorts of polls for voting for images.  See above for a more detailed explanation."
 msgstr ""
 
-#: ../setup/config_data.inc:1559
+#: ../setup/config_data.inc:1804
 msgid "Users have a set of votes which they can allocate to the images."
 msgstr ""
 
-#: ../setup/config_data.inc:1561
+#: ../setup/config_data.inc:1806
 msgid "Enables users to give all images points without restriction."
 msgstr ""
 
-#: ../setup/config_data.inc:1568
+#: ../setup/config_data.inc:1815
 msgid "Number of choices"
 msgstr ""
 
-#: ../setup/config_data.inc:1569
+#: ../setup/config_data.inc:1816
 msgid "Number of choices that will be available to voters as radio buttons or in a pulldown menu."
 msgstr ""
 
-#: ../setup/config_data.inc:1574
+#: ../setup/config_data.inc:1821
 msgid "Vote hint"
 msgstr ""
 
-#: ../setup/config_data.inc:1575
+#: ../setup/config_data.inc:1822
 msgid "This is displayed above the voting options under each image."
 msgstr ""
 
-#: ../setup/config_data.inc:1577
+#: ../setup/config_data.inc:1824
 msgid "Vote for this image"
 msgstr ""
 
-#: ../setup/config_data.inc:1582 ../setup/config_data.inc:1591
+#: ../setup/config_data.inc:1829 ../setup/config_data.inc:1841
 msgid "Show vote results"
 msgstr ""
 
-#: ../setup/config_data.inc:1583
+#: ../setup/config_data.inc:1830
 #, php-format
 msgid "Display a summary and graph on the album page of images that have received the highest votes, and provide a link to the full results.  If this option is %s, results of voting will only be available to admins and album owners."
 msgstr ""
 
-#: ../setup/config_data.inc:1589
+#: ../setup/config_data.inc:1839
 msgid "Number of results displayed"
 msgstr ""
 
-#: ../setup/config_data.inc:1590
+#: ../setup/config_data.inc:1840
 #, php-format
 msgid "If %s is %s, display a graph showing this many top results.  (Full results will be available on a linked page.)"
 msgstr ""
 
-#: ../setup/config_data.inc:1597
+#: ../setup/config_data.inc:1847
 msgid "Orientation of vote choices?"
 msgstr ""
 
-#: ../setup/config_data.inc:1598
+#: ../setup/config_data.inc:1848
 msgid "Rank poll choices can be displayed beside each other (horizontally) or underneath each other (vertically).  Has no effect on critique voting which is a pulldown menu."
 msgstr ""
 
-#: ../setup/config_data.inc:1601
+#: ../setup/config_data.inc:1851
 msgid "Horizontal"
 msgstr ""
 
-#: ../setup/config_data.inc:1602
+#: ../setup/config_data.inc:1852
 msgid "Vertical"
 msgstr ""
 
-#: ../setup/config_data.inc:1605
+#: ../setup/config_data.inc:1856
 msgid "This allows you to configure the actual text that will be displayed for each voting option, plus the number of points that option is worth."
 msgstr ""
 
-#: ../setup/config_data.inc:1607
+#: ../setup/config_data.inc:1858
 msgid "Excellent"
 msgstr ""
 
-#: ../setup/config_data.inc:1608
+#: ../setup/config_data.inc:1859
 msgid "Very Good"
 msgstr ""
 
-#: ../setup/config_data.inc:1609
+#: ../setup/config_data.inc:1860
 msgid "Good"
 msgstr ""
 
-#: ../setup/config_data.inc:1610
+#: ../setup/config_data.inc:1861
 msgid "Average"
 msgstr ""
 
-#: ../setup/config_data.inc:1611
+#: ../setup/config_data.inc:1862
 msgid "Poor"
 msgstr ""
 
-#: ../setup/config_data.inc:1622
+#: ../setup/config_data.inc:1875
 msgid "Album Slideshow"
 msgstr ""
 
-#: ../setup/config_data.inc:1626
+#: ../setup/config_data.inc:1879
 msgid "Slideshow Type"
 msgstr ""
 
-#: ../setup/config_data.inc:1643
+#: ../setup/config_data.inc:1896
 msgid "Recursive slideshow"
 msgstr ""
 
-#: ../setup/config_data.inc:1644
+#: ../setup/config_data.inc:1897
 #, php-format
 msgid "Set to %s if you want to include images in sub albums as part of the slideshow."
 msgstr ""
 
-#: ../setup/config_data.inc:1650
+#: ../setup/config_data.inc:1906
 #, php-format
 msgid "This option will allow visitors to have your slideshow repeat until they close the window or go to another page.  Set it to %s if you want to save bandwidth."
 msgstr ""
 
-#: ../setup/config_data.inc:1669 ../setup/config_data.inc:1673
-#: ../setup/config_data.inc:1679
-msgid "Micro Thumb Photo Navigation"
+#: ../setup/config_data.inc:1928 ../setup/config_data.inc:1932
+#: ../setup/config_data.inc:1942
+msgid "Microthumb Photo Navigation"
 msgstr ""
 
-#: ../setup/config_data.inc:1670
-msgid "These settings apply to the micro-thumb photo navigation system.  The micro thumbs are only visible when viewing individual images."
+#: ../setup/config_data.inc:1929
+msgid "These settings apply to the microthumb photo navigation system.  The microthumbs are only visible when viewing individual images."
 msgstr ""
 
-#: ../setup/config_data.inc:1674
-msgid "Uses micro-thumbnails for photo navigation. This creates a navigation panel with tiny thumbnails of the images around the photo you are viewing.  You can also choose both to display the micro thumb navigation system AND the old style navigation system."
+#: ../setup/config_data.inc:1933
+msgid "Uses microthumbs for photo navigation. This creates a navigation panel with tiny thumbnails of the images around the photo you are viewing.  You can also choose both to display the microthumb navigation system AND the old style navigation system."
 msgstr ""
 
-#: ../setup/config_data.inc:1676
+#: ../setup/config_data.inc:1938
 msgid "both"
 msgstr ""
 
-#: ../setup/config_data.inc:1681 ../setup/config_data.inc:1687
+#: ../setup/config_data.inc:1944 ../setup/config_data.inc:1951
 msgid "Fixed"
 msgstr ""
 
-#: ../setup/config_data.inc:1682
+#: ../setup/config_data.inc:1945
 msgid "Displays prev+next groups of thumbs, changing only to display next group of thumbs."
 msgstr ""
 
-#: ../setup/config_data.inc:1683 ../setup/config_data.inc:1687
+#: ../setup/config_data.inc:1946 ../setup/config_data.inc:1952
 msgid "Dynamic"
 msgstr ""
 
-#: ../setup/config_data.inc:1684
+#: ../setup/config_data.inc:1947
 msgid "Displays previos & next images, with current image between."
 msgstr ""
 
-#: ../setup/config_data.inc:1690
-msgid "Show Micro Thumb for First/Last"
+#: ../setup/config_data.inc:1956
+msgid "Show Microthumb for First/Last"
 msgstr ""
 
-#: ../setup/config_data.inc:1691
-msgid "This allows you to turn on and off the display of the first and last micro-thumb.  Since these two images are always the same, some might find that it is not very useful and would rather display more next/previous thumbs."
+#: ../setup/config_data.inc:1957
+msgid "This allows you to turn on and off the display of the first and last microthumb.  Since these two images are always the same, some might find that it is not very useful and would rather display more next/previous thumbs."
 msgstr ""
 
-#: ../setup/config_data.inc:1696
-msgid "Number of Previous Micro Thumbs"
+#: ../setup/config_data.inc:1965
+msgid "Number of Previous Microthumbs"
 msgstr ""
 
-#: ../setup/config_data.inc:1697
-msgid "This is the number of previous micro thumbs on the screen at a time.  You might prefer to show fewer previous micro thumbs and more next micro thumbs."
+#: ../setup/config_data.inc:1966
+msgid "This is the number of previous microthumbs on the screen at a time.  You might prefer to show fewer previous microthumbs and more next microthumbs."
 msgstr ""
 
-#: ../setup/config_data.inc:1704
-msgid "Number of Next Micro Thumbs"
+#: ../setup/config_data.inc:1975
+msgid "Number of Next Microthumbs"
 msgstr ""
 
-#: ../setup/config_data.inc:1705
-msgid "This is the number of next micro thumbs on the screen at a time.  You might prefer to show fewer previous micro thumbs and more next micro thumbs."
+#: ../setup/config_data.inc:1976
+msgid "This is the number of next microthumbs on the screen at a time.  You might prefer to show fewer previous microthumbs and more next microthumbs."
 msgstr ""
 
-#: ../setup/config_data.inc:1712
-msgid "Location of Micro Thumb Navigation"
+#: ../setup/config_data.inc:1985
+msgid "Location of Microthumb Navigation"
 msgstr ""
 
-#: ../setup/config_data.inc:1713
-msgid "Displays the micro-thumb navigation bar at the Top, Bottom or Both of the photo viewing page.  Since the micro thumb navigation system is larger than the original navigation system, you may want to display it at only the top or bottom to conserve space usage."
+#: ../setup/config_data.inc:1986
+msgid "Displays the microthumb navigation bar at the Top, Bottom or Both of the photo viewing page.  Since the microthumb navigation system is larger than the original navigation system, you may want to display it at only the top or bottom to conserve space usage."
 msgstr ""
 
-#: ../setup/config_data.inc:1716
+#: ../setup/config_data.inc:1989
 msgid "Top"
 msgstr ""
 
-#: ../setup/config_data.inc:1718
+#: ../setup/config_data.inc:1991
 msgid "Bottom"
 msgstr ""
 
-#: ../setup/config_data.inc:1721
-msgid "Height of Micro Thumbs"
+#: ../setup/config_data.inc:1995
+msgid "Height of Microthumbs"
 msgstr ""
 
-#: ../setup/config_data.inc:1722
-msgid "The size of micro thumbnails will determine how clear the images are as well as how much room they take up.  This value is the height and is in pixels.  45 is a reasonable value for viewing at 1024x768."
+#: ../setup/config_data.inc:1996
+msgid "The size of microthumbs will determine how clear the images are as well as how much room they take up.  This value is the height and is in pixels.  45 is a reasonable value for viewing at 1024x768."
 msgstr ""
 
-#: ../setup/config_data.inc:1727
-msgid "Bonus to Current Micro Thumb's Size"
+#: ../setup/config_data.inc:2001
+msgid "Bonus to Current Microthumb's Size"
 msgstr ""
 
-#: ../setup/config_data.inc:1728
-msgid "This is the bonus in pixels to the size of the current micro-thumb.  This creates a nice look and a value of 10-15 is reasonable.  Zero (0) and negative numbers (-10) are also valid here.  Zero (0) will result in the current thumb being of identical size to all the other micro thumbs and a negative value will result in a smaller micro thumb."
+#: ../setup/config_data.inc:2002
+msgid "This is the bonus in pixels to the size of the current microthumb.  This creates a nice look and a value of 10-15 is reasonable.  Zero (0) and negative numbers (-10) are also valid here.  Zero (0) will result in the current thumb being of identical size to all the other microthumbs and a negative value will result in a smaller microthumb."
 msgstr ""
 
-#: ../setup/config_data.inc:1739 ../setup/frame_test.php:29
+#: ../setup/config_data.inc:2013 ../setup/frame_test.php:29
 msgid "Frames"
 msgstr ""
 
-#: ../setup/config_data.inc:1740
+#: ../setup/config_data.inc:2014
 #, php-format
 msgid "Each image (thumbnails, resized and full sized) in %s can have a frame.  The following styles available:"
 msgstr ""
 
-#: ../setup/config_data.inc:1744
+#: ../setup/config_data.inc:2018
 msgid "Subalbum frames"
 msgstr ""
 
-#: ../setup/config_data.inc:1745
+#: ../setup/config_data.inc:2019
 msgid "This frame will appear around the thumbnail image representing a subalbum."
 msgstr ""
 
-#: ../setup/config_data.inc:1750
+#: ../setup/config_data.inc:2025
 msgid "Frame around thumbs"
 msgstr ""
 
-#: ../setup/config_data.inc:1751
+#: ../setup/config_data.inc:2026
 msgid "This frame will appear around the thumbnail image representing a photo or movie."
 msgstr ""
 
-#: ../setup/config_data.inc:1757
+#: ../setup/config_data.inc:2031
 msgid "Frame around images"
 msgstr ""
 
-#: ../setup/config_data.inc:1758
+#: ../setup/config_data.inc:2032
 msgid "This frame will appear around fulled sized and resized photos."
 msgstr ""
 
@@ -2851,7 +2991,7 @@
 msgid "File %s is not writable by the webserver - chmod it 777 before proceeding.  See %s for more details."
 msgstr ""
 
-#: ../setup/confirm.inc:89 ../setup/confirm.inc:183
+#: ../setup/confirm.inc:89 ../setup/confirm.inc:178
 msgid "missing"
 msgstr ""
 
@@ -2859,129 +2999,129 @@
 msgid "it's optional"
 msgstr ""
 
-#: ../setup/confirm.inc:183
+#: ../setup/confirm.inc:178
 msgid "optional"
 msgstr ""
 
-#: ../setup/confirm.inc:203
+#: ../setup/confirm.inc:198
 #, php-format
 msgid "%s: <b>%s</b> must be an absolute URL!"
 msgstr ""
 
-#: ../setup/confirm.inc:215
+#: ../setup/confirm.inc:210
 #, php-format
 msgid "%s: <b>%s</b> must be a valid file (not a directory)!"
 msgstr ""
 
-#: ../setup/confirm.inc:226
+#: ../setup/confirm.inc:221
 #, php-format
 msgid "%s: <b>&quot;%s&quot;</b> must be a positive number"
 msgstr ""
 
-#: ../setup/confirm.inc:235
+#: ../setup/confirm.inc:230
 #, php-format
 msgid "%s: <b>&quot;%s&quot;</b> must be a number"
 msgstr ""
 
-#: ../setup/confirm.inc:243
+#: ../setup/confirm.inc:238
 #, php-format
 msgid "%s: <b>%s</b> must not be zero"
 msgstr ""
 
-#: ../setup/confirm.inc:253
+#: ../setup/confirm.inc:248
 #, php-format
 msgid "%s: <b>%s</b> must be an executable file!"
 msgstr ""
 
-#: ../setup/confirm.inc:262
+#: ../setup/confirm.inc:257
 #, php-format
 msgid "Directory %s does not exist.  Please create it."
 msgstr ""
 
-#: ../setup/confirm.inc:268
+#: ../setup/confirm.inc:263
 #, php-format
 msgid "%s exists but is not a directory.  Please fix this."
 msgstr ""
 
-#: ../setup/confirm.inc:275
+#: ../setup/confirm.inc:270
 #, php-format
 msgid "%s: %s exists, but is not writeable by the webserver user.  Try: %s or if that doesn't work: %s.  Also make sure that if you have an %s restriction then this tmp directory should be under the %s path"
 msgstr ""
 
-#: ../setup/confirm.inc:340
+#: ../setup/confirm.inc:335
 #, php-format
 msgid "%s: <b>%s</b> must be an enabled for this feature to function!"
 msgstr ""
 
-#: ../setup/confirm.inc:365
+#: ../setup/confirm.inc:360
 #, php-format
 msgid "Could not find %s.  Check your NetPBM directory to see which PNG->JPEG converter you have (or just try using %s instead).  Please check your configuration (or use ImageMagick)."
 msgstr ""
 
-#: ../setup/confirm.inc:373
+#: ../setup/confirm.inc:368
 #, php-format
 msgid "Could not find %s.  Check your NetPBM directory to see which PNM Composite/Overlay executable you have (or just try using %s instead).  Please check your configuration (or use ImageMagick)."
 msgstr ""
 
-#: ../setup/confirm.inc:385
+#: ../setup/confirm.inc:380
 #, php-format
 msgid "You must specify a path for %s or %s for Gallery to function!!"
 msgstr ""
 
-#: ../setup/confirm.inc:388 ../setup/confirm.inc:391
+#: ../setup/confirm.inc:383 ../setup/confirm.inc:386
 #, php-format
 msgid "%s is not properly configured for use as a graphics package.  Make sure you entered a path to the %s binaries in step 2."
 msgstr ""
 
-#: ../setup/confirm.inc:397
+#: ../setup/confirm.inc:392
 msgid "Your server has the PHP open_basedir restriction set, and certain of your paths are not in the list of restricted paths"
 msgstr ""
 
-#: ../setup/confirm.inc:399
+#: ../setup/confirm.inc:394
 #, php-format
 msgid "This doesn't mean that they won't work, however it does mean that we can't verify that the paths are correct.  If you are unable to upload photos correctly, please refer to the FAQ and to the %sdiagnostics%s to resolve your problems."
 msgstr ""
 
-#: ../setup/confirm.inc:468
+#: ../setup/confirm.inc:463
 msgid "Confirm that the settings you entered came through correctly.  If you find this page confusing, you can safely ignore it."
 msgstr ""
 
-#: ../setup/confirm.inc:470
+#: ../setup/confirm.inc:465
 msgid "Confirm that the settings you entered came through correctly.  There are errors highlighted below in red which need to be fixed before you can save your settings."
 msgstr ""
 
-#: ../setup/confirm.inc:475 ../setup/confirm.inc:494
+#: ../setup/confirm.inc:470 ../setup/confirm.inc:489
 msgid "Edit Config"
 msgstr ""
 
-#: ../setup/confirm.inc:477 ../setup/confirm.inc:496
+#: ../setup/confirm.inc:472 ../setup/confirm.inc:491
 msgid "Save Config"
 msgstr ""
 
-#: ../setup/confirm.inc:479 ../setup/login.inc:71
+#: ../setup/confirm.inc:474 ../setup/login.inc:71
 msgid "Refresh"
 msgstr ""
 
-#: ../setup/confirm.inc:481
+#: ../setup/confirm.inc:476
 #, php-format
 msgid "One error."
 msgid_plural "%d errors."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../setup/confirm.inc:481
+#: ../setup/confirm.inc:476
 msgid "No errors."
 msgstr ""
 
-#: ../setup/confirm.inc:483
+#: ../setup/confirm.inc:478
 msgid "See Details below."
 msgstr ""
 
-#: ../setup/confirm.inc:499
+#: ../setup/confirm.inc:494
 msgid "There are errors in your configuration."
 msgstr ""
 
-#: ../setup/confirm.inc:500
+#: ../setup/confirm.inc:495
 msgid "Please go back and fix them!"
 msgstr ""
 
@@ -2993,22 +3133,22 @@
 msgid "Switch through the corresponding tab and fill the values you need. Some, but not all values are required. If you have finished this step use the button to go to the next Step."
 msgstr ""
 
-#: ../setup/constants.inc:41 ../setup/constants.inc:156
+#: ../setup/constants.inc:41 ../setup/constants.inc:184
 #: ../setup/defaults.inc:43 ../setup/defaults.inc:129
 msgid "Previous Step"
 msgstr ""
 
-#: ../setup/constants.inc:42 ../setup/constants.inc:157
+#: ../setup/constants.inc:42 ../setup/constants.inc:185
 #: ../setup/defaults.inc:44 ../setup/defaults.inc:130
 msgid "Previous Tab"
 msgstr ""
 
-#: ../setup/constants.inc:43 ../setup/constants.inc:158
+#: ../setup/constants.inc:43 ../setup/constants.inc:186
 #: ../setup/defaults.inc:45 ../setup/defaults.inc:131
 msgid "Next Tab"
 msgstr ""
 
-#: ../setup/constants.inc:45 ../setup/constants.inc:160
+#: ../setup/constants.inc:45 ../setup/constants.inc:188
 #: ../setup/defaults.inc:47 ../setup/defaults.inc:133
 msgid "Use Defaults"
 msgstr ""
@@ -3311,10 +3451,6 @@
 msgid "Enter the Gallery"
 msgstr ""
 
-#: ../setup/write.inc:244
-msgid "Failure"
-msgstr ""
-
 #: ../setup/write.inc:245
 #, php-format
 msgid "Unable to write to %s."
diff -Naur gallery-1.5.1/po/gallery-core.pot gallery-1.5.2/po/gallery-core.pot
--- gallery-1.5.1/po/gallery-core.pot	2005-09-20 01:17:36.000000000 +0200
+++ gallery-1.5.2/po/gallery-core.pot	2006-01-19 18:43:20.000000000 +0100
@@ -1,6 +1,6 @@
 # 
 # Gallery - a web based photo album viewer and editor
-# Copyright (C) 2000-2005 Bharat Mediratta
+# Copyright (C) 2000-2006 Bharat Mediratta
 # 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 #
-# $Id: gallery-core.pot,v 1.109.2.6 2005/09/19 23:17:36 jenst Exp $
+# $Id: gallery-core.pot,v 1.128.2.10 2006/01/19 17:43:20 jenst Exp $
 #
 # @version	<Version>
 # @package      Languagepack
@@ -27,7 +27,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: gallery-translations@lists.sourceforge.net\n"
-"POT-Creation-Date: 2005-09-20 01:15+0200\n"
+"POT-Creation-Date: 2006-01-19 18:31+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -36,50 +36,50 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: ../add_comment.php:29 ../add_photos.php:31 ../album_permissions.php:43
-#: ../copy_photo.php:29 ../create_user.php:34 ../delete_album.php:31
-#: ../delete_photo.php:38 ../delete_user.php:30 ../edit_appearance.php:29
-#: ../edit_caption.php:33 ../edit_field.php:31 ../edit_thumb.php:31
-#: ../edit_watermark.php:38 ../extra_fields.php:34 ../manage_users.php:31
-#: ../modify_user.php:34 ../move_album.php:31 ../move_photo.php:31
-#: ../multi_create_user.php:34 ../photo_owner.php:34 ../poll_properties.php:34
-#: ../poll_results.php:37 ../rearrange.php:28 ../rename_album.php:31
-#: ../reset_votes.php:37 ../resize_photo.php:31 ../rotate_photo.php:31
-#: ../save_photos.php:38 ../upgrade_album.php:57 ../user_preferences.php:31
-#: ../watermark_album.php:43
+#: ../add_comment.php:29 ../add_photos.php:31 ../administer_startpage.php:31
+#: ../album_permissions.php:33 ../copy_photo.php:29 ../create_user.php:34
+#: ../delete_album.php:31 ../delete_photo.php:42 ../delete_user.php:30
+#: ../edit_appearance.php:29 ../edit_caption.php:33 ../edit_field.php:31
+#: ../edit_thumb.php:31 ../edit_watermark.php:45 ../extra_fields.php:34
+#: ../manage_users.php:31 ../modify_user.php:34 ../move_album.php:31
+#: ../move_photo.php:32 ../multi_create_user.php:34 ../photo_owner.php:34
+#: ../poll_properties.php:34 ../poll_results.php:37 ../rearrange.php:28
+#: ../rename_album.php:31 ../reset_votes.php:37 ../resize_photo.php:34
+#: ../rotate_photo.php:31 ../save_photos.php:38 ../upgrade_album.php:57
+#: ../user_preferences.php:31 ../watermark_album.php:43
 msgid "You are not allowed to perform this action!"
 msgstr ""
 
-#: ../add_comment.php:57 ../view_photo.php:193
+#: ../add_comment.php:56 ../view_photo.php:193
 msgid "Name and comment are both required to save a new comment!"
 msgstr ""
 
-#: ../add_comment.php:59 ../view_photo.php:195
+#: ../add_comment.php:58 ../view_photo.php:195
 #, php-format
 msgid "Your comment is too long, the admin set maximum length to %d chars"
 msgstr ""
 
-#: ../add_comment.php:61 ../view_photo.php:197
+#: ../add_comment.php:60 ../view_photo.php:197
 msgid "Your Comment contains forbidden words. It will not be added."
 msgstr ""
 
-#: ../add_comment.php:80 ../add_comment.php:84
+#: ../add_comment.php:79 ../add_comment.php:83
 msgid "Add Comment"
 msgstr ""
 
-#: ../add_comment.php:86
+#: ../add_comment.php:85
 msgid "Enter your comment for this picture in the text box below."
 msgstr ""
 
-#: ../add_comment.php:101 ../copy_photo.php:204 ../delete_album.php:66
-#: ../delete_photo.php:141 ../delete_user.php:85 ../ecard_form.php:258
-#: ../edit_caption.php:185 ../edit_field.php:66 ../edit_watermark.php:120
-#: ../includes/add_photos/add_form.inc:107
-#: ../includes/add_photos/add_url.inc:60 ../login.php:96 ../move_album.php:118
-#: ../move_album.php:138 ../move_photo.php:249 ../move_photo.php:335
-#: ../new_password.php:125 ../register.php:142 ../rename_album.php:131
-#: ../reset_votes.php:64 ../resize_photo.php:137 ../sort_album.php:114
-#: ../user_preferences.php:137 ../watermark_album.php:153
+#: ../add_comment.php:98 ../copy_photo.php:214 ../delete_album.php:72
+#: ../delete_photo.php:145 ../delete_user.php:85 ../download.php:74
+#: ../ecard_form.php:263 ../edit_caption.php:184 ../edit_field.php:67
+#: ../edit_watermark.php:130 ../includes/add_photos/add_form.inc:90
+#: ../includes/add_photos/add_url.inc:55 ../login.php:96 ../move_album.php:117
+#: ../move_album.php:134 ../move_photo.php:264 ../move_photo.php:352
+#: ../new_password.php:138 ../register.php:142 ../rename_album.php:131
+#: ../reset_votes.php:64 ../resize_photo.php:140 ../sort_album.php:121
+#: ../watermark_album.php:153
 msgid "Cancel"
 msgstr ""
 
@@ -95,22 +95,18 @@
 msgid "Applet (big)"
 msgstr ""
 
-#: ../add_photos.php:78
+#: ../add_photos.php:77
 msgid "Form"
 msgstr ""
 
-#: ../add_photos.php:81
+#: ../add_photos.php:78
 msgid "URL"
 msgstr ""
 
-#: ../add_photos.php:82 ../layout/watermarkform.inc:134
+#: ../add_photos.php:79 ../layout/watermarkform.inc:135
 msgid "Other"
 msgstr ""
 
-#: ../add_photos.php:85
-msgid "Admin"
-msgstr ""
-
 #: ../admin-page.php:36
 msgid "statistics"
 msgstr ""
@@ -163,298 +159,376 @@
 msgid "Admin options"
 msgstr ""
 
-#: ../admin-page.php:85 ../search.php:56 ../stats.php:599
-#: ../stats-wizard.php:56 ../tools/find_orphans.php:211
-#: ../tools/despam-comments.php:56 ../tools/validate_albums.php:138
+#: ../admin-page.php:85 ../search.php:56 ../stats-wizard.php:55
+#: ../stats.php:603 ../tools/despam-comments.php:56
+#: ../tools/find_orphans.php:211 ../tools/validate_albums.php:138
 #: ../tools/validate_albums.php:214
 msgid "return to gallery"
 msgstr ""
 
-#: ../album_permissions.php:183 ../album_permissions.php:187
-msgid "Album Permissions"
+#: ../administer_startpage.php:38
+msgid "Rebuild highlights"
 msgstr ""
 
-#: ../album_permissions.php:189
-#, php-format
-msgid "Changing permissions for %s"
+#: ../administer_startpage.php:40
+msgid "Recreate all highlights according to the setting in configwizard.<br>(Starts immediately)"
 msgstr ""
 
-#: ../album_permissions.php:197 ../albums.php:368
-msgid "Owner:"
+#: ../administer_startpage.php:44
+msgid "Albumorder"
 msgstr ""
 
-#: ../album_permissions.php:212
-msgid "Users who can see the album"
+#: ../administer_startpage.php:46
+msgid "Sort the albums on the startpage(s).<br>(Opens an option dialog)"
 msgstr ""
 
-#: ../album_permissions.php:227
-msgid "Users who can change album text."
+#: ../administer_startpage.php:52
+msgid "By (physical) name"
 msgstr ""
 
-#: ../album_permissions.php:242
-msgid "Users who can add photos."
+#: ../administer_startpage.php:53
+msgid "By last reset date"
 msgstr ""
 
-#: ../album_permissions.php:257
-msgid "Users who can modify photos."
+#: ../administer_startpage.php:54
+msgid "By creation date (works only with albums created with 1.5.2-cvs-b28 or newer)"
+msgstr ""
+
+#: ../administer_startpage.php:58
+msgid "Administer Startpage"
+msgstr ""
+
+#: ../administer_startpage.php:79
+msgid "Sort albums on startpage"
+msgstr ""
+
+#: ../administer_startpage.php:90 ../sort_album.php:105
+msgid "Sort Order:"
+msgstr ""
+
+#: ../administer_startpage.php:92 ../sort_album.php:112
+msgid "Ascending"
+msgstr ""
+
+#: ../administer_startpage.php:93 ../sort_album.php:113
+msgid "Descending"
+msgstr ""
+
+#: ../administer_startpage.php:98 ../sort_album.php:120
+msgid "Sort"
+msgstr ""
+
+#: ../administer_startpage.php:99 ../administer_startpage.php:109
+#: ../download.php:81 ../help/imagemap.php:88 ../user_preferences.php:145
+#: ../view_photo_properties.php:137
+msgid "Close Window"
+msgstr ""
+
+#: ../album_permissions.php:38
+msgid "Users who can see the album."
+msgstr ""
+
+#: ../album_permissions.php:39
+msgid "Users who can add photos."
 msgstr ""
 
-#: ../album_permissions.php:272
+#: ../album_permissions.php:40
 msgid "Users who can delete photos."
 msgstr ""
 
-#: ../album_permissions.php:287
+#: ../album_permissions.php:41
+msgid "Users who can modify photos."
+msgstr ""
+
+#: ../album_permissions.php:42
 msgid "Users who can create sub albums."
 msgstr ""
 
-#: ../album_permissions.php:302
-msgid "Users who can view full (original) images."
+#: ../album_permissions.php:43
+msgid "Users who can to download album (with subalbums) as archive."
+msgstr ""
+
+#: ../album_permissions.php:44
+msgid "Users who can view comments."
 msgstr ""
 
-#: ../album_permissions.php:318
+#: ../album_permissions.php:45
 msgid "Users who can add comments."
 msgstr ""
 
-#: ../album_permissions.php:333
-msgid "Users who can view comments."
+#: ../album_permissions.php:46
+msgid "Users who can view full (original) images."
+msgstr ""
+
+#: ../album_permissions.php:47
+msgid "Users who can change album text."
+msgstr ""
+
+#: ../album_permissions.php:110 ../album_permissions.php:114
+msgid "Album Permissions"
 msgstr ""
 
-#: ../album_permissions.php:351
+#: ../album_permissions.php:116
+#, php-format
+msgid "Changing permissions for %s"
+msgstr ""
+
+#: ../album_permissions.php:122
+msgid "Owner:"
+msgstr ""
+
+#: ../album_permissions.php:156
 msgid "Apply permissions to all sub-albums"
 msgstr ""
 
-#: ../album_permissions.php:354 ../edit_caption.php:184 ../edit_field.php:56
-#: ../edit_field.php:65 ../edit_watermark.php:118 ../modify_user.php:164
-#: ../new_password.php:124 ../photo_owner.php:103 ../user_preferences.php:136
+#: ../album_permissions.php:159 ../edit_caption.php:183 ../edit_field.php:57
+#: ../edit_field.php:66 ../edit_watermark.php:128 ../modify_user.php:163
+#: ../new_password.php:137 ../photo_owner.php:103 ../user_preferences.php:144
 #: ../watermark_album.php:148
 msgid "Save"
 msgstr ""
 
-#: ../album_permissions.php:355 ../manage_users.php:105 ../modify_user.php:166
+#: ../album_permissions.php:160 ../manage_users.php:100 ../modify_user.php:165
 #: ../photo_owner.php:104 ../upgrade_album.php:66 ../upgrade_album.php:179
-#: ../upgrade_users.php:61 ../view_photo_properties.php:134
+#: ../upgrade_users.php:61
 msgid "Done"
 msgstr ""
 
-#: ../albums.php:110 ../view_album.php:129
+#: ../albums.php:111 ../view_album.php:130
 #, php-format
 msgid "%s RSS"
 msgstr ""
 
-#: ../albums.php:144
+#: ../albums.php:146
 #, php-format
 msgid "1 album"
 msgid_plural "%d albums"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../albums.php:144
+#: ../albums.php:146
 msgid "no albums"
 msgstr ""
 
-#: ../albums.php:146
+#: ../albums.php:148
 #, php-format
 msgid "1 top-level album"
 msgid_plural "%d top-level albums"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../albums.php:146
+#: ../albums.php:148
 msgid "No top-level albums"
 msgstr ""
 
-#: ../albums.php:149
+#: ../albums.php:151
 #, php-format
 msgid "%d total"
 msgstr ""
 
-#: ../albums.php:150 ../view_album.php:211
+#: ../albums.php:152 ../view_album.php:212
 #, php-format
 msgid "1 image"
 msgid_plural "%d images"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../albums.php:150 ../view_album.php:211
+#: ../albums.php:152 ../view_album.php:212
 msgid "no images"
 msgstr ""
 
-#: ../albums.php:151 ../view_album.php:212
+#: ../albums.php:153 ../view_album.php:213
 #, php-format
 msgid "1 page"
 msgid_plural "%d pages"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../albums.php:151
+#: ../albums.php:153
 msgid "no pages"
 msgstr ""
 
-#: ../albums.php:154
+#: ../albums.php:156
 #, php-format
 msgid "%s (%s), %s on %s"
 msgstr ""
 
-#: ../albums.php:157
+#: ../albums.php:159
 #, php-format
 msgid "%s (%s), %s"
 msgstr ""
 
-#: ../albums.php:159
+#: ../albums.php:161
 #, php-format
 msgid "%s, %s on %s"
 msgstr ""
 
-#: ../albums.php:161
+#: ../albums.php:163
 #, php-format
 msgid "%s, %s"
 msgstr ""
 
-#: ../albums.php:176
+#: ../albums.php:178
 #, php-format
 msgid "Welcome, %s"
 msgstr ""
 
-#: ../albums.php:180 ../view_album.php:386
+#: ../albums.php:182 ../view_album.php:402
 msgid "slideshow"
 msgstr ""
 
-#: ../albums.php:185
+#: ../albums.php:187
 msgid "new album"
 msgstr ""
 
-#: ../albums.php:191
-msgid "preferences"
+#: ../albums.php:194
+msgid "Administer startpage"
 msgstr ""
 
 #: ../albums.php:198
+msgid "admin page"
+msgstr ""
+
+#: ../albums.php:203
 msgid "documentation"
 msgstr ""
 
-#: ../albums.php:202
-msgid "admin page"
+#: ../albums.php:209
+msgid "preferences"
 msgstr ""
 
-#: ../albums.php:206 ../view_album.php:404 ../view_photo.php:515
+#: ../albums.php:214 ../imagemap.php:139 ../view_album.php:420
+#: ../view_photo.php:519
 msgid "logout"
 msgstr ""
 
-#: ../albums.php:211 ../view_album.php:409 ../view_photo.php:520
+#: ../albums.php:219 ../imagemap.php:144 ../view_album.php:425
+#: ../view_photo.php:524
 msgid "login"
 msgstr ""
 
-#: ../albums.php:215
+#: ../albums.php:223
 msgid "register"
 msgstr ""
 
-#: ../albums.php:241
+#: ../albums.php:249
 msgid "Attention Gallery Administrator!"
 msgstr ""
 
-#: ../albums.php:244
+#: ../albums.php:252
 #, php-format
 msgid "%s has detected the following %d invalid album(s) in your albums directory<br>(%s):"
 msgstr ""
 
-#: ../albums.php:250
+#: ../albums.php:258
 msgid "Please move it/them out of the albums directory."
 msgstr ""
 
-#: ../albums.php:254
+#: ../albums.php:262
 #, php-format
 msgid "%s has detected that %d of your albums are out of date."
 msgstr ""
 
-#: ../albums.php:258
+#: ../albums.php:266
 #, php-format
 msgid "Please %s."
 msgstr ""
 
-#: ../albums.php:258
+#: ../albums.php:266
 msgid "upgrade those albums"
 msgstr ""
 
-#: ../albums.php:266
+#: ../albums.php:273
 msgid "Attention!"
 msgstr ""
 
-#: ../albums.php:268
+#: ../albums.php:275
 #, php-format
 msgid "The album or photo that you were attempting to view either does not exist, or requires user privileges that you do not possess. %s"
 msgstr ""
 
-#: ../albums.php:268
+#: ../albums.php:275
 #, php-format
 msgid "%s and try again."
 msgstr ""
 
-#: ../albums.php:269
+#: ../albums.php:276
 msgid "Log in"
 msgstr ""
 
-#: ../albums.php:283
+#: ../albums.php:290
 #, php-format
 msgid "The requested album with index %s is not valid"
 msgstr ""
 
-#: ../albums.php:324 ../view_album.php:667
+#: ../albums.php:331 ../view_album.php:676
 msgid "Highlight for Album:"
 msgstr ""
 
-#: ../albums.php:341
-msgid "title"
+#: ../albums.php:351 ../view_album.php:782
+msgid "Download entire album as archive"
+msgstr ""
+
+#: ../albums.php:386
+#, php-format
+msgid "Owner: %s"
 msgstr ""
 
-#: ../albums.php:373
+#: ../albums.php:394
 msgid "url:"
 msgstr ""
 
-#: ../albums.php:384
+#: ../albums.php:405
 msgid "Hey!"
 msgstr ""
 
-#: ../albums.php:385
+#: ../albums.php:406
 #, php-format
 msgid "%s so that the URL is not so generic!"
 msgstr ""
 
-#: ../albums.php:386
+#: ../albums.php:407
 msgid "Rename this album"
 msgstr ""
 
-#: ../albums.php:397
+#: ../albums.php:422
+#, php-format
+msgid "Created on %s, last changed on %s."
+msgstr ""
+
+#: ../albums.php:425
 #, php-format
 msgid "Last changed on %s."
 msgstr ""
 
-#: ../albums.php:400
+#: ../albums.php:434
 #, php-format
 msgid "This album contains 1 item."
 msgid_plural "This album contains %d items."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../albums.php:405
+#: ../albums.php:443
 #, php-format
 msgid "This album has been viewed %s since %s."
 msgstr ""
 
-#: ../albums.php:406 ../view_album.php:813 ../view_album.php:837
+#: ../albums.php:444 ../view_album.php:817
 #, php-format
 msgid "1 time"
 msgid_plural "%d times"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../albums.php:406
+#: ../albums.php:444
 msgid "0 times"
 msgstr ""
 
-#: ../albums.php:412
+#: ../albums.php:450
 msgid "reset counter"
 msgstr ""
 
-#: ../albums.php:452 ../view_album.php:909
+#: ../albums.php:495 ../view_album.php:916
 msgid "Comments available for this item."
 msgstr ""
 
@@ -478,74 +552,80 @@
 msgid "1 photo in this album"
 msgstr ""
 
-#: ../captionator.php:177
-msgid "items in this album"
-msgstr ""
-
-#: ../captionator.php:179
-msgid "on"
+#: ../captionator.php:178
+#, php-format
+msgid "%s items in this album on %s"
 msgstr ""
 
-#: ../captionator.php:179
+#: ../captionator.php:180
 #, php-format
 msgid "one page"
 msgid_plural "%d pages"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../captionator.php:193 ../captionator.php:309
+#: ../captionator.php:183
+#, php-format
+msgid "%s items in this album"
+msgstr ""
+
+#: ../captionator.php:191 ../imagemap.php:156 ../slideshow.php:183
+#: ../view_album.php:109 ../view_comments.php:54 ../view_photo.php:169
+msgid "navigate UP"
+msgstr ""
+
+#: ../captionator.php:212 ../captionator.php:325
 msgid "Save and Exit"
 msgstr ""
 
-#: ../captionator.php:196 ../captionator.php:312
+#: ../captionator.php:215 ../captionator.php:328
 #, php-format
 msgid "Save and Edit Next %d"
 msgstr ""
 
-#: ../captionator.php:200 ../captionator.php:316
+#: ../captionator.php:219 ../captionator.php:332
 #, php-format
 msgid "Save and Edit Previous %d"
 msgstr ""
 
-#: ../captionator.php:204 ../captionator.php:320
+#: ../captionator.php:223 ../captionator.php:336
 msgid "Exit"
 msgstr ""
 
-#: ../captionator.php:235
+#: ../captionator.php:254
 msgid "(click to enlarge)"
 msgstr ""
 
-#: ../captionator.php:243 ../layout/commentboxtop.inc:20
-#: ../layout/commentboxtop.inc:45 ../view_album.php:775
+#: ../captionator.php:262 ../layout/commentboxtop.inc:20
+#: ../layout/commentboxtop.inc:45 ../view_album.php:770
 msgid "hidden"
 msgstr ""
 
-#: ../captionator.php:256
+#: ../captionator.php:275
 msgid "Album Caption"
 msgstr ""
 
-#: ../captionator.php:263
+#: ../captionator.php:282
 msgid "Movie Caption"
 msgstr ""
 
-#: ../captionator.php:265
+#: ../captionator.php:284
 msgid "Photo Caption"
 msgstr ""
 
-#: ../captionator.php:275 ../edit_appearance.php:185 ../extra_fields.php:99
-#: ../lib/lang.php:708
+#: ../captionator.php:293 ../edit_appearance.php:185 ../extra_fields.php:99
 msgid "Title"
 msgstr ""
 
-#: ../captionator.php:284 ../edit_caption.php:119
+#: ../captionator.php:302 ../edit_caption.php:118
 msgid "Keywords"
 msgstr ""
 
-#: ../captionator.php:290 ../lib/lang.php:698
+#: ../captionator.php:308
 msgid "Capture Date"
 msgstr ""
 
-#: ../captionator.php:301
+#: ../captionator.php:318
 msgid "NO PHOTOS!"
 msgstr ""
 
@@ -553,159 +633,174 @@
 msgid "Untitled"
 msgstr ""
 
-#: ../classes/Album.php:241 ../classes/Album.php:253
-#: ../layout/commentboxtop.inc:18 ../lib/mail.php:247 ../lib/albumItem.php:48
+#: ../classes/Album.php:240 ../classes/Album.php:252
+#: ../layout/commentboxtop.inc:18 ../lib/albumItem.php:71
 #: ../upgrade_album.php:84 ../upgrade_album.php:96
 msgid "Album"
 msgstr ""
 
-#: ../classes/Album.php:265 ../search.php:58 ../slideshow.php:193
+#: ../classes/Album.php:264 ../search.php:58 ../slideshow.php:193
 msgid "Gallery"
 msgstr ""
 
-#: ../classes/Album.php:306
+#: ../classes/Album.php:305
 msgid "Album up to date."
 msgstr ""
 
-#: ../classes/Album.php:310
+#: ../classes/Album.php:309
 msgid "Upgrading album properties..."
 msgstr ""
 
-#: ../classes/Album.php:453
+#: ../classes/Album.php:454
 #, php-format
 msgid "Renaming album from %s to %s..."
 msgstr ""
 
-#: ../classes/Album.php:537 ../classes/Album.php:554
+#: ../classes/Album.php:538 ../classes/Album.php:553
 msgid "done"
 msgstr ""
 
-#: ../classes/Album.php:545
+#: ../classes/Album.php:544
 #, php-format
 msgid "Upgrading item %d of %d . . . "
 msgstr ""
 
-#: ../classes/Album.php:971
-msgid "msg should be an array!"
+#: ../classes/Album.php:801
+msgid "Getting highlight"
 msgstr ""
 
-#: ../classes/Album.php:983
-#, php-format
-msgid "A change has been made to Album: %s by %s (IP %s).  The change is: %s"
+#: ../classes/Album.php:847
+msgid "Setting highlight"
 msgstr ""
 
-#: ../classes/Album.php:990
-msgid "If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when other changes are made' is unchecked (You'll need to login first)."
+#: ../classes/Album.php:1039
+msgid "msg should be an array!"
 msgstr ""
 
-#: ../classes/Album.php:993
+#: ../classes/Album.php:1048
 #, php-format
 msgid "Changes to Album: %s"
 msgstr ""
 
-#: ../classes/Album.php:999
+#: ../classes/Album.php:1056
+#, php-format
+msgid "A change has been made to Album: %s by %s (IP %s).  The change is: %s"
+msgstr ""
+
+#: ../classes/Album.php:1062
+msgid "If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when other changes are made' is unchecked (You'll need to login first)."
+msgstr ""
+
+#: ../classes/Album.php:1069
 msgid "Operation was done successfully. Emailing is on, but no email was sent as no valid email address was found"
 msgstr ""
 
-#: ../classes/Album.php:1066 ../classes/Album.php:1775
+#: ../classes/Album.php:1143 ../classes/Album.php:1898
 #, php-format
 msgid "Entering album %s, processing %d photos"
 msgstr ""
 
-#: ../classes/Album.php:1071
+#: ../classes/Album.php:1148
 #, php-format
 msgid "Processing element %d..."
 msgstr ""
 
-#: ../classes/Album.php:1085
+#: ../classes/Album.php:1161 ../classes/Album.php:1268
 msgid "Doing the naming"
 msgstr ""
 
-#: ../classes/Album.php:1120
+#: ../classes/Album.php:1194
 msgid "Image Preprocessing"
 msgstr ""
 
-#: ../classes/Album.php:1126
+#: ../classes/Album.php:1199
 msgid "Resizing/compressing original image"
 msgstr ""
 
-#: ../classes/Album.php:1130
+#: ../classes/Album.php:1203
 msgid "Cannot resize/compress this filetype"
 msgstr ""
 
-#: ../classes/Album.php:1134
-msgid "Adding Photo to the photo list"
-msgstr ""
-
-#: ../classes/Album.php:1188
+#: ../classes/Album.php:1258
 #, php-format
 msgid "Resizing %s"
 msgstr ""
 
-#: ../classes/Album.php:1253
+#: ../classes/Album.php:1325
 msgid "Photo auto-rotated/transformed"
 msgstr ""
 
-#: ../classes/Album.php:1261
+#: ../classes/Album.php:1333
 msgid "Watermarking Image"
 msgstr ""
 
-#: ../classes/Album.php:1418 ../classes/Album.php:1428
-#: ../classes/AlbumItem.php:673
-msgid "No highlight"
+#: ../classes/Album.php:1491 ../classes/Album.php:1501
+msgid "No highlight!"
 msgstr ""
 
-#: ../classes/Album.php:1582
+#: ../classes/Album.php:1696
 #, php-format
 msgid "Requested index [%d] out of bounds [%d]"
 msgstr ""
 
-#: ../classes/Album.php:1789 ../do_command.php:87
+#: ../classes/Album.php:1910 ../do_command.php:105
 #, php-format
 msgid "Processing image %d..."
 msgstr ""
 
-#: ../classes/Album.php:1948
+#: ../classes/Album.php:2079
 #, php-format
 msgid "Error getting EXIF data. Expected Status 0, got %s."
 msgstr ""
 
-#: ../classes/Album.php:2484
+#: ../classes/Album.php:2615
 #, php-format
 msgid "#%d"
 msgstr ""
 
-#: ../classes/Album.php:2650
+#: ../classes/Album.php:2779
 #, php-format
 msgid "Email problem: skipping %s (UID %s) because email address %s is not valid."
 msgstr ""
 
-#: ../classes/AlbumItem.php:566
+#: ../classes/AlbumItem.php:601
 msgid "Invalid image"
 msgstr ""
 
-#: ../classes/AlbumItem.php:583
+#: ../classes/AlbumItem.php:619
 msgid "Generating thumbnail."
 msgstr ""
 
-#: ../classes/AlbumItem.php:626
+#: ../classes/AlbumItem.php:621
+#, php-format
+msgid "Saved Dimensions: x:%d y: %d"
+msgstr ""
+
+#: ../classes/AlbumItem.php:686
+msgid "Generating normal thumbs"
+msgstr ""
+
+#: ../classes/AlbumItem.php:712
 msgid "Unable to make thumbnail"
 msgstr ""
 
-#: ../classes/AlbumItem.php:637
+#: ../classes/AlbumItem.php:723
 msgid "No preview"
 msgstr ""
 
-#: ../classes/AlbumItem.php:658
+#: ../classes/AlbumItem.php:749
 msgid "No thumbnail"
 msgstr ""
 
+#: ../classes/AlbumItem.php:764
+msgid "No highlight"
+msgstr ""
+
 #: ../classes/EverybodyUser.php:27 ../classes/LoggedInUser.php:27
 msgid "Anonymous User"
 msgstr ""
 
-#: ../classes/NobodyUser.php:27
-#: ../includes/definitions/albumProperties.php:319 ../poll_properties.php:104
+#: ../classes/NobodyUser.php:27 ../poll_properties.php:104
 msgid "Nobody"
 msgstr ""
 
@@ -728,44 +823,48 @@
 msgstr ""
 
 #: ../classes/gallery/UserDB.php:280
+msgid "Please enter a username."
+msgstr ""
+
+#: ../classes/gallery/UserDB.php:284
 #, php-format
-msgid "Illegal username %s: must at least 2 characters"
+msgid "Username '%s' is to short. Must be at least 2 characters."
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:285
+#: ../classes/gallery/UserDB.php:289
 #, php-format
-msgid "Illegal username %s: must at most 15 characters"
+msgid "Username '%s' too long. Must be at most 15 characters."
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:291
+#: ../classes/gallery/UserDB.php:295
 #, php-format
-msgid "Illegal username %s: must contain only letters or digits"
+msgid "Illegal username '%s'. Only letters and digits allowed."
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:298
+#: ../classes/gallery/UserDB.php:302
 #, php-format
 msgid "%s is reserved and cannot be used."
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:304
+#: ../classes/gallery/UserDB.php:308
 #, php-format
 msgid "A user with the username of %s already exists"
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:313
+#: ../classes/gallery/UserDB.php:317
 msgid "Password must be at least 3 characters"
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:344
+#: ../classes/gallery/UserDB.php:348
 #, php-format
 msgid "Checking user %d of %d . . . . "
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:349
+#: ../classes/gallery/UserDB.php:353
 msgid "skipped"
 msgstr ""
 
-#: ../classes/gallery/UserDB.php:395
+#: ../classes/gallery/UserDB.php:399
 #, php-format
 msgid "Problem adding %s:"
 msgstr ""
@@ -779,80 +878,80 @@
 msgid "Invalid album selected: %s"
 msgstr ""
 
-#: ../copy_photo.php:58 ../copy_photo.php:134
+#: ../copy_photo.php:58 ../copy_photo.php:144
 #, php-format
 msgid "Can't copy album #%d"
 msgstr ""
 
-#: ../copy_photo.php:65
+#: ../copy_photo.php:66
 #, php-format
 msgid "Copying photo #%d"
 msgstr ""
 
-#: ../copy_photo.php:78 ../move_photo.php:143
+#: ../copy_photo.php:79 ../move_photo.php:152
 msgid "Creating Thumbnail"
 msgstr ""
 
-#: ../copy_photo.php:117 ../move_photo.php:197
+#: ../copy_photo.php:122 ../move_photo.php:212
 #, php-format
 msgid "Skipping Album #%d"
 msgstr ""
 
-#: ../copy_photo.php:124 ../do_command.php:242 ../do_command.php:244
-#: ../login.php:127 ../register.php:47 ../register.php:122
-#: ../save_photos.php:377
+#: ../copy_photo.php:132 ../do_command.php:261 ../do_command.php:263
+#: ../login.php:127 ../register.php:47 ../register.php:123
+#: ../save_photos.php:367
 msgid "Dismiss"
 msgstr ""
 
-#: ../copy_photo.php:131
+#: ../copy_photo.php:141
 msgid "Please select the album where you want to copy the photo(s) to."
 msgstr ""
 
-#: ../copy_photo.php:140
+#: ../copy_photo.php:150
 msgid "Copy a range of photos to a new album:"
 msgstr ""
 
-#: ../copy_photo.php:141
+#: ../copy_photo.php:151
 msgid "To copy just one photo, make First and Last the same."
 msgstr ""
 
-#: ../copy_photo.php:142 ../move_photo.php:268
+#: ../copy_photo.php:152 ../move_photo.php:285
 msgid "Nested albums in this range will be ignored."
 msgstr ""
 
-#: ../copy_photo.php:154 ../move_photo.php:277
+#: ../copy_photo.php:164 ../move_photo.php:294
 msgid "First"
 msgstr ""
 
-#: ../copy_photo.php:155 ../move_photo.php:278
+#: ../copy_photo.php:165 ../move_photo.php:295
 msgid "Last"
 msgstr ""
 
-#: ../copy_photo.php:156 ../move_photo.php:279
+#: ../copy_photo.php:166 ../move_photo.php:296
 msgid "New Album"
 msgstr ""
 
-#: ../copy_photo.php:198 ../move_photo.php:329
+#: ../copy_photo.php:208 ../move_photo.php:346
 #, php-format
 msgid "WARNING: Some of the albums need to be upgraded to the current version of %s."
 msgstr ""
 
-#: ../copy_photo.php:199 ../move_photo.php:330
+#: ../copy_photo.php:209 ../move_photo.php:347
 msgid "Upgrade now"
 msgstr ""
 
-#: ../copy_photo.php:203
+#: ../copy_photo.php:213
 msgid "Copy to Album!"
 msgstr ""
 
-#: ../copy_photo.php:208 ../delete_photo.php:146 ../edit_thumb.php:131
-#: ../move_album.php:144 ../move_photo.php:341 ../resize_photo.php:144
-#: ../rotate_photo.php:95 ../view_photo_properties.php:129
+#: ../copy_photo.php:218 ../delete_photo.php:150 ../edit_thumb.php:131
+#: ../move_album.php:140 ../move_photo.php:358 ../resize_photo.php:147
+#: ../rotate_photo.php:95 ../view_photo_properties.php:130
 msgid "no album / index specified"
 msgstr ""
 
-#: ../create_user.php:46 ../modify_user.php:58 ../new_password.php:51
-#: ../user_preferences.php:61
+#: ../create_user.php:46 ../modify_user.php:59 ../new_password.php:54
+#: ../user_preferences.php:68
 msgid "Passwords do not match!"
 msgstr ""
 
@@ -884,8 +983,8 @@
 msgid "Create another user"
 msgstr ""
 
-#: ../create_user.php:113 ../create_user.php:166 ../modify_user.php:165
-#: ../multi_create_user.php:148 ../multi_create_user.php:200
+#: ../create_user.php:113 ../create_user.php:165 ../modify_user.php:164
+#: ../multi_create_user.php:148 ../multi_create_user.php:199
 msgid "Back to usermanagement"
 msgstr ""
 
@@ -893,37 +992,38 @@
 msgid "Create a new user here."
 msgstr ""
 
-#: ../create_user.php:165
+#: ../create_user.php:164
 msgid "Create user"
 msgstr ""
 
-#: ../delete_album.php:49 ../delete_album.php:53 ../delete_photo.php:82
-#: ../delete_photo.php:90 ../tools/validate_albums.php:128
+#: ../delete_album.php:49 ../delete_album.php:53 ../delete_photo.php:86
+#: ../delete_photo.php:94 ../tools/validate_albums.php:128
 #: ../tools/validate_albums.php:136
 msgid "Delete Album"
 msgstr ""
 
-#: ../delete_album.php:55 ../delete_photo.php:96
+#: ../delete_album.php:55 ../delete_photo.php:103
 msgid "Do you really want to delete this album?"
 msgstr ""
 
-#: ../delete_album.php:65 ../delete_photo.php:140 ../delete_user.php:80
-#: ../layout/commentbox.inc:15 ../lib/albumItem.php:71
-#: ../lib/albumItem.php:173 ../lib/albumItem.php:179 ../manage_users.php:103
-#: ../tools/despam-comments.php:209 ../tools/despam-comments.php:348
+#: ../delete_album.php:71 ../delete_photo.php:144 ../delete_user.php:80
+#: ../js/multifile.js.php:106 ../layout/commentbox.inc:15
+#: ../lib/albumItem.php:254 ../lib/albumItem.php:255 ../lib/albumItem.php:261
+#: ../lib/albumItem.php:262 ../manage_users.php:98
+#: ../tools/despam-comments.php:206 ../tools/despam-comments.php:345
 msgid "Delete"
 msgstr ""
 
-#: ../delete_album.php:74 ../sort_album.php:119
+#: ../delete_album.php:76 ../sort_album.php:126
 msgid "no album specified"
 msgstr ""
 
-#: ../delete_photo.php:82 ../delete_photo.php:119
+#: ../delete_photo.php:86 ../delete_photo.php:121
 #: ../tools/validate_albums.php:128 ../tools/validate_albums.php:136
 msgid "Delete Photo"
 msgstr ""
 
-#: ../delete_photo.php:122
+#: ../delete_photo.php:124
 msgid "Do you really want to delete this photo?"
 msgstr ""
 
@@ -973,176 +1073,210 @@
 msgid "Performing Operation.."
 msgstr ""
 
-#: ../do_command.php:65
+#: ../do_command.php:68
+#, php-format
+msgid "Rebuilding highlight %s"
+msgstr ""
+
+#: ../do_command.php:80
 msgid "Do you also want to rebuild the thumbnails in subalbums?"
 msgstr ""
 
-#: ../do_command.php:72 ../includes/definitions/albumProperties.php:155
-#: ../includes/definitions/albumProperties.php:161
-#: ../includes/definitions/albumProperties.php:229
-#: ../includes/definitions/albumProperties.php:235
-#: ../includes/definitions/albumProperties.php:241
-#: ../includes/definitions/albumProperties.php:247
-#: ../includes/definitions/albumProperties.php:276
-#: ../includes/definitions/albumProperties.php:306
-#: ../includes/definitions/albumProperties.php:357
-#: ../includes/definitions/albumProperties.php:363
-#: ../includes/definitions/albumProperties.php:369
-#: ../includes/definitions/albumProperties.php:375
-#: ../includes/definitions/albumProperties.php:385
-#: ../includes/definitions/albumProperties.php:391
-#: ../includes/definitions/albumProperties.php:433
-#: ../includes/definitions/albumProperties.php:445 ../html/userData.inc:13
-#: ../multi_create_user.php:190 ../poll_properties.php:96
-msgid "yes"
-msgstr ""
-
-#: ../do_command.php:73 ../includes/definitions/albumProperties.php:155
-#: ../includes/definitions/albumProperties.php:161
-#: ../includes/definitions/albumProperties.php:229
-#: ../includes/definitions/albumProperties.php:235
-#: ../includes/definitions/albumProperties.php:241
-#: ../includes/definitions/albumProperties.php:247
-#: ../includes/definitions/albumProperties.php:276
-#: ../includes/definitions/albumProperties.php:306
-#: ../includes/definitions/albumProperties.php:357
-#: ../includes/definitions/albumProperties.php:363
-#: ../includes/definitions/albumProperties.php:369
-#: ../includes/definitions/albumProperties.php:375
-#: ../includes/definitions/albumProperties.php:385
-#: ../includes/definitions/albumProperties.php:391
-#: ../includes/definitions/albumProperties.php:433
-#: ../includes/definitions/albumProperties.php:445 ../html/userData.inc:13
-#: ../multi_create_user.php:190 ../poll_properties.php:96
-msgid "no"
+#: ../do_command.php:89 ../html/userData.inc:13 ../multi_create_user.php:189
+#: ../poll_properties.php:96
+msgid "Yes"
 msgstr ""
 
-#: ../do_command.php:75
+#: ../do_command.php:90 ../html/userData.inc:13 ../multi_create_user.php:189
+#: ../poll_properties.php:96
+msgid "No"
+msgstr ""
+
+#: ../do_command.php:92
 msgid "Start"
 msgstr ""
 
-#: ../do_command.php:84
+#: ../do_command.php:102
 #, php-format
 msgid "Rebuilding %d thumbnails..."
 msgstr ""
 
-#: ../do_command.php:93
+#: ../do_command.php:112
 msgid "Rebuilding 1 thumbnail..."
 msgstr ""
 
-#: ../ecard_form.php:43
+#: ../download.php:44 ../download.php:48
+msgid "Download album as archive"
+msgstr ""
+
+#: ../download.php:59
+#, php-format
+msgid "This album contains just one item in total."
+msgid_plural "This album contains %d items in total."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../download.php:60
+#, php-format
+msgid "One subalbum"
+msgid_plural "%d subalbums"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../download.php:60
+msgid "No subalbums"
+msgstr ""
+
+#: ../download.php:61
+#, php-format
+msgid "one photo/movie"
+msgid_plural "%d photos/movies"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../download.php:61
+msgid "no photo/movie"
+msgstr ""
+
+#: ../download.php:63
+#, php-format
+msgid "%s and %s."
+msgstr ""
+
+#: ../download.php:66
+#, php-format
+msgid "Approximitaly size of zipfile: %s"
+msgstr ""
+
+#: ../download.php:70
+msgid "Full Version"
+msgstr ""
+
+#: ../download.php:71
+msgid "Resized Version"
+msgstr ""
+
+#: ../download.php:73
+msgid "Download"
+msgstr ""
+
+#: ../download.php:79
+msgid "This album album is not empty, but contains no photo or movie! Download would'nt make sense."
+msgstr ""
+
+#: ../ecard_form.php:45
 msgid "Error processing e-card. Please try later."
 msgstr ""
 
-#: ../ecard_form.php:44
+#: ../ecard_form.php:46
 msgid "Some input fields are not correctly filled out. Please fill out."
 msgstr ""
 
-#: ../ecard_form.php:45
+#: ../ecard_form.php:47
 msgid "You have an e-card as attachment. Click to see."
 msgstr ""
 
-#: ../ecard_form.php:80 ../ecard_form.php:165
+#: ../ecard_form.php:85 ../ecard_form.php:170
 msgid "Send this photo as eCard"
 msgstr ""
 
-#: ../ecard_form.php:105
+#: ../ecard_form.php:110
 msgid "Error: to send an eCard you need to fill out all fields."
 msgstr ""
 
-#: ../ecard_form.php:106
+#: ../ecard_form.php:111
 msgid "Please fill this fields:"
 msgstr ""
 
-#: ../ecard_form.php:110
+#: ../ecard_form.php:115
 msgid "- Your Name"
 msgstr ""
 
-#: ../ecard_form.php:116
+#: ../ecard_form.php:121
 msgid "- Your Email"
 msgstr ""
 
-#: ../ecard_form.php:121
+#: ../ecard_form.php:126
 msgid "- Recipient's Name"
 msgstr ""
 
-#: ../ecard_form.php:127
+#: ../ecard_form.php:132
 msgid "- Recipient's Email"
 msgstr ""
 
-#: ../ecard_form.php:132
+#: ../ecard_form.php:137
 msgid "- Your Message"
 msgstr ""
 
-#: ../ecard_form.php:136
+#: ../ecard_form.php:141
 msgid "Please fill all fields next click >Send<."
 msgstr ""
 
-#: ../ecard_form.php:149
+#: ../ecard_form.php:154
 #, php-format
 msgid "You have entered more than %d characters"
 msgstr ""
 
-#: ../ecard_form.php:187
+#: ../ecard_form.php:192
 msgid "Your info"
 msgstr ""
 
-#: ../ecard_form.php:189
+#: ../ecard_form.php:194
 msgid "Recipient's info"
 msgstr ""
 
-#: ../ecard_form.php:192 ../ecard_form.php:203
+#: ../ecard_form.php:197 ../ecard_form.php:208
 msgid "Name"
 msgstr ""
 
-#: ../ecard_form.php:207 ../ecard_form.php:210
+#: ../ecard_form.php:212 ../ecard_form.php:215
 msgid "E-Mail"
 msgstr ""
 
-#: ../ecard_form.php:216
+#: ../ecard_form.php:221
 msgid "Choose a Stamp"
 msgstr ""
 
-#: ../ecard_form.php:221
+#: ../ecard_form.php:226
 #, php-format
 msgid "Stamp #%d"
 msgstr ""
 
-#: ../ecard_form.php:231
+#: ../ecard_form.php:236
 msgid "Subject:"
 msgstr ""
 
-#: ../ecard_form.php:232
+#: ../ecard_form.php:237
 #, php-format
 msgid "%s sent you an E-C@rd"
 msgstr ""
 
-#: ../ecard_form.php:236
+#: ../ecard_form.php:241
 msgid "Your Message:"
 msgstr ""
 
-#: ../ecard_form.php:255 ../edit_watermark.php:119 ../watermark_album.php:151
+#: ../ecard_form.php:260 ../edit_watermark.php:129 ../watermark_album.php:151
 msgid "Preview"
 msgstr ""
 
-#: ../ecard_form.php:256
+#: ../ecard_form.php:261
 msgid "Reset"
 msgstr ""
 
-#: ../ecard_form.php:259
+#: ../ecard_form.php:264
 msgid "Send eCard"
 msgstr ""
 
-#: ../ecard_form.php:267
+#: ../ecard_form.php:272
 #, php-format
 msgid "Your E-C@rd with the picture below has been sent to %s &lt;%s&gt;."
 msgstr ""
 
-#: ../ecard_form.php:271
+#: ../ecard_form.php:276
 msgid "Close this window"
 msgstr ""
 
-#: ../edit_appearance.php:57
+#: ../edit_appearance.php:56
 #, php-format
 msgid "Problem with input of field '%s'. %s"
 msgstr ""
@@ -1152,13 +1286,13 @@
 msgid "Warning: you have changed voters from %s to %s. It is advisable to reset the poll to remove all previous votes."
 msgstr ""
 
-#: ../edit_appearance.php:120 ../includes/definitions/albumProperties.php:319
-#: ../poll_properties.php:52 ../poll_properties.php:104
+#: ../edit_appearance.php:120 ../poll_properties.php:52
+#: ../poll_properties.php:104
 msgid "Everybody"
 msgstr ""
 
-#: ../edit_appearance.php:121 ../includes/definitions/albumProperties.php:319
-#: ../poll_properties.php:53 ../poll_properties.php:104
+#: ../edit_appearance.php:121 ../poll_properties.php:53
+#: ../poll_properties.php:104
 msgid "Logged in"
 msgstr ""
 
@@ -1166,7 +1300,7 @@
 msgid "untitled field"
 msgstr ""
 
-#: ../edit_appearance.php:186 ../extra_fields.php:120 ../lib/lang.php:711
+#: ../edit_appearance.php:186 ../extra_fields.php:120
 msgid "Alt Text / onMouseOver"
 msgstr ""
 
@@ -1179,21 +1313,21 @@
 msgid "Album Properties"
 msgstr ""
 
-#: ../edit_appearance.php:295
+#: ../edit_appearance.php:296
 msgid "Apply values to nested albums (except album title and summary)."
 msgstr ""
 
-#: ../edit_appearance.php:298 ../extra_fields.php:174
+#: ../edit_appearance.php:299 ../extra_fields.php:172
 #: ../poll_properties.php:140
 msgid "Apply"
 msgstr ""
 
-#: ../edit_appearance.php:299 ../extra_fields.php:175
+#: ../edit_appearance.php:300 ../extra_fields.php:173
 #: ../poll_properties.php:141
 msgid "Undo"
 msgstr ""
 
-#: ../edit_appearance.php:300 ../extra_fields.php:176
+#: ../edit_appearance.php:301 ../extra_fields.php:174
 #: ../poll_properties.php:142 ../rotate_photo.php:87
 msgid "Close"
 msgstr ""
@@ -1202,7 +1336,7 @@
 msgid "Year must be between 1969 and 2070"
 msgstr ""
 
-#: ../edit_caption.php:73 ../lib/albumItem.php:96
+#: ../edit_caption.php:73 ../lib/albumItem.php:104 ../lib/albumItem.php:105
 msgid "Edit Text"
 msgstr ""
 
@@ -1210,35 +1344,35 @@
 msgid "Edit Caption"
 msgstr ""
 
-#: ../edit_caption.php:89 ../includes/add_photos/add_form.inc:76
+#: ../edit_caption.php:89
 msgid "Caption"
 msgstr ""
 
-#: ../edit_caption.php:143
+#: ../edit_caption.php:142
 msgid "Photo Capture Date"
 msgstr ""
 
-#: ../edit_caption.php:146
+#: ../edit_caption.php:145
 msgid "Month"
 msgstr ""
 
-#: ../edit_caption.php:147
+#: ../edit_caption.php:146
 msgid "Day"
 msgstr ""
 
-#: ../edit_caption.php:148
+#: ../edit_caption.php:147
 msgid "Year"
 msgstr ""
 
-#: ../edit_caption.php:149
+#: ../edit_caption.php:148
 msgid "Hours"
 msgstr ""
 
-#: ../edit_caption.php:150
+#: ../edit_caption.php:149
 msgid "Minutes"
 msgstr ""
 
-#: ../edit_caption.php:151
+#: ../edit_caption.php:150
 msgid "Seconds"
 msgstr ""
 
@@ -1264,19 +1398,19 @@
 msgid "Choose which part of the image will compose your thumbnail:"
 msgstr ""
 
-#: ../edit_watermark.php:72 ../watermark_album.php:100
+#: ../edit_watermark.php:81 ../watermark_album.php:100
 msgid "Please select a watermark."
 msgstr ""
 
-#: ../edit_watermark.php:75 ../watermark_album.php:103
+#: ../edit_watermark.php:84 ../watermark_album.php:103
 msgid "Please select an alignment."
 msgstr ""
 
-#: ../edit_watermark.php:84 ../edit_watermark.php:88
+#: ../edit_watermark.php:93 ../edit_watermark.php:97
 msgid "Edit Watermark"
 msgstr ""
 
-#: ../edit_watermark.php:106
+#: ../edit_watermark.php:116
 msgid "Your image is a gif. Watermarking on animated gifs is currently not supported and will 'deface & unanimate' your picture."
 msgstr ""
 
@@ -1284,479 +1418,503 @@
 msgid "Configure Custom Fields"
 msgstr ""
 
-#: ../extra_fields.php:130 ../includes/definitions/albumProperties.php:410
+#: ../extra_fields.php:130
 msgid "Number of user defined custom fields"
 msgstr ""
 
-#: ../extra_fields.php:146
+#: ../extra_fields.php:145
 msgid "Field"
 msgstr ""
 
-#: ../extra_fields.php:171 ../poll_properties.php:137
+#: ../extra_fields.php:169 ../poll_properties.php:137
 msgid "Apply values to nested albums."
 msgstr ""
 
-#: ../includes/add_photos/add_admin.inc:26
-msgid "Admin help"
+#: ../help/imagemap.php:26
+msgid "ImageMap Help"
 msgstr ""
 
-#: ../includes/add_photos/add_admin.inc:30
-msgid "To install or upgrade the Gallery Remote Applets, please refer to "
+#: ../help/imagemap.php:33
+msgid "This is a help for working with gallerys so called 'imagemaps'"
 msgstr ""
 
-#: ../includes/add_photos/add_admin.inc:31
-msgid "the documentation page"
+#: ../help/imagemap.php:37
+msgid "An ImageMap is a predefined area of a picture, or a hotspot if you will."
 msgstr ""
 
-#: ../includes/add_photos/add_admin.inc:32
-msgid " on the Gallery web site."
+#: ../help/imagemap.php:38
+msgid "A sample usage scenario is a family photo, where you can apply an ImageMap for each of the family members featured in the photo."
 msgstr ""
 
-#: ../includes/add_photos/add_applet.inc:24
-msgid "Use the Gallery Remote Applet to upload pictures. It will take a short while to download."
+#: ../help/imagemap.php:39
+msgid "The defined area can contain information you want displayed when a user places his mouse pointer on top of that area."
 msgstr ""
 
-#: ../includes/add_photos/add_applet.inc:25
-#: ../includes/add_photos/add_applet_mini.inc:25
-msgid "If you don't have the Java Plugin 1.4 or later, you can use one of the other methods."
+#: ../help/imagemap.php:40
+msgid "You can add basic text, or even define an URL that gets activated when a user clicks the area you have defined as an ImageMap."
 msgstr ""
 
-#: ../includes/add_photos/add_applet.inc:43
-#: ../includes/add_photos/add_applet_mini.inc:41
-msgid "Your browser doesn't support applets; you should use one of the other upload methods."
+#: ../help/imagemap.php:44
+msgid "How to create an ImageMap in Gallery?"
 msgstr ""
 
-#: ../includes/add_photos/add_applet_mini.inc:24
-msgid "Use the Gallery Remote Mini Applet to upload pictures. It will take a short while to download."
+#: ../help/imagemap.php:47
+msgid "It's as easy as it is fun. First, you need to create your ImageMap, this is done by clicking on the image, in the position where you want the first corner of the ImageMap to be."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:31
-msgid "Click the <b>Browse</b> button to locate a photo to upload."
+#: ../help/imagemap.php:48
+msgid "Click again on a new spot, and you'll see that Gallery creates a polygon shape based on the two spots you have created."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:33
-msgid "Supported file types"
+#: ../help/imagemap.php:49
+msgid "Click again to create another spot. Add spots until your polygon shape surrounds the entire area you want to use as an ImageMap."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:37
-#: ../includes/add_photos/add_url.inc:31
-msgid "Tip:"
+#: ../help/imagemap.php:53
+msgid "When you are satisifed with your selection (e.g. a person or object), enter the describing text for your for your ImageMap in the 'Description' form on the left hand side."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:38
-msgid "Upload a compressed file (zip, rar, ace ...) full of photos and movies!"
+#: ../help/imagemap.php:54
+msgid "The text entered in the Description field, will be displayed when your users point their mousecursor over the ImageMap"
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:47
-msgid "1. Select the number of files you want to upload:"
+#: ../help/imagemap.php:58
+msgid "Optionally you can enter a Link-Url for your ImageMap, which is activated when a user clicks your ImageMap selection."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:52
-msgid "Optional:"
+#: ../help/imagemap.php:59
+msgid "When you satisfied, click the 'Save ImageMap' button at the left side."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:53
-msgid "Select the number of meta data files you want to upload:"
+#: ../help/imagemap.php:64
+msgid "How to update an ImageMap in Gallery?"
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:68
-msgid "2. Use the Browse button to find the photos on your computer"
+#: ../help/imagemap.php:67
+msgid "Currently you can only modify the text and the url for an ImageMap. The polygon for the ImageMap is currently not changeable."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:72
-#: ../includes/add_photos/add_form.inc:84
-msgid "File"
+#: ../help/imagemap.php:68
+msgid "If you do need to change the actual shape of the selection, you need to delete it and create a new selection in the shape you want."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:81
-msgid "3. Use the Browse button to find the meta data files on your computer"
+#: ../help/imagemap.php:71
+msgid "Select the ImageMap you want to edit in the box on the left hand side."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:93
-msgid "If no caption is set, what would you like the captions to default to?"
+#: ../help/imagemap.php:72
+msgid "The Image preview on the right hand side, will show which area is covered by the ImageMap currently selected."
 msgstr ""
 
-#: ../includes/add_photos/add_form.inc:106
-msgid "Upload Now"
+#: ../help/imagemap.php:73
+msgid "You can then modify your 'Description', or edit the 'Link-URL'."
 msgstr ""
 
-#: ../includes/add_photos/add_other.inc:24
-msgid "You can use one of these desktop agents to drag and drop photos from your desktop"
+#: ../help/imagemap.php:74
+msgid "When finished, click the 'Update ImageMap' button. "
 msgstr ""
 
-#: ../includes/add_photos/add_other.inc:29
-msgid "A Java application that runs on Mac, Windows and Unix"
+#: ../help/imagemap.php:79
+msgid "How to delete an ImageMap in Gallery?"
 msgstr ""
 
-#: ../includes/add_photos/add_other.inc:32
-msgid "Other methods"
+#: ../help/imagemap.php:82
+msgid "Just select the ImageMap(s) you want to delete in the box. Then click the 'Delete selectes ImageMap(s)' button."
 msgstr ""
 
-#: ../includes/add_photos/add_other.inc:33
-msgid "See a couple of other Methods for adding pictures to your Gallery on Gallerys Website."
+#: ../help/metadataOnUpload.php:26
+msgid "Metadata on Upload Help"
 msgstr ""
 
-#: ../includes/add_photos/add_other.inc:37
-msgid "Windows XP Publishing Agent"
+#: ../help/metadataOnUpload.php:32
+msgid "What is meant with metadata in this context ?"
 msgstr ""
 
-#: ../includes/add_photos/add_other.inc:38
-msgid "<i>Note:</i> this feature is still experimental!"
+#: ../help/metadataOnUpload.php:35
+msgid "Photos in Gallery have descriptive fields, like caption, title and other data fields. You can also define your own custom fields."
 msgstr ""
 
-#: ../includes/add_photos/add_url.inc:26
-msgid "Upload any images found at this location."
+#: ../help/metadataOnUpload.php:36
+msgid "This information is called Metadata."
 msgstr ""
 
-#: ../includes/add_photos/add_url.inc:27
-msgid "The location can either be a URL or a local directory on the server."
+#: ../help/metadataOnUpload.php:40
+msgid "Normally this info is added manually inside the Gallery for each photo."
 msgstr ""
 
-#: ../includes/add_photos/add_url.inc:32
-msgid "FTP images to a directory on your server then provide that path here!"
+#: ../help/metadataOnUpload.php:41
+msgid "You can also do this automatically during your uploads."
 msgstr ""
 
-#: ../includes/add_photos/add_url.inc:44
-msgid "What would you like the captions to default to?"
+#: ../help/metadataOnUpload.php:47
+msgid "How can i add the metadata?"
 msgstr ""
 
-#: ../includes/add_photos/add_url.inc:59
-msgid "Submit URL or directory"
+#: ../help/metadataOnUpload.php:50
+#, php-format
+msgid "Create a %s'csv-file (Comma Separated Values)'%s which contains the data you want associated with the files you are uploading."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:30
-msgid "Texts"
+#: ../help/metadataOnUpload.php:51
+msgid "Upload this file at the same time as you upload your files, you cannot upload it later and expect Gallery to import the metadata from it."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:34
-msgid "Album Summary"
+#: ../help/metadataOnUpload.php:56
+msgid "In which format has the data to be?"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:41
-msgid "Album Title"
+#: ../help/metadataOnUpload.php:59
+msgid "The first row must be the fieldnames, there is one mandatory field, some predefined fields and you can use your own custom fields."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:53 ../stats-wizard.php:134
-msgid "Layout"
+#: ../help/metadataOnUpload.php:60
+msgid "Order does not matter, but you have to you a <b>;</b> (Semicolon) as separator."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:57
-msgid "Background Image (URL)"
+#: ../help/metadataOnUpload.php:61
+#, php-format
+msgid "Mandatory: %s"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:63
-msgid "Font"
+#: ../help/metadataOnUpload.php:62
+#, php-format
+msgid "Predefined: %s, %s, %s"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:69
-msgid "Rows"
+#: ../help/metadataOnUpload.php:65
+msgid "Then follow the lines containing the info it self"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:75
-msgid "Columns"
+#: ../help/metadataOnUpload.php:68
+msgid "Example:"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:81
-msgid "Borders"
+#: ../help/metadataOnUpload.php:77
+msgid "Back to upload"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:88
-msgid "Colors"
+#: ../html/userData.inc:18
+msgid "Member file"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:91
-msgid "Background Color"
+#: ../html/userData.inc:26 ../login.php:85 ../login.php:147
+msgid "Username"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:97
-msgid "Text Color"
+#: ../html/userData.inc:45
+msgid "Old Password"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:103
-msgid "Link Color"
+#: ../html/userData.inc:52
+msgid "New Password"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:109
-msgid "Border color"
+#: ../html/userData.inc:57
+msgid "New Password (again)"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:116
-msgid "Frames"
+#: ../html/userData.inc:64
+msgid "Full Name"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:119
-msgid "Album Frame"
+#: ../html/userData.inc:71
+msgid "Email Address"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:125
-msgid "Thumb Frame"
+#: ../html/userData.inc:81
+msgid "Gallery language"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:131
-msgid "Image Frame"
+#: ../html/userData.inc:109
+msgid "User can change its own password"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:143
-msgid "Slideshow"
+#: ../html/userData.inc:117
+msgid "User can create albums"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:147
-msgid "Slideshow Type"
+#: ../html/userData.inc:125
+msgid "User is an admin"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:149
-msgid "Off"
+#: ../html/userData.inc:130
+msgid "you can't un-admin yourself"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:149
-msgid "Ordered"
+#: ../html/userData.inc:134
+msgid "Note: Admins can always create albums and are allowed to change their password."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:149
-msgid "Random"
+#: ../html/userData.inc:143
+msgid "Send email to user when account is created"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:153
-msgid "Include sub-albums in slideshow"
+#: ../html_wrap/album.footer.default:45 ../html_wrap/gallery.footer.default:51
+#: ../html_wrap/photo.footer.default:44
+#: ../html_wrap/slideshow.footer.default:47
+msgid "Donate to Gallery now!!"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:159
-msgid "Allow slideshow to loop"
+#: ../html_wrap/frames/golden/frame.def:4
+msgid "Gold Frame"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:165
-msgid "Slideshow Length"
-msgstr ""
+#: ../html_wrap/frames/golden/frame.def:5
+msgid "A fancy golden frame"
+msgstr ""
+
+#: ../html_wrap/frames/notebook/frame.def:5
+msgid "Spiral Notebook"
+msgstr ""
+
+#: ../html_wrap/frames/notebook/frame.def:6
+msgid "A white shadowed frame with spiral notebook binding on the left side"
+msgstr ""
+
+#: ../html_wrap/frames/polaroid/frame.def:3
+msgid "Polaroid"
+msgstr ""
+
+#: ../html_wrap/frames/polaroid/frame.def:4
+msgid "A photo with a large white frame, extra wide at the bottom edge"
+msgstr ""
+
+#: ../html_wrap/frames/polaroids/frame.def:3
+msgid "Polaroids"
+msgstr ""
 
-#: ../includes/definitions/albumProperties.php:178
-msgid "Sizes"
+#: ../html_wrap/frames/polaroids/frame.def:4
+msgid "A stack of photos with a large white frame, extra wide at the bottom edge"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:182
-msgid "Thumbnail size"
+#: ../html_wrap/frames/postage_stamp/frame.def:2
+msgid "Postage Stamp"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:189
-msgid "Maximum dimensions of intermediate sized images"
+#: ../html_wrap/frames/postage_stamp/frame.def:3
+msgid "A simple postage stamp effect."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:191
-#: ../includes/definitions/albumProperties.php:205
-msgid "off"
+#: ../html_wrap/frames/shadows/frame.def:3
+msgid "Shadows"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:196
-msgid "Maximum file size of intermediate sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"
+#: ../html_wrap/frames/shadows/frame.def:4
+msgid "PNG transparent shadows falling to the right and below. Proper transparency, so should work against most backgrounds, except black."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:203
-msgid "Maximum dimensions of full sized images"
+#: ../html_wrap/frames/simple_book/frame.def:3
+msgid "Original Style"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:205
+#: ../html_wrap/frames/simple_book/frame.def:4
 #, php-format
-msgid "%d (%d MPix)"
+msgid "The original %s album frame style."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:210
-msgid "Maximum file size of full sized JPEG/PNG images in kilobytes (0 or blank for no size restriction)"
+#: ../html_wrap/frames/wooden/frame.def:4
+msgid "Wood Frame"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:223
-msgid "Display"
+#: ../html_wrap/frames/wooden/frame.def:5
+msgid "A textured wooden frame"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:227
-msgid "Display click counter for this album?"
+#: ../html_wrap/wrapper.footer.default:62
+#, php-format
+msgid "Debug ON ! Level %s"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:233
-msgid "Display owners name with caption"
+#: ../html_wrap/wrapper.header.default:80 ../view_photo_properties.php:31
+msgid "Security violation"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:239
-msgid "Display clickable image dimensions"
+#: ../imagemap.php:165
+msgid "Original photo"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:245
-msgid "Display EXIF data?"
+#: ../imagemap.php:215
+msgid "Here you can create, edit or delete imagemaps for the selected photo."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:258
-msgid "Services"
+#: ../imagemap.php:217
+msgid "Click the questionmark icon for helpful instructions."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:262
-msgid "Which photo printing services<br>do you want to let visitors use?"
+#: ../imagemap.php:236
+msgid "Clear and reset canvas"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:274
-msgid "Enable Ecards ?"
+#: ../imagemap.php:238
+msgid "Optional link-url"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:287 ../poll_properties.php:72
-#: ../poll_properties.php:76
-msgid "Poll Properties"
+#: ../imagemap.php:240
+msgid "Description"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:291 ../poll_properties.php:87
-msgid "Type of poll for this album"
+#: ../imagemap.php:242
+msgid "Save Imagemap"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:293 ../poll_properties.php:88
-msgid "Rank"
+#: ../imagemap.php:249
+msgid "Select entries to show image area in your photo."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:293 ../poll_properties.php:88
-msgid "Critique"
+#: ../imagemap.php:257
+msgid "Delete selected ImageMap(s)"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:297 ../poll_properties.php:91
-msgid "Number of voting options"
+#: ../imagemap.php:260
+msgid "Update selected ImageMap(s)"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:304 ../poll_properties.php:95
-msgid "Show results of voting to all visitors?"
+#: ../imagemap.php:262
+msgid "Be aware, that the text of ALL selected entries will be updated!"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:310 ../poll_properties.php:99
-msgid "Number of lines of results graph to display on the album page"
+#: ../imagemap.php:265
+msgid "No ImageMaps"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:317
-msgid "Who can vote?"
+#: ../includes/add_photos/add_applet.inc:24
+msgid "Use the Gallery Remote Applet to upload pictures. It will take a short while to download."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:323 ../poll_properties.php:107
-msgid "Orientation of vote choices"
+#: ../includes/add_photos/add_applet.inc:25
+#: ../includes/add_photos/add_applet_mini.inc:25
+msgid "If you don't have the Java Plugin 1.4 or later, you can use one of the other methods."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:325 ../poll_properties.php:108
-#: ../rotate_photo.php:82
-msgid "Horizontal"
+#: ../includes/add_photos/add_applet.inc:43
+#: ../includes/add_photos/add_applet_mini.inc:41
+msgid "Your browser doesn't support applets; you should use one of the other upload methods."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:325 ../poll_properties.php:108
-#: ../rotate_photo.php:85
-msgid "Vertical"
+#: ../includes/add_photos/add_applet_mini.inc:24
+msgid "Use the Gallery Remote Mini Applet to upload pictures. It will take a short while to download."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:330 ../poll_properties.php:111
-msgid "Vote hint"
+#: ../includes/add_photos/add_form.inc:27
+msgid "Click the <b>Browse</b> button to locate a photo to upload."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:337
-msgid "Voting Options"
+#: ../includes/add_photos/add_form.inc:28
+msgid "After you added a file, you can add more files on the sane way, just use the browse button as often as you want."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:341 ../poll_properties.php:120
-msgid "Displayed Value"
+#: ../includes/add_photos/add_form.inc:29
+msgid "Its possible to enter a manual caption for each item you upload, or you can gallery set the captions."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:341 ../poll_properties.php:121
-msgid "Points"
+#: ../includes/add_photos/add_form.inc:30
+#, php-format
+msgid "Supported file types: %s"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:351
-msgid "Misc"
+#: ../includes/add_photos/add_form.inc:38 ../view_album.php:562
+msgid " or "
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:355
-msgid "Add new items at beginning of album"
+#: ../includes/add_photos/add_form.inc:41
+#, php-format
+msgid "You can also upload compressed archive files (%s) full of photos and movies!"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:361
-msgid "Show <i>Return to</i> link"
+#: ../includes/add_photos/add_form.inc:51
+msgid "Use the Browse button to find the photos on your computer"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:367
-msgid "Offer visitors ability to specify<br>preference for full-size or resized images"
+#: ../includes/add_photos/add_form.inc:52
+msgid "Files:"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:373
-msgid "Auto fit-to-window for<br>images without a resized copy"
+#: ../includes/add_photos/add_form.inc:62
+msgid "Do the same for optional metafiles."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:380 ../lib/albumItem.php:188
-msgid "Permissions"
+#: ../includes/add_photos/add_form.inc:63
+msgid "Help"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:383
-msgid "Allow item owners to modify their images"
+#: ../includes/add_photos/add_form.inc:68
+msgid "MetaFiles:"
+msgstr ""
+
+#: ../includes/add_photos/add_form.inc:76
+msgid "If no caption is set, what would you like the captions to default to?"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:389
-msgid "Allow item owners to delete their images"
+#: ../includes/add_photos/add_form.inc:89
+msgid "Upload Now"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:401
-msgid "Custom Fields"
+#: ../includes/add_photos/add_other.inc:24
+msgid "You can use one of these desktop agents to drag and drop photos from your desktop"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:428
-msgid "Microthumbs"
+#: ../includes/add_photos/add_other.inc:29
+msgid "A Java application that runs on Mac, Windows and Unix"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:431
-msgid "Use micro thumb photo navigation"
+#: ../includes/add_photos/add_other.inc:32
+msgid "Other methods"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:433
-msgid "both"
+#: ../includes/add_photos/add_other.inc:33
+msgid "See a couple of other Methods for adding pictures to your Gallery on Gallerys Website."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:437
-msgid "Micro thumb style"
+#: ../includes/add_photos/add_other.inc:37
+msgid "Windows XP Publishing Agent"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:439
-msgid "Fixed"
+#: ../includes/add_photos/add_other.inc:38
+msgid "<i>Note:</i> this feature is still experimental!"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:439
-msgid "Dynamic"
+#: ../includes/add_photos/add_url.inc:25
+msgid "Upload any images found at this location."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:443
-msgid "Show first & last micro thumb"
+#: ../includes/add_photos/add_url.inc:26
+msgid "The location can either be a URL or a local directory on the server."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:449
-msgid "Number of previous thumbs"
+#: ../includes/add_photos/add_url.inc:29
+msgid "Tip:"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:455
-msgid "Number of next thumbs"
+#: ../includes/add_photos/add_url.inc:30
+msgid "FTP images to a directory on your server then provide that path here!"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:461
-msgid "Position of micro-thumb navigation bar"
+#: ../includes/add_photos/add_url.inc:39
+msgid "What would you like the captions to default to?"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:463
-#: ../layout/watermarkform.inc:111
-msgid "Top"
+#: ../includes/add_photos/add_url.inc:54
+msgid "Submit URL or directory"
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:463
-msgid "Both"
+#: ../includes/add_photos/captionOptions.inc.php:23
+msgid "Leave blank."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:463
-#: ../layout/watermarkform.inc:127
-msgid "Bottom"
+#: ../includes/add_photos/captionOptions.inc.php:25
+msgid "Use filename as caption."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:467
-msgid "Height of micro-thumbs in navigation bar"
+#: ../includes/add_photos/captionOptions.inc.php:27
+msgid "Use file creation date/time stamp."
 msgstr ""
 
-#: ../includes/definitions/albumProperties.php:474
-msgid "Bonus to height of current micro-thumb (pixels)"
+#: ../includes/add_photos/captionOptions.inc.php:33
+msgid "Set photo captions with file capture times."
 msgstr ""
 
-#: ../includes/definitions/services.php:45
-msgid "mPUSH is a photo service that adds the ability to send thumbnail images to your, or a friend's, cellphone for a small fee."
+#: ../includes/add_photos/captionOptions.inc.php:38
+msgid "For the last two options Gallery will use the format you specified in the config for date/time strings."
 msgstr ""
 
 #: ../includes/errors/configure_help.php:2
@@ -2069,213 +2227,76 @@
 msgid "Show the add comment link"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:110
-msgid "Show the add vote link"
-msgstr ""
-
-#: ../includes/stats/stats.inc.php:113
+#: ../includes/stats/stats.inc.php:114
 msgid "Show the album owners"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:116
+#: ../includes/stats/stats.inc.php:117
 msgid "Show timing basic information"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:122
+#: ../includes/stats/stats.inc.php:123
 msgid "Reverses sort order - see above"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:125
+#: ../includes/stats/stats.inc.php:126
 msgid "Thumb size in pixels"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:128
+#: ../includes/stats/stats.inc.php:129
 msgid "Controls the number of photos displayed on one page"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:131
+#: ../includes/stats/stats.inc.php:132
 msgid "Controls the maximum number of photos listed, -1 for all"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:134
+#: ../includes/stats/stats.inc.php:135
 msgid "Use Grid Layout"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:137
+#: ../includes/stats/stats.inc.php:138
 msgid "Controls the number of rows to display in grid mode"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:140
+#: ../includes/stats/stats.inc.php:141
 msgid "Controls the number of columns to display in grid mode"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:142
+#: ../includes/stats/stats.inc.php:143
 msgid "Above the comments"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:143
+#: ../includes/stats/stats.inc.php:144
 msgid "In the caption line"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:144
+#: ../includes/stats/stats.inc.php:145
 msgid "Above the stats"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:145
+#: ../includes/stats/stats.inc.php:146
 msgid "Below the comments"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:146
+#: ../includes/stats/stats.inc.php:147
 msgid "Position of the add vote and add comment links"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:151
+#: ../includes/stats/stats.inc.php:152
 msgid "Filter by year"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:154
+#: ../includes/stats/stats.inc.php:155
 msgid "Filter by month"
 msgstr ""
 
-#: ../includes/stats/stats.inc.php:157
+#: ../includes/stats/stats.inc.php:158
 msgid "Filter by day"
 msgstr ""
 
-#: ../html/userData.inc:18
-msgid "Member file"
-msgstr ""
-
-#: ../html/userData.inc:26 ../lib/mail.php:194 ../login.php:85
-#: ../login.php:147
-msgid "Username"
-msgstr ""
-
-#: ../html/userData.inc:45
-msgid "Old Password"
-msgstr ""
-
-#: ../html/userData.inc:52
-msgid "New Password"
-msgstr ""
-
-#: ../html/userData.inc:57
-msgid "New Password (again)"
-msgstr ""
-
-#: ../html/userData.inc:64
-msgid "Full Name"
-msgstr ""
-
-#: ../html/userData.inc:71
-msgid "Email Address"
-msgstr ""
-
-#: ../html/userData.inc:81
-msgid "Gallery language"
-msgstr ""
-
-#: ../html/userData.inc:109
-msgid "User can change its own password"
-msgstr ""
-
-#: ../html/userData.inc:117
-msgid "User can create albums"
-msgstr ""
-
-#: ../html/userData.inc:125
-msgid "User is an admin"
-msgstr ""
-
-#: ../html/userData.inc:130
-msgid "you can't un-admin yourself"
-msgstr ""
-
-#: ../html/userData.inc:134
-msgid "Note: Admins can always create albums and are allowed to change their password."
-msgstr ""
-
-#: ../html/userData.inc:143
-msgid "Send email to user when account is created"
-msgstr ""
-
-#: ../html_wrap/album.footer.default:45 ../html_wrap/gallery.footer.default:51
-#: ../html_wrap/photo.footer.default:44
-#: ../html_wrap/slideshow.footer.default:47
-msgid "Donate to Gallery now!!"
-msgstr ""
-
-#: ../html_wrap/wrapper.footer.default:62
-#, php-format
-msgid "Debug ON ! Level %s"
-msgstr ""
-
-#: ../html_wrap/wrapper.header.default:80 ../view_photo_properties.php:31
-msgid "Security violation"
-msgstr ""
-
-#: ../html_wrap/frames/notebook/frame.def:5
-msgid "Spiral Notebook"
-msgstr ""
-
-#: ../html_wrap/frames/notebook/frame.def:6
-msgid "A white shadowed frame with spiral notebook binding on the left side"
-msgstr ""
-
-#: ../html_wrap/frames/shadows/frame.def:3
-msgid "Shadows"
-msgstr ""
-
-#: ../html_wrap/frames/shadows/frame.def:4
-msgid "PNG transparent shadows falling to the right and below. Proper transparency, so should work against most backgrounds, except black."
-msgstr ""
-
-#: ../html_wrap/frames/polaroid/frame.def:3
-msgid "Polaroid"
-msgstr ""
-
-#: ../html_wrap/frames/polaroid/frame.def:4
-msgid "A photo with a large white frame, extra wide at the bottom edge"
-msgstr ""
-
-#: ../html_wrap/frames/polaroids/frame.def:3
-msgid "Polaroids"
-msgstr ""
-
-#: ../html_wrap/frames/polaroids/frame.def:4
-msgid "A stack of photos with a large white frame, extra wide at the bottom edge"
-msgstr ""
-
-#: ../html_wrap/frames/golden/frame.def:4
-msgid "Gold Frame"
-msgstr ""
-
-#: ../html_wrap/frames/golden/frame.def:5
-msgid "A fancy golden frame"
-msgstr ""
-
-#: ../html_wrap/frames/postage_stamp/frame.def:2
-msgid "Postage Stamp"
-msgstr ""
-
-#: ../html_wrap/frames/postage_stamp/frame.def:3
-msgid "A simple postage stamp effect."
-msgstr ""
-
-#: ../html_wrap/frames/simple_book/frame.def:3
-msgid "Original Style"
-msgstr ""
-
-#: ../html_wrap/frames/simple_book/frame.def:4
-#, php-format
-msgid "The original %s album frame style."
-msgstr ""
-
-#: ../html_wrap/frames/wooden/frame.def:4
-msgid "Wood Frame"
-msgstr ""
-
-#: ../html_wrap/frames/wooden/frame.def:5
-msgid "A textured wooden frame"
+#: ../js/multifile.js.php:143
+msgid "Caption:"
 msgstr ""
 
 #: ../layout/adminAlbumCommands.inc:6
@@ -2290,23 +2311,23 @@
 msgid "reorder album"
 msgstr ""
 
-#: ../layout/adminAlbumCommands.inc:13 ../view_album.php:249
+#: ../layout/adminAlbumCommands.inc:13
 msgid "rename album"
 msgstr ""
 
-#: ../layout/adminAlbumCommands.inc:20 ../view_album.php:262
+#: ../layout/adminAlbumCommands.inc:20
 msgid "edit captions"
 msgstr ""
 
-#: ../layout/adminAlbumCommands.inc:27 ../view_album.php:297
+#: ../layout/adminAlbumCommands.inc:27
 msgid "permissions"
 msgstr ""
 
-#: ../layout/adminAlbumCommands.inc:28 ../view_album.php:286
+#: ../layout/adminAlbumCommands.inc:28
 msgid "properties"
 msgstr ""
 
-#: ../layout/adminAlbumCommands.inc:35 ../view_album.php:396
+#: ../layout/adminAlbumCommands.inc:35 ../view_album.php:412
 msgid "view&nbsp;comments"
 msgstr ""
 
@@ -2314,7 +2335,7 @@
 msgid "watermark&nbsp;album"
 msgstr ""
 
-#: ../layout/breadcrumb.inc:39
+#: ../layout/breadcrumb.inc:40
 msgid "Logged in as:"
 msgstr ""
 
@@ -2323,7 +2344,7 @@
 msgid "From: %s"
 msgstr ""
 
-#: ../layout/commentboxbottom.inc:11 ../stats.php:965 ../util.php:169
+#: ../layout/commentboxbottom.inc:11 ../stats.php:969
 msgid "add comment"
 msgstr ""
 
@@ -2339,11 +2360,11 @@
 msgid "Album contains no comments"
 msgstr ""
 
-#: ../layout/commentdraw.inc:23 ../lib/albumItem.php:259
+#: ../layout/commentdraw.inc:23 ../lib/albumItem.php:327
 msgid "From:"
 msgstr ""
 
-#: ../layout/commentdraw.inc:48 ../lib/albumItem.php:233
+#: ../layout/commentdraw.inc:48 ../lib/albumItem.php:301
 msgid "delete comment"
 msgstr ""
 
@@ -2363,7 +2384,7 @@
 msgid "Last Page"
 msgstr ""
 
-#: ../layout/navigator.inc:89 ../layout/navigator.inc:115
+#: ../layout/navigator.inc:79 ../layout/navigator.inc:105
 #, php-format
 msgid "Jump to page %d"
 msgstr ""
@@ -2384,13 +2405,13 @@
 msgid "Last Photo"
 msgstr ""
 
-#: ../layout/navphoto.inc:64
+#: ../layout/navphoto.inc:56
 #, php-format
 msgid "%d of %d"
 msgstr ""
 
-#: ../layout/watermarkform.inc:84 ../lib/albumItem.php:118
-msgid "Watermark"
+#: ../layout/watermarkform.inc:84
+msgid "Watermark:"
 msgstr ""
 
 #: ../layout/watermarkform.inc:88
@@ -2408,422 +2429,172 @@
 msgstr ""
 
 #: ../layout/watermarkform.inc:105
-msgid "Alignment"
+msgid "Alignment:"
 msgstr ""
 
-#: ../layout/watermarkform.inc:109
+#: ../layout/watermarkform.inc:110
 msgid "Upper&nbsp;Left"
 msgstr ""
 
-#: ../layout/watermarkform.inc:113
+#: ../layout/watermarkform.inc:112
+msgid "Top"
+msgstr ""
+
+#: ../layout/watermarkform.inc:114
 msgid "Upper&nbsp;Right"
 msgstr ""
 
-#: ../layout/watermarkform.inc:117
+#: ../layout/watermarkform.inc:118
 msgid "Left"
 msgstr ""
 
-#: ../layout/watermarkform.inc:119
+#: ../layout/watermarkform.inc:120
 msgid "Center"
 msgstr ""
 
-#: ../layout/watermarkform.inc:121
+#: ../layout/watermarkform.inc:122
 msgid "Right"
 msgstr ""
 
-#: ../layout/watermarkform.inc:125
+#: ../layout/watermarkform.inc:126
 msgid "Lower&nbsp;Left"
 msgstr ""
 
-#: ../layout/watermarkform.inc:129
+#: ../layout/watermarkform.inc:128
+msgid "Bottom"
+msgstr ""
+
+#: ../layout/watermarkform.inc:130
 msgid "Lower&nbsp;Right"
 msgstr ""
 
-#: ../layout/watermarkform.inc:142
+#: ../layout/watermarkform.inc:144
 msgid "Preview Size"
 msgstr ""
 
-#: ../layout/watermarkform.inc:145
+#: ../layout/watermarkform.inc:147
 msgid "Resized"
 msgstr ""
 
-#: ../layout/watermarkform.inc:148
+#: ../layout/watermarkform.inc:150
 msgid "Full"
 msgstr ""
 
-#: ../layout/watermarkform.inc:160
+#: ../layout/watermarkform.inc:162
 msgid "Watermark subalbums"
 msgstr ""
 
-#: ../layout/watermarkform.inc:162
+#: ../layout/watermarkform.inc:164
 msgid "Apply watermark to"
 msgstr ""
 
-#: ../layout/watermarkform.inc:163
+#: ../layout/watermarkform.inc:165
 msgid "All photos"
 msgstr ""
 
-#: ../layout/watermarkform.inc:164
+#: ../layout/watermarkform.inc:166
 msgid "Only sized photos"
 msgstr ""
 
-#: ../layout/watermarkform.inc:165
+#: ../layout/watermarkform.inc:167
 msgid "Only full photos"
 msgstr ""
 
-#: ../lib/Form.php:69
-msgid "Check All"
-msgstr ""
-
-#: ../lib/Form.php:71
-msgid "Clear All"
-msgstr ""
-
-#: ../lib/Form.php:73
-msgid "Invert Selection"
-msgstr ""
-
-#: ../lib/Form.php:233
-msgid "Colorpicker"
-msgstr ""
-
-#: ../lib/mail.php:43
-#, php-format
-msgid "Note: This is an automatically generated email message sent from the %s website.  If you have received this in error, please ignore this message."
-msgstr ""
-
-#: ../lib/mail.php:45
-#, php-format
-msgid "Report abuse to %s"
-msgstr ""
-
-#: ../lib/mail.php:71
-msgid "Email not sent as it is disabled for this gallery"
-msgstr ""
-
-#: ../lib/mail.php:77
-#, php-format
-msgid "Email not sent to %s as it is not a valid address"
-msgstr ""
-
-#: ../lib/mail.php:84
-msgid "Email not sent as no reciepient address provided"
-msgstr ""
-
-#: ../lib/mail.php:95
-#, php-format
-msgid "Sender address %s is invalid, using %s."
-msgstr ""
-
-#: ../lib/mail.php:126
-msgid "This is a HTML mail, please have a look at the Attachment."
-msgstr ""
-
-#: ../lib/mail.php:164
-#, php-format
-msgid ""
-"Hi !!FULLNAME!!,\n"
-"\n"
-"Congratulations.  You have just been subscribed to %s at %s.  Your account name is !!USERNAME!!.  Please visit the gallery soon, and create a password by clicking this link:\n"
-"\n"
-"!!NEWPASSWORDLINK!!\n"
-"\n"
-"Gallery @ %s Administrator."
-msgstr ""
-
-#: ../lib/mail.php:173 ../lib/mail.php:175
-msgid "gallery title"
-msgstr ""
-
-#: ../lib/mail.php:174
-msgid "gallery URL"
-msgstr ""
-
-#: ../lib/mail.php:190
-msgid "The Url to your Gallery."
-msgstr ""
-
-#: ../lib/mail.php:191
-msgid "Title of your Gallery."
-msgstr ""
-
-#: ../lib/mail.php:192
-msgid "Admin email(s)"
-msgstr ""
-
-#: ../lib/mail.php:193
-msgid "Password for the newly created user."
-msgstr ""
-
-#: ../lib/mail.php:195
-msgid "Fullname"
-msgstr ""
-
-#: ../lib/mail.php:196
-msgid "Will be replaced by a link the new user can click on to create a new password."
-msgstr ""
-
-#: ../lib/mail.php:233
-#, php-format
-msgid "New comment for %s"
-msgstr ""
-
-#: ../lib/mail.php:242
-#, php-format
-msgid "A new comment has been added to Gallery: %s"
-msgstr ""
-
-#: ../lib/mail.php:244
-#, php-format
-msgid "The comment was added by %s to this %s in this %s."
-msgstr ""
-
-#: ../lib/mail.php:246
-msgid "Item"
-msgstr ""
-
-#: ../lib/mail.php:248
-msgid "*** Begin comment ***"
-msgstr ""
-
-#: ../lib/mail.php:250
-msgid "***End comment ***"
-msgstr ""
-
-#: ../lib/mail.php:251
-msgid "If you no longer wish to receive emails about this image, follow the links above and ensure that 'Email me when comments are added' is unchecked in both the photo and album page (You'll need to login first)."
-msgstr ""
-
-#: ../lib/mail.php:254
-#, php-format
-msgid "New comment for %s."
-msgstr ""
-
-#: ../lib/mail.php:265
-#, php-format
-msgid "FAILED"
-msgstr ""
-
-#: ../lib/mail.php:275
-msgid "Email activity"
-msgstr ""
-
-#: ../lib/voting.php:215 ../view_album.php:557 ../view_album.php:573
-#: ../view_album.php:915
-msgid "Vote"
-msgstr ""
-
-#: ../lib/voting.php:253
-msgid "Total points in brackets"
-msgstr ""
-
-#: ../lib/voting.php:257
-msgid "Average points in brackets"
-msgstr ""
-
-#: ../lib/voting.php:275 ../poll_results.php:148 ../view_album.php:487
-#: ../view_album.php:785
-#, php-format
-msgid "Album: %s"
-msgstr ""
-
-#: ../lib/voting.php:303
-#, php-format
-msgid "1 voter"
-msgid_plural "%d voters"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../lib/voting.php:315
-#, php-format
-msgid "Result from one voter"
-msgid_plural "Result of %d voters"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../lib/voting.php:324
-#, php-format
-msgid "%s: %s points; "
-msgstr ""
-
-#: ../lib/voting.php:329
-#, php-format
-msgid "Key - %s"
-msgstr ""
-
-#: ../lib/voting.php:335 ../poll_results.php:163
-msgid "No votes so far."
-msgstr ""
-
-#: ../lib/voting.php:356
-msgid "Poll results:"
-msgstr ""
-
-#: ../lib/voting.php:359
-msgid "No votes"
-msgstr ""
-
-#: ../lib/voting.php:363
-#, php-format
-msgid "Number %d overall."
-msgstr ""
-
-#: ../lib/voting.php:367
-#, php-format
-msgid "%s: %s"
-msgstr ""
-
-#: ../lib/voting.php:368
-#, php-format
-msgid "one vote"
-msgid_plural "%d votes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../lib/albumItem.php:46 ../rearrange.php:112
+#: ../lib/albumItem.php:78 ../rearrange.php:112
 msgid "Movie"
 msgstr ""
 
-#: ../lib/albumItem.php:50
+#: ../lib/albumItem.php:81
 msgid "Photo"
 msgstr ""
 
-#: ../lib/albumItem.php:62
-#, php-format
-msgid "%s actions"
-msgstr ""
-
-#: ../lib/albumItem.php:80
-msgid "Edit Title"
-msgstr ""
-
-#: ../lib/albumItem.php:84
-msgid "Edit Description"
-msgstr ""
-
-#: ../lib/albumItem.php:90 ../rename_album.php:39 ../rename_album.php:43
-msgid "Rename Album"
-msgstr ""
-
-#: ../lib/albumItem.php:105
+#: ../lib/albumItem.php:109 ../lib/albumItem.php:110
 msgid "Edit Thumbnail"
 msgstr ""
 
-#: ../lib/albumItem.php:109
+#: ../lib/albumItem.php:114 ../lib/albumItem.php:115
 #, php-format
 msgid "Rotate/Flip"
 msgstr ""
 
-#: ../lib/albumItem.php:113
+#: ../lib/albumItem.php:119 ../lib/albumItem.php:120
 msgid "Resize"
 msgstr ""
 
-#: ../lib/albumItem.php:127
-#, php-format
-msgid "Set as highlight"
+#: ../lib/albumItem.php:125 ../lib/albumItem.php:126
+msgid "Watermark"
 msgstr ""
 
-#: ../lib/albumItem.php:134
-msgid "Reset Counter"
+#: ../lib/albumItem.php:132 ../lib/albumItem.php:133
+msgid "ImageMap"
 msgstr ""
 
-#: ../lib/albumItem.php:139
-msgid "Move"
+#: ../lib/albumItem.php:142 ../lib/albumItem.php:143
+msgid "Edit Title"
 msgstr ""
 
-#: ../lib/albumItem.php:143
-msgid "Reorder"
+#: ../lib/albumItem.php:147 ../lib/albumItem.php:148
+msgid "Edit Description"
 msgstr ""
 
-#: ../lib/albumItem.php:148
-msgid "Copy"
+#: ../lib/albumItem.php:153 ../lib/albumItem.php:154 ../rename_album.php:39
+#: ../rename_album.php:43
+msgid "Rename Album"
 msgstr ""
 
-#: ../lib/albumItem.php:158
-msgid "Show"
+#: ../lib/albumItem.php:159 ../lib/albumItem.php:160
+msgid "Reset Counter"
 msgstr ""
 
-#: ../lib/albumItem.php:163
-msgid "Hide"
+#: ../lib/albumItem.php:171 ../lib/albumItem.php:172 ../view_album.php:313
+msgid "Permissions"
 msgstr ""
 
-#: ../lib/albumItem.php:194 ../watermark_album.php:114
-#: ../watermark_album.php:118
+#: ../lib/albumItem.php:179 ../lib/albumItem.php:180
+#: ../watermark_album.php:114 ../watermark_album.php:118
 msgid "Watermark Album"
 msgstr ""
 
-#: ../lib/albumItem.php:200
+#: ../lib/albumItem.php:186 ../lib/albumItem.php:187
 msgid "View Comments"
 msgstr ""
 
-#: ../lib/albumItem.php:211
-msgid "Photo properties"
-msgstr ""
-
-#: ../lib/albumItem.php:219 ../photo_owner.php:78 ../photo_owner.php:82
-msgid "Change Owner"
-msgstr ""
-
-#: ../lib/colorpicker.php:40
-msgid "Color Picker"
-msgstr ""
-
-#: ../lib/colorpicker.php:52
-msgid "The Options window has closed. Exiting."
-msgstr ""
-
-#: ../lib/colorpicker.php:58
-msgid "This window must be called from an Options window"
-msgstr ""
-
-#: ../lib/lang.php:697
-msgid "Upload Date"
-msgstr ""
-
-#: ../lib/lang.php:699
-msgid "Image Size"
-msgstr ""
-
-#: ../lib/lang.php:700
-msgid "Additional EXIF Data"
-msgstr ""
-
-#: ../lib/lang.php:709
-msgid "Description"
+#: ../lib/albumItem.php:196 ../lib/albumItem.php:213 ../lib/albumItem.php:214
+msgid "Move"
 msgstr ""
 
-#: ../lib/lang.php:710
-msgid "description"
+#: ../lib/albumItem.php:197
+msgid "Reorder"
 msgstr ""
 
-#: ../lib/valchecks.php:68
-msgid "Value was set to given default. Because the original value is not numeric."
+#: ../lib/albumItem.php:204 ../lib/albumItem.php:205
+msgid "Set as highlight"
 msgstr ""
 
-#: ../lib/valchecks.php:70
-msgid "The given Value is not numeric."
+#: ../lib/albumItem.php:220 ../lib/albumItem.php:221
+msgid "Copy"
 msgstr ""
 
-#: ../lib/valchecks.php:76
-msgid "Value was set to given default. Because the original value is not a valid Integer"
+#: ../lib/albumItem.php:226 ../lib/albumItem.php:227 ../photo_owner.php:78
+#: ../photo_owner.php:82
+msgid "Change Owner"
 msgstr ""
 
-#: ../lib/valchecks.php:78
-msgid "The given Value not a valid Integer."
+#: ../lib/albumItem.php:236 ../lib/albumItem.php:237
+msgid "Show"
 msgstr ""
 
-#: ../lib/messages.php:26
-msgid "Error:"
+#: ../lib/albumItem.php:242 ../lib/albumItem.php:243
+msgid "Hide"
 msgstr ""
 
-#: ../lib/messages.php:74
-#, php-format
-msgid "Generated by %s v%s"
+#: ../lib/albumItem.php:274 ../lib/albumItem.php:275
+msgid "Photo properties"
 msgstr ""
 
-#: ../lib/messages.php:76
+#: ../lib/albumItem.php:287 ../lib/albumItem.php:288
 #, php-format
-msgid "Powered by %s v%s"
+msgid "%s actions"
 msgstr ""
 
 #: ../login.php:51
@@ -2898,7 +2669,7 @@
 msgid "There is no valid email for this account.  Please contact %s administrators for a new password"
 msgstr ""
 
-#: ../login.php:140 ../new_password.php:35 ../new_password.php:39
+#: ../login.php:140 ../new_password.php:38 ../new_password.php:42
 msgid "Not a valid username"
 msgstr ""
 
@@ -2906,59 +2677,67 @@
 msgid "Send me my password"
 msgstr ""
 
+#: ../login.php:159
+msgid "No account at all?"
+msgstr ""
+
+#: ../login.php:161
+msgid "Register a new account."
+msgstr ""
+
 #: ../manage_users.php:43
 msgid "Please select a user"
 msgstr ""
 
-#: ../manage_users.php:64 ../manage_users.php:68
+#: ../manage_users.php:65 ../manage_users.php:69
 msgid "Manage Users"
 msgstr ""
 
-#: ../manage_users.php:79
+#: ../manage_users.php:78
 msgid "You can create, modify and delete users here."
 msgstr ""
 
-#: ../manage_users.php:83
+#: ../manage_users.php:82
 msgid "There are no users!  Create one."
 msgstr ""
 
-#: ../manage_users.php:93
+#: ../manage_users.php:88
 msgid "To select multiple users (only recognized for deletion), hold down the Control (PC) or Command (Mac) key while clicking."
 msgstr ""
 
-#: ../manage_users.php:97
+#: ../manage_users.php:92
 msgid "Create new user"
 msgstr ""
 
-#: ../manage_users.php:99
+#: ../manage_users.php:94
 msgid "Bulk Create"
 msgstr ""
 
-#: ../manage_users.php:102
+#: ../manage_users.php:97
 msgid "Modify"
 msgstr ""
 
-#: ../modify_user.php:88
+#: ../modify_user.php:89
 msgid "User information succesfully updated."
 msgstr ""
 
-#: ../modify_user.php:92
+#: ../modify_user.php:93
 msgid "User information was not succesfully updated !!"
 msgstr ""
 
-#: ../modify_user.php:103
+#: ../modify_user.php:104
 msgid "Invalid user"
 msgstr ""
 
-#: ../modify_user.php:141 ../modify_user.php:145
+#: ../modify_user.php:142 ../modify_user.php:146
 msgid "Modify User"
 msgstr ""
 
-#: ../modify_user.php:149
+#: ../modify_user.php:150
 msgid "You can change any information about the user using this form."
 msgstr ""
 
-#: ../move_album.php:39 ../move_album.php:43 ../move_photo.php:38
+#: ../move_album.php:39 ../move_album.php:43 ../move_photo.php:39
 msgid "Move Album"
 msgstr ""
 
@@ -2971,85 +2750,85 @@
 msgid "Your Album will be moved to the position you choose below."
 msgstr ""
 
-#: ../move_album.php:117 ../move_photo.php:248
+#: ../move_album.php:116 ../move_photo.php:263
 msgid "Move it!"
 msgstr ""
 
-#: ../move_album.php:124
+#: ../move_album.php:123
 msgid "Nest within another Album:"
 msgstr ""
 
-#: ../move_album.php:137 ../move_photo.php:334
+#: ../move_album.php:133
 msgid "Move to Album!"
 msgstr ""
 
-#: ../move_photo.php:38
+#: ../move_photo.php:39
 msgid "Reorder Album"
 msgstr ""
 
-#: ../move_photo.php:40
+#: ../move_photo.php:41
 msgid "Reorder Photo"
 msgstr ""
 
-#: ../move_photo.php:40
+#: ../move_photo.php:41
 msgid "Move Photo"
 msgstr ""
 
-#: ../move_photo.php:64
+#: ../move_photo.php:66
 msgid "You can't move photos into the album they already exist in."
 msgstr ""
 
-#: ../move_photo.php:69
+#: ../move_photo.php:71
 #, php-format
 msgid "You do not have the required permissions to write to %s!"
 msgstr ""
 
-#: ../move_photo.php:129
+#: ../move_photo.php:138
 msgid "Moving photo #"
 msgstr ""
 
-#: ../move_photo.php:181
+#: ../move_photo.php:193
 msgid "- Creating New Album Highlight"
 msgstr ""
 
-#: ../move_photo.php:224
+#: ../move_photo.php:239
 msgid "Reorder this album within the album:"
 msgstr ""
 
-#: ../move_photo.php:226
+#: ../move_photo.php:241
 msgid "Reorder this photo within the album:"
 msgstr ""
 
-#: ../move_photo.php:229
+#: ../move_photo.php:244
 #, php-format
 msgid "Current Location is %s"
 msgstr ""
 
-#: ../move_photo.php:233
+#: ../move_photo.php:248
 msgid "Select the new location:"
 msgstr ""
 
-#: ../move_photo.php:248
+#: ../move_photo.php:263
 msgid "Reorder it!"
 msgstr ""
 
-#: ../move_photo.php:255
-msgid "Move the album to a new album:"
+#: ../move_photo.php:271
+msgid "Move the album to different position in your gallery:"
 msgstr ""
 
-#: ../move_photo.php:266
+#: ../move_photo.php:282
 msgid "Move a range of photos to a new album:"
 msgstr ""
 
-#: ../move_photo.php:267
+#: ../move_photo.php:284
 msgid "To move just one photo, make First and Last the same."
 msgstr ""
 
-#: ../move_photo.php:322
+#: ../move_photo.php:339
 msgid "Note: items that have votes will lose these votes when moved to another album"
 msgstr ""
 
-#: ../move_photo.php:324
+#: ../move_photo.php:341
 #, php-format
 msgid "Note: items that have votes will lose these votes if moved to an album without compatible polling.  Compatible albums are marked with an &quot;%s&quot;."
 msgstr ""
@@ -3117,67 +2896,76 @@
 msgid "Create multiple new users from a file."
 msgstr ""
 
-#: ../multi_create_user.php:199 ../register.php:141
+#: ../multi_create_user.php:198
 msgid "Create"
 msgstr ""
 
-#: ../multi_create_user.php:205
+#: ../multi_create_user.php:204
 msgid "Notes:"
 msgstr ""
 
-#: ../multi_create_user.php:208
+#: ../multi_create_user.php:207
 msgid "The members file should be one user per line, and the fields should be space separated."
 msgstr ""
 
-#: ../multi_create_user.php:209
+#: ../multi_create_user.php:208
 msgid "Each line must be in one of this formats:"
 msgstr ""
 
-#: ../multi_create_user.php:211
+#: ../multi_create_user.php:210
 msgid "<i>username emailaddress fullname</i>"
 msgstr ""
 
-#: ../multi_create_user.php:212
+#: ../multi_create_user.php:211
 msgid "<i>username fullname</i>"
 msgstr ""
 
-#: ../multi_create_user.php:213
+#: ../multi_create_user.php:212
 msgid "<i>username emailaddress</i>"
 msgstr ""
 
-#: ../multi_create_user.php:215
+#: ../multi_create_user.php:214
 msgid "Only username is required. Everything after the email address is the full name, so there can be spaces in it."
 msgstr ""
 
-#: ../multi_create_user.php:219
+#: ../multi_create_user.php:218
 msgid "The strings !!USERNAME!!, !!FULLNAME!! and !!PASSWORD!! will be substituted in the email with the values from the membership file.  An individual email will be sent to each member with a valid email address in the members file (if &quot;send emails&quot; checkbox is ticked)."
 msgstr ""
 
-#: ../new_password.php:32
+#: ../new_password.php:35
 msgid "missing hash parameter"
 msgstr ""
 
-#: ../new_password.php:41
+#: ../new_password.php:44
 msgid "The recovery password is not the expected value, please try again"
 msgstr ""
 
-#: ../new_password.php:48
+#: ../new_password.php:51
 msgid "You must provide your new password."
 msgstr ""
 
-#: ../new_password.php:92 ../new_password.php:96
+#: ../new_password.php:66 ../user_preferences.php:40
+#, php-format
+msgid "%s contained invalid data, resetting input."
+msgstr ""
+
+#: ../new_password.php:71 ../register.php:85 ../user_preferences.php:79
+msgid "You must specify a valid email address."
+msgstr ""
+
+#: ../new_password.php:107 ../new_password.php:111
 msgid "Make New Password"
 msgstr ""
 
-#: ../new_password.php:101
+#: ../new_password.php:116
 msgid "Enter the Gallery"
 msgstr ""
 
-#: ../new_password.php:105 ../user_preferences.php:120
+#: ../new_password.php:120 ../user_preferences.php:130
 msgid "You can change your user information here."
 msgstr ""
 
-#: ../new_password.php:106
+#: ../new_password.php:121
 msgid "You must enter the new password twice."
 msgstr ""
 
@@ -3190,10 +2978,62 @@
 msgid "Warning: you have changed voters from %s to %s.  It is advisable to reset the poll to remove all previous votes."
 msgstr ""
 
+#: ../poll_properties.php:72 ../poll_properties.php:76
+msgid "Poll Properties"
+msgstr ""
+
+#: ../poll_properties.php:87
+msgid "Type of poll for this album"
+msgstr ""
+
+#: ../poll_properties.php:88
+msgid "Rank"
+msgstr ""
+
+#: ../poll_properties.php:88
+msgid "Critique"
+msgstr ""
+
+#: ../poll_properties.php:91
+msgid "Number of voting options"
+msgstr ""
+
+#: ../poll_properties.php:95
+msgid "Show results of voting to all visitors?"
+msgstr ""
+
+#: ../poll_properties.php:99
+msgid "Number of lines of results graph to display on the album page"
+msgstr ""
+
 #: ../poll_properties.php:103
 msgid "Who can vote"
 msgstr ""
 
+#: ../poll_properties.php:107
+msgid "Orientation of vote choices"
+msgstr ""
+
+#: ../poll_properties.php:108 ../rotate_photo.php:82
+msgid "Horizontal"
+msgstr ""
+
+#: ../poll_properties.php:108 ../rotate_photo.php:85
+msgid "Vertical"
+msgstr ""
+
+#: ../poll_properties.php:111
+msgid "Vote hint"
+msgstr ""
+
+#: ../poll_properties.php:120
+msgid "Displayed Value"
+msgstr ""
+
+#: ../poll_properties.php:121
+msgid "Points"
+msgstr ""
+
 #: ../poll_results.php:38
 msgid "Back to Gallery"
 msgstr ""
@@ -3211,6 +3051,15 @@
 msgid "Results Breakdown"
 msgstr ""
 
+#: ../poll_results.php:148 ../view_album.php:501 ../view_album.php:786
+#, php-format
+msgid "Album: %s"
+msgstr ""
+
+#: ../poll_results.php:163
+msgid "No votes so far."
+msgstr ""
+
 #: ../progress_uploading.php:35
 msgid "Uploading Photos"
 msgstr ""
@@ -3252,7 +3101,7 @@
 msgid "Use filenames as captions"
 msgstr ""
 
-#: ../publish_xp.php:157 ../publish_xp.php:271
+#: ../publish_xp.php:157 ../publish_xp.php:270
 msgid "Create New Album"
 msgstr ""
 
@@ -3269,7 +3118,7 @@
 msgid "This user cannot add photos in %s."
 msgstr ""
 
-#: ../publish_xp.php:214 ../publish_xp.php:313
+#: ../publish_xp.php:214 ../publish_xp.php:312
 msgid "Press the 'Back' button and try again!"
 msgstr ""
 
@@ -3277,40 +3126,40 @@
 msgid "User cannot create ROOT level album."
 msgstr ""
 
-#: ../publish_xp.php:248
+#: ../publish_xp.php:247
 #, php-format
 msgid "User cannot create nested album in %s."
 msgstr ""
 
-#: ../publish_xp.php:251
+#: ../publish_xp.php:250
 msgid "No Parent Album Specified!"
 msgstr ""
 
-#: ../publish_xp.php:275
+#: ../publish_xp.php:274
 msgid "Enter New Album Title"
 msgstr ""
 
-#: ../publish_xp.php:278
+#: ../publish_xp.php:277
 msgid "Select Parent Album"
 msgstr ""
 
-#: ../publish_xp.php:285
+#: ../publish_xp.php:284
 msgid "NEW TOP LEVEL ALBUM"
 msgstr ""
 
-#: ../publish_xp.php:340
+#: ../publish_xp.php:339
 msgid "User cannot add to album"
 msgstr ""
 
-#: ../publish_xp.php:344
+#: ../publish_xp.php:343
 msgid "No file specified"
 msgstr ""
 
-#: ../publish_xp.php:441
+#: ../publish_xp.php:440
 msgid "Photo Upload"
 msgstr ""
 
-#: ../publish_xp.php:441
+#: ../publish_xp.php:440
 msgid "Upload Photos to"
 msgstr ""
 
@@ -3426,55 +3275,55 @@
 msgid "Hidden"
 msgstr ""
 
-#: ../rearrange.php:136 ../rearrange.php:174
+#: ../rearrange.php:135 ../rearrange.php:173
 msgid "save"
 msgstr ""
 
-#: ../rearrange.php:137 ../rearrange.php:175
+#: ../rearrange.php:136 ../rearrange.php:174
 msgid "cancel"
 msgstr ""
 
-#: ../rearrange.php:147
+#: ../rearrange.php:146
 #, php-format
 msgid "******* Page %s *******"
 msgstr ""
 
 #: ../register.php:37 ../register.php:41
 #, php-format
-msgid "Create User for %s."
+msgid "Register new user for '%s'"
 msgstr ""
 
 #: ../register.php:45
 msgid "This Gallery does not support self-registration by visitors."
 msgstr ""
 
-#: ../register.php:77
-msgid "You must specify a name."
+#: ../register.php:69
+msgid "Your fullname containes invalid data!"
 msgstr ""
 
-#: ../register.php:82
-msgid "You must specify a valid email address."
+#: ../register.php:80
+msgid "You must specify a name."
 msgstr ""
 
-#: ../register.php:104
+#: ../register.php:107
 #, php-format
 msgid "%s has registered.  Email has been sent to %s."
 msgstr ""
 
-#: ../register.php:112
+#: ../register.php:113
 msgid "Gallery Self Registration"
 msgstr ""
 
-#: ../register.php:114
+#: ../register.php:115
 #, php-format
 msgid "An email has been sent to %s."
 msgstr ""
 
-#: ../register.php:116
+#: ../register.php:117
 msgid "Your account information is contained within the email."
 msgstr ""
 
-#: ../register.php:118
+#: ../register.php:119
 msgid "Email could not be sent.  Please contact gallery administrator to register on this site"
 msgstr ""
 
@@ -3482,6 +3331,10 @@
 msgid "Your account information will be sent to the email address you provide."
 msgstr ""
 
+#: ../register.php:141
+msgid "Send request"
+msgstr ""
+
 #: ../rename_album.php:95
 msgid "There is already an album with that name!"
 msgstr ""
@@ -3523,55 +3376,55 @@
 msgid "Remove Votes"
 msgstr ""
 
-#: ../resize_photo.php:39
+#: ../resize_photo.php:42
 msgid "Resize Photo"
 msgstr ""
 
-#: ../resize_photo.php:46
+#: ../resize_photo.php:49
 msgid "Resizing photos"
 msgstr ""
 
-#: ../resize_photo.php:61
+#: ../resize_photo.php:64
 msgid "Resizing 1 photo..."
 msgstr ""
 
-#: ../resize_photo.php:73
+#: ../resize_photo.php:76
 msgid "This will resize your intermediate photos so that the longest side of the photo is equal to the target size below and the filesize will be close to the chosen size."
 msgstr ""
 
-#: ../resize_photo.php:81
+#: ../resize_photo.php:84
 msgid "What is the target size for all the intermediate photos in this album?"
 msgstr ""
 
-#: ../resize_photo.php:81
+#: ../resize_photo.php:84
 msgid "What is the target size for the intermediate version of this photo?"
 msgstr ""
 
-#: ../resize_photo.php:92
+#: ../resize_photo.php:95
 msgid "Target filesize"
 msgstr ""
 
-#: ../resize_photo.php:96
+#: ../resize_photo.php:99
 msgid "Maximum side length in pixels"
 msgstr ""
 
-#: ../resize_photo.php:111
+#: ../resize_photo.php:114
 msgid "(manual value)"
 msgstr ""
 
-#: ../resize_photo.php:124
+#: ../resize_photo.php:127
 msgid "Apply to nested albums ?"
 msgstr ""
 
-#: ../resize_photo.php:130
+#: ../resize_photo.php:133
 msgid "Get rid of resized"
 msgstr ""
 
-#: ../resize_photo.php:131
+#: ../resize_photo.php:134
 msgid "(Use only the original picture)"
 msgstr ""
 
-#: ../resize_photo.php:136
+#: ../resize_photo.php:139
 msgid "Change Size"
 msgstr ""
 
@@ -3624,44 +3477,48 @@
 msgid "Processing %s as a local directory."
 msgstr ""
 
-#: ../save_photos.php:121
+#: ../save_photos.php:122
 #, php-format
 msgid "Unable to find %s locally - trying %s."
 msgstr ""
 
-#: ../save_photos.php:160
+#: ../save_photos.php:157
 #, php-format
 msgid "Could not open url: %s"
 msgstr ""
 
-#: ../save_photos.php:192
+#: ../save_photos.php:189
 #, php-format
 msgid "Parsing %s for images..."
 msgstr ""
 
-#: ../save_photos.php:254
+#: ../save_photos.php:251
 #, php-format
 msgid "Found %d images"
 msgstr ""
 
-#: ../save_photos.php:261
+#: ../save_photos.php:258
 msgid "Processing status..."
 msgstr ""
 
-#: ../save_photos.php:373
+#: ../save_photos.php:332
+msgid "Extrafields:"
+msgstr ""
+
+#: ../save_photos.php:362
 msgid "No images uploaded!"
 msgstr ""
 
-#: ../save_photos.php:396
+#: ../save_photos.php:381
 msgid "Select the items you want to upload. To select multiple hold 'ctrl' (PC) or 'Command' (Mac)"
 msgstr ""
 
-#: ../save_photos.php:424
+#: ../save_photos.php:405
 #, php-format
 msgid "%d meta file(s) found.  These files contain information about the images, such as titles and descriptions."
 msgstr ""
 
-#: ../save_photos.php:456
+#: ../save_photos.php:436
 msgid "Add Files"
 msgstr ""
 
@@ -3681,7 +3538,7 @@
 msgid "From Album"
 msgstr ""
 
-#: ../search.php:209 ../view_photo_properties.php:111
+#: ../search.php:209 ../view_photo_properties.php:112
 msgid "KEYWORDS"
 msgstr ""
 
@@ -3752,11 +3609,6 @@
 msgid "Compatible but limited"
 msgstr ""
 
-#: ../slideshow.php:183 ../view_album.php:108 ../view_comments.php:54
-#: ../view_photo.php:167
-msgid "navigate UP"
-msgstr ""
-
 #: ../slideshow.php:213
 msgid "Slide Show"
 msgstr ""
@@ -3801,16 +3653,16 @@
 msgid "Randomly"
 msgstr ""
 
-#: ../sort_album.php:106
-msgid "Ascending"
+#: ../sort_album.php:107
+msgid "Just sort"
 msgstr ""
 
-#: ../sort_album.php:107
-msgid "Descending"
+#: ../sort_album.php:108
+msgid "Albums first"
 msgstr ""
 
-#: ../sort_album.php:113
-msgid "Sort"
+#: ../sort_album.php:109
+msgid "Photos/Movies first"
 msgstr ""
 
 #: ../stamp_preview.php:42
@@ -3821,7 +3673,41 @@
 msgid "Choose a stamp:"
 msgstr ""
 
-#: ../stats.php:79
+#: ../stats-wizard.php:43 ../stats-wizard.php:53
+msgid "Gallery statistics - Wizard"
+msgstr ""
+
+#: ../stats-wizard.php:54 ../tools/despam-comments.php:55
+#: ../tools/find_orphans.php:210 ../tools/validate_albums.php:137
+#: ../tools/validate_albums.php:213
+msgid "return to admin page"
+msgstr ""
+
+#: ../stats-wizard.php:122
+msgid "Type"
+msgstr ""
+
+#: ../stats-wizard.php:126 ../tools/despam-comments.php:390
+msgid "Options"
+msgstr ""
+
+#: ../stats-wizard.php:131
+msgid "Layout"
+msgstr ""
+
+#: ../stats-wizard.php:135
+msgid "Filter by Capture Date"
+msgstr ""
+
+#: ../stats-wizard.php:140
+msgid "Show statistics"
+msgstr ""
+
+#: ../stats-wizard.php:144
+msgid "Maybe your want to use your OWN statistics somewhere .. Just copy and paste the url from this textbox."
+msgstr ""
+
+#: ../stats.php:79
 msgid " - Images with the least votes"
 msgstr ""
 
@@ -3873,306 +3759,206 @@
 msgid " - Images with the most views"
 msgstr ""
 
-#: ../stats.php:304
+#: ../stats.php:306
 #, php-format
 msgid "Number Albums = %s"
 msgstr ""
 
-#: ../stats.php:315
+#: ../stats.php:317
 #, php-format
 msgid "Cache filename = %s ; enabled = %s ; expires = %s"
 msgstr ""
 
-#: ../stats.php:326
+#: ../stats.php:328
 #, php-format
 msgid "Time now = %s ; Cache time = %s"
 msgstr ""
 
-#: ../stats.php:341
+#: ../stats.php:343
 msgid "Logged In - Disabling Cache"
 msgstr ""
 
-#: ../stats.php:347
+#: ../stats.php:349
 msgid "Using cache"
 msgstr ""
 
-#: ../stats.php:347
+#: ../stats.php:349
 msgid "Not using cache"
 msgstr ""
 
-#: ../stats.php:348
+#: ../stats.php:350
 msgid "Cache to be rebuilt"
 msgstr ""
 
-#: ../stats.php:348
+#: ../stats.php:350
 msgid "Cache will not rebuild."
 msgstr ""
 
-#: ../stats.php:370
+#: ../stats.php:373
 msgid "Version out of date."
 msgstr ""
 
-#: ../stats.php:402
+#: ../stats.php:405
 #, php-format
 msgid "Checking album: %s"
 msgstr ""
 
-#: ../stats.php:412
+#: ../stats.php:415
 #, php-format
 msgid "Reading info for photo index = %d , id = %d"
 msgstr ""
 
-#: ../stats.php:423
+#: ../stats.php:426
 msgid "Getting SVotes"
 msgstr ""
 
-#: ../stats.php:429
+#: ../stats.php:432
 msgid "Getting Item Clicks"
 msgstr ""
 
-#: ../stats.php:432
+#: ../stats.php:435
 msgid "Getting Item Capture Date"
 msgstr ""
 
-#: ../stats.php:451
+#: ../stats.php:454
 msgid "Getting Number of Comments"
 msgstr ""
 
-#: ../stats.php:453
+#: ../stats.php:456
 msgid "Getting Comments"
 msgstr ""
 
-#: ../stats.php:496
+#: ../stats.php:499
 #, php-format
 msgid "Album: %s ; Index: %d ; Votes: %d ; Views: %d; Date: %s; Capture: %s; Comment Date: %s; Rating: %s; Rating count: %d; Random: %d"
 msgstr ""
 
-#: ../stats.php:557
+#: ../stats.php:561
 #, php-format
 msgid "Total: %s ; Start: %s ; Last Page: %s"
 msgstr ""
 
-#: ../stats.php:578
+#: ../stats.php:582
 #, php-format
 msgid "%d images with comments in album: %s"
 msgstr ""
 
-#: ../stats.php:580
+#: ../stats.php:584
 #, php-format
 msgid "%d images in album: %s"
 msgstr ""
 
-#: ../stats.php:583
+#: ../stats.php:587
 #, php-format
 msgid "Given albumname: '%s' is invalid !"
 msgstr ""
 
-#: ../stats.php:588
+#: ../stats.php:592
 #, php-format
 msgid "%d images with comments in this Gallery"
 msgstr ""
 
-#: ../stats.php:591
+#: ../stats.php:595
 #, php-format
 msgid "%d images this Gallery"
 msgstr ""
 
-#: ../stats.php:597
+#: ../stats.php:601
 msgid "Back to stats-wizard"
 msgstr ""
 
-#: ../stats.php:633
+#: ../stats.php:637
 #, php-format
 msgid "Data load time %d seconds"
 msgstr ""
 
-#: ../stats.php:699
+#: ../stats.php:703
 #, php-format
 msgid "Finished in %d seconds"
 msgstr ""
 
-#: ../stats.php:704
+#: ../stats.php:708
 msgid "Update"
 msgstr ""
 
-#: ../stats.php:705
+#: ../stats.php:709
 msgid "Cache update required. "
 msgstr ""
 
-#: ../stats.php:709
+#: ../stats.php:713
 #, php-format
 msgid "Some albums not searched as they require upgrading to the latest version of %s first"
 msgstr ""
 
-#: ../stats.php:712
+#: ../stats.php:716
 msgid "upgrade all albums"
 msgstr ""
 
-#: ../stats.php:756
+#: ../stats.php:760
 #, php-format
 msgid "Recursing album: %s"
 msgstr ""
 
-#: ../stats.php:792
+#: ../stats.php:796
 msgid "Read cache num photos lock failed."
 msgstr ""
 
-#: ../stats.php:816
+#: ../stats.php:820
 #, php-format
 msgid "Album name : %s ; index: %s"
 msgstr ""
 
-#: ../stats.php:827 ../stats.php:866
+#: ../stats.php:831 ../stats.php:870
 msgid "Read cache lock failed."
 msgstr ""
 
-#: ../stats.php:978
+#: ../stats.php:982
 msgid "add vote"
 msgstr ""
 
-#: ../stats.php:1072
+#: ../stats.php:1076
 #, php-format
 msgid "From album: %s"
 msgstr ""
 
-#: ../stats.php:1077
+#: ../stats.php:1081
 #, php-format
 msgid "Owned by: %s"
 msgstr ""
 
-#: ../stats.php:1109
+#: ../stats.php:1113
 msgid "Capture Date:"
 msgstr ""
 
-#: ../stats.php:1123
+#: ../stats.php:1127
 msgid "Upload Date:"
 msgstr ""
 
-#: ../stats.php:1137
-msgid "Views:"
-msgstr ""
-
-#: ../stats.php:1147
-msgid "Votes:"
-msgstr ""
-
-#: ../stats.php:1159
-msgid "not rated"
-msgstr ""
-
-#: ../stats.php:1173
-msgid "Rating:"
-msgstr ""
-
-#: ../stats-wizard.php:43 ../stats-wizard.php:54
-msgid "Gallery statistics - Wizard"
-msgstr ""
-
-#: ../stats-wizard.php:55 ../tools/find_orphans.php:210
-#: ../tools/despam-comments.php:55 ../tools/validate_albums.php:137
-#: ../tools/validate_albums.php:213
-msgid "return to admin page"
-msgstr ""
-
-#: ../stats-wizard.php:125
-msgid "Type"
-msgstr ""
-
-#: ../stats-wizard.php:129 ../tools/despam-comments.php:394
-msgid "Options"
-msgstr ""
-
-#: ../stats-wizard.php:138
-msgid "Filter by Capture Date"
-msgstr ""
-
-#: ../stats-wizard.php:143
-msgid "Show statistics"
-msgstr ""
-
-#: ../stats-wizard.php:147
-msgid "Maybe your want to use your OWN statistics somewhere .. Just copy and paste the url from this textbox."
-msgstr ""
-
-#: ../tools/find_orphans.php:200 ../tools/find_orphans.php:209
-msgid "Find Orphans"
-msgstr ""
-
-#: ../tools/find_orphans.php:226
-msgid "Orphaned Albums:"
-msgstr ""
-
-#: ../tools/find_orphans.php:227
-msgid "Orphaned Albums will be re-attached to their parent albums, if at all possible.  If the parent album is missing, the orphan will be attached to the Gallery Root, and it can be moved to a new location from there."
-msgstr ""
-
-#: ../tools/find_orphans.php:231
-msgid "Parent Album"
-msgstr ""
-
-#: ../tools/find_orphans.php:233
-msgid "Orphaned Album"
-msgstr ""
-
-#: ../tools/find_orphans.php:240
-msgid "Gallery Root"
-msgstr ""
-
-#: ../tools/find_orphans.php:254
-msgid "Re-Attach Orphaned Albums!"
-msgstr ""
-
-#: ../tools/find_orphans.php:261
-msgid "Orphaned Files:"
-msgstr ""
-
-#: ../tools/find_orphans.php:262
-msgid "Orphaned files will be deleted from the disk.  Orphaned files should never exist - if they do, they are the result of a failed upload attempt, or other more serious issue such as the photos database being overwritten with bad information."
-msgstr ""
-
-#: ../tools/find_orphans.php:266
-msgid "Album directory"
-msgstr ""
-
-#: ../tools/find_orphans.php:268
-msgid "Orphaned file"
-msgstr ""
-
-#: ../tools/find_orphans.php:291
-msgid "Delete Orphaned Files!"
-msgstr ""
-
-#: ../tools/find_orphans.php:297
-msgid "No Orphans Found"
-msgstr ""
-
-#: ../tools/find_orphans.php:298
-msgid "There are no orphaned elements in this Gallery."
+#: ../stats.php:1141
+msgid "Viewed:"
 msgstr ""
 
-#: ../tools/find_orphans.php:302
+#: ../stats.php:1145
 #, php-format
-msgid "Orphan %s Repaired"
-msgstr ""
-
-#: ../tools/find_orphans.php:302
-msgid "Albums"
-msgstr ""
+msgid "Once"
+msgid_plural "%d times"
+msgstr[0] ""
+msgstr[1] ""
 
-#: ../tools/find_orphans.php:302
-msgid "Files"
+#: ../stats.php:1145
+msgid "Never viewed"
 msgstr ""
 
-#: ../tools/find_orphans.php:309
-msgid "The Webserver has not enough permission to delete the following files:"
+#: ../stats.php:1151
+msgid "Votes:"
 msgstr ""
 
-#: ../tools/find_orphans.php:315
-msgid "Please check the permission of these files and the folder above. chmod them, or ask your admin to do this."
+#: ../stats.php:1163
+msgid "not rated"
 msgstr ""
 
-#: ../tools/find_orphans.php:316
-msgid "Reload"
+#: ../stats.php:1177
+msgid "Rating:"
 msgstr ""
 
 #: ../tools/despam-comments.php:54
@@ -4183,8 +3969,8 @@
 msgid "Delete Comments"
 msgstr ""
 
-#: ../tools/despam-comments.php:123 ../tools/despam-comments.php:252
-#: ../tools/despam-comments.php:263 ../tools/despam-comments.php:332
+#: ../tools/despam-comments.php:123 ../tools/despam-comments.php:249
+#: ../tools/despam-comments.php:260 ../tools/despam-comments.php:329
 msgid "No action taken!"
 msgstr ""
 
@@ -4204,94 +3990,175 @@
 msgid "No comment deleted."
 msgstr ""
 
-#: ../tools/despam-comments.php:198
+#: ../tools/despam-comments.php:196
 #, php-format
 msgid "Scanned %d albums, %d photos, %d comments in %2.2f seconds"
 msgstr ""
 
-#: ../tools/despam-comments.php:204
+#: ../tools/despam-comments.php:202
 msgid "No spam comments."
 msgstr ""
 
-#: ../tools/despam-comments.php:209 ../tools/despam-comments.php:348
+#: ../tools/despam-comments.php:206 ../tools/despam-comments.php:345
 msgid "Entry"
 msgstr ""
 
-#: ../tools/despam-comments.php:213
+#: ../tools/despam-comments.php:210
 msgid "Location"
 msgstr ""
 
-#: ../tools/despam-comments.php:217
+#: ../tools/despam-comments.php:214
 msgid "Commenter"
 msgstr ""
 
-#: ../tools/despam-comments.php:221
+#: ../tools/despam-comments.php:218
 msgid "Comment"
 msgstr ""
 
-#: ../tools/despam-comments.php:235
+#: ../tools/despam-comments.php:232
 msgid "Delete Checked Comments"
 msgstr ""
 
-#: ../tools/despam-comments.php:250
+#: ../tools/despam-comments.php:247
 msgid "Delete from blacklist"
 msgstr ""
 
-#: ../tools/despam-comments.php:267 ../tools/despam-comments.php:311
+#: ../tools/despam-comments.php:264 ../tools/despam-comments.php:308
 msgid "Error saving blacklist!"
 msgstr ""
 
-#: ../tools/despam-comments.php:270
+#: ../tools/despam-comments.php:267
 #, php-format
 msgid "Deleted %d entry from blacklist."
 msgid_plural "Deleted %d entries from blacklist"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../tools/despam-comments.php:314
+#: ../tools/despam-comments.php:311
 msgid "Added to blacklist:"
 msgstr ""
 
-#: ../tools/despam-comments.php:323
+#: ../tools/despam-comments.php:320
 msgid "Following duplicates were not added:"
 msgstr ""
 
-#: ../tools/despam-comments.php:339
+#: ../tools/despam-comments.php:336
 msgid "Current blacklist"
 msgstr ""
 
-#: ../tools/despam-comments.php:341
+#: ../tools/despam-comments.php:338
 msgid "Your blacklist is empty.  You must add new entries to your blacklist for it to be useful."
 msgstr ""
 
-#: ../tools/despam-comments.php:366 ../tools/despam-comments.php:383
+#: ../tools/despam-comments.php:362 ../tools/despam-comments.php:379
 msgid "Update Blacklist"
 msgstr ""
 
-#: ../tools/despam-comments.php:373
+#: ../tools/despam-comments.php:369
 msgid "Enter new blacklist entries"
 msgstr ""
 
-#: ../tools/despam-comments.php:374
+#: ../tools/despam-comments.php:370
 msgid "Useful blacklists: "
 msgstr ""
 
-#: ../tools/despam-comments.php:379
+#: ../tools/despam-comments.php:375
 msgid "You can just cut and paste these blacklists into the text box, or add new entries of your own."
 msgstr ""
 
-#: ../tools/despam-comments.php:389
+#: ../tools/despam-comments.php:385
 msgid "Find blacklisted comments"
 msgstr ""
 
-#: ../tools/despam-comments.php:390
+#: ../tools/despam-comments.php:386
 msgid "View/Edit blacklist"
 msgstr ""
 
-#: ../tools/despam-comments.php:391
+#: ../tools/despam-comments.php:387
 msgid "Add blacklist entries"
 msgstr ""
 
+#: ../tools/find_orphans.php:200 ../tools/find_orphans.php:209
+msgid "Find Orphans"
+msgstr ""
+
+#: ../tools/find_orphans.php:226
+msgid "Orphaned Albums:"
+msgstr ""
+
+#: ../tools/find_orphans.php:227
+msgid "Orphaned Albums will be re-attached to their parent albums, if at all possible.  If the parent album is missing, the orphan will be attached to the Gallery Root, and it can be moved to a new location from there."
+msgstr ""
+
+#: ../tools/find_orphans.php:231
+msgid "Parent Album"
+msgstr ""
+
+#: ../tools/find_orphans.php:233
+msgid "Orphaned Album"
+msgstr ""
+
+#: ../tools/find_orphans.php:240
+msgid "Gallery Root"
+msgstr ""
+
+#: ../tools/find_orphans.php:254
+msgid "Re-Attach Orphaned Albums!"
+msgstr ""
+
+#: ../tools/find_orphans.php:261
+msgid "Orphaned Files:"
+msgstr ""
+
+#: ../tools/find_orphans.php:262
+msgid "Orphaned files will be deleted from the disk.  Orphaned files should never exist - if they do, they are the result of a failed upload attempt, or other more serious issue such as the photos database being overwritten with bad information."
+msgstr ""
+
+#: ../tools/find_orphans.php:266
+msgid "Album directory"
+msgstr ""
+
+#: ../tools/find_orphans.php:268
+msgid "Orphaned file"
+msgstr ""
+
+#: ../tools/find_orphans.php:291
+msgid "Delete Orphaned Files!"
+msgstr ""
+
+#: ../tools/find_orphans.php:297
+msgid "No Orphans Found"
+msgstr ""
+
+#: ../tools/find_orphans.php:298
+msgid "There are no orphaned elements in this Gallery."
+msgstr ""
+
+#: ../tools/find_orphans.php:302
+#, php-format
+msgid "Orphan %s Repaired"
+msgstr ""
+
+#: ../tools/find_orphans.php:302
+msgid "Albums"
+msgstr ""
+
+#: ../tools/find_orphans.php:302
+msgid "Files"
+msgstr ""
+
+#: ../tools/find_orphans.php:309
+msgid "The Webserver has not enough permission to delete the following files:"
+msgstr ""
+
+#: ../tools/find_orphans.php:315
+msgid "Please check the permission of these files and the folder above. chmod them, or ask your admin to do this."
+msgstr ""
+
+#: ../tools/find_orphans.php:316
+msgid "Reload"
+msgstr ""
+
 #: ../tools/validate_albums.php:181
 msgid "Please Note: Even if the thumbnail image is properly displayed above, the actual full-sized image has been verified to be missing."
 msgstr ""
@@ -4433,510 +4300,427 @@
 msgid "Users upgraded successfully."
 msgstr ""
 
-#: ../user_preferences.php:44
+#: ../user_preferences.php:51
 msgid "You are not allowed to change your username."
 msgstr ""
 
-#: ../user_preferences.php:50
+#: ../user_preferences.php:57
 msgid "Incorrect password"
 msgstr ""
 
-#: ../user_preferences.php:56
+#: ../user_preferences.php:63
 msgid "You must provide your old password to change it."
 msgstr ""
 
-#: ../user_preferences.php:113 ../user_preferences.php:117
+#: ../user_preferences.php:123
 msgid "Change User Preferences"
 msgstr ""
 
-#: ../user_preferences.php:121
-msgid "If you want to change your password, you must provide your old password and then enter the new one twice."
-msgstr ""
-
-#: ../user_preferences.php:122
-msgid "You can change your username to any combination of letters and digits."
-msgstr ""
-
-#: ../util.php:104
-msgid "Empty"
+#: ../user_preferences.php:126
+msgid "User successfully updated."
 msgstr ""
 
-#: ../util.php:108
-#, php-format
-msgid "edit %s"
-msgstr ""
-
-#: ../util.php:126
-msgid "No Caption"
-msgstr ""
-
-#: ../util.php:130
-msgid "edit"
-msgstr ""
-
-#: ../util.php:185
-msgid "Add your comment"
-msgstr ""
-
-#: ../util.php:188
-msgid "Commenter:"
-msgstr ""
-
-#: ../util.php:206
-msgid "Message:"
+#: ../user_preferences.php:131
+msgid "If you want to change your password, you must provide your old password and then enter the new one twice."
 msgstr ""
 
-#: ../util.php:210
-msgid "Post"
+#: ../user_preferences.php:132
+msgid "You can change your username to any combination of letters and digits."
 msgstr ""
 
-#: ../util.php:277
+#: ../util.php:154
 #, php-format
 msgid "Executing: %s"
 msgstr ""
 
-#: ../util.php:284
+#: ../util.php:161
 msgid "Results:"
 msgstr ""
 
-#: ../util.php:288
+#: ../util.php:165
 msgid "none"
 msgstr ""
 
-#: ../util.php:293
+#: ../util.php:170
 msgid "Debug messages:"
 msgstr ""
 
-#: ../util.php:304
+#: ../util.php:181
 #, php-format
 msgid "Status: %s (expected %s)"
 msgstr ""
 
-#: ../util.php:329
+#: ../util.php:206
 #, php-format
 msgid "Getting Dimension of file: %s"
 msgstr ""
 
-#: ../util.php:332
+#: ../util.php:209
 msgid "The file does not exist ?!"
 msgstr ""
 
-#: ../util.php:343
+#: ../util.php:216
 #, php-format
-msgid "PHP's %s unable to determine dimensions."
+msgid "Dimensions: x: %d y: %d"
 msgstr ""
 
-#: ../util.php:357 ../util.php:673 ../util.php:921 ../util.php:967
-#: ../util.php:2487
-msgid "You have no graphics package configured for use!"
+#: ../util.php:221
+#, php-format
+msgid "PHP's %s function is unable to determine dimensions."
 msgstr ""
 
-#: ../util.php:380
-msgid "Unable to determine image dimensions!"
+#: ../util.php:235
+msgid "You have no graphics package configured for use!"
 msgstr ""
 
-#: ../util.php:445 ../util.php:464
-msgid "Not closing this window because debug mode is on"
+#: ../util.php:258
+msgid "Unable to determine image dimensions!"
 msgstr ""
 
-#: ../util.php:481
+#: ../util.php:432
 #, php-format
-msgid "Resizing Image: %s"
-msgstr ""
-
-#: ../util.php:512
-msgid "No resizing required"
+msgid "Can't write to %s."
 msgstr ""
 
-#: ../util.php:542
+#: ../util.php:439
 #, php-format
-msgid "target file size %d kbytes"
+msgid "Can't read %s."
 msgstr ""
 
-#: ../util.php:548 ../util.php:578
+#: ../util.php:661
 #, php-format
-msgid "-> file size %d kbytes"
+msgid "Item Capture Date : %s"
 msgstr ""
 
-#: ../util.php:549
+#: ../util.php:706
 #, php-format
-msgid "trying quality %d%%"
-msgstr ""
-
-#: ../util.php:579
-msgid "Done."
-msgstr ""
-
-#: ../util.php:677
-msgid "No watermark name specified!"
+msgid "Could not open lock file (%s) for writing!"
 msgstr ""
 
-#: ../util.php:985
+#: ../util.php:711
 #, php-format
-msgid "Call to %s failed in %s for file %s!"
+msgid "Could not acquire lock (%s)!"
 msgstr ""
 
-#: ../util.php:989
+#: ../util.php:794
 #, php-format
-msgid "File %s type %d."
+msgid "extension of file %s is %s"
 msgstr ""
 
-#: ../util.php:1024 ../util.php:1047
+#: ../util.php:903
 #, php-format
-msgid "Unknown file type: %s"
+msgid "Extracting: %s with %s"
 msgstr ""
 
-#: ../util.php:1087
+#: ../util.php:921
 #, php-format
-msgid "Problem including file %s"
+msgid "%s with extension %s is not an supported archive."
 msgstr ""
 
-#: ../util.php:1417
-#, php-format
-msgid "Can't write to %s."
+#: ../util.php:935
+msgid "No Support for creating Zips"
 msgstr ""
 
-#: ../util.php:1424
+#: ../util.php:938
 #, php-format
-msgid "Can't read %s."
+msgid "Creating Zipfile with %s"
 msgstr ""
 
-#: ../util.php:1542
-msgid "Select Album"
+#: ../util.php:952 ../util.php:1833
+#, php-format
+msgid "Your tempfolder is not writeable! Please check permissions of this dir: %s"
 msgstr ""
 
-#: ../util.php:1548
-msgid "Top Level"
+#: ../util.php:988
+#, php-format
+msgid "Processing file: %s"
 msgstr ""
 
-#: ../util.php:1569 ../util.php:1620
-msgid "current location"
+#: ../util.php:991
+#, php-format
+msgid "Processing file '%s' as archive"
 msgstr ""
 
-#: ../util.php:1623
-msgid "self"
+#: ../util.php:994
+#, php-format
+msgid "Skipping %s (%s support not enabled)"
 msgstr ""
 
-#: ../util.php:1772
-#, php-format
-msgid "Item Capture Date : %s"
+#: ../util.php:1003
+msgid "Getting archive content Filenames"
 msgstr ""
 
-#: ../util.php:1817
-#, php-format
-msgid "Could not open lock file (%s) for writing!"
+#: ../util.php:1021
+msgid "No Metadata"
 msgstr ""
 
-#: ../util.php:1822
-#, php-format
-msgid "Could not acquire lock (%s)!"
+#: ../util.php:1025
+msgid "Processing files in archive"
 msgstr ""
 
-#: ../util.php:1911 ../util.php:1950
+#: ../util.php:1031
 #, php-format
-msgid "1 hit"
-msgid_plural "%d hits"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../util.php:1916 ../util.php:1955
-msgid "Sub-albums"
+msgid "%d. %s"
 msgstr ""
 
-#: ../util.php:2123
+#: ../util.php:1034
 #, php-format
-msgid "Skipping %s (%s support not enabled)"
+msgid "Could not extract %s"
 msgstr ""
 
-#: ../util.php:2238
+#: ../util.php:1154
 #, php-format
 msgid "Adding %s"
 msgstr ""
 
-#: ../util.php:2275
+#: ../util.php:1174
 #, php-format
 msgid "Need help?  Look in the  %s%s FAQ%s"
 msgstr ""
 
-#: ../util.php:2280
+#: ../util.php:1179
 #, php-format
 msgid "Skipping %s (can't handle %s format)"
 msgstr ""
 
-#: ../util.php:2450
-msgid "Unable to preserve EXIF data (jhead not installed)"
-msgstr ""
-
-#: ../util.php:2569
+#: ../util.php:1292
 #, php-format
 msgid "Cannot open logfile: %s"
 msgstr ""
 
-#: ../util.php:2580
+#: ../util.php:1460
 #, php-format
-msgid "Last comment %s."
+msgid "Parsing for csv data in file: %s"
 msgstr ""
 
-#: ../util.php:2605
-msgid "No Skin"
+#: ../util.php:1476
+msgid "csv result:"
 msgstr ""
 
-#: ../util.php:2606
+#: ../util.php:1645
 #, php-format
-msgid "<dt>%s</dt><dd>The original look and feel.</dd>"
+msgid "MIMEtype of file %s is %s"
 msgstr ""
 
-#: ../util.php:2651 ../util.php:2655
-msgid "unknown"
-msgstr ""
-
-#: ../util.php:2659
-msgid "Version"
-msgstr ""
-
-#: ../util.php:2661
-msgid "Last Update"
-msgstr ""
-
-#: ../util.php:2680 ../util.php:2685
-msgid "None"
-msgstr ""
-
-#: ../util.php:2681 ../util.php:2686
-msgid "Dots"
-msgstr ""
-
-#: ../util.php:2682 ../util.php:2687
-msgid "Solid"
-msgstr ""
-
-#: ../util.php:2685
-msgid "No frames"
-msgstr ""
-
-#: ../util.php:2686
-msgid "Just a simple dashed border around the thumb."
-msgstr ""
-
-#: ../util.php:2687
-msgid "Just a simple solid border around the thumb."
-msgstr ""
-
-#: ../util.php:2708
-#, php-format
-msgid "Skipping %s."
-msgstr ""
-
-#: ../util.php:2714
-#, php-format
-msgid "Can't open %s"
-msgstr ""
-
-#: ../util.php:2851 ../util.php:2870
-msgid "Not valid yet"
-msgstr ""
-
-#: ../util.php:3091
-msgid "EXIF Data"
-msgstr ""
-
-#: ../util.php:3093
-msgid "Display of EXIF data enabled, but no data found."
-msgstr ""
-
-#: ../util.php:3365
+#: ../util.php:1735
 #, php-format
 msgid "%s sent you an E-C@rd."
 msgstr ""
 
-#: ../util.php:3445
-msgid "Search:"
-msgstr ""
-
-#: ../view_album.php:210
+#: ../view_album.php:211
 #, php-format
 msgid "1 sub-album"
 msgid_plural "%d sub-albums"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../view_album.php:210
+#: ../view_album.php:211
 msgid "No albums"
 msgstr ""
 
-#: ../view_album.php:212
+#: ../view_album.php:213
 msgid "0 pages"
 msgstr ""
 
-#: ../view_album.php:215
+#: ../view_album.php:216
 #, php-format
 msgid "%s and %s in this album on %s"
 msgstr ""
 
-#: ../view_album.php:218
+#: ../view_album.php:219
 #, php-format
 msgid "%s and %s in this album"
 msgstr ""
 
-#: ../view_album.php:221
+#: ../view_album.php:222
 #, php-format
 msgid "%s in this album on %s"
 msgstr ""
 
-#: ../view_album.php:224
+#: ../view_album.php:225
 #, php-format
 msgid "%s in this album"
 msgstr ""
 
-#: ../view_album.php:231
+#: ../view_album.php:232
 #, php-format
 msgid "%s are hidden"
 msgstr ""
 
-#: ../view_album.php:233
+#: ../view_album.php:234
 #, php-format
 msgid "%s is hidden"
 msgstr ""
 
-#: ../view_album.php:243
-msgid "add photos"
+#: ../view_album.php:244
+msgid "Add photos"
+msgstr ""
+
+#: ../view_album.php:250
+msgid "Delete this album"
+msgstr ""
+
+#: ../view_album.php:255
+msgid "Delete this (sub)album"
 msgstr ""
 
-#: ../view_album.php:256
-msgid "new nested album"
+#: ../view_album.php:264
+msgid "Rename album"
 msgstr ""
 
-#: ../view_album.php:268
-msgid "sort items"
+#: ../view_album.php:271
+msgid "New nested album"
 msgstr ""
 
-#: ../view_album.php:274
-msgid "resize all"
+#: ../view_album.php:277
+msgid "Edit captions"
 msgstr ""
 
-#: ../view_album.php:280
-msgid "rebuild thumbs"
+#: ../view_album.php:283
+msgid "Sort items"
 msgstr ""
 
-#: ../view_album.php:292
-msgid "rearrange items"
+#: ../view_album.php:289
+msgid "Resize all"
 msgstr ""
 
-#: ../view_album.php:303
-msgid "poll results"
+#: ../view_album.php:295
+msgid "Rebuild thumbs"
 msgstr ""
 
-#: ../view_album.php:309
-msgid "poll reset"
+#: ../view_album.php:301
+msgid "Properties"
 msgstr ""
 
-#: ../view_album.php:315
-msgid "view comments"
+#: ../view_album.php:307
+msgid "Rearrange items"
 msgstr ""
 
-#: ../view_album.php:321
-msgid "watermark album"
+#: ../view_album.php:319
+msgid "Poll results"
 msgstr ""
 
-#: ../view_album.php:379
-msgid "album actions"
+#: ../view_album.php:325
+msgid "Poll reset"
 msgstr ""
 
-#: ../view_album.php:469
+#: ../view_album.php:331
+msgid "View comments"
+msgstr ""
+
+#: ../view_album.php:337
+msgid "Watermark album"
+msgstr ""
+
+#: ../view_album.php:395
+msgid "Album Actions"
+msgstr ""
+
+#: ../view_album.php:485
 msgid "You have no votes recorded for this poll."
 msgstr ""
 
-#: ../view_album.php:473
+#: ../view_album.php:489
 msgid "Your current choices are"
 msgstr ""
 
-#: ../view_album.php:513
+#: ../view_album.php:526
 msgid "See full poll results"
 msgstr ""
 
-#: ../view_album.php:549
+#: ../view_album.php:560
 msgid ", "
 msgstr ""
 
-#: ../view_album.php:551
-msgid " or "
-msgstr ""
-
-#: ../view_album.php:555
+#: ../view_album.php:566
 #, php-format
 msgid "To vote for an image, click on %s."
 msgstr ""
 
-#: ../view_album.php:556
+#: ../view_album.php:567
 #, php-format
 msgid "You MUST click on %s for your vote to be recorded."
 msgstr ""
 
-#: ../view_album.php:561
+#: ../view_album.php:568 ../view_album.php:584 ../view_album.php:922
+msgid "Vote"
+msgstr ""
+
+#: ../view_album.php:572
 #, php-format
 msgid "You have a total of %s and can change them if you wish."
 msgstr ""
 
-#: ../view_album.php:562
+#: ../view_album.php:573
 #, php-format
 msgid "1 vote"
 msgid_plural "%d votes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../view_album.php:565
+#: ../view_album.php:576
 msgid "You can change your choices if you wish."
 msgstr ""
 
-#: ../view_album.php:718 ../view_album.php:719
+#: ../view_album.php:727 ../view_album.php:728
 #, php-format
 msgid "%dkB"
 msgstr ""
 
-#: ../view_album.php:780
+#: ../view_album.php:775
 msgid "highlight"
 msgstr ""
 
-#: ../view_album.php:786
+#: ../view_album.php:790
 msgid "No description"
 msgstr ""
 
-#: ../view_album.php:794
-msgid "Changed: "
+#: ../view_album.php:798
+#, php-format
+msgid "Last change: %s"
 msgstr ""
 
-#: ../view_album.php:797
-msgid "Contains: "
+#: ../view_album.php:801
+#, php-format
+msgid "Contains: %s"
 msgstr ""
 
-#: ../view_album.php:797
+#: ../view_album.php:801
 #, php-format
 msgid "1 item"
 msgid_plural "%d items"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../view_album.php:813 ../view_album.php:837
-msgid "Viewed:"
+#: ../view_album.php:817
+#, php-format
+msgid "Viewed: %s"
 msgstr ""
 
-#: ../view_album.php:893
+#: ../view_album.php:842
+#, php-format
+msgid "Viewed: 1 time."
+msgid_plural "Viewed: %d times."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../view_album.php:900
 msgid "Hey! Add some photos."
 msgstr ""
 
-#: ../view_album.php:895
+#: ../view_album.php:902
 msgid "This album is empty."
 msgstr ""
 
-#: ../view_album.php:940
+#: ../view_album.php:947
 msgid "Email me when one of the following actions are done to this album:"
 msgstr ""
 
-#: ../view_album.php:945
+#: ../view_album.php:952
 msgid "Comments are added"
 msgstr ""
 
-#: ../view_album.php:948
+#: ../view_album.php:955
 msgid "Other changes are made"
 msgstr ""
 
@@ -4957,7 +4741,7 @@
 msgid "Sorry.  This album does not allow comments."
 msgstr ""
 
-#: ../view_photo.php:314
+#: ../view_photo.php:315
 msgid "photo properties"
 msgstr ""
 
@@ -4969,7 +4753,7 @@
 msgid "Print photo with..."
 msgstr ""
 
-#: ../view_photo.php:438
+#: ../view_photo.php:437
 #, php-format
 msgid "process this photo with %s"
 msgstr ""
@@ -4990,19 +4774,19 @@
 msgid "Send Photo as eCard"
 msgstr ""
 
-#: ../view_photo.php:702
+#: ../view_photo.php:720
 msgid "Email me when comments are added"
 msgstr ""
 
-#: ../view_photo_properties.php:39 ../view_photo_properties.php:46
+#: ../view_photo_properties.php:39 ../view_photo_properties.php:47
 msgid "Photo Properties"
 msgstr ""
 
-#: ../view_photo_properties.php:122
+#: ../view_photo_properties.php:123
 msgid "Reload EXIF Data From File"
 msgstr ""
 
-#: ../view_photo_properties.php:125
+#: ../view_photo_properties.php:126
 msgid "(if the data is current, this will not appear to do anything)"
 msgstr ""
 
diff -Naur gallery-1.5.1/po/update_po_files.sh gallery-1.5.2/po/update_po_files.sh
--- gallery-1.5.1/po/update_po_files.sh	2004-10-20 00:07:35.000000000 +0200
+++ gallery-1.5.2/po/update_po_files.sh	2005-12-23 20:20:39.000000000 +0100
@@ -1,5 +1,5 @@
 #!/bin/bash
-# $Id: update_po_files.sh,v 1.15 2004/10/19 22:07:35 jenst Exp $
+# $Id: update_po_files.sh,v 1.16 2005/12/23 19:20:39 jenst Exp $
 
 esc=`echo -en "\033"`
 tab="${esc}[5G"
@@ -44,10 +44,13 @@
 fi
 
 for all_po in $pofiles ; do
-	echo -e "\nFound : $all_po"
+  echo -e "\nFound : $all_po"
 		
-	lang1=${all_po%-*}
-	lang=${lang1##*/}
+  lang1=${all_po%-*}
+  lang=${lang1##*/}
+  
+  if [ $lang != "en_US" ] ; then
+	
 	module1=${all_po##*_}
 	module=${module1/.po}
 
@@ -55,7 +58,9 @@
 	echo "$tab Module = $module"
 
 	echo "$tab Updating ..."
+	#msgmerge ../locale/$lang/compendium.po gallery-$module.pot -v -o $all_po --no-wrap || exit
 	msgmerge -v -U $all_po gallery-$module.pot --no-wrap || exit
+  fi
 done
 
 find ../locale/ -iname "*~" -exec rm {} \;
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/poll_properties.php gallery-1.5.2/poll_properties.php
--- gallery-1.5.1/poll_properties.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/poll_properties.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file Copyright (C) 2003-2004 Joan McGalliard
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: poll_properties.php,v 1.24.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: poll_properties.php,v 1.27.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -35,11 +35,11 @@
 	exit;
 }
 	
-$error="";
+$error = '';
 if (!empty($apply)) {
-	for ($i=0; $i<$gallery->album->getPollScale() ; $i++) {
+	for ($i = 0; $i < $gallery->album->getPollScale() ; $i++) {
 		//convert values to numbers
-		$nv_pairs[$i]["value"]=0+$nv_pairs[$i]["value"];
+		$nv_pairs[$i]["value"] = 0+$nv_pairs[$i]["value"];
 	}
 	$gallery->album->fields["poll_nv_pairs"]=$nv_pairs;
 	$gallery->album->fields["poll_hint"]=$poll_hint;
@@ -47,7 +47,7 @@
 	if ($voter_class == "Logged in" &&
 	    $gallery->album->fields["voter_class"] == "Everybody" &&
 	    sizeof($gallery->album->fields["votes"]) > 0) {
-		$error="<br>" .
+		$error = "<br>" .
 			sprintf(_("Warning: you have changed voters from %s to %s.  It is advisable to reset the poll to remove all previous votes."),
 					"<i>". _("Everybody") ."</i>",
 					"<i>". _("Logged in") ."</i>");
@@ -60,8 +60,8 @@
 	$gallery->album->save(array(i18n("Poll properties change")));
 
 	if (getRequestVar('setNested')) {
-		$gallery->album->setNestedPollProperties();
-       	}
+	    $gallery->album->setNestedPollProperties();
+	}
 	reload();
 }
 
@@ -80,7 +80,7 @@
 	echo "<p>". gallery_error($error) . "</p>";
 }
 	echo makeFormIntro("poll_properties.php", 
-			array("name" => "theform", "method" => "POST"),
+			array("name" => "theform"),
 			array("type" => "popup")); ?>
 <table border="0">
 <tr>
@@ -93,7 +93,7 @@
 </tr>
 <tr>
 	<td><?php echo _("Show results of voting to all visitors?") ?></td>
-	<td><select name="poll_show_results"><?php selectOptions($gallery->album, "poll_show_results", array("no" => _("no"), "yes" => _("yes"))) ?></select></td>
+	<td><select name="poll_show_results"><?php selectOptions($gallery->album, "poll_show_results", array("no" => _("No"), "yes" => _("Yes"))) ?></select></td>
 </tr>
 <tr>
 	<td width="50%"><?php echo _("Number of lines of results graph to display on the album page") ?></td>
@@ -126,7 +126,7 @@
 ?>
 <tr>
 	<td><input type="text" name="nv_pairs[<?php echo $i?>][name]" value="<?php echo $nv_pairs[$i]["name"] ?>"></td>
-	<td><input type=text name="nv_pairs[<?php echo $i?>][value]" value="<?php echo $nv_pairs[$i]["value"] ?>"></td>
+	<td><input type="text" name="nv_pairs[<?php echo $i?>][value]" value="<?php echo $nv_pairs[$i]["value"] ?>"></td>
 </tr>
 <?php
 }
diff -Naur gallery-1.5.1/poll_results.php gallery-1.5.2/poll_results.php
--- gallery-1.5.1/poll_results.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/poll_results.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * Additional voting code Copyright (C) 2003-2004 Joan McGalliard
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: poll_results.php,v 1.23.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: poll_results.php,v 1.24.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/progress_uploading.php gallery-1.5.2/progress_uploading.php
--- gallery-1.5.1/progress_uploading.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/progress_uploading.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: progress_uploading.php,v 1.35.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: progress_uploading.php,v 1.36.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/publish_xp_docs.php gallery-1.5.2/publish_xp_docs.php
--- gallery-1.5.1/publish_xp_docs.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/publish_xp_docs.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: publish_xp_docs.php,v 1.24.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: publish_xp_docs.php,v 1.25.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/publish_xp.php gallery-1.5.2/publish_xp.php
--- gallery-1.5.1/publish_xp.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/publish_xp.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: publish_xp.php,v 1.39.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: publish_xp.php,v 1.42.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -98,7 +98,7 @@
 if (!strcmp($cmd,"publish") || (isset($returnval) && $returnval == "Login Incorrect") ) { ?>
 <p align="center" class="popuphead"><?php echo sprintf(_("Login to %s"), $gallery->app->galleryTitle) ?></p>
 
-<?php echo  makeFormIntro("publish_xp.php", array("id" => "login", "method" => "POST")); ?>
+<?php echo  makeFormIntro('publish_xp.php', array('id' => 'login')); ?>
 
 <table border="0" align="center">
 <tr>
@@ -230,42 +230,41 @@
 
 if (!strcmp($cmd, "new-album")) {
 
-        // Do we have a logged in user?
-        if (!$gallery->user->isLoggedIn()) {
-		$error= _("Not Logged In!");
-
-        	// Permission checks
-		// can the user create albums in the ROOT level
-        } elseif (isset($createNewAlbum) && ($set_albumName == '_xp_wiz_root') && !($gallery->user->canCreateAlbums()) ) {
-            $error = _("User cannot create ROOT level album.") ."<br>\n";
-
-		// can the user create nested albums in the specified album
-        } elseif (isset($createNewAlbum) && 
-			isset($set_albumName) && 
-			$set_albumName != '_xp_wiz_root' && 
-			!($gallery->user->canCreateSubAlbum($gallery->album))
-	) {
-            $error = sprintf(_("User cannot create nested album in %s."),
-			    $gallery->album->fields[title]);
-	} elseif (isset($createNewAlbum) && empty($set_albumName)) {
-		$error = _("No Parent Album Specified!");
-        } elseif (isset($createNewAlbum)) {
-		if ($set_albumName == '_xp_wiz_root') {
-			$parentName = '';
-		} elseif (isset($set_albumName)) {
-			$parentName = $set_albumName;
-		}
+    // Do we have a logged in user?
+    if (!$gallery->user->isLoggedIn()) {
+        $error= _("Not Logged In!");
+
+        // Permission checks
+        // can the user create albums in the ROOT level
+    } elseif (isset($createNewAlbum) && ($set_albumName == '_xp_wiz_root') && !($gallery->user->canCreateAlbums()) ) {
+        $error = _("User cannot create ROOT level album.") ."<br>\n";
+
+        // can the user create nested albums in the specified album
+    } elseif (isset($createNewAlbum) &&
+    isset($set_albumName) &&
+      $set_albumName != '_xp_wiz_root' &&
+      !($gallery->user->canCreateSubAlbum($gallery->album))) {
+        $error = sprintf(_("User cannot create nested album in %s."),
+        $gallery->album->fields[title]);
+    } elseif (isset($createNewAlbum) && empty($set_albumName)) {
+        $error = _("No Parent Album Specified!");
+    } elseif (isset($createNewAlbum)) {
+        if ($set_albumName == '_xp_wiz_root') {
+            $parentName = '';
+        } elseif (isset($set_albumName)) {
+            $parentName = $set_albumName;
+        }
 
-		if ($set_albumName) {
-			$success = createNewAlbum($parentName);
-		}
+        if ($set_albumName) {
+            $success = createNewAlbum($parentName);
+        }
 
-                if ($newAlbumTitle) {
-			$newAlbumTitle = removeTags($newAlbumTitle);
-                        $gallery->album->fields["title"] = $newAlbumTitle;
-                	$gallery->album->save();
-                }
-	} else {
+        if ($newAlbumTitle) {
+            $newAlbumTitle = strip_tags($newAlbumTitle);
+            $gallery->album->fields["title"] = $newAlbumTitle;
+            $gallery->album->save();
+        }
+    } else {
 		if (empty($newAlbumTitle)) $newAlbumTitle = "Untitled";
 		?>
 <p class="popuphead" align="center"><?php echo _("Create New Album") ?></p>
diff -Naur gallery-1.5.1/rearrange.php gallery-1.5.2/rearrange.php
--- gallery-1.5.1/rearrange.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/rearrange.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: rearrange.php,v 1.3.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: rearrange.php,v 1.6.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -104,16 +104,16 @@
 echo _("Here you can rearrange your pictures easily. Just click on the item you want to reorder. Then click on the item at which position you want it to be.");
 
 $explainTable = new galleryTable;
-$explainTable->setCaption(_("Meaning of the borderstyle"));
+$explainTable->setCaption(_("Meaning of the borderstyle"), 'attention');
 $explainTable->setAttrs(array('width' => 300, 'cellspacing' => 3, 'cellpadding' => 2));
 $explainTable->setColumnCount(4);
 
-$explainTable->addElement(array('content' => _("Picture"), 'cellArgs' => array('style' => 'border: 2px solid black')));
-$explainTable->addElement(array('content' => _("Movie"), 'cellArgs' => array('style' => 'border: 2px dotted black')));
-$explainTable->addElement(array('content' => _("Subalbum") , 'cellArgs' => array('style' => 'border: 3px double black')));
-$explainTable->addElement(array('content' => _("Selected") , 'cellArgs' => array('style' => 'border: 2px dashed black')));
-$explainTable->addElement(array('content' => _("Visible") , 'cellArgs' => array('align' => 'center', 'colspan' => 2, 'style' => 'color: green')));
-$explainTable->addElement(array('content' => _("Hidden") , 'cellArgs' => array(' align' => 'center', 'colspan' => 2, 'style' => 'color: red')));
+$explainTable->addElement(array('content' => _("Picture"), 'cellArgs' => array('style' => 'text-align: center; border: 2px solid black')));
+$explainTable->addElement(array('content' => _("Movie"), 'cellArgs' => array('style' => 'text-align: center; border: 2px dotted black')));
+$explainTable->addElement(array('content' => _("Subalbum") , 'cellArgs' => array('style' => 'text-align: center; border: 3px double black')));
+$explainTable->addElement(array('content' => _("Selected") , 'cellArgs' => array('style' => 'text-align: center; border: 2px dashed black')));
+$explainTable->addElement(array('content' => _("Visible") , 'cellArgs' => array('colspan' => 2, 'style' => 'text-align: center; color: green')));
+$explainTable->addElement(array('content' => _("Hidden") , 'cellArgs' => array('colspan' => 2, 'style' => 'text-align: center; color: red')));
 
 ?>
 <br><br><center><?php echo $explainTable->render(); ?></center>
@@ -121,8 +121,7 @@
 
 <div class="popup" align="center">
 <?php
-  echo makeFormIntro("rearrange.php",
-		   array("name" => "rearr_form", "method" => "POST"));
+  echo makeFormIntro('rearrange.php',array('name' => 'rearr_form'));
 ?>
 <input type="hidden" name="rearrList" value="">
 
@@ -134,7 +133,7 @@
 
 $pictureTable->addElement(array(
     'content' => '<input type="button" onclick="save();return false" value="' . _("save") .'">'. 
-		 '<input type="button" onclick="window.close();return false" value="'. _("cancel") .'">',
+    '<input type="button" onclick="window.close();return false" value="'. _("cancel") .'">',
     'cellArgs' => array('colspan' => $cols, 'align' => 'right')));
 
 $list = array();
@@ -144,25 +143,25 @@
 for ($i = getNextPhoto(0), $i = 1; $i <= $numPhotos; $i = getNextPhoto($i)) {
     if ($j++==($cols*$rows) || $page == 1) {
         $pictureTable->addElement(array(
-	    'content' => sprintf(_("******* Page %s *******"), $page), 
-	    'cellArgs' => array('colspan' => $cols, 'align' => 'center')));
+            'content' => sprintf(_("******* Page %s *******"), $page),
+            'cellArgs' => array('colspan' => $cols, 'align' => 'center')));
 
-	$j = 1;
-	$page++;
+        $j = 1;
+        $page++;
     }
 
     $attrs = 'id="im_'.$i.'" onclick="doclick('.$i.')" style="padding: 2px; border: '
-	. ($gallery->album->isHidden($i) ? ' red' : ' green');
-	
+    . ($gallery->album->isHidden($i) ? ' red' : ' green');
+
     if ($gallery->album->isAlbum($i)) {
-	$myAlbumName = $gallery->album->getAlbumName($i);
-	$myAlbum = new Album();
-	$myAlbum->load($myAlbumName);
-	$tag = $myAlbum->getHighlightTag(0,$attrs. ' 3px double"');
+        $myAlbumName = $gallery->album->getAlbumName($i);
+        $myAlbum = new Album();
+        $myAlbum->load($myAlbumName);
+        $tag = $myAlbum->getHighlightTag(0,$attrs. ' 3px double"');
     } elseif ($gallery->album->isMovieByIndex($i)) {
-	$tag = $gallery->album->getThumbnailTag($i,0,$attrs.' 2px dotted"');	
+        $tag = $gallery->album->getThumbnailTag($i,0,$attrs.' 2px dotted"');
     } else {
-	$tag = $gallery->album->getThumbnailTag($i,0,$attrs.' 2px solid"');
+        $tag = $gallery->album->getThumbnailTag($i,0,$attrs.' 2px solid"');
     }
 
     $pictureTable->addElement(array('content' => $tag, 'cellArgs' => array('align' => 'center')));
@@ -172,7 +171,7 @@
 
 $pictureTable->addElement(array(
     'content' => '<input type="button" onclick="save();return false" value="' . _("save") .'">'. 
-		 '<input type="button" onclick="window.close();return false" value="'. _("cancel") .'">',
+	  '<input type="button" onclick="window.close();return false" value="'. _("cancel") .'">',
     'cellArgs' => array('colspan' => $cols, 'align' => 'right')));
 
 echo $pictureTable->render();
diff -Naur gallery-1.5.1/register.php gallery-1.5.2/register.php
--- gallery-1.5.1/register.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/register.php	2006-01-18 19:06:02.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file originally by Vallimar.
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: register.php,v 1.29.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: register.php,v 1.34.2.2 2006/01/18 18:06:02 jenst Exp $
  */
 ?>
 <?php
@@ -34,21 +34,20 @@
 ?>
 <html>
 <head>
-  <title><?php echo sprintf(_("Create User for %s."), $gallery->app->galleryTitle) ?></title>
+  <title><?php echo sprintf(_("Register new user for '%s'"), $gallery->app->galleryTitle) ?></title>
   <?php common_header(); ?>
 </head>
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
-<div class="popuphead"><?php echo sprintf(_("Create User for %s."), $gallery->app->galleryTitle) ?></div>
-<div class="popup" align="center">
+<div class="popuphead"><?php echo sprintf(_("Register new user for '%s'"), $gallery->app->galleryTitle) ?></div>
+  <div class="popup" align="center">
 <?php if ($gallery->app->selfReg != 'yes' || $gallery->app->emailOn == 'no') { ?>
 	<p>
 	<?php echo _("This Gallery does not support self-registration by visitors.") ?>
 	<br><br>
 	<form> <input type="button" value="<?php echo _("Dismiss") ?>" onclick='parent.close()'> </form>
-	</div>
-	</div>
-	</body>
-	</html>
+  </div>
+</body>
+</html>
 <?php
     exit();
 }
@@ -66,9 +65,13 @@
 $errorCount = 0;
 if (!empty($formaction) && $formaction == 'create') {
 	// Security check.
-	$uname = removeTags($uname);
+        if($fullname != strip_tags($fullname)) {
+            $gErrors["fullname"] = _("Your fullname containes invalid data!");
+            $errorCount++;
+        }
 
 	$gErrors['uname'] = $gallery->userDB->validNewUserName($uname);
+
 	if ($gErrors['uname']) {
 		$errorCount++;
 	}
@@ -85,38 +88,36 @@
 
 	if (!$errorCount) {
 
-		$password = generate_password(10);
-	       	$tmpUser = new Gallery_User();
-	       	$tmpUser->setUsername($uname);
-	       	$tmpUser->setPassword($password);
-	       	$tmpUser->setFullname($fullname);
-	       	$tmpUser->setCanCreateAlbums(($gallery->app->selfRegCreate == 'yes'));
-	       	$tmpUser->setEmail($email);
-	       	$tmpUser->origEmail=$email;
-	       	$tmpUser->log("self_register");
-		$tmpUser->setDefaultLanguage($defaultLanguage);
-		$msg = ereg_replace("!!PASSWORD!!", $password,
-                                        ereg_replace("!!USERNAME!!", $uname,
-					  ereg_replace("!!FULLNAME!!", $fullname,
-					    ereg_replace("!!NEWPASSWORDLINK!!", 
-						    $tmpUser->genRecoverPasswordHash(),
-						    welcome_email()))));
-		$logmsg = sprintf(_("%s has registered.  Email has been sent to %s."),
-			$uname, $email);
-		$logmsg2  = sprintf("%s has registered.  Email has been sent to %s.",
-			$uname, $email);
-		if ($logmsg != $logmsg2) {
-			$logmsg .= " <<<<>>>>> $logmsg2";
-		}
-
-		if (gallery_mail($email, _("Gallery Self Registration"),$msg, $logmsg)) {
-			$tmpUser->save();
-			echo "<p>".sprintf(_("An email has been sent to %s."), $email);
-			echo '<br>';
-			echo _("Your account information is contained within the email.");
-		} else {
-			echo gallery_error(_("Email could not be sent.  Please contact gallery administrator to register on this site"));
-		}
+	    $password = generate_password(10);
+	    $tmpUser = new Gallery_User();
+	    $tmpUser->setUsername($uname);
+	    $tmpUser->setPassword($password);
+	    $tmpUser->setFullname($fullname);
+	    $tmpUser->setCanCreateAlbums(($gallery->app->selfRegCreate == 'yes'));
+	    $tmpUser->setEmail($email);
+	    $tmpUser->origEmail=$email;
+	    $tmpUser->log("self_register");
+	    $tmpUser->setDefaultLanguage($defaultLanguage);
+	    $msg = ereg_replace("!!PASSWORD!!", $password,
+	       ereg_replace("!!USERNAME!!", $uname,
+	       ereg_replace("!!FULLNAME!!", $fullname,
+	       ereg_replace("!!NEWPASSWORDLINK!!",
+	       $tmpUser->genRecoverPasswordHash(),
+	        welcome_email()))));
+	    $logmsg = sprintf(_("%s has registered.  Email has been sent to %s."), $uname, $email);
+	    $logmsg2  = sprintf("%s has registered.  Email has been sent to %s.", $uname, $email);
+	    if ($logmsg != $logmsg2) {
+	        $logmsg .= " <<<<>>>>> $logmsg2";
+	    }
+
+	    if (gallery_mail($email, _("Gallery Self Registration"),$msg, $logmsg)) {
+	        $tmpUser->save();
+	        echo "<p>".sprintf(_("An email has been sent to %s."), $email);
+	        echo '<br>';
+	        echo _("Your account information is contained within the email.");
+	    } else {
+	        echo gallery_error(_("Email could not be sent.  Please contact gallery administrator to register on this site"));
+	    }
 ?>
 		<br><br>
 		<form> <input type="button" value="<?php echo _("Dismiss") ?>" onclick='parent.close()'> </form>
@@ -129,16 +130,15 @@
 }
 
 echo makeFormIntro('register.php', array(
-			'name' => 'usercreate_form',
-			'method' => 'POST',
-			'onsubmit' => "usercreate_form.create.disabled = true;"));
+    'name' => 'usercreate_form',
+    'onsubmit' => "usercreate_form.create.disabled = true;"));
 include(dirname(__FILE__) . '/html/userData.inc');
 ?>
 <p>
 <?php echo _("Your account information will be sent to the email address you provide.") ?>
 <br><br>
-<input type="hidden" name="formaction" value ="">
-<input type="submit" name="create" value="<?php echo _("Create") ?>" onclick="usercreate_form.formaction.value ='create'">
+<input type="hidden" name="formaction" value="">
+<input type="submit" name="create" value="<?php echo _("Send request") ?>" onclick="usercreate_form.formaction.value ='create'">
 <input type="submit" name="cancel" value="<?php echo _("Cancel") ?>" onclick='parent.close()'>
 </form>
 <script language="javascript1.2" type="text/JavaScript">
diff -Naur gallery-1.5.1/rename_album.php gallery-1.5.2/rename_album.php
--- gallery-1.5.1/rename_album.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/rename_album.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: rename_album.php,v 1.60.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: rename_album.php,v 1.61.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/reset_votes.php gallery-1.5.2/reset_votes.php
--- gallery-1.5.1/reset_votes.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/reset_votes.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,9 +1,9 @@
 <?php
 /*
-   $Id: reset_votes.php,v 1.16.2.1 2005/09/12 22:40:44 dmolavi Exp $
+   $Id: reset_votes.php,v 1.17.2.1 2006/01/06 06:31:30 jenst Exp $
 
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file Copyright (C) 2003-2004 Joan McGalliard
  * 
diff -Naur gallery-1.5.1/resize_photo.php gallery-1.5.2/resize_photo.php
--- gallery-1.5.1/resize_photo.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/resize_photo.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,17 +17,20 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: resize_photo.php,v 1.58.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: resize_photo.php,v 1.59.2.2 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
 
 require_once(dirname(__FILE__) . '/init.php');
 
-list($index, $manual, $resize, $resize_file_size, $remove_resized, $resizeRecursive) = getRequestVar(array('index', 'manual', 'resize', 'resize_file_size', 'remove_resized', 'resizeRecursive'));
+list($index, $manual, $resize, $resize_file_size, $remove_resized, $resizeRecursive) = 
+  getRequestVar(array('index', 'manual', 'resize', 'resize_file_size', 'remove_resized', 'resizeRecursive'));
 
 // Hack check
-if (!$gallery->user->canWriteToAlbum($gallery->album)) {
+if (! $gallery->user->canWriteToAlbum($gallery->album) &&
+  ! $gallery->album->getItemOwnerModify() &&
+  ! $gallery->album->isItemOwner($gallery->user->getUid(), $index)) {
 	echo _("You are not allowed to perform this action!");
 	exit;
 }
diff -Naur gallery-1.5.1/rotate_photo.php gallery-1.5.2/rotate_photo.php
--- gallery-1.5.1/rotate_photo.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/rotate_photo.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: rotate_photo.php,v 1.51.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: rotate_photo.php,v 1.52.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/rss.php gallery-1.5.2/rss.php
--- gallery-1.5.1/rss.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/rss.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: rss.php,v 1.21.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: rss.php,v 1.23.2.1 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -261,8 +261,8 @@
 	$channel_image_height = $ha["pb:height"];
 }
 
-$total_str = pluralize_n2(ngettext(_("1 album"), _("%s albums"), $numAlbums), $numAlbums, _("no albums"));
-$image_str = pluralize_n2(ngettext(_("1 photo"), _("%s photos"), $numPhotos), $numPhotos, _("no photos"));
+$total_str = gTranslate('core', "1 album", "%s albums", $numAlbums, _("no albums"));
+$image_str = gTranslate('core', "1 photo", "%s photos", $numPhotos, _("no photos"));
 
 $description = sprintf(_("%s in %s"), $image_str, $total_str);
 
diff -Naur gallery-1.5.1/save_photos.php gallery-1.5.2/save_photos.php
--- gallery-1.5.1/save_photos.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/save_photos.php	2006-01-08 21:07:15.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: save_photos.php,v 1.117.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: save_photos.php,v 1.124.2.2 2006/01/08 20:07:15 jenst Exp $
  */
 
 /**
@@ -40,12 +40,12 @@
 }
 
 if (!empty($_FILES['userfile']['name'])) {
-	$file_count = 0;
-	foreach ($_FILES['userfile']['name'] as $file) {
-		if ($file) {
-			$file_count++;
-		}
-	}
+    $file_count = 0;
+    foreach ($_FILES['userfile']['name'] as $file) {
+        if ($file) {
+            $file_count++;
+        }
+    }
 }
 
 doctype();
@@ -67,47 +67,48 @@
 <div class="popup" align="center">
 <?php
 	/* Process all urls first.
-	** $urls contains all URLs given by the "URL Upload".
-	** $urls should be empty when using the "Form Upload".
+	 * $urls contains all URLs given by the "URL Upload".
+	 * $urls should be empty when using the "Form Upload".
 	*/
 	foreach ($urls as $url) {
 
-	/* Get rid of any extra white space */
-	$url = trim($url);
-		
-	/*
-	** Check to see if the URL is a local directory (inspired by
-	** code from Jared (hogalot))
-	*/
-	if (fs_is_dir($url)) {
-		processingMsg(sprintf(_("Processing %s as a local directory."), 
-			'<i>' . htmlspecialchars(removeTags(urldecode($url))) . '</i>'));
-		$handle = fs_opendir($url);
-		while (($file = readdir($handle)) != false) {
-			if ($file != "." && $file != "..") {
-				$tag = pathinfo($file);
-				$tag = strtolower(isset($tag['extension']) ? $tag['extension'] : '');
-				if (acceptableFormat($tag)) {
-					/* Add to userfile */
-					if (substr($url,-1) == "/") {
-						$image_tags[] = fs_export_filename($url . $file);
-						} else {
-						$image_tags[] = fs_export_filename($url . "/" . $file);
-					}
-				}
-					if ($tag == "csv") {
-						if (substr($url,-1) == "/") {
-							$info_tags[] = fs_export_filename($url . $file);
-						} else {
-							$info_tags[] = fs_export_filename($url . "/" . $file);
-						}
-					}
-				}
-			}
-			closedir($handle);
-			continue;
-		}
+	    /* Get rid of any extra white space */
+	    $url = trim($url);
 
+	    /*
+	    * Check to see if the URL is a local directory (inspired by
+	    * code from Jared (hogalot))
+	    */
+	    if (fs_is_dir($url)) {
+	        processingMsg(sprintf(_("Processing %s as a local directory."),
+	        '<i>' . htmlspecialchars(strip_tags(urldecode($url))) . '</i>'));
+	        $handle = fs_opendir($url);
+	        if($handle) {
+	            while (($file = readdir($handle)) != false) {
+	                if ($file != "." && $file != "..") {
+	                    $tag = pathinfo($file);
+	                    $tag = strtolower(isset($tag['extension']) ? $tag['extension'] : '');
+	                    if (acceptableFormat($tag) || canDecompressArchive($tag)) {
+	                        /* Add to userfile */
+	                        if (substr($url,-1) == "/") {
+	                            $image_tags[] = fs_export_filename($url . $file);
+	                        } else {
+	                            $image_tags[] = fs_export_filename($url . "/" . $file);
+	                        }
+	                    }
+	                    if ($tag == "csv") {
+	                        if (substr($url,-1) == "/") {
+	                            $info_tags[] = fs_export_filename($url . $file);
+	                        } else {
+	                            $info_tags[] = fs_export_filename($url . "/" . $file);
+	                        }
+	                    }
+	                }
+	            }
+	            closedir($handle);
+	        }
+	        continue;
+	    }
 		/* Get rid of any preceding whitespace (fix for odd browsers like konqueror) */
 		$url = ltrim($url);
 		
@@ -119,7 +120,7 @@
 		if (!empty($url) && !fs_is_file($url)) {
 			if (!ereg("^(http|ftp)", $url)) {
 				processingMsg(sprintf(_('Unable to find %s locally - trying %s.'), 
-					htmlspecialchars(removeTags(urldecode($url))), 'http'));
+					htmlspecialchars(strip_tags(urldecode($url))), 'http'));
 				$url = "http://$url";
 			}
 
@@ -140,26 +141,22 @@
 		 * Do NOT use fs_fopen here because that will pre-process
 		 * the URL in win32 style (ie, convert / to \, etc).
 		 */
- 		$id = @fopen($url, "rb");
+		$urlArray = array($url, "$url/");
 		if (!ereg("http", $url)) {
-			if (!$id) {
-			    $url = "http://$url";
-			    $id = @fopen($url, "rb");
-			}
-			if (!$id) {
-			    $url = "http://$url/";
-                $id = @fopen($url, "rb");
-			}
+		    $urlArray[] = "http://$url";
+		    $urlArray[] = "http://$url/";
 		}
-		if (!$id) {
-		  $url = "$url/";
-		  $id = @fopen($url, "rb");
+
+		do {
+		    $tryUrl = array_shift($urlArray);
+		    $id = @fopen($tryUrl, "rb");
 		}
-		
+		while (!$id && !empty($urlArray));
+
 		if (!$id) {
-			processingMsg(sprintf(_("Could not open url: %s"), $url));
-			continue;
-		} 
+		    processingMsg(sprintf(_("Could not open url: %s"), $url));
+		    continue;
+		}
 	
 		/**
 		 * If this is an image or movie - 
@@ -259,10 +256,12 @@
 ?>
 
 <div class="popuphead"><?php echo _("Processing status...") ?></div>
-<div class="popup" align="center">
+<div class="popup">
 
 <?php
 $image_count = 0;
+
+// Begin Metadata fetching and preprocessing
 $image_info = array();
 // Get meta data
 if (isset($meta)) {
@@ -271,69 +270,55 @@
 		$image_info = array_merge($image_info, parse_csv(fs_export_filename($data),";"));
 	}
 }
-while (isset($_FILES['metafile']['tmp_name']) && sizeof($_FILES['metafile']['tmp_name'])) {
-	$name = array_shift($_FILES['metafile']['name']);
-	$file = array_shift($_FILES['metafile']['tmp_name']);
-	$image_info = array_merge($image_info, parse_csv(fs_export_filename($file),";"));
-}
-if (isDebugging()) {
-    // Print meta data
-    print "<table border=\"1\">\n";
-    $row = 0;
-    foreach ($image_info as $info) {
-	print "<tr>";
-	if ($row == 0) {
-	    $keys = array_keys($info);
-	    foreach ($keys as $key) {
-		print "<th>$key</th>";
-	    }
-	    print "</tr>\n<tr>";
-	}
-	foreach ($keys as $key) {
-	    print "<td>".$info[$key]."</td>";
-	}
-	$row++;
-	print "</tr>\n";
+
+if(!empty($_FILES['metafile']['name'][0])) {
+    echo debugMessage("metadata found", __FILE__, __LINE__);
+    while (isset($_FILES['metafile']['tmp_name']) && sizeof($_FILES['metafile']['tmp_name'])) {
+        $name = array_shift($_FILES['metafile']['name']);
+        echo debugMessage("name $name", __FILE__, __LINE__);
+        $file = array_shift($_FILES['metafile']['tmp_name']);
+        echo debugMessage("file $file", __FILE__, __LINE__);
+        $image_info = array_merge($image_info, parse_csv(fs_export_filename($file),";"));
     }
-    print "</table>\n";
+
+    $exampleMetaData = $image_info[0];
+    // Find the name of the file name field
+    foreach (array_keys($exampleMetaData) as $currKey) {
+        if (eregi("^\"?file\ ?name\"?$", $currKey)) {
+            $fileNameKey = $currKey;
+        }
+    }
+
+    // $captionMetaFields will store the names (in order of priority to set caption to)
+    $captionMetaFields = array("Caption", "Title", "Description");
+
 }
-// $captionMetaFields will store the names (in order of priority to set caption to)
-$captionMetaFields = array("Caption", "Title", "Description", "Persons");
+// End Metadata preprocessing
 
 $upload_started = false;
 /* Now we start processing the given Files */
 while (isset($_FILES['userfile']['tmp_name']) && sizeof($_FILES['userfile']['tmp_name'])) {
     $upload_started = true;
-	$name = array_shift($_FILES['userfile']['name']);
-	$file = array_shift($_FILES['userfile']['tmp_name']);
-	if (!empty($usercaption) && is_array($usercaption)) {
-	    $caption = removeTags(array_shift($usercaption));
-	} else {
-	    $caption = '';
-	}
-	if (!isset($caption)) {
-	       	$caption="";
-       	}
-
-	if ($name) {
-		$extra_fields = array();
-		if (!isset($setCaption)) {
-			$setCaption = '';
-		}
-		// Find in meta data array
-		$firstRow = 1;
-		$fileNameKey = "File Name";
-		foreach ($image_info as $info) {
-			if ($firstRow) {
-				// Find the name of the file name field
-				foreach (array_keys($info) as $currKey) {
-					if (eregi("^\"?file\ ?name\"?$", $currKey)) {
-						$fileNameKey = $currKey;
-					}
-				}
-				$firstRow = 0;
-			}
+    $name = array_shift($_FILES['userfile']['name']);
+    $file = array_shift($_FILES['userfile']['tmp_name']);
 
+    if ($name) {
+        if (!empty($usercaption) && is_array($usercaption)) {
+            $caption = strip_tags(array_shift($usercaption));
+        } else {
+            $caption = '';
+        }
+        if (!isset($caption)) {
+            $caption = '';
+        }
+
+        $extra_fields = array();
+        if (!isset($setCaption)) {
+            $setCaption = '';
+        }
+        
+        // Find in meta data array
+        foreach ($image_info as $info) {
 			if ($info[$fileNameKey] == $name) {
 				// Loop through fields
 				foreach ($captionMetaFields as $field) {
@@ -343,6 +328,10 @@
 					}
 				}
 				$extra_fields = $info;
+				if(isDebugging()) {
+				    echo _("Extrafields:");
+				    print_r($extra_fields);
+				}
 			}
 		}
 
@@ -367,15 +356,17 @@
 }
 ?>
 
-<div align="center">
+<div class="popuptd" align="center">
 <?php
 if (empty($image_count) && $upload_started) {
 	print _("No images uploaded!");
 }
 ?>
+<br>
 <form>
 <input type="button" value="<?php echo _("Dismiss") ?>" onclick='parent.close()'>
 </form>
+
 <?php
 /* Prompt for additional files if we found links in the HTML slurpage */
 if (count($image_tags)) {
@@ -384,19 +375,13 @@
 	** include JavaScript (de)selection and invert
 	*/
 	insertFormJS('uploadurl_form');
-?>
-</div>
-<p class="popuptd">
-<?php 
-	echo insertFormJSLinks('urls[]'); 
-?>
-</p>
 
-<?php 
+	echo "\n<p>". insertFormJSLinks('urls[]') ."</p>";
+	
     echo _("Select the items you want to upload. To select multiple hold 'ctrl' (PC) or 'Command' (Mac)");
     echo makeFormIntro("save_photos.php", 
-		array("name" => 'uploadurl_form',
-			"method" => "POST"), array('type' => 'popup')); 
+		array('name' => 'uploadurl_form'),
+		array('type' => 'popup')); 
 
     /* Allow user to select which files to grab - only show url right now ( no image previews ) */
     sort($image_tags);
@@ -404,24 +389,20 @@
 	
     echo '<select name="urls[]" multiple="multiple" size="'. $selectSize ."\">\n";
     foreach ( $image_tags as $image_src) {
-	echo "\t<option value=\"$image_src\" selected>$image_src</option><br>\n";
+	   echo "\t<option value=\"$image_src\" selected>$image_src</option><br>\n";
     }
 
-echo "</select>\n";
+    echo "</select>\n";
 
-/* REVISIT - it'd be nice to have these functions get shoved
-  into util.php at some time - maybe added functionality to the makeFormIntro? */ 
-?>
+    /* REVISIT - it'd be nice to have these functions get shoved
+     * into util.php at some time - maybe added functionality to the makeFormIntro?
+    */ 
+    echo "\n<p>". insertFormJSLinks('urls[]') ."</p>";
 
-<p>
-<?php 
-	echo insertFormJSLinks('urls[]'); 
-?>
-</p>
-<?php if (count($info_tags)) { ?>
+    if (count($info_tags)) { ?>
 <span>
 <?php
-	processingMsg(sprintf(_("%d meta file(s) found.  These files contain information about the images, such as titles and descriptions."), count($info_tags)));
+	   processingMsg(sprintf(_("%d meta file(s) found.  These files contain information about the images, such as titles and descriptions."), count($info_tags)));
 ?>
 </span>
 <p>
@@ -433,17 +414,16 @@
 <tr>
 	<td>
 <?php
-	foreach ($info_tags as $info_tag) {
-		print "\t<input type=\"checkbox\" name=\"meta[]\" value=\"$info_tag\" checked/>$info_tag</input><br>\n";
-	}
-
+    	foreach ($info_tags as $info_tag) {
+    		print "\t<input type=\"checkbox\" name=\"meta[]\" value=\"$info_tag\" checked/>$info_tag</input><br>\n";
+    	}
 ?>
 	</td>
 </tr>
 </table>
 <p>
 <?php
-	echo insertFormJSLinks('meta[]');
+	   echo insertFormJSLinks('meta[]');
 ?>
 <?php } /* end if (count($info_tags)) */ ?>
 <p>
@@ -459,7 +439,8 @@
 </form>
 </div>
 </div>
-<?php } /* End if links slurped */ ?>
+<?php 
+} /* End if links slurped */ ?>
 </div>
 </body>
 </html>
diff -Naur gallery-1.5.1/search.php gallery-1.5.2/search.php
--- gallery-1.5.1/search.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/search.php	2006-01-06 07:31:30.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: search.php,v 1.76.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: search.php,v 1.78.2.2 2006/01/06 06:31:30 jenst Exp $
  */
 ?>
 <?php
@@ -25,7 +25,7 @@
 require_once(dirname(__FILE__) . '/init.php');
 
 /* urldecode, remove tags, and then encode htmlspecial chars to make string display-safe */
-$searchstring = htmlspecialchars(removeTags(urldecode(getRequestVar('searchstring'))));
+$searchstring = htmlspecialchars(strip_tags(urldecode(getRequestVar('searchstring'))));
 
 $borderColor = $gallery->app->default["bordercolor"];
 $thumbSize = $gallery->app->default["thumb_size"];
@@ -117,7 +117,7 @@
         $matchSummary = eregi("$searchstring", $searchSummary);
         $matchName = eregi("$searchstring", $searchName);
 
-        if ($matchTitle || $matchDescription || $matchSummary | $searchName) {
+        if ($matchTitle || $matchDescription || $matchSummary | $matchName) {
             $searchTitle = preg_replace($searchExpr, $searchRepl, $searchTitle); // cause search word to be bolded
 
             $searchDescription = preg_replace($searchExpr, $searchRepl, $searchDescription); // cause search word to be bolded
@@ -279,7 +279,7 @@
 includeHtmlWrap("gallery.footer");
 
 if (!$GALLERY_EMBEDDED_INSIDE) {
-?> 
+?>
 </body>
 </html>
 <?php } ?>
diff -Naur gallery-1.5.1/session.php gallery-1.5.2/session.php
--- gallery-1.5.1/session.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/session.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: session.php,v 1.51.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: session.php,v 1.52.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/setup/backup_albums.php gallery-1.5.2/setup/backup_albums.php
--- gallery-1.5.1/setup/backup_albums.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/backup_albums.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file Copyright (C) 2003-2004 Joan McGalliard
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: backup_albums.php,v 1.22.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: backup_albums.php,v 1.24.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
@@ -94,9 +94,7 @@
 <span class="error"><?php echo $error_text ?></span>
 <?php
 }
-?>
 
-<?php
 if (!isset($backup_method)) { $backup_method="zip";}
 if (!isset($target_files)) { $target_files="dat";}
 if (!isset($tar_path)) { $tar_path= ( ($path = findInPath ("tar")) ? $path : "/usr/bin/tar" );}
@@ -104,11 +102,9 @@
 if (!isset($xargs_path)) { $xargs_path=( ($path = findInPath ("xargs")) ? $path : "/usr/bin/xargs");}
 if (!isset($gzip_path)) { $gzip_path=( ($path = findInPath ("gzip")) ? $path : "/usr/bin/gzip");}
 if (!isset($zip_path)) { $zip_path="C:\bin\zip.exe";}
-?>
-<?php echo _("Choose archiving option and which files you wish to archive.") ?>
-<?php echo makeFormIntro("backup_albums.php", array(
-		"name" => "theform", 
-		"method" => "POST"));
+
+echo _("Choose archiving option and which files you wish to archive.");
+echo makeFormIntro('backup_albums.php', array('name' => 'theform', ));
 ?>
 <table>
 
diff -Naur gallery-1.5.1/setup/check_imagemagick.php gallery-1.5.2/setup/check_imagemagick.php
--- gallery-1.5.1/setup/check_imagemagick.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/check_imagemagick.php	2006-01-10 06:30:53.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,11 +17,11 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: check_imagemagick.php,v 1.27.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: check_imagemagick.php,v 1.31.2.2 2006/01/10 05:30:53 jenst Exp $
  */
 ?>
 <?php 
-    require_once(dirname(__FILE__) . '/init.php');
+require_once(dirname(__FILE__) . '/init.php');
 ?>
 <html>
 <head>
@@ -32,225 +32,143 @@
 <?php configLogin(basename(__FILE__)); ?>
 <?php $app_name='ImageMagick' ?>
 
-<h1 class="header"><?php echo sprintf(_("Check %s"), $app_name) ?></h1>
+<div class="header"><?php echo sprintf(_("Check %s"), $app_name) ?></div>
 
 <div class="sitedesc">
 <?php 
-	echo sprintf(_("This script is designed to examine your %s installation to see if it is ok to be used by Gallery."), $app_name);
-	echo sprintf(_("You should run this script <b>after</b> you have run the config wizard, if you have had problems with your %s installation that the wizard did not detect."), $app_name) 
+echo sprintf(_("This script is designed to examine your %s installation to see if it is ok to be used by Gallery."), $app_name);
+echo sprintf(_("You should run this script <b>after</b> you have run the config wizard, if you have had problems with your %s installation that the wizard did not detect."), $app_name)
 ?>
 </div>
-<p>
 
-<table width="100%">
+<br>
+<table class="inner" width="100%">
 <tr>
-	<td>
-		<table class="inner" width="100%">
-		<tr>
-			<td class="desc">
-				<?php echo _("Loading configuration files.  If you see an error here, it is probably because you have not successfully run the config wizard.") ?>
-			</td>
-
+  <td class="desc">
+    <?php echo _("Loading configuration files.  If you see an error here, it is probably because you have not successfully run the config wizard.") ?>
+  </td>
 <?php
-if (! file_exists(GALLERY_BASE . '/config.php')) {
+if (gallerySanityCheck() != NULL) {
 ?>
-		</tr>
-		<tr>
-			<td class="errorlong"><?php echo _("It seems that you did not configure your GALLERY. Please run and finish the configuration wizard.") ?></td>
-		</tr>
-		</table>
-		<p><?php echo returnToConfig(); ?></p>
-	</td>
+</tr>
+<tr>
+  <td class="errorlong"><?php echo _("It seems that you did not configure your GALLERY. Please run and finish the configuration wizard.") ?></td>
 </tr>
 </table>
+
+<p><?php echo returnToConfig(); ?></p>
+
 </body>
 </html>
 <?php
-	exit;
+    exit;
 } else {
-	require(GALLERY_BASE . '/config.php');
+    require(GALLERY_BASE . '/config.php');
 ?>
 			<td class="Success"><?php echo _("OK") ?></td>
 		</tr>
 		</table>
 <?php } ?>
-	</td>
+
+<table class="inner" width="100%">	
+<tr>
+  <td class="desc"><?php echo _("Let us see if we can figure out what operating system you are using.") ?></td>
 </tr>
 <tr>
-	<td>
-		<table class="inner" width="100%">	
-		<tr>
-			<td class="desc"><?php echo _("Let us see if we can figure out what operating system you are using.") ?></td>
-		</tr>
-		<tr>
-			<td class="desc">
-			<?php echo _("This is what your system reports") ?>:
-			<p><b><?php passthru("uname -a"); ?></b></p>
-
-			<p><?php echo _("This is the type of system on which PHP was compiled") ?>:</p>
-			<p><b><?php echo php_uname() ?></b></p>
-			<p><?php echo _("Make sure that the values above make sense to you.") ?></p>
+    <td class="desc">
+    <?php echo _("This is what your system reports") ?>:
+      <p><b><?php passthru("uname -a"); ?></b></p>
+
+      <p><?php echo _("This is the type of system on which PHP was compiled") ?>:</p>
+      <p><b><?php echo php_uname() ?></b></p>
+      <p><?php echo _("Make sure that the values above make sense to you.") ?></p>
 			
-			<p>
-<?php echo "\t\t\t". sprintf(_("Look for keywords like %s, %s, %s etc. in the output above."), 
-		'&quot;Linux&quot;', '&quot;Windows&quot;', '&quot;FreeBSD&quot;');
-	echo _("If both the attempts above failed, you should ask your ISP what operating system you are using."); 
-	echo sprintf(_("You can check via %s, they can often tell you."),
-		'<a href="http://www.netcraft.com/whats?host=' .
-		$_SERVER['HTTP_HOST'] . 
-		'">Netcraft</a>') ;
+      <p>
+<?php 
+echo "\t\t\t". sprintf(_("Look for keywords like %s, %s, %s etc. in the output above."), 
+  '&quot;Linux&quot;', '&quot;Windows&quot;', '&quot;FreeBSD&quot;'
+);
+echo _("If both the attempts above failed, you should ask your ISP what operating system you are using.");
+echo sprintf(_("You can check via %s, they can often tell you."),
+  '<a href="http://www.netcraft.com/whats?host=' . $_SERVER['HTTP_HOST'] . '">Netcraft</a>'
+) ;
 ?>
 		</p>
-			</td>
-		</tr>
-		</table>
-	</td>
+    </td>
 </tr>
+</table>
+
+<table class="inner" width="100%">
 <tr>
-	<td>
-		<table class="inner" width="100%">
-		<tr>
-			<td class="desc">
-				<?php echo sprintf(_("You told the config wizard that your %s binaries live here:"), $app_name) . "\n" ?>
-				<p><ul><b><?php echo $gallery->app->ImPath ?></b></ul></p>
-				<p><?php echo sprintf(_("If that is not right (or if it is blank), re-run the configuration wizard and enter a location for %s."), $app_name) . "\n"; ?>
-			</td>
-		</tr>
+    <td class="desc">
+      <?php echo sprintf(_("You told the config wizard that your %s binaries live here:"), $app_name) . "\n" ?>
+      <p><ul><b><?php echo $gallery->app->ImPath ?></b></ul></p>
+      <p><?php echo sprintf(_("If that is not right (or if it is blank), re-run the configuration wizard and enter a location for %s."), $app_name) . "\n"; ?>
+    </td>
+</tr>
 <?php
-	$debugfile = tempnam($gallery->app->tmpDir, "gallerydbg");
+$debugfile = tempnam($gallery->app->tmpDir, "gallerydbg");
 
-	if (! inOpenBasedir($gallery->app->ImPath)) {
+if (! inOpenBasedir($gallery->app->ImPath)) {
 ?>
-		<tr>
-			<td class="warningpct" width="100%"><?php echo sprintf(_("<b>Note:</b> Your %s directory (%s) is not in your open_basedir list %s"), 
-						$app_name,
-						$gallery->app->ImPath,
-						'<ul>'.  ini_get('open_basedir') . '</ul>');
-						echo _("The open_basedir list is specified in php.ini.") . "<br>";
+<tr>
+    <td class="warningpct" width="100%"><?php echo sprintf(_("<b>Note:</b> Your %s directory (%s) is not in your open_basedir list %s"), 
+			$app_name,
+			$gallery->app->ImPath,
+			'<ul>'.  ini_get('open_basedir') . '</ul>');
+			echo _("The open_basedir list is specified in php.ini.") . "<br>";
 						echo _("The result is, that we can't perform all of our basic checks on the files to make sure that they exist and they're executable.") ."\n"; ?>
-			</td>
-		</tr>
-<?php	} ?>
-		</table>
-	</td>
+    </td>
 </tr>
+<?php	} ?>
+</table>
+
+<table class="inner" width="100%">
 <tr>
-	<td>
-		<table class="inner" width="100%">
-		<tr>
-			<td class="desc"><?php echo sprintf(_("We are going to test each %s binary individually."), $app_name) ?></td>
-		</tr>
-		</table>
-		
-		<table class="inner" width="100%">
+    <td class="desc" colspan="2"><?php echo sprintf(_("We are going to test each %s binary individually."), $app_name) ?></td>
+</tr>
 <?php
 
-$binaries = array(
-        "identify",
-        "convert"
-        );
-
-foreach ($binaries as $bin) {
-	$result=checkImageMagick($bin);
-	echo "\n\t\t<tr>";
-	echo "\n\t\t\t". '<td class="desc" width="100%">' . _("Checking:"). ' <b>' . $result[0] . '</b></td>';
-	if (isset($result['error'])) {
-		echo "\n\t\t\t". '<td style="white-space:nowrap;" class="errorpct">'. $result['error'] . '</td>';
-	} else {
-		echo "\n\t\t\t". '<td style="white-space:nowrap;" class="successpct">'. $result['ok'] . '</td>';
-	}
-	echo "\n\t\t</tr>";
+$binaries = array('identify' => 'mandatory', 'convert' => 'mandatory', 'composite' => 'optional');
+
+foreach ($binaries as $bin => $priority) {
+    $result = checkImageMagick($bin);
+    echo "\n<tr>";
+    echo "\n  ". '<td class="desc" width="100%">' . _("Checking:"). ' <b>' . $result[0] . '</b></td>';
+    if (isset($result['error'])) {
+        $class = ($priority == 'mandatory') ? 'errorpct' : 'warningpct';
+        echo "\n  ". '<td style="white-space:nowrap;" class="'. $class .'">'. $result['error'] . '</td>';
+    } else {
+        echo "\n  ". '<td style="white-space:nowrap;" class="successpct">'. $result['ok'] . '</td>';
+    }
+    echo "\n</tr>";
 }
 
 if (fs_file_exists($debugfile)) {
     fs_unlink($debugfile);
 }
-    
 ?>
-	
-		</table>
-	</td>
-</tr>
+</table>
+
+<table class="inner" width="100%">
 <tr>
-	<td>
-		<table class="inner" width="100%">
-		<tr>
-			<td class="desc"><?php 
-				echo sprintf(_("If you see an error above complaining about reading or writing to %s then this is likely a permission/configuration issue on your system.  If it mentions %s then it's because your system is configured with %s enabled."),
-					"<b>$debugfile</b>",
-					'<i>open_basedir</i>',
-					'<a href="http://www.php.net/manual/en/configuration.php#ini.open-basedir"> open_basedir</a>') ;
-				echo "   ". sprintf(_("You should talk to your system administrator about this, or see the %sGallery Help Page%s."),
-					'<a href="http://gallery.sourceforge.net/help.php">',
-					'</a>');
+    <td class="desc"><?php 
+			echo sprintf(_("If you see an error above complaining about reading or writing to %s then this is likely a permission/configuration issue on your system.  If it mentions %s then it's because your system is configured with %s enabled."),
+			  "<b>$debugfile</b>",
+			  '<i>open_basedir</i>',
+			  '<a href="http://www.php.net/manual/en/configuration.php#ini.open-basedir"> open_basedir</a>') ;
+			echo "   ". sprintf(_("You should talk to your system administrator about this, or see the %sGallery Help Page%s."),
+			  '<a href="http://gallery.sourceforge.net/help.php">',
+			  '</a>');
 
 ?>
-			<p><?php echo sprintf(_("For other errors, please refer to the list of possible responses in %s to get more information."), '<a href="http://gallery.sourceforge.net/faq.php">FAQ</a> C.2'); ?>
-			</p>
-			</td>
-		</tr>
-		</table>
-		<table class="inner" width="100%">
-		<tr>
-			<td class="desc" align="center"><?php 	echo returnToConfig(); ?></td>
-		</tr>
-		</table>
-	</td>
+      <p><?php echo sprintf(_("For other errors, please refer to the list of possible responses in %s to get more information."), '<a href="http://gallery.sourceforge.net/faq.php">FAQ</a> C.2'); ?>
+      </p>
+    </td>
 </tr>
+</table>
 
-</body>
-</html>
-<?php
-
-function checkImageMagick($cmd) {
-	global $gallery;
-	global $show_details;
-	global $debugfile;
-
-	$cmd = fs_executable($gallery->app->ImPath . "/$cmd");
-	$result[]= fs_import_filename($cmd);
-
-	$ok=1;
-	if (inOpenBasedir($gallery->app->ImPath)) {
-		if (! fs_file_exists($cmd)) {
-			$result['error'] = sprintf(_("File %s does not exist."), $cmd);
-			$ok = 0;
-		}
-	}
-
-	$cmd .= " -version";
-	
-	fs_exec($cmd, $results, $status, $debugfile);
-
-	if ($ok) {
-		if ($status != $gallery->app->expectedExecStatus) {
-			$result['error'] = sprintf(_("Expected status: %s, but actually received status %s."),
-				$gallery->app->expectedExecStatus,
-				$status);
-			$ok = 0;
-		}
-	}
-
-	/*
-	 * Windows does not appear to allow us to redirect STDERR output, which
-	 * means that we can't detect the version number.
-	 */
-	if ($ok) {
-		if (getOS() == OS_WINDOWS) {
-			$version = "<i>" . _("can't detect version on Windows") ."</i>";
-		}
-		else if (eregi("version: (.*) http(.*)$", $results[0], $regs)) {
-			$version = $regs[1];
-        	} else {
-			$result['error'] = $results[0];
-			$ok = 0;
-		}
-	}
-
-	if (! empty($ok)) {
-		$result['ok']=sprintf(_("OK!  Version: %s"), $version);
-	}
-	return $result;
-}
+<div width="80%" class="desc" align="center"><?php echo returnToConfig(); ?></td>
 
-?>
+</body>
+</html>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/setup/check.inc gallery-1.5.2/setup/check.inc
--- gallery-1.5.1/setup/check.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/check.inc	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,10 +17,12 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: check.inc,v 1.44.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: check.inc,v 1.50.2.2 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 
+<script type="text/javascript" src="<?php echo makeGalleryUrl('js/toggle.js'); ?>"></script>
+
 <input type="hidden" name="this_page" value="check">
 <input type="hidden" name="next_page" value="constants">
 
@@ -30,9 +32,9 @@
 <?php 
 	echo _("This is the Gallery system check page.") . "  ";
 	echo _("This page will validate your installation to make sure that you have all the necessary components and permissions on this system and that everything is configured reasonably.") ;
-?>
-<p>
-<?php 
+
+	echo '<br><br>';
+
 	$diagUrl='diagnostics.php';
         $diagnostics_page='<a href="'. $diagUrl .'">' . _("Gallery Diagnostics Page").'</a>';
 	$help_page='<a href="http://gallery.sourceforge.net/help.php">'. _("Gallery Help Page"). '</a>';
@@ -45,109 +47,154 @@
 		echo sprintf(_("Having problems?  Try the %s and %s."),
 			$diagnostics_page, $help_page);
 	}
-?>
-</p>
-</div>
 
-<p />
+echo "</div>";
+echo "<br>";
 
-<?php
-$warning =0;
-foreach ($checklist as $check) {
-	if( isset($check["enabled"]) && $check["enabled"] == "no") continue;
-?> 
-	<table class="inner" width="100%">
-	<tr>
-		<td class="desc" width="50%" valign="top"><?php echo $check["desc"] ?></td>
-		<td width="5%">&nbsp;</td>
-		<td class="desc" valign="top">
-<?php
-	$func = $check["func"];
-	list($success, $fail, $warn) = $func();
-	foreach ($success as $key) {
-		echo "\t\t\t". '<p class="success">'. _("Success") . '</p>';
-		if (strcmp($key, "")) {
-			$msg = "<i>$key</i>";
+$configTestStatus = array(
+	0 => array(
+		'image' => gImage('green_trafficlight.gif', _("Success")),
+		'text' => _("Success"),
+	       	'border' => 'border: 1px solid #b2ffb2'
+	),
+	5 => array(
+		'image' => gImage('yellow_trafficlight.gif', _("Warning, but optional")),
+		'text' => _("Warning, but optional"),
+		'border' => 'border: 2px solid #ffff98'
+	),
+	10 => array(
+		'image' => gImage('yellow_red_trafficlight.gif', _("Serious warning, but optional")),
+		'text' => _("Serious warning, but optional"),
+		'border' => 'border: 2px solid #ff9898',
+	),
+	51 => array(
+		'image' => gImage('red_trafficlight.gif', _("Serious warning, no go !")),
+		'text' => _("Serious warning, no go !"),
+		'border' => 'border: 4px solid #ec000a'
+	),
+	100 => array(
+		'image' => gImage('red_trafficlight.gif', _("Failure")),
+		'text' => _("Failure"),
+		'border' => 'border: 4px solid #ec000a'
+	)
+);
+
+$warning = 0;
+echo '<table class="inner" width="100%" cellspacing="0">';
+foreach ($checklist as $short => $check) {
+    if( isset($check["enabled"]) && $check["enabled"] == "no") continue;
+
+    $func = $check["func"];
+    $result = $func();
+    
+    list($success, $fail, $warn) = $result;
+    $status = getCheckStatus($result, $check);
+    $usedStatus[$status] = $status;
+    
+    // new Line //
+    echo "\n<tr style=\"margin-top: 2px\">";
+    // shortdesc
+    echo "\n\t<td class=\"desc\" width=\"40%\" style=\"font-weight: bold; vertical-align: top; border-bottom: 2px solid #ececec;\">". $check['prompt'];
+    echo "\n\t\t". '<br><div style="font-weight: normal; display:none;" id="toogleFrame_'. $short .'">'. $check["desc"] .'</div>';
+    echo "\n</td>"; 
+    
+    // toogle button
+    echo "\n\t<td class=\"desc\" style=\"vertical-align: top; border-right: 2px solid #ececec; border-bottom: 2px solid #ececec;\">" .
+        "\n\t\t<a href=\"#\" onClick=\"gallery_toggle('$short'); return false;\">" .
+        gImage('expand.gif', _("Show/hide more information"), array('id' => "toogleBut_$short")) .
+        '</a>';
+    echo "\n\t</td>";
+    
+    // traffic light
+    echo "\n\t<td class=\"desc\" style=\"border-right: 2px solid #ececec; border-bottom: 2px solid #ececec;\">";
+    echo $configTestStatus[$status]['image'];
+    echo "\n\t</td>";
+    
+    // result
+    echo "\n\t<td class=\"desc\" style=\"vertical-align: top;border-bottom: 2px solid #ececec;\">";
+    echo "\n\t<div style=\"padding: 2px; ". $configTestStatus[$status]['border'] .'">';
+    foreach ($success as $key) {
+		if ($key != '') {
+		    echo $key;
 		}
-		echo "\n\t\t\t<p>$msg</p>";
-	}
+    }
 	
 	$openBasedir = ini_get('open_basedir');
 	foreach ($fail as $key => $val) {
-		if (isset($check['optional']) && $check['optional'] == 1) {
-			if (isset($check["serious"]) && $check["serious"] == 1) {
-				$serious_warning = true;
-				$text = _("Serious Warning");
-				$class="error";
-			} else {
-				$text = _("Warning");
-				$class= "warning";
-			}
-			echo "\t\t\t<p class=\"$class\">$text!</p>";
-			if (isset($check) && isset($check[$key])) {
-				echo "\n\t\t\t<p>$check[$key]</p>";
-			}
-			$warning++;
-		} else {
-			if (isset($check["serious"]) && $check["serious"] == 1) {
-				$serious_warning = true;
-				$text = _("Serious Warning");
-			} else {
-				$text = _("Failed");
-			}
-
-			echo "\t\t\t<p class=\"error\">$text !</p>";
-		       	if (isset($check) && isset($check[$key])) {
-			       	echo "\n\t\t\t<p>" . $check[$key] ."</p>";
-			}
-			$error = 1;
-		}
-
-		if (isset($check["open-basedir-note"]) && !empty($openBasedir)) {
-			print '<p>'. $check["open-basedir-note"] . '</p>';
-		}
-
-		if (is_array($val)) {
-			foreach ($val as $msg) {
-				if ($val) {
-					echo "<p class=\"error\">$msg</p>";
-				}
-			}
-		}
-		else if (is_string($val)) {
-			echo '<p>'. $val . '</p>';
-		}
+	    if (isset($check['optional']) && $check['optional'] == 1) {
+	        if (isset($check["serious"]) && $check["serious"] == 1) {
+	            $serious_warning = true;
+	        }
+	        if (isset($check) && isset($check[$key])) {
+	            echo "\n\t\t\t". $check[$key];
+	        }
+	        $warning++;
+	    } else {
+	        if (isset($check["serious"]) && $check["serious"] == 1) {
+	            $serious_warning = true;
+	        }
+
+	        if (isset($check) && isset($check[$key])) {
+	            echo "\n\t\t\t". $check[$key];
+	        }
+	        $error = 1;
+	    }
+
+	    if (isset($check["open-basedir-note"]) && !empty($openBasedir)) {
+	        print '<p>'. $check["open-basedir-note"] . '</p>';
+	    }
+
+	    if (is_array($val)) {
+	        foreach ($val as $msg) {
+	            if ($val) {
+	                echo $msg;
+	            }
+	        }
+	    }
+	    else if (is_string($val)) {
+	        echo $val;
+	    }
 	}
 
+	// Nothing failed, just warnings
 	if (isset($warn) && !empty($warn)) {
-		echo "\t\t\t". '<p class="warning">'. _("Warning") . '</p>';
-		foreach ($warn as $key => $val) {
-			if (isset($check[$key])) {
-				echo "\t\t\t<p>". $check[$key] . "</p>";
-			} else {
-				echo "\n\t\t\t<p>$val</p>";
-			}
-                        $warning++;
-		}
+	    foreach ($warn as $key => $val) {
+	        if (isset($check[$key])) {
+	            echo "\t\t\t". $check[$key];
+	        } else {
+	            echo "\n\t\t\t". $val;
+	        }
+	        $warning++;
+	    }
 	}
-?>
 
-		</td>
-	</tr>
-	</table>
-<?php
+	
+    echo "\n</div></td>"; 
+	
+	echo "\n</tr>";
 }
-?>
+echo "\n</table>";
 
-<div align="center">
-<?php 
+echo "\n<table width=\"100%\">";
+echo "\n<tr><td>";
+
+echo "\n<table>";
+echo "\n<tr><td colspan=\"2\" align=\"left\">". _("Legend:") . '</td></tr>';
+foreach ($usedStatus as $status) {
+    echo "\n<tr><td>". $configTestStatus[$status]['image'] .'</td>';
+    echo "<td style=\"padding: 2px; ". $configTestStatus[$status]['border'] .'">'. $configTestStatus[$status]['text'] .'</td></tr>';
+}
+echo "\n</table>";
+
+echo "\n</td>";
+echo "\n<td align=\"center\">";
 	if (isset($error)) {
 		echo '<p class="error" id="bottom">';
 		echo _("There are errors in your configuration that will prevent Gallery from functioning properly.");
 		echo '<br>';
 		echo _("You must fix them before you can continue.");
 	} else {
-		if ($warning >0) {
+		if ($warning > 0) {
 			if (isset($serious_warning)) {
 				echo '<p class="error" id="bottom">';
 				echo _("Your installation has <b>serious warnings</b>!<br>Continue at your own risk...");
@@ -161,7 +208,7 @@
 		}
 		echo '</p><p>';
 		echo '<input type="submit" name="go_next" disabled="disabled" value="'. _("Next Step") . ' ->">';
-		echo '</p><div>';
+		echo '</p>';
 }
 ?>
-</p>
+</td></tr></table>
diff -Naur gallery-1.5.1/setup/check_mail.php gallery-1.5.2/setup/check_mail.php
--- gallery-1.5.1/setup/check_mail.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/check_mail.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: check_mail.php,v 1.13.2.3 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: check_mail.php,v 1.16.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php 
diff -Naur gallery-1.5.1/setup/check_netpbm.php gallery-1.5.2/setup/check_netpbm.php
--- gallery-1.5.1/setup/check_netpbm.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/check_netpbm.php	2006-01-10 06:30:53.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: check_netpbm.php,v 1.36.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: check_netpbm.php,v 1.38.2.2 2006/01/10 05:30:53 jenst Exp $
  */
 ?>
 <?php 
@@ -52,7 +52,7 @@
 			</td>
 
 <?php
-if (! file_exists(GALLERY_BASE . '/config.php')) {
+if (gallerySanityCheck() != NULL) {
 ?>
 		</tr>
 		<tr>
diff -Naur gallery-1.5.1/setup/check_versions.php gallery-1.5.2/setup/check_versions.php
--- gallery-1.5.1/setup/check_versions.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/check_versions.php	2006-01-10 06:30:53.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,14 +17,12 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: check_versions.php,v 1.22.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: check_versions.php,v 1.27.2.2 2006/01/10 05:30:53 jenst Exp $
  */
 ?>
 <?php 
     require_once(dirname(__FILE__) . '/init.php');
 
-    $show_details = getRequestVar('show_details');
-
     echo doctype();
 ?>
 <html>
@@ -33,119 +31,71 @@
   <?php common_header(); ?>
   <style>
 	.shortdesc { width:30% }
-  </style>  
+  </style>
+  <script type="text/javascript" src="../js/toggle.js"></script>
 </head>
 
 <body dir="<?php echo $gallery->direction ?>">
 <?php configLogin(basename(__FILE__)); ?>
-<h1 class="header"><?php echo _("Check Versions") ?></h1>
+
+<div class="header"><?php echo _("Check Versions") ?></div>
+
 <div class="sitedesc"><?php
-	echo sprintf(_("This page gives you information about the version of each necessary %s file. "),"Gallery");
+	echo sprintf(_("This page gives you information about the version of each necessary %s file. "),Gallery());
+	echo "\n<br>";
 	echo _("If you see any error(s), we highly suggest to get the actual version of that file(s).");
 ?></div>
-
-<table class="inner" width="100%">
-<tr>
-	<td class="desc"><?php 
-if (!empty($show_details)) {
-       	print sprintf(_("%sClick here%s to hide the details"),
-		       	'<a href="check_versions.php?show_details=0">','</a>');
-} else {
-       	print sprintf(_("%sClick here%s to see more details"),
-		       	'<a href="check_versions.php?show_details=1">','</a>');
-}
-?></td>
-</tr>
-</table>             
-
+<br>
 <?php
 
 list($oks, $errors, $warnings) = checkVersions(false);
 
-if  ($errors) { ?>
-<table class="inner" width="100%">
-<tr>
-	<td class="errorlong" colspan="2">
-		<?php echo pluralize_n2(ngettext("One file is missing, corrupt or older than expected.", 
-					"%d files are missing, corrupt or older than expected.", count($errors)), 
-						count($errors), _("All files okay."));
-		?>
-	</td>
-</tr>
-<?php 
-	if ($show_details) { ?>
-<tr>
-	<td class="desc" colspan="2"><?php print sprintf(_("There are problems with the following files.  Please correct them before configuring %s."), Gallery()); ?></td>
-</tr><?php
-		foreach ($errors as $file => $error) {
-			echo "\n<tr>";
-			echo "\n\t<td class=\"shortdesc\">$file:</td>";
-			echo "\n\t<td class=\"desc\">$error</td>";
-			echo "\n</tr>";
-	       	}
-	}
-?>
-
-</table>
+$tests = array(
+    'errors' => array(
+        'text' => gTranslate('config', "One file is missing, corrupt or older than expected.", "%d files are missing, corrupt or older than expected.",  count($errors), _("All files okay.")),
+        'class' => 'errorpct',
+        'hinttext' => sprintf(_("There are problems with the following files.  Please correct them before configuring %s."), Gallery())
+    ),
+    'warnings' => array(
+        'text' => gTranslate('config', "One file is more recent than expected.", "%d files are more recent than expected.", count($warnings), _("All files okay.")),
+        'class' => 'warningpct',
+        'hinttext' => sprintf(_("The following files are more up-to-date than expected for this version of %s.  If you are using pre-release code, this is OK."), Gallery())
+    ),
+    'oks' => array(
+        'text' => gTranslate('config', "One file is up-to-date.", "%d files are up-to-date.", count($oks),  _("All files are up-to-date.")),
+        'class' => 'successpct',
+        'hinttext' => _("The following files are up-to-date.")
+    )
+);
+
+foreach($tests as $testname => $args) {
+    if  ($$testname) { ?>
+<div class="inner">
+  <div style="white-space:nowrap;">
+    <a href="#" onClick="gallery_toggle('<?php echo $testname; ?>'); return false;"><?php echo gImage('expand.gif', _("Show/hide more information"), array('id' => "toogleBut_$testname")); ?></a>
+    <span class="<?php echo $args['class']; ?>"><?php echo $args['text']; ?></span>
+  </div>
+  <div style="width:100%; display:none;" id="toogleFrame_<?php echo $testname; ?>">
+    <table>
+	  <tr>
+        <td class="desc" colspan="2"><?php echo $args['hinttext']; ?></td>
+	  </tr>
+	  <?php
+	  foreach ($$testname as $file => $result) {
+	    echo "\n<tr>";
+	    echo "\n\t<td class=\"shortdesc\">$file:</td>";
+	    echo "\n\t<td class=\"desc\">$result</td>";
+	    echo "\n</tr>";
+	  }
+      ?>
+      </table>
+  </div>
+</div>
 <?php
+    }
 }
-
-if ($warnings) {
 ?>
 
-<table class="inner" width="100%">
-<tr>
-
-	<td class="warninglong" colspan="2">
-	<?php echo pluralize_n2(ngettext("One file is more recent than expected.", 
-				"%d files are more recent than expected.", count($warnings)),
-					count($warnings), _("All files okay.")); 
-	?>
-	</td>
-</tr>
-<?php
-	if ($show_details) {?>
-<tr>
-	<td class="desc" colspan="2"><?php 
-		echo sprintf(_("The following files are more up-to-date than expected for this version of %s.  If you are using pre-release code, this is OK."), Gallery());
-		echo "</td>";
-		echo "\n</tr>";
-		foreach ($warnings as $file => $warning) {
-			echo "\n<tr>";
-			echo "\n\t<td class=\"shortdesc\">$file:</td>";
-			echo "\n\t<td class=\"desc\">$warning</td>";
-			echo "\n</tr>";
-		}
-	}
-?>
-
-</table>
-<?php } ?>
-
-<table class="inner" width="100%">
-<tr>
-	<td class="successlong" colspan="2">
-		<?php echo pluralize_n2(ngettext("One file is up-to-date.",
-					"%d files are up-to-date.", count($oks)),
-					count($oks),  _("All files are up-to-date."));
-		?>
-	</td>
-</tr><?php 
-if ($show_details && $oks) {
-	echo "\n<tr>";
-	echo "\n\t<td class=\"desc\" colspan=\"2\">" . _("The following files are up-to-date.") . "</td>";
-	echo "\n</tr>";		
-	foreach ($oks as $file => $ok) {
-		echo "\n<tr>";
-		echo "\n\t<td class=\"shortdesc\">$file:</td>";
-		echo "\n\t<td class=\"desc\">$ok</td>";
-		echo "\n</tr>";
-	}
-}
-?>
-
-</table>
-
 <p align="center"><?php echo returnToConfig(); ?></p>
 
 </body>
diff -Naur gallery-1.5.1/setup/config_data.inc gallery-1.5.2/setup/config_data.inc
--- gallery-1.5.1/setup/config_data.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/config_data.inc	2006-01-10 06:41:32.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: config_data.inc,v 1.283.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: config_data.inc,v 1.296.2.4 2006/01/10 05:41:32 jenst Exp $
  */
 ?>
 <?php
@@ -31,1066 +31,1218 @@
 		$stats_choices[$key] = $key;
 	}
 }
-	
-$locale_check=check_locale();
+
+$locale_check = check_locale();
 /* $elawisyl <=> Enable LAnguages WIthout SYstem Locales
 ** is set to "no" when we have no system locales and are in linux
-** "no" disables all language settings 
+** "no" disables all language settings
 */
 
 if ($locale_check == NULL) {
-	$elawisyl = "no";
+	$elawisyl = 'no';
 } else {
-	$elawisyl = "yes";
+	$elawisyl = 'yes';
 }
 
-$netpbm_check=check_graphics();
-$IM_check=check_graphics_im();
+$netpbm_check = check_graphics();
+$IM_check = check_graphics_im();
 
 /* If all watermarking/overlay applications are missing */
 if ( isset($netpbm_check[2]['pnmcomp']) && isset($netpbm_check[2]['pamcomp']) && isset($IM_check[2]['composite']) ) {
-	$enablewatermark = "no";
+	$enablewatermark = 'no';
 } else {
-	$enablewatermark = "yes";
+	$enablewatermark = 'yes';
 }
 
-if (function_exists("posix_getpwuid")) {
+if (function_exists('posix_getpwuid')) {
 	$rec = @posix_getpwuid(posix_getuid());
-	$webserver_user = $rec["name"];
+	$webserver_user = $rec['name'];
 } else {
-	$whoami = locateFile("whoami");
+	$whoami = locateFile('whoami');
 	if ($whoami) {
 		fs_exec($whoami, $results, $status);
 		$webserver_user = $results[0];
 	} else {
-		$webserver_user = _("unknown");
+		$webserver_user = gTranslate('config',"unknown");
 	}
 }
 
+$common_messages['getting-netpbm'] = '<br>'.
+  sprintf(gTranslate('config',"Gallery prefers NetPBM version 9.9 and up.  You can install just the binaries Gallery needs from the %sGallery Download Page%s. Or, you can compile and install the entire NetPBM package from the %sNetPBM website%s."),
+  "<a href=\"http://sourceforge.net/projects/gallery\">",
+  '</a>',
+  "<a href=\"http://sourceforge.net/projects/netpbm\">",
+  '</a>')  .
+  '<br><span class="emphasis">' . gTranslate('config',"Note:"). '</span> ' .
+  gTranslate('config',"You can install the binaries from the Gallery site even if you don't have root access on your box!  If you can't get it working, try leaving the NetPBM path blank and using ImageMagick instead.");
+
+$common_messages['fail-netpbm-partial'] =
+  gTranslate('config',"I've found part of NetPBM, but some critical components are missing (see below).  Perhaps your version of NetPBM is out of date.") . '  ' .
+  $common_messages['getting-netpbm'];
+
+$common_messages['getting-imagemagick'] = '<br>'.
+  sprintf(gTranslate('config',"Gallery prefers ImageMagick version 5.4.8 and up.  You can compile and install the entire ImageMagick package from the %sImageMagick website%s." ),
+  '<a href="http://www.imagemagick.org">', '</a>') .
+  '<br><span class="emphasis">' . gTranslate('config',"Note:"). '</span> ' .
+  gTranslate('config',"The site also has binaries available for assorted operating systems.  If you can't get it working, try leaving the ImageMagick path blank and using NetPBM instead.");
+
+$common_messages['fail-imagemagick-partial'] =
+  gTranslate('config',"I've found part of ImageMagick , but some critical components are missing (see below).") . '  ' .
+  $common_messages['getting-imagemagick'];
+
+$common_messages['open-basedir-active'] =
+  '<span class="emphasis">' . gTranslate('config',"Note:"). '</span>'.
+  sprintf(gTranslate('config',"Your PHP installation is configured with the %s restriction.   This may make it difficult for Gallery to detect and verify your binaries, even if you've already successfully used the Config. Wizard in the past.  Don't worry too much if this page gives warnings; your settings will still be saved properly."),
+  "<b><a href=\"http://www.php.net/manual/en/features.safe-mode.php#ini.open-basedir\" target=\"_blank\">open_basedir</a></b>" );
 
-$common_messages["getting-netpbm"] =
-			sprintf(_("Gallery prefers NetPBM version 9.9 and up.  You can install just the binaries Gallery needs from the %sGallery Download Page%s. Or, you can compile and install the entire NetPBM package from the %sNetPBM website%s."), 
-				 "<a href=\"http://sourceforge.net/projects/gallery\">",
-				 "</a>",
-				 "<a href=\"http://sourceforge.net/projects/netpbm\">",
-				 "</a>")  .
-				'<br><span class="emphasis">' . _("Note:"). '</span> ' .
-			_("You can install the binaries from the Gallery site even if you don't have root access on your box!  If you can't get it working, try leaving the NetPBM path blank and using ImageMagick instead.");
-			
-$common_messages["fail-netpbm-partial"] =
-			_("I've found part of NetPBM, but some critical components are missing (see below).  Perhaps your version of NetPBM is out of date.") . "  " .
-			$common_messages["getting-netpbm"];
-
-$common_messages["getting-imagemagick"] =
-			sprintf(_("Gallery prefers ImageMagick version 5.4.8 and up.  You can compile and install the entire ImageMagick package from the %sImageMagick website%s." ), 
-				'<a href="http://www.imagemagick.org">', '</a>') .
-			'<br><span class="emphasis">' . _("Note:"). '</span> ' .
-			_("The site also has binaries available for assorted operating systems.  If you can't get it working, try leaving the ImageMagick path blank and using NetPBM instead.");
-
-$common_messages["fail-imagemagick-partial"] =
-			_("I've found part of ImageMagick , but some critical components are missing (see below).") . "  " .
-			$common_messages["getting-imagemagick"];
-						
-$common_messages["open-basedir-active"] =
-	'<span class="emphasis">' . _("Note:"). '</span>'.
-	sprintf(_("Your PHP installation is configured with the %s restriction.   This may make it difficult for Gallery to detect and verify your binaries, even if you've already successfully used the Config. Wizard in the past.  Don't worry too much if this page gives warnings; your settings will still be saved properly."),
-			"<b><a href=\"http://www.php.net/manual/en/features.safe-mode.php#ini.open-basedir\" target=\"_blank\">open_basedir</a></b>" );
-			
 $checklist = array(
 	'gallery_version' => array(
+		'prompt' => gTranslate('config',"Gallery version"),
 		'optional' => 1,
-		'desc' => sprintf(_("Check to see how old %s version %s is."),
-			Gallery(),
-			"<i>$gallery->version</i>"),
-	     	'func' => "check_gallery_version"
+		'desc' => sprintf(gTranslate('config',"Check to see how old %s version %s is."),
+		  Gallery(),
+		  "<i>$gallery->version</i>"),
+		'func' => 'check_gallery_version'
 	),
 	'php' => array(
-		'desc' => _("Check to see if you are running PHP 4.1.0 or greater.") ."<br>".  _("Since Gallery 1.4.5 Gallery needs at least PHP 4.1.0, this is due to that some versions of PHP have bugs that cause Gallery to fail and that older Version does not have required functionality."),
-	     	'func' => "check_php",
-		'fail-too-old' => sprintf(_("You're running PHP version %s.  You need to upgrade to PHP %s."), phpversion(), $MIN_PHP_MAJOR_VERSION),
-		'fail-incompatible' => sprintf(_("You're running PHP version %s which has known bugs that cause Gallery to fail."),  phpversion()),
+		'prompt' => gTranslate('config',"PHP version"),
+		'desc' => gTranslate('config',"Check to see if you are running a supported Version of PHP.") .'<br>'.  gTranslate('config',"Due to bugs and missing functionality in some PHP versions, the minimum PHP version for Gallery 1.5 and newer is at least PHP 4.1.0"),
+		'func' => 'check_php',
+		'fail-too-old' => sprintf(gTranslate('config',"You're running PHP version %s.  You need to upgrade to PHP %s."), phpversion(), $MIN_PHP_MAJOR_VERSION),
+		'fail-incompatible' => sprintf(gTranslate('config',"You're running PHP version %s which has known bugs that cause Gallery to fail."),  phpversion()),
+		'fail-buggy__FILE__' => gTranslate('config',"It seems your PHP has a problem with __FILE__, please upgrade to a recent Version"),
 		'serious' => 1,
 	),
-	'buggy_php' => array(
-		'desc' => _("We are using predefined variables which some older version of PHP have problems with."),
-		'func' => "check_filedirective",
-		'buggy__FILE__' => _("It seems your PHP has a problem with __FILE__, please upgrade to a recent Version"),
-		'serious' => 1
-	),
 	'register_globals' => array(
-		'desc' => _("Gallery highly recommends that the PHP option 'register_globals' be turned off, for security purposes.  Some software, notably the 'Geeklog' CMS, requires that 'register_globals' be enabled."),
-		'func' => "check_register_globals",
-		'warn-register_globals' => _("The PHP option 'register_globals' is enabled on your server. Gallery highly recommends that you disable 'register_globals' unless it is required by software on your site.  Gallery does not officially support 'register_globals' being enabled, and will attempt to disable it internally."),
+		'prompt' => gTranslate('config',"Register globals"),
+		'desc' => gTranslate('config',"Gallery highly recommends that the PHP option 'register_globals' be turned off, for security purposes.  Some software, notably the 'Geeklog' CMS, requires that 'register_globals' be enabled."),
+		'func' => 'check_register_globals',
+		'warn-register_globals' => gTranslate('config',"The PHP option 'register_globals' is enabled on your server. Gallery highly recommends that you disable 'register_globals' unless it is required by software on your site.  Gallery does not officially support 'register_globals' being enabled, and will attempt to disable it internally."),
 		'serious' => 1,
 		'optional' => 1,
 	),
 	'safe_mode' => array(
-		'desc' => _("Check to see if PHP is running in <b>safe_mode</b>.  Safe Mode is a PHP security feature commonly used in shared environments.  Gallery cannot run when Safe Mode is enabled because it imposes too many restrictions."),
-		'func' => "check_safe_mode",
-		'fail-safe-mode' => sprintf(_("<b>safe_mode</b> is enabled on this server.  You must disable it before you can use Gallery.  Refer to the FAQ, the forums, and the help page on the %sGallery website%s and the %sPHP website%s for assistance."),
-			'<a href="http://gallery.sourceforge.net">',
-			'</a>',
-			'<a href="http://www.php.net/manual/en/features.safe-mode.php">',
-			'</a>') .
-		"<br><br>" .
-		'<span class="emphasis">' . _("Note:"). '</span>'.
-			  sprintf(_("In some rare circumstances, Gallery thinks that Safe Mode is on, when it's really off.  You can see for yourself by looking in the <i>Local</i> column of the <i>safe_mode</i> row in the %sPHP Info%s page.  If it says 'Off' or '0' or 'undefined' then it's possible that Gallery made a mistake and you can continue.  If not, then you must resolve this problem before you can use Gallery."),
-				 '<a href="phpinfo.php">',
-				 '</a>'),
+		'prompt' => gTranslate('config',"PHPs safe mode disabled"),
+		'desc' => gTranslate('config',"Check to see if PHP is running in <b>safe_mode</b>.  Safe Mode is a PHP security feature commonly used in shared environments.  Gallery cannot run when Safe Mode is enabled because it imposes too many restrictions."),
+		'func' => 'check_safe_mode',
+		'fail-safe-mode' => sprintf(gTranslate('config',"<b>safe_mode</b> is enabled on this server.  You must disable it before you can use Gallery.  Refer to the FAQ, the forums, and the help page on the %sGallery website%s and the %sPHP website%s for assistance."),
+		  '<a href="http://gallery.sourceforge.net">',
+		  '</a>',
+		  '<a href="http://www.php.net/manual/en/features.safe-mode.php">',
+		  '</a>') .
+		  '<br><br>' .
+		  '<span class="emphasis">' . gTranslate('config',"Note:"). '</span>'.
+		  sprintf(gTranslate('config',"In some rare circumstances, Gallery thinks that Safe Mode is on, when it's really off.  You can see for yourself by looking in the <i>Local</i> column of the <i>safe_mode</i> row in the %sPHP Info%s page.  If it says 'Off' or '0' or 'undefined' then it's possible that Gallery made a mistake and you can continue.  If not, then you must resolve this problem before you can use Gallery."),
+		  '<a href="phpinfo.php">',
+		  '</a>'),
 		'optional' => 1,
 		'serious' => 1
 	),
 	'exec' => array(
-		'desc' => _("The <b>exec()</b> function is what Gallery uses to launch programs such as NetPBM, ImageMagick, and jhead.  If <b>exec()</b> is disabled on your server then Gallery will not be able operate."),
-		'func' => "check_exec",
-		'fail-exec' => _("The <b>exec()</b> function is disabled on your server.  Gallery will not function with this PHP configuration."),
+		'prompt' => gTranslate('config',"PHPs exec() function enabled"),
+		'desc' => gTranslate('config',"The <b>exec()</b> function is what Gallery uses to launch programs such as NetPBM, ImageMagick, and jhead.  If <b>exec()</b> is disabled on your server then Gallery will not be able operate."),
+		'func' => 'check_exec',
+		'fail-exec' => gTranslate('config',"The <b>exec()</b> function is disabled on your server.  Gallery will not function with this PHP configuration."),
 		'serious' => 1,
 	),
 	'htaccess' => array(
-		'desc' => _("Allow the Gallery <b>.htaccess</b> file to set application specific configuration options for the Gallery application.  This is controlled by the webserver owner so it's not always possible for you to change it.  The main drawbacks to not having this are that you may not be able to upload files > 2MB (e.g. big ZIP files or movies)."),
-		'func' => "check_htaccess",
-		'fail-htaccess' => _("Apache is not obeying the 'php_value' lines in your <b>.htaccess</b> file. Try entering the following into your web server's <b>httpd.conf</b> file:") ."<br><pre>" .
-			 "&lt;Directory " . GALLERY_BASE . "&gt;\n" .
-			 "\tAllowOverride Options FileInfo\n" .
-			 "&lt;/Directory&gt;</pre>\n" .
-			 _("If you are running PHP in CGI mode, this message is unavoidable."),
+		'prompt' => gTranslate('config',".htaccess processed by apache"),
+		'desc' => gTranslate('config',"Allow the Gallery <b>.htaccess</b> file to set application specific configuration options for the Gallery application.  This is controlled by the webserver owner so it's not always possible for you to change it.  The main drawbacks to not having this are that you may not be able to upload files > 2MB (e.g. big ZIP files or movies)."),
+		'func' => 'check_htaccess',
+		'fail-htaccess' => gTranslate('config',"Apache is not obeying the 'php_value' lines in your <b>.htaccess</b> file. Try entering the following into your web server's <b>httpd.conf</b> file:") .'<br><pre>' .
+		  '&lt;Directory ' . GALLERY_BASE . "&gt;\n" .
+		  "\tAllowOverride Options FileInfo\n" .
+		  "&lt;/Directory&gt;</pre>\n" .
+		  gTranslate('config',"If you are running PHP in CGI mode, this message is unavoidable."),
 		'optional' => 1
 	),
 	'magic-quotes' => array(
+		'prompt' => gTranslate('config',"PHPs magic quotes off"),
 		'optional' => 1,
-		'desc' => sprintf(_("Check to see if %smagic quotes%s are enabled on your PHP server.  If they're on, you may notice strange behavior if you put ' (single-quote), &quot; (double quote) or &#92; (backslash) characters in titles or captions in Gallery."),
-		 '<b><a href="http://www.php.net/manual/en/configuration.php#ini.magic-quotes-gpc" target="_blank">',
-		'</a></b>'),
-	     	'func' => "check_magic_quotes",
-		'fail-magic-quotes' => sprintf(_("Magic quotes are on.  Your webserver administrator can turn them off by putting %s in your <b>php.ini</b> file."),
-			": <pre>\n\tmagic_quotes_gpc = Off</pre>")
+		'desc' => sprintf(gTranslate('config',"Check to see if %smagic quotes%s are enabled on your PHP server.  If they're on, you may notice strange behavior if you put ' (single-quote), &quot; (double quote) or &#92; (backslash) characters in titles or captions in Gallery."),
+		  '<b><a href="http://www.php.net/manual/en/configuration.php#ini.magic-quotes-gpc" target="_blank">',
+		  '</a></b>'),
+		'func' => 'check_magic_quotes',
+		'fail-magic-quotes' => sprintf(gTranslate('config',"Magic quotes are on.  Your webserver administrator can turn them off by putting %s in your <b>php.ini</b> file."),
+		  ": <pre>\n\tmagic_quotes_gpc = Off</pre>")
 	),
 	'mod-rewrite' => array(
-		'desc' => _("Check to see if your webserver is compiled with <b>mod_rewrite</b>.  This Apache module allows Gallery to use shorter URLs that are easier to read and look nicer when you mail them to your web-challenged relatives.  It's not an essential feature."),
-		'func' => "check_mod_rewrite",
-		'fail-mod-rewrite' => _("Either <b>mod_rewrite</b> is not installed or your <b>.htaccess</b> file is not enabled (see above).  Either way, we'll have to use longer URLs in the Gallery.  If you want to turn it on, first make sure that your <b>.htaccess</b> file is being obeyed. If it still doesn't work, you may need to reconfigure and rebuild Apache with this flag: ") .
-			"<pre>\t--enable-module=rewrite</pre>",
+		'prompt' => gTranslate('config',"Apache mod_rewrite"),
+		'desc' => gTranslate('config',"Check to see if your webserver is compiled with <b>mod_rewrite</b>.  This Apache module allows Gallery to use shorter URLs that are easier to read and look nicer when you mail them to your web-challenged relatives.  It's not an essential feature."),
+		'func' => 'check_mod_rewrite',
+		'fail-mod-rewrite' => gTranslate('config',"Either <b>mod_rewrite</b> is not installed or your <b>.htaccess</b> file is not enabled (see above).  Either way, we'll have to use longer URLs in the Gallery.  If you want to turn it on, first make sure that your <b>.htaccess</b> file is being obeyed. If it still doesn't work, you may need to reconfigure and rebuild Apache with this flag: ") .
+		  "<pre>\t--enable-module=rewrite</pre>",
 		'optional' => 1
 	),
 	'NetPBM' => array(
+		'prompt' => gTranslate('config',"NetPBM installed"),
 		'optional' => 1,
-		'desc' => _("Check to see if NetPBM is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either NetPBM <b>or</b> ImageMagick installed."),
-		'func' => "check_graphics",
-		'fail-netpbm' => _("I can't find NetPBM.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path to NetPBM by hand on the following page.  If it's not installed, you have two choices: " ) .
-			$common_messages["getting-netpbm"],
-
-		'fail-netpbm-partial' => 
-			$common_messages["fail-netpbm-partial"] .
-			"<p><b> " . _("If NetPBM is installed and Gallery isn't finding it automatically that's OK&#8212;you can specify the path to NetPBM by hand on the following page.") ." </b>",
-
-		'open-basedir-note' => $common_messages["open-basedir-active"]
+		'desc' => gTranslate('config',"Check to see if NetPBM is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either NetPBM <b>or</b> ImageMagick installed."),
+		'func' => 'check_graphics',
+		'fail-netpbm' => gTranslate('config',"I can't find NetPBM.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path to NetPBM by hand on the following page.  If it's not installed, you have two choices: " ) .
+		  $common_messages['getting-netpbm'],
+		'fail-netpbm-partial' =>
+		  $common_messages['fail-netpbm-partial'] .
+		  '<p><b> ' . gTranslate('config',"If NetPBM is installed and Gallery isn't finding it automatically that's OK&#8212;you can specify the path to NetPBM by hand on the following page.") .' </b>',
+		  'open-basedir-note' => $common_messages['open-basedir-active']
 	),
 	'ImageMagick' => array(
+		'prompt' => gTranslate('config',"ImageMagick installed"),
 		'optional' => 1,
-		'desc' => _("Check to see if ImageMagick is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either ImageMagick <b>or</b> NetPBM installed."),
-		'func' => "check_graphics_im",
-		'fail-imagemagick' => _("I can't find ImageMagick.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path to ImageMagick by hand on the following page.  If it's not installed, you must install it.  ") .
-			$common_messages["getting-imagemagick"],
-		'fail-imagemagick-partial' => 
-			$common_messages["fail-imagemagick-partial"] .
-			"<p><b> " . _("If ImageMagick is installed and Gallery isn't finding it automatically that's OK&#8212;you can specify the path to ImageMagick by hand on the following page.") ." </b>",
-		'open-basedir-note' => $common_messages["open-basedir-active"]
+		'desc' => gTranslate('config',"Check to see if ImageMagick is installed so that Gallery can manipulate images (rotate, resize, make thumbnails, etc.).  You only need to have either ImageMagick <b>or</b> NetPBM installed."),
+		'func' => 'check_graphics_im',
+		'fail-imagemagick' => gTranslate('config',"I can't find ImageMagick.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path to ImageMagick by hand on the following page.  If it's not installed, you must install it.  ") .
+		  $common_messages['getting-imagemagick'],
+		'fail-imagemagick-partial' =>
+		  $common_messages['fail-imagemagick-partial'] .
+		  '<p><b> ' . gTranslate('config',"If ImageMagick is installed and Gallery isn't finding it automatically that's OK&#8212;you can specify the path to ImageMagick by hand on the following page.") .' </b>',
+		  'open-basedir-note' => $common_messages['open-basedir-active']
 	),
 	'exif' => array(
+		'prompt' => gTranslate('config',"Jhead installed"),
 		'optional' => 1,
-		'desc' => _("Check to see if <b>jhead</b> is installed so that Gallery can examine EXIF headers embedded in images created with most digital cameras."),
-		'func' => "check_exif",
-		'fail-exif' => sprintf(_("I can't find <b>jhead</b>.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path by hand on the following page.  If it's not installed, you can install it yourself. Jhead is a public domain EXIF parser.  Source, linux binaries, and windows binaries can be found at the %sjhead homepage%s."),
-			'<a href="http://www.sentex.net/~mwandel/jhead/index.html">',
-			'</a>'),
-		'open-basedir-note' => $common_messages["open-basedir-active"]
-	),
+		'desc' => gTranslate('config',"Check to see if <b>jhead</b> is installed so that Gallery can examine EXIF headers embedded in images created with most digital cameras."),
+		'func' => 'check_exif',
+		'fail-exif' => sprintf(gTranslate('config',"I can't find <b>jhead</b>.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path by hand on the following page.  If it's not installed, you can install it yourself. Jhead is a public domain EXIF parser.  Source, linux binaries, and windows binaries can be found at the %sjhead homepage%s."),
+		  '<a href="http://www.sentex.net/~mwandel/jhead/index.html">',
+		  '</a>'),
+		'open-basedir-note' => $common_messages['open-basedir-active']
+		),
 	'jpegtran' => array (
+		'prompt' => gTranslate('config',"jpegtran installed"),
 		'optional' => 1,
-		'desc' => _("Check to see if <b>jpegtran</b> is installed so that Gallery can perform lossless rotations on JPEG images."),
-		'func' => "check_jpegtran",
-		'fail-jpegtran' => sprintf(_("I can't find <b>jpegtran</b>.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path by hand on the following page.  If it's not installed, you can install it yourself.  Jpegtran is a free tool distributed by the Independent JPEG Group as part of <i>libjpeg</i>.  Source may be found at the %sIJG homepage%s.  Binaries may be found at the %sJPEG Club website%s or in the <i>libjpeg</i> package of Linux distributions."),
-			'<a href="http://www.ijg.org">', '</a>',
-			'<a href="http://jpegclub.org/">', '</a>'), 
-		'open-basedir-note' => $common_messages["open-basedir-active"]
-	),	
+		'desc' => gTranslate('config',"Check to see if <b>jpegtran</b> is installed so that Gallery can perform lossless rotations on JPEG images."),
+		'func' => 'check_jpegtran',
+		'fail-jpegtran' => sprintf(gTranslate('config',"I can't find <b>jpegtran</b>.  If it's installed and not in the path of the webserver user that's OK&#8212;you can specify the path by hand on the following page.  If it's not installed, you can install it yourself.  Jpegtran is a free tool distributed by the Independent JPEG Group as part of <i>libjpeg</i>.  Source may be found at the %sIJG homepage%s.  Binaries may be found at the %sJPEG Club website%s or in the <i>libjpeg</i> package of Linux distributions."),
+		  '<a href="http://www.ijg.org">', '</a>',
+		  '<a href="http://jpegclub.org/">', '</a>'),
+		  'open-basedir-note' => $common_messages['open-basedir-active']
+	),
 	'gettext' => array (
+		'prompt' => gTranslate('config',"Gettext support in PHP"),
 		'optional' => 1,
-		'desc' => _("Check to see if PHP is compiled with <b>GNU gettext</b> support for fast translations."),
-		'func' => "check_gettext",
-		'fail-gettext' => sprintf(_("Your PHP does not have <b>GNU gettext</b> support installed.  To include it, you'll need to recompile PHP (see the %sPHP docs%s for more information). Multi-language support is still available in Gallery without <b>gettext</b>, but the pages may take slightly longer to load."),
-			'<a href="http://www.php.net/manual/en/ref.gettext.php">', '</a>')
+		'desc' => gTranslate('config',"Check to see if PHP is compiled with <b>GNU gettext</b> support for fast translations."),
+		'func' => 'check_gettext',
+		'fail-gettext' => sprintf(gTranslate('config',"Your PHP does not have <b>GNU gettext</b> support installed.  To include it, you'll need to recompile PHP (see the %sPHP docs%s for more information). Multi-language support is still available in Gallery without <b>gettext</b>, but the pages may take slightly longer to load."),
+		  '<a href="http://www.php.net/manual/en/ref.gettext.php">', '</a>')
 	),
 	'gallery-locale' => array (
+		'prompt' => gTranslate('config',"Locales needed for Gallery"),
 		'optional' => 1,
-		'desc' => _("Check to see what languages are available."),
-		'func' => "check_gallery_languages"
+		'desc' => gTranslate('config',"Check to see what languages are available."),
+		'func' => 'check_gallery_languages'
 	),
 	'missing-locales' => array (
+		'prompt' => gTranslate('config',"missing locales"),
 		'optional' => 1,
-		'enabled' => (sizeof(gallery_languages()) > 1) ? "yes" :"no",
-		'desc' => _("Testing to see which <b>system</b> locales (if any) are absent.") . "<br>".
-				_("These locales are required to use multilanguage capabilities of Gallery when your PHP has gettext support. They are also needed to show date and time in the according format to the language."),
-		'func' => "check_absent_locales",
-		'serious' => ( $elawisyl == "no" ) ? 1 : 0 ,
-	),
+		'enabled' => (sizeof(gallery_languages()) > 1) ? 'yes' :'no',
+		'desc' => gTranslate('config',"Testing to see which <b>system</b> locales (if any) are absent.") . '<br>'.
+		  gTranslate('config',"These locales are required to use multilanguage capabilities of Gallery when your PHP has gettext support. They are also needed to format dates and times according to the selected language."),
+		'func' => 'check_absent_locales',
+		'serious' => ( $elawisyl == 'no' ) ? 1 : 0 ,
+		),
 	'check-versions' => array (
-		'desc' => _("Checking to see if you have the latest versions of all Gallery files."),
-		'func' => "check_gallery_versions",
+		'prompt' => gTranslate('config',"File integrity"),
+		'desc' => gTranslate('config',"Checking to see if you have the latest versions of all Gallery files."),
+		'func' => 'check_gallery_versions',
 		'serious' => 1,
 		'optional' => 1,
 	),
 );
 
 $features = array(
-	'zip' => array("zipinfo", "unzip"),
-	'rewrite' => array("GALLERY_REWRITE_OK", "htaccess_file"),
-	'mirror' => array("mirrorSites"),
+	'zip' => array('zipinfo', 'unzip'),
+	'rewrite' => array('GALLERY_REWRITE_OK', 'htaccess_file'),
+	'mirror' => array('mirrorSites'),
 );
 
-$constants =  array_merge(
-  array(
+$constants =  array_merge(array(
 	'group_mandatory' => array (
-		'type' => "group_start",
-		'name' => "group_mandatory",
-		'default' => "inline",
-		'title' => _("General settings"),
+		'type' => 'group_start',
+		'name' => 'group_mandatory',
+		'default' => 'inline',
+		'title' => gTranslate('config',"General settings"),
 		'contains_required' => true,
 	),
 	'galleryTitle' => array(
-		'prompt' => _("Gallery Title"),
-		'desc' => _("The name of your Gallery.  E.g. <i>My Cool Photos</i>"),
-		'value' => _("Gallery"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Gallery Title"),
+		'desc' => gTranslate('config',"The name of your Gallery.  E.g. <i>My Cool Photos</i>"),
+		'value' => gTranslate('config',"Gallery"),
+		'type' => 'text',
 		'attrs' => array('size' => 50)
 	),
 	'editPassword' => check_admins(),
 	'useIcons' => array(
-		'prompt' => _("Use Icons ?"),
-		'desc' => _("You can choose wether you want to use Gallery icons, text only, or both. When you choose icons only, then there will be an onMousoverText."),
-		'choices' => array(	'both' => _("Icons and text"),
-					'no' => _("Text only"),
-					'yes' => _("Icons only")
+		'prompt' => gTranslate('config',"Use Icons ?"),
+		'desc' => gTranslate('config',"You can choose wether you want to use Gallery icons, text only, or both. When you choose icons only, then there will be an onMousoverText."),
+		'choices' => array(
+			'both' => gTranslate('config',"Icons and text"),
+			'no' => gTranslate('config',"Text only"),
+			'yes' => gTranslate('config',"Icons only")
 			),
 		'value' => 'no'
 	),
 	'skinname' => array(
-		'prompt' => _("Skin Name"),
-		'desc' => _("Select a skin to use for Gallery. You now have a wide choice of &quot;skins&quot; that affect the look of every page of your Gallery.  You can have fun experimenting with the available skins. Choose &quot;None&quot; to use the look from v1.4.") . 
-				'<br><a href="http://www.pownuke.com/galleryskins/">'. _("Here you can get a more Gallery Skins by Drazan") .'</a>'.
-				available_skins(true),
+		'prompt' => gTranslate('config',"Skin Name"),
+		'desc' => gTranslate('config',"Select a skin to use for Gallery. You now have a wide choice of &quot;skins&quot; that affect the look of every page of your Gallery.  You can have fun experimenting with the available skins. Choose &quot;None&quot; to use the look from v1.4.") .
+		  '<br><a href="http://www.pownuke.com/galleryskins/">'. gTranslate('config',"Here you can get a more Gallery Skins by Drazan") .'</a>'.
+		  available_skins(true),
 		'choices' => available_skins(),
-		'value' => "none"
+		'value' => 'none'
 	),
 	'uploadMode' => array(
-		'prompt' => _("Default upload method"),
-		'desc' => _("Which method of uploading photos should be defaulted to for users who don't specify?"),
-		'choices' => array('form' => _("Form-based Upload"), 
-					'applet_mini' => _("Mini-Applet"), 
-					'applet' => _("Full-Applet"),
-					'url' => _("URL")),
-		'value' => "form",
-	),
-
+		'prompt' => gTranslate('config',"Default upload method"),
+		'desc' => gTranslate('config',"Which method of uploading photos should be defaulted to for users who don't specify?"),
+		'choices' => array(
+			'form' => gTranslate('config',"Form-based Upload"),
+			'applet_mini' => gTranslate('config',"Mini-Applet"),
+			'applet' => gTranslate('config',"Full-Applet"),
+			'url' => gTranslate('config',"URL")
+			),
+		'value' => 'form',
+		),
+	
 	'group_mandatory_end' => array (
-		'type' => "group_end",
+		'type' => 'group_end',
 	),
 	'groupLocations' => array (
-		'type' => "group_start",
-		'name' => "group_URLS",
-		'default' => "none",
-		'title' => _("Locations and URLs"),
+		'type' => 'group_start',
+		'name' => 'group_URLS',
+		'default' => 'none',
+		'title' => gTranslate('config',"Locations and URLs"),
 		'contains_required' => true,
 	),
 	'albumDir' => array(
-		'prompt' => _("Album directory"),
-		'desc' => '(<span class="attention">' . _('REQUIRED') . '</span>) ' .
-			sprintf(_("The full path on physical disk to the directory where your photos will be stored.  This directory should start off empty&#8212;Gallery will fill it.  Note that this directory needs to have write access by the user who is running the web server (in your case this user is %s)."),
-			"<b>". $webserver_user . "</b>"),
-		'value' => getenv("DOCUMENT_ROOT") . "/albums",
+		'prompt' => gTranslate('config',"Album directory"),
+		'desc' => '(<span class="attention">' . gTranslate('config',"REQUIRED") . '</span>) ' .
+		  sprintf(gTranslate('config',"The full path on physical disk to the directory where your photos will be stored.  This directory should start off empty&#8212;Gallery will fill it.  Note that this directory needs to have write access by the user who is running the web server (in your case this user is %s)."),
+		  '<b>'. $webserver_user . '</b>'),
+		'value' => getenv('DOCUMENT_ROOT') . '/albums',
 		'require-write-dir' => 1,
 		'filename' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'attrs' => array('size' => 50),
 		'required' => true,
+		'noStripSlash' => true
 	),
 	'tmpDir' => array(
-		'prompt' => _("Temporary directory"),
-		'desc' => '(<span class="attention">' . _('REQUIRED') . '</span>) ' .
-			  sprintf(_("The filesystem path to a temporary directory.  E.g. %s or %s.  Note that if you have <b>open_basedir</b> configured on your system, then this temporary directory must be inside the <b>open_basedir</b> path!  In that case you may need to create the directory yourself and make sure that it's writable by the webserver process."),
-		'<i>/tmp</i>','<i>c:\\windows\\temp</i>'),
-		'value' => getenv("TMP"),
+		'prompt' => gTranslate('config',"Temporary directory"),
+		'desc' => '(<span class="attention">' . gTranslate('config',"REQUIRED") . '</span>) ' .
+		  sprintf(gTranslate('config',"The filesystem path to a temporary directory.  E.g. %s or %s.  Note that if you have <b>open_basedir</b> configured on your system, then this temporary directory must be inside the <b>open_basedir</b> path!  In that case you may need to create the directory yourself and make sure that it's writable by the webserver process."),
+		  '<i>/tmp</i>','<i>c:\\windows\\temp</i>'),
+		'value' => getenv('TMP'),
 		'filename' => 1,
 		'require-write-dir' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'attrs' => array('size' => 50),
 		'required' => true,
+		'noStripSlash' => true,
 	),
 	'photoAlbumURL' => array(
 		'prompt' => "Gallery URL",
-		'desc' => '(<span class="attention">' . _('REQUIRED') . '</span>) ' .
-				sprintf(_("The full URL to the Gallery web application. (e.g. %s) Gallery can operate with relative URLs, however some features, such as printing, may not function correctly."),
-				'<i>http://www.example.com/gallery</i>'),
-		'value' => "http://" . getenv("SERVER_NAME") . $GALLERY_URL,
+		'desc' => '(<span class="attention">' . gTranslate('config',"REQUIRED") . '</span>) ' .
+		  sprintf(gTranslate('config',"The full URL to the Gallery web application. (e.g. %s) Gallery can operate with relative URLs, however some features, such as printing, may not function correctly."),
+		  '<i>http://www.example.com/gallery</i>'),
+		'value' => 'http://' . getenv('SERVER_NAME') . $GALLERY_URL,
 		'no-trailing-slash' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'attrs' => array('size' => 50),
 		'required' => true,
 	),
 	'albumDirURL' => array(
-		'prompt' => _("Albums URL"),
-		'desc' => '(<span class="attention">' . _('REQUIRED') . '</span>) ' .
-			sprintf(_("The full URL to your album directory on your web server.  (e.g. %s) Gallery can operate with relative URLs, however some features, such as printing, may not function correctly."), 
-			'<i>http://www.example.com/albums</i>'),
-		'value' => "http://" . getenv("SERVER_NAME") . "/albums",
+		'prompt' => gTranslate('config',"Albums URL"),
+		'desc' => '(<span class="attention">' . gTranslate('config',"REQUIRED") . '</span>) ' .
+		  sprintf(gTranslate('config',"The full URL to your album directory on your web server.  (e.g. %s) Gallery can operate with relative URLs, however some features, such as printing, may not function correctly."),
+		  '<i>http://www.example.com/albums</i>'),
+		'value' => 'http://' . getenv('SERVER_NAME') . '/albums',
 		'no-trailing-slash' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'attrs' => array('size' => 50),
 		'required' => true,
 	),
-
 	'movieThumbnail' => array(
-		'prompt' => _("Thumbnail image"),
-		'desc' => sprintf(_('The filesystem path to the thumbnail image to show for movies. E.g. %s'), '<i>/home/foo/thumbnail.jpg</i>'),
-		'value' => GALLERY_BASE . "/images/movie.thumb.jpg",
-		'type' => "text",
-		'attrs' => array('size' => 50)
+		'prompt' => gTranslate('config',"Thumbnail image"),
+		'desc' => sprintf(gTranslate('config','The filesystem path to the thumbnail image to show for movies. E.g. %s'), '<i>/home/foo/thumbnail.jpg</i>'),
+		'value' => GALLERY_BASE . '/images/movie.thumb.jpg',
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
 	),
 	'mirrorSites' => array(
-		'prompt' => _("Mirror sites"),
-		'desc' => sprintf(_("A list of URLs that contain mirrors of your albums directory.  Specify one URL per line with the ones that are more reliable towards the top.  E.g. %s"),
-		'<center><i>' .
-			'http://www.fast.server/albums<br>http://www.other.server/albums</i>' .
-			'</center>'),
+		'prompt' => gTranslate('config',"Mirror sites"),
+		'desc' => sprintf(gTranslate('config',"A list of URLs that contain mirrors of your albums directory.  Specify one URL per line with the ones that are more reliable towards the top.  E.g. %s"),
+		  '<center><i>' .
+		  'http://www.fast.server/albums<br>http://www.other.server/albums</i>' .
+		  '</center>'),
 		'optional' => 1,
-		'type' => "textarea",
+		'type' => 'textarea',
 		'value' => NULL,
 		'attrs' => array('cols' => 50, 'rows' => 5)
 	),
 	'groupLocations_end' => array (
-		'type' => "group_end",
+		'type' => 'group_end',
 	),
-
+	
 	'groupToolkits' => array (
-		'type' => "group_start",
-		'name' => "group_toolkits",
-		'default' => "none",
-		'title' => _("Toolkits / image processing"),
+		'type' => 'group_start',
+		'name' => 'group_toolkits',
+		'default' => 'none',
+		'title' => gTranslate('config',"Toolkits / image processing"),
 		'contains_required' => true,
 	),
 	'graphics' => array(
-		'prompt' => _("Graphics suite to use"),
-		'desc' => _("This setting tells Gallery which set of graphics tools you prefer it to use.  If Gallery says both are okay (on the first page) then this is simply user preference.  Otherwise go with the one that Gallery was able to find without error."),
+		'prompt' => gTranslate('config',"Graphics suite to use"),
+		'desc' => gTranslate('config',"This setting tells Gallery which set of graphics tools you prefer it to use.  If Gallery says both are okay (on the first page) then this is simply user preference.  Otherwise go with the one that Gallery was able to find without error."),
 		'choices' => array('NetPBM' => "NetPBM", 'ImageMagick' => "ImageMagick"),
 		'value' => default_graphics(),
 		'required' => true,
+		'attrs' => array('id' => 'graphics', 'onChange' => 'toggleGraphics(this.value)')
 	),
-	'pnmDir' => array(
+	'subgroup_ImageMagick' => array (
+		'type' => 'subgroup',
+		'title' => gTranslate('config',"ImageMagick Settings"),
+		'display' => (getCurrentGraphicTool() == 'ImageMagick') ? 'inline' : 'none'
+	),
+	'ImPath' => array(
 		'optional' => 1,
-		'prompt' => _("Path to NetPBM"),
-		'desc' => sprintf(_("The path to the directory containing NetPBM on your system.  If you downloaded NetPBM from the Gallery download page, don't forget to make the files executable.  E.g. %s or %s or %s"),
-			'<i>/usr/local/netpbm</i>',
-			'<i>/usr/local/bin</i>', 
-			'<i>c:\\apps\\netpbm</i>'). '<br>'.
-			sprintf(_("This path is only required if you choosed %s above. Otherwise you can leave it like it is, or empty."), "NetPBM"),
-		'value' => locateDir("jpegtopnm", isset($gallery->app->pnmDir) ? $gallery->app->pnmDir : ""),
-		'verify-func' => "check_graphics",
-		'fail-netpbm' => _("I can't find NetPBM at the location you provided.") . "  " .
-			$common_messages["getting-netpbm"],
-		'fail-netpbm-partial' => $common_messages["fail-netpbm-partial"],
+		'prompt' => gTranslate('config',"Path to ImageMagick"),
+		'desc' => gTranslate('config',"The path to the directory containing ImageMagick on your system."). '<br>'.
+		  sprintf(gTranslate('config',"This path is only required if you choosed %s above. Otherwise you can leave it like it is, or empty."), "ImageMagick"),
+		'verify-func' => 'check_graphics_im',
+		'value' => locateDir('convert', isset($gallery->app->ImPath) ? $gallery->app->ImPath : ''),
+		'fail-imagemagick' => gTranslate('config',"I can't find ImageMagick at the location you provided.") . '  ' .
+		  $common_messages["getting-imagemagick"],
 		'filename' => 1,
 		'attrs' => array('size' => 50),
 		'no-trailing-slash' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'verify-func-takes-graphics-type' => true,
 		'required' => true,
+		'noStripSlash' => true,
 	),
-	'pnmtojpeg' => array(
-		'prompt' => _("PNM to JPEG converter"),
-		'desc' => _("This value is only relevant if you use NetPBM.  NetPBM uses a tool to encode its internal image format into JPEG.  This tool is called either <i>ppmtojpeg</i> or <i>pnmtojpeg</i> depending on the version of NetPBM that you have installed.  Check your NetPBM directory to see which one you have installed and specify it here.  If you aren't sure, just take a guess and we'll try to verify it for you."),
-		'choices' => array('pnmtojpeg' => "pnmtojpeg", 'ppmtojpeg' => "ppmtojpeg"),
-		'value' => "pnmtojpeg"
-	),
-	'pnmcomp' => array(
-		'prompt' => _("PNM Composite (Overlay)"),
-		'desc' => _("This value is only relevant if you use NetPBM.  NetPBM uses a tool to overlay one image over another.  This tool is called either <i>pnmcomp</i> or <i>pamcomp</i> depending on the version of NetPBM that you have installed.  Check your NetPBM directory to see which one you have installed and specify it here.  If you aren't sure, just take a guess and we'll try to verify it for you."),
-		'choices' => array('pnmcomp' => "pnmcomp", 'pamcomp' => "pamcomp"),
-		'value' => "pnmcomp",
+	'subgroup_imagemagick_end' => array (
+		'type' => 'subgroup_end',
 	),
-	'ImPath' => array(
+	'subgroup_NetPBM' => array (
+		'type' => 'subgroup',
+		'title' => gTranslate('config',"NetPBM Settings"),
+		'display' => (getCurrentGraphicTool() == 'NetPBM') ? 'inline' : 'none'
+		),
+	'pnmDir' => array(
 		'optional' => 1,
-		'prompt' => _("Path to ImageMagick"),
-		'desc' => _("The path to the directory containing ImageMagick on your system."). '<br>'.
-			sprintf(_("This path is only required if you choosed %s above. Otherwise you can leave it like it is, or empty."), "ImageMagick"),
-		'verify-func' => "check_graphics_im",
-		'value' => locateDir("convert", isset($gallery->app->ImPath) ? $gallery->app->ImPath : ""),
-		'fail-imagemagick' => _("I can't find ImageMagick at the location you provided.") . "  " .
-			$common_messages["getting-imagemagick"],
+		'prompt' => gTranslate('config',"Path to NetPBM"),
+		'desc' => sprintf(gTranslate('config',"The path to the directory containing NetPBM on your system.  If you downloaded NetPBM from the Gallery download page, don't forget to make the files executable.  E.g. %s or %s or %s"),
+		  '<i>/usr/local/netpbm</i>',
+		  '<i>/usr/local/bin</i>',
+		  '<i>c:\\apps\\netpbm</i>'). '<br>'.
+		  sprintf(gTranslate('config',"This path is only required if you choosed %s above. Otherwise you can leave it like it is, or empty."), "NetPBM"),
+		'value' => locateDir("jpegtopnm", isset($gallery->app->pnmDir) ? $gallery->app->pnmDir : ''),
+		'verify-func' => 'check_graphics',
+		'fail-netpbm' => gTranslate('config',"I can't find NetPBM at the location you provided.") . '  ' .
+		  $common_messages['getting-netpbm'],
+		'fail-netpbm-partial' => $common_messages['fail-netpbm-partial'],
 		'filename' => 1,
 		'attrs' => array('size' => 50),
 		'no-trailing-slash' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'verify-func-takes-graphics-type' => true,
 		'required' => true,
+		'noStripSlash' => true,
+		),
+	'pnmtojpeg' => array(
+		'prompt' => gTranslate('config',"PNM to JPEG converter"),
+		'desc' => gTranslate('config',"This value is only relevant if you use NetPBM.  NetPBM uses a tool to encode its internal image format into JPEG.  This tool is called either <i>ppmtojpeg</i> or <i>pnmtojpeg</i> depending on the version of NetPBM that you have installed.  Check your NetPBM directory to see which one you have installed and specify it here.  If you aren't sure, just take a guess and we'll try to verify it for you."),
+		'choices' => array('pnmtojpeg' => 'pnmtojpeg', 'ppmtojpeg' => 'ppmtojpeg'),
+		'value' => 'pnmtojpeg'
+	),
+	'pnmcomp' => array(
+		'prompt' => gTranslate('config',"PNM Composite (Overlay)"),
+		'desc' => gTranslate('config',"This value is only relevant if you use NetPBM.  NetPBM uses a tool to overlay one image over another.  This tool is called either <i>pnmcomp</i> or <i>pamcomp</i> depending on the version of NetPBM that you have installed.  Check your NetPBM directory to see which one you have installed and specify it here.  If you aren't sure, just take a guess and we'll try to verify it for you."),
+		'choices' => array('pnmcomp' => 'pnmcomp', 'pamcomp' => 'pamcomp'),
+		'value' => 'pnmcomp',
+	),
+	'subgroup_netPBM_end' => array (
+		'type' => 'subgroup_end',
 	),
 	'autorotate' => array(
-                'prompt' => _("Auto-rotate images"),
-		'desc' => _("Selecting this option has Gallery automatically attempt to rotate images on upload, based on the orientation information that is stored in JPEG EXIF data by some newer digital cameras.") . '<br>' .
-				'<span class="attention">' . _("Requires Jhead EXIF parser v.1.9 or greater (See optional tools).") . '</span>',
-                'choices' => array('yes' => _("yes"), 'no' => _("no")),
-                'value' => "yes"
-        ),
-
+		'prompt' => gTranslate('config',"Auto-rotate images"),
+		'desc' => gTranslate('config',"Selecting this option has Gallery automatically attempt to rotate images on upload, based on the orientation information that is stored in JPEG EXIF data by some newer digital cameras.") . '<br>' .
+		'<span class="attention">' . gTranslate('config',"Requires Jhead EXIF parser v.1.9 or greater (See optional tools).") . '</span>',
+		'choices' => array('yes' => gTranslate('config',"Yes"), 'no' => gTranslate('config',"No")),
+		'value' => 'yes'
+	),
+	'subgroup_quality' => array (
+		'type' => 'subgroup',
+		'title' => gTranslate('config',"JPEG Quality <b>(Advanced)</b>"),
+		'desc' => gTranslate('config',"The JPEG file format trades off size versus quality.  Gallery can control the quality of the JPEGs that it produces when you resize, rotate or make thumbnails from JPEG images.  Higher quality images are larger in size than lower quality images.  However, in many cases there's a point at which raising the quality increases the size of the files without noticeably affecting the appearance of the image.  Setting this value to &quot;100&quot; is not recommended. If you notice that your thumbnails and resized images are larger than the originals and you don't like this, you can try lowering this value.  <b>Note</b> that changing this value will only affect images changed in the <i>future</i>."),
+		'display' => 'inline'
+	),
 	'jpegImageQuality' => array(
-		'prompt' => "<b>(" . _("Advanced") .")</b><br> ". _("JPEG Quality"),
-		'desc' => _("The JPEG file format trades off size versus quality.  Gallery can control the quality of the JPEGs that it produces when you resize, rotate or make thumbnails from JPEG images.  Higher quality images are larger in size than lower quality images.  However, in many cases there's a point at which raising the quality increases the size of the files without noticeably affecting the appearance of the image.  Setting this value to &quot;100&quot; is not recommended. If you notice that your thumbnails and resized images are larger than the originals and you don't like this, you can try lowering this value.  <b>Note</b> that changing this value will only affect images changed in the <i>future</i>."),
-		'choices' => array(50 => 50, 55 => 55, 60 => 60, 65 => 65,
-				   70 => 70, 75 => 75, 80 => 80, 85 => 85,
-				   90 => 90, 95 => 95, 100 => 100),
+		'prompt' => gTranslate('config',"JPEG Quality for resized images"),
+		'desc' => '',
+		'choices' => array(
+			50 => 50, 55 => 55, 60 => 60, 65 => 65,
+			70 => 70, 75 => 75, 80 => 80, 85 => 85,
+			90 => 90, 95 => 95, 100 => 100
+		),
 		'value' => 90
 	),
+	'highlightJpegImageQuality' => array(
+		'prompt' => gTranslate('config',"JPEG Quality for highlight images on the startpage"),
+		'desc' => '',
+		'choices' => array(
+			50 => 50, 55 => 55, 60 => 60, 65 => 65,
+			70 => 70, 75 => 75, 80 => 80, 85 => 85,
+			90 => 90, 95 => 95, 100 => 100
+		),
+		'value' => 70
+	),
+	'thumbJpegImageQuality' => array(
+		'prompt' => gTranslate('config',"JPEG Quality for thumbs inside the albums"),
+		'desc' => '',
+		'choices' => array(
+			50 => 50, 55 => 55, 60 => 60, 65 => 65,
+			70 => 70, 75 => 75, 80 => 80, 85 => 85,
+			90 => 90, 95 => 95, 100 => 100
+		),
+		'value' => 50
+	),
+	'subgroup_quality_end' => array (
+		'type' => 'subgroup_end',
+	),
 	'groupToolkits_end' => array (
-		'type' => "group_end",
+		'type' => 'group_end',
 	),
 	'group_embedded' => array (
-		'type' => "group_start",
-		'name' => "group_embedded",
-		'default' => "none",
-	       	'title' => _("Embedded Gallery"),
-		'desc' => _("Gallery automatically detects when it is embedded within one of the supported CMS environments, however there may be some environments which have special options which need to be set.  Any options which are not automatically detected will need to be specified on this screen.") . ' <b>' . _("If your ISP or CMS requires register_globals to be enabled, you may be required to enable the 'Disable register_globals check' option under the Technical tab.") . '</b>',
+		'type' => 'group_start',
+		'name' => 'group_embedded',
+		'default' => 'none',
+		'title' => gTranslate('config',"Embedded Gallery"),
+		'desc' => gTranslate('config',"Gallery automatically detects when it is embedded within one of the supported CMS environments, however there may be some environments which have special options which need to be set.  Any options which are not automatically detected will need to be specified on this screen.") . ' <b>' . gTranslate('config',"If your ISP or CMS requires register_globals to be enabled, you may be required to enable the 'Disable register_globals check' option under the Technical tab.") . '</b>',
 	),
 	'geeklog_dir' => array(
-		'prompt' => _("GeekLog Dir"),
+		'prompt' => gTranslate('config',"GeekLog Dir"),
 		'optional' => 1,
-		'desc' => _("If you use Geeklog, please enter the location of the GeekLog public_html directory. i.e. '/path/to/geeklog/public_html'"),
+		'desc' => gTranslate('config',"If you use Geeklog, please enter the location of the GeekLog public_html directory. i.e. '/path/to/geeklog/public_html'"),
 		'attrs' => array('size' => 80),
-		'type' => "text",
-		'value' => ""
+		'type' => 'text',
+		'value' => '',
+		'noStripSlash' => true,
 	),
 	'group_embedded_end' => array (
-			'type' => "group_end"
+		'type' => 'group_end'
 	),
 	'group3' => array (
-		'type' => "group_start",
-		'name' => "group_mainpage",
-		'default' => "none",
-		'title' => _("Main Gallery page"),
+		'type' => 'group_start',
+		'name' => 'group_mainpage',
+		'default' => 'none',
+		'title' => gTranslate('config',"Main Gallery page"),
 	),
 	'albumTreeDepth' => array(
-		'prompt' => _("Show the album tree ?"),
-		'desc' => _("If you turn this option on, you'll see a list of sub-albums when you're browsing the top level of your Gallery.  This will make navigating to a specific sub album much easier. You can choose whether or not you want to limit the depth of the tree to avoid severely cluttering the appearance of the top Gallery page."),
-		'choices' => array(0 => _("No tree"), 
-				1 => sprintf (_("%d sublevel"),1),
-				2 => sprintf (_("%d sublevels"),2),
-				3 => sprintf (_("%d sublevels"),3),
-				4 => sprintf (_("%d sublevels"),4),
-				5 => sprintf (_("%d sublevels"),5),
-				10 => sprintf (_("%d sublevels"),10),
-				1000 => _("Complete Tree")),
+		'prompt' => gTranslate('config',"Show the album tree ?"),
+		'desc' => gTranslate('config',"If you turn this option on, you'll see a list of sub-albums when you're browsing the top level of your Gallery.  This will make navigating to a specific sub album much easier. You can choose whether or not you want to limit the depth of the tree to avoid severely cluttering the appearance of the top Gallery page."),
+		'choices' => array(
+			0 => gTranslate('config',"No tree"),
+			1 => sprintf (gTranslate('config',"%d sublevel"),1),
+			2 => sprintf (gTranslate('config',"%d sublevels"),2),
+			3 => sprintf (gTranslate('config',"%d sublevels"),3),
+			4 => sprintf (gTranslate('config',"%d sublevels"),4),
+			5 => sprintf (gTranslate('config',"%d sublevels"),5),
+			10 => sprintf (gTranslate('config',"%d sublevels"),10),
+			1000 => gTranslate('config',"Complete Tree")
+		),
 		'value' => 1000,
 	),
 	'microTree' => array(
-		'prompt' => _("Replace album tree with micro thumbs"),
-		'desc' => _("If you have set album tree to anything but off, this will display micro thumbs of the sub albums instead of the album tree."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => gTranslate('config',"Replace album tree with microthumbs"),
+		'desc' => gTranslate('config',"If you have set album tree to anything but off, this will display microthumbs of the sub albums instead of the album tree."),
+		'choices' => array('yes' => gTranslate('config',"Yes"), 'no' => gTranslate('config',"No")),
+		'value' => 'no'
 	),
 	'highlight_size' => array(
-		'prompt' => _("Highlight size"),
-		'desc' => _("The target size (in pixels) of thumbnails shown in the Gallery page (highlight images)."),
- 		'value' => 200,
-		'type' => "text",
+		'prompt' => gTranslate('config',"Highlight size"),
+		'desc' => gTranslate('config',"The target size (in pixels) of thumbnails shown in the Gallery page (highlight images)."),
+		'value' => 200,
+		'type' => 'text',
 		'attrs' => array('size' => 5)
 	),
+	'highlight_ratio' => array(
+		'prompt' => gTranslate('config',"Highlight Ratio"),
+		'desc' => gTranslate('config',"The ratio in which the highlights are made. This affects only new highlights. For existing use 'rebuild highlights'"),
+		'choices' => array('0' => gTranslate('config',"As the original image"), '1/1' => gTranslate('config',"Square highlight")),
+		'value' => 0,
+	),
 	'showOwners' => array(
-		'prompt' => _("Show Owner"),
-		'desc' => _("Show album owner's name next to each album?"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => gTranslate('config',"Show Owner"),
+		'desc' => gTranslate('config',"Show album owner's name next to each album?"),
+		'choices' => array('yes' => gTranslate('config',"Yes"), 'no' => gTranslate('config',"No")),
+		'value' => 'no'
 	),
 	'albumsPerPage' => array(
-
-		'prompt' => _("Albums per page"),
-		'desc' => _("How many albums should be displayed per Gallery page?"),
-		'value' => "5",
+		'prompt' => gTranslate('config',"Albums per page"),
+		'desc' => gTranslate('config',"How many albums should be displayed per Gallery page?"),
+		'value' => 5,
 		'attrs' => array('size' => 10),
-		'type' => "text"
+		'type' => 'text'
 	),
 	'showSearchEngine' => array(
-		'prompt' => _("Search Engine"),
-		'desc' => _("Display search engine on main Gallery page?"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes"
+		'prompt' => gTranslate('config',"Search Engine"),
+		'desc' => gTranslate('config',"Display search engine on main Gallery page?"),
+		'choices' => array('yes' => gTranslate('config',"Yes"), 'no' => gTranslate('config',"No")),
+		'value' => 'yes'
 	),
 	'slowPhotoCount' => array(
-		'prompt' => _("Accurate Photo Count"),
-		'desc' => _("Display the album and photo count on the Gallery root page using an accurate, but incredibly slow, counting method.  This was added at the request of many users, however it is not recommended for Galleries where you will have large numbers of albums and photos.  Some examples have been shown to cause the index page to load in as long as 30 seconds with this option enabled."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
+		'prompt' => gTranslate('config',"Accurate Photo Count"),
+		'desc' => gTranslate('config',"Display the album and photo count on the Gallery root page using an accurate, but incredibly slow, counting method.  This was added at the request of many users, however it is not recommended for Galleries where you will have large numbers of albums and photos.  Some examples have been shown to cause the index page to load in as long as 30 seconds with this option enabled."),
+		'choices' => array('yes' => gTranslate('config',"Yes"), 'no' => gTranslate('config',"No")),
+		'value' => 'no',
 	),
 	'gallery_thumb_frame_style' => array(
-		'prompt' => _("Frame around albums"),
-		'desc' => _("On the main page, the image representing each album has a frame around it.  The following styles are available:") .
-			available_frames(true),
+		'prompt' => gTranslate('config',"Frame around albums"),
+		'desc' => gTranslate('config',"On the main page, the image representing each album has a frame around it.  The following styles are available:") .
+		  available_frames(true),
 		'choices' => available_frames(),
-		'value' => "simple_book"
+		'value' => 'simple_book'
 	),
-
 	'group3_end' => array (
-		'type' => "group_end",
+		'type' => 'group_end',
 	),
 	'group5' => array (
-		'type' => "group_start",
-		'name' => "group_optionals",
-		'default' => "none",
-		'title' => _("Optional tools")
+		'type' => 'group_start',
+		'name' => 'group_optionals',
+		'default' => 'none',
+		'title' => gTranslate('config',"Optional tools")
+	),
+	'subgroup_archives' => array (
+		'type' => 'subgroup',
+		'title' => gTranslate('config',"Archives"),
+		'display' => 'inline',
 	),
 	'zipinfo' => array(
 		'prompt' => "Zipinfo",
-		'desc' => sprintf(_("The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
-			'<a href="http://www.info-zip.org/" target="_blank">zipinfo</a>', '<i>/usr/local/bin/zipinfo</i>', '<i>c:\\bin\\zipinfo.exe</i>'),
-		'value' => locateFile("zipinfo"),
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
+		  '<a href="http://www.info-zip.org/" target="_blank">zipinfo</a>', '<i>/usr/local/bin/zipinfo</i>', '<i>c:\\bin\\zipinfo.exe</i>'),
+		  'value' => locateFile("zipinfo"),
 		'must-be-file' => 1,
 		'must-be-executable' => 1,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
-		'attrs' => array('size' => 50)
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
 	),
 	'unzip' => array(
 		'prompt' => "Unzip",
-		'desc' => sprintf(_("The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
-			'<a href="http://www.info-zip.org/" target="_blank">unzip</a>', '<i>/usr/local/bin/unzip</i>', '<i>c:\\bin\\unzip.exe</i>'),
-		'value' => locateFile("unzip"),
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
+		  '<a href="http://www.info-zip.org/" target="_blank">unzip</a>', '<i>/usr/local/bin/unzip</i>', '<i>c:\\bin\\unzip.exe</i>'),
+		'value' => locateFile('unzip'),
 		'must-be-file' => 1,
 		'must-be-executable' => 1,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
-		'attrs' => array('size' => 50)
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
+	),
+	'zip' => array(
+		'prompt' => "zip",
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
+		'<a href="http://www.info-zip.org/" target="_blank">zip</a>', '<i>/usr/local/bin/zip</i>', '<i>c:\\bin\\zip.exe</i>'),
+		'value' => locateFile('zip'),
+		'must-be-file' => 1,
+		'must-be-executable' => 1,
+		'optional' => 1,
+		'filename' => 1,
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
 	),
 	'rar' => array(
 		'prompt' => "rar",
-		'desc' => sprintf(_("The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
-			'<a href="http://www.rarlab.com/" target="_blank">rar</a>', '<i>/usr/local/bin/rar</i>', '<i>c:\\bin\\rar.exe</i>'),
-		'value' => locateFile("rar"),
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>%s</b> binary.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
+		'<a href="http://www.rarlab.com/" target="_blank">rar</a>', '<i>/usr/local/bin/rar</i>', '<i>c:\\bin\\rar.exe</i>'),
+		'value' => locateFile('rar'),
 		'must-be-file' => 1,
 		'must-be-executable' => 1,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
-		'attrs' => array('size' => 50)
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
+	),
+	'subgroup_archives_end' => array (
+		'type' => 'subgroup_end',
+	),
+	'subgroup_exif' => array (
+		'type' => 'subgroup',
+		'title' => gTranslate('config',"EXIF Data"),
+		'display' => 'inline',
 	),
 	'use_exif' => array(
 		'prompt' => "Jhead EXIF Parser",
-		'desc' => sprintf(_("The filesystem path to the <b>%s</b> EXIF parser.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
-			'<a href="http://www.sentex.net/~mwandel/jhead/" target=_"blank">jhead</a>', '<i>/usr/local/bin/jhead</i>', '<i>c:\\bin\\jhead.exe</i>'),
-		'value' => locateFile("jhead"),
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>%s</b> EXIF parser.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
+		  '<a href="http://www.sentex.net/~mwandel/jhead/" target=_"blank">jhead</a>', '<i>/usr/local/bin/jhead</i>', '<i>c:\\bin\\jhead.exe</i>'),
+		'value' => locateFile('jhead'),
 		'must-be-file' => 1,
 		'must-be-executable' => 1,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
-		'attrs' => array('size' => 50)
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
 	),
 	'exiftags' => array(
 		'prompt' => "exiftags EXIF Parser",
-		'desc' => sprintf(_("The filesystem path to the <b>%s</b> EXIF parser.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
-			'<a href="http://johnst.org/sw/exiftags/" target="_blank">exiftags</a>', '<i>/usr/local/bin/exiftags</i>', '<i>c:\\bin\\exiftags.exe</i>'),
-		'value' => locateFile("exiftags"),
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>%s</b> EXIF parser.  E.g. %s or %s. This is optional so if you don't have it, don't worry about it too much."),
+		  '<a href="http://johnst.org/sw/exiftags/" target="_blank">exiftags</a>', '<i>/usr/local/bin/exiftags</i>', '<i>c:\\bin\\exiftags.exe</i>'),
+		'value' => locateFile('exiftags'),
 		'must-be-file' => 1,
 		'must-be-executable' => 1,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
-		'attrs' => array('size' => 50)
+		'type' => 'text',
+		'attrs' => array('size' => 50),
+		'noStripSlash' => true,
+	),
+	'subgroup_exif_end' => array (
+		'type' => 'subgroup_end',
+	),
+	'subgroup_tools_other' => array (
+		'type' => 'subgroup',
+		'title' => gTranslate('config',"Other"),
+		'display' => 'inline',
 	),
 	'use_jpegtran' => array (
 		'prompt' => "Jpegtran",
-		'desc' => sprintf(_("The filesystem path to the <b>jpegtran</b> utility.  E.g. %s or %s.  This is optional so if you don't have it, don't worry about it too much."), 
-			'<i>/usr/local/bin/jpegtran</i>', '<i>c:\\bin\\jpegtran.exe</i>'),
-		'value' => locateFile("jpegtran"),
+		'desc' => sprintf(gTranslate('config',"The filesystem path to the <b>jpegtran</b> utility.  E.g. %s or %s.  This is optional so if you don't have it, don't worry about it too much."),
+		  '<i>/usr/local/bin/jpegtran</i>', '<i>c:\\bin\\jpegtran.exe</i>'),
+		'value' => locateFile('jpegtran'),
 		'must-be-file' => 1,
 		'must-be-executable' => 1,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
-		'attrs' => array ('size' => 50)
-	),		
-/*	
-	'showContextHelp' => array(
-		'prompt' => _("Show context help"),
-		'desc' => _("Show context sensitive help links (little ? links that describe in-depth what each function of Gallery does)?") . newIn ("1.4.2"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes"
+		'type' => 'text',
+		'attrs' => array ('size' => 50),
+		'noStripSlash' => true,
+	),
+	'subgroup_tools_other_end' => array (
+		'type' => 'subgroup_end',
 	),
-*/
 	'group5_end' => array (
-		'type' => "group_end",
+		'type' => 'group_end',
 	),
 	'group6' => array (
-		'type' => "group_start",
-		'name' => "group_languages",
-		'default' => "none",
-		'title' => _("Languages and locales"),
+		'type' => 'group_start',
+		'name' => 'group_languages',
+		'default' => 'none',
+		'title' => gTranslate('config',"Languages and locales"),
 	),
 	'default_language' => array(
-		'prompt' => _("Default language"), 
-		'optional' => 1, 
-		'desc' => sprintf(_("This is the language you will see as %s, and what users will see if no other preference is set."), '<b>admin</b>'),
-		'type' => (sizeof(gallery_languages()) > 1) ? "choices" : "hidden", 
-		'choices' => gallery_languages(),
-		'value' => (!empty($gallery->language) && sizeof(gallery_languages()) >1 ) ? $gallery->language : "en_US",
+		'prompt' => gTranslate('config',"Default language"),
+		'optional' => 1,
+		'desc' => sprintf(gTranslate('config',"This is the language you will see as %s, and what users will see if no other preference is set."), '<b>admin</b>'),
+		'type' => (sizeof(gallery_languages()) > 1) ? 'choices' : 'hidden',
+		'choices' => array_merge(gallery_languages(), array('browser' => '>>> '. gTranslate('config',"Language given by Browser") .' <<<')),
+		'value' => (!empty($gallery->language) && sizeof(gallery_languages()) >1 ) ? $gallery->language : 'en_US',
 		'enabled' => $elawisyl
 	),
 	'ML_mode' => array(
-		'prompt' => _("Multi language mode"), 
-		'desc' => _("Gallery has three multi language modes.  These affect the language that a user will see when visiting the site."),
-		'type' => ( (sizeof(gallery_languages()) > 1) && ($elawisyl == 'yes') ) ? "choices" : "hidden",
-		'choices' => array(
-				1 => "1: " . _("Gallery is only displayed in one language"), 
-				2 => "2: " . _("Gallery is displayed in the language the browser sends"), 
-				3 => "3: " . _("The User can choose the language via pulldown menu or national flags.")),
+		'prompt' => gTranslate('config',"Multi language mode"),
+		'desc' => gTranslate('config',"Gallery has three multi language modes.  These affect the language that a user will see when visiting the site."),
+		'type' => ( (sizeof(gallery_languages()) > 1) && ($elawisyl == 'yes') ) ? 'choices' : 'hidden',
+		'choices' => array(
+			1 => "1: " . gTranslate('config',"Gallery is only displayed in one language"),
+			2 => "2: " . gTranslate('config',"Gallery is displayed in the language the browser sends"),
+			3 => "3: " . gTranslate('config',"The User can choose the language via pulldown menu or national flags.")),
 		'value' => ( (sizeof(gallery_languages()) > 1) && ($elawisyl == 'yes') ) ? 3 : 0,
 	),
 	'available_lang' => array(
-		'prompt' => _("Available languages"), 
-		'type' => (sizeof(gallery_languages()) > 1) ? "choices" : "hidden", 
-		'optional' => 1, 
-		'desc' => _("These languages will be available as user choices in a pulldown menu or national flags, if you have choosen language Mode 3, and will be available to registered users as their default language in Mode 2 or 3."), 
-		'multiple_choices' => array_merge(gallery_languages(), array('addon' => insertFormJSLinks("available_lang[]"))),
+		'prompt' => gTranslate('config',"Available languages"),
+		'type' => (sizeof(gallery_languages()) > 1) ? 'choices' : 'hidden',
+		'optional' => 1,
+		'desc' => gTranslate('config',"These languages will be available as user choices in a pulldown menu or national flags, if you have choosen language Mode 3, and will be available to registered users as their default language in Mode 2 or 3."),
+		'multiple_choices' => array_merge(gallery_languages(), array('addon' => insertFormJSLinks('available_lang[]'))),
 		'value' => array_keys(gallery_languages()),
 		'enabled' => $elawisyl
 	),
 	'show_flags' => array(
-		'prompt' => _("Show flags?"),
-		'type' => (sizeof(gallery_languages()) > 1) ? "choices" : "hidden",
-		'desc' => _("In Mode 3 you can choose to display national flags instead of a small pulldown menu for the available languages."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
+		'prompt' => gTranslate('config',"Show flags?"),
+		'type' => (sizeof(gallery_languages()) > 1) ? 'choices' : 'hidden',
+		'desc' => gTranslate('config',"In Mode 3 you can choose to display national flags instead of a small pulldown menu for the available languages."),
+		'choices' => array('yes' => gTranslate('config',"Yes"), 'no' => gTranslate('config',"No")),
+		'value' => 'no',
 		'enabled' => $elawisyl
 	),
 	'dateString' => array(
-		'prompt' => "<b>(" . _("Advanced") .")</b><br> ". _("Format for date strings."),
-		'desc' => sprintf(_("This format string will be used to display %s in %s.  It is recommended to use %s which will change format depending on language choice.  However, if you wish to change this string, please look at the %sPHP documentation%s."),
-			_("date without time"), Gallery(), "<b>%x</b>",
-			'<a href="'._("http://www.php.net/manual/en/function.strftime.php"). '" target="_blank">', '</a>') .  "<br>" .
-			sprintf(_("For example, %s will display date like this: %s."), "<b>%b %d, %Y</b>", "<b>" . strftime("%b %d, %Y") . "</b>"), 
-		'value' => "%x",
-		'type' => "text",
+		'prompt' => "<b>(" . gTranslate('config',"Advanced") .")</b><br> ". gTranslate('config',"Format for date strings."),
+		'desc' => sprintf(gTranslate('config',"This format string will be used to display %s in %s.  It is recommended to use %s which will change format depending on language choice.  However, if you wish to change this string, please look at the %sPHP documentation%s."),
+		  gTranslate('config',"date without time"), Gallery(), "<b>%x</b>",
+		  '<a href="'.gTranslate('config',"http://www.php.net/manual/en/function.strftime.php"). '" target="_blank">', '</a>') .  '<br>' .
+		  sprintf(gTranslate('config',"For example, %s will display date like this: %s."), "<b>%b %d, %Y</b>", "<b>" . strftime("%b %d, %Y") . "</b>"),
+		'value' => '%x',
+		'type' => 'text',
 		'attrs' => array('size' => 20)
-	),
+		),
 	'dateTimeString' => array(
-		'prompt' => "<b>(" . _("Advanced") .")</b><br> ". _("Format for date/time strings."),
-		'desc' => sprintf(_("This format string will be used to display %s in %s.  It is recommended to use %s which will change format depending on language choice.  However, if you wish to change this string, please look at the %sPHP documentation%s."),
-			_("date with time"), Gallery(), "<b>%c</b>",
-			'<a href="'._("http://www.php.net/manual/en/function.strftime.php"). '" target="_blank">', '</a>') .  "<br>" .
-			sprintf(_("For example, %s will display date and time like this: %s."), "<b>%H:%M, %b %d, %Y</b>", "<b>" . strftime("%H:%M, %b %d, %Y") . "</b>"), 
-		'value' => "%c",
-		'type' => "text",
+		'prompt' => "<b>(" . gTranslate('config',"Advanced") .")</b><br> ". gTranslate('config',"Format for date/time strings."),
+		'desc' => sprintf(gTranslate('config',"This format string will be used to display %s in %s.  It is recommended to use %s which will change format depending on language choice.  However, if you wish to change this string, please look at the %sPHP documentation%s."),
+		  gTranslate('config',"date with time"), Gallery(), "<b>%c</b>",
+		  '<a href="'.gTranslate('config',"http://www.php.net/manual/en/function.strftime.php"). '" target="_blank">', '</a>') .  "<br>" .
+		  sprintf(gTranslate('config',"For example, %s will display date and time like this: %s."), "<b>%H:%M, %b %d, %Y</b>", "<b>" . strftime("%H:%M, %b %d, %Y") . "</b>"),
+		'value' => '%c',
+		'type' => 'text',
 		'attrs' => array('size' => 20)
 	),
-
-   ),
+),
 	config_maybe_locales()
 );
 // Continue constants ...
-$constants = array_merge($constants,
-  array(
+$constants = array_merge($constants, array(
 	'group6_end' => array (
-		'type' => "group_end",
+		'type' => 'group_end',
 	),
 	'group_email' => array (
-		'type' => "group_start",
-		'name' => "group_email",
-		'default' => "none",
-	       	'title' => _("Email and Registration"),
-	       	'desc' => sprintf(_("If you are having problems with email, please run the %s diagnostic."),
-		       	'<a href="check_mail.php">' . _("Check Email") . '</a>'),
+		'type' => 'group_start',
+		'name' => 'group_email',
+		'default' => 'none',
+		'title' => gTranslate('config',"Email and Registration"),
+		'desc' => sprintf(gTranslate('config',"If you are having problems with email, please run the %s diagnostic."),
+		'<a href="check_mail.php">' . gTranslate('config',"Check Email") . '</a>'),
 	),
 	'emailOn' => array(
-		'prompt' => _("Enable email"),
-		'verify-func' => "verify_email",
-	       	'desc' => sprintf(_("Turns email on for the whole gallery.  If you set this to %s then none of the rest of this section will apply."), '<i>' . _("no") . '</i>' ) .  '<br>' .
-					'<span class="emphasis">' . _("Note:") . '</span> ' .
-					_("If you enable these settings you give your users the opportunity to let Gallery send them their lost password via email.") . '<br>'. 
-					'<span class="attention">' . _("You need to enable this setting if you want to enable Self Registration.") . '</span>',
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => gTranslate('config',"Enable email"),
+		'verify-func' => 'verify_email',
+		'desc' => sprintf(gTranslate('config',"Turns email on for the whole gallery.  If you set this to %s then none of the rest of this section will apply."), '<i>' . gTranslate('config',"No") . '</i>' ) .  '<br>' .
+		  '<span class="emphasis">' . gTranslate('config',"Note:") . '</span> ' .
+		  gTranslate('config',"If you enable these settings you give your users the opportunity to let Gallery send them their lost password via email.") . '<br>'.
+		  '<span class="attention">' . gTranslate('config',"You need to enable this setting if you want to enable Self Registration.") . '</span>',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'
 	),
 	'adminEmail' => array(
-		'prompt' => _("Admin email address"),
-		'desc' => _("Set this value to a valid working email address to receive email notices upon certain user actions and also so that users know whom to reach in case of problems. You may specify more than one address by separating them with commas.") .
-		"<br>",
-		'type' => "text",
-		'value' => "",
+		'prompt' => gTranslate('config',"Admin email address"),
+		'desc' => gTranslate('config',"Set this value to a valid working email address to receive email notices upon certain user actions and also so that users know whom to reach in case of problems. You may specify more than one address by separating them with commas.") .'<br>',
+		'type' => 'text',
+		'value' => '',
 		'attrs' => array('size' => 50),
 		'optional' => 1
 	),
 	'senderEmail' => array(
-		'prompt' => _("Sender email address"),
-		'desc' => _("Set this value to a valid working email address.  Emails that are automatically sent by Gallery will use this as a return address.  You should monitor this email address for bounce messages and replies from recipients.") .
-		"<br>",
-		'type' => "text",
-		'value' => "",
+		'prompt' => gTranslate('config',"Sender email address"),
+		'desc' => gTranslate('config',"Set this value to a valid working email address.  Emails that are automatically sent by Gallery will use this as a return address.  You should monitor this email address for bounce messages and replies from recipients.") .'<br>',
+		'type' => 'text',
+		'value' => '',
 		'attrs' => array('size' => 50),
 		'optional' => 1
 	),
 	'emailSubjPrefix' => array(
-		'prompt' => _("Email subject prefix"),
-		'desc' => _("All Gallery emails will have this as the first part of their subject."),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Email subject prefix"),
+		'desc' => gTranslate('config',"All Gallery emails will have this as the first part of their subject."),
+		'type' => 'text',
 		'attrs' => array('size' => 50),
-		'value' => (!empty( $gallery->app->galleryTitle)) ?
-			"[" . $gallery->app->galleryTitle . "]"	:
-	     		"[" . Gallery() . "]"
+		'value' => (!empty( $gallery->app->galleryTitle)) ? '['. $gallery->app->galleryTitle .']'	: '['. Gallery() .']'
 	),
 	'emailGreeting' => array(
-		'prompt' => _("Welcome email message text"),
-	       	'desc' => placeholderDescription(),
+		'prompt' => gTranslate('config',"Welcome email message text"),
+		'desc' => placeholderDescription(),
 		'optional' => 1,
-		'type' => "textarea",
-		'value' => "",
-		'attrs' => array('cols' => 50, 'rows' => 11)),
+		'type' => 'textarea',
+		'value' => '',
+		'attrs' => array('cols' => 50, 'rows' => 11)
+	),
 	'selfReg' => array(
-		'prompt' => _("Allow visitors to self register."),
-		'desc' => _("Enabling this will allow visitors to your site to create their own login accounts.") . '<br>' .
-			 	'<span class="attention">' . _("This option requires the Email feature to be enabled.") . '</span>',
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
-		'requires-features' => array('emailOn' => _("Email"))
+		'prompt' => gTranslate('config',"Allow visitors to self register."),
+		'desc' => gTranslate('config',"Enabling this will allow visitors to your site to create their own login accounts.") . '<br>' .
+		  '<span class="attention">' . gTranslate('config',"This option requires the Email feature to be enabled.") . '</span>',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
+		'requires-features' => array('emailOn' => gTranslate('config',"Email"))
 	),
 	'selfRegCreate' => array(
-		'prompt' => _("Self registered users can create albums."),
-		'desc' => _("Enabling this will allow self registered users to create their own albums as soon as they register.  Not having this enabled means you will have to give them permission manually before they can create or alter any contents of the Gallery.  This setting is ignored if self-registration is disabled.") .
-		"<br>",
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"),
+		'prompt' => gTranslate('config',"Self registered users can create albums."),
+		'desc' => gTranslate('config',"Enabling this will allow self registered users to create their own albums as soon as they register.  Not having this enabled means you will have to give them permission manually before they can create or alter any contents of the Gallery.  This setting is ignored if self-registration is disabled.") .'<br>',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'),
 	'multiple_create' => array(
-		'prompt' => _("Enable bulk account creation"),
-		'desc' => _("This option allows you to create many new user accounts at one time by creating a file of new users.") .
-		"<br>",
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => gTranslate('config',"Enable bulk account creation"),
+		'desc' => gTranslate('config',"This option allows you to create many new user accounts at one time by creating a file of new users.") .'<br>',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'
 	),
 	'adminCommentsEmail' => array(
-		'desc' => _("This allows the &quot;admin&quot; account to get email whenever a comment is added to any album"),
-		'prompt' => _("Admin comment email"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'desc' => gTranslate('config',"This allows the &quot;admin&quot; account to get email whenever a comment is added to any album"),
+		'prompt' => gTranslate('config',"Admin comment email"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
 		),
+		'value' => 'no'
+	),
 	'adminOtherChangesEmail' => array(
-		'desc' => _("This allows the &quot;admin&quot; account to get email whenever a change is made to any album"),
-		'prompt' => _("Admin Other Changes email"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'desc' => gTranslate('config',"This allows the &quot;admin&quot; account to get email whenever a change is made to any album"),
+		'prompt' => gTranslate('config',"Admin Other Changes email"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
 		),
-
+		'value' => 'no'
+	),
 	'email_notification' => array(
-		'prompt' => _("Admin notification of email activity"),
-		'desc' => _("You can keep a record of every email that is sent by Gallery.") .
-		"<br>",
-		'multiple_choices' => array('email' => _("Send summary email"), 
-			'logfile' => _("Log to a file"),
-			'bcc' => _("Send duplicate email")),
+		'prompt' => gTranslate('config',"Admin notification of email activity"),
+		'desc' => gTranslate('config',"You can keep a record of every email that is sent by Gallery.") .'<br>',
+		'multiple_choices' => array(
+			'email' => gTranslate('config',"Send summary email"),
+			'logfile' => gTranslate('config',"Log to a file"),
+			'bcc' => gTranslate('config',"Send duplicate email")
+		),
 		'optional' => 1,
 		'value' => array()
 	),
-        'useOtherSMTP' => array(
-                'prompt' => _("Use non-local SMTP server."),
-                'desc' => _("Use a smtp server running on a different machine (ie: Your ISPs mail server) to process outgoing gallery email."),
-                "<br>",
-                'choices' => array('no' => _("no"), 'yes' => _("yes")),
-                'optional' => 1,
-                'value' => 'no',
-        ),
-        'smtpHost' => array(
-                'prompt' => _("SMTP Server"),
-                'desc' => _("The name or IP address of the SMTP Server you want to use."),
-                "<br>",
-                'type' => "text",
-                'value' => "localhost",
-                'attrs' => array('size' => 60),
-                'optional' => 1
-        ),
-        'smtpFromHost' => array(
-                'prompt' => _("Sender hostname"),
-                'desc' => _("The full hostname of the server you are sending the mail from (The Server where your Gallery is installed on). If your Server is behind a NAT, this would be the DNS name of your router."),
-                'type' => "text",
-                'value' => (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : 'localhost',
-                'attrs' => array('size' => 60),
-                'optional' => 0
-        ),
+	'useOtherSMTP' => array(
+		'prompt' => gTranslate('config',"Use non-local SMTP server."),
+		'desc' => gTranslate('config',"Use a smtp server running on a different machine (ie: Your ISPs mail server) to process outgoing gallery email."). '<br>',
+		'choices' => array(
+			'no' => gTranslate('config',"No"),
+			'yes' => gTranslate('config',"Yes")
+		),
+		'optional' => 1,
+		'value' => 'no',
+	),
+	'smtpHost' => array(
+		'prompt' => gTranslate('config',"SMTP Server"),
+		'desc' => gTranslate('config',"The name or IP address of the SMTP Server you want to use.") .'<br>',
+		'type' => 'text',
+		'value' => 'localhost',
+		'attrs' => array('size' => 60),
+		'optional' => 1
+	),
+	'smtpFromHost' => array(
+		'prompt' => gTranslate('config',"Sender hostname"),
+		'desc' => gTranslate('config',"The full hostname of the server you are sending the mail from (The Server where your Gallery is installed on). If your Server is behind a NAT, this would be the DNS name of your router."),
+		'type' => 'text',
+		'value' => (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : 'localhost',
+		'attrs' => array('size' => 60),
+		'optional' => 0
+	),
 	'smtpPort' => array(
-                'prompt' => _("SMTP Port"),
-                'desc' => _("The port on the SMTP server you are connecting to."),
-                "<br>",
-                'type' => "text",
-                'value' => "25",
-                'attrs' => array('size' => 10),
-                'optional' => 1
-        ),
-        'smtpUserName' => array(
-                'prompt' => _("SMTP account name"),
-                'desc' => _("If your provide requires a username for outgoing email, use it here, otherwise leave blank."),
-                "<br>",
-                'type' => "text",
-                'value' => "",
-                'attrs' => array('size' => 20),
-                'optional' => 1
-        ),        
+		'prompt' => gTranslate('config',"SMTP Port"),
+		'desc' => gTranslate('config',"The port on the SMTP server you are connecting to.") .'<br>',
+		'type' => 'text',
+		'value' => 25,
+		'attrs' => array('size' => 10),
+		'optional' => 1
+	),
+	'smtpUserName' => array(
+		'prompt' => gTranslate('config',"SMTP account name"),
+		'desc' => gTranslate('config',"If your provide requires a username for outgoing email, use it here, otherwise leave blank.") .'<br>',
+		'type' => 'text',
+		'value' => '',
+		'attrs' => array('size' => 20),
+		'optional' => 1
+	),
 	'smtpPassword' => array(
-                'prompt' => _("SMTP password"),
-                'desc' => _("Password for sending email through smtp server. NOTE: This password is stored in cleartext in config.php. Make sure that permissions are set to keep others from getting at it!"),                
-		"<br>",
-                'type' => "password",
-                'value' => "",
+		'prompt' => gTranslate('config',"SMTP password"),
+		'desc' => gTranslate('config',"Password for sending email through smtp server. NOTE: This password is stored in cleartext in config.php. Make sure that permissions are set to keep others from getting at it!") .'<br>',
+		'type' => 'password',
+		'value' => '',
 		'verify-func' => 'verify_password',
-                'attrs' => array('size' => 20),
-                'optional' => 1
-        ),
+		'attrs' => array('size' => 20),
+		'optional' => 1
+	),
 	'group_email_end' => array (
-		'type' => "group_end",
-        ),
+		'type' => 'group_end',
+	),
 	'group7' => array (
-		'type' => "group_start",
-		'name' => "group_slideshow",
-		'default' => "none",
-		'title' => _("Gallery wide slideshow"),
-		'desc' => _("Adds a slide show link on the main page of the gallery.   Note for large galleries this may run very slowly and use a lot of system resources.") . "  " .
-			  _("These settings do not apply to the low tech slideshow."),
+		'type' => 'group_start',
+		'name' => 'group_slideshow',
+		'default' => 'none',
+		'title' => gTranslate('config',"Gallery wide slideshow"),
+		'desc' => gTranslate('config',"Adds a slide show link on the main page of the gallery.   Note for large galleries this may run very slowly and use a lot of system resources.") . '  ' .
+		  gTranslate('config',"These settings do not apply to the low tech slideshow."),
 	),
 	'gallery_slideshow_type' => array(
-		       	'prompt' => _("Slideshow preferences"),
-		       	'desc' => "<dl>"
-				."<dt>". _("Off") . "</dt>"
-				."<dd>". _("No slideshow link will appear.") . "</dd>"
-				."<dt>". _("Ordered") . "</dt>"
-				."<dd>". _("Images will display in the same order as they appear in the Gallery.") . "</dd>"
-				."<dt>". _("Random") . "</dt>"
-				."<dd>". _("Images will appear in a random order.") . "</dd>"
-				."</dl>",
-		       	'choices' => array(
-			       	'off' => _("Off"),
-			       	'ordered' => _("Ordered"),
-			       	'random' => _("Random"),
-				),
-		       	'value' => "off",
-			),
+		'prompt' => gTranslate('config',"Slideshow preferences"),
+		'desc' => '<dl>'
+			.'<dt>'. gTranslate('config',"Off") . '</dt>'
+			.'<dd>'. gTranslate('config',"No slideshow link will appear.") . '</dd>'
+			.'<dt>'. gTranslate('config',"Ordered") . '</dt>'
+			.'<dd>'. gTranslate('config',"Images will display in the same order as they appear in the Gallery.") . '</dd>'
+			.'<dt>'. gTranslate('config',"Random") . '</dt>'
+			.'<dd>'. gTranslate('config',"Images will appear in a random order.") . '</dd>'
+			.'</dl>',
+		'choices' => array(
+			'off' => gTranslate('config',"Off"),
+			'ordered' => gTranslate('config',"Ordered"),
+			'random' => gTranslate('config',"Random"),
+		),
+		'value' => 'off',
+	),
 	'gallery_slideshow_length' => array(
-		'prompt' => _("Slideshow length"),
-		'desc' => _("Number of images to display in slideshow.  Set to 0 or blank to display all images.  Set to a number if slideshow is random and you want to display only a selection of the images."),
-		'type' => "text",
-		'value' => "20",
+		'prompt' => gTranslate('config',"Slideshow length"),
+		'desc' => gTranslate('config',"Number of images to display in slideshow.  Set to 0 or blank to display all images.  Set to a number if slideshow is random and you want to display only a selection of the images."),
+		'type' => 'text',
+		'value' => 20,
 		'attrs' => array('size' => 5),
 		'allow_empty' => true
 	),
 	'gallery_slideshow_loop' => array(
-		'prompt' => _("Allow slideshow to loop"),
-		'desc' => sprintf(_("This option will allow visitors to have your slideshows repeat until they close the window or go to another page.  Set it to %s if you want to save bandwidth."), "<b>"._("no")."</b>"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-	       	'value' => "yes"
+		'prompt' => gTranslate('config',"Allow slideshow to loop"),
+		'desc' => sprintf(gTranslate('config',"This option will allow visitors to have your slideshows repeat until they close the window or go to another page.  Set it to %s if you want to save bandwidth."), "<b>".gTranslate('config',"No")."</b>"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes'
 	),
 	'slideshowMode' => array(
-		'prompt' => _("Slideshow Mode"),
-		'desc' => _("This allows you to set the default mode for the slideshow.  &quot;Java Applet&quot; requires that the user has the Java Runtime Environment installed in their browser, but allows for fullscreen viewing. &quot;JavaScript&quot; is supported by all modern browsers without extra plugins, but is more limited than the Java Applet."),
-		'choices' => array('applet' => _("Java Applet"), 'high' => _("JavaScript")),
-		'value' => "high"
+		'prompt' => gTranslate('config',"Slideshow Mode"),
+		'desc' => gTranslate('config',"This allows you to set the default mode for the slideshow.  &quot;Java Applet&quot; requires that the user has the Java Runtime Environment installed in their browser, but allows for fullscreen viewing. &quot;JavaScript&quot; is supported by all modern browsers without extra plugins, but is more limited than the Java Applet."),
+		'choices' => array(
+			'applet' => gTranslate('config',"Java Applet"),
+			'high' => gTranslate('config',"JavaScript")
+		),
+		'value' => 'high'
 	),
 	'group7_end' => array (
-		'type' => "group_end",
-        ),
+		'type' => 'group_end',
+	),
 	'group_comments' => array (
-		'type' => "group_start",
-		'name' => "group_comments",
-		'default' => "none",
-		'title' => _("Comments"),
+		'type' => 'group_start',
+		'name' => 'group_comments',
+		'default' => 'none',
+		'title' => gTranslate('config',"Comments"),
 	),
 	'comments_enabled' => array(
-			'prompt' => _("Enable commenting"),
-			'desc' => _("This option will enable or disable the possibility for your users to make comment.  If you set this to &quot;no&quot; all comment functionality is disabled."),
-			'choices' => array('yes' => _("yes"), 'no' => _("no")),
-			'value' => "yes"
-			),
+		'prompt' => gTranslate('config',"Enable commenting"),
+		'desc' => gTranslate('config',"This option will enable or disable the possibility for your users to make comment.  If you set this to &quot;no&quot; all comment functionality is disabled."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes'
+	),
 	'comments_indication' => array(
-		       	'prompt' => _("Indicate if there are comments available"),
-		       	'desc' => "<dl>"
-				. "<dt>" . _("Off") . "</dt>"
-				. "<dd>" . _("No indication that an item has comments.") . "</dd>"
-				. "<dt>" . _("Photos") . "</dt>"
-				. "<dd>" . _("Images that have comments will be marked.") . "</dd>"
-				. "<dt>" . _("Albums"). " </dt>"
-				. "<dd>" . _("Albums and sub-albums that have comments will be marked.") . "</dd>"
-				. "<dt>" ._("Both") . "</dt>"
-				. "<dd>" . _("Images and albums that have comments will be marked.") . "</dd>"
-				. "</dl>",
-		       	'choices' => array(
-			       	'off' => _("Off"),
-			       	'photos' => _("Photos"),
-			       	'albums' => _("Albums"),
-			       	'both' => _("Both"),
-				),
-		       	'value' => "photos",
-			),
+		'prompt' => gTranslate('config',"Indicate if there are comments available"),
+		'desc' => '<dl>'
+			. '<dt>' . gTranslate('config',"Off") . '</dt>'
+			. '<dd>' . gTranslate('config',"No indication that an item has comments.") . '</dd>'
+			. '<dt>' . gTranslate('config',"Photos") . '</dt>'
+			. '<dd>' . gTranslate('config',"Images that have comments will be marked.") . '</dd>'
+			. '<dt>' . gTranslate('config',"Albums"). ' </dt>'
+			. '<dd>' . gTranslate('config',"Albums and sub-albums that have comments will be marked.") . '</dd>'
+			. '<dt>' .gTranslate('config',"Both") . '</dt>'
+			. '<dd>' . gTranslate('config',"Images and albums that have comments will be marked.") . '</dd>'
+			. '</dl>',
+		'choices' => array(
+			'off' => gTranslate('config',"Off"),
+			'photos' => gTranslate('config',"Photos"),
+			'albums' => gTranslate('config',"Albums"),
+			'both' => gTranslate('config',"Both"),
+		),
+		'value' => 'photos',
+	),
 	'comments_indication_verbose' => array(
-		       	'prompt' => _("Display date of last comment?"),
-		       	'desc' => sprintf(_("If an item has comments, display date of last comment, rather than a %s."), '"*"'),
-			'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		       	'value' => "no",
-			),
+		'prompt' => gTranslate('config',"Display date of last comment?"),
+		'desc' => sprintf(gTranslate('config',"If an item has comments, display date of last comment, rather than a %s."), '"*"'),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
+	),
 	'comments_anonymous' => array(
-		       	'prompt' => _("Anonymous comments from known users?"),
-		       	'desc' => sprintf(_("When logged in, comments will automatically use format described below, unless this is set to %s."), 
-				"<b>". _("yes"). "</b>"),
-			'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		       	'value' => "no",
-			),
+		'prompt' => gTranslate('config',"Anonymous comments from known users?"),
+		'desc' => sprintf(gTranslate('config',"When logged in, comments will automatically use format described below, unless this is set to %s."),
+		  '<b>'. gTranslate('config',"Yes"). '</b>'),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
+	),
 	'comments_display_name' => array(
-			'prompt' => _("Format for commenter names"),
-			'desc' => _("Commenter names of logged in users can be displayed in a variety of different ways"),
-			'choices' => displayNameOptions(), 
-			'value' => "!!FULLNAME!! (!!USERNAME!!)",
-			),
+		'prompt' => gTranslate('config',"Format for commenter names"),
+		'desc' => gTranslate('config',"Commenter names of logged in users can be displayed in a variety of different ways"),
+		'choices' => displayNameOptions(),
+		'value' => '!!FULLNAME!! (!!USERNAME!!)',
+	),
 	'comments_addType' => array(
-			'prompt' => _("Add comments inside the photo page"),
-			'desc' => _("Do you want to have the possibility to add comments inside the view photo page, or do you prefer a link to a popup"),
-			'choices' => array ('popup' => _("Popup"), 'inside' => _("Inside")),
-			'value' => "popup"
-			),
+		'prompt' => gTranslate('config',"Add comments inside the photo page"),
+		'desc' => gTranslate('config',"Do you want to have the possibility to add comments inside the view photo page, or do you prefer a link to a popup"),
+		'choices' => array (
+			'popup' => gTranslate('config',"Popup"),
+			'inside' => gTranslate('config',"Inside")
+		),
+		'value' => 'popup'
+	),
 	'comments_length' => array(
-			'prompt' => _("Maximum length of comments"),
-			'desc' => _("Enter a suitable value for the maximum length of comments to prevent abuse. Gallery limits comments to no more than 1000 characters.  This value will be used if less than 1000."),
-			'type' => "text",
-			'must-be-integer' => 1,
-			'value' => 300
+		'prompt' => gTranslate('config',"Maximum length of comments"),
+		'desc' => gTranslate('config',"Enter a suitable value for the maximum length of comments to prevent abuse. Gallery limits comments to no more than 1000 characters.  This value will be used if less than 1000."),
+		'type' => 'text',
+		'must-be-integer' => 1,
+		'value' => 300
 	),
 	'comments_overview_for_all' => array(
-			'prompt' => _("Can every permitted user see a comments overview"),
-			'desc' => _("Do you want to allow every user who is allowed to view comments (set in permission) to see a complete overview of all comments of an Album? Set this to &quot;no&quot; if only admin and owners can use this feature."),
-			'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		       	'value' => "no",
+		'prompt' => gTranslate('config',"Can every permitted user see a comments overview"),
+		'desc' => gTranslate('config',"Do you want to allow every user who is allowed to view comments (set in permission) to see a complete overview of all comments of an Album? Set this to &quot;no&quot; if only admin and owners can use this feature."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
 	),
 	'group_comments_end' => array (
-		'type' => "group_end",
-        ),
+		'type' => 'group_end',
+	),
 	'group_watermark_start' => array(
 		'type'		=> 'group_start',
 		'name'		=> 'group_watermark',
 		'default'	=> 'none',
-		'title'		=> _("Watermarking"),
-		'desc'		=> ($enablewatermark == 'yes') ? 
-					_("Choose wether you want to enable or disable watermarking. And set the defaults") :
-				'<span class="attention">' . _("Watermarking is not possible in this installation !") . '</span>'
+		'title'		=> gTranslate('config',"Watermarking"),
+		'desc'		=> ($enablewatermark == 'yes') ?
+		  gTranslate('config',"Choose wether you want to enable or disable watermarking. And set the defaults") :
+		  '<span class="attention">' . gTranslate('config',"Watermarking is not possible in this installation !") . '</span>'
 	),
 	'watermarkDir' => array(
-		'prompt' => _("Watermark directory"),
-		'desc' => sprintf(_("The full path on physical disk to the directory where your watermark images will be stored.  This directory may contain .png, .tif, and .gif images used to overlay visible watermarks on photos. These formats are supported because they may contain transparency or alpha channels.  <b>Leaving this blank will disable watermarking support.</b> Note that this directory needs to have read access by the user who is running the web server (in your case this user is %s)."),
-			"<b>". $webserver_user . "</b>"),
-		'value' => "",
+		'prompt' => gTranslate('config',"Watermark directory"),
+		'desc' => sprintf(gTranslate('config',"The full path on physical disk to the directory where your watermark images will be stored.  This directory may contain .png, .tif, and .gif images used to overlay visible watermarks on photos. These formats are supported because they may contain transparency or alpha channels.  <b>Leaving this blank will disable watermarking support.</b> Note that this directory needs to have read access by the user who is running the web server (in your case this user is %s)."),
+		  '<b>'. $webserver_user . '</b>'),
+		'value' => '',
 		'enabled' => $enablewatermark,
 		'optional' => 1,
 		'filename' => 1,
-		'type' => "text",
+		'type' => 'text',
 		'attrs' => array('size' => 50)
 	),
 	'watermarkSizes' => array(
-		'prompt' => _("Which Imagetype is watermarked"),
-		'desc' => _("Here you can choose which of the images should be watermarked per default."),
+		'prompt' => gTranslate('config',"Which Imagetype is watermarked"),
+		'desc' => gTranslate('config',"Here you can choose which of the images should be watermarked per default."),
 		'value' => 0,
 		'enabled' => $enablewatermark,
 		'optional' => 1,
 		'choices' => array(
-			0 => _("Watermark both resized and full images"),
-			1 => _("Watermark resized image only"),
-			2 => _("Watermark full sized image only")),
+			0 => gTranslate('config',"Watermark both resized and full images"),
+			1 => gTranslate('config',"Watermark resized image only"),
+			2 => gTranslate('config',"Watermark full sized image only")
+		),
 		'value' => 0,
 	),
 	'group_watermark_end' => array (
-		'type' => "group_end",
-        ),
+		'type' => 'group_end',
+	),
 	'group_stats_start' => array(
 		'type'		=> 'group_start',
 		'name'		=> 'group_stats',
 		'default' 	=> 'none',
-		'title'		=> _("Statistics"),
-		'desc'		=> _("Caching improves performance for a large gallery at the cost of potentially displaying photos that are out of order or with out of date rating information.") . "\n<br>".
-				   _("There's a different cache for each stats type supported with the exception of random."). "\n<br>".
-				   _("The caches can be refreshed by reloading the stats page and specifying the url variable 'refreshcache'."). "\n<br>".
-				   _("Caches will also refresh themselves after they have expired."). "\n<br>".
-				   _("The expire time in seconds is specified for each cache below."). "\n<br>".
-				   _("If the expire time is set to -1 then the cache will not auto refresh.")
-		),
-
+		'title'		=> gTranslate('config',"Statistics"),
+		'desc'		=> gTranslate('config',"Caching improves performance for a large gallery at the cost of potentially displaying photos that are out of order or with out of date rating information.") . "\n<br>".
+		  gTranslate('config',"There's a different cache for each stats type supported with the exception of random."). "\n<br>".
+		  gTranslate('config',"The caches can be refreshed by reloading the stats page and specifying the url variable 'refreshcache'."). "\n<br>".
+		  gTranslate('config',"Caches will also refresh themselves after they have expired."). "\n<br>".
+		  gTranslate('config',"The expire time in seconds is specified for each cache below."). "\n<br>".
+		  gTranslate('config',"If the expire time is set to -1 then the cache will not auto refresh.")
+	),
+	
 	'stats_foruser'	=> array(
-		'prompt'		=> _("Available Stats for 'normal' users"),
-		'desc'			=> _("Gallery can give a lot of statistics for admins, however you can enable some of them to normal users.") ."\n<br>".
-					   sprintf(_("For every selected item Gallery will create a link on the mainpage. The stats are based on the defaults defined in %s."), "'<i>includes/stats/stats.inc.php</i>'"),
+		'prompt'		=> gTranslate('config',"Available Stats for 'normal' users"),
+		'desc'			=> gTranslate('config',"Gallery can give a lot of statistics for admins, however you can enable some of them to normal users.") ."\n<br>".
+		  sprintf(gTranslate('config',"For every selected item Gallery will create a link on the mainpage. The stats are based on the defaults defined in %s."), "'<i>includes/stats/stats.inc.php</i>'"),
 		'multiple_choices' 	=> $stats_choices,
 		'optional'	=> 1
 	),
 	'stats_viewsCacheOn'	=> array(
-		'prompt' => _("View cache"),
-		'choices' => array(1 => _("On"), 0 => _("Off")),
+		'prompt' => gTranslate('config',"View cache"),
+		'choices' => array(
+			1 => gTranslate('config',"On"),
+			0 => gTranslate('config',"Off")
+		),
 		'value' => 0,
 	),
 	'stats_viewsCacheExpireSecs' => array(
-		'prompt' => _("View cache expiration"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"View cache expiration"),
+		'type' => 'text',
 		'must-be-number' => 1,
 		'value' => 60
 	),
 	'stats_commentsCacheOn'	=> array(
-		'prompt' => _("Comment cache"),
-		'choices' => array(1 => _("On"), 0 => _("Off")),
+		'prompt' => gTranslate('config',"Comment cache"),
+		'choices' => array(
+			1 => gTranslate('config',"On"),
+			0 => gTranslate('config',"Off")
+		),
 		'value' => 0,
 	),
 	'stats_commentsCacheExpireSecs' => array(
-		'prompt' => _("Comment cache expiration"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Comment cache expiration"),
+		'type' => 'text',
 		'must-be-number' => 1,
 		'value' => 600
 	),
 	'stats_dateCacheOn'	=> array(
-		'prompt' => _("Date cache"),
-		'choices' => array(1 => _("On"), 0 => _("Off")),
+		'prompt' => gTranslate('config',"Date cache"),
+		'choices' => array(
+			1 => gTranslate('config',"On"),
+			0 => gTranslate('config',"Off")
+		),
 		'value' => 0,
 	),
 	'stats_dateCacheExpireSecs' => array(
-		'prompt' => _("Date cache expiration"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Date cache expiration"),
+		'type' => 'text',
 		'must-be-number' => 1,
 		'value' => -1
 	),
 	'stats_votesCacheOn'	=> array(
-		'prompt' => _("Vote cache"),
-		'choices' => array(1 => _("On"), 0 => _("Off")),
+		'prompt' => gTranslate('config',"Vote cache"),
+		'choices' => array(
+			1 => gTranslate('config',"On"),
+			0 => gTranslate('config',"Off")
+		),
 		'value' => 0,
 	),
 	'stats_votesCacheExpireSecs' => array(
-		'prompt' => _("Vote cache expiration"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Vote cache expiration"),
+		'type' => 'text',
 		'must-be-number' => 1,
 		'value' => 3600
 	),
 	'stats_ratingsCacheOn'	=> array(
-		'prompt' => _("Rating cache"),
-		'choices' => array(1 => _("On"), 0 => _("Off")),
+		'prompt' => gTranslate('config',"Rating cache"),
+		'choices' => array(
+			1 => gTranslate('config',"On"),
+			0 => gTranslate('config',"Off")
+		),
 		'value' => 0,
 	),
 	'stats_ratingsCacheExpireSecs' => array(
-		'prompt' => _("Rating cache expiration"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Rating cache expiration"),
+		'type' => 'text',
 		'must-be-number' => 1,
 		'value' => 3600
 	),
 	'stats_cDateCacheOn'	=> array(
-		'prompt' => _("Capturedate cache"),
-		'choices' => array(1 => _("On"), 0 => _("Off")),
+		'prompt' => gTranslate('config',"Capturedate cache"),
+		'choices' => array(
+			1 => gTranslate('config',"On"),
+			0 => gTranslate('config',"Off")
+		),
 		'value' => 0,
 	),
 	'stats_cDateCacheExpireSecs' => array(
-		'prompt' => _("Capturedate cache expiration"),
-		'type' => "text",
+		'prompt' => gTranslate('config',"Capturedate cache expiration"),
+		'type' => 'text',
 		'must-be-number' => 1,
 		'value' => -1
 	),
@@ -1098,183 +1250,212 @@
 		'type'		=> 'group_end'
 	),
 	'group_technical' => array (
-		'type' => "group_start",
-		'name' => "group_technical",
-		'default' => "none",
-		'title' => _("Technical"),
-		'desc' => _("The settings in this section are intended for advanced users only.") . 
-			'<br><span class="attention">'.
-			_("Be aware that settings changed on this tab may have severe performance or security consequences and do so at your own risk.") .
-			'<span>'),
+		'type' => 'group_start',
+		'name' => 'group_technical',
+		'default' => 'none',
+		'title' => gTranslate('config',"Technical"),
+		'desc' => gTranslate('config',"The settings in this section are intended for advanced users only.") .
+		  '<br><span class="attention">'.
+		  gTranslate('config',"Be aware that settings changed on this tab may have severe performance or security consequences and do so at your own risk.") .
+		'<span>'
+	),
 	'debuglevel' => array(
-		'prompt' => _("Debug Level"),
-		'desc' => _("Turn debug on so that you can diagnose problems?") .'<br><span class="emphasis">'. _("Note: Dont leave this option on in production systems! Else you might show users more information about your Gallery and system than you want!") . '</span>',
-		'choices' => array(0 => _("No Debug"), 1 => _("Normal"), 2 => _("High (former Debug 'on')")),
+		'prompt' => gTranslate('config',"Debug Level"),
+		'desc' => gTranslate('config',"Turn debug on so that you can diagnose problems?") .'<br><span class="emphasis">'. gTranslate('config',"Note: Dont leave this option on in production systems! Else you might show users more information about your Gallery and system than you want!") . '</span>',
+		'choices' => array(
+			0 => gTranslate('config',"No Debug"),
+			1 => gTranslate('config',"Normal"),
+			2 => gTranslate('config',"High (former Debug 'on')"),
+			3 => gTranslate('config',"Paranoid")),
 		'value' => 0,
 	),
 	'skipRegisterGlobals' => array(
-		'prompt' => _('Disable register_globals check'),
-		'desc' => sprintf(_('<b>Be aware that changing this setting potentially decreases the security of your Gallery, and we may or may not support you if you encounter issues that don\'t occur when this is turned off.</b><br><br>Enabling this causes %s to ignore register_globals being turned on.  %s normally tries to unset all variables created by register_globals to help enforce security.  If a script that you run requires register_globals to be on, and will not cooperate with %s, set this to &quot;yes&quot;.'), Gallery(), Gallery(), Gallery(), Gallery()),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-                'value' => "no",
-	),
-        'timeLimit' => array(
-		'prompt' => _("Time Limit"),
-		'desc' => _("The maximum amount of time in seconds any single operation should take.  If you find that you are getting the <b>Maximum execution time exceeded</b> error message, you can try making this a larger number.  Be warned that if you make this too large you <i>might</i> have a process that is stuck for a very long time without doing anything.  The default value is 30 which is pretty reasonable."),
-		'type' => "text",
+		'prompt' => gTranslate('config','Disable register_globals check'),
+		'desc' => sprintf(gTranslate('config','<b>Be aware that changing this setting potentially decreases the security of your Gallery, and we may or may not support you if you encounter issues that don\'t occur when this is turned off.</b><br><br>Enabling this causes %s to ignore register_globals being turned on.  %s normally tries to unset all variables created by register_globals to help enforce security.  If a script that you run requires register_globals to be on, and will not cooperate with %s, set this to &quot;yes&quot;.'), Gallery(), Gallery(), Gallery(), Gallery()),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
+	),
+	'timeLimit' => array(
+		'prompt' => gTranslate('config',"Time Limit"),
+		'desc' => gTranslate('config',"The maximum amount of time in seconds any single operation should take.  If you find that you are getting the <b>Maximum execution time exceeded</b> error message, you can try making this a larger number.  Be warned that if you make this too large you <i>might</i> have a process that is stuck for a very long time without doing anything.  The default value is 30 which is pretty reasonable."),
+		'type' => 'text',
 		'must-be-integer' => 1,
 		'must-not-be-zero' => 1,
 		'value' => 30,
 		'attrs' => array('size' => 5),
 	),
+	'IM_HQ' => array(
+		'prompt' => gTranslate('config',"ImageMagick high quality"),
+		'desc' => gTranslate('config',"If this setting is 'yes' and you use ImageMagick then resized Images will have a slightly(!) higher quality, but with the drawback of a higher load and a higher creation time."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes'
+	),
 	'blockRandomCache' => array(
-		'prompt' => _("Random Block Cache Time"),
-		'desc' => _("This is the amount of time that the Random Block will cache data about your photos and albums, speeding up requests for random photos.  The more often that your albums are modified, the lower you should set this value to ensure that new photos are chosen quickly, and to prevent attempts to retrieve photos which may have been deleted. The cache is automatically regenerated when a user views the random block after the time limit has expired."),
+		'prompt' => gTranslate('config',"Random Block Cache Time"),
+		'desc' => gTranslate('config',"This is the amount of time that the Random Block will cache data about your photos and albums, speeding up requests for random photos.  The more often that your albums are modified, the lower you should set this value to ensure that new photos are chosen quickly, and to prevent attempts to retrieve photos which may have been deleted. The cache is automatically regenerated when a user views the random block after the time limit has expired."),
 		'value' => 86400,
 		'choices' => array(
-				86400 => _("24 Hours"), 
-				43200 => _("12 Hours"), 
-				21600 => _("6 Hours"), 
-				1440 => _("1 Hour"), 
-				720 => _("30 Minutes")
-				)
+			86400 => gTranslate('config',"24 Hours"),
+			43200 => gTranslate('config',"12 Hours"),
+			21600 => gTranslate('config',"6 Hours"),
+			1440 => gTranslate('config',"1 Hour"),
+			720 => gTranslate('config',"30 Minutes")
+		)
 	),
 	'blockRandomAttempts' => array(
-		'prompt' => _("Random Block Retrieval Attempts"),
-		'desc' => _("This variable controls the number of times that the random block will attempt to retrieve an image from Gallery.  The larger the value, the less likely a 'No Photo Chosen' will be returned, but it increases the time it takes for the Random Block to load."),
+		'prompt' => gTranslate('config',"Random Block Retrieval Attempts"),
+		'desc' => gTranslate('config',"This variable controls the number of times that the random block will attempt to retrieve an image from Gallery.  The larger the value, the less likely a 'No Photo Chosen' will be returned, but it increases the time it takes for the Random Block to load."),
 		'value' => 2,
 		'must-be-integer' => 1,
 		'must-not-be-zero' => 1,
-		'type' => "text",
+		'type' => 'text',
 	),
 	'cacheExif' => array(
-		'prompt' => "<b>(" . _("Advanced") . ")</b><br> ". _("Cache EXIF data"),
-		'desc' => _("The EXIF data extracted from JPEG files can be cached after it is read the first time.  The tradeoff is that if you cache this data it's possible for your album data files to get quite large which may slow down viewing your albums.  But, if you don't cache this data then it needs to be retrieved every time any user looks at the properties of a photo which can also be slow."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => "<b>(" . gTranslate('config',"Advanced") . ")</b><br> ". gTranslate('config',"Cache EXIF data"),
+		'desc' => gTranslate('config',"The EXIF data extracted from JPEG files can be cached after it is read the first time.  The tradeoff is that if you cache this data it's possible for your album data files to get quite large which may slow down viewing your albums.  But, if you don't cache this data then it needs to be retrieved every time any user looks at the properties of a photo which can also be slow."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'
 	),
-
+	
 	'devMode' => array(
-		'prompt' => _("Developer Mode"),
-		'desc' => _("Turn on developer mode to see all PHP warnings and notices.  Enabling this is not recommended for users that aren't familiar with PHP."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
-	), 
+		'prompt' => gTranslate('config',"Developer Mode"),
+		'desc' => gTranslate('config',"Turn on developer mode to see all PHP warnings and notices.  Enabling this is not recommended for users that aren't familiar with PHP."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
+	),
 	'useSyslog' => array(
-		'prompt' => _("Use Syslog"),
-		'desc' => _("Report user login, logout, and serious errors via syslog (UNIX) or System Event Manager (Windows)"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
+		'prompt' => gTranslate('config',"Use Syslog"),
+		'desc' => gTranslate('config',"Report user login, logout, and serious errors via syslog (UNIX) or System Event Manager (Windows)"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
 	),
 	'use_flock' => array(
-		'prompt' => sprintf(_("Use %s"), " flock()"),
-		'desc' => _("Gallery uses a locking system called flock() for added protection against data corruption.  This is not supported on all platforms.  If you're seeing errors like <i>Could not acquire lock</i> then set this value to <i>no</i>."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes"),
+		'prompt' => sprintf(gTranslate('config',"Use %s"), " flock()"),
+		'desc' => gTranslate('config',"Gallery uses a locking system called flock() for added protection against data corruption.  This is not supported on all platforms.  If you're seeing errors like <i>Could not acquire lock</i> then set this value to <i>no</i>."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes'
+	),
 	'expectedExecStatus' => array(
-		'prompt' => _("Status code"),
-		'desc' => _("The status code Gallery expects to see after a successful <i>exec()</i> call.  Gallery will try to figure this out on its own so you probably won't need to change this value unless you have problems."),
+		'prompt' => gTranslate('config',"Status code"),
+		'desc' => gTranslate('config',"The status code Gallery expects to see after a successful <i>exec()</i> call.  Gallery will try to figure this out on its own so you probably won't need to change this value unless you have problems."),
 		'value' => detect_exec_status(),
-		'type' => "text",
+		'type' => 'text',
 		'attrs' => array('size' => 5),
 	),
 	'sessionVar' => array(
-		'prompt' => _("Session variable"),
-		'desc' => _("This is the session variable used to contain all Gallery session information.  Change this if there is a conflict between Gallery and another PHP app on your website."),
-		'value' => "gallery_session",
-		'type' => "text",
+		'prompt' => gTranslate('config',"Session variable"),
+		'desc' => gTranslate('config',"This is the session variable used to contain all Gallery session information.  Change this if there is a conflict between Gallery and another PHP app on your website."),
+		'value' => 'gallery_session',
+		'type' => 'text',
 		'attrs' => array('size' => 20),
 	),
 	'group_technical_end' => array (
-		'type' => "group_end",
-        ),
+		'type' => 'group_end',
+	),
 	'group_rss' => array(
 		'type' => 'group_start',
 		'name' => 'group_rss',
 		'default' => 'none',
-		'title' => _("RSS Publisher"),
-		'desc' => _("Options for the Gallery RSS Publisher"),
+		'title' => gTranslate('config',"RSS Publisher"),
+		'desc' => gTranslate('config',"Options for the Gallery RSS Publisher"),
 	),
 	'rssEnabled' => array(
-		'prompt' => _("Enable RSS Generator"),
-		'desc' => _("Enable or Disable the Gallery RSS Generator"),
+		'prompt' => gTranslate('config',"Enable RSS Generator"),
+		'desc' => gTranslate('config',"Enable or Disable the Gallery RSS Generator"),
 		'choices' => array(
-			'yes' => _("Yes"),
-			'no' => _("No")),
-		'value' => "yes",
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")),
+		'value' => 'yes',
 	),
 	'rssMode' => array(
-		'prompt' => _("RSS Content"),
-		'desc' => _("Specifies which information is to be included in your RSS feed."),
+		'prompt' => gTranslate('config',"RSS Content"),
+		'desc' => gTranslate('config',"Specifies which information is to be included in your RSS feed."),
 		'choices' => array(
-			'basic' => _("Basic information only"),
-			'highlight' => _("Album highlight"),
-			'thumbs' => _("All image thumbnails"),
-			'thumbs-with-captions' => _("All image thumbnails and captions")),
-		'value' => "basic",
+		'basic' => gTranslate('config',"Basic information only"),
+		'highlight' => gTranslate('config',"Album highlight"),
+		'thumbs' => gTranslate('config',"All image thumbnails"),
+		'thumbs-with-captions' => gTranslate('config',"All image thumbnails and captions")),
+		'value' => 'basic',
 	),
 	'rssHighlight' => array(
-		'prompt' => _("RSS Highlight"),
-		'desc' => _("Specify which album will be displayed as the icon for all feed entries: An empty field means that there will be no default highlight.  '*' uses the most recently update album's highlight.  Specifying an album name will use that album's highlight image."),
-		'type' => "text",
+		'prompt' => gTranslate('config',"RSS Highlight"),
+		'desc' => gTranslate('config',"Specify which album will be displayed as the icon for all feed entries: An empty field means that there will be no default highlight.  '*' uses the most recently update album's highlight.  Specifying an album name will use that album's highlight image."),
+		'type' => 'text',
 		'attrs' => array('size' => 30),
 		'optional' => 1,
 	),
 	'rssMaxAlbums' => array(
-		'prompt' => _("Maximum Albums Returned"),
-		'desc' => _("This value is the maximum number of albums that the RSS feed will display to the user. Only the most recently modified albums are chosen for this value."),
+		'prompt' => gTranslate('config',"Maximum Albums Returned"),
+		'desc' => gTranslate('config',"This value is the maximum number of albums that the RSS feed will display to the user. Only the most recently modified albums are chosen for this value."),
 		'value' => 25,
-		'type' => "text",
+		'type' => 'text',
 		'must-be-integer' => 1,
 		'must-not-be-zero' => 1,
-	),	
+	),
 	'rssVisibleOnly' => array(
-		'prompt' => _("Visible Albums Only"),
-		'desc' => _("Specifies whether hidden albums should be included in the RSS feed.  This is not advised unless you are the only Gallery user.  Other users could become very upset if their hidden images become displayed to the public."),
+		'prompt' => gTranslate('config',"Visible Albums Only"),
+		'desc' => gTranslate('config',"Specifies whether hidden albums should be included in the RSS feed.  This is not advised unless you are the only Gallery user.  Other users could become very upset if their hidden images become displayed to the public."),
 		'choices' => array(
-			'yes' => _("Display Visible Albums Only"),
-			'no' => _("Display Hidden Albums")),
-		'value' => "yes",
+			'yes' => gTranslate('config',"Display Visible Albums Only"),
+			'no' => gTranslate('config',"Display Hidden Albums")),
+		'value' => 'yes',
 	),
 	'rssDCDate' => array(
-		'prompt' => _("Use dc:date"),
-		'desc' => _("(Advanced) If users complain about their RSS readers being unable to process the RSS Feed, try enabling this option.  Including dc:date is not RSS 2.0 compliant, but some feed readers require it anyway. Turning this on will cause your feed to not validate as RSS 2.0."),
+		'prompt' => gTranslate('config',"Use dc:date"),
+		'desc' => gTranslate('config',"(Advanced) If users complain about their RSS readers being unable to process the RSS Feed, try enabling this option.  Including dc:date is not RSS 2.0 compliant, but some feed readers require it anyway. Turning this on will cause your feed to not validate as RSS 2.0."),
 		'choices' => array(
-			'yes' => _("Yes"),
-			'no' => _("No")),
-		'value' => "no",
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")),
+		'value' => 'no',
 	),
 	'rssBigPhoto' => array(
-		'prompt' => _("Use Big Photo"),
-		'desc' => _("(Advanced) If users complain about their RSS readers corrupting the channel thumbnail, you can turn this feature on.  Turning this on will cause your feed to not validate as valid RSS 2.0."),
+		'prompt' => gTranslate('config',"Use Big Photo"),
+		'desc' => gTranslate('config',"(Advanced) If users complain about their RSS readers corrupting the channel thumbnail, you can turn this feature on.  Turning this on will cause your feed to not validate as valid RSS 2.0."),
 		'choices' => array(
-			'yes' => _("Yes"),
-			'no' => _("No")),
-		'value' => "no",
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")),
+		'value' => 'no',
 	),
 	'rssPhotoTag' => array(
-		'prompt' => _("Use Photo Tag"),
-		'desc' => _("(Advanced) Turning this off will cause two RSS extensions which allow for images representing items to be removed from the feed.  Leaving this enabled should cause no problems - disabling it is a personal preference."),
+		'prompt' => gTranslate('config',"Use Photo Tag"),
+		'desc' => gTranslate('config',"(Advanced) Turning this off will cause two RSS extensions which allow for images representing items to be removed from the feed.  Leaving this enabled should cause no problems - disabling it is a personal preference."),
 		'choices' => array(
-			'yes' => _("Yes"),
-			'no' => _("No")),
-		'value' => "yes",
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")),
+		'value' => 'yes',
 	),
 	'group_rss_end' => array(
-		'type' => "group_end"
+		'type' => 'group_end'
 	),
-	/* Keep these two at the end of the list because they're hidden */
+	// Keep these two at the end of the list because they're hidden
 	'userDir' => array(
 		'desc' => "Filesystem location of user information",
 		'prompt' => ".users directory",
-		'type' => "hidden",
-		'value' => "",
+		'type' => 'hidden',
+		'value' => '',
 		'eval' => '"{$gallery->session->configForm->albumDir}/.users"',
 		'persistent' => 1,
 		'filename' => 1
-		),
-
-	)
+	),
+  )
 );
 
 $defaults = array(
@@ -1282,183 +1463,229 @@
 		'type' => 'group_start',
 		'name' => 'group_layout',
 		'default' => 'inline',
-		'title' => _("Layout")
+		'title' => gTranslate('config',"Layout")
 	),
 	'cols' => array(
-		'prompt' => _("Default Columns"),
-		'desc' => _("The default number of columns in an album."),
+		'prompt' => gTranslate('config',"Default Columns"),
+		'desc' => gTranslate('config',"The default number of columns in an album."),
 		'value' => 3,
 		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9),
 	),
 	'rows' => array(
-		'prompt' => _("Default Rows"),
-		'desc' => _("The default number of rows in an album."),
+		'prompt' => gTranslate('config',"Default Rows"),
+		'desc' => gTranslate('config',"The default number of rows in an album."),
 		'value' => 3,
 		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10),
 	),
 	'group_layout_end' => array (
-               	'type' => 'group_end',
+		'type' => 'group_end',
 	),
 	'group_appearance' => array (
 		'type' => 'group_start',
 		'name' => 'group_appearance',
 		'default' => 'none',
-		'title' => _("Appearance")
-        ),
+		'title' => gTranslate('config',"Appearance")
+	),
 	'bordercolor' => array(
-		'prompt' => _("Border color"),
- 		'desc' => sprintf(_("Default color of (image) borders. You can learn about %scolors%s here."),    
-			   '<a href="http://www.permadi.com/tutorial/websafecolor/" target="_blank">',
-			   '</a>'),
-			   // '  <a href="http://gotomy.com/color.html">' . 
-
-		// <a href="http://www.w3.org/TR/REC-html40/types.html#h-6.5">W3.org</a>',
- 		'value' => "black",
+		'prompt' => gTranslate('config',"Border color"),
+		'desc' => sprintf(gTranslate('config',"Default color of (image) borders. You can learn about %scolors%s here."),
+		  '<a href="http://www.permadi.com/tutorial/websafecolor/" target="_blank">', '</a>'),
+		'value' => "black",
 		'type' => 'colorpicker'
 	),
 	'border' => array(
-		'prompt' => _("Border width"),
-		'desc' => _("Default width of (image) borders."),
+		'prompt' => gTranslate('config',"Border width"),
+		'desc' => gTranslate('config',"Default width of (image) borders."),
 		'value' => 1,
 		'choices' => array(0 => 0, 1 => 1, 2 => 2, 3 => 3)
 	),
 	'font' => array(
-		'prompt' => _("Default Font"),
-		'desc' => _("Default font face.  E.g. <i>arial</i> or <i>trebuchet</i>"),
-		'value' => "arial",
+		'prompt' => gTranslate('config',"Default Font"),
+		'desc' => gTranslate('config',"Default font face.  E.g. <i>arial</i> or <i>trebuchet</i>"),
+		'value' => 'arial',
 		'attrs' => array('size' => 10),
-		'type' => "text"
+		'type' => 'text'
 	),
 	'group_appearance_end' => array (
 		'type' => 'group_end',
 	),
-
 	'group3' => array (
 		'type' => 'group_start',
 		'name' => 'group_display',
 		'default' => 'none',
-		'title' => _("Image Processing and Display")
+		'title' => gTranslate('config',"Image Processing and Display")
 	),
 	'thumb_size' => array(
-		'prompt' => _("Thumbnail size"),
-		'desc' => _("The default target size (in pixels) of album thumbnails."),
+		'prompt' => gTranslate('config',"Thumbnail size"),
+		'desc' => gTranslate('config',"The default target size (in pixels) of album thumbnails."),
 		'value' => 150,
 		'attrs' => array('size' => 10),
-		'type' => "text"
+		'type' => 'text'
+	),
+	'thumb_ratio' => array(
+		'prompt' => gTranslate('config',"Thumbnail Ratio"),
+		'desc' => gTranslate('config',"The ratio in which the thumbnails are made"),
+		'choices' => array(
+			'0' => gTranslate('config',"As the original image"),
+			'1/1' => gTranslate('config',"Square thumbs")
+		),
+		'value' => 0,
 	),
 	'resize_size' => array(
-		'prompt' => _("Resized image size"),
-		'desc' => _("When large images are added to an album, an intermediate version will automatically be generated at this size."),
+		'prompt' => gTranslate('config',"Resized image size"),
+		'desc' => gTranslate('config',"When large images are added to an album, an intermediate version will automatically be generated at this size."),
 		'value' => 640,
-		'choices' => array(0 => _("off"), 400 => 400, 500 => 500, 600 => 600, 640 => 640, 700 => 700, 800 => 800, 1024 => 1024)
+		'choices' => array(
+			0 => gTranslate('config',"off"),
+			400 => 400,
+			500 => 500,
+			600 => 600,
+			640 => 640,
+			700 => 700,
+			800 => 800,
+			1024 => 1024
+		)
 	),
 	'resize_file_size' => array(
-		'prompt' => _("Resized JPEG/PNG images file size"),
-		'desc' => _("The default target size (in kilobytes) of resized JPEG/PNG images.  Including a value may slow down file uploads, but will speed up page viewing time especially for people with dialup connections.  Set to 0 for no target size."),
-			  
+		'prompt' => gTranslate('config',"Resized JPEG/PNG images file size"),
+		'desc' => gTranslate('config',"The default target size (in kilobytes) of resized JPEG/PNG images.  Including a value may slow down file uploads, but will speed up page viewing time especially for people with dialup connections.  Set to 0 for no target size."),
 		'value' => 0,
 		'optional' => 1,
-		'type' => "text"
+		'type' => 'text'
 	),
 	'max_size' => array(
-		'prompt' => _('Maximum image size'),
-		'desc' => _("You can optionally limit the dimensions your images on upload to Gallery.") . 
-			'<br><span class="attention>'. _("Warning:") .'</span> '. 
-			_("Enabling this feature will leave you <b>without a full size original</b> image in your Gallery, but allows you to save limited hard drive space. Gallery will attempt to preserve JPEG comments and EXIF data for the shrunken image, but this will require either <b>ImageMagick</b> or the optional <b>jhead</b> programs (see Step 2)."),
+		'prompt' => gTranslate('config','Maximum image size'),
+		'desc' => gTranslate('config',"You can optionally limit the dimensions your images on upload to Gallery.") .
+		  '<br><span class="attention>'. gTranslate('config',"Warning:") .'</span> '.
+		  gTranslate('config',"Enabling this feature will leave you <b>without a full size original</b> image in your Gallery, but allows you to save limited hard drive space. Gallery will attempt to preserve JPEG comments and EXIF data for the shrunken image, but this will require either <b>ImageMagick</b> or the optional <b>jhead</b> programs (see Step 2)."),
 		'value' => 'off',
-		'choices' => array(0 => _('off'), 400 => 400, 500 => 500, 600 => 600, 640 => 640, 700 => 700, 800 => 800, 1024 => 1024, 1280 => sprintf(_('%d (%d MPix)'), 1280, 1), 1600 => sprintf(_('%d (%d MPix)'), 1600, 2), 2048 => sprintf(_('%d (%d MPix)'), 2048, 3))
+		'choices' => array(
+			0 => gTranslate('config',"Off"),
+			400 => 400,
+			500 => 500,
+			600 => 600,
+			640 => 640,
+			700 => 700,
+			800 => 800,
+			1024 => 1024,
+			1280 => sprintf(gTranslate('config','%d (%d MPix)'), 1280, 1),
+			1600 => sprintf(gTranslate('config','%d (%d MPix)'), 1600, 2),
+			2048 => sprintf(gTranslate('config','%d (%d MPix)'), 2048, 3))
 	),
 	'max_file_size' => array(
-		'prompt' => _('Maximum JPEG/PNG image file size'),
-		'desc' => _("You can optionally limit the filesize of your JPEG/PNG images on upload to Gallery.") . 
-			'<br><span class="attention">'. _("Warning:") . '</span> '. 
-			_("Enabling this feature will leave you <b>without an original quality image</b> in your Gallery. Set the default target filesize (in kilobytes).  Including a value may slow down file uploads, but will speed up page viewing time especially for people with dialup connections. Set to 0 if you don't want to restrict filesize."),
+		'prompt' => gTranslate('config','Maximum JPEG/PNG image file size'),
+		'desc' => gTranslate('config',"You can optionally limit the filesize of your JPEG/PNG images on upload to Gallery.") .
+		  '<br><span class="attention">'. gTranslate('config',"Warning:") . '</span> '.
+		  gTranslate('config',"Enabling this feature will leave you <b>without an original quality image</b> in your Gallery. Set the default target filesize (in kilobytes).  Including a value may slow down file uploads, but will speed up page viewing time especially for people with dialup connections. Set to 0 if you don't want to restrict filesize."),
 		'value' => 0,
 		'optional' => 1,
 		'type' => 'text'
 	),
 	'useOriginalFileNames' => array(
-		'prompt' => _("Preserve Names"),
-                'desc' => _("When uploading images to Gallery, should we preserve the original names?  If you select <i>no</i>, Gallery will assign a new name for each photo or movie that gets uploaded."),
-                'choices' => array('yes' => _("yes"), 'no' => _("no")),
-                'value' => "yes",
+		'prompt' => gTranslate('config',"Preserve Names"),
+		'desc' => gTranslate('config',"When uploading images to Gallery, should we preserve the original names?  If you select <i>no</i>, Gallery will assign a new name for each photo or movie that gets uploaded."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes',
 	),
 	'add_to_beginning' => array(
-		'prompt' => _("Add to beginning"),
-		'desc' => _("New images added to beginning rather than end of albums."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
+		'prompt' => gTranslate('config',"Add to beginning"),
+		'desc' => gTranslate('config',"New images added to beginning rather than end of albums."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
 	),
 	'fit_to_window' => array(
-		'prompt' => _("Fit-to-window"),
-		'desc' => _("When viewing photos which don't have an intermediate version, Gallery can automatically resize the image to fit the viewer's browser window (using JavaScript).  This may not work in embedded environments such as Nuke."),
-		'value' => "no",
-		'choices' => array('yes' => _("yes"), 'no' => _("no"))
+		'prompt' => gTranslate('config',"Fit-to-window"),
+		'desc' => gTranslate('config',"When viewing photos which don't have an intermediate version, Gallery can automatically resize the image to fit the viewer's browser window (using JavaScript).  This may not work in embedded environments such as Nuke."),
+		'value' => 'no',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		)
 	),
 	'use_fullOnly' => array(
-		'prompt' => _("Visitor size prefs"),
-		'desc' => _("Offer visitors the choice of always viewing the full sized version of an image instead of the intermediate size.  This setting only lasts for the visitor's session."),
-		'value' => "no",
-		'choices' => array('yes' => _("yes"), 'no' => _("no"))
+		'prompt' => gTranslate('config',"Visitor size prefs"),
+		'desc' => gTranslate('config',"Offer visitors the choice of always viewing the full sized version of an image instead of the intermediate size.  This setting only lasts for the visitor's session."),
+		'value' => 'no',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		)
 	),
 	'group3_end' => array (
 		'type' => 'group_end',
 	),
 	'group4' => array (
 		'type' => 'group_start',
-		'name' => 'group_options',
+		'name' => 'group_options2',
+		'title' => gTranslate('config',"Options"),
 		'default' => 'none',
-		'title' => _("Options")
 	),
+	/* old .. needs to be fixed */
 	'print_photos' => array(
-		'prompt' => _("Printing Services"),
- 		'desc' => _("Allow visitors to print photos directly from the album.  Fotoserve is based in the United Kindom and Fotokasten is a print service based in Germany so they are good for the European market. EZ Prints, PhotoWorks and Shutterfly are based in the United States. mPUSH is a service that allows you to send photos to cellular phones worldwide. All services will give a small donation to the Gallery project for every print you make. Using these services is a great way for you to help support this free software."),
+		'prompt' => gTranslate('config',"Printing Services"),
+		'desc' => gTranslate('config',"Allow visitors to print photos directly from the album.  Fotoserve is based in the United Kindom and Fotokasten is a print service based in Germany so they are good for the European market. EZ Prints, PhotoWorks and Shutterfly are based in the United States. mPUSH is a service that allows you to send photos to cellular phones worldwide. All services will give a small donation to the Gallery project for every print you make. Using these services is a great way for you to help support this free software."),
 		'multiple_choices' => makeMultipleChoiceContent($services),
-/* old .. needs to be fixed */
 		'value' => array(
 			'fotokasten' => array(
-				'checked' => true),
+				'checked' => true
+			),
 			'photoaccess' => array(
-				'checked' => true),
+				'checked' => true
+			),
 			'shutterfly' => array(
-				'checked' => true),
+				'checked' => true
+			),
 			'fotoserve' => array(
-				'checked' => true),
+				'checked' => true
+			),
 			'mpush' => array(
 				'checked' => true,
-				'account' => 'gallery'),
+				'account' => 'gallery'
+			),
 		),
 		'optional' => true
 	),
 	'mPUSHAccount' => array(
-		'prompt' => _("Account for the mPUSH service"),
-		'desc' => sprintf(_("If you want to use mPUSH cellular photo service you can either use your own account, or leave this to 'gallery'. Visit this link to %screate your own account%s."), 
-				'<a href="http://mpush.msolutions.cc/safe.php?p=Register&ref=gallery" target="_blank">', '</a>'),
+		'prompt' => gTranslate('config',"Account for the mPUSH service"),
+		'desc' => sprintf(gTranslate('config',"If you want to use mPUSH cellular photo service you can either use your own account, or leave this to 'gallery'. Visit this link to %screate your own account%s."),
+		  '<a href="http://mpush.msolutions.cc/safe.php?p=Register&ref=gallery" target="_blank">', '</a>'),
 		'value' => 'gallery',
 		'type' => 'text',
 	),
 	'ecards' => array(
-                'prompt' => _("Enable Ecards ?"),
-                'desc' => _("Set this to 'yes' to allow users to send a picure as eCard via eMail") . '<br>'.
-			'<span class="attention">' . _("This option requires the Email feature to be enabled.") . '</span>',
-                'choices' => array("yes" => _("yes"), "no" => _("no")),
-                'value' => 'no'
-        ),
+		'prompt' => gTranslate('config',"Enable Ecards ?"),
+		'desc' => gTranslate('config',"Set this to 'yes' to allow users to send a picure as eCard via eMail") . '<br>'.
+		  '<span class="attention">' . gTranslate('config',"This option requires the Email feature to be enabled.") . '</span>',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'
+	),
 	'returnto' => array(
-		'prompt' => _("Gallery Link"),
-		'desc' => _("Display a link navigation from your album to the top level Gallery link within the album?  If you turn this feature off, the user will not be able to navigate out of the album.  This is only useful when you want to embed an album within a website and not allow users to (easily) view the other albums in the gallery."),
-		'value' => "yes",
-		'choices' => array('yes' => _("yes"), 'no' => _("no"))
+		'prompt' => gTranslate('config',"Gallery Link"),
+		'desc' => gTranslate('config',"Display a link navigation from your album to the top level Gallery link within the album?  If you turn this feature off, the user will not be able to navigate out of the album.  This is only useful when you want to embed an album within a website and not allow users to (easily) view the other albums in the gallery."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes',
 	),
 	'defaultPerms' => array(
-		'prompt' => _("Default Album Permissions"),
-		'desc' => _("Defines the default set of permissions for an album.  Specifically, who can see the album, and view its photos."),
+		'prompt' => gTranslate('config',"Default Album Permissions"),
+		'desc' => gTranslate('config',"Defines the default set of permissions for an album.  Specifically, who can see the album, and view its photos."),
 		'choices' => array(
-				'everybody' => _("Everybody"), 
-				'loggedin' => _("Logged-In Users"),
-				'nobody' => _("Nobody")
+			'everybody' => gTranslate('config',"Everybody"),
+			'loggedin' => gTranslate('config',"Logged-In Users"),
+			'nobody' => gTranslate('config',"Nobody")
 		),
-		'value' => "everybody",
+		'value' => 'everybody',
 	),
 	'group4_end' => array (
 		'type' => 'group_end',
@@ -1467,27 +1694,33 @@
 		'type' => 'group_start',
 		'name' => 'group_displayed_data',
 		'default' => 'none',
-		'title' => _("Data displayed")
+		'title' => gTranslate('config',"Data displayed")
 	),
 	'display_clicks' => array(
-		'prompt' => _("Click counts"),
-		'desc' => _("Display click counts within Albums?"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes",
+		'prompt' => gTranslate('config',"Click counts"),
+		'desc' => gTranslate('config',"Display click counts within Albums?"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes',
 	),
 	'extra_fields' => array(
-		'prompt' => _("Custom Fields"),
+		'prompt' => gTranslate('config',"Custom Fields"),
 		'optional' => 1,
-		'desc' => _("Custom fields that are available to describe each image.  They should be separated by commas.  E.g. <i>Description, Location, Film Type</i>"),
+		'desc' => gTranslate('config',"Custom fields that are available to describe each image.  They should be separated by commas.  E.g. <i>Description, Location, Film Type</i>"),
 		'attrs' => array('size' => 80),
-		'type' => "text",
-		'value' => "Description"
+		'type' => 'text',
+		'value' => 'Description'
 	),
 	'showDimensions' => array(
-		'prompt' => _("Display clickable image dimensions"),
-		'desc' => _("Display clickable image dimensions beneath the thumbnails.  Will show dimensions for resized images (if any) first, then for the full image, depending on album settings user permissions.  You may click on these instead of the thumbnail to either image."),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => gTranslate('config',"Display clickable image dimensions"),
+		'desc' => gTranslate('config',"Display clickable image dimensions beneath the thumbnails.  Will show dimensions for resized images (if any) first, then for the full image, depending on album settings user permissions.  You may click on these instead of the thumbnail to either image."),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'
 	),
 	'group5_end' => array (
 		'type' => 'group_end',
@@ -1496,25 +1729,33 @@
 		'type' => 'group_start',
 		'name' => 'group_itemOwner',
 		'default' => 'none',
-		'title' => _("Item Owner")
+		'title' => gTranslate('config',"Item Owner")
 	),
 	'item_owner_modify' => array(
-		'prompt' => _("Photo owner modification"),
-		'desc' => _("Allow photo owners to edit and rotate/flip their own photos?"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes",
+		'prompt' => gTranslate('config',"Photo owner modification"),
+		'desc' => gTranslate('config',"Allow photo owners to edit and rotate/flip their own photos?"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes',
 	),
 	'item_owner_delete' => array(
-		'prompt' => _("Photo owner deletion"),
-		'desc' => _("Allow photo owners to delete their own photos?"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes",
+		'prompt' => gTranslate('config',"Photo owner deletion"),
+		'desc' => gTranslate('config',"Allow photo owners to delete their own photos?"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")),
+		'value' => 'yes',
 	),
 	'item_owner_display' => array(
-		'prompt' => _("Photo owner display"),
-		'desc' => _("Display the name of photo owners with the caption?"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
+		'prompt' => gTranslate('config',"Photo owner display"),
+		'desc' => gTranslate('config',"Display the name of photo owners with the caption?"),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
 	),
 	'group6_end' => array (
 		'type' => 'group_end'
@@ -1523,95 +1764,107 @@
 		'type' => 'group_start',
 		'name' => 'group_polling',
 		'default' => 'none',
-		'title' => _("Polling configuration"),
-		'desc' => 
-			sprintf(_("It allows your visitors to vote for or rate the contents of an album.  You set defaults for polling here, which will apply to new albums, and to all existing albums when you first upgrade to version %s."),
-				"1.4.1") .
-			"<p>" .
-			_("In each album, voting can be switched off, restricted to logged in users or open to all visitors.") 
-			. "<p>" .
-			sprintf(_("There are two sorts of polls: %s, which allows voters to chose their favourites as first, second, third etc., and %s, which allows voters to rate any or all of the images without restriction.  %s is like a film review where all the images can get (for example) 5 points, while %s is useful in scoring competitions."),
-				"<b>"._("Rank")."</b>",
-				"<b>"._("Critique")."</b>",
-				_("Critique"),
-				_("Rank")) 
+		'title' => gTranslate('config',"Polling configuration"),
+		'desc' =>
+		  sprintf(gTranslate('config',"It allows your visitors to vote for or rate the contents of an album.  You set defaults for polling here, which will apply to new albums, and to all existing albums when you upgraded from an earlier version then %s."),
+		  '1.4.1') .
+		  '<p>' .
+		  gTranslate('config',"In each album, voting can be switched off, restricted to logged in users or open to all visitors.")
+		  .'<p>' .
+		  sprintf(gTranslate('config',"There are two sorts of polls: %s, which allows voters to chose their favourites as first, second, third etc., and %s, which allows voters to rate any or all of the images without restriction.  %s is like a film review where all the images can get (for example) 5 points, while %s is useful in scoring competitions."),
+		  '<b>'. gTranslate('config',"Rank") .'</b>',
+		  '<b>'. gTranslate('config',"Critique") .'</b>',
+		  gTranslate('config',"Critique"),
+		  gTranslate('config',"Rank")
+		  )
 	),
 	'voter_class' => array(
-		'prompt' => _("Voter class"),
-		'desc' => _("Voting is available to:") . 
-			"<dl>"
-			. "<dt>" . _("Nobody")."</dt>"
-			. "<dd>" . _("Voting is off.") ."</dd>"
-			. "<dt>" . _("Everybody") . "</dt>"
-			. "<dd>" . _("Anyone can vote.  Votes are recorded against session ID.") ."</dd>"
-			. "<dt>" . _("Logged in") ."</dt>"
-			. "<dd>" . _("Registered users can vote.  Votes are recorded against User ID, and voters can come back and change their choices.") . "</dd>"
-			. "</dl>" ,
-		'choices' => array('Nobody' => _("Nobody"), 
-			'Everybody' => _("Everybody"), 
-			'Logged in' => _("Logged in")),
-		'value' => "Nobody"),
+		'prompt' => gTranslate('config',"Voter class"),
+		'desc' => gTranslate('config',"Voting is available to:") .
+			'<dl>'
+			.'<dt>'. gTranslate('config',"Nobody").'</dt>'
+			.'<dd>'. gTranslate('config',"Voting is off.") .'</dd>'
+			.'<dt>'. gTranslate('config',"Everybody") . '</dt>'
+			.'<dd>'. gTranslate('config',"Anyone can vote.  Votes are recorded against session ID.") .'</dd>'
+			.'<dt>'. gTranslate('config',"Logged in") .'</dt>'
+			.'<dd>'. gTranslate('config',"Registered users can vote.  Votes are recorded against User ID, and voters can come back and change their choices.") . '</dd>'
+			.'</dl>' ,
+		'choices' => array(
+			'Nobody' => gTranslate('config',"Nobody"),
+			'Everybody' => gTranslate('config',"Everybody"),
+			'Logged in' => gTranslate('config',"Logged in")
+		),
+		'value' => 'Nobody'
+		),
 	'poll_type' => array(
-		'prompt' => _("Poll type"),
-	       	'desc' => _("Gallery offers two sorts of polls for voting for images.  See above for a more detailed explanation.") . 
-			"<dl>"
-			. "<dt>" . _("Rank")."</dt>"
-			. "<dd>" . _("Users have a set of votes which they can allocate to the images.") . "</dd>"
-			. "<dt>" . _("Critique")."</dt>"
-			. "<dd>" . _("Enables users to give all images points without restriction.") . "</dd>"
-			. "</dl>" ,
-		'choices' => array('rank' => _("Rank"), 
-			'critique' => _("Critique")),
-		'value' => "critique"
-			),
+		'prompt' => gTranslate('config',"Poll type"),
+		'desc' => gTranslate('config',"Gallery offers two sorts of polls for voting for images.  See above for a more detailed explanation.") .
+		'<dl>'
+		.'<dt>'. gTranslate('config',"Rank").'</dt>'
+		.'<dd>'. gTranslate('config',"Users have a set of votes which they can allocate to the images.") . '</dd>'
+		.'<dt>'. gTranslate('config',"Critique").'</dt>'
+		.'<dd>'. gTranslate('config',"Enables users to give all images points without restriction.") . '</dd>'
+		.'</dl>' ,
+		'choices' => array(
+			'rank' => gTranslate('config',"Rank"),
+			'critique' => gTranslate('config',"Critique")
+		),
+		'value' => 'critique'
+	),
 	'poll_scale' => array(
-		'prompt' => _("Number of choices"),
-		'desc' => _("Number of choices that will be available to voters as radio buttons or in a pulldown menu."),
+		'prompt' => gTranslate('config',"Number of choices"),
+		'desc' => gTranslate('config',"Number of choices that will be available to voters as radio buttons or in a pulldown menu."),
 		'value' => 3,
 		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9)
-			),
+	),
 	'poll_hint' => array(
-		'prompt' => _("Vote hint"),
-		'desc' => _("This is displayed above the voting options under each image."),
-		'type' => "text",
-		'value' => _("Vote for this image"),
+		'prompt' => gTranslate('config',"Vote hint"),
+		'desc' => gTranslate('config',"This is displayed above the voting options under each image."),
+		'type' => 'text',
+		'value' => gTranslate('config',"Vote for this image"),
 		'attrs' => array('size' => 50),
 		'optional' => 1
-			),
+	),
 	'poll_show_results' => array(
-		'prompt' => _("Show vote results"),
-		'desc' => sprintf(_("Display a summary and graph on the album page of images that have received the highest votes, and provide a link to the full results.  If this option is %s, results of voting will only be available to admins and album owners."),
-			_("no")),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no",
-			), 
+		'prompt' => gTranslate('config',"Show vote results"),
+		'desc' => sprintf(gTranslate('config',"Display a summary and graph on the album page of images that have received the highest votes, and provide a link to the full results.  If this option is %s, results of voting will only be available to admins and album owners."),
+		  gTranslate('config',"No")),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no',
+	),
 	'poll_num_results' => array(
-		'prompt' => _("Number of results displayed"),
-		'desc' => sprintf(_("If %s is %s, display a graph showing this many top results.  (Full results will be available on a linked page.)"),
-			'"'. _("Show vote results").'"' ,
-			'"'. _("yes").'"'),
-		'value' => 3,
-		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9)),
-
+		'prompt' => gTranslate('config',"Number of results displayed"),
+		'desc' => sprintf(gTranslate('config',"If %s is %s, display a graph showing this many top results.  (Full results will be available on a linked page.)"),
+		  '"'. gTranslate('config',"Show vote results").'"' ,
+		  '"'. gTranslate('config',"Yes").'"'),
+		  'value' => 3,
+		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9)
+	),
 	'poll_orientation' => array(
-		'prompt' => _("Orientation of vote choices?"),
-		'desc' => _("Rank poll choices can be displayed beside each other (horizontally) or underneath each other (vertically).  Has no effect on critique voting which is a pulldown menu."),
-		'value' => "vertical",
+		'prompt' => gTranslate('config',"Orientation of vote choices?"),
+		'desc' => gTranslate('config',"Rank poll choices can be displayed beside each other (horizontally) or underneath each other (vertically).  Has no effect on critique voting which is a pulldown menu."),
+		'value' => 'vertical',
 		'choices' => array(
-			'horizontal' => _("Horizontal"), 
-			'vertical' => _("Vertical"))) ,
+			'horizontal' => gTranslate('config',"Horizontal"),
+			'vertical' => gTranslate('config',"Vertical"))
+	) ,
 	'poll_nv_pairs' => array(
-		'prompt' => _("Vote words and values"), 
-		'desc' => _("This allows you to configure the actual text that will be displayed for each voting option, plus the number of points that option is worth."),
+		'prompt' => gTranslate('config',"Vote words and values"),
+		'desc' => gTranslate('config',"This allows you to configure the actual text that will be displayed for each voting option, plus the number of points that option is worth."),
 		'value' => array (
-			array('name' => _("Excellent"), 'value' => 5),
-			array('name' => _("Very Good"), 'value' => 4),
-			array('name' => _("Good"), 'value' => 3),
-			array('name' => _("Average"), 'value' => 2), 
-			array('name' => _("Poor"), 'value' => 1)),
-		'type' => "nv_pairs",
-		'verify-func' => "check_poll_nv_pairs",
-		'size' => 9),
+			array('name' => gTranslate('config',"Excellent"), 'value' => 5),
+			array('name' => gTranslate('config',"Very Good"), 'value' => 4),
+			array('name' => gTranslate('config',"Good"), 'value' => 3),
+			array('name' => gTranslate('config',"Average"), 'value' => 2),
+			array('name' => gTranslate('config',"Poor"), 'value' => 1)
+		),
+		'type' => 'nv_pairs',
+		'verify-func' => 'check_poll_nv_pairs',
+		'size' => 9
+	),
 	'group7_end' => array (
 		'type' => 'group_end',
 	),
@@ -1619,43 +1872,49 @@
 		'type' => 'group_start',
 		'name' => 'group_albumSlidshow',
 		'default' => 'none',
-		'title' => _("Album Slideshow"),
-		'desc' => _("These settings do not apply to the low tech slideshow.")
+		'title' => gTranslate('config',"Album Slideshow"),
+		'desc' => gTranslate('config',"These settings do not apply to the low tech slideshow.")
 	),
 	'slideshow_type' => array(
-	      	'prompt' => _("Slideshow Type"),
-	       	'desc' => "<dl>"
-			. "<dt>" . _("Off") ."</dt>"
-			. "<dd>" . _("No slideshow link will appear.") . "</dd>"
-			. "<dt>" . _("Ordered") . "</dt>"
-			. "<dd>" . _("Images will display in the same order as they appear in the Gallery.") . "</dd>"
-			. "<dt>" . _("Random") . "</dt>"
-			. "<dd>" . _("Images will appear in a random order.") . "</dd>"
-			. "</dl>",
-	      	'choices' => array(
-		       	'off' => _("Off"),
-		       	'ordered' => _("Ordered"),
-		       	'random' => _("Random"),
-			),
-	       	'value' => "ordered",
+		'prompt' => gTranslate('config',"Slideshow Type"),
+		'desc' => '<dl>'
+		.'<dt>'. gTranslate('config',"Off") .'</dt>'
+		.'<dd>'. gTranslate('config',"No slideshow link will appear.") . '</dd>'
+		.'<dt>'. gTranslate('config',"Ordered") . '</dt>'
+		.'<dd>'. gTranslate('config',"Images will display in the same order as they appear in the Gallery.") . '</dd>'
+		.'<dt>'. gTranslate('config',"Random") . '</dt>'
+		.'<dd>'. gTranslate('config',"Images will appear in a random order.") . '</dd>'
+		.'</dl>',
+		'choices' => array(
+			'off' => gTranslate('config',"Off"),
+			'ordered' => gTranslate('config',"Ordered"),
+			'random' => gTranslate('config',"Random"),
+		),
+		'value' => 'ordered',
 	),
 	'slideshow_recursive' => array(
-		'prompt' => _("Recursive slideshow"),
-		'desc' => sprintf(_("Set to %s if you want to include images in sub albums as part of the slideshow."), "<b>"._("yes")."</b>"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "no"
+		'prompt' => gTranslate('config',"Recursive slideshow"),
+		'desc' => sprintf(gTranslate('config',"Set to %s if you want to include images in sub albums as part of the slideshow."), '<b>'.gTranslate('config',"Yes").'</b>'),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'no'
 	),
 	'slideshow_loop' => array(
-		'prompt' => _("Allow slideshow to loop"),
-		'desc' => sprintf(_("This option will allow visitors to have your slideshow repeat until they close the window or go to another page.  Set it to %s if you want to save bandwidth."), "<b>"._("no")."</b>"),
-		'choices' => array('yes' => _("yes"), 'no' => _("no")),
-		'value' => "yes"
+		'prompt' => gTranslate('config',"Allow slideshow to loop"),
+		'desc' => sprintf(gTranslate('config',"This option will allow visitors to have your slideshow repeat until they close the window or go to another page.  Set it to %s if you want to save bandwidth."), '<b>'.gTranslate('config',"No").'</b>'),
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		),
+		'value' => 'yes'
 	),
 	'slideshow_length' => array(
-		'prompt' => _("Slideshow length"),
-		'desc' => _("Number of images to display in slideshow.  Set to 0 or blank to display all images.  Set to a number if slideshow is random and you want to display only a selection of the images."),
-		'type' => "text",
-		'value' => "0",
+		'prompt' => gTranslate('config',"Slideshow length"),
+		'desc' => gTranslate('config',"Number of images to display in slideshow.  Set to 0 or blank to display all images.  Set to a number if slideshow is random and you want to display only a selection of the images."),
+		'type' => 'text',
+		'value' => 0,
 		'optional' => 1,
 		'attrs' => array('size' => 5)
 	),
@@ -1666,66 +1925,81 @@
 		'type' => 'group_start',
 		'name' => 'group_photoMicroNav',
 		'default' => 'none',
-		'title' => _("Micro Thumb Photo Navigation"),
-		'desc' => _("These settings apply to the micro-thumb photo navigation system.  The micro thumbs are only visible when viewing individual images.")
+		'title' => gTranslate('config',"Microthumb Photo Navigation"),
+		'desc' => gTranslate('config',"These settings apply to the microthumb photo navigation system.  The microthumbs are only visible when viewing individual images.")
 	),
 	'nav_thumbs' => array(
-		'prompt' => _("Micro Thumb Photo Navigation"),
-		'desc' => _("Uses micro-thumbnails for photo navigation. This creates a navigation panel with tiny thumbnails of the images around the photo you are viewing.  You can also choose both to display the micro thumb navigation system AND the old style navigation system."),
-		'value' => "no",
-		'choices' => array('yes' => _("yes"), 'no' => _("no"), 'both' => _("both"))
+		'prompt' => gTranslate('config',"Microthumb Photo Navigation"),
+		'desc' => gTranslate('config',"Uses microthumbs for photo navigation. This creates a navigation panel with tiny thumbnails of the images around the photo you are viewing.  You can also choose both to display the microthumb navigation system AND the old style navigation system."),
+		'value' => 'no',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No"),
+			'both' => gTranslate('config',"both")
+		)
 	),
 	'nav_thumbs_style' => array(
-		'prompt' => _("Micro Thumb Photo Navigation"),
-                        'desc' => "<dl>"
-                                . "<dt>" . _("Fixed") ."</dt>"
-                                . "<dd>" . _("Displays prev+next groups of thumbs, changing only to display next group of thumbs.") . "</dd>"
-                                . "<dt>" . _("Dynamic") . "</dt>"
-                                . "<dd>" . _("Displays previos & next images, with current image between.") . "</dd>"
-                                . "</dl>",
-		'value' => "fixed",
-		'choices' => array('fixed' => _("Fixed"), 'dynamic' => _("Dynamic"))
+		'prompt' => gTranslate('config',"Microthumb Photo Navigation"),
+		'desc' => '<dl>'
+		  .'<dt>'. gTranslate('config',"Fixed") .'</dt>'
+		  .'<dd>'. gTranslate('config',"Displays prev+next groups of thumbs, changing only to display next group of thumbs.") . '</dd>'
+		  .'<dt>'. gTranslate('config',"Dynamic") . '</dt>'
+		  .'<dd>'. gTranslate('config',"Displays previos & next images, with current image between.") . '</dd>'
+		  .'</dl>',
+		'value' => 'fixed',
+		'choices' => array(
+			'fixed' => gTranslate('config',"Fixed"),
+			'dynamic' => gTranslate('config',"Dynamic")
+		)
 	),
 	'nav_thumbs_first_last' => array(
-		'prompt' => _("Show Micro Thumb for First/Last"),
-		'desc' => _("This allows you to turn on and off the display of the first and last micro-thumb.  Since these two images are always the same, some might find that it is not very useful and would rather display more next/previous thumbs."),
-		'value' => "no",
-		'choices' => array('yes' => _("yes"), 'no' => _("no"))
+		'prompt' => gTranslate('config',"Show Microthumb for First/Last"),
+		'desc' => gTranslate('config',"This allows you to turn on and off the display of the first and last microthumb.  Since these two images are always the same, some might find that it is not very useful and would rather display more next/previous thumbs."),
+		'value' => 'no',
+		'choices' => array(
+			'yes' => gTranslate('config',"Yes"),
+			'no' => gTranslate('config',"No")
+		)
 	),
 	'nav_thumbs_prev_shown' => array(
-		'prompt' => _("Number of Previous Micro Thumbs"),
-		'desc' => _("This is the number of previous micro thumbs on the screen at a time.  You might prefer to show fewer previous micro thumbs and more next micro thumbs."),
-		'value' => "no",
-		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4,
-				5 => 5, 6 => 6, 6 => 6, 7 => 7,
-				8 => 8, 9 => 9, 10 => 10)
+		'prompt' => gTranslate('config',"Number of Previous Microthumbs"),
+		'desc' => gTranslate('config',"This is the number of previous microthumbs on the screen at a time.  You might prefer to show fewer previous microthumbs and more next microthumbs."),
+		'value' => 1,
+		'choices' => array(
+			1 => 1, 2 => 2, 3 => 3, 4 => 4,
+			5 => 5, 6 => 6, 6 => 6, 7 => 7,
+			8 => 8, 9 => 9, 10 => 10
+		)
 	),
 	'nav_thumbs_next_shown' => array(
-		'prompt' => _("Number of Next Micro Thumbs"),
-		'desc' => _("This is the number of next micro thumbs on the screen at a time.  You might prefer to show fewer previous micro thumbs and more next micro thumbs."),
-		'value' => "no",
-		'choices' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4,
-				5 => 5, 6 => 6, 6 => 6, 7 => 7,
-				8 => 8, 9 => 9, 10 => 10)
+		'prompt' => gTranslate('config',"Number of Next Microthumbs"),
+		'desc' => gTranslate('config',"This is the number of next microthumbs on the screen at a time.  You might prefer to show fewer previous microthumbs and more next microthumbs."),
+		'value' => 1,
+		'choices' => array(
+			1 => 1, 2 => 2, 3 => 3, 4 => 4,
+			5 => 5, 6 => 6, 6 => 6, 7 => 7,
+			8 => 8, 9 => 9, 10 => 10
+		)
 	),
 	'nav_thumbs_location' => array(
-		'prompt' => _("Location of Micro Thumb Navigation"),
-		'desc' => _("Displays the micro-thumb navigation bar at the Top, Bottom or Both of the photo viewing page.  Since the micro thumb navigation system is larger than the original navigation system, you may want to display it at only the top or bottom to conserve space usage."),
-		'value' => "top",
-		'choices' => array(
-			'top' => _("Top"), 
-			'both' => _("Both"), 
-			'bottom' => _("Bottom"))
+		'prompt' => gTranslate('config',"Location of Microthumb Navigation"),
+		'desc' => gTranslate('config',"Displays the microthumb navigation bar at the Top, Bottom or Both of the photo viewing page.  Since the microthumb navigation system is larger than the original navigation system, you may want to display it at only the top or bottom to conserve space usage."),
+		'value' => 'top',
+		'choices' => array(
+			'top' => gTranslate('config',"Top"),
+			'both' => gTranslate('config',"Both"),
+			'bottom' => gTranslate('config',"Bottom")
+		)
 	),
 	'nav_thumbs_size' => array(
-		'prompt' => _("Height of Micro Thumbs"),
-		'desc' => _("The size of micro thumbnails will determine how clear the images are as well as how much room they take up.  This value is the height and is in pixels.  45 is a reasonable value for viewing at 1024x768."),
+		'prompt' => gTranslate('config',"Height of Microthumbs"),
+		'desc' => gTranslate('config',"The size of microthumbs will determine how clear the images are as well as how much room they take up.  This value is the height and is in pixels.  45 is a reasonable value for viewing at 1024x768."),
 		'value' => '45',
 		'type' => 'text'
 	),
 	'nav_thumbs_current_bonus' => array(
-		'prompt' => _("Bonus to Current Micro Thumb's Size"),
-		'desc' => _("This is the bonus in pixels to the size of the current micro-thumb.  This creates a nice look and a value of 10-15 is reasonable.  Zero (0) and negative numbers (-10) are also valid here.  Zero (0) will result in the current thumb being of identical size to all the other micro thumbs and a negative value will result in a smaller micro thumb."),
+		'prompt' => gTranslate('config',"Bonus to Current Microthumb's Size"),
+		'desc' => gTranslate('config',"This is the bonus in pixels to the size of the current microthumb.  This creates a nice look and a value of 10-15 is reasonable.  Zero (0) and negative numbers (-10) are also valid here.  Zero (0) will result in the current thumb being of identical size to all the other microthumbs and a negative value will result in a smaller microthumb."),
 		'value' => '15',
 		'type' => 'text'
 	),
@@ -1736,32 +2010,31 @@
 		'type' => 'group_start',
 		'name' => 'group_frames',
 		'default' => 'none',
-		'title' => _("Frames"),
-		'desc' => sprintf(_("Each image (thumbnails, resized and full sized) in %s can have a frame.  The following styles available:"),Gallery()) .
+		'title' => gTranslate('config',"Frames"),
+		'desc' => sprintf(gTranslate('config',"Each image (thumbnails, resized and full sized) in %s can have a frame.  The following styles available:"),Gallery()) .
 		available_frames(true),
 	),
 	'album_frame' => array(
-		'prompt' => _("Subalbum frames"),
-		'desc' => _("This frame will appear around the thumbnail image representing a subalbum."),
+		'prompt' => gTranslate('config',"Subalbum frames"),
+		'desc' => gTranslate('config',"This frame will appear around the thumbnail image representing a subalbum."),
 		'choices' => available_frames(),
-		'value' => "simple_book"
+		'value' => 
+		'simple_book'
 	),
 	'thumb_frame' => array(
-		'prompt' => _("Frame around thumbs"),
-		'desc' => _("This frame will appear around the thumbnail image representing a photo or movie."),
+		'prompt' => gTranslate('config',"Frame around thumbs"),
+		'desc' => gTranslate('config',"This frame will appear around the thumbnail image representing a photo or movie."),
 		'choices' => available_frames(),
-		'value' => "solid"
+		'value' => 'solid'
 	),
-	
 	'image_frame' => array(
-		'prompt' => _("Frame around images"),
-		'desc' => _("This frame will appear around fulled sized and resized photos."),
+		'prompt' => gTranslate('config',"Frame around images"),
+		'desc' => gTranslate('config',"This frame will appear around fulled sized and resized photos."),
 		'choices' => available_frames(),
-		'value' => "solid"
+		'value' => 'solid'
 	),
 	'group_frames_end' => array (
 		'type' => 'group_end',
 	),
 );
-
-?>
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/setup/confirm.inc gallery-1.5.2/setup/confirm.inc
--- gallery-1.5.1/setup/confirm.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/confirm.inc	2006-01-10 06:30:53.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: confirm.inc,v 1.104.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: confirm.inc,v 1.108.2.3 2006/01/10 05:30:53 jenst Exp $
  */
 ?>
 
@@ -36,29 +36,29 @@
 $docs = galleryDocs() ? '<a href="'. galleryDocs() .'">'. _("documentation") .'</a>' : _("documentation");
 
 $error = 0;
-$viewheader = "";
-$outfile_list = array("config.php" => false, ".htaccess" => true);
+$viewheader = '';
+$outfile_list = array('config.php' => false, '.htaccess' => true);
 foreach ($outfile_list as $outfile => $optional) {
 	if (!fs_file_exists(GALLERY_CONFDIR . "/$outfile") && !$optional) {
 		$error++;
 		$viewheader .= '<p>'. gallery_error(sprintf(_("You must create an empty file named %s and chmod it 777 before proceeding.  See the %s for more details."), "<i><b>$outfile</b></i>", $docs) ."</p>\n");
-		${str_replace('.', '', $outfile) . "_file"} = 0;
+		${str_replace('.', '', $outfile) . '_file'} = 0;
 	}
-	elseif ($fd = @fs_fopen(GALLERY_CONFDIR ."/$outfile", "a")) {
+	elseif ($fd = @fs_fopen(GALLERY_CONFDIR ."/$outfile", 'a')) {
 		fclose($fd);
-		${str_replace('.', '', $outfile) . "_file"} = 1;
+		${str_replace('.', '', $outfile) . '_file'} = 1;
 	}
 	elseif (!fs_file_exists(GALLERY_CONFDIR . "/$outfile") && $optional) {
 		$viewheader .= gallery_error(sprintf(_("File %s is optional, however some %s features will be disabled unless you create an empty file named %s and chmod it to 777 before proceeding.  See the %s for more details."), "<i><b>$outfile</b></i>", Gallery(), "<i><b>$outfile</b></i>", $docs));
-		${str_replace('.', '', $outfile) . "_file"} = 0;
+		${str_replace('.', '', $outfile) . '_file'} = 0;
 	} else {
 		$error++;
-		$viewheader .= gallery_error(sprintf(_("File %s is not writable by the webserver - chmod it 777 before proceeding.  See %s for more details."), "<i><b>$outfile</b></i>", $docs)) . "</p>\n";
-		${str_replace('.', '', $outfile) . "_file"} = 1;
+		$viewheader .= '<br>'. gallery_error(sprintf(_("File %s is not writable by the webserver - chmod it 777 before proceeding.  See %s for more details."), "<i><b>$outfile</b></i>", $docs)) . "</p>\n";
+		${str_replace('.', '', $outfile) . '_file'} = 1;
 	}
 }
 
-$header = "<" . "?php\n";
+$header = "<?php\n";
 
 $header .= "/* \n"
         ." * Protect against very old versions of 4.0 (like 4.0RC1) which  \n"
@@ -84,7 +84,7 @@
 		if (empty($$dep) && empty($gallery->session->configForm->$dep)) {
 			$use = 0;
 			if ($cause) {
-				$cause .= ", ";
+				$cause .= ', ';
 			}
 			$cause .= _("missing") ." <i>$dep</i> -- " . _("it's optional");
 		}
@@ -101,20 +101,16 @@
 $gallery->session->configData .= "\n";
 $gallery->session->configData .= "/* Constants */\n";
 
-$graphtool = "";
-$graphpath = "";
+$graphtool = '';
+$graphpath = '';
 $graphtest = array();
 
+$continueTypes = array('block_start', 'block_end', 'group_start', 'group_end', 'subgroup', 'subgroup_end');
 foreach ($constants as $key => $val) {
 	
-	if (isset($val["enabled"]) && $val["enabled"] == "no") continue;
+	if (isset($val['enabled']) && $val['enabled'] == 'no') continue;
 
-	if (isset($val["type"]) && 
-			($val["type"] == "block_start" || 
-			 $val["type"] == "block_end" ||
-			 $val["type"] == "separator" ||
-			 $val["type"] == "group_start" ||
-			 $val["type"] == "group_end")) { 
+	if (isset($val['type']) && in_array($val['type'], $continueTypes)) {
 		continue;
 	}
 
@@ -129,7 +125,6 @@
 ** The former solution were to do create a string which is like the value 
 ** of $key and put it in $real via eval().
 ** This also seemed not to work.
-** 02/2004, Jens Tkotz
 ** 06/2004, Jens Tkotz 
 */
 	if ($bracketStart > 0 && $bracketEnd > 0) {
@@ -141,56 +136,56 @@
 	} elseif (isset($gallery->session->configForm->$key)) {
 		$real = $gallery->session->configForm->$key;
 	} else {
-		$real = "";
+		$real = '';
         }
 
-	if (get_magic_quotes_gpc()) {
+	if (get_magic_quotes_gpc() && !isset($val['noStripSlash'])) {
 		$real = array_stripslashes($real);
 	}
 
 	$real = array_str_replace('"', '&quot;', $real);
 
-	if (isset($constants[$key]["eval"])) {
-		$tmp = $constants[$key]["eval"];
+	if (isset($constants[$key]['eval'])) {
+		$tmp = $constants[$key]['eval'];
 		eval("\$real = $tmp;");
 	}
 
-	if (!strcmp($key, "graphics")) {
+	if (!strcmp($key, 'graphics')) {
 		$graphtool = $real;
 	}
 
 	// Unset an old, invalid value in the geeklog_dir option
-	if ($key == "geeklog_dir" && $real == "/path/to/geeklog/public_html") {
-		$real = "";
+	if ($key == 'geeklog_dir' && $real == '/path/to/geeklog/public_html') {
+		$real = '';
 	}
 	
 	if ((is_array($real) && join('', $real) === '') || $real == '') {
-		if (isset($constants[$key]["remove_empty"])) {
+		if (isset($constants[$key]['remove_empty'])) {
 			continue;
 		}
-		if (isset($constants[$key]["allow_empty"])) {
+		if (isset($constants[$key]['allow_empty'])) {
 			$line = one_constant($key, $real);
 			$gallery->session->configData .= $line;
 			continue;
 		}
-		if (!strcmp($key, "pnmDir")) {
+		if (!strcmp($key, 'pnmDir')) {
 		        $graphtest['pnmDir'] = 1;
 		}
-		else if (!strcmp($key, "ImPath")) {
+		else if (!strcmp($key, 'ImPath')) {
 		        $graphtest['ImPath'] = 1;
 		}
-		if (isset($constants[$key]["optional"])) {
-			$gallery->session->configData .= "// ". _("optional") . " <i>$key</i> ". _("missing") ."\n";
+		if (isset($constants[$key]['optional'])) {
+			$gallery->session->configData .= '// '. _("optional") . " <i>$key</i> ". _("missing") ."\n";
 		} else {
-			$gallery->session->configData .= error_missing($constants[$key]["prompt"], $key)."<br>";
+			$gallery->session->configData .= error_missing($constants[$key]['prompt'], $key).'<br>';
 			$error++;
 		}
 	} else {
-		if (isset($constants[$key]["filename"])) {
+		if (isset($constants[$key]['filename'])) {
 			$real = fs_export_filename($real);
 		}
 
-		if (isset($constants[$key]["no-trailing-slash"])) {
+		if (isset($constants[$key]['no-trailing-slash'])) {
 			$real = trim($real);
 			$lastChar = $real[strlen($real)-1];
 			if ($lastChar == '/' || $lastChar == '\\') {
@@ -198,21 +193,21 @@
 			}
 		}
 
-		if (isset($constants[$key]["must-be-url"])) {
-			if (!ereg("^http", $real)) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>%s</b> must be an absolute URL!"), $key, $real)));
+		if (isset($constants[$key]['must-be-url'])) {
+			if (!ereg('^http', $real)) {
+				$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>%s</b> must be an absolute URL!"), $key, $real));
 				$error++;
 				continue;
 			}
 		}
 
-		if (isset($constants[$key]["must-be-file"])) {
+		if (isset($constants[$key]['must-be-file'])) {
 			$dir = dirname($real);
 			if (!inOpenBasedir($dir)) {
 				$warn_about_open_basedir = 1;
 			} else {
 				if (!@is_file($real)) {
-					$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>%s</b> must be a valid file (not a directory)!"), $key, $real)));
+					$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>%s</b> must be a valid file (not a directory)!"), $key, $real));
 					$error++;
 					continue;
 				}
@@ -220,74 +215,74 @@
 		}
 
 		/* only positive numbers, including zero */
-		if (isset($constants[$key]["must-be-integer"])) {
+		if (isset($constants[$key]['must-be-integer'])) {
 			$int_real = intval($real);
 			if (! is_numeric($int_real) || $int_real < 0) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>&quot;%s&quot;</b> must be a positive number"), $key, $real)) . gettype($real));
+				$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>&quot;%s&quot;</b> must be a positive number"), $key, $real)) . gettype($real);
 				$error++;
 				continue;
 			}
 		}
 
 		/* Either a positive or negative number */
-		if (isset($constants[$key]["must-be-number"])) {
+		if (isset($constants[$key]['must-be-number'])) {
 			if (!is_numeric($real)) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>&quot;%s&quot;</b> must be a number"), $key, $real)));
+				$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>&quot;%s&quot;</b> must be a number"), $key, $real));
 				$error++;
 				continue;
 			}
 		}
 
-		if (isset($constants[$key]["must-not-be-zero"])) {
+		if (isset($constants[$key]['must-not-be-zero'])) {
 			if ($real == 0) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>%s</b> must not be zero"), $key, $real)));
+				$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>%s</b> must not be zero"), $key, $real));
 				$error++;
 				continue;
 			}
 		}
 
-		if (isset($constants[$key]["must-be-executable"])) {
+		if (isset($constants[$key]['must-be-executable'])) {
 			if (!inOpenBasedir($dir)) {
 				$warn_about_open_basedir = 1;
 			} else if (!fs_is_executable($real)) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>%s</b> must be an executable file!"), $key, $real)));
+				$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>%s</b> must be an executable file!"), $key, $real));
 				$error++;
 				continue;
 			}
 		}
 
-		if (isset($constants[$key]["require-write-dir"])) {
+		if (isset($constants[$key]['require-write-dir'])) {
 			$dir = $real;
 			if (!file_exists($dir)) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("Directory %s does not exist.  Please create it."), "<b>$dir</b>")));
+				$gallery->session->configData .= gallery_error(sprintf(_("Directory %s does not exist.  Please create it."), "<b>$dir</b>"));
 				$error++;
 				continue;
 			}
 
 			if (!is_dir($dir)) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s exists but is not a directory.  Please fix this."), "<b>$dir</b>")));
+				$gallery->session->configData .= gallery_error(sprintf(_("%s exists but is not a directory.  Please fix this."), "<b>$dir</b>"));
 				$error++;
 				continue;
 			}
 
 			if (!is_writeable($dir) ||
 			    !test_write_to_dir($dir)) {
-				$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: %s exists, but is not writeable by the webserver user.  Try: %s or if that doesn't work: %s.  Also make sure that if you have an %s restriction then this tmp directory should be under the %s path"),
+				$gallery->session->configData .= gallery_error(sprintf(_("%s: %s exists, but is not writeable by the webserver user.  Try: %s or if that doesn't work: %s.  Also make sure that if you have an %s restriction then this tmp directory should be under the %s path"),
 						$key, $dir,
-						"<br><b><code>" .
-						"chown -R " . $webserver_user . " $dir" .
-						"</code></b><br><br>",
-						"<br><b><code>" .
+						'<br><b><code>' .
+						"chown -R $webserver_user  $dir" .
+						'</code></b><br><br>',
+						'<br><b><code>' .
 						"chmod -R 777 $dir</code>" .
-						"</code></b><br><br>", 
+						'</code></b><br><br>', 
 						'<a href="phpinfo.php">open_basedir</a>', 
-						'open_basedir')));
+						'open_basedir'));
 				$error++;
 				continue;
 			}
 		}
 
-		if (!isset($constants[$key]["dont-write"])) {
+		if (!isset($constants[$key]['dont-write'])) {
 			if (is_array($real) && (empty($constants[$key]['type']) || $constants[$key]['type'] != 'password')) {
 				$line = array_constant($key, $real);
 			} elseif (is_array($real) && $constants[$key]['type'] == 'password') {
@@ -298,9 +293,9 @@
 			$gallery->session->configData .= $line;
 		}
 
-		if (isset($constants[$key]["verify-func"])) {
-			$func = $constants[$key]["verify-func"];
-			if (isset($constants[$key]["verify-func-takes-graphics-type"])) {
+		if (isset($constants[$key]['verify-func'])) {
+			$func = $constants[$key]['verify-func'];
+			if (isset($constants[$key]['verify-func-takes-graphics-type'])) {
 			    list($success, $fail, $warn) = $func($real, $graphtool);
 			} else {
 			    list($success, $fail) = $func($real);
@@ -308,14 +303,14 @@
 			
 			foreach ($fail as $fkey => $fval) {
 				if (isset($fkey) && isset($constants[$key][$fkey])) {
-					$gallery->session->configData .= error_row_wrap(gallery_error($constants[$key][$fkey]));
+					$gallery->session->configData .= gallery_error($constants[$key][$fkey]);
 				}
 				if (is_string($fval)) {
-					$gallery->session->configData .= error_row_wrap(gallery_error($fval));
+					$gallery->session->configData .= gallery_error($fval);
 				} else if (is_array($fval)) {
 					foreach ($fval as $msg) {
 						if ($val) {
-							$gallery->session->configData .= error_row_wrap(gallery_error($msg));
+							$gallery->session->configData .= gallery_error($msg);
 						}
 					}
 				}
@@ -323,7 +318,7 @@
 			}
 
 			/* Needed for the pnmtojpeg<->ppmtojpeg silliness */
-			if (!strcmp($key, "pnmDir")) {
+			if (!strcmp($key, 'pnmDir')) {
 				$graphpath  = $real;
 			}
 		}
@@ -337,7 +332,7 @@
 			$reqFeatures = $constants[$key]['requires-features'];
 			foreach ($reqFeatures as $reqFeatKey => $desc) {
 				if ($gallery->session->configForm->$reqFeatKey  == 'no') {
-					$gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s: <b>%s</b> must be an enabled for this feature to function!"), $key, $desc)));
+					$gallery->session->configData .= gallery_error(sprintf(_("%s: <b>%s</b> must be an enabled for this feature to function!"), $key, $desc));
 					$error++;
 				}
 			}
@@ -346,33 +341,33 @@
 }
 
 /*
- * In NetPBM 9.19, they renamed "ppmtojpeg" to "pnmtojpeg".  !@#$%
+ * In NetPBM 9.19, they renamed 'ppmtojpeg' to 'pnmtojpeg'.  !@#$%
  *
- * In NetPBM 10.21 (March 2004), they renamed "pnmcomp" to "pamcomp".
+ * In NetPBM 10.21 (March 2004), they renamed 'pnmcomp' to 'pamcomp'.
  *
  * Don't bother if we are configuring for ImageMagick.
  */
-if (!strcmp($graphtool, "NetPBM") && empty($graphtest['pnmDir'])) {
+if (!strcmp($graphtool, 'NetPBM') && empty($graphtest['pnmDir'])) {
 	/* 
 	 * If the graph path is not in the open_basedir list, then we can't tell.
-         * Assume whatever they entered is correct and hope for the best
+     * Assume whatever they entered is correct and hope for the best
 	 */
 	if (inOpenBasedir($graphpath)) {
 		$pnmtojpeg = $gallery->session->configForm->pnmtojpeg;
-		if (!fs_file_exists(fs_executable($graphpath . "/" . $pnmtojpeg))) {
+		if (!fs_file_exists(fs_executable($graphpath . '/' . $pnmtojpeg))) {
 			$error++;
-			$gallery->session->configData .= error_row_wrap(gallery_error(
+			$gallery->session->configData .= gallery_error(
 				sprintf(_("Could not find %s.  Check your NetPBM directory to see which PNG->JPEG converter you have (or just try using %s instead).  Please check your configuration (or use ImageMagick)."),
 					"<i>$graphpath/$pnmtojpeg</i>",
-					($pnmtojpeg == "pnmtojpeg" ? "ppmtojpeg" : "pnmtojpeg"))));
+					($pnmtojpeg == 'pnmtojpeg' ? 'ppmtojpeg' : 'pnmtojpeg')));
 		}
 		$pnmcomp = $gallery->session->configForm->pnmcomp;
-		if (!fs_file_exists(fs_executable($graphpath . "/" . $pnmcomp))) {
+		if (!fs_file_exists(fs_executable($graphpath . '/' . $pnmcomp))) {
 			$error++;
-			$gallery->session->configData .= error_row_wrap(gallery_error(
+			$gallery->session->configData .= gallery_error(
 				sprintf(_("Could not find %s.  Check your NetPBM directory to see which PNM Composite/Overlay executable you have (or just try using %s instead).  Please check your configuration (or use ImageMagick)."),
 					"<i>$graphpath/$pnmcomp</i>",
-					($pnmcomp == "pnmcomp" ? "pamcomp" : "pnmcomp"))));
+					($pnmcomp == 'pnmcomp' ? 'pamcomp' : 'pnmcomp')));
 		}
 	}
 }
@@ -382,44 +377,44 @@
  * chose is configured properly.
  */
 if (!empty($graphtest['pnmDir']) && !empty($graphtest['ImPath'])) {
-    $gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("You must specify a path for %s or %s for Gallery to function!!"), "<i>netpbm</i>",  "<i>ImageMagick</i>")));
+    $gallery->session->configData .= gallery_error(sprintf(_("You must specify a path for %s or %s for Gallery to function!!"), "<i>netpbm</i>",  "<i>ImageMagick</i>"));
     $error++;
-} else if (!strcmp($graphtool, "ImageMagick") && !empty($graphtest['ImPath'])) {
-    $gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s is not properly configured for use as a graphics package.  Make sure you entered a path to the %s binaries in step 2."),"ImageMagick","ImageMagick")));
+} else if (!strcmp($graphtool, 'ImageMagick') && !empty($graphtest['ImPath'])) {
+    $gallery->session->configData .= gallery_error(sprintf(_("%s is not properly configured for use as a graphics package.  Make sure you entered a path to the %s binaries in step 2."),'ImageMagick','ImageMagick'));
     $error++;
-} else if (!strcmp($graphtool, "NetPBM") && !empty($graphtest['pnmDir'])) {
-    $gallery->session->configData .= error_row_wrap(gallery_error(sprintf(_("%s is not properly configured for use as a graphics package.  Make sure you entered a path to the %s binaries in step 2."),"NetPBM","NetPBM")));
+} else if (!strcmp($graphtool, 'NetPBM') && !empty($graphtest['pnmDir'])) {
+    $gallery->session->configData .= gallery_error(sprintf(_("%s is not properly configured for use as a graphics package.  Make sure you entered a path to the %s binaries in step 2."),'NetPBM','NetPBM'));
     $error++;
 }
 
 if (isset($warn_about_open_basedir)) {
-	$viewheader .= "<code><hr><b>". _("Note:") ."</b> ". 
+	$viewheader .= '<code><hr><b>'. _("Note:") .'</b> '. 
 			_("Your server has the PHP open_basedir restriction set, and certain of your paths are not in the list of restricted paths") .
-			" (" . ini_get('open_basedir') . ")  " .
+			' (' . ini_get('open_basedir') . ')  ' .
 			sprintf(_("This doesn't mean that they won't work, however it does mean that we can't verify that the paths are correct.  If you are unable to upload photos correctly, please refer to the FAQ and to the %sdiagnostics%s to resolve your problems."),
 			'<a href="diagnostics.php">', '</a>').
-			  "<hr></code>";
+			  '<hr></code>';
 }
 
 $gallery->session->configData .= "\n";
 $gallery->session->configData .= "/* Defaults */\n";
 //print_r($gallery->session->configForm);
 foreach ($defaults as $key => $val) {
-	if (isset($val["type"]) && 
-			($val["type"] == "block_start" || 
-			 $val["type"] == "block_end" ||
-			 $val["type"] == "separator" ||
-			 $val["type"] == "group_start" ||
-			 $val["type"] == "group_end")) { 
+	if (isset($val['type']) && 
+			($val['type'] == 'block_start' || 
+			 $val['type'] == 'block_end' ||
+			 $val['type'] == 'separator' ||
+			 $val['type'] == 'group_start' ||
+			 $val['type'] == 'group_end' ||
+			 $val['type'] == 'separator')) { 
 		continue;
 	}
-	if (isset($val["type"]) && $val["type"] == "separator") continue;
 
-	if (!isset($gallery->session->configForm->$key) && !isset($defaults[$key]["optional"])) {
-		$gallery->session->configData .= error_missing($defaults[$key]["prompt"], $key);
+	if (!isset($gallery->session->configForm->$key) && !isset($defaults[$key]['optional'])) {
+		$gallery->session->configData .= error_missing($defaults[$key]['prompt'], $key);
 		$error++;
 	} elseif (isset($gallery->session->configForm->$key)) {
-		if (get_magic_quotes_gpc()) {
+		if (get_magic_quotes_gpc() && !isset($val['noStripSlash'])) {
 			$gallery->session->configForm->$key = array_stripslashes($gallery->session->configForm->$key);
 		}
 		// Protect quote characters to avoid screwing up HTML forms
@@ -441,16 +436,16 @@
 		} else {
 			$gallery->session->configData .= defaults($key, $gallery->session->configForm->$key);
 		}
-		if (isset($defaults[$key]["verify-func"])) {
-			$func = $defaults[$key]["verify-func"];
+		if (isset($defaults[$key]['verify-func'])) {
+			$func = $defaults[$key]['verify-func'];
 			list($success, $fail) = $func($gallery->session->configForm->$key);
 			foreach ($fail as $fkey => $fval) {
 				if (is_string($fval)) {
-					$gallery->session->configData .= error_row_wrap(gallery_error($fval));
+					$gallery->session->configData .= gallery_error($fval);
 				} else if (is_array($fval)) {
 					foreach ($fval as $msg) {
 						if ($val) {
-							$gallery->session->configData .= error_row_wrap(gallery_error($msg));
+							$gallery->session->configData .= gallery_error($msg);
 						}
 					}
 				}
@@ -460,7 +455,7 @@
 	}
 
 }
-$footer = "?" . ">\n";
+$footer = "?>\n";
 ?>
 <div class="sitedesc">
 <?php 
@@ -478,7 +473,7 @@
 	} else {
 		echo '<input type="submit" name="refresh" disabled="disabled" value="' . _("Refresh") . '">';
 		echo '<br><div class="error" id="top">';
-		echo pluralize_n2(ngettext("One error.", "%d errors.", $error), $error, _("No errors."));
+		echo gTranslate('config', "One error.", "%d errors.", $error, _("No errors."));
                 echo ' ';
 		echo _("See Details below.");
 		echo '</div>';
diff -Naur gallery-1.5.1/setup/constants.inc gallery-1.5.2/setup/constants.inc
--- gallery-1.5.1/setup/constants.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/constants.inc	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: constants.inc,v 1.45.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: constants.inc,v 1.48.2.3 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
@@ -45,9 +45,25 @@
         <input type="submit" name="go_defaults" disabled="disabled" value="<?php echo _("Use Defaults") ?>">
 </p>
 <?php
-	makeSectionTabs($constants);
 
-$i=0;
+makeSectionTabs($constants);
+
+?>
+<script type="text/javascript" language="Javascript">
+
+function toggleGraphics(show) {
+	if(show == 'ImageMagick') {
+		document.getElementById('subgroup_ImageMagick').style.display      = 'inline';
+		document.getElementById('subgroup_NetPBM').style.display      = 'none';
+	} else {
+		document.getElementById('subgroup_ImageMagick').style.display      = 'none';
+		document.getElementById('subgroup_NetPBM').style.display      = 'inline';
+	}
+}
+
+</script>
+<?php
+$i = 0;
 foreach ($constants as $key => $val) {
 	if( isset($val["enabled"]) && $val["enabled"] == "no") continue;
 	
@@ -57,6 +73,19 @@
 		continue;
 	}
 
+	if (isset($val["type"]) && ($val["type"] === 'subgroup' )) {
+	    echo '<div id="'. $key .'" style="display: '. $val['display'] .'">';
+        echo '<center><div class="subgroup">'. $val['title'] .'</div></center>';
+        if (isset($val['desc'])) {
+        	echo '<div class="inner desc">'. $val['desc'] .'</div>';
+        }
+        continue;
+    }
+    
+    if (isset($val["type"]) && ($val["type"] === 'subgroup_end' )) {
+        echo '</div>';
+        continue;
+    }
 	if (isset($val["type"]) && ($val["type"] === "block_end" )) {
 		echo evenOdd_row(make_fields($key, $val), $i++ % 2);
 		echo "\n<tr><td colspan=\"2\"> &nbsp; </td></tr>";
@@ -124,11 +153,9 @@
 				$val["value"] = $gallery->session->configForm->$key;
 	
 			}
-			if (get_magic_quotes_gpc()) {
+			if (get_magic_quotes_gpc() && !isset($val['noStripSlash'])) {
 				if (is_array($val["value"])) {
-					if (function_exists('array_map')) { 
-						$val["value"] = array_map("stripslashes", $val["value"]);
-					}
+					$val["value"] = array_map("stripslashes", $val["value"]);
 				} else {
 					$val["value"] = stripslashes($val["value"]);
 				}
@@ -152,6 +179,7 @@
 	}
 }
 ?>
+
 <p align="center">
 	<input type="submit" name="go_back" disabled="disabled" value="&lt;-- <?php echo _("Previous Step") ?>">
         <input type="button" name="go_backTab" disabled="disabled" value="&lt;- <?php echo _("Previous Tab") ?>" onClick="section_tabs.prevTab()">
diff -Naur gallery-1.5.1/setup/defaults.inc gallery-1.5.2/setup/defaults.inc
--- gallery-1.5.1/setup/defaults.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/defaults.inc	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: defaults.inc,v 1.34.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: defaults.inc,v 1.35.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <input type="hidden" name="this_page" value="defaults">
diff -Naur gallery-1.5.1/setup/diagnostics.php gallery-1.5.2/setup/diagnostics.php
--- gallery-1.5.1/setup/diagnostics.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/diagnostics.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: diagnostics.php,v 1.24.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: diagnostics.php,v 1.26.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php 
diff -Naur gallery-1.5.1/setup/frame_test.php gallery-1.5.2/setup/frame_test.php
--- gallery-1.5.1/setup/frame_test.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/frame_test.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: frame_test.php,v 1.7.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: frame_test.php,v 1.8.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/setup/ghcc.php gallery-1.5.2/setup/ghcc.php
--- gallery-1.5.1/setup/ghcc.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/ghcc.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file by Andrew Lindeman
  * 
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: ghcc.php,v 1.9.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: ghcc.php,v 1.10.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/setup/gpl.txt gallery-1.5.2/setup/gpl.txt
--- gallery-1.5.1/setup/gpl.txt	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/gpl.txt	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,6 +17,6 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: gpl.txt,v 1.7.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: gpl.txt,v 1.8.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
diff -Naur gallery-1.5.1/setup/index.php gallery-1.5.2/setup/index.php
--- gallery-1.5.1/setup/index.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/index.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,19 +17,18 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: index.php,v 1.72.2.3 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: index.php,v 1.77.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
     /**
      * @package setup
      */
-?>
-<?php 
-	/* 
-	** Its important to have this as first position.
-	** Otherwise constants are not defined.
-	*/
+
+	/** 
+	 * Its important to have this as first position.
+	 * Otherwise constants are not defined.
+	 */
 	require (dirname(__FILE__) . '/init.php');
 	
 	require (dirname(__FILE__) . '/config_data.inc');
@@ -38,11 +37,12 @@
 	list($preserve, $go_next, $go_back, $next_page, $back_page, $this_page, $go_defaults, $refresh) =
 	  getRequestVar(array('preserve', 'go_next', 'go_back', 'next_page', 'back_page', 'this_page', 'go_defaults', 'refresh'));
 
+
+doctype(); 
 ?>
-<?php doctype(); ?>
 <html>
 <head>
-	<title><?php echo _("Gallery Configuration") ?></title>
+	<title><?php echo gTranslate('config', "Gallery Configuration") ?></title>
 	<?php common_header(); ?>
 
 	<script language="JavaScript" type="text/javascript">
diff -Naur gallery-1.5.1/setup/init.php gallery-1.5.2/setup/init.php
--- gallery-1.5.1/setup/init.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/init.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: init.php,v 1.51.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: init.php,v 1.54.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
@@ -81,7 +81,7 @@
 // Make sure GALLERY_URL doesn't end in a slash
 $GALLERY_URL = ereg_replace("\/$", "", $GALLERY_URL);
 
-$MIN_PHP_MAJOR_VERSION = 4;
+$MIN_PHP_MAJOR_VERSION = '4.1.0';
 
 if ($init_mod_rewrite = getRequestVar('init_mod_rewrite')) {
 	$GALLERY_REWRITE_OK = 1;
diff -Naur gallery-1.5.1/setup/login.inc gallery-1.5.2/setup/login.inc
--- gallery-1.5.1/setup/login.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/login.inc	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: login.inc,v 1.17.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: login.inc,v 1.19.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
@@ -75,7 +75,7 @@
 	exit;
 }
 elseif (!isset($tmpUser) || !$tmpUser->isAdmin()) {  // Not logged in 
-	echo makeFormIntro("setup/" . $target, array("name" => "login_form", "method" => "POST"));
+	echo makeFormIntro("setup/" . $target, array('name' => 'login_form'));
 ?>
 
 <div align="center">
@@ -109,4 +109,5 @@
 </html>
 <?php
 	exit;
-} // Not Logged In ?>
+} // Not Logged In
+?>
diff -Naur gallery-1.5.1/setup/phpinfo.php gallery-1.5.2/setup/phpinfo.php
--- gallery-1.5.1/setup/phpinfo.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/phpinfo.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: phpinfo.php,v 1.10.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: phpinfo.php,v 1.12.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/setup/session_test.php gallery-1.5.2/setup/session_test.php
--- gallery-1.5.1/setup/session_test.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/session_test.php	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: session_test.php,v 1.27.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: session_test.php,v 1.29.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/setup/write.inc gallery-1.5.2/setup/write.inc
--- gallery-1.5.1/setup/write.inc	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/setup/write.inc	2006-01-06 07:32:46.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: write.inc,v 1.66.2.2 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: write.inc,v 1.69.2.1 2006/01/06 06:32:46 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/skins/bars002/css/screen.css gallery-1.5.2/skins/bars002/css/screen.css
--- gallery-1.5.1/skins/bars002/css/screen.css	2005-04-28 00:58:11.000000000 +0200
+++ gallery-1.5.2/skins/bars002/css/screen.css	2005-12-23 20:26:50.000000000 +0100
@@ -1,31 +1,67 @@
-/* 
-	bars002
+/*
+   This is the style sheet used when Gallery running standalone and
+   'bars002' is selected.
+
+   If you would like to customize the styles please create
+   copy of this file called
+
+   "screen.css" (same name without ".default")
+
+   If that file is found in this directory it will be
+   used instead of this one.
+
+   Some of the styles below are overriden by specific
+   album properties. These are noted
+
+   $Id: screen.css,v 1.5 2005/12/23 19:26:50 jenst Exp $
+*/
+
+
+/*
    default text styles - background and colors overriden by
    album 'bgcolor', 'background', and 'textcolor' properties.
 */
-BODY  
-	{ 
-	  font-family: Verdana, Arial, Helvetica, sans-serif;
-	  font-size: 10pt;
-	  color:#202020;
-	  background-color: #dddddd;
-	  margin-top: 25px;
-	  margin-left: 0px;
-	  margin-right: 0px;
-	}
-TD, P 
-	{ 
-	  font-family: Verdana, Arial, Helvetica, sans-serif;
-	  font-size: 10pt; 
-	}
+
+body {
+    background-color: #749BFB;
+    color: #FFFFFF;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+    font-size: 10px;
+    background-color: #dddddd;
+    color:#202020;
+}
+
+img {
+    border: none;
+}
+
+td,p {
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+    font-size: 10px;
+}
+
 /* 
    link colors - overridden by the album 'linkcolor' property.
 */
+
 A   	{ color: #202020; text-decoration: none; }
 A:link	{ color: #202020; text-decoration: none; }
 A:visited { color: #202020; text-decoration: none; }
 A:active { color: #202020; }
 A:hover	{ color: #C51B1B; }
+
+popup a:hover {
+    color: #4E2192;
+}
+
+.popup td {
+    color: #000000;
+}
+
+.popup td.tab-hi {
+    color: #FFFFFF;
+}
+
 /* 
    text styles 
 */
@@ -171,9 +207,11 @@
 	  color: red; 
 	  font-size: 12px; 
 	}
-.attention  /*voting instructions */
-	{
-	}
+.attention {
+    color: red;
+    font-weight: bold;
+}
+
 .headbox  /* box around the page headers */
 	{
 	}
@@ -350,7 +388,7 @@
 	  line-height:140%;
 	  padding:2px;
 	  border:0px dashed #202020;
-	  width=100%   
+	  width:100%   
 	}
 .modfooter a,
 .modfooter a:link,
@@ -368,7 +406,7 @@
 
 .popupbody  /* controls the background of popup. */ 
 {
-    margin: 25px;
+    margin: 5px;
     background-color: #909090;
 }
 	
@@ -387,7 +425,6 @@
 
 .popup /* controls the main text and message body */
 {
-    text-align:center;
     font-size: 12px;
     color: #202020;
     padding: 5px;
diff -Naur gallery-1.5.1/skins/bars002/style.def gallery-1.5.2/skins/bars002/style.def
--- gallery-1.5.1/skins/bars002/style.def	2005-02-01 12:36:38.000000000 +0100
+++ gallery-1.5.2/skins/bars002/style.def	2005-12-15 21:00:31.000000000 +0100
@@ -1,6 +1,6 @@
 <?php
-$name=_("bars0002");
-$description=_("Grey background, Grey metal bars, black & red text colors");
-$version='1.0.4';
-$last_update='2005-01-28';
+$name = _("bars0002");
+$description = _("Grey background, Grey metal bars, black & red text colors");
+$version = '1.0.7';
+$last_update = '2005-12-14';
 ?>
diff -Naur gallery-1.5.1/skins/bblue/css/screen.css gallery-1.5.2/skins/bblue/css/screen.css
--- gallery-1.5.1/skins/bblue/css/screen.css	2005-04-17 16:02:04.000000000 +0200
+++ gallery-1.5.2/skins/bblue/css/screen.css	2005-09-24 13:43:55.000000000 +0200
@@ -198,8 +198,10 @@
 	  font-size: 12px; 
 	}
 .attention  /*voting instructions */
-	{
-	}
+{
+    color: #006cff;
+}
+
 .headbox  /* box around the page headers */
 	{
 	}
diff -Naur gallery-1.5.1/skins/bgreen/css/screen.css gallery-1.5.2/skins/bgreen/css/screen.css
--- gallery-1.5.1/skins/bgreen/css/screen.css	2005-04-21 23:39:52.000000000 +0200
+++ gallery-1.5.2/skins/bgreen/css/screen.css	2005-09-24 13:43:55.000000000 +0200
@@ -197,8 +197,10 @@
 	  font-size: 12px; 
 	}
 .attention  /*voting instructions */
-	{
-	}
+{
+    color: #00e600;
+}
+
 .headbox  /* box around the page headers */
 	{
 	}
diff -Naur gallery-1.5.1/skins/bgreen2/css/screen.css gallery-1.5.2/skins/bgreen2/css/screen.css
--- gallery-1.5.1/skins/bgreen2/css/screen.css	2005-04-21 23:39:52.000000000 +0200
+++ gallery-1.5.2/skins/bgreen2/css/screen.css	2005-09-24 13:43:55.000000000 +0200
@@ -198,8 +198,9 @@
 	  font-size: 12px; 
 	}
 .attention  /*voting instructions */
-	{
-	}
+{
+    color: #00e600;
+}
 .headbox  /* box around the page headers */
 	{
 	}
diff -Naur gallery-1.5.1/skins/bpurple/css/screen.css gallery-1.5.2/skins/bpurple/css/screen.css
--- gallery-1.5.1/skins/bpurple/css/screen.css	2005-04-21 23:39:53.000000000 +0200
+++ gallery-1.5.2/skins/bpurple/css/screen.css	2005-09-24 13:43:55.000000000 +0200
@@ -152,8 +152,10 @@
 	  font-size: 12px; 
 	}
 .attention  /*voting instructions */
-	{
-	}
+{
+    color: #ff00b2;
+}
+
 .headbox  /* box around the page headers */
 	{
 	}
diff -Naur gallery-1.5.1/skins/bred/css/screen.css gallery-1.5.2/skins/bred/css/screen.css
--- gallery-1.5.1/skins/bred/css/screen.css	2005-04-21 23:39:53.000000000 +0200
+++ gallery-1.5.2/skins/bred/css/screen.css	2005-09-24 13:43:55.000000000 +0200
@@ -125,7 +125,8 @@
 	}
 
 a.modcaption {
-       color: #C0C0C0;
+       1color: #C0C0C0;
+       color: green;
 }
 
 a.modcaption:hover {
@@ -151,11 +152,14 @@
 	  font-size: 12px; 
 	}
 .attention  /*voting instructions */
-	{
-	}
+{
+    color: #f0000c;
+}
+
 .headbox  /* box around the page headers */
-	{
-	}
+{
+}
+
 .head  /* page headers behind the Gallery title*/
 	{ 
 	  font-family:verdana, arial, sans-serif;
@@ -371,7 +375,7 @@
 
 .vafloat /* float for view album - text */
  {
-	float: none; 
+	float: none;
  }
 
 .vafloat2 /* float for view album - images */
diff -Naur gallery-1.5.1/skins/jenskin/css/screen.css gallery-1.5.2/skins/jenskin/css/screen.css
--- gallery-1.5.1/skins/jenskin/css/screen.css	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/skins/jenskin/css/screen.css	2006-01-08 21:07:18.000000000 +0100
@@ -3,10 +3,10 @@
    album 'bgcolor', 'background', and 'textcolor' properties.
 */
 /*
-  $Id: screen.css,v 1.4.2.1 2005/09/12 22:41:29 dmolavi Exp $
+  $Id: screen.css,v 1.6.2.2 2006/01/08 20:07:18 jenst Exp $
  
   Gallery - a web based photo album viewer and editor
-  Copyright (C) 2000-2005 Bharat Mediratta
+  Copyright (C) 2000-2006 Bharat Mediratta
  
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -28,9 +28,10 @@
     background-color: #FFFFDA;
 }
 
-.commentbox	{ border-width:1px; border-style:solid; border-color: #000000;
-		  padding:2px;
-		}
+.commentbox	{ 
+    border-width:1px; border-style:solid; border-color: #000000;
+    padding:2px;
+}
 		
 .commentboxhead	{ background-color: #FCFCF3; padding:2px;
 		  border-bottom-width:1px; border-bottom-style: solid; border-color: #000000;
@@ -69,7 +70,8 @@
 		}
 
 a:hover { 
-	color: #000099;
+    color: #000099;
+    text-decoration: none;
 }
 
 /* 
@@ -153,6 +155,7 @@
 	{ 
 	  font-size: 12px; 
 	}
+	
 .navtableborderbegin{
 	border:1px solid #000000;
 }
@@ -217,27 +220,25 @@
 	  font-size: 10px; 
 	  font-weight: bold;
 	}
-
-.popupbody  /* controls the background of popup. */
-	{
-	  margin: 25px;
-	  background-color: #808080;
-	  font-size: 12px;
+	
+/* controls the background of popup. */
+.popupbody {
+    margin: 5px;
+    background-color: #808080;
+    font-size: 12px;
  }
 
-.popuphead
-	{ 
-	  font-size: 16px; font-weight:bold;
-	  text-align: center;
-	  background-color: #FCFCF3;
-	  -Moz-Border-Radius: 20px;
-	  padding: 5px; margin: 10px;
-	  border-width: 1px; border-color: black; border-style:solid;
-	}
+.popuphead { 
+    font-size: 16px; font-weight: bold;
+    text-align: center;
+    background-color: #FCFCF3;
+    -Moz-Border-Radius: 20px;
+    padding: 3px; margin: 10px;
+    border: 1px solid black;
+}
 
 .popup /* controls the main text and message body */
  {
-   padding: 5px;
  }
 
 .popupform /* controls form textarea */
@@ -316,21 +317,23 @@
     white-space: nowrap;
     padding: 2px;
     -moz-border-radius: 3px;
+    text-decoration: none;
 }
 
 #menu a:hover {
    white-space: nowrap;
-   text-decoration: none;
    border-bottom: 1px solid #66A;
    border-right: 1px solid #66A;
    border-top: 1px solid #224;
    border-left: 1px solid #224;
    padding: 1px;
-
-
 }
 
 .noLink {
     font-size: 10px;
 //	padding: 3px;
+}
+
+.debugmessage {
+    font-size: 10px;
 }
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/skins/jenskin/style.def gallery-1.5.2/skins/jenskin/style.def
--- gallery-1.5.1/skins/jenskin/style.def	2005-02-23 21:55:44.000000000 +0100
+++ gallery-1.5.2/skins/jenskin/style.def	2006-01-08 21:07:18.000000000 +0100
@@ -1,6 +1,6 @@
 <?php
 $name=_("Jenskin");
 $description=_("A Skin made by Jens. It looks like the config wizard.");
-$version='1.0.9';
-$last_update='2005-02-23';
+$version='1.0.11';
+$last_update='2006-01-08';
 ?>
diff -Naur gallery-1.5.1/slideshow.php gallery-1.5.2/slideshow.php
--- gallery-1.5.1/slideshow.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/slideshow.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: slideshow.php,v 1.77.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: slideshow.php,v 1.80.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/sort_album.php gallery-1.5.2/sort_album.php
--- gallery-1.5.1/sort_album.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/sort_album.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: sort_album.php,v 1.33.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: sort_album.php,v 1.37.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
 
 require_once(dirname(__FILE__) . '/init.php');
 
-list($sort, $order) = getRequestVar(array('sort', 'order'));
+list($sort, $order, $albumsFirst) = getRequestVar(array('sort', 'order', 'albumsFirst'));
 
 // Hack check
 if (!$gallery->user->canWriteToAlbum($gallery->album)) {
@@ -49,7 +49,7 @@
 			dismissAndReload();
 			return;
 		} else {
-			$gallery->album->sortPhotos($sort,$order);
+			$gallery->album->sortPhotos($sort,$order, $albumsFirst);
 			$gallery->album->save(array(i18n("Album resorted")));
 			dismissAndReload();
 			return;
@@ -102,11 +102,18 @@
   </tr>
   <tr>
     <td align="center">
-<select name="order">
-  <option value="0"><?php echo _("Ascending") ?></option>
-  <option value="1"><?php echo _("Descending") ?></option>
-</select>
+<?php echo _("Sort Order:"); ?>
+    <select name="albumsFirst">
+        <option value=""><?php echo _("Just sort") ?></option>
+        <option value="1"><?php echo _("Albums first") ?></option>
+        <option value="-1"><?php echo _("Photos/Movies first") ?></option>
+    </select>
+    <select name="order">
+        <option value="1"><?php echo _("Ascending") ?></option>
+        <option value="-1"><?php echo _("Descending") ?></option>
+    </select>
     </td>
+    
   </tr>
 </table>
 <br>
@@ -119,7 +126,7 @@
 	echo gallery_error(_("no album specified"));
 }
 ?>
-<?php print gallery_validation_link("sort_album.php"); ?>
 </div>
+<?php print gallery_validation_link("sort_album.php"); ?>
 </body>
 </html>
diff -Naur gallery-1.5.1/stamp_preview.php gallery-1.5.2/stamp_preview.php
--- gallery-1.5.1/stamp_preview.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/stamp_preview.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This file Copyright (C) 2003-2004 Joan McGalliard
  *
@@ -19,7 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: stamp_preview.php,v 1.1.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: stamp_preview.php,v 1.2.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/stats.php gallery-1.5.2/stats.php
--- gallery-1.5.1/stats.php	2005-09-22 02:29:50.000000000 +0200
+++ gallery-1.5.2/stats.php	2005-12-04 20:43:45.000000000 +0100
@@ -50,7 +50,7 @@
  * Copyright (C) 2004 Jeremy Gilliat with rating contribution by Haplo
  * based on Bharat Mediratta's standard Gallery code.
  *
- * $Id: stats.php,v 1.30.2.5 2005/09/22 00:29:50 jenst Exp $
+ * $Id: stats.php,v 1.40 2005/12/04 19:43:45 jenst Exp $
  */
 
 require_once(dirname(__FILE__) . '/init.php');
@@ -365,9 +365,10 @@
     }
 
     for ($i = 0; $i<$numAlbums; $i++) {
-        debugMessage("<hr>", __FILE__, __LINE__);
+        if(isDebugging()) {
+	    echo "\n<hr>";
+	}
         $statsAlbum = $list[$i];
-        //		print_r($statsAlbum);
         if ($statsAlbum->versionOutOfDate()) {
             debugMessage(_("Version out of date."), __FILE__, __LINE__, 2);
             $skip[] = $statsAlbum;
@@ -506,6 +507,7 @@
     }
 
     $order = ($reverse) ? 'asc' : 'desc';
+
     if (is_array($arrPhotos) ) {
         // Do the search using the criteria specified by $type.
 	switch ($type) {
@@ -538,7 +540,7 @@
     !isset($period) &&
     !isset($album) &&
     is_array($arrPhotos)) {
-    writeCache($cacheFilename);
+    writeGalleryStatsCache($cacheFilename);
 }
 
 $uid = $gallery->user->getUid();
@@ -628,7 +630,7 @@
 echo "<!-- End top nav -->";
 
 if ($useCache ) {
-    readCache($cacheFilename, $startPhoto, $photosPerPage );
+    readGalleryStatsCache($cacheFilename, $startPhoto, $photosPerPage );
 }
 if (isset($stm)) {
     $time = getmicrotime() - $time_start;
@@ -799,7 +801,7 @@
     return $numPhotos;
 }
 
-function readCache( $cacheFilename, $start, $numPhotos ) {
+function readGalleryStatsCache( $cacheFilename, $start, $numPhotos ) {
     global $arrPhotos;
 
     $size = filesize($cacheFilename) + 1;
@@ -832,7 +834,7 @@
     }
 }
 
-function writeCache( $cacheFilename ) {
+function writeGalleryStatsCache( $cacheFilename ) {
     global $arrPhotos;
 
     if ($fd = fs_fopen($cacheFilename, "wb")) {
@@ -1072,7 +1074,7 @@
 
     if ($showAlbumLink ) {
         $albumLink = sprintf(_("From album: %s"),
-        '<a href="'. makeAlbumUrl($statsAlbum->fields['name']) .'">'. $statsAlbum->fields['title'] . '</a>');
+          '<a href="'. makeAlbumUrl($statsAlbum->fields['name']) .'">'. $statsAlbum->fields['title'] . '</a>');
 
         $owner_var = '';
         if ($showAlbumOwner == 1 ) {
@@ -1136,12 +1138,12 @@
        !$gallery->session->offline) {
 
         $innerStatsTable->addElement(array(
-        'content' => _("Views:"),
-        'cellArgs' => array('width' => 100)));
+            'content' => _("Viewed:"),
+            'cellArgs' => array('width' => 100)));
 
         $innerStatsTable->addElement(array(
-        'content' => pluralize_n2($statsAlbum->getItemClicks($photoIndex), "1 time", "times" , "0 times"),
-        'cellArgs' => array('class' => 'fineprint')));
+            'content' => gTranslate('core', "Once", "%d times" , $statsAlbum->getItemClicks($photoIndex), _("Never viewed")),
+            'cellArgs' => array('class' => 'fineprint')));
     }
 
     if (!empty($showVotes )) {
diff -Naur gallery-1.5.1/stats-wizard.php gallery-1.5.2/stats-wizard.php
--- gallery-1.5.1/stats-wizard.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/stats-wizard.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: stats-wizard.php,v 1.9.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: stats-wizard.php,v 1.12.2.1 2006/01/06 06:31:31 jenst Exp $
  *
  */
 ?>
@@ -48,7 +48,6 @@
 <body dir="<?php echo $gallery->direction ?>">
 <?php  
 }
-
     includeHtmlWrap("gallery.header");
 
     $adminbox['text'] ='<span class="head">'. _("Gallery statistics - Wizard") .'</span>';
@@ -116,9 +115,7 @@
 </script>
 
 <?php
-	echo makeFormIntro("stats.php", array("name" => "stats_form", 
-						"method" => "POST",
-						"onChange" => 'updateUrl()'));
+	echo makeFormIntro("stats.php", array("name" => "stats_form", "onChange" => 'updateUrl()'));
 	echo "\n<table width=\"100%\" border=\"0\">";
 	echo "\n<tr>";
 	echo "\n<td class=\"blockcell\">";
diff -Naur gallery-1.5.1/tools/build_manifest.php gallery-1.5.2/tools/build_manifest.php
--- gallery-1.5.1/tools/build_manifest.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/tools/build_manifest.php	2006-01-06 07:32:51.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * This file by Joan McGalliard.
  * 
  * This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: build_manifest.php,v 1.13.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: build_manifest.php,v 1.14.2.1 2006/01/06 06:32:51 jenst Exp $
  */
 
 /*
diff -Naur gallery-1.5.1/tools/despam-comments.php gallery-1.5.2/tools/despam-comments.php
--- gallery-1.5.1/tools/despam-comments.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/tools/despam-comments.php	2006-01-06 07:32:51.000000000 +0100
@@ -1,23 +1,23 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
- * 
+ * Copyright (C) 2000-2006 Bharat Mediratta
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: despam-comments.php,v 1.18.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: despam-comments.php,v 1.22.2.1 2006/01/06 06:32:51 jenst Exp $
  *
  * The idea for this was blatantly lifted from Jay Allen's most excellent
  * MT-Blacklist, a plugin for MovableType that helps kill spam dead.  No code
@@ -27,13 +27,13 @@
 <?php
 
 if (!isset($gallery->version)) {
-        require_once(dirname(dirname(__FILE__)) . '/init.php');
+    require_once(dirname(dirname(__FILE__)) . '/init.php');
 }
 
 // Security check
 if (!$gallery->user->isAdmin()) {
-	header("Location: " . makeAlbumHeaderUrl());
-	exit;
+    header("Location: " . makeAlbumHeaderUrl());
+    exit;
 }
 
 if (!$GALLERY_EMBEDDED_INSIDE) {
@@ -43,27 +43,27 @@
 <head>
 <title><?php echo $gallery->app->galleryTitle ?></title>
 <?php 
-	common_header() ;
+common_header() ;
 ?>
 
 </head>
 <body dir="<?php echo $gallery->direction ?>">
 <?php  
 }
-    includeHtmlWrap("gallery.header");
-    $adminbox['text'] ='<span class="head">'. _("Find and remove comment spam") .'</span>';
-    $adminCommands = '[<a href="'. makeGalleryUrl("admin-page.php") .'">'. _("return to admin page") .'</a>] ';
-    $adminCommands .= '[<a href="'. makeAlbumUrl() .'">'. _("return to gallery") .'</a>] ';
-
-    $adminbox["commands"] = $adminCommands;
-    $adminbox["bordercolor"] = $gallery->app->default["bordercolor"];
-    $breadcrumb['text'][] = languageSelector();
-
-    includeLayout('navtablebegin.inc');
-    includeLayout('adminbox.inc');
-    includeLayout('navtablemiddle.inc');
-    includeLayout('breadcrumb.inc');
-    includeLayout('navtableend.inc');
+includeHtmlWrap("gallery.header");
+$adminbox['text'] ='<span class="head">'. _("Find and remove comment spam") .'</span>';
+$adminCommands = '[<a href="'. makeGalleryUrl("admin-page.php") .'">'. _("return to admin page") .'</a>] ';
+$adminCommands .= '[<a href="'. makeAlbumUrl() .'">'. _("return to gallery") .'</a>] ';
+
+$adminbox["commands"] = $adminCommands;
+$adminbox["bordercolor"] = $gallery->app->default["bordercolor"];
+$breadcrumb['text'][] = languageSelector();
+
+includeLayout('navtablebegin.inc');
+includeLayout('adminbox.inc');
+includeLayout('navtablemiddle.inc');
+includeLayout('breadcrumb.inc');
+includeLayout('navtableend.inc');
 ?>
 <div class="popup">
 <table width="100%">
@@ -77,39 +77,39 @@
 
 echo '<td class="borderleft-popup">';
 switch($g1_mode) {
-	case 'deleteComments':
-		deleteComments();
-	break;
-    
-	case 'findBlacklistedComments':
-		findBlacklistedComments();
-	break;
-    
-	case 'updateBlacklist':
-		updateBlacklist();
-	break;
-    
-	case 'viewBlacklist':
-		viewBlacklist();
-	break;
-    
-	case 'editBlacklist':
-		editBlacklist();
-	break;
-    
-	case 'addBlacklistEntries':
-		showAddBox();
-	break;
-    
-	default:
-	break;
+    case 'deleteComments':
+        deleteComments();
+    break;
+
+    case 'findBlacklistedComments':
+        findBlacklistedComments();
+    break;
+
+    case 'updateBlacklist':
+        updateBlacklist();
+    break;
+
+    case 'viewBlacklist':
+        viewBlacklist();
+    break;
+
+    case 'editBlacklist':
+        editBlacklist();
+    break;
+
+    case 'addBlacklistEntries':
+        showAddBox();
+    break;
+
+    default:
+    break;
 }
 echo "</td></tr>";
 ?>
 </table>
 </div>
 <?php
-  includeHtmlWrap("gallery.footer");
+includeHtmlWrap("gallery.footer");
 if (!$GALLERY_EMBEDDED_INSIDE) {
 ?>
 </body>
@@ -120,162 +120,159 @@
 function deleteComments() {
     printf("<h2>%s</h2>", _("Delete Comments"));
     if (!getRequestVar('delete')) {
-	printf("<h3>%s</h3>", _("No action taken!"));
+        printf("<h3>%s</h3>", _("No action taken!"));
     } else {
-	$removedTotal = 0;
-	foreach (getRequestVar('delete') as $key) {
-	    list ($albumName, $imageId, $key) = explode('|', $key);
-	    $albumQueue[$albumName][$imageId][$key] = 1;
-	}
-
-	$albumDB = new AlbumDB();
-	foreach ($albumQueue as $albumName => $imageQueue) {
-	    $album = $albumDB->getAlbumByName($albumName);
-	    $removedInAlbum = 0;
-	    foreach ($imageQueue as $imageId => $keys) {
-		$photoIndex = $album->getPhotoIndex($imageId);
-		for ($j = $album->numComments($photoIndex); $j > 0; $j--) {
-		    $comment = $album->getComment($photoIndex, $j);
-		    $key = getCommentKey($comment);
-		    if (isset($keys[$key])) {
-			$removedInAlbum++;
-			$removedTotal++;
-			$album->deleteComment($photoIndex, $j);
-		    }
-		}
-	    }
-	    $album->save(array(_("Deleted %d spam comments"), $removedInAlbum));
-	}
-
-	printf("<h3> %s </h3>",
-		pluralize_n2(ngettext("Deleted %d spam comment.", "Deleted %d spam comments.", $removedTotal), 
-				$removedTotal, _("No comment deleted.")));
+        $removedTotal = 0;
+        foreach (getRequestVar('delete') as $key) {
+            list ($albumName, $imageId, $key) = explode('|', $key);
+            $albumQueue[$albumName][$imageId][$key] = 1;
+        }
+
+        $albumDB = new AlbumDB();
+        foreach ($albumQueue as $albumName => $imageQueue) {
+            $album = $albumDB->getAlbumByName($albumName);
+            $removedInAlbum = 0;
+            foreach ($imageQueue as $imageId => $keys) {
+                $photoIndex = $album->getPhotoIndex($imageId);
+                for ($j = $album->numComments($photoIndex); $j > 0; $j--) {
+                    $comment = $album->getComment($photoIndex, $j);
+                    $key = getCommentKey($comment);
+                    if (isset($keys[$key])) {
+                        $removedInAlbum++;
+                        $removedTotal++;
+                        $album->deleteComment($photoIndex, $j);
+                    }
+                }
+            }
+            $album->save(array(_("Deleted %d spam comments"), $removedInAlbum));
+        }
+
+        printf("<h3> %s </h3>",
+            gTranslate('core', "Deleted %d spam comment.", "Deleted %d spam comments.",
+            $removedTotal, _("No comment deleted.")));
     }
 }
 
 function findBlacklistedComments() {
     global $gallery;
     $list = array();
-
     $start = explode(' ', microtime());
 
     $albumDB = new AlbumDB();
     $totals = array('albums' => 0,
-		    'photos' => 0,
-		    'comments' => 0);
+        'photos'   => 0,
+        'comments' => 0);
     $totalComments = 0;
 
     foreach ($albumDB->albumList as $album) {
-	set_time_limit(30);
-	$totals['albums']++;
-	$numPhotos = $album->numPhotos(1);
-	for ($i = 1; $i <= $numPhotos; $i++) {
-	    set_time_limit(30);
-	    $photo = $album->getPhoto($i);
-	    $numComments = $album->numComments($i);
-	    if ($numComments > 0) {
-		for ($j = 1; $j <= $numComments; $j++) {
-		    set_time_limit(30);
-		    $comment = $album->getComment($i, $j);
-		    $totalComments++;
-		    if (isBlacklistedComment($comment)) {
-			$list[] = array('albumName' => $album->fields['name'],
-					'imageId' => $photo->image->getId(),
-					'comment' => $comment,
-					'key' => getCommentKey($comment));
-		    }
-		}
-		$totals['comments'] += $numComments;
-	    }
-	}
-	$totals['photos'] += $numPhotos;
+        set_time_limit(30);
+        $totals['albums']++;
+        $numPhotos = $album->numPhotos(1);
+        for ($i = 1; $i <= $numPhotos; $i++) {
+            set_time_limit(30);
+            $photo = $album->getPhoto($i);
+            $numComments = $album->numComments($i);
+            if ($numComments > 0) {
+                for ($j = 1; $j <= $numComments; $j++) {
+                    set_time_limit(30);
+                    $comment = $album->getComment($i, $j);
+                    $totalComments++;
+                    if (isBlacklistedComment($comment)) {
+                        $list[] = array('albumName' => $album->fields['name'],
+                            'imageId' => $photo->image->getId(),
+                            'comment' => $comment,
+                            'key' => getCommentKey($comment));
+                    }
+                }
+                $totals['comments'] += $numComments;
+            }
+        }
+        $totals['photos'] += $numPhotos;
     }
 
     $stop = explode(' ', microtime());
     $elapsed = ($stop[0] - $start[0]) + ($stop[1] - $start[1]);
 
-    printf("<h3> %s </h3>",
-	   sprintf(_("Scanned %d albums, %d photos, %d comments in %2.2f seconds"),
-		   $totals['albums'],
-		   $totals['photos'],
-		   $totals['comments'],
-		   $elapsed));
+    sprintf('<h3>'. _("Scanned %d albums, %d photos, %d comments in %2.2f seconds") .'</h3>',
+        $totals['albums'],
+        $totals['photos'],
+        $totals['comments'],
+        $elapsed);
     if (empty($list)) {
-	printf("<h3>%s</h3>", _("No spam comments."));
+        printf("<h3>%s</h3>", _("No spam comments."));
     } else {
-	print makeFormIntro("tools/despam-comments.php", array("name" => "deleteComments", "method" => "POST"));
-	print "\n<table>";
-	printf("\n\t<tr> <th> %s </th> <th>%s</th> </tr>",
-	       _("Entry"), _("Delete"));
-	foreach ($list as $entry) {
-	    print "\n\t<tr>";
-	    print "<td>";
-	    printf("%s: <a href=\"%s\">%s/%s</a> <br/>\n", _("Location"),
-		   makeAlbumUrl($entry['albumName'], $entry['imageId']),
-		   $entry['albumName'],
-		   $entry['imageId']);
-	    printf("%s: %s (on %s from %s) <br/>\n", _("Commenter"),
-		   $entry['comment']->getName(),
-		   $entry['comment']->getDatePosted(),
-		   $entry['comment']->getIPNumber());
-	    printf("%s: %s <br/>\n", _("Comment"), $entry['comment']->getCommentText());
-	    print "</td>";
-	    print "<td>";
-	    printf("<input type=\"checkbox\" name=\"delete[]\" value=\"%s\" checked=\"checked\"/>",
-		   sprintf("%s|%s|%s",
-			   $entry['albumName'],
-			   $entry['imageId'],
-			   $entry['key']));
-	    print "</td>";
-	    print "\n\t</tr>";
-	    print "\n\t" . '<tr><td colspan="2"><hr></td></tr>';
-	}
-	print("<input type=\"hidden\" name=\"g1_mode\" value=\"deleteComments\"/>");
-	print "</table>";
-	printf("<input type=\"submit\" value=\"%s\"/>", _("Delete Checked Comments"));
-	print "</form>";
+        print makeFormIntro('tools/despam-comments.php', array('name' => 'deleteComments'));
+        print "\n<table>";
+        printf("\n\t<tr> <th> %s </th> <th>%s</th> </tr>", _("Entry"), _("Delete"));
+        foreach ($list as $entry) {
+            print "\n\t<tr>";
+            print "<td>";
+            printf("%s: <a href=\"%s\">%s/%s</a> <br/>\n", _("Location"),
+            makeAlbumUrl($entry['albumName'], $entry['imageId']),
+                $entry['albumName'],
+                $entry['imageId']);
+            printf("%s: %s (on %s from %s) <br/>\n", _("Commenter"),
+                $entry['comment']->getName(),
+                $entry['comment']->getDatePosted(),
+                $entry['comment']->getIPNumber());
+            printf("%s: %s <br/>\n", _("Comment"), $entry['comment']->getCommentText());
+            print "</td>";
+            print "<td>";
+            printf("<input type=\"checkbox\" name=\"delete[]\" value=\"%s\" checked=\"checked\"/>",
+            sprintf("%s|%s|%s",
+                $entry['albumName'],
+                $entry['imageId'],
+                $entry['key']));
+            print "</td>";
+            print "\n\t</tr>";
+            print "\n\t" . '<tr><td colspan="2"><hr></td></tr>';
+        }
+        print("<input type=\"hidden\" name=\"g1_mode\" value=\"deleteComments\"/>");
+        print "</table>";
+        printf("<input type=\"submit\" value=\"%s\"/>", _("Delete Checked Comments"));
+        print "</form>";
     }
 }
 
 function getCommentKey(&$comment) {
     return md5($comment->getCommentText() .
-	       $comment->getDatePosted() .
-	       $comment->getIPNumber() .
-	       $comment->getName() .
-	       $comment->getUID());
+        $comment->getDatePosted() .
+        $comment->getIPNumber() .
+        $comment->getName() .
+        $comment->getUID());
 }
 
 function editBlacklist() {
     $blacklist = loadBlacklist();
     printf("<h2>%s</h2>", _("Delete from blacklist"));
     if (!getRequestVar('delete')) {
-	printf("<h3>%s</h3>", _("No action taken!"));
+        printf("<h3>%s</h3>", _("No action taken!"));
     } else {
-	$removed = array();
-	foreach (getRequestVar('delete') as $key) {
-	    if (isset($blacklist['entries'][$key])) {
-		$removed[$blacklist['entries'][$key]] = 1;
-		unset($blacklist['entries'][$key]);
-	    }
-	}
-
-	if (empty($removed)) {
-	    printf("<h3>%s</h3>", _("No action taken!"));
-	} else {
-	    $success = saveBlacklist($blacklist);
-	    if (!$success) {
-		printf("<h3>%s</h3>", _("Error saving blacklist!"));
-	    } else {
-		printf("<h3>%s</h3>",
-			pluralize_n2(ngettext("Deleted %d entry from blacklist.", "Deleted %d entries from blacklist", sizeof($removed)), 
-				 sizeof($removed)));
-		print "<ul>";
-		foreach (array_keys($removed) as $entry) {
-		    printf("<li> %s </li>", $entry);
-		}
-		print "</ul>";
-	    }
-	}
+        $removed = array();
+        foreach (getRequestVar('delete') as $key) {
+            if (isset($blacklist['entries'][$key])) {
+                $removed[$blacklist['entries'][$key]] = 1;
+                unset($blacklist['entries'][$key]);
+            }
+        }
+
+        if (empty($removed)) {
+            printf("<h3>%s</h3>", _("No action taken!"));
+        } else {
+            $success = saveBlacklist($blacklist);
+            if (!$success) {
+                printf("<h3>%s</h3>", _("Error saving blacklist!"));
+            } else {
+                printf("<h3>%s</h3>",
+                gTranslate('core', "Deleted %d entry from blacklist.", "Deleted %d entries from blacklist",
+                sizeof($removed)));
+                print "<ul>";
+                foreach (array_keys($removed) as $entry) {
+                    printf("<li> %s </li>", $entry);
+                }
+                print "</ul>";
+            }
+        }
     }
 }
 
@@ -289,48 +286,48 @@
     $added = array();
     $newlines = split("[\n\r]+", getRequestVar('newBlacklistEntries'));
     foreach ($newlines as $line) {
-	$line = ereg_replace("#.*", "", $line);
-	$line = trim($line);
-	if (empty($line)) {
-	    continue;
-	}
-	
-	// Check for duplicates
-	$key = md5($line);
-	if (isset($blacklist['entries'][$key])) {
-	    $dupes[$line] = 1;
-	} else {
-	    $blacklist['entries'][$key] = $line;
-	    $added[$line] = 1;
-	}
+        $line = ereg_replace("#.*", "", $line);
+        $line = trim($line);
+        if (empty($line)) {
+            continue;
+        }
+
+        // Check for duplicates
+        $key = md5($line);
+        if (isset($blacklist['entries'][$key])) {
+            $dupes[$line] = 1;
+        } else {
+            $blacklist['entries'][$key] = $line;
+            $added[$line] = 1;
+        }
     }
-    
+
     $success = saveBlacklist($blacklist);
 
     if (!$success) {
-	printf("<h3>%s</h3>", _("Error saving blacklist!"));
+        printf("<h3>%s</h3>", _("Error saving blacklist!"));
     } else {
-	if (!empty($added)) {
-	    printf("<h3>%s</h3>", _("Added to blacklist:"));
-	    print "<ul>";
-	    foreach (array_keys($added) as $entry) {
-		printf("<li> %s </li>", $entry);
-	    }
-	    print "</ul>";
-	}
-	
-	if (!empty($dupes)) {
-	    printf("<h3>%s</h3>", _("Following duplicates were not added:"));
-	    print "<ul>";
-	    foreach (array_keys($dupes) as $entry) {
-		printf("<li> %s </li>", $entry);
-	    }
-	    print "</ul>";
-	}
-	
-	if (empty($added) && empty($dupes) && empty($removed)) {
-	    printf("<h3>%s</h3>", _("No action taken!"));
-	}
+        if (!empty($added)) {
+            printf("<h3>%s</h3>", _("Added to blacklist:"));
+            print "<ul>";
+            foreach (array_keys($added) as $entry) {
+                printf("<li> %s </li>", $entry);
+            }
+            print "</ul>";
+        }
+
+        if (!empty($dupes)) {
+            printf("<h3>%s</h3>", _("Following duplicates were not added:"));
+            print "<ul>";
+            foreach (array_keys($dupes) as $entry) {
+                printf("<li> %s </li>", $entry);
+            }
+            print "</ul>";
+        }
+
+        if (empty($added) && empty($dupes) && empty($removed)) {
+            printf("<h3>%s</h3>", _("No action taken!"));
+        }
     }
 }
 
@@ -338,42 +335,41 @@
     $blacklist = loadBlacklist();
     printf("<h3>%s (%d) </h3>", _("Current blacklist"), sizeof($blacklist['entries']));
     if (empty($blacklist['entries'])) {
-	print _("Your blacklist is empty.  You must add new entries to your blacklist for it to be useful.");
+        print _("Your blacklist is empty.  You must add new entries to your blacklist for it to be useful.");
     } else {
         echo insertFormJS('updateBlacklistForm');
 
-	print makeFormIntro("tools/despam-comments.php", array('name' => 'updateBlacklistForm', 'method' => 'POST'));
-	$blacklistTable = new galleryTable();
+        print makeFormIntro("tools/despam-comments.php", array('name' => 'updateBlacklistForm'));
+        $blacklistTable = new galleryTable();
         $blacklistTable->setAttrs(array('align' => 'center', 'width' => '60%'));
-	$blacklistTable->setHeaders(array(_("Entry"), _("Delete")));
-	$blacklistTable->setColumnCount(2);
+        $blacklistTable->setHeaders(array(_("Entry"), _("Delete")));
+        $blacklistTable->setColumnCount(2);
 
-	foreach ($blacklist['entries'] as $key => $regex) {
-            $blacklistTable->addElement(array(
-                'content' => wordwrap($regex, 80, "<br>", true)));
+        foreach ($blacklist['entries'] as $key => $regex) {
+            $blacklistTable->addElement(array('content' => wordwrap($regex, 80, "<br>", true)));
 
             $blacklistTable->addElement(array(
-                'content' => '<input type="checkbox" name="delete[]" value="'. $key .'%s">',
-		'cellArgs' => array('align' => 'center')));
-	}
+                'content' => '<input type="checkbox" name="delete[]" value="'. $key .'">',
+                'cellArgs' => array('align' => 'center')));
+        }
         $blacklistTable->addElement(array(
             'content' => insertFormJSLinks('delete[]'),
-	    'cellArgs' => array('colspan' => 2, 'align' => 'center')));
+            'cellArgs' => array('colspan' => 2, 'align' => 'center')));
 
-	echo $blacklistTable->render();
+        echo $blacklistTable->render();
 
-	print "\n<input type=\"hidden\" name=\"g1_mode\" value=\"editBlacklist\">";
-	printf("\n<input type=\"submit\" value=\"%s\">", _("Update Blacklist"));
-	print "\n</form>";
+        print "\n<input type=\"hidden\" name=\"g1_mode\" value=\"editBlacklist\">";
+        printf("\n<input type=\"submit\" value=\"%s\">", _("Update Blacklist"));
+        print "\n</form>";
     }
 }
 
 function showAddBox() {
-    print makeFormIntro("tools/despam-comments.php", array("method" => "POST"));
+    print makeFormIntro('tools/despam-comments.php');
     printf("<h2>%s</h2>", _("Enter new blacklist entries"));
     print _("Useful blacklists: "). "<ul>";
     foreach (array("http://www.jayallen.org/comment_spam/blacklist.txt") as $url) {
-	printf("<li> <a href=\"%s\">%s</a> ", $url, $url);
+        printf("<li> <a href=\"%s\">%s</a> ", $url, $url);
     }
     print "</ul>";
     print _("You can just cut and paste these blacklists into the text box, or add new entries of your own.");
@@ -385,19 +381,18 @@
 }
 
 function offerOptions() {
-	$options = array(
-                "findBlacklistedComments" => _("Find blacklisted comments"),
-                "viewBlacklist" => _("View/Edit blacklist"),
-                "addBlacklistEntries" => _("Add blacklist entries")
-	);
-
-	echo _("Options");
-	echo "\n<ol>";
-	foreach ($options as $key => $text) {
-		printf("\n\t<li><a href=\"%s\">%s</a></li>",
-			makeGalleryUrl('tools/despam-comments.php', array('g1_mode' => $key)),
-			$text);
-	}
-	echo "\n</ol>";
+    $options = array(
+        "findBlacklistedComments" => _("Find blacklisted comments"),
+        "viewBlacklist" => _("View/Edit blacklist"),
+        "addBlacklistEntries" => _("Add blacklist entries")
+    );
+
+    echo _("Options");
+    echo "\n<ol>";
+    foreach ($options as $key => $text) {
+        printf("\n\t<li><a href=\"%s\">%s</a></li>",
+        makeGalleryUrl('tools/despam-comments.php', array('g1_mode' => $key)), $text);
+    }
+    echo "\n</ol>";
 }
 ?>
diff -Naur gallery-1.5.1/tools/find_orphans.php gallery-1.5.2/tools/find_orphans.php
--- gallery-1.5.1/tools/find_orphans.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/tools/find_orphans.php	2006-01-06 07:32:51.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: find_orphans.php,v 1.24.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: find_orphans.php,v 1.25.2.1 2006/01/06 06:32:51 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/tools/g1-report.php gallery-1.5.2/tools/g1-report.php
--- gallery-1.5.1/tools/g1-report.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/tools/g1-report.php	2006-01-06 07:32:51.000000000 +0100
@@ -3,7 +3,7 @@
  * $RCSfile: g1-report.php,v $
  *
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,22 +20,23 @@
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  */
 
-/*
- * Authors: Jens Tkotz, Bharat Mediratta
+/**
+ * @author Jens Tkotz
+ * @author Bharat Mediratta
  */
 
 include (dirname(dirname(__FILE__)) . '/Version.php');
 if(substr(PHP_OS, 0, 3) == 'WIN') {
-	include (dirname(dirname(__FILE__)) . '/platform/fs_win32.php');
+    include (dirname(dirname(__FILE__)) . '/platform/fs_win32.php');
 } else {
-	include(dirname(dirname(__FILE__)) . '/platform/fs_unix.php');
+    include(dirname(dirname(__FILE__)) . '/platform/fs_unix.php');
 }
 
 include (dirname(dirname(__FILE__)) . '/util.php');
 
 /*
- * Turn down the error reporting to just critical errors for now.
- */
+* Turn down the error reporting to just critical errors for now.
+*/
 error_reporting(E_ALL & ~E_NOTICE);
 
 $poFiles = findPoFiles(dirname(dirname(__FILE__)) . '/locale');
@@ -44,182 +45,183 @@
 exit;
 
 function findPoFiles($dir) {
-	$handle=fs_opendir($dir);
-	while ($file = readdir($handle)) {
-        	if (preg_match("/^([a-z]{2}_[A-Z]{2})/", $file)) {
-                	if ($file == "en_GB" || $file == "en_US") continue;
-			$subdir=opendir("$dir/$file");
-        	        while ($subfile = readdir($subdir)) {
-				if (preg_match("/\.po$/", $subfile)) {
-					$results[] = "$dir/$file/$subfile";	
-				}
-			}
-		}
-	}
-return $results;
+    $handle = fs_opendir($dir);
+    while ($file = readdir($handle)) {
+        if (preg_match("/^([a-z]{2}_[A-Z]{2})/", $file)) {
+            if ($file == "en_GB" || $file == "en_US") continue;
+            $subdir=opendir("$dir/$file");
+            while ($subfile = readdir($subdir)) {
+                if (preg_match("/\.po$/", $subfile) && $subfile != "compendium.po") {
+                    $results[] = "$dir/$file/$subfile";
+                }
+            }
+        }
+    }
+    return $results;
 }
 
 function parsePoFiles($poFiles) {
-
     /*
-     * Parse each .po file for relevant statistics and gather it together into a
-     * single data structure.
-     */
+    * Parse each .po file for relevant statistics and gather it together into a
+    * single data structure.
+    */
 
-    $nls=getNLS();
+    $nls = getNLS();
     $poData = array();
     $seenPlugins = array();
     $maxMessageCount = array();
     foreach ($poFiles as $poFile) {
-	preg_match("/^(.*?)-gallery_(.*?).po$/", basename($poFile), $matches);
-	list ($plugin, $locale) = array($matches[2], $matches[1]);
-	$seenPlugins[$plugin] = 1;
-
-	$fuzzy = 0;
-	$translated = 0;
-	$untranslated = 0;
-	$obsolete = 0;
-	/*
-	 * Untranslated:
-	 *   msgid "foo"
-	 *   msgstr ""
-	 *
-	 * Translated:
-	 *   msgid "foo"
-	 *   msgstr "bar"
-	 *
-	 * Translated:
-	 *   msgid "foo"
-	 *   msgstr ""
-	 *   "blah blah blah"
-	 *
-	 * Untranslated: 
-	 *   msgid "foo"
-	 *   msgstr[0] ""
-	 *   msgstr[1] ""
-	 *   msgstr[2] ""
-	 *
-	 * Translated:
-	 *   msgid "foo"
-	 *   msgstr[0] "bar1"
-	 *   msgstr[1] "bar2"
-	 *   msgstr[2] "bar3"
-	 *
-	 * Translated, Fuzzy:
-	 *   # fuzzy
-	 *   msgid "foo"
-	 *   msgstr "bar"
-	 *  
-	 * Deleted, Fuzzy:
-	 *   # fuzzy
-	 *   #~ msgid "foo"
-	 *   #~ msgstr "bar"
-	 *  
-	 */
-	$msgId = null;
-	$nextIsFuzzy = 0;
-	$lastLineWasEmptyMsgStr = 0;
-	$lastLineWasEmptyMsgId = 0;
-	foreach (file($poFile) as $line) {
-	    /*
-	     * Scan for:
-	     *   msgid "foo bar"
-	     *
-	     * and:
-	     *   msgid ""
-	     *   "foo bar"
-	     */
-	    if (preg_match('/^msgid "(.*)"/', $line, $matches)) {
-		if (empty($matches[1])) {
-		    $lastLineWasEmptyMsgId = 1;
-		} else {
-		    $msgId = $line;
-		}
-		continue;
-	    }
-
-	    /*
-	     * Scan for:
-	     *   msgid ""
-	     *   "foo bar"
-	     */
-	    if ($lastLineWasEmptyMsgId) {
-		if (preg_match('/^\s*"(.*)"/', $line, $matches)) {
-		    $msgId = $line;
-		}
-		$lastLineWasEmptyMsgId = 0;
-		continue;
-	    }
-
-	    if (strpos($line, '#, fuzzy') === 0) {
-		$nextIsFuzzy = 1;
-		continue;
-	    }	    
-
-	    if (preg_match('/^#~ msgid "(.*)"/', $line, $matches)) {
-		$obsolete++;
-		$nextIsFuzzy = 0;
-	    }
-
-	    /*
-	     * Scan for:
-	     *   msgstr ""
-	     *   "foo bar"
-	     */
-	    if ($lastLineWasEmptyMsgStr) {
-		if (preg_match('/^\s*".+"/', $line)) {
-		    if ($nextIsFuzzy) {
-			$fuzzy++;
-		    }
-		    $translated++;
-		} else {
-		    if ($nextIsFuzzy) {
-			print "ERROR: DISCARD FUZZY for [$locale, $plugin, $msgId]<br>";
-		    }
-		    $untranslated++;
-		}
-		$msgId = null;
-		$nextIsFuzzy = 0;
-		$lastLineWasEmptyMsgStr = 0;
-	    }
-		
-	    /*
-	     * Scan for:
-	     *   msgstr "foo bar"
-	     *
-	     * or:
-	     *   msgstr ""
-	     *   "foo bar"
-	     */
-	    if (!empty($msgId)) {
-		if (preg_match('/^msgstr/', $line)) {
-		    if (preg_match('/^msgstr(.*)""/', $line)) {
-			$lastLineWasEmptyMsgStr = 1;
-		    } else {
-			if ($nextIsFuzzy) {
-			    $fuzzy++;
-			}
-			$translated++;
-			$msgId = null;
-			$nextIsFuzzy = 0;
-		    }
-		}
-	    }
-	}
-
-	$total = $translated + $untranslated;
-	$percentDone = round(($translated - $fuzzy) / $total * 100,2);
-	$poData[$locale]['plugins'][$plugin] = array('translated' => $translated,
-						     'untranslated' => $untranslated,
-						     'total' => $total,
-						     'fuzzy' => $fuzzy,
-						     'obsolete' => $obsolete,
-						     'percentDone' => $percentDone);
-
-	/* Keep track of the largest message count we've seen per plugin */
-	if (empty($maxMessageCount[$plugin]) || $total > $maxMessageCount[$plugin]) {
-	    $maxMessageCount[$plugin] = $total;
-	}
+        preg_match("/^(.*?)-gallery_(.*?).po$/", basename($poFile), $matches);
+        list ($plugin, $locale) = array($matches[2], $matches[1]);
+        $seenPlugins[$plugin] = 1;
+
+        $fuzzy = 0;
+        $translated = 0;
+        $untranslated = 0;
+        $obsolete = 0;
+        /*
+        * Untranslated:
+        *   msgid "foo"
+        *   msgstr ""
+        *
+        * Translated:
+        *   msgid "foo"
+        *   msgstr "bar"
+        *
+        * Translated:
+        *   msgid "foo"
+        *   msgstr ""
+        *   "blah blah blah"
+        *
+        * Untranslated:
+        *   msgid "foo"
+        *   msgstr[0] ""
+        *   msgstr[1] ""
+        *   msgstr[2] ""
+        *
+        * Translated:
+        *   msgid "foo"
+        *   msgstr[0] "bar1"
+        *   msgstr[1] "bar2"
+        *   msgstr[2] "bar3"
+        *
+        * Translated, Fuzzy:
+        *   # fuzzy
+        *   msgid "foo"
+        *   msgstr "bar"
+        *
+        * Deleted, Fuzzy:
+        *   # fuzzy
+        *   #~ msgid "foo"
+        *   #~ msgstr "bar"
+        *
+        */
+        $msgId = null;
+        $nextIsFuzzy = 0;
+        $lastLineWasEmptyMsgStr = 0;
+        $lastLineWasEmptyMsgId = 0;
+        foreach (file($poFile) as $line) {
+            /*
+            * Scan for:
+            *   msgid "foo bar"
+            *
+            * and:
+            *   msgid ""
+            *   "foo bar"
+            */
+            if (preg_match('/^msgid "(.*)"/', $line, $matches)) {
+                if (empty($matches[1])) {
+                    $lastLineWasEmptyMsgId = 1;
+                } else {
+                    $msgId = $line;
+                }
+                continue;
+            }
+
+            /*
+            * Scan for:
+            *   msgid ""
+            *   "foo bar"
+            */
+            if ($lastLineWasEmptyMsgId) {
+                if (preg_match('/^\s*"(.*)"/', $line, $matches)) {
+                    $msgId = $line;
+                }
+                $lastLineWasEmptyMsgId = 0;
+                continue;
+            }
+
+            if (strpos($line, '#, fuzzy') === 0) {
+                $nextIsFuzzy = 1;
+                continue;
+            }
+
+            if (preg_match('/^#~ msgid "(.*)"/', $line, $matches)) {
+                $obsolete++;
+                $nextIsFuzzy = 0;
+            }
+
+            /*
+            * Scan for:
+            *   msgstr ""
+            *   "foo bar"
+            */
+            if ($lastLineWasEmptyMsgStr) {
+                if (preg_match('/^\s*".+"/', $line)) {
+                    if ($nextIsFuzzy) {
+                        $fuzzy++;
+                    }
+                    $translated++;
+                } else {
+                    if ($nextIsFuzzy) {
+                        print "ERROR: DISCARD FUZZY for [$locale, $plugin, $msgId]<br>";
+                    }
+                    $untranslated++;
+                }
+                $msgId = null;
+                $nextIsFuzzy = 0;
+                $lastLineWasEmptyMsgStr = 0;
+            }
+
+            /*
+            * Scan for:
+            *   msgstr "foo bar"
+            *
+            * or:
+            *   msgstr ""
+            *   "foo bar"
+            */
+            if (!empty($msgId)) {
+                if (preg_match('/^msgstr/', $line)) {
+                    if (preg_match('/^msgstr(.*)""/', $line)) {
+                        $lastLineWasEmptyMsgStr = 1;
+                    } else {
+                        if ($nextIsFuzzy) {
+                            $fuzzy++;
+                        }
+                        $translated++;
+                        $msgId = null;
+                        $nextIsFuzzy = 0;
+                    }
+                }
+            }
+        }
+
+        $total = $translated + $untranslated;
+        $percentDone = round(($translated - $fuzzy) / $total * 100,2);
+        $poData[$locale]['plugins'][$plugin] = array(
+            'translated' => $translated,
+            'untranslated' => $untranslated,
+            'total' => $total,
+            'fuzzy' => $fuzzy,
+            'obsolete' => $obsolete,
+            'percentDone' => $percentDone
+        );
+
+        /* Keep track of the largest message count we've seen per plugin */
+        if (empty($maxMessageCount[$plugin]) || $total > $maxMessageCount[$plugin]) {
+            $maxMessageCount[$plugin] = $total;
+        }
     }
 
     /* Overall total message count */
@@ -227,47 +229,47 @@
 
     $total_percentDone=array();
     foreach (array_keys($poData) as $locale) {
-		$pluginTotal = 0;
-	
-		/* Fill in any missing locales */
-		foreach (array_keys($seenPlugins) as $plugin) {
-			if (!isset($poData[$locale]['plugins'][$plugin])) {
-				$poData[$locale]['plugins'][$plugin]['missing'] = 1;
-				$poData[$locale]['plugins'][$plugin]['percentDone'] = 0;
-			} else {
-				/*
-				 * debug
-				printf("[$locale, $plugin] [%d, %d]<br>",
-				$poData[$locale]['plugins'][$plugin]['translated'],
-				$poData[$locale]['plugins'][$plugin]['fuzzy']);
-				*/
-				$pluginTotal += $poData[$locale]['plugins'][$plugin]['translated'] - $poData[$locale]['plugins'][$plugin]['fuzzy'];
-				$total_percentDone[$plugin] += $poData[$locale]['plugins'][$plugin]['percentDone'];
-			}
-		}
-		uasort($poData[$locale]['plugins'], 'sortByPercentDone');
-
-		/* Figure out total percentage */
-		$poData[$locale]['percentDone'] = round($pluginTotal / $overallTotal * 100,2);
-		
-		$total_percentDone['all'] += $poData[$locale]['percentDone'];
+        $pluginTotal = 0;
 
-		/* Set Language Name */
-		$poData[$locale]['langname'] = $nls['language'][$locale];
+        /* Fill in any missing locales */
+        foreach (array_keys($seenPlugins) as $plugin) {
+            if (!isset($poData[$locale]['plugins'][$plugin])) {
+                $poData[$locale]['plugins'][$plugin]['missing'] = 1;
+                $poData[$locale]['plugins'][$plugin]['percentDone'] = 0;
+            } else {
+                /*
+                * debug
+                printf("[$locale, $plugin] [%d, %d]<br>",
+                $poData[$locale]['plugins'][$plugin]['translated'],
+                $poData[$locale]['plugins'][$plugin]['fuzzy']);
+                */
+                $pluginTotal += $poData[$locale]['plugins'][$plugin]['translated'] - $poData[$locale]['plugins'][$plugin]['fuzzy'];
+                $total_percentDone[$plugin] += $poData[$locale]['plugins'][$plugin]['percentDone'];
+            }
+        }
+        uasort($poData[$locale]['plugins'], 'sortByPercentDone');
+
+        /* Figure out total percentage */
+        $poData[$locale]['percentDone'] = round($pluginTotal / $overallTotal * 100,2);
+
+        $total_percentDone['all'] += $poData[$locale]['percentDone'];
+
+        /* Set Language Name */
+        $poData[$locale]['langname'] = $nls['language'][$locale];
     }
 
-    	/* Sort locales by overall total */
-	uasort($poData, 'sortByPercentDone');
+    /* Sort locales by overall total */
+    uasort($poData, 'sortByPercentDone');
+
+    /* Sort totals by total :) */
+    uasort($total_percentDone, 'sortByPercentDone');
 
-	/* Sort totals by total :) */
-	uasort($total_percentDone, 'sortByPercentDone');
-    
     return array($poData,$total_percentDone);
 }
 
 function sortByPercentDone($a, $b) {
     if ($a['percentDone'] == $b['percentDone']) {
-	return 0;
+        return 0;
     }
     return ($a['percentDone'] < $b['percentDone']) ? 1 : -1;
 }
@@ -276,12 +278,12 @@
 function percentColor($percent) {
     $border=50;
     if ($percent < $border) {
-	$color = dechex(255 - $percent * 2) . "0000";
+        $color = dechex(255 - $percent * 2) . "0000";
     } else {
-	$color= "00" . dechex( 55 + $percent * 2 ). "00";
+        $color= "00" . dechex( 55 + $percent * 2 ). "00";
     }
     if (strlen($color) <6) {
-	$color= "0" . $color;
+        $color= "0" . $color;
     }
 
     return $color;
diff -Naur gallery-1.5.1/tools/include/main.inc gallery-1.5.2/tools/include/main.inc
--- gallery-1.5.1/tools/include/main.inc	2004-09-02 02:18:09.000000000 +0200
+++ gallery-1.5.2/tools/include/main.inc	2005-12-23 20:20:39.000000000 +0100
@@ -13,18 +13,18 @@
 	<table>
 <?php
 	$index = 0;
-	$nr=1;
-	$old_percentDone=0;
+	$nr = 1;
+	$old_percentDone = 0;
 	foreach ($reportData as $locale => $localeData) {
 		if (!($index % 5)) {
 			include(dirname(__FILE__) . '/row_header.inc');
 		}
 		$index++;
 		$class = $index % 2 ? 'dark' : 'light';
-		if ($localeData['plugins']['core']['percentDone'] <50) {
-			$wclass='kicked';
+		if (($localeData['plugins']['core']['percentDone'] < 50 || $localeData['plugins']['common']['percentDone'] <40) && $pluginData['percentDone'] <50) {
+			$wclass = 'kicked';
 		} else {
-			$wclass=$class;
+			$wclass = $class;
 		}
 ?>
 	<tr>
diff -Naur gallery-1.5.1/tools/validate_albums.php gallery-1.5.2/tools/validate_albums.php
--- gallery-1.5.1/tools/validate_albums.php	2005-09-13 00:41:29.000000000 +0200
+++ gallery-1.5.2/tools/validate_albums.php	2006-01-06 07:32:51.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: validate_albums.php,v 1.4.2.1 2005/09/12 22:41:29 dmolavi Exp $
+ * $Id: validate_albums.php,v 1.5.2.1 2006/01/06 06:32:51 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/upgrade_album.php gallery-1.5.2/upgrade_album.php
--- gallery-1.5.1/upgrade_album.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/upgrade_album.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: upgrade_album.php,v 1.42.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: upgrade_album.php,v 1.43.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/upgrade_users.php gallery-1.5.2/upgrade_users.php
--- gallery-1.5.1/upgrade_users.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/upgrade_users.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: upgrade_users.php,v 1.13.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: upgrade_users.php,v 1.14.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/user_preferences.php gallery-1.5.2/user_preferences.php
--- gallery-1.5.1/user_preferences.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/user_preferences.php	2006-01-18 19:06:02.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: user_preferences.php,v 1.44.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: user_preferences.php,v 1.47.2.3 2006/01/18 18:06:02 jenst Exp $
  */
 ?>
 <?php
@@ -32,9 +32,16 @@
 	exit;	
 }
 
-$errorCount=0;
+$errorCount = 0;
 if (isset($save)) {
-	if (strcmp($gallery->user->getUsername(), $uname)) {
+	// security check;
+	if($fullname != strip_tags($fullname)) {
+	    $gErrors["fullname"] = 
+		sprintf(_("%s contained invalid data, resetting input."), htmlentities($fullname));
+	    $errorCount++;
+        }
+
+	if ($gallery->user->getUsername() != $uname) {
 		if ($gallery->user->isAdmin()) {
 			$gErrors["uname"] = $gallery->userDB->validNewUserName($uname);
 			if ($gErrors["uname"]) {
@@ -68,6 +75,11 @@
 		}
 	}
 
+	if (!empty($email) && !check_email($email)) {
+                $gErrors['email'] = _("You must specify a valid email address.");
+                $errorCount++;
+        }
+
 	if (!$errorCount) {
 		$gallery->user->setUsername($uname);
 		$gallery->user->setFullname($fullname);
@@ -84,7 +96,7 @@
 
 		// Switch over to the new username in the session
 		$gallery->session->username = $uname;
-		dismissAndReload();
+		$saveOK = true;
 	}
 }
 
@@ -107,34 +119,31 @@
 $isAdmin = $gallery->user->isAdmin() ? 1 : 0;
 
 doctype();
-?>
-<html>
-<head>
-  <title><?php echo _("Change User Preferences") ?></title>
-  <?php common_header(); ?>
-</head>
-<body dir="<?php echo $gallery->direction ?>" class="popupbody">
-<div class="popuphead"><?php echo _("Change User Preferences") ?></div>
-<div class="popup" align="center">
-<?php 
-	echo _("You can change your user information here.");
-	echo _("If you want to change your password, you must provide your old password and then enter the new one twice.");
-	echo _("You can change your username to any combination of letters and digits.");
-?>
 
-<br>
+printPopupStart(_("Change User Preferences"), _("Change User Preferences"), langLeft());
 
-<?php echo makeFormIntro("user_preferences.php", array(
-			"name" => "usermodify_form", 
-			"method" => "POST"));
-?>
+if(isset($saveOK)) {  
+    echo infoLine(_("User successfully updated."), 'success');
+    echo "\n<br>\n";
+}
 
-<br>
-<?php include(dirname(__FILE__) . '/html/userData.inc'); ?>
-<br>
+echo _("You can change your user information here.");
+echo _("If you want to change your password, you must provide your old password and then enter the new one twice.");
+echo _("You can change your username to any combination of letters and digits.");
+
+echo "\n<br>\n";
+
+echo makeFormIntro('user_preferences.php', array('name' => 'usermodify_form'));
+
+echo "\n<br>";
+include(dirname(__FILE__) . '/html/userData.inc');
 
-<input type="submit" name="save" value="<?php echo _("Save") ?>">
-<input type="button" name="cancel" value="<?php echo _("Cancel") ?>" onclick="parent.close()">
+?>
+<br>
+<div align="center">
+	<input type="submit" name="save" value="<?php echo _("Save") ?>">
+	<input type="button" name="close" value="<?php echo _("Close Window") ?>" onclick="parent.close()">
+</div>
 </form>
 </div>
 <script language="javascript1.2" type="text/JavaScript">
diff -Naur gallery-1.5.1/util.php gallery-1.5.2/util.php
--- gallery-1.5.1/util.php	2005-09-15 15:34:44.000000000 +0200
+++ gallery-1.5.2/util.php	2006-01-13 12:48:15.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: util.php,v 1.537.2.10 2005/09/15 13:34:44 jenst Exp $
+ * $Id: util.php,v 1.563.2.5 2006/01/13 11:48:15 jenst Exp $
  */
 
 /**
@@ -34,51 +34,52 @@
 require_once(dirname(__FILE__) . '/classes/HTML/table.php');
 require_once(dirname(__FILE__) . '/lib/valchecks.php');
 require_once(dirname(__FILE__) . '/lib/messages.php');
+require_once(dirname(__FILE__) . '/lib/content.php');
 
 function getRequestVar($str) {
     if (!is_array($str)) {
-	if (!isset($_REQUEST[$str])) {
-	    return null;
-	}
-	$ret = &$_REQUEST[$str];
-	if (get_magic_quotes_gpc() && !is_array($ret)) {
-	    $ret = stripslashes($ret);
-	}	
+        if (!isset($_REQUEST[$str])) {
+            return null;
+        }
+        $ret = &$_REQUEST[$str];
+        if (get_magic_quotes_gpc() && !is_array($ret)) {
+            $ret = stripslashes($ret);
+        }
     }
     else {
-	foreach ($str as $reqvar) {
-	    $ret[] = getRequestVar($reqvar);
-	}
+        foreach ($str as $reqvar) {
+            $ret[] = getRequestVar($reqvar);
+        }
     }
     return $ret;
 }
 
 function getFilesVar($str) {
     if (!is_array($str)) {
-	if (!isset($_FILES[$str])) {
-	    return null;
-	}
-	$ret = &$_FILES[$str];
+        if (!isset($_FILES[$str])) {
+            return null;
+        }
+        $ret = &$_FILES[$str];
     }
     else {
-	foreach ($str as $reqvar) {
-	    $ret[] = getFilesVar($reqvar);
-	}
+        foreach ($str as $reqvar) {
+            $ret[] = getFilesVar($reqvar);
+        }
     }
     return $ret;
 }
 
 function getEnvVar($str) {
     if (!is_array($str)) {
-	if (!isset($_ENV[$str])) {
-	    return null;
-	}
-	$ret = &$_ENV[$str];
+        if (!isset($_ENV[$str])) {
+            return null;
+        }
+        $ret = &$_ENV[$str];
     }
     else {
-	foreach ($str as $reqvar) {
-	    $ret[] = getEnvVar($reqvar);
-	}
+        foreach ($str as $reqvar) {
+            $ret[] = getEnvVar($reqvar);
+        }
     }
     return $ret;
 }
@@ -88,130 +89,6 @@
     return $value;
 }
 
-function editField($album, $field, $link=null) {
-	global $gallery;
-
-	$buf = "";
-	if ($link) {
-		$buf .= "<a href=\"$link\">";
-	}
-	$buf .= $album->fields[$field];
-	if ($link) {
-		$buf .= "</a>";
-	}
-	if ($gallery->user->canChangeTextOfAlbum($album)) {
-		if (!strcmp($buf, "")) {
-			$buf = "<i>&lt;". _("Empty") . "&gt;</i>";
-		}
-		$url = "edit_field.php?set_albumName={$album->fields['name']}&field=$field"; // should replace with &amp; for validatation
-		$buf .= " <span class=editlink>";
-		$buf .= popup_link( "[". sprintf(_("edit %s"), _($field)) . "]", $url) ;
-		$buf .= "</span>";
-	}
-	return $buf;
-}
-
-function editCaption($album, $index) {
-	global $gallery;
-
-	$abuf='';
-	$buf = nl2br($album->getCaption($index));
-
-	if (($gallery->user->canChangeTextOfAlbum($album) ||
-               ($gallery->album->getItemOwnerModify() && 
-	         $gallery->album->isItemOwner($gallery->user->getUid(), $index))) 
-		&& !$gallery->session->offline) {
-
-		if (empty($buf)) {
-			$buf = "<i>&lt;". _("No Caption") ."&gt;</i>";
-		}
-		$url = "edit_caption.php?set_albumName={$album->fields['name']}&index=$index";
-		$abuf = "<span class=\"editlink\">";
-		$abuf .= popup_link("[". _("edit") ."]", $url);
-		$abuf .= "</span>";
-	}
-	$buf .= $album->getCaptionName($index);
-	$buf .= $abuf;
-
-	return $buf;
-}
-
-function viewComments($index, $addComments, $page_url, $newestFirst = false, $addType = '', $album=false) {
-	global $gallery;
-	global $commentdraw;
-	global $i;
-	global $commenter_name;
-
-	$html = '';
-
-	/*
-	$borderColor = $gallery->app->default["bordercolor"];
-	$commentdraw["bordercolor"] = $borderColor;
-	*/
-	echo showComments($index, $album, $newestFirst);
-
-	if ($addComments) {
-		/* Default is the popup link.
-		** addType given through function call overrides default.
-		*/
-		if (empty($addType)) {
-			$addType = (isset($gallery->app->comments_addType) ? $gallery->app->comments_addType : "popup");
-		}
-		if ($addType == 'inside') {
-			echo '<form name="theform" method="post" action="'. $page_url .'">';
-			drawCommentAddForm($commenter_name);
-			echo "</form>";
-		}
-		else {
-			$id = $gallery->album->getPhotoId($index);
-			$url = "add_comment.php?set_albumName={$gallery->album->fields['name']}&id=$id";
-			echo "\n" .'<div align="center" class="editlink">' .
-			  popup_link('[' . _("add comment") . ']', $url, 0) .
-			  '</div><br>';
-		}
-	}
-}
-
-function drawCommentAddForm($commenter_name = '', $cols = 50) {
-	global $gallery;
-	if ($gallery->user->isLoggedIn() ) {
-		if (empty($commenter_name) || $gallery->app->comments_anonymous == 'no') {
-			$commenter_name = user_name_string($gallery->user->getUID(), $gallery->app->comments_display_name);
-		}
-	}
-?>
-<table class="commentbox" cellpadding="0" cellspacing="0">
-<tr>
-	<td colspan="2" class="commentboxhead"><?php echo _("Add your comment") ?></td>
-</tr>
-<tr>
-	<td class="commentboxhead"><?php echo _("Commenter:") ?></td>
-	<td class="commentboxhead">
-<?php
-
-if (!$gallery->user->isLoggedIn() ) {
-	echo "<input name=\"commenter_name\" value=\"". $commenter_name ."\" size=\"30\">";
-} else {
-	if ($gallery->app->comments_anonymous == 'yes') {
-		echo '<input name="commenter_name" value="'.$commenter_name.'" size="30">';
-	} else {
-		echo $commenter_name;
-		echo '<input type="hidden" name="commenter_name" value="'. $commenter_name .'" size="30">';
-	}
-}
-?>
-</td>
-</tr>
-<tr>
-	<td class="commentlabel" valign="top"><?php echo _("Message:") ?></td>
-	<td><textarea name="comment_text" cols="<?php echo $cols ?>" rows="5"></textarea></td>
-</tr>
-<tr>
-	<td colspan="2" class="commentboxfooter" align="right"><input name="save" type="submit" value="<?php echo _("Post") ?>"></td>
-</tr>
-</table>
-<?php 
-}
 
 function getBlacklistFilename() {
     global $gallery;
@@ -245,7 +122,7 @@
 			}
 		}
 	} else {
-		foreach ($blacklist['entries'] as $key => $entry) {
+		foreach ($blacklist['entries'] as $entry) {
 			if (ereg($entry, $comment['commenter_name']) ||
 			    ereg($entry, $comment['comment_text'])) {
 				return true;
@@ -269,9 +146,9 @@
 function exec_internal($cmd) {
 	global $gallery;
 
-	$debugfile = "";
-	$status="";
-	$results=array();
+	$debugfile = '';
+	$status = '';
+	$results = array();
 	
 	if (isDebugging()) {
 	    debugMessage(sprintf(_("Executing: %s"), $cmd), __FILE__, __LINE__);
@@ -314,61 +191,62 @@
     list($results, $status) = exec_internal($cmd);
 
     if ($status == $gallery->app->expectedExecStatus) {
-	return true;
+        return true;
     } else {
-	if ($results) {
-	    echo gallery_error(join("<br>", $results));
-	}
+        if ($results) {
+            echo '<hr><p>'. gallery_error("") . join("<br>", $results) .'</p>';
+        }
         return false;
     }
 }
 
-function getDimensions($file, $regs=false) {
+function getDimensions($file) {
     global $gallery;				
 
-    debugMessage(sprintf(_("Getting Dimension of file: %s"), $file), __FILE__, __LINE__,2);
+    debugMessage(sprintf(_("Getting Dimension of file: %s"), $file), __FILE__, __LINE__, 2);
 
     if (! fs_file_exists($file)) {
         debugMessage(_("The file does not exist ?!"), __FILE__, __LINE__);
         return array(0, 0);
     }
-    if ($regs === false) {
-        $regs = getimagesize($file);
-    }
     
-    if (($regs[0] > 1) && ($regs[1] > 1)) {
-        return array($regs[0], $regs[1]);
+    list($width, $height) = getimagesize($file);
+    
+    if ($width > 1 && $height > 1) {
+        debugMessage(sprintf(_("Dimensions: x: %d y: %d"), $width, $height), __FILE__, __LINE__, 3);
+		  
+        return array($width, $height);
     }
 
-    debugMessage(sprintf(_("PHP's %s unable to determine dimensions."), "getimagesize()"), __FILE__, __LINE__);
+    debugMessage(sprintf(_("PHP's %s function is unable to determine dimensions."), "getimagesize()"), __FILE__, __LINE__);
 		
     /* Just in case php can't determine dimensions. */
     switch($gallery->app->graphics) {
-        case "NetPBM":
+        case 'NetPBM':
             list($lines, $status) = exec_internal(toPnmCmd($file) ." | ". 
-                                      NetPBM("pnmfile", "--allimages"));
+                NetPBM('pnmfile', '--allimages'));
             break;
         case "ImageMagick":
             /* This fails under windows, IM isn't returning parsable status output. */
-              list($lines, $status) = exec_internal(ImCmd("identify", fs_import_filename($file)));
+              list($lines, $status) = exec_internal(ImCmd('identify', '', fs_import_filename($file)));
         break;
         
 	default:
 	    echo debugMessage(_("You have no graphics package configured for use!"));
-	    return array(0,0);
+	    return array(0, 0);
         break;
     }
 
     if ($status == $gallery->app->expectedExecStatus) {
         foreach ($lines as $line) {
             switch($gallery->app->graphics) {
-                case "NetPBM":
+                case 'NetPBM':
                     if (ereg("([0-9]+) by ([0-9]+)", $line, $regs)) {
                         return array($regs[1], $regs[2]);
                     }
                 break;
                 
-                case "ImageMagick":
+                case 'ImageMagick':
                     if (ereg("([0-9]+)x([0-9]+)", $line, $regs)) {
                         return array($regs[1], $regs[2]);
                     }
@@ -438,1031 +316,170 @@
 	return $tmp;
 }
 
-function dismissAndReload() {
-	if (isDebugging()) {
-		echo "\n<body onLoad='opener.location.reload();'>\n";
-		echo '<p align="center" class="error">';
-		echo _("Not closing this window because debug mode is on") ;
-		echo "\n<hr>\n</p>";
-		echo "\n</body>";
-	} else {
-		echo "<body onLoad='opener.location.reload(); parent.close()'></body>";
-	}
-	echo "\n</html>";
-}
-
-function reload() {
-	echo '<script language="javascript1.2" type="text/JavaScript">';
-	echo 'opener.location.reload()';
-	echo '</script>';
-}
-
-function dismissAndLoad($url) {
-	if (isDebugging()) {
-		echo("<BODY onLoad='opener.location = \"$url\"; '>");
-		echo("Loading URL: $url");
-		echo("<center><b>" . _("Not closing this window because debug mode is on") ."</b></center>");
-		echo("<hr>");
-	} else {
-		echo("<BODY onLoad='opener.location = \"$url\"; parent.close()'>");
-	}
-}
-
-function dismiss() {
-    echo("<BODY onLoad='parent.close()'>");
-}
-
 function my_flush() {
     print str_repeat(" ", 4096);	// force a flush
 }
 
-function resize_image($src, $dest, $target = 0, $target_fs = 0, $keepProfiles = 0) {
-
-    debugMessage(sprintf(_("Resizing Image: %s"), $src), __FILE__, __LINE__);
-
-    /*
-     *  Valid return codes:
-     *  0:  File was not resized, no processing to be done
-     *  1:  File resized, process normally
-     *  2:  Existing resized file should be removed
-    */
-    global $gallery;				
-
-    if (!strcmp($src,$dest)) {
-	$useTemp = true;
-	$out = "$dest.tmp";
-    }
-    else {
-	$out = $dest;
-	$useTemp = false;
-    }
+function correctPseudoUsers(&$array, $ownerUid) {
+	global $gallery;
 
-	$regs = getimagesize($src);
-	if ($regs[2] !== 2 && $regs[2] !== 3) {
-		$target_fs = 0; // can't compress other images
-	}
-	if ($target === 'off') {
-	    $target = 0;
+	/*
+	 * If EVERYBODY is in the list, reduce it to just that entry.
+	 */
+	$everybody = $gallery->userDB->getEverybody();
+	if (!empty($array[$everybody->getUid()])) {
+	        $array = array($everybody->getUid() => $everybody->getUsername());
+		return;
 	}
 
-	/* Check for images smaller then target size, don't blow them up. */
-	$regs = getDimensions($src, $regs);
-	if ((empty($target) || ($regs[0] <= $target && $regs[1] <= $target))
-			&& (empty($target_fs) || ((int) fs_filesize($src) >> 10) <= $target_fs)) {
-		processingMsg("&nbsp;&nbsp;&nbsp;". _("No resizing required"));
-
-		/* If the file is already smaller than the target filesize, don't
-		 * create a new sized image.  return 2 indicates that the current .sized.
-		 * needs to be removed */
-		if ($useTemp == false && !strstr($dest, ".sized.")) {
-			fs_copy($src, $dest);
-			return 1;
-		}
-		elseif (fs_file_exists($dest) && strstr($dest, ".sized.")) {
-			return 2;
-		}
-		return 0;
+	/*
+	 * If LOGGEDIN is in the list, reduce it to just that entry.
+	 */
+	$loggedIn = $gallery->userDB->getLoggedIn();
+	if (!empty($array[$loggedIn->getUid()])) {
+		$array = array($loggedIn->getUid() => $loggedIn->getUsername());
+		return;
 	}
-	$target = min($target, max($regs[0],$regs[1]));
 
-	/* Jens Tkotz, 02.10.2004.
-	** Lines with $min_filesize commented because never used.
-	*/
-	if ($target_fs == 0) {
-		compress_image($src, $out, $target, $gallery->app->jpegImageQuality, $keepProfiles);
-	} else {
-		$filesize = (int) fs_filesize($src) >> 10;
-		$max_quality=$gallery->app->jpegImageQuality;
-		$min_quality=5;
-		$max_filesize=$filesize;
-		//$min_filesize=0;
-		if (!isset($quality)) {
-			$quality=$gallery->album->fields['last_quality'];
-		}
-		processingMsg("&nbsp;&nbsp;&nbsp;". sprintf(_("target file size %d kbytes"), 
-					$target_fs)."\n");
-
-		do {
-			compress_image($src, $out, $target, $quality, $keepProfiles);
-			$prev_quality=$quality;
-			printf(_("-> file size %d kbytes"), round($filesize));
-			processingMsg("&nbsp;&nbsp;&nbsp;" . sprintf(_("trying quality %d%%"), 
-						$quality));
-			clearstatcache();
-			$filesize= (int) fs_filesize($out) >> 10;
-			if ($filesize < $target_fs) {
-				$min_quality=$quality;
-				//$min_filesize=$filesize;
-			} elseif ($filesize > $target_fs){
-				$max_quality=$quality;
-				$max_filesize=$filesize;
-			} elseif ($filesize == $target_fs){
-				$min_quality=$quality;
-				$max_quality=$quality;
-				// $min_filesize=$filesize;
-				$max_filesize=$filesize;
-			}
-			$quality=($max_quality + $min_quality)/2;
-			$quality=round($quality);
-			if ($quality==$prev_quality) {
-				if ($filesize==$max_filesize) {
-					$quality--;
-				} else {
-					$quality++;
-				}
-			}
-		} while ($max_quality-$min_quality > 2 && 
-				abs(($filesize-$target_fs)/$target_fs) > .02 );
+	/*
+	 * If the list has more than one entry, remove the NOBODY user.
+	 */
+	$nobody = $gallery->userDB->getNobody();
+	if (count($array) > 1) {
+		unset($array[$nobody->getUid()]);
+	}
 
-		$gallery->album->fields['last_quality']=$prev_quality;
-		printf(_("-> file size %d kbytes"), round($filesize));
-		processingMsg(_("Done."));
-	}
-	if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
-		if ($useTemp) {
-			fs_copy($out, $dest);
-			fs_unlink($out);
+	/*
+	 * If the list has no entries, insert the NOBODY user *unless* the
+	 * owner is the EVERYBODY user, in which case specify EVERYBODY.
+	 */
+	if (count($array) == 0) {
+		if (!strcmp($ownerUid, $everybody->getUid())) {
+		        $array = array($everybody->getUid() => $everybody->getUsername());
+		} else {
+			$array[$nobody->getUid()] = $nobody->getUsername();
 		}
-		return 1;
-	} else {
-		return 0;
 	}
 }
 
-function netpbm_decompose_image($input, $format)
-/*
-In order for pnmcomp to support watermarking from formats other than pnm, the watermark
-first needs to be converted to .pnm. Second the alpha channel needs to be decomposed as a
-second image
-
-Returns a list of 2 temporary files (overlay, and alphamask), these files should be deleted (unlinked)
-  by the calling function
-*/
-{
+function gallerySanityCheck() {
+	global $gallery;
+	global $GALLERY_OK;
+       	if (!empty($gallery->backup_mode)) {
+	       	return NULL;
+       	}
 
-	global $gallery;	
-   $overlay = tempnam($gallery->app->tmpDir, "netpbm_");
-   $alpha = tempnam($gallery->app->tmpDir, "netpbm_");
-   switch ($format) {
-   case "png":
-      $getOverlay = netPbm("pngtopnm", "$input > $overlay");
-      $getAlpha   = netPbm("pngtopnm", "-alpha $input > $alpha");
-      break;
-   case "gif":
-      $getOverlay = netPbm("giftopnm", "--alphaout=$alpha $input > $overlay");
-      break;
-   case "tif":
-      $getOverlay = netPbm("tifftopnm", "-alphaout=$alpha $input > $overlay");
-      break;
-   }
-   list($results, $status) = exec_internal($getOverlay);
-   if (isset($getAlpha)) {
-      list($results, $status) = exec_internal($getAlpha);
-   }
-   return array($overlay, $alpha);
-}
+	setGalleryPaths();
 
-function watermark_image($src, $dest, $wmName, $wmAlphaName, $wmAlign, $wmAlignX, $wmAlignY) {
-   global $gallery;
-   if (!strcmp($src,$dest)) {
-      $useTemp = true;
-      $out = "$dest.tmp";
-   } else {
-      $useTemp = false;
-      $out = $dest;
-   }
-   if (isDebugging())
-   {
-      print "<table border=\"1\">";
-      print "<tr><td>src</td><td>$src</td></tr>";
-      print "<tr><td>dest</td><td>$dest</td></tr>";
-      print "<tr><td>wmName</td><td>$wmName</td></tr>";
-      print "<tr><td>wmAlign</td><td>$wmAlign</td></tr>";
-      print "<tr><td>wmAlignX</td><td>$wmAlignX</td></tr>";
-      print "<tr><td>wmAlignY</td><td>$wmAlignY</td></tr>";
-      print "</table>";
-   }
+	if (!fs_file_exists(GALLERY_CONFDIR . "/config.php") ||
+                broken_link(GALLERY_CONFDIR . "config.php") ||
+                !$gallery->app) {
+		$GALLERY_OK = false;
+		return "unconfigured.php";
+	}
 
-   $srcSize = getDimensions($src);
-   $overlaySize = getDimensions($wmName);
-   if (strlen($wmName))
-   {
-      switch($gallery->app->graphics)
-      {
-      case "ImageMagick":
-         $overlayFile = $wmName;
-         break;
-      case "NetPBM":
-         if (eregi("\.png$",$wmName, $regs)) {
-            list ($overlayFile, $alphaFile) = netpbm_decompose_image($wmName, "png");
-            $tmpOverlay = 1;
-	 } elseif (eregi("\.tiff?$",$wmName, $regs)) {
-            list ($overlayFile, $alphaFile) = netpbm_decompose_image($wmName, "tif");
-            $tmpOverlay = 1;
-	 } elseif (eregi("\.gif$",$wmName, $regs)) {
-            list ($overlayFile, $alphaFile) = netpbm_decompose_image($wmName, "gif");
-            $tmpOverlay = 1;
-         } else {
-            $alphaFile = $wmName;
-            if (strlen($wmAlphaName)) {
-                $overlayFile = $wmAlphaName;
-            }
-         }
-         break;
-      default:
-         echo debugMessage(_("You have no graphics package configured for use!"));
-         return 0;
-      }
-   } else {
-	echo gallery_error(_("No watermark name specified!"));
-	return 0;
-   }
+	if ($gallery->app->config_version != $gallery->config_version) {
+		$GALLERY_OK = false;
+		return "reconfigure.php";
+	}
+	$GALLERY_OK = true;
+	return NULL;
+}
 
-   // Set or Clip $wmAlignX and $wmAlignY
-   switch ($wmAlign)
-   {
-   case 1: // Top - Left
-      $wmAlignX = 0;
-      $wmAlignY = 0;
-      break;
-   case 2: // Top
-      $wmAlignX = ($srcSize[0] - $overlaySize[0]) / 2;
-      $wmAlignY = 0;
-      break;
-   case 3: // Top - Right
-      $wmAlignX = ($srcSize[0] - $overlaySize[0]);
-      $wmAlignY = 0;
-      break;
-   case 4: // Left
-      $wmAlignX = 0;
-      $wmAlignY = ($srcSize[1] - $overlaySize[1]) / 2;
-      break;
-   case 5: // Center
-      $wmAlignX = ($srcSize[0] - $overlaySize[0]) / 2;
-      $wmAlignY = ($srcSize[1] - $overlaySize[1]) / 2;
-      break;
-   case 6: // Right
-      $wmAlignX = ($srcSize[0] - $overlaySize[0]);
-      $wmAlignY = ($srcSize[1] - $overlaySize[1]) / 2;
-      break;
-   case 7: // Bottom - Left
-      $wmAlignX = 0;
-      $wmAlignY = ($srcSize[1] - $overlaySize[1]);
-      break;
-   case 8: // Bottom
-      $wmAlignX = ($srcSize[0] - $overlaySize[0]) / 2;
-      $wmAlignY = ($srcSize[1] - $overlaySize[1]);
-      break;
-   case 9: // Bottom Right
-      $wmAlignX = ($srcSize[0] - $overlaySize[0]);
-      $wmAlignY = ($srcSize[1] - $overlaySize[1]);
-      break;
-   case 10: // Other
-      // Check for percents
-      if (ereg('([0-9]+)(\%?)', $wmAlignX, $regs)) {
-         if ($regs[2] == '%') {
-            $wmAlignX = round($regs[1] / 100 * ($srcSize[0] - $overlaySize[0]));
-         } else {
-            $wmAlignX = $regs[1];
-         }
-      } else {
-         $wmAlignX = 0;
-      }
-                                                                                                                    
-      if (ereg('([0-9]+)(\%?)', $wmAlignY, $regs)) {
-         if ($regs[2] == '%') {
-            $wmAlignY = round($regs[1] / 100 * ($srcSize[1] - $overlaySize[1]));
-         } else {
-            $wmAlignY = $regs[1];
-         }
-      } else {
-         $wmAlignY = 0;
-      }
+function preprocessImage($dir, $file) {
 
-      if ($wmAlignX < 1)
-      { // clip left side
-         $wmAlignX = 0;
-      }
-      elseif ($wmAlignX > ($srcSize[0] - $overlaySize[0]))
-      { // clip right side
-        $wmAlignX = ($srcSize[0] - $overlaySize[0]);
-      }
-      if ($wmAlignY < 1)
-      { // clip top
-         $wmAlignY = 0;
-      }
-      elseif ($wmAlignY > ($srcSize[1] - $overlaySize[1]))
-      { // clip bottom
-        $wmAlignY = ($srcSize[1] - $overlaySize[1]);
-      }
-      break;
-   } // end switch ($wmAlign)
+	if (!fs_file_exists("$dir/$file") || broken_link("$dir/$file")) {
+		return 0;
+	}
 
-   $wmAlignX = floor($wmAlignX);
-   $wmAlignY = floor($wmAlignY);
+	/*
+	 * Check to see if it starts with a mime-type header, eg:
+	 *
+	 * 	Content-Type: image/pjpeg\n\n
+	 *
+	 * If so, remove everything up to and including the last 
+	 * newline
+	 */
 
-   // Build command lines arguements
-   switch($gallery->app->graphics) {
-	case "ImageMagick":
-	    $args = "-geometry +$wmAlignX+$wmAlignY $overlayFile $src $out";
-	    break;
-	case "NetPBM":
-	    $args  = "-yoff=$wmAlignY -xoff=$wmAlignX ";
-	    if ($alphaFile) {
-		$args .= "-alpha=$alphaFile ";
-	    }
-	    $args .= $overlayFile;
-	    break;
-    }
+	if ($fd = fs_fopen("$dir/$file", "rb")) {
+		// Read the first line
+		$line = fgets($fd, 4096);
 
-    debugMessage("args = $args", __FILE__, __LINE__);    
+		// Does it look like a content-type string?
+		if (strstr($line, "Content-Type:")) {
+			// Skip till we find a line by itself.
+			do {
+				$line = fgets($fd, 4096);
+			} while (!feof($fd) && ord($line) != 13 && ord($line) != 10);
 
-   // Execute
-   switch($gallery->app->graphics)
-   {
-   case "ImageMagick":
-      exec_wrapper(ImCmd("composite", $args));
-      break;
-   case "NetPBM":
-      exec_wrapper(toPnmCmd($src) ." | ". NetPBM($gallery->app->pnmcomp, $args) ." | " . fromPnmCmd($out));
-      break;
-   }
+			// Dump the rest to a file
+			$tempfile = tempnam($dir, $file);
+			if ($newfd = fs_fopen($tempfile, "wb", 0755)) {
+				while (!feof($fd)) {
+					/*
+					 * Copy the rest of the file.  Specify a length
+					 * to fwrite so that we ignore magic_quotes.
+					 */
+					fwrite($newfd, fread($fd, 64*1024), 64*1024+1);
+				}
+				fclose($newfd);
+				$success = fs_rename($tempfile, "$dir/$file");
+				if (!$success) {
+					echo gallery_error("Couldn't move $tempfile -> $dir/$file");
+					fs_unlink($tempfile);
+				}
+			} else {
+				echo gallery_error(sprintf(_("Can't write to %s."),
+							$tempfile));
+			}
+			chmod("$dir/$file", 0644);
+		}
+		fclose($fd);
+	} else {
+		echo gallery_error(sprintf(_("Can't read %s."), "$dir/$file"));
+	}
 
-   // copy exif headers from original image to rotated image
-   if (isset($gallery->app->use_exif)) {
-      $path = $gallery->app->use_exif;
-      exec_internal(fs_import_filename($path, 1) . " -te $src $out");
-   }
-   
-   // Test to see if it worked, and copy Temp file if needed
-   if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
-      if ($useTemp) {
-         fs_copy($out, $dest);
-         fs_unlink($out);
-      }
-      if (!empty($tmpOverlay)) {
-         fs_unlink($overlayFile);
-         if ($alphaFile) {
-            fs_unlink($alphaFile);
-         }
-      }
-      return 1;
-   } else {
-      return 0;
-   }
-} // end watermark_image()
+	return 1;
+}
 
-function rotate_image($src, $dest, $target, $type) {
+/**
+ * This function checks wether we are debugging with a given level.
+ * If no level is given, it just returns wether we are debugging or not.
+ * Debug is indicated by a debuglevel greater then 0
+ * @param  integer   $level
+ * @return boolean
+ */
+function isDebugging($level = NULL) {
 	global $gallery;
 
-	if (!strcmp($src,$dest)) {
-		$useTemp = true;
-		$out = "$dest.tmp";
+	if (isset($gallery->app->debuglevel)) {
+		if($gallery->app->debuglevel > 0) {
+			if(isset($level) && $gallery->app->debuglevel < $level) {
+				return false;
+			}
+			return true;
+		}
+		else {
+			return false;
+		}
 	}
 	else {
-		$out = $dest;
+		return false;
 	}
+}
 
-        $outFile = fs_import_filename($out, 1);
-        $srcFile = fs_import_filename($src, 1);
+function getNextPhoto($idx, $album=NULL) {
+	global $gallery;
 
-	$type = strtolower($type);
-	if (isset($gallery->app->use_jpegtran) && !empty($gallery->app->use_jpegtran) && ($type === 'jpg' || $type === 'jpeg')) {
-	    	if (!strcmp($target, '-90')) {
-			$args = '-rotate 90';
-		} elseif (!strcmp($target, '180')){
-			$args = '-rotate 180';
-		} elseif (!strcmp($target, '90')) {
-			$args = '-rotate 270';
-		} elseif (!strcmp($target, 'fv')) {
-			$args = '-flip vertical';
-		} elseif (!strcmp($target, 'fh')) {
-			$args = '-flip horizontal';
-		} elseif (!strcmp($target, 'tr')) {
-			$args = '-transpose';
-		} elseif (!strcmp($target, 'tv')) {
-			$args = '-transverse';
-		} else {
-			$args = '';
-		}
+	if (!$album) {
+		$album = $gallery->album;
+	}
 
-		$path = $gallery->app->use_jpegtran;
-		// -copy all ensures all headers (i.e. EXIF) are copied to the rotated image
-		exec_internal(fs_import_filename($path, 1) . " $args -trim -copy all -outfile $outFile $srcFile");
-	} else {
-		switch($gallery->app->graphics)
-		{
-		case "NetPBM":
-			$args2 = '';
-			if (!strcmp($target, '-90')) {
-				/* NetPBM's docs mix up CW and CCW...
-				 * We'll do it right. */
-				$args = '-r270';
-			} elseif (!strcmp($target, '180')) {
-				$args = '-r180';
-			} elseif (!strcmp($target, '90')) {
-				$args = '-r90';
-			} elseif (!strcmp($target, 'fv')) {
-				$args = '-tb';
-			} elseif (!strcmp($target, 'fh')) {
-				$args = '-lr';
-			} elseif (!strcmp($target, 'tr')) {
-				$args = '-xy';
-			} elseif (!strcmp($target, 'tv')) {
-				/* Because of NetPBM inconsistencies, the only
-				 * way to do this transformation on *all* 
-				 * versions of NetPBM is to pipe two separate
-				 * operations in sequence. Versions >= 10.13
-				 * have the new -xform flag, and versions <=
-				 * 10.6 could take the '-xy -r180' commands in
-				 * sequence, but versions 10.7--> 10.12 can't
-				 * do *either*, so we're left with this little
-				 * workaround. -Beckett 9/9/2003 */
-			    $args = '-xy';
-			    $args2 = ' | ' . NetPBM('pnmflip', '-r180');
-			} else {
-				$args = '';
-			}		
+	$numPhotos = $album->numPhotos(1);
+	$idx++;
 
-			exec_wrapper(toPnmCmd($src) . ' | ' .
-					    NetPBM('pnmflip', $args) .
-					    $args2 .
-					    ' | ' . fromPnmCmd($out));	
-
-			// copy exif headers from original image to rotated image	
-			if (isset($gallery->app->use_exif)) {
-				$path = $gallery->app->use_exif;
-				exec_internal(fs_import_filename($path, 1) . " -te $srcFile $outFile");
-			}
-			break;
-		case "ImageMagick":
-		        if (!strcmp($target, '-90')) {
-			    $im_cmd = '-rotate 90';             
-			} elseif (!strcmp($target, '180')) {
-			    $im_cmd = '-rotate 180';
-			} elseif (!strcmp($target, '90')) {
-			    $im_cmd = '-rotate -90';
-			} elseif (!strcmp($target, 'fv')) {
-			    $im_cmd = '-flip';
-			} elseif (!strcmp($target, 'fh')) {
-			    $im_cmd = '-flop';
-			} elseif (!strcmp($target, 'tr')) {
-			    $im_cmd = '-affine 0,1,1,0,0,0 -transform';
-			} elseif (!strcmp($target, 'tv')) {
-			    $im_cmd = '-affine 0,-1,-1,0,0,0 -transform';
-			} else {
-			    $im_cmd = '';
-			}
-			
-			exec_wrapper(ImCmd('convert', "$im_cmd $srcFile $outFile"));
-			break;
-		default:
-			if (isDebugging())
-				echo "<br>". _("You have no graphics package configured for use!") ."<br>";
-			return 0;
-			break;
-		}	
-	}
-
-	if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
-		if ($useTemp) {
-			fs_copy($out, $dest);
-			fs_unlink($out);
-		}
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
-function cut_image($src, $dest, $x, $y, $width, $height) {
-	global $gallery;				
-	if (!strcmp($src,$dest)) {
-		$useTemp = true;
-		$out = "$dest.tmp";
-	}
-	else {
-		$out = $dest;
-	}
-
-	switch($gallery->app->graphics)
-	{
-	case "NetPBM":
-		exec_wrapper(toPnmCmd($src) .
-				" | " .
-				NetPBM("pnmcut") .
-				" $x $y $width $height" .
-				" | " .
-				fromPnmCmd($out));
-		break;
-	case "ImageMagick":
-		$srcFile = fs_import_filename($src);
-		$outFile = fs_import_filename($out);
-		exec_wrapper(ImCmd("convert", "-crop " .
-				$width ."x". $height ."+". $x ."+". $y .
-				" $srcFile $outFile"));
-		break;
-	default:
-		if (isDebugging())
-			echo "<br>" . _("You have no graphics package configured for use!") ."<br>";
-		return 0;
-		break;
-	}
-
-	if (fs_file_exists("$out") && fs_filesize("$out") > 0) {
-		if (isset($useTemp)) {
-			fs_copy($out, $dest);
-			fs_unlink($out);
-		}
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
-function valid_image($file) {
-    if (($type = getimagesize($file)) == FALSE) {
-        debugMessage(sprintf(_("Call to %s failed in %s for file %s!"), 'getimagesize()', 'valid_image()', $file), __FILE__, __LINE__);
-	return 0;
-    }
-
-    debugMessage(sprintf(_("File %s type %d."), $file, $type[2]), __FILE__, __LINE__);
-
-    switch($type[2]) {
-	case 1: // GIF
-	case 2: // JPEG
-	case 3: // PNG
-	    return 1;
-	    break;
-
-	default:
-	    return 0;
-	break;
-    }
-}
-
-function toPnmCmd($file) {
-	global $gallery;
-
-	if (eregi("\.png\$", $file)) {
-		$cmd = "pngtopnm";
-	} elseif (eregi("\.jpe?g\$", $file)) {
-		if (isDebugging()) {
-			$cmd = "jpegtopnm";
-		} else {
-			$cmd = "jpegtopnm";
-		}
-	} elseif (eregi("\.gif\$", $file)) {
-		$cmd = "giftopnm";
-	}
-
-	if (!empty($cmd)) {
-		return NetPBM($cmd) .
-		 	" " .
-			fs_import_filename($file);
-	} else {
-		echo gallery_error(sprintf(_("Unknown file type: %s"), $file));
-		return "";
-	}
-}
-
-function fromPnmCmd($file, $quality=NULL) {
-	global $gallery;
-	if ($quality == NULL) {
-		$quality=$gallery->app->jpegImageQuality;
-	}
-
-	if (eregi("\.png(\.tmp)?\$", $file)) {
-		$cmd = NetPBM("pnmtopng");
-	} elseif (eregi("\.jpe?g(\.tmp)?\$", $file)) {
-		$cmd = NetPBM($gallery->app->pnmtojpeg,
-			      "--quality=" . $quality);
-	} elseif (eregi("\.gif(\.tmp)?\$", $file)) {
-		$cmd = NetPBM("ppmquant", "256") . " | " . NetPBM("ppmtogif");
-	}
-
-	if ($cmd) {
-		return "$cmd > " . fs_import_filename($file);
-	} else {
-		echo gallery_error(sprintf(_("Unknown file type: %s"), $file));
-		return "";
-	}
-}
-
-function netPbm($cmd, $args="") {
-	global $gallery;
-
-	$cmd = fs_import_filename($gallery->app->pnmDir . "/$cmd");
-	if (!isDebugging() && $cmd != "ppmquant") {
-		// ppmquant doesn't like --quiet for some reason
-		$cmd  .= " --quiet";
-	}
-	$cmd .= " $args";
-	return $cmd;
-}
-
-function ImCmd($cmd, $args = "") {
-	global $gallery;
-
-	$cmd = fs_import_filename($gallery->app->ImPath . "/$cmd");
-	$cmd .= " $args";
-	return $cmd;
-}
-
-function includeLayout($name, $skinname='') {
-    global $gallery;
-
-    if (!$skinname) {
-        $skinname = $gallery->app->skinname;
-    }
-
-    $defaultname = dirname(__FILE__) . "/layout/$name";
-    $fullname = dirname(__FILE__) . "/skins/$skinname/layout/$name";
-
-    if (fs_file_exists($fullname) && !broken_link($fullname)) {
-	include ($fullname);
-    } elseif (fs_file_exists($defaultname) && !broken_link($defaultname)) {
-	include ($defaultname);
-    } else {
-	echo gallery_error(sprintf(_("Problem including file %s"), $name));
-    }
-}
-
-function includeHtmlWrap($name, $skinname='', $adds='') {
-
-	// define these globals to make them available to custom text
-	global $gallery;
-
-	$domainname = dirname(__FILE__) . '/html_wrap/' . $_SERVER['HTTP_HOST'] . "/$name";
-
-	if (!$skinname) {
-		$skinname = $gallery->app->skinname;
-	}
-
-	if (fs_file_exists($domainname) && !broken_link($domainname)) {
-		include ($domainname);
-	}
-	else {
-		$defaultname = dirname(__FILE__) . "/html_wrap/$name";
-		$fullname = dirname(__FILE__) . "/skins/$skinname/html_wrap/$name";
-	    
-		if (fs_file_exists($fullname) && !broken_link($fullname)) {
-			include ($fullname);
-		}
-		elseif (fs_file_exists($defaultname) && !broken_link($defaultname)) {
-			include ($defaultname);
-		} else {
-			include ("$defaultname.default");
-		}
-	}
-
-	return 1;
-}
-
-/**
- * Wrapper around _getStyleSheetLink, its defines which stylesheet link is generated.
- * @return	string	$styleSheetLinks	The generated HTML <LINK> to load the stylesheets. Empty when already loaded.
- */
-function getStyleSheetLink() {
-    global $GALLERY_EMBEDDED_INSIDE;
-    global $GALLERY_OK;
-
-    static $styleSheetSet;
-
-    $styleSheetLinks = '';
-    
-    if(! $styleSheetSet) {
-	if (isset($GALLERY_OK) && $GALLERY_OK == false) {
-	    $styleSheetLinks = _getStyleSheetLink("config");
-	} else {
-	    $styleSheetLinks = _getStyleSheetLink("base");
-
-	    if ($GALLERY_EMBEDDED_INSIDE) {
-		$styleSheetLinks .= _getStyleSheetLink("embedded_style");
-	    } else {
-		$styleSheetLinks .= _getStyleSheetLink("screen");
-	    }
-	}
-	
-	$styleSheetSet = true;
-    }
-
-    return $styleSheetLinks;
-}
-
-/**
- * Generates a HTML <link> to a css file.
- *
- * @param	string	$filename	Name of css file.
- * @param	string	$skinname	Optional skinname, if omitted and not embedded, default skin is used.
- * @return	string
- */
-function _getStyleSheetLink($filename, $skinname='') {
-    global $gallery;
-    global $GALLERY_EMBEDDED_INSIDE;
-
-    if (!$skinname && isset($gallery->app) && isset($gallery->app->skinname) && !$GALLERY_EMBEDDED_INSIDE) {
-	$skinname = $gallery->app->skinname;
-    }
-
-    $sheetname = "skins/$skinname/css/$filename.css";
-    $sheetpath = dirname(__FILE__) . "/$sheetname";
-
-    $sheetdefaultdomainname = 'css/'. $_SERVER['HTTP_HOST'] ."/$filename.css";
-    $sheetdefaultname = "css/$filename.css";
-    $sheetdefaultpath = dirname(__FILE__) . '/' . $sheetdefaultname;
-
-    if (fs_file_exists($sheetpath) && !broken_link($sheetpath)) {
-	$file = $sheetname;
-    } elseif (fs_file_exists($sheetdefaultpath) && !broken_link($sheetdefaultpath)) {
-	$file = $sheetdefaultname;
-    } elseif (fs_file_exists($sheetdefaultdomainname) && !broken_link($sheetdefaultdomainname)) {
-	$file = $sheetdefaultdomainname;
-    } else {
-	$file = $sheetdefaultname. '.default';
-    }
-
-    $url = getGalleryBaseUrl() ."/$file";
-
-    return "\n". '  <link rel="stylesheet" type="text/css" href="' .$url . '">';
-}
-
-function drawApplet($width, $height, $code, $archive, $album, $defaults, $overrides, $configFile, $errorMsg) {
-	global $gallery, $GALLERY_EMBEDDED_INSIDE, $GALLERY_EMBEDDED_INSIDE_TYPE;
-	global $_CONF; // for geeklog
-	global $board_config; // for phpBB2
-
-	if (file_exists($configFile)) {
-		include($configFile);
-
-		if (isset($configDefaults)) {
-			$defaults = array_merge($defaults, $configDefaults);
-		}
-		if (isset($configOverrides)) {
-			$overrides = array_merge($overrides, $configOverrides);
-		}
-	}
-
-	$cookieInfo = session_get_cookie_params();
-
-	$cookie_name = session_name();
-	$cookie_value = session_id();
-	$cookie_domain = $cookieInfo['domain'];
-	$cookie_path = $cookieInfo['path'];
-
-	// handle CMS-specific overrides
-	if (isset($GALLERY_EMBEDDED_INSIDE)) {
-		if ($GALLERY_EMBEDDED_INSIDE_TYPE == 'phpnuke') {
-			$cookie_name = 'user';
-			$cookie_value = $_COOKIE[$cookie_name];
-		} elseif ($GALLERY_EMBEDDED_INSIDE_TYPE == 'GeekLog') {
-			$cookie_name = $_CONF['cookie_session'];
-			$cookie_value = $_COOKIE[$cookie_name];
-		} elseif ($GALLERY_EMBEDDED_INSIDE_TYPE == 'phpBB2') {
-			$cookie_name = $board_config['cookie_name'] . '_sid';
-			$cookie_value = $_COOKIE[$cookie_name];
-		 } elseif ($GALLERY_EMBEDDED_INSIDE_TYPE == 'mambo') {
-			$cookie1_name = 'sessioncookie';
-			$cookie1_value = $_COOKIE[$cookie1_name];
-		}
-	}
-
-	$defaults['uiLocale'] = $gallery->language;
-?>
-	<object
-		classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
-		codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"
-		width="<?php echo $width ?>" height="<?php echo $height ?>">
-	<param name="code" value="<?php echo $code ?>">
-	<param name="archive" value="<?php echo $archive ?>">
-	<param name="type" value="application/x-java-applet;version=1.4">
-	<param name="scriptable" value="false">
-	<param name="progressbar" value="true">
-	<param name="boxmessage" value="Downloading the Gallery Remote Applet">
-	<param name="gr_url" value="<?php echo $gallery->app->photoAlbumURL ?>">
-<?php if (isset($GALLERY_EMBEDDED_INSIDE)) { ?>
-	<param name="gr_url_full" value="<?php echo makeGalleryUrl('gallery_remote2.php') ?>">
-<?php } ?>
-	<param name="gr_cookie_name" value="<?php echo $cookie_name ?>">
-	<param name="gr_cookie_value" value="<?php echo $cookie_value ?>">
-	<param name="gr_cookie_domain" value="<?php echo $cookie_domain ?>">
-	<param name="gr_cookie_path" value="<?php echo $cookie_path ?>">
-<?php if (isset($cookie1_name)) { ?>
-	<param name="gr_cookie1_name" value="<?php echo $cookie1_name ?>">
-	<param name="gr_cookie1_value" value="<?php echo $cookie1_value ?>">
-<?php } ?>
-	<param name="gr_album" value="<?php echo $album ?>">
-<?php
-	foreach ($defaults as $key => $value) {
-		echo "\t<param name=\"GRDefault_". $key ."\" value=\"". $value ."\">\n";
-	}
-
-	foreach ($overrides as $key => $value) {
-		echo "\t<param name=\"GROverride_". $key ."\" value=\"". $value ."\">\n";
-	}
-?>
-
-	<comment>
-		<embed
-				type="application/x-java-applet;version=1.4"
-				code="<?php echo $code ?>"
-				archive="<?php echo $archive ?>"
-				width="<?php echo $width ?>"
-				height="<?php echo $height ?>"
-				scriptable="false"
-				progressbar="true"
-				boxmessage="Downloading the Gallery Remote Applet"
-				pluginspage="http://java.sun.com/j2se/1.4.2/download.html"
-				gr_url="<?php echo $gallery->app->photoAlbumURL ?>"
-<?php if (isset($GALLERY_EMBEDDED_INSIDE)) { ?>
-				gr_url_full="<?php echo makeGalleryUrl('gallery_remote2.php') ?>"
-<?php } ?>
-				gr_cookie_name="<?php echo $cookie_name ?>"
-				gr_cookie_value="<?php echo $cookie_value ?>"
-				gr_cookie_domain="<?php echo $cookie_domain ?>"
-				gr_cookie_path="<?php echo $cookie_path ?>"
-<?php if (isset($cookie1_name)) { ?>
-				gr_cookie1_name="<?php echo $cookie1_name ?>"
-				gr_cookie1_value="<?php echo $cookie1_value ?>"
-<?php } ?>
-				gr_album="<?php echo $album ?>"
-<?php
-	foreach ($defaults as $key => $value) {
-		echo "\t\t\t\tGRDefault_". $key ."=\"". $value ."\"\n";
-	}
-
-	foreach ($overrides as $key => $value) {
-		echo "\t\t\t\tGROverride_". $key ."=\"". $value ."\"\n";
-	}
-?>
-			<noembed
-					alt="<?php echo $errorMsg ?>">
-				<?php echo $errorMsg ?>
-			</noembed>
-		</embed>
-	</comment>
-</object>
-<?php
-}
-
-function correctPseudoUsers(&$array, $ownerUid) {
-	global $gallery;
-
-	/*
-	 * If EVERYBODY is in the list, reduce it to just that entry.
-	 */
-	$everybody = $gallery->userDB->getEverybody();
-	if (!empty($array[$everybody->getUid()])) {
-	        $array = array($everybody->getUid() => $everybody->getUsername());
-		return;
-	}
-
-	/*
-	 * If LOGGEDIN is in the list, reduce it to just that entry.
-	 */
-	$loggedIn = $gallery->userDB->getLoggedIn();
-	if (!empty($array[$loggedIn->getUid()])) {
-		$array = array($loggedIn->getUid() => $loggedIn->getUsername());
-		return;
-	}
-
-	/*
-	 * If the list has more than one entry, remove the NOBODY user.
-	 */
-	$nobody = $gallery->userDB->getNobody();
-	if (count($array) > 1) {
-		unset($array[$nobody->getUid()]);
-	}
-
-	/*
-	 * If the list has no entries, insert the NOBODY user *unless* the
-	 * owner is the EVERYBODY user, in which case specify EVERYBODY.
-	 */
-	if (count($array) == 0) {
-		if (!strcmp($ownerUid, $everybody->getUid())) {
-		        $array = array($everybody->getUid() => $everybody->getUsername());
-		} else {
-			$array[$nobody->getUid()] = $nobody->getUsername();
-		}
-	}
-}
-
-function gallerySanityCheck() {
-	global $gallery;
-	global $GALLERY_OK;
-       	if (!empty($gallery->backup_mode)) {
-	       	return NULL;
-       	}
-
-	setGalleryPaths();
-
-	if (!fs_file_exists(GALLERY_CONFDIR . "/config.php") ||
-                broken_link(GALLERY_CONFDIR . "config.php") ||
-                !$gallery->app) {
-		$GALLERY_OK = false;
-		return "unconfigured.php";
-	}
-
-	if ($gallery->app->config_version != $gallery->config_version) {
-		$GALLERY_OK = false;
-		return "reconfigure.php";
-	}
-	$GALLERY_OK = true;
-	return NULL;
-}
-
-function preprocessImage($dir, $file) {
-
-	if (!fs_file_exists("$dir/$file") || broken_link("$dir/$file")) {
-		return 0;
-	}
-
-	/*
-	 * Check to see if it starts with a mime-type header, eg:
-	 *
-	 * 	Content-Type: image/pjpeg\n\n
-	 *
-	 * If so, remove everything up to and including the last 
-	 * newline
-	 */
-
-	if ($fd = fs_fopen("$dir/$file", "rb")) {
-		// Read the first line
-		$line = fgets($fd, 4096);
-
-		// Does it look like a content-type string?
-		if (strstr($line, "Content-Type:")) {
-			// Skip till we find a line by itself.
-			do {
-				$line = fgets($fd, 4096);
-			} while (!feof($fd) && ord($line) != 13 && ord($line) != 10);
-
-			// Dump the rest to a file
-			$tempfile = tempnam($dir, $file);
-			if ($newfd = fs_fopen($tempfile, "wb", 0755)) {
-				while (!feof($fd)) {
-					/*
-					 * Copy the rest of the file.  Specify a length
-					 * to fwrite so that we ignore magic_quotes.
-					 */
-					fwrite($newfd, fread($fd, 64*1024), 64*1024+1);
-				}
-				fclose($newfd);
-				$success = fs_rename($tempfile, "$dir/$file");
-				if (!$success) {
-					echo gallery_error("Couldn't move $tempfile -> $dir/$file");
-					fs_unlink($tempfile);
-				}
-			} else {
-				echo gallery_error(sprintf(_("Can't write to %s."),
-							$tempfile));
-			}
-			chmod("$dir/$file", 0644);
-		}
-		fclose($fd);
-	} else {
-		echo gallery_error(sprintf(_("Can't read %s."), "$dir/$file"));
-	}
-
-	return 1;
-}
-
-/**
- * This function checks wether we are debugging with a given level.
- * If no level is given, it just returns wether we are debugging or not.
- * Debug is indicated by a debuglevel greater then 0
- */
-function isDebugging($level = NULL) {
-	global $gallery;
-
-	if (isset($gallery->app->debuglevel)) {
-		if($gallery->app->debuglevel > 0) {
-			if(isset($level) && $gallery->app->debuglevel < $level) {
-				return false;
-			}
-			return true;
-		}
-		else {
-			return false;
-		}
-	}
-	else {
-		return false;
-	}
-}
-
-function getNextPhoto($idx, $album=NULL) {
-	global $gallery;
-
-	if (!$album) {
-		$album = $gallery->album;
-	}
-
-	$numPhotos = $album->numPhotos(1);
-	$idx++;
-
-	if ($idx > $numPhotos) {
-		return $idx;
+	if ($idx > $numPhotos) {
+		return $idx;
 	}
 
 	// If it's not an album or hidden, or the user is an admin, show it to them.
@@ -1505,160 +522,32 @@
 	}
 }
 
-// The following 2 functions, printAlbumOptionList and printNestedVals provide
-// a html options list for moving photos and albums around within gallery.  There
-// were some defects in the original implimentation (I take full credit for the
-// defects), and thus on 5/22/03, I rewrote the 2 functions to conform to the
-// following requirements:
-//
-// For moving albums, there are 2 cases:
-// 1. moving root albums:  the user should be able to move a
-//    root album to any album to which they have write permissions
-//    AND not to an album nested beneath it in the same tree
-//    AND not to itself.
-// 2. moving nested albums:  the user should be able to move a
-//    nested album to any album to which they have write permissions
-//    AND not to an album nested beneath it in the same tree
-//    AND not to itself
-//    AND not to its parent album.
-//    The user should also be able to move it to the ROOT level
-//    with appropriate permissions.
-//
-// For moving pictures, there is 1 case:
-// 1. moving pictures:  the user should be able to move a picture
-//    to any album to which they have write permissions
-//    AND not to the album to which it already belongs.
-//
-// -jpk
-
-function printAlbumOptionList($rootDisplay=1, $moveRootAlbum=0, $movePhoto=0, $readOnly=false) {
-	global $gallery, $albumDB, $index;
-
-	$uptodate=true;
-	
-	$mynumalbums = $albumDB->numAlbums($gallery->user);
-
-	if (!$readOnly) {
-		echo "<option value=0 selected> << ". _("Select Album") ." >> </option>\n";
-	}
-
-	// create a ROOT option for the user to move the 
-	// album to the main display
-	if ($gallery->user->canCreateAlbums() && $rootDisplay && !$readOnly) {
-		echo "<option value=\".root\">". _("Top Level") ."</option>";
-	}
-
-	// display all albums that the user can move album to
-	for ($i=1; $i<=$mynumalbums; $i++) {
-
-		$myAlbum = $albumDB->getAlbum($gallery->user, $i);
-		$myAlbumName = $myAlbum->fields['name'];
-		$myAlbumTitle = $myAlbum->fields['title'];
-
-		if ($gallery->user->canWriteToAlbum($myAlbum) || 
-		   ($readOnly && $gallery->user->canReadAlbum($myAlbum))) {
-
-			if ($myAlbum->versionOutOfDate()) {
-				$uptodate=false;
-				continue;
-			}
-
-			if (!$readOnly && ($myAlbum == $gallery->album)) {
-				// Don't allow the user to move to the current location with
-				// value=0, but notify them that this is the current location
-				echo "<option value=\"$myAlbumName\">-- $myAlbumTitle (". _("current location"). ")</option>\n";
-			} else {
-				if (sizeof($gallery->album->fields["votes"]) && $gallery->album->pollsCompatible($myAlbum)) {
-					$myAlbumTitle .= " *";
-				}
-			       	echo "<option value=\"$myAlbumName\">-- $myAlbumTitle</option>\n";
-			}
-		}
-
-		if ( !$readOnly && $moveRootAlbum && ($myAlbum == $gallery->album) && !$movePhoto )  {
-
-			// do nothing -- we are moving a root album, and we don't
-			// want to move it into its own album tree
-
-		} elseif (!$readOnly && !$gallery->album->isRoot() && 
-			 ($myAlbum == $gallery->album->getNestedAlbum($index)) && !$movePhoto )  {
-
-			// do nothing -- we are moving an album, and we don't
-			// want to move it into its own album tree
-
-		} else {
-			printNestedVals(1, $myAlbumName, $movePhoto, $readOnly);
-		}
-	}
-
-	return $uptodate;
-}
-
-
-function printNestedVals($level, $albumName, $movePhoto, $readOnly) {
-	global $gallery, $index;
-	
-	$myAlbum = new Album();
-	$myAlbum->load($albumName);
-	
-	$numPhotos = $myAlbum->numPhotos(1);
-
-	for ($i=1; $i <= $numPhotos; $i++) {
-		if ($myAlbum->isAlbum($i)) {
-			$myName = $myAlbum->getAlbumName($i);
-			$nestedAlbum = new Album();
-			$nestedAlbum->load($myName);
-			if ($gallery->user->canWriteToAlbum($nestedAlbum) ||
-			    ($readOnly && $gallery->user->canReadAlbum($myAlbum))) {
-
-				$val2 = str_repeat("-- ", $level+1);
-				$val2 = $val2 . $nestedAlbum->fields['title'];
-				
-				if (!$readOnly && ($nestedAlbum == $gallery->album)) {
-					// don't allow user to move to here (value=0), but
-					// notify them that this is their current location
-					echo "<option value=0> $val2 (". _("current location") .")</option>\n";
-				} elseif (!$readOnly && !$gallery->album->isRoot() && 
-					 ($nestedAlbum == $gallery->album->getNestedAlbum($index))) {
-					echo "<option value=0> $val2 (". _("self"). ")</option>\n";
-				} else {
-					echo "<option value=\"$myName\"> $val2</option>\n";
-				}
-			}
-
-			if (!$readOnly && !$gallery->album->isRoot() && 
-			   ($nestedAlbum == $gallery->album->getNestedAlbum($index)) && !$movePhoto ) {
-
-				// do nothing -- don't allow album move into its own tree
-
-			} else {
-				printNestedVals($level + 1, $myName, $movePhoto, $readOnly);
-			}
-		}
-	}
-}
-
 /**
  * This function checks which tool
  * can we use for getting exif data from a photo.
  * returns false when no way works.
+ * @return mixed
+ * @author Jens Tkotz <jens@peino.de
  */
 function getExifDisplayTool() {
     global $gallery;
 
     if(isset($gallery->app->exiftags)) {
-	return 'exiftags';
+        return 'exiftags';
     } elseif (isset($gallery->app->use_exif)) {
-	return 'jhead';
+        return 'jhead';
     } else {
-	return false;
+        return false;
     }
 }
 
-/** This function does not really looks if EXIF Data is there or not.
- * It just looks at the extension
+/**
+ * This function does not really looks if EXIF Data is there or not.
+ * It just looks at the extension.
+ * @package string  $file
+ * @return  boolean
+ * @author  Jens Tkotz <jens@peino.de>
  */
-
 function hasExif($file) {
     if(eregi('jpe?g$', $file)) {
         return true;
@@ -1679,50 +568,49 @@
     $unwantedFields = array();
 
     switch(getExifDisplayTool()) {
-	case 'exiftags':
-	    if (empty($gallery->app->exiftags)) {
-		break;
-	    }
-	    $path = $gallery->app->exiftags;
-	    list($return, $status) = @exec_internal(fs_import_filename($path, 1) .' -au '.
-	      fs_import_filename($file, 1));
+        case 'exiftags':
+            if (empty($gallery->app->exiftags)) {
+                break;
+            }
+            $path = $gallery->app->exiftags;
+            list($return, $status) = @exec_internal(fs_import_filename($path, 1) .' -au '.
+                fs_import_filename($file, 1));
+        break;
 
-	    break;
-	
-	case 'jhead':
-	    if (empty($gallery->app->use_exif)) {
-		break;
-	    }
-	    $path = $gallery->app->use_exif;
-	    list($return, $status) = @exec_internal(fs_import_filename($path, 1) .' '. //. ' -v ' .
-	      fs_import_filename($file, 1));
-		
-	    $unwantedFields = array('File name');	
-	    break;
-	
-	default:
-	    return array(false,'');
-	    break;
-    }			
+        case 'jhead':
+            if (empty($gallery->app->use_exif)) {
+                break;
+            }
+            $path = $gallery->app->use_exif;
+            list($return, $status) = @exec_internal(fs_import_filename($path, 1) .' '. //. ' -v ' .
+            fs_import_filename($file, 1));
+    
+            $unwantedFields = array('File name');
+        break;
+
+        default:
+            return array(false,'');
+        break;
+    }
 
     if ($status == 0) {
-	foreach ($return as $value) {
-	    $value = trim($value);
-	    if (!empty($value)) {
-		$explodeReturn = explode(':', $value, 2);
-		$exifDesc = trim(htmlentities($explodeReturn[0]));
-		$exifData = trim(htmlentities($explodeReturn[1]));
-		if(!empty($exifData) && !in_array($exifDesc, $unwantedFields)) {
-		    if (isset($myExif[$exifDesc])) { 
-			$myExif[$exifDesc] .= "<br>";
-		    } else {
-			$myExif[$exifDesc] = '';
-		    }
+        foreach ($return as $value) {
+            $value = trim($value);
+            if (!empty($value)) {
+                $explodeReturn = explode(':', $value, 2);
+                $exifDesc = trim(htmlentities($explodeReturn[0]));
+                $exifData = trim(htmlentities($explodeReturn[1]));
+                if(!empty($exifData) && !in_array($exifDesc, $unwantedFields)) {
+                    if (isset($myExif[$exifDesc])) {
+                        $myExif[$exifDesc] .= "<br>";
+                    } else {
+                        $myExif[$exifDesc] = '';
+                    }
 
-		    $myExif[$exifDesc] .= trim($exifData);
-	        }
-	    }
-	}
+                    $myExif[$exifDesc] .= trim($exifData);
+                }
+            }
+        }
     }
 
     return array($status, $myExif);
@@ -1764,7 +652,8 @@
 		}
 	}
 
-	if (!$success) { // we were not able to get the capture date from exif... use file creation time
+	// we were not able to get the capture date from exif... use file creation time
+	if (!$success) {
 		$itemCaptureTimeStamp = filemtime($file);
 	}
 
@@ -1775,7 +664,7 @@
 	return $itemCaptureTimeStamp;
 }
 
-function doCommand($command, $args=array(), $returnTarget="", $returnArgs=array()) {
+function doCommand($command, $args = array(), $returnTarget = '', $returnArgs = array()) {
 
 	if ($returnTarget) {
 		$args["return"] = urlencode(makeGalleryHeaderUrl($returnTarget, $returnArgs));
@@ -1785,14 +674,14 @@
 }
 
 function breakString($buf, $desired_len=40, $space_char=' ', $overflow=5) {
-	$result = "";
+	$result = '';
 	$col = 0;
 	for ($i = 0; $i < strlen($buf); $i++, $col++) {
 		$result .= $buf{$i};
 		if (($col > $desired_len && $buf{$i} == $space_char) ||
 		    ($col > $desired_len + $overflow)) {
 			$col = 0;
-			$result .= "<br>";
+			$result .= '<br>';
 		}
 	}
 	return $result;
@@ -1874,150 +763,43 @@
 	return $success;
 }
 
-function removeTags($msg) {
-    $msg = strip_tags($msg);
-    return $msg;
-}
-
-function broken_link($file) {
-    if (fs_is_link($file)) {
-	return !fs_is_file($file);
-    } else {
-	return 0;
-    }
-}
-
-function printChildren($albumName,$depth=0) {
-	global $gallery;
-	$printedHeader = 0;
-	$myAlbum = new Album();
-	$myAlbum->load($albumName);
-	$numPhotos = $myAlbum->numPhotos(1);
-
-	if ($depth >= $gallery->app->albumTreeDepth) {
-		return;
-	}
-
-	for ($i=1; $i <= $numPhotos; $i++) {
-		set_time_limit($gallery->app->timeLimit);
-		if ($myAlbum->isAlbum($i) && !$myAlbum->isHidden($i)) {
-			$myName = $myAlbum->getAlbumName($i, false);
-		        $nestedAlbum = new Album();
-			$nestedAlbum->load($myName);
-			if ($gallery->user->canReadAlbum($nestedAlbum)) {
-				$val2 = $nestedAlbum->fields['title'];
-				if (!strcmp($nestedAlbum->fields['display_clicks'], 'yes')
-					&& !$gallery->session->offline) {
-				    $val3 = "(" . pluralize_n2(ngettext("1 hit", "%d hits", $nestedAlbum->getClicks()), $nestedAlbum->getClicks()) . ")";
-				} else {
-				    $val3 = "";
-				}
-				if ($depth==0 && !$printedHeader++) {
-					echo "<strong>". _("Sub-albums") .":</strong>\n";
-				}
-				echo "<div class='fineprint' style=\"white-space:nowrap; margin: 0px 0px 0px " . 20 * ($depth + 1) . "px\">";
-				echo "<a href=\"";
-				echo makeAlbumUrl($myName);
-				echo "\">$val2 $val3</a>";
-				echo "</div>\n";
-				printChildren($myName, $depth+1);
-			}
-		}
-	}
-}
-
-function printMicroChildren($albumName,$depth=0) {
-        global $gallery;
-        $printedHeader = 0;
-        $myAlbum = new Album();
-        $myAlbum->load($albumName);
-        $numPhotos = $myAlbum->numPhotos(1);
-
-        if ($depth >= $gallery->app->albumTreeDepth) {
-                return;
-        }
-        for ($i=1; $i <= $numPhotos; $i++) {
-                //set_time_limit($gallery->app->timeLimit);
-                if ($myAlbum->isAlbum($i) && !$myAlbum->isHidden($i)) {
-                        $myName = $myAlbum->getAlbumName($i, false);
-                        $nestedAlbum = new Album();
-                        $nestedAlbum->load($myName);
-                        if ($gallery->user->canReadAlbum($nestedAlbum)) {
-				if (strstr($nestedAlbum->gethighlightTag(), "img") === false) { continue; }
-                                $val2 = $nestedAlbum->fields['title'];
-                                if (!strcmp($nestedAlbum->fields['display_clicks'], 'yes')
-                                        && !$gallery->session->offline) {
-				    $val3 = "(" . pluralize_n2(ngettext("1 hit", "%d hits", $nestedAlbum->getClicks()), $nestedAlbum->getClicks()) . ")";
-                                } else {
-                                    $val3 = "";
-                                }
-				if ($depth==0 && !$printedHeader++) {
-					echo "<br /><br /><strong>". _("Sub-albums") .":</strong><br />";
-				}
-                                echo "<a href=\"";
-                                echo makeAlbumUrl($myName);
-                                echo "\">" . $nestedAlbum->getHighlightTag($gallery->app->default["nav_thumbs_size"],
-				  "class=\"nav_micro_img\"","$val2 $val3") . "</a>&nbsp";
-                                printMicroChildren($myName, $depth+1);
-                        }
-                }
-        }
-
-}
-
-/* this function left in place to support patches that use it, but please use
-   lastCommentDate functions in classes Album and AlbumItem.
+/**
+ * This function left in place to support patches that use it, but please use
+ * lastCommentDate functions in classes Album and AlbumItem.
  */
-function mostRecentComment($album, $i)
-{
-        $id=$album->getPhotoId($i); 
+function mostRecentComment($album, $i) {
+        $id = $album->getPhotoId($i); 
         $index = $album->getPhotoIndex($id); 
         $recentcomment = $album->getComment($index, $album->numComments($i));
         return $recentcomment->getDatePosted();
 }
 
-function ordinal($num=1)
-{
+function ordinal($num = 1) {
 	$ords = array("th","st","nd","rd");
 	$val = $num;
 	if ((($num%=100)>9 && $num<20) || ($num%=10)>3) $num=0;
 	return "$val" . $ords[$num];
 }
 
-function printMetaData($image_info) {
-	// Print meta data
-	print "<table border=\"1\">\n";
-	$row = 0;
-	foreach ($image_info as $info) {
-		print "<tr>";
-		if ($row == 0) {
-			$keys = array_keys($info);
-			foreach ($keys as $key) {
-				print "<th>$key</th>";
-			}
-			print "</tr>\n<tr>";
-		}
-		
-		foreach ($keys as $key) {
-			print "<td>".$info[$key]."</td>";
-		}
-		$row++;
-		print "</tr>\n";
-	}
-	print "</table>\n";
-}	
+/**
+ * Extracts the extension of a given filename and returns it in lower chars.
+ * @param  string   $filename
+ * @return string   $ext
+ * @author Jens Tkotz <jens@peino.de>
+ */ 
 function getExtension($filename) {
 	$ext = ereg_replace(".*\.([^\.]*)$", "\\1", $filename);
 	$ext = strtolower($ext);
 	
+	echo debugMessage(sprintf(_("extension of file %s is %s"), basename($filename), $ext), __FILE__, __LINE__, 3);
 	return $ext;
 }
 
 function acceptableArchiveList() {
-	return array('zip', 'rar', 'cab', 'arj', 'lzh', 'tar', 'gz', 'bz2', 'ace', 'uue', 'jar', 'z');
+	return array('zip', 'rar');
 }
 
-function AcceptableArchive($ext) {
+function acceptableArchive($ext) {
 	if (in_array($ext, acceptableArchiveList())) {
 		return true;
 	} else {
@@ -2025,66 +807,88 @@
 	}
 }
 
-/* This function checks wether and archive can be handled via Gallery
-** It just uses the filename extension.
-** If the extension is handable the decompressing tool is returned
-** This was done, because e.g. zipfiles can be handled by rar also.
-** So zipinfo and unzip are not needed.
-*/
-function canHandleArchive($ext) {
+/** 
+ * This function checks wether an archive can be decompressed via Gallery
+ * It just uses the filename extension.
+ * If the extension is handable the de/compressing tool is returned
+ * @param  string   $ext
+ * @return mixed    $tool   String containting the tool that handles $ext, FALSE when unsupported.
+ * @author Jens Tkotz <jens@peino.de>
+ */
+function canDecompressArchive($ext) {
 	global $gallery;
-
+    $tool = false;
+    
 	$ext = strtolower($ext);
 	switch ($ext) {
-		case 'zip':
-			if ($gallery->app->feature["zip"] == 1) {
-				return 'zip';
-			}
+	    case 'zip':
+	        if ($gallery->app->feature["zip"] == 1) {
+	            $tool = 'zip';
+	        }
+	        break;
 
-		case 'rar':
-		case 'cab':
-		case 'arj':
-		case 'lzh':
-		case 'tar':
-		case 'gz' :
-		case 'bz2':
-		case 'ace':
-		case 'uue':
-		case 'jar':
-		case 'z':
-			if (!empty($gallery->app->rar)) {
-				return 'rar';
-			}
-		break;
+	    case 'rar':
+	        if (!empty($gallery->app->rar)) {
+	            $tool = 'rar';
+	        }
+        break;
+        
+	    default:
+	        /* Extension not supported, $tool stays fals */
+	        break;
+	}
+	return $tool;
+}
 
-		default:
-			return false;
-		break;
+/** 
+ * This function checks wether an archive can be created via Gallery
+ * It just uses the filename extension.
+ * If the extension is handable the de/compressing tool is returned
+ * @param   string $ext
+ * @return  mixed   The tool which can create an archive with type $ext, or false.
+ * @author  Jens Tkotz <jens@peino.de>
+ */
+function canCreateArchive($ext = 'zip') {
+	global $gallery;
+
+	$ext = strtolower($ext);
+	if ($ext == 'zip' && !empty($gallery->app->zip)) {
+		return 'zip';
+	}
+	elseif ($ext == 'rar' && !empty($gallery->app->rar)) {
+		return 'rar';
+	}
+	else {		
+	    /* No suitable tool found */
+	    return false;
 	}
 }
 
 function getArchiveFileNames($archive, $ext) {
 	global $gallery;
 
-	$cmd="";
-	$files=array();
+	$cmd = '';
+	$files = array();
 	
-	switch (canHandleArchive($ext)) {
-		case 'zip':
-			$cmd = fs_import_filename($gallery->app->zipinfo, 1) ." -1 ". fs_import_filename($archive, 1);
-		break;
+	if ($tool = canDecompressArchive($ext)) {
+	    $filename = fs_import_filename($archive);
+	    switch ($tool) {
+	        case 'zip':
+	            $cmd = fs_import_filename($gallery->app->zipinfo) ." -1 ". $filename;
+	            break;
+
+	        case 'rar':
+	            $cmd = fs_import_filename($gallery->app->rar) ." vb ". $filename;
+	            break;
+	    }
 
-		case 'rar':
-			$cmd = fs_import_filename($gallery->app->rar, 1) ." lb ". fs_import_filename($archive, 1);
-		break;
-	}
-	
-	list($files, $status) = exec_internal($cmd);
+	    list($files, $status) = exec_internal($cmd);
 
-	if (!empty($files)) {
-		sort($files);
+	    if (!empty($files)) {
+	        sort($files);
+	    }
 	}
-
+	
 	return $files;
 }
 
@@ -2095,281 +899,286 @@
 	$cmd_pic_path = str_replace("[", "\[", $file);
 	$cmd_pic_path = str_replace("]", "\]", $cmd_pic_path);
 	
-	$tool=canHandleArchive($ext);
-	switch($tool) {
+	if($tool = canDecompressArchive($ext)) {
+	    echo debugMessage(sprintf(_("Extracting: %s with %s"), $archive, $tool),__FILE__, __LINE__,3);
+	    switch($tool) {
+	        case 'zip':
+	            $cmd = fs_import_filename($gallery->app->unzip) . " -j -o " .
+	            fs_import_filename($archive) . ' ' . fs_import_filename($cmd_pic_path) .
+	            ' -d ' . fs_import_filename($gallery->app->tmpDir);
+	            break;
+
+	        case 'rar':
+	            $cmd = fs_import_filename($gallery->app->rar) ." e ".
+	            fs_import_filename($archive) .' -x '. fs_import_filename($cmd_pic_path) .' '.
+	            fs_import_filename($gallery->app->tmpDir);
+	            break;
+	    }
+	    
+	    return exec_wrapper($cmd);
+	}
+	else {
+	    echo debugMessage(sprintf(_("%s with extension %s is not an supported archive.", $archive, $ext)),__FILE__, __LINE__);
+	}
+}
+
+function createZip($folderName = '', $zipName = '', $deleteSource = true) {
+    global $gallery;
+    
+    if ($folderName == '') {
+	   return false;
+    }
+
+    $tool = canCreateArchive('zip');
+    
+    if (! $tool) {
+        debugMessage(_("No Support for creating Zips"), __FILE__, __LINE__, 2);
+        return false;
+    } else {
+        debugMessage(sprintf(_("Creating Zipfile with %s"), $tool), __FILE__, __LINE__, 2);
+    }
+           
+    $tmpDir = $gallery->app->tmpDir .'/'. uniqid(rand());
+    
+    if ($zipName == '') {
+	   $fullZipName = 'gallery_zip.zip';
+    }
+    else {
+        $fullZipName = "$tmpDir/$zipName.zip";
+    }
+
+    if(! fs_mkdir($tmpDir)) {
+        echo gallery_error(
+          sprintf(_("Your tempfolder is not writeable! Please check permissions of this dir: %s"),
+          $gallery->app->tmpDir));
+        return false;
+    }
+    $currentDir = getcwd();
+    chdir($folderName);
+    
+    switch($tool) {
 		case 'zip':
-			$cmd = fs_import_filename($gallery->app->unzip, 1) . " -j -o " .
-				fs_import_filename($archive, 1) . ' ' . fs_import_filename($cmd_pic_path) .
-				' -d ' . fs_import_filename($gallery->app->tmpDir, 1);
+			$cmd = fs_import_filename($gallery->app->zip) ." -r $fullZipName *";
 		break;
 		
 		case 'rar':
-			$cmd = fs_import_filename($gallery->app->rar, 1) ." x ".
-				fs_import_filename($archive, 1) .' -x '. fs_import_filename($cmd_pic_path) .' '.
-				fs_import_filename($gallery->app->tmpDir, 1);
+			$cmd = '';
 		break;
 	}
-	exec_wrapper($cmd);
+    
+    if (! exec_wrapper($cmd)) {
+	   echo gallery_error("Zipping failed");
+	   chdir($currentDir);
+	   return false;
+    }
+    else {
+        chdir($currentDir);
+	   if($deleteSource) {
+	       rmdirRecursive($folderName);
+	   }
+	
+	return $fullZipName;
+    }
 }
 
-function processNewImage($file, $ext, $name, $caption, $setCaption="", $extra_fields=array(), $wmName="", $wmAlign=0, $wmAlignX=0, $wmAlignY=0, $wmSelect=0) {
+function processNewImage($file, $ext, $name, $caption, $setCaption = '', $extra_fields=array(), $wmName="", $wmAlign=0, $wmAlignX=0, $wmAlignY=0, $wmSelect=0) {
     global $gallery;
     global $temp_files;
-
-    /* Begin of code for the case the uploade file is an archive */
+    
+    echo debugMessage(sprintf(_("Processing file: %s"), $file), __FILE__, __LINE__,3);
+    /* Begin of code for the case the uploaded file is an archive */
     if (acceptableArchive($ext)) {
-	$tool = canHandleArchive($ext);
-	if (empty($tool)) {
-	    processingMsg(sprintf(_("Skipping %s (%s support not enabled)"), $name, $ext));
-	    return;
-	}
-
-	/* Figure out what files inside the archive we can handle.
-	** Put all Filenames into $files.
-	*/
-	$files = getArchiveFileNames($file, $ext);
-
-	/* Get meta data */
-
-	$image_info = array();
-	foreach ($files as $pic_path) {
-	    $pic = basename($pic_path);
-	    $tag = ereg_replace(".*\.([^\.]*)$", "\\1", $pic);
-	    $tag = strtolower($tag);
-	    if (!strcmp($tag, "csv")) {
-		extractFileFromArchive($file, $ext, $pic_path);
-		$image_info = array_merge($image_info, parse_csv($gallery->app->tmpDir . "/$pic",";"));
-	    }
-	}
+        processingMsg(sprintf(_("Processing file '%s' as archive"), $name));
+        $tool = canDecompressArchive($ext);
+        if (!$tool) {
+            processingMsg(sprintf(_("Skipping %s (%s support not enabled)"), $name, $ext));
+            echo "<br>";
+            return;
+        }
+
+        /*
+         * Figure out what files inside the archive we can handle.
+         * Put all Filenames into $files.
+        */
+        echo debugMessage(_("Getting archive content Filenames"), __FILE__, __LINE__);
+        $files = getArchiveFileNames($file, $ext);
+
+        /* Get meta data */
+        $image_info = array();
+        foreach ($files as $pic_path) {
+            $pic = basename($pic_path);
+            $tag = getExtension($pic);
+            if ($tag == 'csv') {
+                extractFileFromArchive($file, $ext, $pic_path);
+                $image_info = array_merge($image_info, parse_csv($gallery->app->tmpDir . "/$pic",";"));
+            }
+        }
 
-	debugMessage(printMetaData($image_info), __FILE__, __LINE__);
+        if(!empty($image_info)) {
+            debugMessage(printMetaData($image_info), __FILE__, __LINE__);
+        }
+        else {
+            echo debugMessage(_("No Metadata"), __FILE__, __LINE__);
+        }
 
-	/* Now process all valid files we found */
-	foreach ($files as $pic_path) {
-	    $pic = basename($pic_path);
-	    $tag = getExtension($pic);
-	    if (acceptableFormat($tag) || acceptableArchive($tag)) {
-		extractFileFromArchive($file, $ext, $pic_path);
-
-		/* Now process the metadates. */
-		$extra_fields = array();
-
-		/* Find in meta data array */
-		$firstRow = 1;
-		$fileNameKey = "File Name";
-		
-		/* $captionMetaFields will store the names (in order of priority to set caption to) */
-		$captionMetaFields = array("Caption", "Title", "Description", "Persons");
-		foreach ( $image_info as $info ) {
-		    if ($firstRow) {
-			/* Find the name of the file name field */
-			foreach (array_keys($info) as $currKey) {
-			    if (eregi("^\"?file\ ?name\"?$", $currKey)) {
-				$fileNameKey = $currKey;
-			    }
-			}
-		        $firstRow = 0;
-		    }
-		
-		    if ($info[$fileNameKey] == $pic) {
-		        /* Loop through fields */
-		    	foreach ($captionMetaFields as $field) {
-			    /* If caption isn't populated and current field is */
-			    if (!strlen($caption) && strlen($info[$field])) {
-			    	$caption = $info[$field];
-			    }
-			}
-		
-		    $extra_fields = $info;
-	    	}
-	    }
-	    /* Don't use the second argument for $cmd_pic_path, because it is already quoted. */
-	
-	    processNewImage($gallery->app->tmpDir . "/$pic", $tag, $pic, $caption, $setCaption, $extra_fields, $wmName, $wmAlign, $wmAlignX, $wmAlignY, $wmSelect);
-	    fs_unlink($gallery->app->tmpDir . "/$pic");
-	}
-    }
-} else {
-	/* Its a single file */
-	/* remove %20 and the like from name */
-	$name = urldecode($name);
-
-	/* parse out original filename without extension */
-	$originalFilename = eregi_replace(".$ext$", "", $name);
-
-	/* replace multiple non-word characters with a single "_" */
-	$mangledFilename = ereg_replace("[^[:alnum:]]", "_", $originalFilename);
-
-	/* Get rid of extra underscores */
-	    $mangledFilename = ereg_replace("_+", "_", $mangledFilename);
-	    $mangledFilename = ereg_replace("(^_|_$)", "", $mangledFilename);
-	    if (empty($mangledFilename)) {
-		$mangledFilename = $gallery->album->newPhotoName();
-	}
-	
-	/* 
-	** need to prevent users from using original filenames that are purely numeric.
-	** Purely numeric filenames mess up the rewriterules that we use for mod_rewrite 
-	** specifically:
-	** RewriteRule ^([^\.\?/]+)/([0-9]+)$	/~jpk/gallery/view_photo.php?set_albumName=$1&index=$2	[QSA]
-	*/
-	
-	if (ereg("^([0-9]+)$", $mangledFilename)) {
-	    $mangledFilename .= "_G";
-	}
-	
-	set_time_limit($gallery->app->timeLimit);
-	if (acceptableFormat($ext)) {
-	    /*
-	    ** Move the uploaded image to our temporary directory
-	    ** using move_uploaded_file so that we work around
-	    ** issues with the open_basedir restriction.
-	    */
-	    if (function_exists('move_uploaded_file')) {
-		$newFile = tempnam($gallery->app->tmpDir, "gallery");
-		if (move_uploaded_file($file, $newFile)) {
-		    $file = $newFile;
-		}
-				
-		/* Make sure we remove this file when we're done */
-		$temp_files[$newFile] = 1;
-	    }
-		    
-	    echo "\n<h3>******". sprintf(_("Adding %s"), $name) ."*****</h3>";
+        /* Now process all valid files we found */
+        echo debugMessage(_("Processing files in archive"), __FILE__, __LINE__);
+        $loop = 0;
+        foreach ($files as $pic_path) {
+            $loop++;
+            $pic = basename($pic_path);
+            $tag = getExtension($pic);
+            echo debugMessage(sprintf(_("%d. %s"), $loop, $pic_path), __FILE__, __LINE__);
+            if (acceptableFormat($tag) || acceptableArchive($tag)) {
+                if(!extractFileFromArchive($file, $ext, $pic_path)) {
+                    echo '<br>'. gallery_error(sprintf(_("Could not extract %s"), $pic_path));
+                    continue;
+                }
 
-	    /* What should the caption be, if no caption was given by user ?
-	    ** See captionOptions.inc.php for options
-	    */
-			
-	    if (isset($gallery->app->dateTimeString)) {
-		$dateTimeFormat = $gallery->app->dateTimeString;
-	    } else {
-		$dateTimeFormat = "%D %T";
-	    }
-	
-	    if (empty($caption)) {
-		switch ($setCaption) {
-		    case 1:
-			/* Use filename */
-			$caption = strtr($originalFilename, '_', ' ');
-			break;
-		    case 2:
-			/* Use file cration date */
-			$caption = strftime($dateTimeFormat, filectime($file));
-			break;
-		    case 3:
-			/* Use capture date */
-			$caption = strftime($dateTimeFormat, getItemCaptureDate($file));
-			break;
-		}
-	    }
-	
-	    if (!$extra_fields) {
-		$extra_fields = array();
-	    }
+                /* Now process the metadates. */
+                $extra_fields = array();
 
-	    /* After all the preprocessing, NOW ADD THE element */		
-	    $err = $gallery->album->addPhoto($file, $ext, $mangledFilename, $caption, "", $extra_fields, $gallery->user->uid, NULL, $wmName, $wmAlign, $wmAlignX, $wmAlignY, $wmSelect);
-	    if ($err) {
-		processingMsg(gallery_error($err));
-		processingMsg("<b>". sprintf(_("Need help?  Look in the  %s%s FAQ%s"),
-			'<a href="http://gallery.sourceforge.net/faq.php" target=_new>', Gallery(), '</a>') .
-			"</b>");
-	    }
-	} else {
-	    processingMsg(sprintf(_("Skipping %s (can't handle %s format)"), $name, $ext));
-	}
-    }
-}
+                /* Find in meta data array */
+                $firstRow = 1;
+                $fileNameKey = "File Name";
+
+                /* $captionMetaFields will store the names (in order of priority to set caption to) */
+                $captionMetaFields = array("Caption", "Title", "Description", "Persons");
+                foreach ( $image_info as $info ) {
+                    if ($firstRow) {
+                        /* Find the name of the file name field */
+                        foreach (array_keys($info) as $currKey) {
+                            if (eregi("^\"?file\ ?name\"?$", $currKey)) {
+                                $fileNameKey = $currKey;
+                            }
+                        }
+                        $firstRow = 0;
+                    }
 
-function createNewAlbum( $parentName, $newAlbumName = '', $newAlbumTitle = '', $newAlbumDesc = '') {
-	global $gallery;
+                    if ($info[$fileNameKey] == $pic) {
+                        /* Loop through fields */
+                        foreach ($captionMetaFields as $field) {
+                            /* If caption isn't populated and current field is */
+                            if (!strlen($caption) && strlen($info[$field])) {
+                                $caption = $info[$field];
+                            }
+                        }
 
-	// get parent album name
-	$albumDB = new AlbumDB(FALSE);
+                        $extra_fields = $info;
+                    }
+                }
+                /* Don't use the second argument for $cmd_pic_path, because it is already quoted. */
 
-	// set new album name from param or default
-	$gallery->session->albumName = $albumDB->newAlbumName($newAlbumName);
+                processNewImage($gallery->app->tmpDir . "/$pic", $tag, $pic, $caption, $setCaption, $extra_fields, $wmName, $wmAlign, $wmAlignX, $wmAlignY, $wmSelect);
+                fs_unlink($gallery->app->tmpDir . "/$pic");
+            }
+        }
+    } else {
+        /* Its a single file
+         * remove %20 and the like from name
+         */
+        $name = urldecode($name);
+
+        /* parse out original filename without extension */
+        $originalFilename = eregi_replace(".$ext$", "", $name);
+
+        /* replace multiple non-word characters with a single "_" */
+        $mangledFilename = ereg_replace("[^[:alnum:]]", "_", $originalFilename);
+
+        /* Get rid of extra underscores */
+        $mangledFilename = ereg_replace("_+", "_", $mangledFilename);
+        $mangledFilename = ereg_replace("(^_|_$)", "", $mangledFilename);
+        if (empty($mangledFilename)) {
+            $mangledFilename = $gallery->album->newPhotoName();
+        }
 
-	$gallery->album = new Album();
-	$gallery->album->fields["name"] = $gallery->session->albumName;
+        /*
+         * need to prevent users from using original filenames that are purely numeric.
+         * Purely numeric filenames mess up the rewriterules that we use for mod_rewrite
+         * specifically:
+         * RewriteRule ^([^\.\?/]+)/([0-9]+)$	/~jpk/gallery/view_photo.php?set_albumName=$1&index=$2	[QSA]
+        */
 
-	// guid is not created during new Album() as a performance optimization
-	// it only needs to be created when an album is created or modified by adding or deleting photos
-	$gallery->album->fields['guid'] = genGUID();
-
-	// set title and description
-	if (!empty($newAlbumTitle)) {
-		$gallery->album->fields["title"] = $newAlbumTitle;
-	}
-	if (!empty($newAlbumDesc)) {
-		$gallery->album->fields["description"] = $newAlbumDesc;
-	}
-
-	$gallery->album->setOwner($gallery->user->getUid());
-
-	/* if this is a nested album, set nested parameters */
-	if (!empty($parentName)) {
-		$gallery->album->fields['parentAlbumName'] = $parentName;
-		$parentAlbum = $albumDB->getAlbumByName($parentName);
-		$parentAlbum->addNestedAlbum($gallery->session->albumName);
-		$parentAlbum->save(array(i18n("Album \"{$gallery->album->fields['name']}\" created as a sub-album of \"$parentName\".")));
-		// Set default values in nested album to match settings of parent.
-		$gallery->album->fields["perms"]           = $parentAlbum->fields["perms"];
-		$gallery->album->fields['extra_fields']    = $parentAlbum->fields['extra_fields'];
-		$gallery->album->fields["bgcolor"]         = $parentAlbum->fields["bgcolor"];
-		$gallery->album->fields["textcolor"]       = $parentAlbum->fields["textcolor"];
-		$gallery->album->fields["linkcolor"]       = $parentAlbum->fields["linkcolor"];
-		$gallery->album->fields['background']      = $parentAlbum->fields['background'];
-		$gallery->album->fields["font"]            = $parentAlbum->fields["font"];
-		$gallery->album->fields["border"]          = $parentAlbum->fields["border"];
-		$gallery->album->fields["bordercolor"]     = $parentAlbum->fields["bordercolor"];
-		$gallery->album->fields["thumb_size"]      = $parentAlbum->fields["thumb_size"];
-		$gallery->album->fields["resize_size"]     = $parentAlbum->fields["resize_size"];
-		$gallery->album->fields["resize_file_size"]     = $parentAlbum->fields["resize_file_size"];
-		$gallery->album->fields['max_size']        = $parentAlbum->fields['max_size'];
-		$gallery->album->fields['max_file_size']   = $parentAlbum->fields['max_file_size'];
-		$gallery->album->fields['returnto']        = $parentAlbum->fields['returnto'];
-		$gallery->album->fields["rows"]            = $parentAlbum->fields["rows"];
-		$gallery->album->fields["cols"]            = $parentAlbum->fields["cols"];
-		$gallery->album->fields["fit_to_window"]   = $parentAlbum->fields["fit_to_window"];
-		$gallery->album->fields["use_fullOnly"]    = $parentAlbum->fields["use_fullOnly"];
-		$gallery->album->fields["print_photos"]    = $parentAlbum->fields["print_photos"];
-		$gallery->album->fields['slideshow_type']  = $parentAlbum->fields['slideshow_type'];
-		$gallery->album->fields['slideshow_recursive'] = $parentAlbum->fields['slideshow_recursive'];
-		$gallery->album->fields['slideshow_length'] = $parentAlbum->fields['slideshow_length'];
-		$gallery->album->fields['slideshow_loop'] = $parentAlbum->fields['slideshow_loop'];
-		$gallery->album->fields['album_frame']    = $parentAlbum->fields['album_frame'];
-		$gallery->album->fields['thumb_frame']    = $parentAlbum->fields['thumb_frame'];
-		$gallery->album->fields['image_frame']    = $parentAlbum->fields['image_frame'];
-		$gallery->album->fields["use_exif"]        = $parentAlbum->fields["use_exif"];
-		$gallery->album->fields["display_clicks"]  = $parentAlbum->fields["display_clicks"];
-		$gallery->album->fields["item_owner_display"] = $parentAlbum->fields["item_owner_display"];
-		$gallery->album->fields["item_owner_modify"]  = $parentAlbum->fields["item_owner_modify"];
-		$gallery->album->fields["item_owner_delete"]  = $parentAlbum->fields["item_owner_delete"];
-		$gallery->album->fields["add_to_beginning"]   = $parentAlbum->fields["add_to_beginning"];
-		$gallery->album->fields['showDimensions']  = $parentAlbum->fields['showDimensions'];
+        if (ereg("^([0-9]+)$", $mangledFilename)) {
+            $mangledFilename .= "_G";
+        }
 
-		$returnVal = $gallery->album->save(array(i18n("Album \"{$gallery->album->fields['name']}\" created as a sub-album of \"$parentName\".")));
-	} else {
-		$gallery->album->save(array(i18n("Root album \"{$gallery->album->fields['name']}\" created.")));
-		/*
-		* Get a new albumDB because our old copy is not up to
-		* date after we created a new album
-		*/
-		$albumDB = new AlbumDB(FALSE);
-
-		/* move the album to the top if not a nested album*/
-		$numAlbums = $albumDB->numAlbums($gallery->user);
-		$albumDB->moveAlbum($gallery->user, $numAlbums, 1);
-		$returnVal = $albumDB->save();
-	}
+        set_time_limit($gallery->app->timeLimit);
+        if (acceptableFormat($ext)) {
+            /*
+             * Move the uploaded image to our temporary directory
+             * using move_uploaded_file so that we work around
+             * issues with the open_basedir restriction.
+            */
+            if (function_exists('move_uploaded_file')) {
+                $newFile = tempnam($gallery->app->tmpDir, "gallery");
+                if (move_uploaded_file($file, $newFile)) {
+                    $file = $newFile;
+                }
 
-	if (!empty($returnVal)) {
-		return $gallery->session->albumName;
-	} else {
-		return 0;
-	}
+                /* Make sure we remove this file when we're done */
+                $temp_files[$newFile] = 1;
+            }
+
+            /* What should the caption be, if no caption was given by user ?
+             * See captionOptions.inc.php for options
+            */
+
+            if (isset($gallery->app->dateTimeString)) {
+                $dateTimeFormat = $gallery->app->dateTimeString;
+            } else {
+                $dateTimeFormat = "%D %T";
+            }
+
+            if (empty($caption)) {
+                switch ($setCaption) {
+                    case 0:
+			$caption = '';
+		    break;
+                    case 1:
+                    default:
+                        /* Use filename */
+                        $caption = strtr($originalFilename, '_', ' ');
+                    break;
+                    case 2:
+                        /* Use file cration date */
+                        $caption = strftime($dateTimeFormat, filectime($file));
+                    break;
+                    case 3:
+                        /* Use capture date */
+                        $caption = strftime($dateTimeFormat, getItemCaptureDate($file));
+                    break;
+                }
+            }
+
+            echo "\n<p><b>******". sprintf(_("Adding %s"), $name) ."*****</b></p>";
+            
+            /* After all the preprocessing, NOW ADD THE element
+             * function addPhoto($file, $tag, $originalFilename, $caption, $pathToThumb="", $extraFields=array(), $owner="", $votes=NULL,
+             *                   $wmName="", $wmAlign=0, $wmAlignX=0, $wmAlignY=0, $wmSelect=0)
+            */
+            $err = $gallery->album->addPhoto( 
+                $file,
+                $ext,
+                $mangledFilename,
+                $caption,
+                '',
+                $extra_fields,
+                $gallery->user->uid,
+                NULL,
+                $wmName, $wmAlign, $wmAlignX, $wmAlignY, $wmSelect
+            );
+            
+            if ($err) {
+                processingMsg(gallery_error($err));
+                processingMsg("<b>". sprintf(_("Need help?  Look in the  %s%s FAQ%s"),
+                '<a href="http://gallery.sourceforge.net/faq.php" target=_new>', Gallery(), '</a>') .
+                "</b>");
+            }
+        } else {
+            processingMsg(sprintf(_("Skipping %s (can't handle %s format)"), $name, $ext));
+        }
+    }
 }
 
 function escapeEregChars($string) {
@@ -2388,106 +1197,20 @@
 	return false;
 }
 
-/* little function useful for debugging.  no calls to this should be in 
-   committed code. */
-
-function vd($x, $string="") {
-	print "<pre>\n$string: ";
-	var_dump($x);
-	print "</pre>\n";
-}       
-
-/*returns a link to the docs, if present, or NULL */
-function galleryDocs() {
-	global $gallery;
-
-	if (fs_file_exists(dirname(__FILE__) .'/docs/index.html')) {
-		if (isset($gallery->app->photoAlbumURL)) {
-			$url=$gallery->app->photoAlbumURL . '/docs/index.html';
-		}
-		else {  // When first time config without $gallery set.
-			$url='../docs/index.html';
-		}
-		return $url;
-	} else {
-		return NULL;
-	}
-}
-
+/**
+ * Return the Version number of ImageMagick, identified by "convert -version"
+ * @return $version	string	Versionnumber as string
+*/
 function getImVersion() {
-	global $gallery;
-	$version = array();
-
-	exec($gallery->app->ImPath .'/convert -version', $results);
-
-	$pieces = explode(' ', $results[0]);
-	$version = $pieces[2];
-
-	return $version[0];  // Only the first character
-}
-function compress_image($src, $out, $target, $quality, $keepProfiles=false) {
-	global $gallery;
-
-	if ($target === 'off') {
-		$target = '';
-	}
-	$srcFile = fs_import_filename($src);
-	$outFile = fs_import_filename($out);
-	
-	switch($gallery->app->graphics)	{
-		case "NetPBM":
-			exec_wrapper(toPnmCmd($src) .
-				(($target > 0) ? (' | ' .NetPBM('pnmscale',
-				" -xysize $target $target")) : '')
-				. ' | ' . fromPnmCmd($out, $quality));
-			/* copy over EXIF data if a JPEG if $keepProfiles is
-			 * set. Unfortunately, we can't also keep comments. */ 
-			if ($keepProfiles && eregi('\.jpe?g$', $src)) {
-				if (isset($gallery->app->use_exif)) {
-					exec_wrapper(fs_import_filename($gallery->app->use_exif, 1) . ' -te '
-						. $srcFile . ' ' . $outFile);
-				} else {
-					processingMsg(_('Unable to preserve EXIF data (jhead not installed)') . "\n");
-				}
-			}
-			break;
-		case "ImageMagick":
-			/* we just need the first digit = major version */
-			$ImVersion = floor(getImVersion());
-			// Set the keepProfiles parameter based on the version
-			// of ImageMagick being used.  6.0.0 changed the
-			// parameters again.
-			switch ($ImVersion) {
-			    case '5':
-				$keepProfiles = ($keepProfiles) ? '' : ' +profile \'*\' ';
-				break;
-			    case '6':
-				$keepProfiles = ($keepProfiles) ? '' : ' -strip ';
-				break;
-			    default:
-				$keepProfiles = '';
-			}
+    global $gallery;
+    $version = array();
 
-			/* Preserve comment, EXIF data if a JPEG if $keepProfiles is set. */
+    exec($gallery->app->ImPath .'/convert -version', $results);
 
-			$sizeCmd = '';
-			$geometryCmd = '';
-			if ($target) {
-			    $sizeCmd = "-size ${target}x${target} ";
-			    $geometryCmd = "-geometry ${target}x${target} ";
-			}
+    $pieces = explode(' ', $results[0]);
+    $version = $pieces[2];
 
-			exec_wrapper(ImCmd('convert',
-			   $srcFile .
-			   " -quality $quality $sizeCmd $keepProfiles -coalesce $geometryCmd $outFile"
-			));
-
-			break;
-		default:
-		    echo debugMessage(_("You have no graphics package configured for use!"));
-		break;
-			
-	}
+    return $version;
 }
 
 define("OS_WINDOWS", "win");
@@ -2547,380 +1270,150 @@
 				      ' = Uppercase letter ' . $pass[$idx] . "\n";
 		} elseif (ereg('[[:lower:]]', $pass[$idx])) {
 			$result .= $pre . $pass[$idx] .
-				      ' = Lowercase letter ' . $pass[$idx] . "\n";
-		} elseif (ereg('[[:digit:]]', $pass[$idx])) {
-			$result .= $pre . $pass[$idx] .
-				      ' = Numerical number ' . $pass[$idx] . "\n";
-		} else {
-			$result .= $pre . $pass[$idx] .
-				      ' = ASCII Character  ' . $pass[$idx] . "\n";
-		}
-	}
-	return "$result\n";
-}
-
-function logMessage ($msg, $logfile) {
-	
-	if ($fd = fs_fopen($logfile, "a")) {
-		fwrite($fd, strftime("%Y/%m/%d %H:%M.%S: $msg\n"));
-		fclose($fd);
-	}
-	elseif (isDebugging()) {
-		print sprintf(_("Cannot open logfile: %s"), $logfile);
-	}
-}
-
-/* Formats a nice string to print below an item with comments */
-function lastCommentString($lastCommentDate, &$displayCommentLegend) {
-	global $gallery;
-	if ($lastCommentDate  <= 0) {
-		return  "";
-	}
-	if ($gallery->app->comments_indication_verbose=="yes") {
-		$ret = "<br>".sprintf(_("Last comment %s."), 
-				strftime($gallery->app->dateString, $lastCommentDate));
-	} else {
-		$ret= "<span class=\"commentIndication\">*</span>";
-		$displayCommentLegend = 1;
-	}
-	return $ret;
-}
-
-function available_skins($description_only = false) {
-	global $gallery;
-	$version ='';
-	$last_update ='';
-	$possibleSkins = array();
-
-	if (isset($gallery->app->photoAlbumURL)) {
-		$base_url = $gallery->app->photoAlbumURL;
-	}
-	else {
-		$base_url = "..";
-	}
-
-	$dir = dirname(__FILE__) . '/skins';
-	$opts['none'] = 'No Skin';
-	$descriptions="<dl>";
-	$name = "<a href \"#\" onClick=\"document.config.skinname.options[0].selected=true; return false;\">". _("No Skin") ."</a>";
-	$descriptions .= sprintf (_('<dt>%s</dt><dd>The original look and feel.</dd>'), $name);
-	$skincount = 0;
-
-	if (fs_is_dir($dir) && is_readable($dir) && $fd = fs_opendir($dir)) {
-		while ($file = readdir($fd)) {
-			$subdir="$dir/$file/css";
-			$skincss="$subdir/screen.css";
-			if (fs_is_dir($subdir) && fs_file_exists($skincss)) {
-				$possibleSkins[] = $file;
-			}
-		}
-
-		sort($possibleSkins);
-		foreach($possibleSkins as $file) {
-			$subdir="$dir/$file/css";
-			$skininc="$dir/$file/style.def";
-			$name="";
-			$description="";
-			$skincss="$subdir/screen.css";
-			$skincount++;
-
-			if (fs_file_exists($skininc)) {
-				require($skininc);
-			}
-
-			if (empty($name)) {
-				$name = $file;
-			}
-
-			$opts[$file]=$name;
-			if (fs_file_exists("$dir/$file/images/screenshot.jpg")) {
-				$screenshot = $base_url . "/skins/$file/images/screenshot.jpg";
-			} elseif (fs_file_exists("$dir/$file/images/screenshot.gif")) {
-				$screenshot = $base_url . "/skins/$file/images/screenshot.gif";
-			} else {
-				$screenshot = "";
-			}
-
-			if ($screenshot) {
-				$name = popup_link($name, $screenshot, 1, false,
-				500, 800, '', 'document.config.skinname.options['. $skincount. '].selected=true; ');
-			}
-
-			$descriptions.="\n<dt style=\"margin-top:5px;\">$name";
-			if (!isset ($version)) {
-				$version = _("unknown");
-			}
-
-			if (!isset($last_update)) {
-				$last_update = _("unknown");
-			}
-
-			$descriptions .= '<span style="margin-left:10px; font-size:x-small">';
-			$descriptions .= _("Version") .": $version";
-			$descriptions .= "&nbsp;&nbsp;&nbsp;";
-			$descriptions .= _("Last Update") . ": $last_update</span></dt>";
-			$descriptions .= "<dd style=\"font-weight:bold; background-color:white;\">$description<br></dd>";
-		}
-
-		$descriptions .="\n</dl>";
-
-		if ($description_only) {
-			return $descriptions;
-		} else {
-			return $opts;
-		}
-	}
-}
-
-function available_frames($description_only=false) {
-
-	$GALLERY_BASE=dirname(__FILE__);
-
-	$opts=array(
-			'none' => _("None"), 
-			'dots' => _("Dots"), 
-			'solid' => _("Solid"), 
-			);
-	$descriptions="<dl>" .
-		"<dt>" . popup_link(_("None"), "frame_test.php?frame=none", 1)  . "</dt><dd>". _("No frames")."</dd>" .
-		"<dt>" . popup_link(_("Dots"), "frame_test.php?frame=dots", 1)  . "</dt><dd>". _("Just a simple dashed border around the thumb.")."</dd>" .
-		"<dt>" . popup_link(_("Solid"), "frame_test.php?frame=solid", 1) . "</dt><dd>". _("Just a simple solid border around the thumb.")."</dd>" ;
-	$dir = $GALLERY_BASE . '/html_wrap/frames';
-       	if (fs_is_dir($dir) && is_readable($dir) && $fd = fs_opendir($dir)) {
-	       	while ($file = readdir($fd)) {
-			$subdir="$dir/$file";
-			$frameinc="$subdir/frame.def";
-			if (fs_is_dir($subdir) && fs_file_exists($frameinc)) {
-				$name=NULL;
-				$description=NULL;
-				require($frameinc);
-				if (empty($name )) {
-					$name=$file;
-				}
-				if (empty($description )) {
-					$description=$file;
-				}
-				$opts[$file]=$name;
-				$descriptions.="\n<dt>" . popup_link($name, "frame_test.php?frame=$file", 1) . "</a></dt><dd>$description</dd>";
-			} else {
-				if (false && isDebugging()) 
-				{
-					echo gallery_error(sprintf(_("Skipping %s."),
-								$subdir));
-				}
-			}
-		}
-	} else {
-		echo gallery_error(sprintf(_("Can't open %s"), $dir));
-	}
-
-	$descriptions.="\n</dl>";
-	if ($description_only) {
-		return $descriptions;
-	} else {
-	       	return $opts;
-	}
-}
-
-/* simplify condition tests */
-function testRequirement($test) {
-	global $gallery;
-	switch ($test) {
-		case 'isAdminOrAlbumOwner':
-			return $gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($gallery->album);
-		break;
-		
-		case 'comments_enabled':
-			return $gallery->app->comments_enabled == 'yes';
-		break;
-		
-		case 'allowComments':
-			return $gallery->album->fields["perms"]['canAddComments'];
-		break;
-		
-		case 'hasComments':
-			return ($gallery->album->lastCommentDate("no") != -1);
-		break;
-		
-		case 'canAddToAlbum':
-			return $gallery->user->canAddToAlbum($gallery->album);
-		break;
-		
-		case 'extraFieldsExist':
-			$extraFields = $gallery->album->getExtraFields();
-			return !empty($extraFields);
-		break;
-		
-		case 'isAlbumOwner':
-			return $gallery->user->isOwnerOfAlbum($gallery->album);
-		break;
-		
-		case 'canCreateSubAlbum':
-			return $gallery->user->canCreateSubAlbum($gallery->album);
-		break;
-		
-		case 'notOffline':
-			return !$gallery->session->offline;
-		break;
-		
-		case 'canChangeText':
-			return $gallery->user->canChangeTextOfAlbum($gallery->album);
-		break;
-		
-		case 'canWriteToAlbum':
-			return $gallery->user->canWriteToAlbum($gallery->album);
-		break;
-		
-		case 'photosExist':
-			return $gallery->album->numPhotos(true);
-		break;
-		
-		case 'watermarkingEnabled':
-			return isset($gallery->app->watermarkDir);
-		break;
-		
-		default:
-			return false;
+				      ' = Lowercase letter ' . $pass[$idx] . "\n";
+		} elseif (ereg('[[:digit:]]', $pass[$idx])) {
+			$result .= $pre . $pass[$idx] .
+				      ' = Numerical number ' . $pass[$idx] . "\n";
+		} else {
+			$result .= $pre . $pass[$idx] .
+				      ' = ASCII Character  ' . $pass[$idx] . "\n";
+		}
 	}
+	return "$result\n";
 }
 
-function doctype() {
-	echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' . "\n";
+function logMessage ($msg, $logfile) {
+	
+	if ($fd = fs_fopen($logfile, "a")) {
+		fwrite($fd, strftime("%Y/%m/%d %H:%M.%S: $msg\n"));
+		fclose($fd);
+	}
+	elseif (isDebugging()) {
+		print sprintf(_("Cannot open logfile: %s"), $logfile);
+	}
 }
 
-function common_header($adds = array()) {
-    $metaTagAdds = array();
-    if(isset($adds['metaTags'])) {
-	$metaTagAdds = $adds['metaTags'];
+/* simplify condition tests */
+function testRequirement($test) {
+    global $gallery;
+    if(substr($test, 0,1 ) == "!") {
+        $test = substr($test, 1);
+        $negativeTest = true;
+    }
+    else {
+        $negativeTest = false;
     }
 
-// Do some meta tags
-    metatags($metaTagAdds);
+    switch ($test) {
+        case 'albumIsRoot':
+            $result = $gallery->album->isRoot();
+        break;
+        case 'isAdminOrAlbumOwner':
+            $result = $gallery->user->isAdmin() || $gallery->user->isOwnerOfAlbum($gallery->album);
+        break;
 
-// Import CSS Style_sheet
-    echo getStyleSheetLink();
-	
-// Set the Gallery Icon 
-    echo "\n  <link rel=\"shortcut icon\" href=\"". makeGalleryUrl('images/favicon.ico') . "\">\n";
-}
+        case 'comments_enabled':
+            $result = $gallery->app->comments_enabled == 'yes';
+        break;
 
-function metatags($adds = array()) {
-    global $gallery;
+        case 'allowComments':
+            $result = $gallery->album->fields["perms"]['canAddComments'];
+        break;
 
-    echo '<meta http-equiv="content-style-type" content="text/css">';
-    echo "\n  ". '<meta http-equiv="content-type" content="Mime-Type; charset='. $gallery->charset .'">';
-    echo "\n  ". '<meta name="content-language" content="' . str_replace ("_","-",$gallery->language) . '">';
-
-    if(!empty($adds)) {
-	foreach ($adds as $name => $content) {
-	    echo "\n  ". '<meta name="'. $name .'" content="'. $content .'">';
-	}
-    } 
-    echo "\n";
-}
+        case 'hasComments':
+            $result = ($gallery->album->lastCommentDate("no") != -1);
+        break;
 
-/**
- * Generates a link to w3c validator
- * 
- * @param	string	$file	file to validate, relative to gallery dir
- * @param	boolean	$valid	true/false wether we know the result ;)
- * @param	array	$arg	optional array with urlargs
- * @return	string	$link	HTML hyperlink
- */
-function gallery_validation_link($file, $valid=true, $args = array()) {
-    global $gallery;
+        case 'canAddToAlbum':
+            $result = $gallery->user->canAddToAlbum($gallery->album);
+        break;
 
-    if (isset($gallery->app->devMode) && $gallery->app->devMode == "no") {
-	return '';
-    }
+        case 'canDeleteAlbum':
+            $result = $gallery->user->canDeleteAlbum($gallery->album);
+        break;
 
-    $args['PHPSESSID'] = session_id();
-    $url = makeGalleryURL($file, $args);
+        case 'extraFieldsExist':
+            $extraFields = $gallery->album->getExtraFields();
+            $result = !empty($extraFields);
+        break;
 
-    if (!empty($file) && isset($gallery->app->photoAlbumURL)) {
-	$uri = urlencode(eregi_replace("&amp;", "&", $url));
-    }
-    else {
-	$uri = 'referer&amp;PHPSESSID='. $args['PHPSESSID'];
-    }
+        case 'isAlbumOwner':
+            $result = $gallery->user->isOwnerOfAlbum($gallery->album);
+        break;
 
-    $link = '<a href="http://validator.w3.org/check?uri='. $uri .'">'.
-	'<img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>';
-	
-    if (!$valid) {
-	$link .= _("Not valid yet");
-    }
+        case 'canCreateSubAlbum':
+            $result = $gallery->user->canCreateSubAlbum($gallery->album);
+        break;
 
-    return $link;
-}
+        case 'notOffline':
+            $result = !$gallery->session->offline;
+        break;
 
-// uses makeAlbumURL
-function album_validation_link($album, $photo='', $valid=true) {
-	global $gallery;
-	if ($gallery->app->devMode == "no") {
-		return "";
-	}
-	$args=array();
-	$args['PHPSESSID']=session_id();
-	$link='<a href="http://validator.w3.org/check?uri='.
-		urlencode(eregi_replace("&amp;", "&", 
-					makeAlbumURL($album, $photo, $args))).
-		'"> <img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>';
-	if (!$valid) {
-		$link .= _("Not valid yet");
-	}
-	return $link;
+        case 'canChangeText':
+            $result = $gallery->user->canChangeTextOfAlbum($gallery->album);
+        break;
+
+        case 'canWriteToAlbum':
+            $result = $gallery->user->canWriteToAlbum($gallery->album);
+        break;
+
+        case 'photosExist':
+            $result = $gallery->album->numPhotos(true);
+        break;
+
+        case 'watermarkingEnabled':
+            $result = isset($gallery->app->watermarkDir);
+        break;
+
+        default:
+            $result = false;
+        break;
+    }
+    if ($negativeTest) {
+        $result = ! $result;
+    }
+    
+    return $result;
 }
 
 /**
  * @return string	$location	Location where Gallery assmes the user. Can be 'core' or 'config'
+ * @author Jens Tkotz <jens@peino.de>
  */
 function where_i_am() {
     global $GALLERY_OK;
 
     if (!stristr($_SERVER['REQUEST_URI'],'setup') || $GALLERY_OK) {
-	$location = 'core';
+        $location = 'core';
     } else {
-	$location = 'config';
+        $location = 'config';
     }
     return $location;
 }
 
-function user_name_string($uid, $format='!!FULLNAME!! (!!USERNAME!!)') {
-       	global $gallery;
-       	if ($uid) {
-		$user=$gallery->userDB->getUserByUid($uid);
-	}
-       	if (empty($user) || $user->isPseudo()) {
-	       	return "";
-       	} else {
-		return $user->printableName($format);
-	}
-}
-
 // Returns the CVS version as a string, NULL if file can't be read, or "" 
 // if version can't be found.
 
 function getCVSVersion($file) {
 
-	$path= dirname(__FILE__) . "/$file";
-	if (!fs_file_exists($path)) {
-		return NULL;
-	} 
-	if (!fs_is_readable($path)) {
-	       	return NULL;
-       	}
-	$contents=file($path);
-	foreach ($contents as $line) {
-	       	if (ereg("\\\x24\x49\x64: [A-Za-z_.0-9]*,v ([0-9.]*) .*\x24$", trim($line), $matches) ||
-		    ereg("\\\x24\x49\x64: [A-Za-z_.0-9]*,v ([0-9.]*) .*\x24 ", trim($line), $matches)) {
-			if ($matches[1]) {
-			       	return $matches[1];
-			}
-	       	}
+    $path= dirname(__FILE__) . "/$file";
+    if (!fs_file_exists($path)) {
+        return NULL;
+    }
+    if (!fs_is_readable($path)) {
+        return NULL;
+    }
+    $contents=file($path);
+    foreach ($contents as $line) {
+        if (ereg("\\\x24\x49\x64: [A-Za-z_.0-9]*,v ([0-9.]*) .*\x24$", trim($line), $matches) ||
+        ereg("\\\x24\x49\x64: [A-Za-z_.0-9]*,v ([0-9.]*) .*\x24 ", trim($line), $matches)) {
+            if ($matches[1]) {
+                return $matches[1];
+            }
+        }
 
-	}
-	return "";
+    }
+    return '';
 }
 
 /* Return -1 if old version is greater than new version, 0 if they are the 
@@ -2964,6 +1457,7 @@
 }
 
 function parse_csv ($filename, $delimiter=";") {
+    echo debugMessage(sprintf(_("Parsing for csv data in file: %s"), $filename), __FILE__, __LINE__);
 	$maxLength = 1024;
 	$return_array = array();
 	if ($fd = fs_fopen($filename, "rt")) {
@@ -2978,17 +1472,20 @@
 		}
 		fclose($fd);
 	}
+	if(isDebugging()){
+	   echo _("csv result:");
+	   print_r($return_array);
+	}
 	return $return_array;	
 }
 
-/*
-** This function strips slashes from an array Key
-** 
-** e.g. $foo[\'bar\'] will become $foo['bar']
-**
-** Created by Andrew Lindeman, 02/2004
+/**
+ * This function strips slashes from an array Key
+ * e.g. $foo[\'bar\'] will become $foo['bar']
+ *
+ * @param  array $arr
+ * @author Andrew Lindeman, 02/2004
 */
-
 function key_strip_slashes (&$arr) {
     $keys = array_keys ($arr);
 
@@ -3006,27 +1503,6 @@
     }
 }
 
-function showOwner($owner) {
-    global $GALLERY_EMBEDDED_INSIDE_TYPE;
-    global $_CONF;				/* Needed for GeekLog */
-
-	switch ($GALLERY_EMBEDDED_INSIDE_TYPE) {
-		case 'GeekLog':
-			return '<a href="'. $_CONF['site_url'] .'/users.php?mode=profile&uid='. $owner->uid .'">'. $owner->displayName() .'</a>';
-		break;
-		
-		default:
-			$name = $owner->displayName();
-
-			if (!$owner->getEmail()) {
-				return $name;
-			} else {
-				return '<a href="mailto:' . $owner->getEmail() . '">' . $name . '</a>';
-			}
-		break;
-	}
-}
-
 function getExtraFieldsValues($index, $extra_fields, $full) {
     global $gallery;
     $photo = $gallery->album->getPhoto($index);
@@ -3035,117 +1511,51 @@
     $table = array();
 
     foreach ($extra_fields as $key) {
-	if (isset($automaticFields[$key]) && $key != 'EXIF') {
+        if (isset($automaticFields[$key]) && $key != 'EXIF') {
             if ($key == 'Upload Date') {
-		$table[$automaticFields[$key]] = strftime($gallery->app->dateTimeString , $gallery->album->getUploadDate($index));
-	    }
+                $table[$automaticFields[$key]] = strftime($gallery->app->dateTimeString , $gallery->album->getUploadDate($index));
+            }
 
-	    if ($key == 'Capture Date') {
-		$itemCaptureDate = $gallery->album->getItemCaptureDate($index);
-		$table[$automaticFields[$key]] = strftime($gallery->app->dateTimeString , $itemCaptureDate);
-	    }
+            if ($key == 'Capture Date') {
+                $itemCaptureDate = $gallery->album->getItemCaptureDate($index);
+                $table[$automaticFields[$key]] = strftime($gallery->app->dateTimeString , $itemCaptureDate);
+            }
 
-	    if ($key == 'Dimensions') {
-		$dimensions = $photo->getDimensions($full);
-		$table[$automaticFields[$key]] = $dimensions[0]." x ".$dimensions[1]." (". ((int) $photo->getFileSize($full) >> 10) ."k)";
-	    }
-	}
-	else {
-	    $value = $gallery->album->getExtraField($index, $key);
+            if ($key == 'Dimensions') {
+                $dimensions = $photo->getDimensions($full);
+                $table[$automaticFields[$key]] = $dimensions[0]." x ".$dimensions[1]." (". ((int) $photo->getFileSize($full) >> 10) ."k)";
+            }
+        }
+        else {
+            $value = $gallery->album->getExtraField($index, $key);
             if (!empty($value)) {
-		/* Might be look strange, but $key could be in translateableFields() */
+                /* Might be look strange, but $key could be in translateableFields() */
                 $table[_($key)] = str_replace("\n", "<br>", $value);
-	    }
+            }
         }
     }
     return $table;
 }
 
-/**
- * This function displays tables with the Fields of an Photo
- * @param	integer	$index				Fields of this photo are displayed.
- * @param	array	$extra_fields		You need to give the extrafields ; hint: use getExtraFields()
- * @param	boolean	$withExtraFields	if true, then the extra fields are displayed
- * @param 	boolean	$withExif			if true, then the EXIF Data are displayed
- * @param	mixed	$full				Needed for getting dimensions of the photo
- * @param	boolean	$forceRefresh		Needed for getting EXIF Data
- */
-function displayPhotoFields($index, $extra_fields, $withExtraFields=true, $withExif=true, $full=NULL, $forceRefresh=0) {
-	global $gallery;
-
-	$photo = $gallery->album->getPhoto($index);
-
-	// if we have extra fiels and we want to show them, then get the values
-	if (isset($extra_fields) && $withExtraFields) {
-		$CF = getExtraFieldsValues($index, $extra_fields, $full);
-		if (!empty($CF)) {
-			$tables = array('' => $CF);
-		}
-	}
-
-	if ($withExif && (isset($gallery->app->use_exif) || isset($gallery->app->exiftags)) &&
-	(eregi("jpe?g\$", $photo->image->type))) {
-		$myExif = $gallery->album->getExif($index, isset($forceRefresh));
-		if (!empty($myExif) && !isset($myExif['Error'])) {
-
-			$tables[_("EXIF Data")]  = $myExif;
-		} elseif (isset($myExif['status']) && $myExif['status'] == 1) {
-			echo '<p class="warning">'. _("Display of EXIF data enabled, but no data found.") .'</p>';
-		}
-	}
-
-	if (!isset($tables)) {
-		return;
-	}
-
-	foreach ($tables as $caption => $fields) {
-		$customFieldsTable = new galleryTable();
-		$customFieldsTable->setAttrs(array('class' => 'customFieldsTable'));
-		$customFieldsTable->setCaption($caption, 'customFieldsTableCaption');
-
-		foreach ($fields as $key => $value) {
-			$customFieldsTable->addElement(array('content' => $key));
-			$customFieldsTable->addElement(array('content' => ':'));
-			$customFieldsTable->addElement(array('content' => $value));
-		}
-		echo $customFieldsTable->render();
-	}
-}
-
 if (!function_exists('glob')) {
-	function glob($pattern) {
-		$path_parts = pathinfo($pattern);
-		$pattern = '^' . str_replace(array('*',  '?'), array('(.+)', '(.)'), $path_parts['basename'] . '$');
-		$dir = fs_opendir($path_parts['dirname']);
-		while ($file = readdir($dir)) {
-			if (ereg($pattern, $file)) {
-				$result[] = "{$path_parts['dirname']}/$file";
-			}
-		}
-		closedir($dir);
-
-		// my changes here
-		if (isset($result))
-			return $result;
-
-		return (array)null;
-	} 
-}
-
-function includeTemplate($tplName, $skinname='') {
-	global $gallery;
-
-	if (!$skinname) {
-		$skinname = $gallery->app->skinname;
-	}
+    function glob($pattern) {
+        $path_parts = pathinfo($pattern);
+        $pattern = '^' . str_replace(array('*',  '?'), array('(.+)', '(.)'), $path_parts['basename'] . '$');
+        $dir = fs_opendir($path_parts['dirname']);
+        while ($file = readdir($dir)) {
+            if ($file != '.' && $file != '..' && ereg($pattern, $file)) {
+                 $result[] = "{$path_parts['dirname']}/$file";
+            }
+        }
+        closedir($dir);
 
-	$filename = dirname(__FILE__) . "/skins/$skinname/tpl/$tplName";
-	if (fs_is_readable($filename)) {
-		include($filename);
-		return true;
-	} else {
-		return false;
-	}
+        // my changes here
+        if (isset($result)) {
+            return $result;
+        }
+        
+        return array();
+    } 
 }
 
 function genGUID() {
@@ -3215,109 +1625,33 @@
 	return $count;
 }
 
-/*
- * Returns an array of the parent album names for a given child
- * album.
- * Array is reverted, so the first Element is the topalbum.
- * If you set $addChild true, then the child album itself is added as last Element.
- * Based on code by: Dariush Molavi
+/**
+ * Loads an array on extensions mapping to the mimetype
+ * Returns the mimetype according to the extension of given filename
+ * @param  string   $filename
+ * @return string   $mimetype
+ * @author Jens Tkotz <jens@peino.de
  */
-
-function getParentAlbums($childAlbum, $addChild=false) {
-	$pAlbum = $childAlbum;
-	$parentNameArray = array();
-
-	if ($addChild == true) {
-		$parentNameArray[$pAlbum->fields['name']] = $pAlbum->fields['title'];
-	}
-
-	while ($pAlbum = $pAlbum->getParentAlbum(FALSE)) {
-		$parentNameArray[$pAlbum->fields['name']] = $pAlbum->fields['title'];
-	}
-
-	$parentNameArray = array_reverse($parentNameArray);
-
-	return $parentNameArray;
-}
-
-function getIconText($iconName = '', $altText = '', $overrideMode = '', $useBrackets = true) {
-	global $gallery;
-	$text = $altText;
-
-	if (!empty($overrideMode)) {
-		$iconMode = $overrideMode;
-	} elseif (isset($gallery->app->useIcons)) {
-		$iconMode = $gallery->app->useIcons;
-	} else {
-		$iconMode = 'no';
-	}
-
-	if ($iconMode != "no" && $iconName != '') {
-		if ($iconMode == 'both') {
-			$altText = '';
-		}
-
-		if (file_exists(dirname(__FILE__) .'/images/icons/'. $iconName)) {
-			$imgSrc = $gallery->app->photoAlbumURL .'/images/icons/'. $iconName;
-			$linkText = '<img src="'. $imgSrc .'" title="'. $altText .'" alt="'. $altText. '" style="border: none;">';
-
-			if ($iconMode == "both") {
-				$linkText .= "<br>$text";
-			}
-		}
-	}
-
-	if (empty($linkText)) {
-		if($useBrackets) {
-			$linkText = '['. $text . ']';
-		} else {
-			$linkText = $text;
-		}
-	}
-
-	return $linkText;
-}
-
-function makeIconMenu($iconElements, $align = 'left', $closeTable = true, $linebreak = false) {
-	global $gallery;
-
-	if (empty($iconElements)) {
-		return "";
-	}
-
-	// For rtl/ltr stuff
-	if ($gallery->direction == 'rtl') {
-		$align = ($align == 'left') ? 'right' : 'left';
-	}
-
-	$html = "\n". '<table id="menu" align="'. $align .'"><tr>';
-	$i = 0;
-	foreach ($iconElements as $element) {
-		$i++;
-		if (stristr($element,'</a>')) {
-			$html .= "\n\t". '<td>'. $element .'</td>';
-		} else {
-			$html .= "\n\t". '<td class="noLink">'. $element .'</td>';
-		}
-		if($i > sizeof($iconElements)/2 && $linebreak) {
-			$html .= "\n</tr>\n</tr>";
-			$i=0;
-		}
-	}
-
-	if ($closeTable == true) {
-		$html .= "</tr>\n</table>";
-	}
-
-	return $html;
+function getMimeType($filename) {
+    static $mime_extension_map;
+    
+    if (empty($mime_extension_map)) {
+        require(dirname(__FILE__) . '/includes/definitions/mime.mapping.php');
+    }
+    
+    $extension = getExtension($filename);
+    $mimetype = $mime_extension_map[$extension];
+    
+    echo debugMessage(sprintf(_("MIMEtype of file %s is %s"), basename($filename), $mimetype), __FILE__, __LINE__, 2);
+    return $mimetype;
 }
-
-/* Ecard Function begin */ 
+    
+/* Ecard Function begin */
 function get_ecard_template($template_name) {
     global $gallery;
 
     $error = false;
-    $file_data = "";
+    $file_data = '';
     $fpread = @fopen(dirname(__FILE__) . '/includes/ecard/templates/'. $template_name, 'r');
     if (!$fpread) {
         $error = true;
@@ -3326,50 +1660,87 @@
             $file_data .= fgets($fpread, 4096);
         }
         fclose($fpread);
-      }
+    }
     return array($error,$file_data);
 }
 
-function parse_ecard_template($ecard,$ecard_data) {
+/**
+ * This function parses template and substitutes placeholders
+ * @param    array    $ecard		array which contains infos about the ecard
+ * @param    string   $ecard_data	string containing the slurped template
+ * @param    boolean  $preview		image source is different for preview or final card.
+ * @return   string   $ecard_data	modified template data
+ */
+function parse_ecard_template($ecard,$ecard_data, $preview = true) {
     global $gallery;
 
+    $imagePath = $gallery->album->getAbsolutePhotoPath($ecard['photoIndex'], false);
+    $photo = $gallery->album->getPhoto($ecard['photoIndex']);
+    if($preview) {
+	$imageName = $gallery->album->getPhotoPath($ecard['photoIndex'], false);
+	$stampName = getImagePath('ecard_images/'. $ecard['stamp'] .'.gif');
+    }
+    else {
+	$imageName = $photo->getImageName(false);
+	$stampName = $ecard['stamp'] .'.gif';
+    }
+
+    list ($width, $height) = getDimensions($imagePath);
+    $widthReplace = ($width < 200) ? 'width="500"' : '';
+
     $ecard_data = preg_replace ("/<%ecard_sender_email%>/", $ecard["email_sender"], $ecard_data);
     $ecard_data = preg_replace ("/<%ecard_sender_name%>/", $ecard["name_sender"], $ecard_data);
-    $ecard_data = preg_replace ("/<%ecard_image_name%>/", $ecard["image_name"], $ecard_data);
+    $ecard_data = preg_replace ("/<%ecard_image_name%>/", $imageName, $ecard_data);
     $ecard_data = preg_replace ("/<%ecard_message%>/", preg_replace ("/\r?\n/", "<BR>\n", htmlspecialchars($ecard["message"])), $ecard_data);
     $ecard_data = preg_replace ("/<%ecard_reciepient_email%>/", $ecard["email_recepient"], $ecard_data);
     $ecard_data = preg_replace ("/<%ecard_reciepient_name%>/", $ecard["name_recepient"], $ecard_data);
-    $ecard_data = preg_replace ("/<%ecard_stamp%>/", $ecard["stamp"], $ecard_data);
-
-
-    $imagePath = $gallery->app->albumDir . str_replace ($gallery->app->albumDirURL, '', $ecard["image_name"]);
-    list ($width, $height) = getDimensions(urldecode($imagePath));
-    $widthReplace = ($width < 200) ? 'width="500"' : '';
+    $ecard_data = preg_replace ("/<%ecard_stamp%>/", $stampName, $ecard_data);
     $ecard_data = preg_replace ("/<%ecard_width%>/", $widthReplace, $ecard_data);
 	
     return $ecard_data;
   }
 
   function send_ecard($ecard,$ecard_HTML_data,$ecard_PLAIN_data) {
-  	$ecard_mail = new htmlMimeMail();
-  	$ecard_image = $ecard_mail->getFile($ecard["image_name"]);
+      global $gallery;
+
+      $ecard_pictures = array();
+      $photo = $gallery->album->getPhoto($ecard['photoIndex']);
+      $ecard_mail = new htmlMimeMail();
+
+      $imagePath = $gallery->album->getAbsolutePhotoPath($ecard['photoIndex'], false);
+      $imageName = $photo->getImageName(false);
+
+      $stampName = $ecard['stamp'] .'.gif';
+      $stampPath = getAbsoluteImagePath("ecard_images/$stampName");
+
+      $ecard_pictures[$imageName] = $imagePath;
+      $ecard_pictures[$stampName] = $stampPath;
+
+      foreach ($ecard_pictures as $pictureName => $picturePath) {
+          $picture = $ecard_mail->getFile($picturePath);
+          $ecard_mail->addHtmlImage($picture, $pictureName, getMimeType($picturePath));
+      }
+
+      /*
+       * Currently all other images in the template are ignored.
+      if (preg_match_all("/(<IMG.*SRC=\")(.*)(\".*>)/Uim", $ecard_HTML_data, $matchArray)) {
+        for ($i = 0; $i < count($matchArray[0]); ++$i) {
+            $ecard_image = $ecard_mail->getFile($matchArray[2][$i]);
+        }
+      }
+      */
+      $ecard_mail->setHtml($ecard_HTML_data, $ecard_PLAIN_data);
+      $ecard_mail->setFrom($ecard["name_sender"] .' <'. $ecard["email_sender"] .'>');
+      if (empty($ecard['subject'])) {
+          $ecard['subject'] = sprintf(_("%s sent you an E-C@rd."), $ecard["name_sender"]);
+      }
 
-  	if (preg_match_all("/(<IMG.*SRC=\")(.*)(\".*>)/Uim", $ecard_HTML_data, $matchArray)) {
-  		for ($i=0; $i<count($matchArray[0]); ++$i) {
-  			$ecard_image = $ecard_mail->getFile($matchArray[2][$i]);
-  		}
-  	}
-  	$ecard_mail->setHtml($ecard_HTML_data, $ecard_PLAIN_data,'./');
-  	$ecard_mail->setFrom($ecard["name_sender"].'<'.$ecard["email_sender"].'>');
-  	if (empty($ecard['subject'])) {
-  		$ecard['subject'] = sprintf(_("%s sent you an E-C@rd."), $ecard["name_sender"]);
-  	}
-  	$ecard_mail->setSubject($ecard['subject']);
-  	$ecard_mail->setReturnPath($ecard["email_sender"]);
+      $ecard_mail->setSubject($ecard['subject']);
+      $ecard_mail->setReturnPath($ecard["email_sender"]);
 
-  	$result = $ecard_mail->send(array($ecard["email_recepient"]));
+      $result = $ecard_mail->send(array($ecard["name_recepient"] .' <'. $ecard["email_recepient"] .'>'));
 
-  	return $result;
+      return $result;
   }
   
 /**
@@ -3382,42 +1753,52 @@
  * @param	boolean	$caseSensitive
  * @param	boolean	$keepIndexes	if set to true, then uasort instead of usort is used.
  */
-function array_sort_by_fields(&$data, $sortby, $order = 'asc', $caseSensitive = true, $keepIndexes = false) {
+function array_sort_by_fields(&$data, $sortby, $order = 'asc', $caseSensitive = true, $keepIndexes = false, $special = false) {
 	static $sort_funcs = array();
 	static $code;
 
 	$order = ($order == 'asc') ? 1 : -1;
 
 	if (empty($sort_funcs[$sortby])) {
-		if ($caseSensitive) {
+
+	    if ($special) {
+		$a = "\$a->fields[\"$sortby\"]";
+		$b = "\$b->fields[\"$sortby\"]";
+	    }
+	    else {
+		$a = "\$a['$sortby']";
+		$b = "\$b['$sortby']";
+	    }
+
+	    if ($caseSensitive) {
 			$code = "
-	    if( \$a['$sortby'] == \$b['$sortby'] ) { 
+	    if( $a == $b ) { 
 	        return 0;
 	    };
-	    if ( \$a['$sortby'] > \$b['$sortby'] ) {
+	    if ( $a > $b ) {
 	        return $order;
 	    } else {
 	        return -1 * $order;
 	    }";
 		}
-		else {
+	    else {
 			$code = "
-	    if(strtoupper(\$a['$sortby']) == strtoupper(\$b['$sortby'])) { 
+	    if(strtoupper($a) == strtoupper($b)) { 
 	        return 0;
 	    };
-	    if (strtoupper(\$a['$sortby']) > strtoupper(\$b['$sortby'])) {
+	    if (strtoupper($a) > strtoupper($b)) {
 	        return $order;
 	    } else {
 	        return -1 * $order;
 	    }";
-		}
-
-		$sort_func = $sort_funcs[$sortby] = create_function('$a, $b', $code);
+	    }
+	
+	    $sort_func = $sort_funcs[$sortby] = create_function('$a, $b', $code);
 	} else {
-		$sort_func = $sort_funcs[$sortby];
+	    $sort_func = $sort_funcs[$sortby];
 	}
 
-	debugMessage($code, __FILE__, __LINE__,3);
+	debugMessage($code, __FILE__, __LINE__, 3);
 
 	if($keepIndexes) {
 		uasort($data, $sort_func);
@@ -3427,32 +1808,119 @@
 }
 
 /**
- * @param	string	Optional former searchh string
- * @param	string	Optional alignment
- * @return	string	HTML code that contains a form for entering the searchstring
- * @author	Jens Tkotz
+ * creates a copy of a album structure
+ * @param    array	$albumItemNames	Array containing an albumstructure with absolute filenames.
+ * @param    string	$dir		Optional dir, which can be used for recursice purpose.
+ * @return   string	$mixed		In success the dirname as string, where the files copied to. Otherwise false.
+ * @author   Jens Tkotz <jens@peino.de>
  */
-function addSearchForm($formerSearchString = '', $align = '') {
-    $html = '';
+function createTempAlbum($albumItemNames = array(), $dir = '') {
+    global $gallery;
 
-    $html .= makeFormIntro('search.php', array(
-    	'name'     => 'search_form',
-    	'method'   => 'post',
-    	'style'    => "text-align: $align",
-    	'class'   => 'search')
-    );
-                
-    $html .= "\t". _("Search:");
-    $html .= '<input class="searchform" type="text" name="searchstring" value="'. $formerSearchString .'" size="25">';
-    $html .= "\n</form>\n";
+    if(empty($albumItemNames)) {
+        return false;
+    }
 
-    return $html;
+    $prefix = 'gallery_download_';
+
+    if (empty($dir)) {
+        $token = uniqid(rand());
+        $dir = $gallery->app->tmpDir .'/'. $prefix . $token;
+    }
+
+    if(! fs_mkdir($dir)) {
+        echo gallery_error(
+        sprintf(_("Your tempfolder is not writeable! Please check permissions of this dir: %s"),
+        $gallery->app->tmpDir));
+        return false;
+    }
+
+    //echo "<h3>Created dir: $dir</h3>";
+
+    foreach($albumItemNames as $possibleAlbumName => $filename) {
+        if(is_array($filename)) {
+            //echo "\n<ul>";
+            createTempAlbum($filename, "$dir/$possibleAlbumName");
+            //echo "\n</ul>";
+        }
+        else {
+            $destination = $dir .'/'. basename ($filename);
+            //echo "\n\t<li>$filename -->  $destination</li>";
+            if(! fs_copy($filename, $destination)) {
+                echo gallery_error("Copy Failed");
+            }
+        }
+    }
+
+    return $dir;
+}
+
+function rmdirRecursive($dir) {
+    if($objs = glob($dir."/*")){
+        foreach($objs as $obj) {
+            if(is_dir($obj)) {
+                rmdirRecursive($obj);
+           }
+           else {
+             unlink($obj);
+           }
+       }
+   }
+   rmdir($dir);
+}
+
+function downloadFile($filename) {
+    $contentType = getMimeType($filename);
+    $size = fs_filesize($filename);
+
+    $fp = fopen($filename, 'r');
+    $filedata = fread($fp, $size);
+    fclose($fp);
+
+    header('Pragma: private');
+    header('Cache-control: private, must-revalidate');
+    header("Content-type: $contentType");
+
+    if ($size > 0) {
+       header("Content-Length: $size");
+    }
+
+    header('Content-Disposition: attachment; filename="'. basename($filename) .'"');
+
+    echo $filedata;
+    
+    /* Now delete the file */
+    rmdirRecursive(dirname($filename));
+    
+    return true;
+}
+
+/**
+ * flats a multidimensional array done to a one-dimension array.
+ * keys get lost.
+ * @param  array $array
+ * @return array $flatArray
+ * @author Jens Tkotz <jens@peino.de>
+ */
+function array_flaten($array) {
+    $flatArray = array();
+    foreach($array as $value) {
+        if(is_array($value)) {
+            $flatArray = array_merge($flatArray, array_flaten($value));
+        }
+        else {
+            $flatArray[] = $value;
+        }
+    }
+    return $flatArray;
 }
 
 require_once(dirname(__FILE__) . '/lib/lang.php');
 require_once(dirname(__FILE__) . '/lib/Form.php');
 require_once(dirname(__FILE__) . '/lib/voting.php');
+require_once(dirname(__FILE__) . '/lib/album.php');
 require_once(dirname(__FILE__) . '/lib/albumItem.php');
+require_once(dirname(__FILE__) . '/lib/imageManipulation.php');
 require_once(dirname(__FILE__) . '/lib/mail.php');
 
 ?>
diff -Naur gallery-1.5.1/Version.php gallery-1.5.2/Version.php
--- gallery-1.5.1/Version.php	2005-09-22 15:08:00.000000000 +0200
+++ gallery-1.5.2/Version.php	2006-01-19 19:51:52.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,28 +17,19 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: Version.php,v 1.1443.2.32 2005/09/22 13:08:00 ckdake Exp $
+ * $Id: Version.php,v 1.1542.2.28 2006/01/19 18:51:52 ckdake Exp $
  */
 ?>
 <?php
 
-/*
- * Protect against very old versions of 4.0 (like 4.0RC1) which
- * don't implicitly create a new stdClass() when you use a variable
- * like a class.
- */
-if (!isset($gallery)) {
-    $gallery = new stdClass();
-}
-
-$gallery->version = '1.5.1';
-$gallery->config_version = 93;
+$gallery->version = '1.5.2';
+$gallery->config_version = 96;
 $gallery->album_version = 37;
 $gallery->user_version = 6;
 $gallery->url = "http://gallery.sourceforge.net";
 
 /* do not edit the date!! modified by CVS */
-$gallery->last_change = strtotime(substr('$Date: 2005/09/22 13:08:00 $', 7, -1));
+$gallery->last_change = strtotime(substr('$Date: 2006/01/19 18:51:52 $', 7, -1));
 /*
  * PostNuke version info
  */
diff -Naur gallery-1.5.1/view_album.php gallery-1.5.2/view_album.php
--- gallery-1.5.1/view_album.php	2005-09-22 02:29:50.000000000 +0200
+++ gallery-1.5.2/view_album.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
 * Gallery - a web based photo album viewer and editor
-* Copyright (C) 2000-2005 Bharat Mediratta
+* Copyright (C) 2000-2006 Bharat Mediratta
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 *
-* $Id: view_album.php,v 1.309.2.4 2005/09/22 00:29:50 jenst Exp $
+* $Id: view_album.php,v 1.323.2.2 2006/01/06 06:31:31 jenst Exp $
 */
 ?>
 <?php
@@ -106,7 +106,7 @@
 
 $fullWidth = $navigator["fullWidth"] . $navigator["widthUnits"];
 $upArrowURL = '<img src="' . getImagePath('nav_home.gif') . '" width="13" height="11" ' .
-'alt="' . _("navigate UP") .'" title="' . _("navigate UP") .'" border="0">';
+  'alt="' . _("navigate UP") .'" title="' . _("navigate UP") .'" border="0">';
 
 if ($gallery->album->fields['returnto'] != 'no') {
     foreach ($gallery->album->getParentAlbums() as $navAlbum) {
@@ -208,9 +208,9 @@
 <?php }
 
 $adminText = '';
-$albums_str= pluralize_n2(ngettext("1 sub-album", "%d sub-albums",$numAlbums), $numAlbums, _("No albums"));
-$imags_str= pluralize_n2(ngettext("1 image", "%d images", $numPhotos), $numPhotos, _("no images"));
-$pages_str=pluralize_n2(ngettext("1 page", "%d pages", $maxPages), $maxPages, _("0 pages"));
+$albums_str = gTranslate('core', "1 sub-album", "%d sub-albums", $numAlbums, _("No albums"));
+$imags_str = gTranslate('core', "1 image", "%d images", $numPhotos, _("no images"));
+$pages_str = gTranslate('core', "1 page", "%d pages", $maxPages, _("0 pages"));
 
 if ($numAlbums && $maxPages > 1) {
     $adminText .= sprintf(_("%s and %s in this album on %s"),
@@ -241,85 +241,100 @@
 /* admin items for drop-down menu */
 $adminOptions = array(
     'add_photos'	=> array(
-        'name' 	=> _('add photos'),
+        'name' 	=> _("Add photos"),
         'requirements' => array('canAddToAlbum'),
         'action' 	=> 'popup',
         'value' 	=> makeGalleryUrl('add_photos_frame.php',
             array('set_albumName' => $gallery->session->albumName, 'type' => 'popup'))),
+    'delete_root_album'    => array(
+        'name' => _("Delete this album"),
+        'requirements' => array('canDeleteAlbum', 'albumIsRoot'),
+        'action' => 'popup',
+        'value' => makeGalleryUrl('delete_album.php', array('type' => 'popup'))),
+    'delete_sub_album'    => array(
+        'name' => _("Delete this (sub)album"),
+        'requirements' => array('canDeleteAlbum', '!albumIsRoot'),
+        'action' => 'popup',
+        'value' => makeGalleryUrl('delete_photo.php', 
+			array('set_albumName' => $gallery->album->fields["parentAlbumName"],
+				'type' => 'popup', 
+				'id' => $gallery->album->fields["name"],
+				'albumDelete' => true))),
     'rename_album'    => array(
-        'name' => _('rename album'),
+        'name' => _("Rename album"),
         'requirements' => array('isAdminOrAlbumOwner'),
         'action' => 'popup',
         'value' => makeGalleryUrl('rename_album.php', array(
             'set_albumName' => $gallery->session->albumName,
             'type' => 'popup', 'useLoad' => 1))),
     'nested_album'    => array(
-        'name' => _('new nested album'),
+        'name' => _("New nested album"),
         'requirements' => array('canCreateSubAlbum', 'notOffline'),
         'action' => 'url',
         'value' => doCommand('new-album',
             array('parentName' => $gallery->session->albumName), 'view_album.php')),
     'edit_captions'   => array(
-        'name' => _('edit captions'),
+        'name' => _("Edit captions"),
         'requirements' => array('canChangeText','notOffline'),
         'action' => 'url',
         'value' => makeGalleryUrl('captionator.php',
             array('set_albumName' => $gallery->session->albumName, 'page' => $page, 'perPage' => $perPage))),
     'sort_items'      => array(
-        'name' => _('sort items'),
+        'name' => _("Sort items"),
         'requirements' => array('canWriteToAlbum', 'photosExist'),
         'action' => 'popup',
         'value' => makeGalleryUrl('sort_album.php',
             array('set_albumName' => $gallery->session->albumName, 'type' => 'popup'))),
     'resize_all'      => array(
-        'name' => _('resize all'),
+        'name' => _("Resize all"),
         'requirements' => array('canWriteToAlbum', 'photosExist'),
         'action' => 'popup',
         'value' => makeGalleryUrl('resize_photo.php',
             array('set_albumName' => $gallery->session->albumName, 'index' => 'all', 'type' => 'popup'))),
     'rebuild_thumbs'  => array(
-        'name' => _('rebuild thumbs'),
+        'name' => _("Rebuild thumbs"),
         'requirements' => array('canWriteToAlbum', 'photosExist'),
         'action' => 'popup',
         'value' => doCommand('remake-thumbnail',
             array('set_albumName' => $gallery->session->albumName, 'index' => 'all', 'type' => 'popup'))),
     'properties'      => array(
-        'name' => _('properties'),
+        'name' => _("Properties"),
         'requirements' => array('canWriteToAlbum'),
         'action' => 'popup',
         'value' => makeGalleryUrl('edit_appearance.php',
             array('set_albumName' => $gallery->session->albumName, 'type' => 'popup'))),
     'rearrange' => array(
-        'name' => _('rearrange items'),
+        'name' => _("Rearrange items"),
         'requirements' => array('canWriteToAlbum', 'photosExist'),
         'action' => 'popup',
         'value' => makeGalleryUrl('rearrange.php', 
             array('set_albumName' => $gallery->session->albumName, 'type' => 'popup'))),
-    'permissions'     => array('name' => _('permissions'),
+    'permissions'     => array(
+        'name' => _("Permissions"),
         'requirements' => array('isAdminOrAlbumOwner'),
         'action' => 'popup',
         'value' => makeGalleryUrl('album_permissions.php',
             array('set_albumName' => $gallery->session->albumName, 'type' => 'popup'))),
     'poll_results'    => array(
-        'name' => _('poll results'),
+        'name' => _("Poll results"),
         'requirements' => array('isAdminOrAlbumOwner'),
         'action' => 'url',
         'value' => makeGalleryUrl('poll_results.php',
             array('set_albumName' => $gallery->session->albumName,))),
     'poll_reset'      => array(
-        'name' => _('poll reset'),
+        'name' => _("Poll reset"),
         'requirements' => array('isAdminOrAlbumOwner'),
         'action' => 'popup',
         'value' => makeGalleryUrl('reset_votes.php',
             array('set_albumName' => $gallery->session->albumName, 'type' => 'popup'))),
     'view_comments'   => array(
-        'name' => _('view comments'),
+        'name' => _("View comments"),
         'requirements' => array('isAdminOrAlbumOwner', 'allowComments', 'comments_enabled', 'hasComments'),
         'action' => 'url',
         'value' => makeGalleryUrl('view_comments.php',
             array('set_albumName' => $gallery->session->albumName))),
     'watermark_album'   => array(
-        'name' => _('watermark album'),
+        'name' => _("Watermark album"),
         'requirements' => array('isAdminOrAlbumOwner','photosExist','watermarkingEnabled'),
         'action' => 'popup',
         'value' => makeGalleryUrl('watermark_album.php',
@@ -377,7 +392,7 @@
     . "</script>\n\n";
 
     $iconElements[] = "\n\t<select class=\"adminform\" name=\"admin_select\" onChange=\"execAdminOption()\">\n"
-    . "\t\t<option value=\"\">&laquo; " . _('album actions') . " &raquo;</option>\n"
+    . "\t\t<option value=\"\">&laquo; " . _('Album Actions') . " &raquo;</option>\n"
     . $adminOptionHTML
     . "\t</select>\n";
 }
@@ -427,7 +442,7 @@
 <?php
 $breadcrumb["top"] = true;
 $breadcrumb['bottom'] = false;
-if (!empty($breadcrumb["text"])) {
+if (!empty($breadcrumb["text"]) || $gallery->user->isLoggedIn()) {
     includeLayout('navtablemiddle.inc');
     includeLayout('breadcrumb.inc');
 }
@@ -475,43 +490,40 @@
         print "<table>\n";
         $nv_pairs=$gallery->album->getVoteNVPairs();
         foreach ($my_choices as $key => $id) {
-            print "<tr><td>".
-            $nv_pairs[$key]["name"].
-            ":</td>\n";
-            $index=$gallery->album->getIndexByVotingId($id);
+            print "<tr><td>". $nv_pairs[$key]["name"] .":</td>\n";
+            $index = $gallery->album->getIndexByVotingId($id);
             if ($gallery->album->isAlbum($index)) {
                 $albumName = $gallery->album->getAlbumName($index);
                 print "<td><a href=\n".
-                makeAlbumUrl($albumName). ">\n";
+                  makeAlbumUrl($albumName). ">\n";
                 $myAlbum = new Album();
                 $myAlbum->load($albumName);
                 print sprintf(_("Album: %s"), $myAlbum->fields['title']);
-                print  "</a></td></tr>\n";
+                print "</a></td></tr>\n";
             } else {
                 print "<td><a href=\n".
-                makeAlbumUrl($gallery->session->albumName, $id);
-                print  ">\n";
+                  makeAlbumUrl($gallery->session->albumName, $id) . ">\n";
                 $desc = $gallery->album->getCaption($index);
-                if (trim($desc) == "") {
-                    $desc=$gallery->album->getPhotoId($index);
+                if (trim($desc) == '') {
+                    $desc = $gallery->album->getPhotoId($index);
                 }
-                print  $desc;
-                print  "</a></td></tr>\n";
+                print $desc;
+                print "</a></td></tr>\n";
             }
         }
         print "</table>\n";
     }
     echo '</div>';
 }
-$results=1;
+$results = 1;
 if ($gallery->album->getPollShowResults()) {
     echo '<div align="left" class="vapoll">';
     list($buf, $results)=showResultsGraph( $gallery->album->getPollNumResults());
     print $buf;
     if ($results && testRequirement('isAdminOrAlbumOwner')) {
         print "\n". '<a href="' . makeGalleryUrl("poll_results.php",
-        array("set_albumName" => $gallery->session->albumName)).
-        '">' ._("See full poll results") . '</a><br>';
+          array("set_albumName" => $gallery->session->albumName)).
+          '">' ._("See full poll results") . '</a><br>';
     }
     echo '</div>';
 }
@@ -519,12 +531,9 @@
 ?>
 
    <script language="javascript1.2" type="text/JavaScript">
-   function chooseOnlyOne(i, form_pos, scale)
-   {
-       for(var j=0;j<scale;j++)
-       {
-           if(j != i)
-           {
+   function chooseOnlyOne(i, form_pos, scale) {
+       for(var j=0;j<scale;j++) {
+           if(j != i) {
                eval("document.vote_form['votes["+j+"]']["+form_pos+"].checked=false");
            }
        }
@@ -532,24 +541,25 @@
    </script>
 <?php
 
-echo makeFormIntro("view_album.php",
-array("name" => "vote_form", "method" => "POST", "style" => "margin-bottom: 0px;"));
+echo makeFormIntro('view_album.php',
+    array('name' => 'vote_form', 'style' => 'margin-bottom: 0px;'));
+    
 if (canVote()) {
     echo '<div align="left" class="vapoll">';
     $nv_pairs=$gallery->album->getVoteNVPairs();
-    if ($gallery->album->getPollScale()==1) {
+    if ($gallery->album->getPollScale() == 1) {
         $options = $nv_pairs[0]["name"];
     }
     else {
-        /* note to translators:
-        ** This produces (in English) a list of the form: "a, b, c or d".  Correct translation
-        ** of ", " and " or  " should produce a version that makes sense in your language.
-        */
-        $options = "";
+        /** note to translators:
+         * This produces (in English) a list of the form: "a, b, c or d".  Correct translation
+         * of ", " and " or  " should produce a version that makes sense in your language.
+         */
+        $options = '';
         for ($count=0; $count < $gallery->album->getPollScale()-2 ; $count++) {
-            $options .= $nv_pairs[$count]["name"]._(", ");
+            $options .= $nv_pairs[$count]["name"] ._(", ");
         }
-        $options .= $nv_pairs[$count++]["name"]._(" or ");
+        $options .= $nv_pairs[$count++]["name"] ._(" or ");
         $options .= $nv_pairs[$count]["name"];
     }
     print '<span class="attention">';
@@ -559,11 +569,11 @@
     if ($gallery->album->getPollType() == "rank") {
         $voteCount=$gallery->album->getPollScale();
         print "  ".
-        sprintf(_("You have a total of %s and can change them if you wish."),
-        pluralize_n2(ngettext("1 vote", "%d votes", $voteCount), $voteCount));
+          sprintf(_("You have a total of %s and can change them if you wish."),
+            gTranslate('core', "1 vote", "%d votes", $voteCount));
     }
     else {
-        print "  "._("You can change your choices if you wish.");
+        print "  ". _("You can change your choices if you wish.");
     }
     echo "</span>";
 ?>
@@ -623,8 +633,6 @@
             $borderwidth= $gallery->html_wrap['borderWidth'] = $borderwidth;
             $gallery->html_wrap['pixelImage'] = getImagePath('pixel_trans.gif');
 
-
-
             if ($gallery->album->isAlbum($i)) {
                 $scaleTo = 0; //$gallery->album->fields["thumb_size"];
                 $myAlbum = $gallery->album->getNestedAlbum($i);
@@ -665,7 +673,7 @@
             } elseif (isset($myAlbum)) {
                 // We already loaded this album - don't do it again, for performance reasons.
 
-                $gallery->html_wrap['imageTag'] = $myAlbum->getHighlightTag($scaleTo,'',_("Highlight for Album:"). " ". gallery_htmlentities(removeTags($myAlbum->fields['title'])));
+                $gallery->html_wrap['imageTag'] = $myAlbum->getHighlightTag($scaleTo,'',_("Highlight for Album:"). " ". gallery_htmlentities(strip_tags($myAlbum->fields['title'])));
                 $gallery->html_wrap['imageHref'] = makeAlbumUrl($gallery->album->getAlbumName($i));
                 $frame= $gallery->html_wrap['frame'] = $gallery->album->fields['album_frame'];
                 /*begin backwards compatibility */
@@ -755,89 +763,85 @@
                 list($iWidth, $iHeight) = $gallery->album->getThumbDimensions($i);
             }
 
-            // put form outside caption to compress lines
-            if (!$gallery->session->offline &&
-            (($gallery->user->canDeleteFromAlbum($gallery->album)) ||
-            ($gallery->user->canWriteToAlbum($gallery->album)) ||
-            ($gallery->user->canChangeTextOfAlbum($gallery->album)) ||
-            (($gallery->album->getItemOwnerModify() || $gallery->album->getItemOwnerDelete()) &&
-            ($gallery->album->isItemOwner($gallery->user->getUid(), $i) ||
-            (isset($myAlbum) && $gallery->user->isOwnerOfAlbum($myAlbum))))))
-            {
-                $showAdminForm = 1;
-            } else {
-                $showAdminForm = 0;
-            }
-
             // Caption itself
             echo "\n<div align=\"center\" class=\"modcaption\">\n";
             $id = $gallery->album->getPhotoId($i);
             if ($gallery->album->isHidden($i) && !$gallery->session->offline) {
                 echo "(" . _("hidden") .")<br>";
             }
-            $photo    = $gallery->album->getPhoto($i);
+            $photo = $gallery->album->getPhoto($i);
             if ($gallery->user->canWriteToAlbum($gallery->album) &&
-            $photo->isHighlight() && !$gallery->session->offline) {
+              $photo->isHighlight() && !$gallery->session->offline) {
                 echo "(" . _("highlight") .")<br>";
             }
             if (isset($myAlbum)) {
-                $myDescription = $myAlbum->fields['description'];
-                $buf = "";
-                $buf = $buf."<center><b>". sprintf(_("Album: %s"), '<a class="modcaption" href="'. makeAlbumUrl($gallery->album->getAlbumName($i)) .'">'. $myAlbum->fields['title'] .'</a>'). '</b></center>';
-                if ($myDescription != _("No description") &&
-                $myDescription != "No description" &&
-                $myDescription != "") {
-                    $buf = $buf."<br>".$myDescription."";
-                }
-                echo $buf;
-
-                echo '<div class="fineprint" style="margin-top:3px">';
-                echo _("Changed: ") ." ". $myAlbum->getLastModificationDate();
-                echo "\n<br>";
-                $visItems=array_sum($myAlbum->numVisibleItems($gallery->user));
-                echo _("Contains: ") ." ". pluralize_n2(ngettext("1 item", "%d items", $visItems), $visItems) . '. ';
-                // If comments indication for either albums or both
-                switch ($gallery->app->comments_indication) {
-
-                    case "albums":
-                    case "both":
-                    $lastCommentDate = $myAlbum->lastCommentDate(
-                    $gallery->app->comments_indication_verbose);
-                    if ($lastCommentDate > 0) {
-                        print lastCommentString($lastCommentDate, $displayCommentLegend);
-                    }
-                }
-                echo '</div>';
-
-                if (!(strcmp($gallery->album->fields["display_clicks"] , "yes")) &&  !$gallery->session->offline && ($myAlbum->getClicks() > 0)) {
-                    echo '<div class="viewcounter" style="margin-top:3px">';
-                    echo _("Viewed:") . " ". pluralize_n2(ngettext("1 time", "%d times", $myAlbum->getClicks()), $myAlbum->getClicks());
-                    echo ".</div>";
-                }
+            	$myDescription = $myAlbum->fields['description'];
+            	$buf = '';
+            	$link = '';
+            	if ($gallery->user->canDownloadAlbum($myAlbum) && $myAlbum->numPhotos(1)) {
+            		$iconText = getIconText('compressed.png', _("Download entire album as archive"), 'yes');
+            		$link = popup_link($iconText, 'download.php?set_albumName='. $gallery->album->getAlbumName($i),false,false,500,500);
+            	}
+            	$buf .="<center><b>";
+            	$buf .= sprintf(_("Album: %s"),
+            	'<a class="modcaption" href="'. makeAlbumUrl($gallery->album->getAlbumName($i)) .'">'. $myAlbum->fields['title'] .'</a>');
+            	$buf .= "</b> $link</center>";
+
+            	if ($myDescription != _("No description") &&
+            	  $myDescription != "No description" &&
+            	  $myDescription != "") {
+            		$buf = $buf."<br>".$myDescription."";
+            	}
+            	echo $buf;
+
+            	echo '<div class="fineprint" style="margin-top:3px">';
+            	printf (_("Last change: %s"), $myAlbum->getLastModificationDate());
+            	echo "\n<br>";
+            	$visItems = array_sum($myAlbum->numVisibleItems($gallery->user));
+            	printf (_("Contains: %s"), gTranslate('core', "1 item", "%d items", $visItems)) . '. ';
+            	// If comments indication for either albums or both
+            	switch ($gallery->app->comments_indication) {
+            		case "albums":
+            		case "both":
+	            		$lastCommentDate = $myAlbum->lastCommentDate(
+	            		$gallery->app->comments_indication_verbose);
+	            		if ($lastCommentDate > 0) {
+	            			print lastCommentString($lastCommentDate, $displayCommentLegend);
+	            		}
+            		break;
+            	}
+            	echo '</div>';
+
+            	if (!(strcmp($gallery->album->fields["display_clicks"] , "yes")) &&  !$gallery->session->offline && ($myAlbum->getClicks() > 0)) {
+            		echo '<div class="viewcounter" style="margin-top:3px">';
+            		printf (_("Viewed: %s"), gTranslate('core', "1 time", "%d times", $myAlbum->getClicks()));
+            		echo ".</div>";
+            	}
             }
             else {
-                echo "<div align=\"center\">\n";
-                echo nl2br($gallery->album->getCaption($i));
-                echo $gallery->album->getCaptionName($i) . ' ';
-                // indicate with * if we have a comment for a given photo
-                if ($gallery->user->canViewComments($gallery->album)
-                && $gallery->app->comments_enabled == 'yes') {
-                    // If comments indication for either photos or both
-                    switch ($gallery->app->comments_indication) {
-                        case "photos":
-                        case "both":
-                        $lastCommentDate = $gallery->album->itemLastCommentDate($i);
-                        print lastCommentString($lastCommentDate, $displayCommentLegend);
-                    }
-
-                }
-                echo "</div>\n";
-
-                if (!(strcmp($gallery->album->fields["display_clicks"] , "yes")) && !$gallery->session->offline && ($gallery->album->getItemClicks($i) > 0)) {
-                    echo '<div class="viewcounter" style="margin-top:3px">';
-                    echo _("Viewed:") ." ". pluralize_n2(ngettext("1 time", "%d times", $gallery->album->getItemClicks($i)), $gallery->album->getItemClicks($i));
-                    echo ".</div>\n";
-                }
+            	echo "<div align=\"center\">\n";
+            	echo nl2br($gallery->album->getCaption($i));
+            	echo $gallery->album->getCaptionName($i) . ' ';
+            	// indicate with * if we have a comment for a given photo
+            	if ($gallery->user->canViewComments($gallery->album)
+            	&& $gallery->app->comments_enabled == 'yes') {
+            		// If comments indication for either photos or both
+            		switch ($gallery->app->comments_indication) {
+            			case "photos":
+            			case "both":
+	            			$lastCommentDate = $gallery->album->itemLastCommentDate($i);
+	            			print lastCommentString($lastCommentDate, $displayCommentLegend);
+	            		break;
+            		}
+
+            	}
+            	echo "</div>\n";
+
+            	if (!(strcmp($gallery->album->fields["display_clicks"] , "yes")) && !$gallery->session->offline && ($gallery->album->getItemClicks($i) > 0)) {
+            		echo '<div class="viewcounter" style="margin-top:3px">';
+            		echo gTranslate('core', "Viewed: 1 time.", "Viewed: %d times.", $gallery->album->getItemClicks($i));
+            		echo "</div>\n";
+            	}
             }
             echo "<br>\n";
             // End Caption
@@ -848,12 +852,14 @@
                 $form_pos++;
             }
 
-            if ($showAdminForm) {
-                $albumItemOptions = getItemActions($i, false);
+            $albumItemOptions = getItemActions($i, false, true);
+            if (sizeof($albumItemOptions) > 2 || 
+              (sizeof($albumItemOptions) == 2 && !isset($albumItemOptions['showExif']))) {
                 echo drawSelect2("s$i", $albumItemOptions, array(
-		'onChange' => "imageEditChoice(document.vote_form.s$i)",
-                'class' => 'adminform'));
+                    'onChange' => "imageEditChoice(document.vote_form.s$i)",
+                    'class' => 'adminform'));
             }
+            
             if (canVote()) {
                 print '</div>';
             }
@@ -936,8 +942,8 @@
             $gallery->album->unsetEmailMe('other', $gallery->user);
         }
     }
-    echo makeFormIntro("view_album.php",
-    array("name" => "email_me", "method" => "POST", "style" => "margin-bottom: 0px;"));
+    echo makeFormIntro("view_album.php", 
+        array("name" => "email_me", "style" => "margin-bottom: 0px;"));
     echo _("Email me when one of the following actions are done to this album:")."  ";
     $checked_com = ($gallery->album->getEmailMe('comments', $gallery->user)) ? "checked" : "" ;
     $checked_other = ($gallery->album->getEmailMe('other', $gallery->user)) ? "checked" : "";
diff -Naur gallery-1.5.1/view_comments.php gallery-1.5.2/view_comments.php
--- gallery-1.5.1/view_comments.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/view_comments.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
  * This page Created by Joseph D. Scheve ( chevy@tnatech.com ) for the
  * very pimp application that is Gallery.
  *
- * $Id: view_comments.php,v 1.48.2.2 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: view_comments.php,v 1.50.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
diff -Naur gallery-1.5.1/view_photo.php gallery-1.5.2/view_photo.php
--- gallery-1.5.1/view_photo.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/view_photo.php	2006-01-18 19:06:02.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: view_photo.php,v 1.260.2.3 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: view_photo.php,v 1.274.2.3 2006/01/18 18:06:02 jenst Exp $
  */
 ?>
 <?php
@@ -107,16 +107,18 @@
 list($imageWidth, $imageHeight) = $image->getRawDimensions();
 
 $do_fullOnly = isset($gallery->session->fullOnly) &&
-                !strcmp($gallery->session->fullOnly,"on") &&
-                !strcmp($gallery->album->fields["use_fullOnly"],"yes");
+    !strcmp($gallery->session->fullOnly,"on") &&
+    strcmp($gallery->album->fields["use_fullOnly"],"yes");
+    
 if ($do_fullOnly) {
     $full = $gallery->user->canViewFullImages($gallery->album);
 }
 
-$fitToWindow = !strcmp($gallery->album->fields["fit_to_window"], "yes")
-                && !$gallery->album->isResized($index)
-                && !$full
-                && (!$GALLERY_EMBEDDED_INSIDE || $GALLERY_EMBEDDED_INSIDE =='phpBB2');
+$fitToWindow = !strcmp($gallery->album->fields["fit_to_window"], "yes") &&
+    !$gallery->album->isMovieByIndex($index) &&
+    !$gallery->album->isResized($index) &&
+    !$full &&
+    (!$GALLERY_EMBEDDED_INSIDE || $GALLERY_EMBEDDED_INSIDE =='phpBB2');
 
 $numPhotos = $gallery->album->numPhotos($gallery->user->canWriteToAlbum($gallery->album));
 
@@ -166,14 +168,12 @@
 $upArrowURL = '<img src="' . getImagePath('nav_home.gif') . '" width="13" height="11" '.
   'alt="' . _("navigate UP") .'" title="' . _("navigate UP") .'" border="0">';
 
-if ($gallery->album->fields['returnto'] != 'no') {
-    foreach ($gallery->album->getParentAlbums(true) as $navAlbum) {
-        $breadcrumb["text"][] = $navAlbum['prefixText'] .': <a class="bread" href="'. $navAlbum['url'] . '">'.
-        $navAlbum['title'] . "&nbsp;" . $upArrowURL . "</a>";
-    }
+foreach ($gallery->album->getParentAlbums(true) as $navAlbum) {
+    $breadcrumb["text"][] = $navAlbum['prefixText'] .': <a class="bread" href="'. $navAlbum['url'] . '">'.
+      $navAlbum['title'] . "&nbsp;" . $upArrowURL . "</a>";
 }
 
-$extra_fields=$gallery->album->getExtraFields(false);
+$extra_fields = $gallery->album->getExtraFields(false);
 $title = NULL;
 if (in_array("Title", $extra_fields)) {
     $title = $gallery->album->getExtraField($index, "Title");
@@ -196,8 +196,8 @@
     } elseif (isBlacklistedComment($tmp = array('commenter_name' => $commenter_name, 'comment_text' => $comment_text), false)) {
         $error_text = _("Your Comment contains forbidden words. It will not be added.");
     } else {
-        $comment_text = removeTags($comment_text);
-        $commenter_name = removeTags($commenter_name);
+        $comment_text = strip_tags($comment_text);
+        $commenter_name = strip_tags($commenter_name);
         $IPNumber = $_SERVER['REMOTE_ADDR'];
         $gallery->album->addComment($id, $comment_text, $IPNumber, $commenter_name);
         $gallery->album->save();
@@ -279,8 +279,9 @@
 }
 ?>
   </style> 
+
   </head>
-  <body dir="<?php echo $gallery->direction ?>"<?php echo ($fitToWindow) ? ' onResize="calculateNewSize()"' : '' ?>>
+  <body dir="<?php echo $gallery->direction ?>">
 <?php
 } // End if ! embedded
 
@@ -344,12 +345,11 @@
 
         list($imageWidth, $imageHeight) = $photo->image->getRawDimensions();
 
-        /*
-        ** Now build the admin Texts / left colun
-        */
-
+        /**
+         * Now build the admin Texts / left colun
+         */
         function enablePrintForm($name) {
-            global $printEZPrintsForm, $printPhotoAccessForm, $printShutterflyForm, $printFotoserveForm;
+            global $printPhotoAccessForm, $printShutterflyForm, $printFotoserveForm;
 
             switch ($name) {
                 case 'shutterfly':
@@ -377,7 +377,7 @@
                 'shutterfly'  => 'Shutterfly',
                 'photoaccess' => 'PhotoWorks',
             ),
-            'Mobile Service' => array('mpush' => 'mPUSH (mobile service)')
+        '   Mobile Service' => array('mpush' => 'mPUSH (mobile service)')
         );
 
         /* display a <select> menu if more than one option */
@@ -427,15 +427,14 @@
 
             /* just print out text if only one option */
         } elseif ($numServices == 1) {
-            $name = @key($printServices);
 
-            enablePrintForm($name);
             foreach ($fullNames as $serviceGroupName => $serviceGroup) {
                 foreach ($serviceGroup as $name => $fullName) {
                     if (!in_array($name, $printServices)) {
                         continue;
                     } else {
-                        $iconText = getIconText('', sprintf(_('process this photo with %s'), $fullName));
+			enablePrintForm($name);
+                        $iconText = getIconText('', sprintf(_("process this photo with %s"), $fullName));
                         $adminTextIconElemens[] = "<a class=\"admin\" href=\"#\" onClick=\"doPrintService('$name');\">$iconText</a>";
                     }
                 }
@@ -444,6 +443,7 @@
 
 ?>
 <script language="javascript1.2" type="text/JavaScript">
+
 function doPrintService(input) {
     if (!input) {
         input = document.print_form.print_services.value;
@@ -484,7 +484,7 @@
         if (!isset($gallery->session->fullOnly) || strcmp($gallery->session->fullOnly,"on")) {
             $adminTextIconElemens[] = $iconTextNormal;
             $adminTextIconElemens[] = '|';
-            $adminTextIconElemens[] = "<a class=\"admin\" href=\"$link\">[" . $iconTextFull .']</a>';
+            $adminTextIconElemens[] = "<a class=\"admin\" href=\"$link\">[". $iconTextFull .']</a>';
         } else {
             $adminTextIconElemens[] = "<a class=\"admin\" href=\"$link\">[" .$iconTextNormal .']</a>';
             $adminTextIconElemens[] = '|';
@@ -504,9 +504,13 @@
 }
 
 if(sizeof($albumItemOptions) > 2 && !$useIcons) {
-    $iconElements[] =  drawSelect2("itemOptions", $albumItemOptions, array(
-        'onChange' => "imageEditChoice(document.admin_options_form.itemOptions)",
-        'class' => 'adminform')
+    $iconElements[] =  drawSelect2(
+    	'itemOptions',
+    	$albumItemOptions,
+    	array(
+        	'onChange' => "imageEditChoice(document.admin_options_form.itemOptions)",
+        	'class' => 'adminform'
+        )
     );
 }
 
@@ -536,11 +540,20 @@
 if(sizeof($albumItemOptions) > 2 && $useIcons) {
     includeLayout('navtablemiddle.inc');
     $albumItemOptionElements = array();
+    $itemActionTable = new galleryTable();
+    $itemActionTable->setColumnCount(10);
+    $itemActionTable->setAttrs(array('align' => langLeft()));
     foreach ($albumItemOptions as $trash => $option) {
         if(!empty($option['value'])) {
-            echo "\n". popup_link($option['text'], $option['value'], true, false, 500, 500, 'iconLink');
+            if (stristr($option['value'], 'popup')) {
+                $content = popup_link($option['text'], $option['value'], true, false, 500, 500, 'iconLink');
+            } else {
+                $content = '<a class="iconLink" href="'. $option['value'] .'">'. $option['text'] . '</a>';
+            }
+            $itemActionTable->addElement(array('content' => $content));
         }
     }
+    echo $itemActionTable->render();
 }
 
 includeLayout('navtablemiddle.inc');
@@ -583,7 +596,7 @@
     if(!$do_fullOnly  && ($full || $fitToWindow || $gallery->album->isResized($index))) {
         switch(true) {
             case $fitToWindow:
-                $href="";
+                $href = '';
                 break;
             case $full:
                 $href = makeAlbumUrl($gallery->session->albumName, $id);
@@ -603,7 +616,13 @@
     $frame = 'none';
 }
 
-$photoTag = $gallery->album->getPhotoTag($index, $full,'id="galleryImage"');
+if(empty($full) && $allImageAreas = $gallery->album->getAllImageAreas($index)) {
+	echo showImageMap($index);
+    $photoTag = $gallery->album->getPhotoTag($index, $full,"id=\"galleryImage\" usemap=\"#myMap\"");
+}
+else {
+    $photoTag = $gallery->album->getPhotoTag($index, $full,"id=\"galleryImage\"");
+}
 
 list($width, $height) = $photo->getDimensions($full);
 $gallery->html_wrap['borderColor'] = $gallery->album->fields["bordercolor"];
@@ -638,8 +657,7 @@
 
 if ( canVote()) {
     echo "\n<!-- Voting pulldown -->\n";
-    echo makeFormIntro("view_photo.php", array("name" => "vote_form",
-    "method" => "POST"));
+    echo makeFormIntro('view_photo.php', array('name' => 'vote_form'));
 ?>
 	<script language="javascript1.2" type="text/JavaScript">
 	function chooseOnlyOne(i, form_pos, scale) {
@@ -723,15 +741,7 @@
 includeLayout('breadcrumb.inc');
 includeLayout('navtableend.inc');
 echo languageSelector();
-if ($fitToWindow) {
-?>
-<script type="text/javascript">
-<!--
-calculateNewSize();
-//-->
-</script>
-<?php 
-}
+
 if (isset($printShutterflyForm)) { ?>
 <form name="sflyc4p" action="http://www.shutterfly.com/c4p/UpdateCart.jsp" method="post">
   <input type=hidden name=addim value="1">
@@ -777,8 +787,23 @@
   <input type="hidden" name="imgHeight" value="<?php echo $imageHeight ?>">
 </form>
 <?php }
-includeHtmlWrap("photo.footer");
-	if (!$GALLERY_EMBEDDED_INSIDE) { ?>
+
+    includeHtmlWrap("photo.footer");
+    if (!empty($allImageAreas)) {
+        echo '<script language="JavaScript" type="text/javascript" src="'. $gallery->app->photoAlbumURL .'/js/wz_tooltip.js"></script>';
+    }
+    if ($fitToWindow) {
+?>
+<script type="text/javascript">
+<!--
+calculateNewSize();
+//-->
+</script>
+<?php
+    }
+    if (!$GALLERY_EMBEDDED_INSIDE) { ?>
 </body>
 </html>
-<?php } ?>
+<?php
+}
+?>
\ Pas de fin de ligne à la fin du fichier.
diff -Naur gallery-1.5.1/view_photo_properties.php gallery-1.5.2/view_photo_properties.php
--- gallery-1.5.1/view_photo_properties.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/view_photo_properties.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: view_photo_properties.php,v 1.46.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: view_photo_properties.php,v 1.49.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
@@ -38,6 +38,7 @@
 <head>
   <title><?php echo _("Photo Properties") ?></title>
   <?php common_header(); ?>
+  <style> td { text-align: <?php echo langLeft() ?> } </style>
 </head>
 <body dir="<?php echo $gallery->direction ?>" class="popupbody">
 <?php
@@ -130,10 +131,12 @@
 }
 ?>
 <br><br>
+</div>
+<center>
 <form action="#">
-<input type="button" value="<?php echo _("Done") ?>" onclick='parent.close()'>
+<input type="button" value="<?php echo gTranslate('core', "Close Window") ?>" onclick='parent.close()'>
 </form>
-</div>
+</center>
 
 <?php print gallery_validation_link("view_photo_properties.php", true, array('index' => $index)); ?>
 </div>
diff -Naur gallery-1.5.1/watermark_album.php gallery-1.5.2/watermark_album.php
--- gallery-1.5.1/watermark_album.php	2005-09-13 00:40:44.000000000 +0200
+++ gallery-1.5.2/watermark_album.php	2006-01-06 07:31:31.000000000 +0100
@@ -1,7 +1,7 @@
 <?php
 /*
  * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2005 Bharat Mediratta
+ * Copyright (C) 2000-2006 Bharat Mediratta
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * $Id: watermark_album.php,v 1.21.2.1 2005/09/12 22:40:44 dmolavi Exp $
+ * $Id: watermark_album.php,v 1.23.2.1 2006/01/06 06:31:31 jenst Exp $
  */
 ?>
 <?php
@@ -135,7 +135,7 @@
     }
 
     echo infoLine(_("Keep in mind that watermarking on animated gifs is currently not supported and will 'deface & unanimate' your pictures."), 'notice');
-    echo makeFormIntro("watermark_album.php",  array("name" => "theform", "method" => "POST"));
+    echo makeFormIntro('watermark_album.php',  array('name' => 'theform'));
     global $watermarkForm;
     $watermarkForm["askRecursive"] = 1;
     $watermarkForm["askPreview"] = 1;
