[pLog-svn] r5488 - in plog/trunk: . bin-devel class/action class/action/admin class/config class/controller class/dao class/dao/customfields class/dao/userdata class/data class/data/filter class/file class/gallery/dao class/mail class/misc class/net class/net/xmlrpc class/plugin class/summary/action class/template class/template/smarty/plugins class/test class/test/PHPUnit class/test/PHPUnit/GUI class/test/tests/config class/test/tests/data class/test/tests/data/filter class/test/tests/data/validator class/view/admin flash flash/mp3player gallery install js js/jscalendar js/jscalendar/lang js/jscalendar/skins js/jscalendar/skins/aqua js/tinymce js/tinymce/plugins js/tinymce/plugins/insertaudio js/tinymce/plugins/insertaudio/css js/tinymce/plugins/insertaudio/images js/tinymce/plugins/insertaudio/langs js/tinymce/plugins/insertresource js/tinymce/plugins/insertresource/css js/tinymce/plugins/insertresource/images js/tinymce/plugins/insertresource/langs js/tinymce/plugins/insertv ideo js/tinymce/plugins/insertvideo/css js/tinymce/plugins/insertvideo/images js/tinymce/plugins/insertvideo/langs js/tinymce/plugins/more/langs js/ui locale locale/admin locale/unported templates/LifeType templates/LifeType/en_UK templates/admin templates/admin/chooser templates/rss templates/summary/rss

mark at devel.lifetype.net mark at devel.lifetype.net
Tue Jun 5 09:51:05 EDT 2007


Author: mark
Date: 2007-06-05 09:51:03 -0400 (Tue, 05 Jun 2007)
New Revision: 5488

Added:
   plog/trunk/bin-devel/genmd5.php
   plog/trunk/class/action/admin/adminversioncheckaction.class.php
   plog/trunk/class/data/filter/
   plog/trunk/class/data/filter/allowedhtmlfilter.class.php
   plog/trunk/class/data/filter/filterbase.class.php
   plog/trunk/class/data/filter/htmlentitiesfilter.class.php
   plog/trunk/class/data/filter/htmlfilter.class.php
   plog/trunk/class/data/filter/xhtmlizefilter.class.php
   plog/trunk/class/misc/integritychecker.class.php
   plog/trunk/class/test/tests/config/properties_test.class.php
   plog/trunk/class/test/tests/data/filter/
   plog/trunk/class/test/tests/data/filter/filterbase_test.class.php
   plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php
   plog/trunk/flash/
   plog/trunk/flash/mp3player/
   plog/trunk/flash/mp3player/mp3player.swf
   plog/trunk/gallery/.htaccess
   plog/trunk/install/files.properties.php
   plog/trunk/js/jscalendar/
   plog/trunk/js/jscalendar/ChangeLog
   plog/trunk/js/jscalendar/README
   plog/trunk/js/jscalendar/calendar-blue.css
   plog/trunk/js/jscalendar/calendar-blue2.css
   plog/trunk/js/jscalendar/calendar-brown.css
   plog/trunk/js/jscalendar/calendar-green.css
   plog/trunk/js/jscalendar/calendar-setup.js
   plog/trunk/js/jscalendar/calendar-setup_stripped.js
   plog/trunk/js/jscalendar/calendar-system.css
   plog/trunk/js/jscalendar/calendar-tas.css
   plog/trunk/js/jscalendar/calendar-win2k-1.css
   plog/trunk/js/jscalendar/calendar-win2k-2.css
   plog/trunk/js/jscalendar/calendar-win2k-cold-1.css
   plog/trunk/js/jscalendar/calendar-win2k-cold-2.css
   plog/trunk/js/jscalendar/calendar.js
   plog/trunk/js/jscalendar/calendar.php
   plog/trunk/js/jscalendar/calendar_stripped.js
   plog/trunk/js/jscalendar/img.gif
   plog/trunk/js/jscalendar/lang/
   plog/trunk/js/jscalendar/lang/calendar-af.js
   plog/trunk/js/jscalendar/lang/calendar-al.js
   plog/trunk/js/jscalendar/lang/calendar-bg.js
   plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-big5.js
   plog/trunk/js/jscalendar/lang/calendar-br.js
   plog/trunk/js/jscalendar/lang/calendar-ca.js
   plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-cs-win.js
   plog/trunk/js/jscalendar/lang/calendar-da.js
   plog/trunk/js/jscalendar/lang/calendar-de.js
   plog/trunk/js/jscalendar/lang/calendar-du.js
   plog/trunk/js/jscalendar/lang/calendar-el.js
   plog/trunk/js/jscalendar/lang/calendar-en.js
   plog/trunk/js/jscalendar/lang/calendar-es.js
   plog/trunk/js/jscalendar/lang/calendar-fi.js
   plog/trunk/js/jscalendar/lang/calendar-fr.js
   plog/trunk/js/jscalendar/lang/calendar-he-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-hr.js
   plog/trunk/js/jscalendar/lang/calendar-hu.js
   plog/trunk/js/jscalendar/lang/calendar-it.js
   plog/trunk/js/jscalendar/lang/calendar-jp.js
   plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-ko.js
   plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-lt.js
   plog/trunk/js/jscalendar/lang/calendar-lv.js
   plog/trunk/js/jscalendar/lang/calendar-nl.js
   plog/trunk/js/jscalendar/lang/calendar-no.js
   plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-pl.js
   plog/trunk/js/jscalendar/lang/calendar-pt.js
   plog/trunk/js/jscalendar/lang/calendar-ro.js
   plog/trunk/js/jscalendar/lang/calendar-ru.js
   plog/trunk/js/jscalendar/lang/calendar-ru_win_.js
   plog/trunk/js/jscalendar/lang/calendar-si.js
   plog/trunk/js/jscalendar/lang/calendar-sk.js
   plog/trunk/js/jscalendar/lang/calendar-sp.js
   plog/trunk/js/jscalendar/lang/calendar-sv.js
   plog/trunk/js/jscalendar/lang/calendar-tr.js
   plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-zh.js
   plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js
   plog/trunk/js/jscalendar/lang/cn_utf8.js
   plog/trunk/js/jscalendar/menuarrow.gif
   plog/trunk/js/jscalendar/menuarrow2.gif
   plog/trunk/js/jscalendar/release-notes.html
   plog/trunk/js/jscalendar/skins/
   plog/trunk/js/jscalendar/skins/aqua/
   plog/trunk/js/jscalendar/skins/aqua/active-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/dark-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/hover-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/menuarrow.gif
   plog/trunk/js/jscalendar/skins/aqua/normal-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/rowhover-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/status-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/theme.css
   plog/trunk/js/jscalendar/skins/aqua/title-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/today-bg.gif
   plog/trunk/js/tinymce/plugins/insertaudio/
   plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html
   plog/trunk/js/tinymce/plugins/insertaudio/css/
   plog/trunk/js/tinymce/plugins/insertaudio/css/content.css
   plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css
   plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js
   plog/trunk/js/tinymce/plugins/insertaudio/functions.js
   plog/trunk/js/tinymce/plugins/insertaudio/images/
   plog/trunk/js/tinymce/plugins/insertaudio/images/player.png
   plog/trunk/js/tinymce/plugins/insertaudio/langs/
   plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js
   plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js
   plog/trunk/js/tinymce/plugins/insertresource/css/
   plog/trunk/js/tinymce/plugins/insertresource/css/content.css
   plog/trunk/js/tinymce/plugins/insertresource/images/player.png
   plog/trunk/js/tinymce/plugins/insertresource/langs/fr.js
   plog/trunk/js/tinymce/plugins/insertvideo/README.txt
   plog/trunk/js/tinymce/plugins/insertvideo/images/dailymotion.png
   plog/trunk/js/tinymce/plugins/insertvideo/langs/fr.js
   plog/trunk/js/tinymce/plugins/more/langs/fr.js
   plog/trunk/locale/admin/locale_gl_ES.php
   plog/trunk/locale/locale_gl_ES.php
   plog/trunk/templates/admin/versions.template
Removed:
   plog/trunk/class/data/filter/allowedhtmlfilter.class.php
   plog/trunk/class/data/filter/filterbase.class.php
   plog/trunk/class/data/filter/htmlentitiesfilter.class.php
   plog/trunk/class/data/filter/htmlfilter.class.php
   plog/trunk/class/data/filter/xhtmlizefilter.class.php
   plog/trunk/class/test/tests/data/filter/filterbase_test.class.php
   plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php
   plog/trunk/flash/mp3player/
   plog/trunk/flash/mp3player/mp3player.swf
   plog/trunk/js/calendar/
   plog/trunk/js/jscalendar/ChangeLog
   plog/trunk/js/jscalendar/README
   plog/trunk/js/jscalendar/calendar-blue.css
   plog/trunk/js/jscalendar/calendar-blue2.css
   plog/trunk/js/jscalendar/calendar-brown.css
   plog/trunk/js/jscalendar/calendar-green.css
   plog/trunk/js/jscalendar/calendar-setup.js
   plog/trunk/js/jscalendar/calendar-setup_stripped.js
   plog/trunk/js/jscalendar/calendar-system.css
   plog/trunk/js/jscalendar/calendar-tas.css
   plog/trunk/js/jscalendar/calendar-win2k-1.css
   plog/trunk/js/jscalendar/calendar-win2k-2.css
   plog/trunk/js/jscalendar/calendar-win2k-cold-1.css
   plog/trunk/js/jscalendar/calendar-win2k-cold-2.css
   plog/trunk/js/jscalendar/calendar.js
   plog/trunk/js/jscalendar/calendar.php
   plog/trunk/js/jscalendar/calendar_stripped.js
   plog/trunk/js/jscalendar/img.gif
   plog/trunk/js/jscalendar/lang/
   plog/trunk/js/jscalendar/lang/calendar-af.js
   plog/trunk/js/jscalendar/lang/calendar-al.js
   plog/trunk/js/jscalendar/lang/calendar-bg.js
   plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-big5.js
   plog/trunk/js/jscalendar/lang/calendar-br.js
   plog/trunk/js/jscalendar/lang/calendar-ca.js
   plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-cs-win.js
   plog/trunk/js/jscalendar/lang/calendar-da.js
   plog/trunk/js/jscalendar/lang/calendar-de.js
   plog/trunk/js/jscalendar/lang/calendar-du.js
   plog/trunk/js/jscalendar/lang/calendar-el.js
   plog/trunk/js/jscalendar/lang/calendar-en.js
   plog/trunk/js/jscalendar/lang/calendar-es.js
   plog/trunk/js/jscalendar/lang/calendar-fi.js
   plog/trunk/js/jscalendar/lang/calendar-fr.js
   plog/trunk/js/jscalendar/lang/calendar-he-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-hr.js
   plog/trunk/js/jscalendar/lang/calendar-hu.js
   plog/trunk/js/jscalendar/lang/calendar-it.js
   plog/trunk/js/jscalendar/lang/calendar-jp.js
   plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-ko.js
   plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-lt.js
   plog/trunk/js/jscalendar/lang/calendar-lv.js
   plog/trunk/js/jscalendar/lang/calendar-nl.js
   plog/trunk/js/jscalendar/lang/calendar-no.js
   plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-pl.js
   plog/trunk/js/jscalendar/lang/calendar-pt.js
   plog/trunk/js/jscalendar/lang/calendar-ro.js
   plog/trunk/js/jscalendar/lang/calendar-ru.js
   plog/trunk/js/jscalendar/lang/calendar-ru_win_.js
   plog/trunk/js/jscalendar/lang/calendar-si.js
   plog/trunk/js/jscalendar/lang/calendar-sk.js
   plog/trunk/js/jscalendar/lang/calendar-sp.js
   plog/trunk/js/jscalendar/lang/calendar-sv.js
   plog/trunk/js/jscalendar/lang/calendar-tr.js
   plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-zh.js
   plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js
   plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js
   plog/trunk/js/jscalendar/lang/cn_utf8.js
   plog/trunk/js/jscalendar/menuarrow.gif
   plog/trunk/js/jscalendar/menuarrow2.gif
   plog/trunk/js/jscalendar/release-notes.html
   plog/trunk/js/jscalendar/skins/
   plog/trunk/js/jscalendar/skins/aqua/
   plog/trunk/js/jscalendar/skins/aqua/active-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/dark-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/hover-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/menuarrow.gif
   plog/trunk/js/jscalendar/skins/aqua/normal-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/rowhover-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/status-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/theme.css
   plog/trunk/js/jscalendar/skins/aqua/title-bg.gif
   plog/trunk/js/jscalendar/skins/aqua/today-bg.gif
   plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html
   plog/trunk/js/tinymce/plugins/insertaudio/css/
   plog/trunk/js/tinymce/plugins/insertaudio/css/content.css
   plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css
   plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js
   plog/trunk/js/tinymce/plugins/insertaudio/functions.js
   plog/trunk/js/tinymce/plugins/insertaudio/images/
   plog/trunk/js/tinymce/plugins/insertaudio/images/player.png
   plog/trunk/js/tinymce/plugins/insertaudio/langs/
   plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js
   plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js
   plog/trunk/js/tinymce/plugins/insertresource/css/content.css
   plog/trunk/locale/unported/locale_gl_ES.php
   plog/trunk/templates/admin/calendarstuff.template
Modified:
   plog/trunk/admin.php
   plog/trunk/bin-devel/build-diff.sh
   plog/trunk/bin-devel/build-svn.sh
   plog/trunk/class/action/addcommentaction.class.php
   plog/trunk/class/action/admin/adminaddbloguseraction.class.php
   plog/trunk/class/action/admin/adminadminblogselectaction.class.php
   plog/trunk/class/action/admin/admincleanupaction.class.php
   plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php
   plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php
   plog/trunk/class/action/admin/adminupdatepostaction.class.php
   plog/trunk/class/action/searchaction.class.php
   plog/trunk/class/config/properties.class.php
   plog/trunk/class/controller/admincontrollermap.properties.php
   plog/trunk/class/dao/articles.class.php
   plog/trunk/class/dao/blogsettings.class.php
   plog/trunk/class/dao/customfields/customfieldsvalues.class.php
   plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php
   plog/trunk/class/file/file.class.php
   plog/trunk/class/gallery/dao/galleryresource.class.php
   plog/trunk/class/gallery/dao/galleryresources.class.php
   plog/trunk/class/mail/emailservice.class.php
   plog/trunk/class/net/request.class.php
   plog/trunk/class/net/xmlrpc/xmlrpcserver.class.php
   plog/trunk/class/plugin/pluginbase.class.php
   plog/trunk/class/plugin/pluginmanager.class.php
   plog/trunk/class/summary/action/doblogregistration.class.php
   plog/trunk/class/summary/action/dousercreation.class.php
   plog/trunk/class/template/cachedtemplate.class.php
   plog/trunk/class/template/smarty/plugins/modifier.utf8_wordwrap.php
   plog/trunk/class/test/PHPUnit.php
   plog/trunk/class/test/PHPUnit/GUI/Gtk.php
   plog/trunk/class/test/PHPUnit/RepeatedTest.php
   plog/trunk/class/test/PHPUnit/Skeleton.php
   plog/trunk/class/test/PHPUnit/TestCase.php
   plog/trunk/class/test/PHPUnit/TestDecorator.php
   plog/trunk/class/test/PHPUnit/TestResult.php
   plog/trunk/class/test/PHPUnit/TestSuite.php
   plog/trunk/class/test/tests/data/validator/blognamevalidator_test.class.php
   plog/trunk/class/view/admin/adminblogsettingsview.class.php
   plog/trunk/class/view/admin/adminview.class.php
   plog/trunk/index.php
   plog/trunk/install/defaultconfig.properties.php
   plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js
   plog/trunk/js/tinymce/plugins/insertvideo/css/content.css
   plog/trunk/js/tinymce/plugins/insertvideo/editor_plugin.js
   plog/trunk/js/tinymce/plugins/insertvideo/functions.js
   plog/trunk/js/tinymce/plugins/insertvideo/langs/en.js
   plog/trunk/js/tinymce/plugins/insertvideo/videoinput.html
   plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js
   plog/trunk/js/tinymce/tiny_mce-plog.js
   plog/trunk/js/ui/common.js
   plog/trunk/js/ui/default.js
   plog/trunk/locale/admin/locale_ca_ES.php
   plog/trunk/locale/admin/locale_de_DE.php
   plog/trunk/locale/admin/locale_en_UK.php
   plog/trunk/locale/admin/locale_es_ES.php
   plog/trunk/locale/admin/locale_fr_FR.php
   plog/trunk/locale/admin/locale_it_IT.php
   plog/trunk/locale/admin/locale_nl_NL.php
   plog/trunk/locale/admin/locale_zh_CN.php
   plog/trunk/locale/admin/locale_zh_TW.php
   plog/trunk/locale/locale_fr_FR.php
   plog/trunk/templates/LifeType/en_UK/strings.txt
   plog/trunk/templates/LifeType/footermain.template
   plog/trunk/templates/admin/addbloguser.template
   plog/trunk/templates/admin/blogsettings.template
   plog/trunk/templates/admin/chooser/resourcelist.template
   plog/trunk/templates/admin/editpost.template
   plog/trunk/templates/admin/globalsettings_security.template
   plog/trunk/templates/admin/menus.xml
   plog/trunk/templates/admin/newpost.template
   plog/trunk/templates/admin/siteblogs.template
   plog/trunk/templates/rss/atom.template
   plog/trunk/templates/summary/rss/atom.template
   plog/trunk/templates/summary/rss/blogs_atom.template
   plog/trunk/wizard.php
Log:
Merge from the 1.2 branch to trunk (5368 to 5487)

Modified: plog/trunk/admin.php
===================================================================
--- plog/trunk/admin.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/admin.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -40,7 +40,7 @@
     $pluginManager->loadPlugins( "admin" );
 
     // give control to the, ehem, controller :)
-    $controller->process( HttpVars::getRequest(), "op");
+    $controller->process( HttpVars::getRequest());
 	
     // log statistics, only for debugging purposes
     //Info::logMetrics();

Modified: plog/trunk/bin-devel/build-diff.sh
===================================================================
--- plog/trunk/bin-devel/build-diff.sh	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/bin-devel/build-diff.sh	2007-06-05 13:51:03 UTC (rev 5488)
@@ -38,6 +38,9 @@
 svn switch $SVNSERVER$SVNREPO/$BRANCH2 > files
 cd ..
 
+echo "Generating MD5 hash of files..."
+php $WORKFOLDER/bin-devel/genmd5.php
+
 echo "Copying new or updated files..."
 # need to change this.  We should parse deleted files, and parse
 # this list in order because the same file could have been added
@@ -51,6 +54,11 @@
 	cp $WORKFOLDER/$i $DESTFOLDER/$FOLDER
 done
 
+# make sure that install/files.properties.php is included
+echo "Moving the updated files.properties.php to the destination package..."
+mkdir -p $DESTFOLDER/install
+cp $WORKFOLDER/install/files.properties.php $DESTFOLDER/install/files.properties.php
+
 # remove temporary folders
 rm -rf $WORKFOLDER
 
@@ -62,7 +70,6 @@
 rm -r $DESTFOLDER/bin-devel/
 rm -r $DESTFOLDER/docs-devel/
 rm -r $DESTFOLDER/plog.xcode/
-rm -r $DESTFOLDER/install/
 rm -r $DESTFOLDER/release/
 rm -r $DESTFOLDER/templates/LifeType
 rm -r $DESTFOLDER/templates/grey-sf

Modified: plog/trunk/bin-devel/build-svn.sh
===================================================================
--- plog/trunk/bin-devel/build-svn.sh	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/bin-devel/build-svn.sh	2007-06-05 13:51:03 UTC (rev 5488)
@@ -46,8 +46,8 @@
 
 cleanup_exit()
 {
-	rm -rf $WORKDIR
-	rm -rf $WORKDIR-docs
+	#rm -rf $WORKDIR
+	#rm -rf $WORKDIR-docs
 	exit $1
 }
 
@@ -115,6 +115,10 @@
 cp -f $WORKDIR/release/userdata.properties.php.dist $WORKDIR/config/userdata.properties.php
 rm -rf $WORKDIR/dist
 
+# generate install/file.properties.php with the MD5 hashes of most core files
+message "Generating MD5 hashes..."
+php $WORKDIR/bin-devel/genmd5.php
+
 # finally, update the version.php file
 message "Updating the version.php file..."
 echo "<?php" > $WORKDIR/version.php

Copied: plog/trunk/bin-devel/genmd5.php (from rev 5487, plog/branches/lifetype-1.2/bin-devel/genmd5.php)
===================================================================
--- plog/trunk/bin-devel/genmd5.php	                        (rev 0)
+++ plog/trunk/bin-devel/genmd5.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This script is called during the build process
+ */
+
+if (!defined( "PLOG_CLASS_PATH" )) {
+    define( "PLOG_CLASS_PATH", dirname(__FILE__)."/../");
+}
+
+include_once( PLOG_CLASS_PATH."class/bootstrap.php" ); 
+lt_include( PLOG_CLASS_PATH."class/misc/integritychecker.class.php" );
+lt_include( PLOG_CLASS_PATH."class/file/file.class.php" );
+
+File::chDir( PLOG_CLASS_PATH );
+IntegrityChecker::writeMD5ListToFile();
+
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/addcommentaction.class.php
===================================================================
--- plog/trunk/class/action/addcommentaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/addcommentaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -10,6 +10,9 @@
     lt_include( PLOG_CLASS_PATH."class/data/validator/emailvalidator.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/httpurlvalidator.class.php" );    
     lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/data/filter/allowedhtmlfilter.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/data/filter/xhtmlizefilter.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/errorview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/redirectview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/bayesian/bayesianfiltercore.class.php" );
@@ -40,7 +43,17 @@
         function AddCommentAction( $blogInfo, $request )
         {
         	$this->BlogAction( $blogInfo, $request );
-			
+
+			// input filters
+			$f = new HtmlFilter();
+			$this->_request->registerFilter( "userEmail", $f );
+			$this->_request->registerFilter( "userUrl", $f );
+			$this->_request->registerFilter( "userName", $f );
+			$this->_request->registerFilter( "commentTopic", $f );
+			$f = new AllowedHtmlFilter();
+			$f->addFilter( new XhtmlizeFilter());			
+			$this->_request->registerFilter( "commentText", $f );			
+
 			// change the validation mode of the form
 			$this->registerFieldValidator( "articleId", new IntegerValidator());
 			$this->_form->setFieldErrorMessage( "articleId", $this->_locale->tr("error_incorrect_article_id" ));
@@ -67,26 +80,27 @@
         {
             lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
 
+			$f = new HtmlFilter( true );
+
             $this->_articleId = $this->_request->getValue( "articleId" );
             $this->_blogId    = $this->_request->getValue( "blogId" );
             $this->_opId      = $this->_request->getValue( "op" );
             $this->_parentId  = $this->_request->getValue( "parentId" );
             if( $this->_parentId == null || $this->_parentId == "" )
                 $this->_parentId = 0;
-            $this->_userEmail = Textfilter::filterAllHTML($this->_request->getValue( "userEmail" ));
-            $this->_userUrl   = Textfilter::filterAllHTML($this->_request->getValue( "userUrl" ));
+            $this->_userEmail = $this->_request->getValue( "userEmail" );
+            $this->_userUrl   = $this->_request->getValue( "userUrl" );
             if( (strlen($this->_userUrl) != 0) &&
                   ereg('^https{0,1}://',$this->_userUrl) == false){
                 $this->_userUrl = "http://".$this->_userUrl;
             }
-            $this->_userName  = Textfilter::filterAllHTML($this->_request->getValue( "userName" ));
+            $this->_userName  = $this->_request->getValue( "userName" );
             $this->_commentText = trim($this->_request->getValue( "commentText" ));
-            $this->_commentTopic = Textfilter::filterAllHTML($this->_request->getValue( "commentTopic" ));
-            // remove all weird stuff from the comment text
-            $tf = new TextFilter();
-            $this->_commentText = $tf->xhtmlize($tf->filterHTML( $this->_commentText ));
+            $this->_commentTopic = $this->_request->getValue( "commentTopic" );
+
             // now, if the option is set, we 'beautify' the text typed by users
             if( $this->_config->getValue( "beautify_comments_text" )) {
+            	$tf = new TextFilter();	
             	$this->_commentText = $tf->autop($this->_commentText);
             }
         }

Modified: plog/trunk/class/action/admin/adminaddbloguseraction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddbloguseraction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/admin/adminaddbloguseraction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -28,11 +28,15 @@
 			
 			// data validation
 			$this->registerFieldValidator( "newBlogUserName", new StringValidator());
+			
 			$this->_sendNotification = ($this->_request->getValue( "sendNotification" ) != "" );
-			if( $this->_sendNotification )
+			
+			if( $this->_sendNotification ) {
 				$this->registerFieldValidator( "newBlogUserText", new StringValidator());
-			else
+			}
+			else {
 				$this->registerField( "newBlogUserText" );		
+			}		
 						
 			$this->registerField( "sendNotification" );
 			$this->registerField( "perm" );
@@ -43,7 +47,7 @@
 			$this->requirePermission( "add_blog_user" );
         }
 
-        function sendNotificationEmail( $userInfo )
+        function sendNotificationEmail( &$userInfo )
         {
             // if everything went fine, we can now send the confirmation email
             // only if the user specified a valid email address
@@ -51,7 +55,7 @@
             	// build an email message
                 $message = new EmailMessage();
                 $message->setBody( $this->_notificationText );
-                $message->setSubject( "LifeType Notification" );
+                $message->setSubject( $this->_locale->tr("notification_subject") );
                 $message->addTo( $userInfo->getEmail());
                 $message->setFrom( $this->_userInfo->getEmail());
                 // and finally send it
@@ -106,14 +110,18 @@
             	$this->sendNotificationEmail( $userInfo );
             }
 
-			if( $this->userHasPermission( "view_blog_users" )) 
+			if( $this->userHasPermission( "view_blog_users" ))  {
             	$this->_view = new AdminBlogUsersListView( $this->_blogInfo );
-			else
+			}
+			else {
 				$this->_view = new AdminNewBlogUserView( $this->_blogInfo );
+			}
+				
             $this->_view->setSuccessMessage( $this->_locale->pr("user_added_to_blog_ok", $userInfo->getUsername()));
             $this->setCommonData();
 
             return true;
         }
+        
     }
-?>
\ No newline at end of file
+?>

Modified: plog/trunk/class/action/admin/adminadminblogselectaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminadminblogselectaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/admin/adminadminblogselectaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -40,7 +40,7 @@
 			$this->_blogId = $this->_request->getValue( "blogId" );
 		
 			// load the blog
-            require_once( PLOG_CLASS_PATH . "class/dao/blogs.class.php" );
+            lt_include( PLOG_CLASS_PATH . "class/dao/blogs.class.php" );
 			$blogs = new Blogs();
             $blogInfo = $blogs->getBlogInfo( $this->_blogId );
 			 

Modified: plog/trunk/class/action/admin/admincleanupaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admincleanupaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/admin/admincleanupaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -177,14 +177,15 @@
 
 			$blogs = new Blogs();
         	$activeBlogs = $blogs->getAllBlogs( BLOG_STATUS_ACTIVE );
-            // Get the plugin manager
-            $plugMgr =& PluginManager::getPluginManager();
+                // Get the plugin manager
+//            $plugMgr =& PluginManager::getPluginManager();
 
         	foreach( $activeBlogs as $blogInfo ) {
-	            $plugMgr->setBlogInfo( $blogInfo);
-	            $plugMgr->loadPlugins( "admin" );
+	            $this->_pm->setBlogInfo( $blogInfo);
+	            $this->_pm->loadPlugins( "admin" );
+                $this->_pm->getPlugins();
 	            // Send the EVENT_POST_ADMIN_PURGE_TEMP_FOLDER message
-	            $plugMgr->notifyEvent( EVENT_POST_ADMIN_PURGE_TEMP_FOLDER );            
+	            $this->_pm->notifyEvent( EVENT_POST_ADMIN_PURGE_TEMP_FOLDER );            
         	}
 			
 			$this->_message = $this->_locale->tr( "temp_folder_reset_ok" );

Modified: plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -127,8 +127,13 @@
 				$this->_postText = stripslashes($this->_request->getValue( "postText" ));
 			else
 				$this->_postText = $this->_request->getValue( "postText" );
-				
-        	$this->_postText     = trim(Textfilter::xhtmlize(Textfilter::filterJavaScript($this->_postText)));
+			
+			// check if javascript code is allowed in posts
+			$config =& Config::getConfig();
+			if( !$config->getValue( "allow_javascript_blocks_in_posts", false )) {
+				$this->_postText = Textfilter::filterJavaScript( $this->_postText );
+			}	
+        	$this->_postText = trim(Textfilter::xhtmlize( $this->_postText ));
             $this->_postTopic    = trim(Textfilter::xhtmlize(Textfilter::filterAllHTML($this->_request->getValue( "postTopic" ))));
 			$this->_posterId = $this->_request->getValue( "posterId" );
             $this->_postCategories = $this->_request->getValue( "postCategories" );

Modified: plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -39,6 +39,7 @@
 			$this->registerFieldValidator( "blogTemplate", new StringValidator());
 			$this->registerFieldValidator( "blogCategory", new IntegerValidator());
 			$this->registerFieldValidator( "blogNumCommentsPerPage", $val );
+			$this->registerFieldValidator( "blogArticlesOrder", new IntegerValidator());
 			$this->registerField( "blogAbout" );
 			$this->registerField( "blogShowMoreEnabled" );
 			$this->registerField( "blogEnableHtmlarea" );
@@ -130,6 +131,7 @@
            	$blogSettings->setValue( "show_comments_max", $this->_request->getValue( "blogNumCommentsPerPage" ));
 			//$blogSettings->setValue( "comment_only_auth_users", Textfilter::checkboxToBoolean($this->_request->getValue( "blogCommentOnlyRegisteredUsers" )));
             $blogSettings->setValue( "comments_order", $this->_request->getValue( "blogCommentsOrder" ));
+            $blogSettings->setValue( "articles_order", $this->_request->getValue( "blogArticlesOrder" ));
             $blogSettings->setValue( "default_send_notification", $this->_request->getValue( "blogSendNotification" ));
             $this->_blogInfo->setAbout( Textfilter::filterAllHTML($this->_request->getValue( "blogAbout" )));
             $this->_blogInfo->setBlog( Textfilter::filterAllHTML($this->_request->getValue( "blogName" )));

Modified: plog/trunk/class/action/admin/adminupdatepostaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatepostaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/admin/adminupdatepostaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -117,7 +117,12 @@
             $post->setCommentsEnabled( $this->_commentsEnabled );
 			$post->setPostSlug( $this->_postSlug );
 			$post->setGlobalCategoryId( $this->_globalArticleCategoryId );		
-			$post->setUser( $this->_posterId );			
+			$post->setUser( $this->_posterId );
+			
+			// set the modification date
+			$blogSettings = $this->_blogInfo->getSettings();
+			$modifDate = Timestamp::getDateWithOffset( new Timestamp(), $blogSettings->getValue( "time_offset", 0 ));
+			$post->setModificationDate( $modifDate );			
 
             // prepare the custom fields
             $fields = Array();
@@ -175,42 +180,56 @@
             	}
         	}
 			
-			// if the "send xmlrpc pings" checkbox was enabled, do something about it...
+                // only send trackbacks and xmlrpc pings
+                // when a post is "published"
 			if( $post->getStatus() == POST_STATUS_PUBLISHED ) {
 				// get the links from the text of the post
-				$postLinks = StringUtils::getLinks( stripslashes($post->getText()));
+                $postLinks = StringUtils::getLinks(
+                    stripslashes($post->getText()));
 
                 // get the real trackback links from trackbackUrls
                 $trackbackLinks = Array();
                 foreach(explode( "\r\n", $this->_trackbackUrls ) as $host ) {
                 	trim($host);
-                	if( $host != "" && $host != "\r\n" && $host != "\r" && $host != "\n" )
+                	if( $host != "" && $host != "\r\n" &&
+                        $host != "\r" && $host != "\n" )
+                    {
                     	array_push( $trackbackLinks, $host );
+                    }
                 }
 				
-				if( $this->_sendPings ) {
+                    // if the "send xmlrpc pings" checkbox was enabled,
+                    // do something about it...
+                if( $this->_sendPings ) {
                     $t = new Timestamp();
                     $today = $t->getTimestamp();
                     if($today > $post->getDate()){
                         $message .= "<br/><br/>".$this->sendXmlRpcPings();
                     }
 				}				
-				// and now check what to do with the trackbacks
-				if( $this->_sendTrackbacks ) {					
-					// if no links, there is nothing to do
-					if( count($postLinks) == 0 && count($trackbackLinks) == 0 ) {
-						$this->_view = new AdminPostsListView( $this->_blogInfo );
-		                $this->_view->setErrorMessage( $this->_locale->tr("error_no_trackback_links_sent"));
-					}
-					else {
-						$this->_view = new AdminTemplatedView( $this->_blogInfo, "sendtrackbacks" );
-						// get the links from the text of the post
-						$this->_view->setValue( "post", $post );
-						$this->_view->setValue( "postLinks", $postLinks );
-						$this->_view->setValue( "trackbackLinks", $trackbackLinks );
-					}
-				}
-			}
+                    // and now check what to do with the trackbacks
+                if( $this->_sendTrackbacks ) {
+                        // if no links, there is nothing to do
+                    if( count($postLinks) == 0 &&
+                        count($trackbackLinks) == 0 )
+                    {
+                        $this->_view = new AdminPostsListView(
+                            $this->_blogInfo );
+                        $this->_view->setErrorMessage(
+                            $this->_locale->tr(
+                                "error_no_trackback_links_sent"));
+                    }
+                    else {
+                        $this->_view = new AdminTemplatedView(
+                            $this->_blogInfo, "sendtrackbacks" );
+                            // get the links from the text of the post
+                        $this->_view->setValue( "post", $post );
+                        $this->_view->setValue( "postLinks", $postLinks );
+                        $this->_view->setValue( "trackbackLinks",
+                                                $trackbackLinks );
+                    }
+                }
+            }
 
         	// show the message
         	$this->_view->setSuccessMessage( $message );

Copied: plog/trunk/class/action/admin/adminversioncheckaction.class.php (from rev 5487, plog/branches/lifetype-1.2/class/action/admin/adminversioncheckaction.class.php)
===================================================================
--- plog/trunk/class/action/admin/adminversioncheckaction.class.php	                        (rev 0)
+++ plog/trunk/class/action/admin/adminversioncheckaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,60 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/view/admin/admintemplatedview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/misc/integritychecker.class.php" );
+
+    /**
+     * \ingroup Action
+     * @private
+     *
+     * Checks that all files have got the right version
+     */
+    class AdminVersionCheckAction extends AdminAction
+	{
+		function AdminVersionCheckAction( $actionInfo, $request )
+		{
+			$this->AdminAction( $actionInfo, $request );
+
+			$this->requireAdminPermission( "view_global_settings" );
+		}
+
+		function perform()
+		{
+			$result = false;
+			
+			$this->_view = new AdminTemplatedView( $this->_blogInfo, "versions" );
+			
+			// decide what we're going to do...
+			$this->_op = $this->_request->getValue( "op" );
+			if( $this->_op == "doFileVersionCheck" ) {
+				// here we have to check the files and display the result
+				
+				// load the file with the reference checksums, as generated by the development
+				// team prior to the release
+				include( PLOG_CLASS_PATH."install/files.properties.php");
+				
+				// now check the reference data agains the current data. The default folders are
+				// "class", "templates/admin", "templates/wizard", "templates/rss", "templates/summary", "templates/default"
+				$result = IntegrityChecker::checkIntegrity( 
+					$data
+				);
+				
+				if( empty( $result )) 
+					$this->_view->setSuccessMessage( $this->_locale->tr( "all_files_ok" ));
+				else {
+					$fileList = implode( "<br/>", array_keys( $result ));
+					$message = $this->_locale->tr( "incorrect_file_version_error" )."<br/>".$fileList;
+					$this->_view->setErrorMessage( $message );
+				}
+			}
+
+			lt_include( PLOG_CLASS_PATH."class/misc/version.class.php" );
+			$this->_view->setValue( "version", Version::getVersion());
+
+			$this->setCommonData();
+
+			return true;
+		}
+	}
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/searchaction.class.php
===================================================================
--- plog/trunk/class/action/searchaction.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/action/searchaction.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -7,7 +7,7 @@
     lt_include( PLOG_CLASS_PATH."class/dao/searchengine.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/blogtemplatedview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
-    lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
     lt_include( PLOG_CLASS_PATH."class/net/http/httpvars.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/errorview.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/pager/pager.class.php" );
@@ -30,8 +30,7 @@
         function perform()
         {
 			// get the search terms that have already been validated...
-			$tf = new Textfilter();			
-            $this->_searchTerms = $tf->filterAllHTML( $this->_request->getValue( "searchTerms" ));
+            $this->_searchTerms = $this->_request->getFilteredValue( "searchTerms", new HtmlFilter());
 		
 			// check if the search feature is disabled in this site...
 			$config =& Config::getConfig();

Modified: plog/trunk/class/config/properties.class.php
===================================================================
--- plog/trunk/class/config/properties.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/config/properties.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -11,6 +11,8 @@
 	{
 
 		var $_props;
+		
+		var $_keyFilters;
 
         /**
          * Constructor.
@@ -20,8 +22,8 @@
          */
 		function Properties( $values = null )
 		{
+			$this->_keyFilters = Array();
 			
-
             if( $values == null )
 				$this->_props = Array();
             else
@@ -45,16 +47,62 @@
          * @param key Key whose value we want to fetch
 		 * @param defaultValue value that we should return in case the one we're looking for
 		 * is empty or does not exist
+		 * @param filterClass An instance of an object implementing the FilterBase interface that
+		 * will be used to process the value before returning it.
          * @return Value associated to that key
          */
-		function getValue( $key, $defaultValue = null )
+		function getValue( $key, $defaultValue = null, $filterClass = null )
 		{
             if( !isset($this->_props[$key]) ) {
-                return $defaultValue;
+                $value = $defaultValue;
             } else {
-			    return $this->_props[$key];
+			    $value = $this->_props[$key];
             }
+
+			if( $filterClass  || isset( $this->_keyFilters[$key] )) {
+				// there's a filter class specified, so we should run the
+				// resulting value through it...
+				if( isset( $this->_keyFilters[$key] )) {
+					$filterClass = $this->_keyFilters[$key];
+					//print("using filter: ".get_class($filterClass)." - key = ".$key."<br/>" );					
+				}
+					
+				$value = $filterClass->filter( $value );
+			}
+			
+			return( $value );
 		}
+		
+		/**
+		 * This method is an alias for Properties::getValue() but the filter
+		 * class is now a mandatory parameter
+		 *
+         * @param key Key whose value we want to fetch
+		 * @param filterClass An instance of an object implementing the FilterBase interface that
+		 * will be used to process the value before returning it.
+		 * @param defaultValue value that we should return in case the one we're looking for
+		 * is empty or does not exist
+         * @return Value associated to that key
+ 		 * @see Properties::getValue()
+ 		 */
+		function getFilteredValue( $key, $filterClass, $defaultValue = null )
+		{
+			return( $this->getValue( $key, $defaultValue, $filterClass ));
+		}
+		
+		/**
+		 * Registers a filter class for the key "$key", so that 
+		 * every time Properties::getValue( "$key" ) is called to fetch the requested
+		 * value, the filter will be applied automatically without the need to specify
+		 * the filter class at every call
+		 *
+		 * @param key
+		 * @param filterClass
+		 */
+		function registerFilter( $key, &$filterClass ) 
+		{
+			$this->_keyFilters[$key] = $filterClass;
+		}
 
 		/**
 		 * Method overwritten from the Object class

Modified: plog/trunk/class/controller/admincontrollermap.properties.php
===================================================================
--- plog/trunk/class/controller/admincontrollermap.properties.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/controller/admincontrollermap.properties.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -321,7 +321,10 @@
 	// bulk update of blogs
 	$actions["changeBlogStatus"] = "AdminChangeBlogStatusAction";
 	// bulk update of users
-	$actions["changeUserStatus"] = "AdminChangeUserStatusAction";	
+	$actions["changeUserStatus"] = "AdminChangeUserStatusAction";
+	// perform an md5 check of some core files	
+	$actions["Versions"] = "AdminVersionCheckAction";
+	$actions["doFileVersionCheck"] = "AdminVersionCheckAction";
 	// location
 	$actions['locationChooser'] = 'AdminLocationChooserAction';
 	$actions['adminLocationDisplay'] = 'AdminLocationDisplayAction';

Modified: plog/trunk/class/dao/articles.class.php
===================================================================
--- plog/trunk/class/dao/articles.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/dao/articles.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -454,6 +454,7 @@
 							 a.num_nonspam_trackbacks AS num_nonspam_trackbacks, 
 							 a.global_category_id AS global_category_id,
 							 a.in_summary_page AS in_summary_page,
+							 a.modification_date AS modification_date,
 							 a.loc_id AS loc_id
 							 FROM {$prefix}articles a, {$prefix}articles_categories c, 
                              {$prefix}article_categories_link l";
@@ -470,7 +471,17 @@
 				$query .= " ORDER BY relevance";			
 			}
 			else {
-				$query .= " ORDER BY a.date DESC";				
+				// check article order preference, default to newest first
+				lt_include( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
+				$blogs = new Blogs();
+    	        $blogInfo = $blogs->getBlogInfo( $blogId );
+				$blogSettings = $blogInfo->getSettings();
+
+				if($blogSettings->getValue( "articles_order" ) == 1) {
+					$query .= " ORDER BY a.date ASC";				
+				} else {
+					$query .= " ORDER BY a.date DESC";				
+				}
 			}
 			
             // we don't need limits if we're getting the posts for a given day
@@ -1194,9 +1205,10 @@
 				$timeDiff = $blogSettings->getValue( 'time_offset' );
 			else
 				$timeDiff = 0;
-
+				
             // we can use this auxiliary function to help us...
             $date = Timestamp::getDateWithOffset( $query_result['date'], $timeDiff );
+			$modifDate = Timestamp::getDateWithOffset( $query_result['modification_date'], $timeDiff );
 
             $categories = new ArticleCategories();
 			$articleCategories = $categories->getArticleCategories( $query_result['id'], $query_result['blog_id'] );
@@ -1220,6 +1232,7 @@
 									
             // and fill in all the fields with the information we just got from the db
             $article->setDate( $date );
+			$article->setModificationDate( $modifDate );
             $article->setTimeOffset( $timeDiff );
 			$article->setCategories( $articleCategories );            
             // get information about the categories of the article
@@ -1247,4 +1260,4 @@
 
         }
     }
-?>
\ No newline at end of file
+?>

Modified: plog/trunk/class/dao/blogsettings.class.php
===================================================================
--- plog/trunk/class/dao/blogsettings.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/dao/blogsettings.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -47,7 +47,7 @@
 			$this->setValue( "time_offset", $config->getValue( "default_time_offset", DEFAULT_TIME_OFFSET ));
 		}
 		
-		function getValue( $key, $defaultValue = null )
+		function getValue( $key, $defaultValue = null, $filterClass = null )
 		{
 			// is it a plugin key?
 			if( substr( $key, 0, strlen( "plugin_" )) == "plugin_" ) {
@@ -57,7 +57,7 @@
 				if( GlobalPluginConfig::canOverride( $key ) == PLUGIN_SETTINGS_USER_CAN_OVERRIDE ) {
 					// load the value from our settings, but if it isn't available, then return whatever the global
 					// plugin settings say					
-					$value = parent::getValue( $key, GlobalPluginConfig::getValue( $key ));
+					$value = parent::getValue( $key, GlobalPluginConfig::getValue( $key ), $filterClass );
 				}
 				else {
 					$value = GlobalPluginConfig::getValue( $key );

Modified: plog/trunk/class/dao/customfields/customfieldsvalues.class.php
===================================================================
--- plog/trunk/class/dao/customfields/customfieldsvalues.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/dao/customfields/customfieldsvalues.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -45,7 +45,8 @@
 							 v.article_id AS article_id, v.blog_id AS blog_id
                              FROM {$prefix}custom_fields_values v 
                              RIGHT OUTER JOIN {$prefix}custom_fields_definition d 
-                             ON v.article_id = ".Db::qstr($articleId)." AND v.field_id = d.id";
+                             ON v.field_id = d.id
+							 WHERE v.article_id = '".Db::qstr($articleId)."'";
                       
             $result = $this->Execute( $query );
             

Modified: plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php
===================================================================
--- plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -53,7 +53,7 @@
         function getUserInfo( $user, $pass )
         {
             $userInfo = $this->getUserInfoFromUsername( $user );
-            if ( $userInfo->getPassword() == md5($pass) ) {
+            if ( $userInfo && ($userInfo->getPassword() == md5($pass)) ) {
                 return $userInfo;
             } else {
                 return false;

Copied: plog/trunk/class/data/filter (from rev 5487, plog/branches/lifetype-1.2/class/data/filter)

Deleted: plog/trunk/class/data/filter/allowedhtmlfilter.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/data/filter/allowedhtmlfilter.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/data/filter/allowedhtmlfilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,26 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
-
-	/**
-	 * \ingroup Filter
-	 *
-	 * This class extends the FilterBase interface to filter all HTML
-	 * code in the given string except the allowed tags
-	 */
-	class AllowedHtmlFilter extends FilterBase
-	{
-		/**
-		 * Filters out all HTML code except the allowed tags
-		 *
-		 * @param data
-		 * @return The input string without HTML code
-		 */
-		function filter( $data )
-		{
-			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
-			$tf = new Textfilter();
-			return( parent::filter( $tf->filterHTML( $data )));
-		}	
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/data/filter/allowedhtmlfilter.class.php (from rev 5487, plog/branches/lifetype-1.2/class/data/filter/allowedhtmlfilter.class.php)
===================================================================
--- plog/trunk/class/data/filter/allowedhtmlfilter.class.php	                        (rev 0)
+++ plog/trunk/class/data/filter/allowedhtmlfilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,26 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
+
+	/**
+	 * \ingroup Filter
+	 *
+	 * This class extends the FilterBase interface to filter all HTML
+	 * code in the given string except the allowed tags
+	 */
+	class AllowedHtmlFilter extends FilterBase
+	{
+		/**
+		 * Filters out all HTML code except the allowed tags
+		 *
+		 * @param data
+		 * @return The input string without HTML code
+		 */
+		function filter( $data )
+		{
+			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+			$tf = new Textfilter();
+			return( parent::filter( $tf->filterHTML( $data )));
+		}	
+	}
+?>
\ No newline at end of file

Deleted: plog/trunk/class/data/filter/filterbase.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/data/filter/filterbase.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/data/filter/filterbase.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,66 +0,0 @@
-<?php
-
-	/**
-	 * \defgroup Filter
-	 *
-	 * Filters in Lifetype can be used to perform filtering operations on data, although
-	 * they will be used most of the times as input filters to filter the values of
-	 * incoming parameters.
-	 *
-	 * @see Properties::getValue()
-	 */
-	
-	/**
-	 * \ingroup Filter
-	 *
-	 * This class is the base class that defines the interface for 
-	 * filter classes. You should probably not be instantiating objects of this class
-	 * but instead, extend it and implement the FilterBase::filter() method.
-	 *
-	 * It is also possible to chain multiple validators, in a way that the output of
-	 * the previous one becomes the input of the next one. Please see the
-	 * FilterBase::addFilter() method
-	 */
-	class FilterBase
-	{
-		var $_filters;
-		
-		/**
-		 * Constructor of the class
-		 */
-		function FilterBase()
-		{
-			$this->_filters = Array();
-		}
-		
-		/**
-		 * Appends a validator to the current one. Validators appended to this one
-		 * are chained <b>at the end</b> so they always get executed
-		 * <b>after</b> this one is.
-		 *
-		 * @param filterInstance An instance of a class that implements the FilterBase interface
-		 * @return Always true
-		 */
-		function addFilter( &$filterInstance )
-		{
-			$this->_filters[] = $filterInstance;
-			
-			return( true );
-		}
-		
-		/**
-		 * This is the main method that takes care of the processing of the input data
-		 *
-		 * @param data Unfiltered data
-		 * @return The filtered data
-		 */
-		function filter( $data )
-		{
-			foreach( $this->_filters as $filterClass ) {
-				$data = $filterClass->filter( $data );
-			}
-			
-			return( $data );
-		}
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/data/filter/filterbase.class.php (from rev 5487, plog/branches/lifetype-1.2/class/data/filter/filterbase.class.php)
===================================================================
--- plog/trunk/class/data/filter/filterbase.class.php	                        (rev 0)
+++ plog/trunk/class/data/filter/filterbase.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,66 @@
+<?php
+
+	/**
+	 * \defgroup Filter
+	 *
+	 * Filters in Lifetype can be used to perform filtering operations on data, although
+	 * they will be used most of the times as input filters to filter the values of
+	 * incoming parameters.
+	 *
+	 * @see Properties::getValue()
+	 */
+	
+	/**
+	 * \ingroup Filter
+	 *
+	 * This class is the base class that defines the interface for 
+	 * filter classes. You should probably not be instantiating objects of this class
+	 * but instead, extend it and implement the FilterBase::filter() method.
+	 *
+	 * It is also possible to chain multiple validators, in a way that the output of
+	 * the previous one becomes the input of the next one. Please see the
+	 * FilterBase::addFilter() method
+	 */
+	class FilterBase
+	{
+		var $_filters;
+		
+		/**
+		 * Constructor of the class
+		 */
+		function FilterBase()
+		{
+			$this->_filters = Array();
+		}
+		
+		/**
+		 * Appends a validator to the current one. Validators appended to this one
+		 * are chained <b>at the end</b> so they always get executed
+		 * <b>after</b> this one is.
+		 *
+		 * @param filterInstance An instance of a class that implements the FilterBase interface
+		 * @return Always true
+		 */
+		function addFilter( &$filterInstance )
+		{
+			$this->_filters[] = $filterInstance;
+			
+			return( true );
+		}
+		
+		/**
+		 * This is the main method that takes care of the processing of the input data
+		 *
+		 * @param data Unfiltered data
+		 * @return The filtered data
+		 */
+		function filter( $data )
+		{
+			foreach( $this->_filters as $filterClass ) {
+				$data = $filterClass->filter( $data );
+			}
+			
+			return( $data );
+		}
+	}
+?>
\ No newline at end of file

Deleted: plog/trunk/class/data/filter/htmlentitiesfilter.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/data/filter/htmlentitiesfilter.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/data/filter/htmlentitiesfilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,25 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
-
-	/**
-	 * \ingroup Filter
-	 *
-	 * This class extends the FilterBase interface to filter all HTML
-	 * code in the given string
-	 */
-	class HtmlEntitiesFilter extends FilterBase
-	{
-		/**
-		 * Filters out all HTML and Javascript code from the given string
-		 *
-		 * @param data
-		 * @return The input string without HTML code
-		 */
-		function filter( $data )
-		{
-			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
-			return( parent::filter( Textfilter::filterHTMLEntities( $data )));
-		}	
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/data/filter/htmlentitiesfilter.class.php (from rev 5487, plog/branches/lifetype-1.2/class/data/filter/htmlentitiesfilter.class.php)
===================================================================
--- plog/trunk/class/data/filter/htmlentitiesfilter.class.php	                        (rev 0)
+++ plog/trunk/class/data/filter/htmlentitiesfilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,25 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
+
+	/**
+	 * \ingroup Filter
+	 *
+	 * This class extends the FilterBase interface to filter all HTML
+	 * code in the given string
+	 */
+	class HtmlEntitiesFilter extends FilterBase
+	{
+		/**
+		 * Filters out all HTML and Javascript code from the given string
+		 *
+		 * @param data
+		 * @return The input string without HTML code
+		 */
+		function filter( $data )
+		{
+			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+			return( parent::filter( Textfilter::filterHTMLEntities( $data )));
+		}	
+	}
+?>
\ No newline at end of file

Deleted: plog/trunk/class/data/filter/htmlfilter.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/data/filter/htmlfilter.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/data/filter/htmlfilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,42 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
-
-	/**
-	 * \ingroup Filter	
-	 *
-	 * This class extends the FilterBase interface to filter all HTML
-	 * code in the given string
-	 */
-	class HtmlFilter extends FilterBase
-	{
-		/**
-		 * Constructor
-		 *
-		 * @param filterEntities When set to true, characters with an available
-		 * HTML entity will be converted after the string has been cleaned up by
-		 * the HTML filter. Disabled by default. 
-		 */
-		function HtmlFilter( $filterEntities = false )
-		{
-			$this->FilterBase();
-			
-			if( $filterEntities ) {
-				lt_include( PLOG_CLASS_PATH."class/data/filter/htmlentitiesfilter.class.php" );
-				$this->addFilter( new HtmlEntitiesFilter());
-			}
-		}
-		
-		/**
-		 * Filters out all HTML and Javascript code from the given string
-		 *
-		 * @param data
-		 * @return The input string without HTML code
-		 */
-		function filter( $data )
-		{
-			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
-			return( parent::filter( Textfilter::filterAllHTML( $data )));
-		}	
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/data/filter/htmlfilter.class.php (from rev 5487, plog/branches/lifetype-1.2/class/data/filter/htmlfilter.class.php)
===================================================================
--- plog/trunk/class/data/filter/htmlfilter.class.php	                        (rev 0)
+++ plog/trunk/class/data/filter/htmlfilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,42 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
+
+	/**
+	 * \ingroup Filter	
+	 *
+	 * This class extends the FilterBase interface to filter all HTML
+	 * code in the given string
+	 */
+	class HtmlFilter extends FilterBase
+	{
+		/**
+		 * Constructor
+		 *
+		 * @param filterEntities When set to true, characters with an available
+		 * HTML entity will be converted after the string has been cleaned up by
+		 * the HTML filter. Disabled by default. 
+		 */
+		function HtmlFilter( $filterEntities = false )
+		{
+			$this->FilterBase();
+			
+			if( $filterEntities ) {
+				lt_include( PLOG_CLASS_PATH."class/data/filter/htmlentitiesfilter.class.php" );
+				$this->addFilter( new HtmlEntitiesFilter());
+			}
+		}
+		
+		/**
+		 * Filters out all HTML and Javascript code from the given string
+		 *
+		 * @param data
+		 * @return The input string without HTML code
+		 */
+		function filter( $data )
+		{
+			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+			return( parent::filter( Textfilter::filterAllHTML( $data )));
+		}	
+	}
+?>
\ No newline at end of file

Deleted: plog/trunk/class/data/filter/xhtmlizefilter.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/data/filter/xhtmlizefilter.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/data/filter/xhtmlizefilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,26 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
-
-	/**
-	 * \ingroup Filter
-	 *
-	 * This class extends the FilterBase interface to try to "fix"
-	 * and upconvert HTML strings to XHTML
-	 */
-	class XhtmlizeFilter extends FilterBase
-	{
-		/**
-		 * Filters out all HTML code except the allowed tags
-		 *
-		 * @param data
-		 * @return The input string converted to XHTML
-		 */
-		function filter( $data )
-		{
-			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
-			$t = new Textfilter();
-			return( parent::filter( $t->xhtmlize( $data )));
-		}	
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/data/filter/xhtmlizefilter.class.php (from rev 5487, plog/branches/lifetype-1.2/class/data/filter/xhtmlizefilter.class.php)
===================================================================
--- plog/trunk/class/data/filter/xhtmlizefilter.class.php	                        (rev 0)
+++ plog/trunk/class/data/filter/xhtmlizefilter.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,26 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
+
+	/**
+	 * \ingroup Filter
+	 *
+	 * This class extends the FilterBase interface to try to "fix"
+	 * and upconvert HTML strings to XHTML
+	 */
+	class XhtmlizeFilter extends FilterBase
+	{
+		/**
+		 * Filters out all HTML code except the allowed tags
+		 *
+		 * @param data
+		 * @return The input string converted to XHTML
+		 */
+		function filter( $data )
+		{
+			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+			$t = new Textfilter();
+			return( parent::filter( $t->xhtmlize( $data )));
+		}	
+	}
+?>
\ No newline at end of file

Modified: plog/trunk/class/file/file.class.php
===================================================================
--- plog/trunk/class/file/file.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/file/file.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -325,7 +325,16 @@
 			 
 			 return true;
 		 }
-
+		
+		 /**
+		  * Change the current directory
+		  *
+		  * @param dir
+		  */
+		 function chDir( $dir )
+		 {
+			 return( chdir( $dir ));
+		 }
 		 
 		 /**
 		  * returns a temporary filename in a pseudo-random manner

Modified: plog/trunk/class/gallery/dao/galleryresource.class.php
===================================================================
--- plog/trunk/class/gallery/dao/galleryresource.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/gallery/dao/galleryresource.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -399,15 +399,18 @@
 			if( $this->getThumbnailFormat() == THUMBNAIL_OUTPUT_FORMAT_SAME_AS_IMAGE )
 				$previewFile = $fileName;
 			else
-				$previewFile = str_replace( ".".$this->_getFileExtension(), ".".$this->getThumbnailFormat(), $fileName );
+				$previewFile = str_replace( ".".$this->getFileExtension(), ".".$this->getThumbnailFormat(), $fileName );
 
 			return $previewFile;
 		}
 		
 		/**
-		 * @private
+		 * Returns the file extension
+		 *
+		 * @param toLower Whether the extension should be returned in lower case, false by default
+		 * @return The file extension
 		 */
-		function _getFileExtension()
+		function getFileExtension( $toLower = false )
 		{
 			$fileName = $this->getFileName();
 			if(( $extPos = strrpos( $fileName, "." )) !== false ) {					
@@ -441,7 +444,7 @@
 			if( $this->getThumbnailFormat() == THUMBNAIL_OUTPUT_FORMAT_SAME_AS_IMAGE )
 				$previewFile = $fileName;
 			else
-				$previewFile = str_replace( ".".$this->_getFileExtension(), ".".$this->getThumbnailFormat(), $fileName );
+				$previewFile = str_replace( ".".$this->getFileExtension(), ".".$this->getThumbnailFormat(), $fileName );
 
 			return $previewFile;
 		}

Modified: plog/trunk/class/gallery/dao/galleryresources.class.php
===================================================================
--- plog/trunk/class/gallery/dao/galleryresources.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/gallery/dao/galleryresources.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -59,6 +59,7 @@
         "divx" => GALLERY_RESOURCE_VIDEO,
 		"rm" => GALLERY_RESOURCE_VIDEO,
 		"swf" => GALLERY_RESOURCE_VIDEO,
+		"flv" => GALLERY_RESOURCE_VIDEO,
 		"qt" => GALLERY_RESOURCE_VIDEO,
         "pdf" => GALLERY_RESOURCE_DOCUMENT,
         "zip" => GALLERY_RESOURCE_ZIP
@@ -437,6 +438,7 @@
             lt_include( PLOG_CLASS_PATH."class/gallery/getid3/getid3.php" );            
             $getId3 = new GetID3();
             $metadata = $getId3->analyze( $upload->getTmpName());
+
             // nifty helper method from the getid3 package
             getid3_lib::CopyTagsToComments($metadata);
 

Modified: plog/trunk/class/mail/emailservice.class.php
===================================================================
--- plog/trunk/class/mail/emailservice.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/mail/emailservice.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -95,6 +95,9 @@
             // create a phpmailer object
             $mail = new PHPMailer();
 
+			// need to set PluginDir if we use lt_include()
+			$mail->PluginDir  = PLOG_CLASS_PATH."class/mail/phpmailer/";
+
             // set a few fields
             $mail->ContentType  = $message->getMimeType();
             $mail->From     = $message->getFrom();

Copied: plog/trunk/class/misc/integritychecker.class.php (from rev 5487, plog/branches/lifetype-1.2/class/misc/integritychecker.class.php)
===================================================================
--- plog/trunk/class/misc/integritychecker.class.php	                        (rev 0)
+++ plog/trunk/class/misc/integritychecker.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,159 @@
+<?php
+
+	/**
+     * \ingroup Misc	
+	 *
+	 * This class is a bunch of helper methods that will calculate the MD5 of the files within
+	 * the given list of folders, generate and write a PHP array to disk and compare a reference
+	 * array with pre-calculated MD5 hashes of files against the current MD5 hashes of those files 
+	 * in disk.
+	 * 
+	 * This is not a general purpose class so if you're confused about its description
+	 * it probably is not what you're looking for.
+	 */
+	class IntegrityChecker
+	{
+		
+		/**
+		 * Given an array with folder paths, generate another associative array where the key is the path and file
+		 * name and the value is the MD5 hash of the contents of the file.
+		 *
+		 * @param directories Array containing the paths of the directories that should be checked. If no parameter is specified
+		 * it defaults to "class", "templates/admin", "templates/wizard", "templates/rss", "templates/summary", "templates/default",
+		 * all of them under the PLOG_CLASS_PATH base folder
+		 * @param recursive Whether to recursively process the given folders
+		 * @param includeDirs Determines whether the folder names and paths should be included in the output array, defaults to 'false'
+		 * @param ignore Array containing file patterns that will be ignored and not included in the output array
+		 * @return An associative array
+		 */
+		function generateMD5Folder( $directories = Array( "class", "templates/admin", "templates/wizard", "templates/rss", "templates/summary", "templates/default" ), $recursive = true, $includeDirs = false, $ignore = Array( "*.svn", ".DS_Store" )) 
+		{
+			$result = Array();
+			foreach( $directories as $directory ) {
+				$result = array_merge( $result, IntegrityChecker::directoryToMD5Array( $directory, $recursive, $includeDirs, $ignore ));
+			}
+			
+			return( $result );
+		}
+
+		/**
+		 * Generates an MD5 array, optinally recursively, of the given single folder. 
+		 *
+		 * @param directory
+		 * @param recursive
+		 * @param includeDirs
+		 * @param ignore
+		 * @return An associative array
+		 * @see IntegrityChecker::generateMD5Folder()
+		 */
+		function directoryToMD5Array( $directory, $recursive = true, $includeDirs = false, $ignore = Array( "*.svn" )) 
+		{
+			$array_items = array();
+			if ($handle = opendir($directory)) {
+				while (false !== ($file = readdir($handle))) {
+					if ($file != "." && $file != ".." && !IntegrityChecker::canIgnore( $file, $ignore )) {
+						if (is_dir($directory. "/" . $file)) {
+							if($recursive) {
+								$array_items = array_merge($array_items, IntegrityChecker::directoryToMD5Array($directory. "/" . $file, $recursive, $includeDirs, $ignore ));
+							}
+							if( $includeDirs ) {
+								$file = $directory . "/" . $file;
+								$array_items[preg_replace("/\/\//si", "/", $file)] = 0;
+							}
+						} 
+						else {
+							$file = $directory . "/" . $file;
+							$array_items[preg_replace("/\/\//si", "/", $file)] = md5(file_get_contents(preg_replace("/\/\//si", "/", $file)));
+						}
+					}
+				}
+				closedir($handle);
+			}
+			return $array_items;
+		}
+		
+		/**
+		 * @return Returns true if the given file matches any of the patterns in the $ignore array
+		 * @param file
+		 * @param ignore
+		 * @private
+		 */
+		function canIgnore( $file, $ignore )
+		{
+			lt_include( PLOG_CLASS_PATH."class/misc/glob.class.php" );			
+			
+			$result = false;
+			foreach( $ignore as $pattern ) {
+				if( Glob::myFnMatch( $pattern, $file )) {
+					$result = true;
+					break;					
+				}
+			}
+			
+			return( $result );
+		}
+		
+		/**
+		 * Writes the list of files and MD5 hashes to the destination file. If no destination file is given
+		 * PLOG_CLASS_PATH/install/files.properties.php is used
+		 *
+		 * @param folders Array containing the names of the folders to include
+		 * @param dest Name of the destination file
+		 */
+		function writeMD5ListToFile( $folders = Array( "class", "templates/admin", "templates/wizard", "templates/rss", "templates/summary", "templates/default" ), $dest = "" )
+		{
+			lt_include( PLOG_CLASS_PATH."class/file/file.class.php" );
+			
+			if( $dest == "" ) 
+				$dest = PLOG_CLASS_PATH."install/files.properties.php"; 
+			
+			$currentData = IntegrityChecker::generateMD5Folder( $folders );
+			
+			// open the file and write the headers
+			$file = new File( $dest );
+			$file->open( "w+" );
+			$file->write( "<?php\n" );
+			$file->write( "\$data = Array(\n");
+			
+			$line = 1;
+			foreach( $currentData as $f => $md5 ) {
+				$file->write( "\"$f\" => \"$md5\"");
+				if( $line < count($currentData ))
+					$file->write( "," );
+				$file->write( "\n" );
+				$line++;
+			}
+			
+			// write the footer and close the file
+			$file->write( ");\n");
+			$file->write( "?>" );
+			$file->close();
+			
+			return( true );
+		}
+		
+		/**
+		 * Given the $reference reference array and a list of folders, this method
+		 * will calculate the MD5 hashes of the given folders and compare them against the ones
+		 * in the reference array. 
+		 *
+		 * @param reference
+		 * @param folders
+		 * @return An associative array containing the name of the files whose MD5 hash does not match
+		 * the current one
+		 */
+		function checkIntegrity( $reference, $folders = Array( "class", "templates/admin", "templates/wizard", "templates/rss", "templates/summary", "templates/default" ) )
+		{
+			$currentData = IntegrityChecker::generateMD5Folder( $folders );
+			
+			foreach( $currentData as $file => $md5 ) {
+				if( isset( $reference[$file] )) {
+					if( $reference[$file] == $md5 )
+						unset( $reference[$file]);
+				}
+			}
+			
+			return( $reference );
+		}
+	}
+?>
\ No newline at end of file

Modified: plog/trunk/class/net/request.class.php
===================================================================
--- plog/trunk/class/net/request.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/net/request.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -57,12 +57,13 @@
 		 *
 		 * @param key
 		 * @param defaultValue
+		 * @param filterClass
 		 * @return the value
 		 */
-		function getValue( $key, $defaultValue = null )
+		function getValue( $key, $defaultValue = null, $filterClass = null )
 		{
 			// get the value from the parent
-			$value = parent::getValue( $key, $defaultValue );
+			$value = parent::getValue( $key, $defaultValue, $filterClass );
 			
 			// now if magic quotes are enabled and the input parameter is not an array
 			// and the feature has not been disabled, then strip the slashes

Modified: plog/trunk/class/net/xmlrpc/xmlrpcserver.class.php
===================================================================
--- plog/trunk/class/net/xmlrpc/xmlrpcserver.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/net/xmlrpc/xmlrpcserver.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -27,7 +27,7 @@
 		    if ($config->getValue("xmlrpc_api_enabled"))
 		    {
 				$this->IXR_Server(
-			    	    array (
+                    array (
 			        	"blogger.newPost"           => "this:newPost",
 			        	"blogger.getPost"           => "this:getPost",
 			        	"blogger.editPost"          => "this:editPost",
@@ -49,7 +49,7 @@
 			    	    ));
 			} 
 			else {
-				// xmlrpc_api disabled, no methods configured
+                    // xmlrpc_api disabled, no methods configured
 				$this->IXR_Server( Array ());
 		    }			
 		}
@@ -67,116 +67,120 @@
 	        $password   = $args[3];
 	        $content    = $args[4];
 	        $publish    = $args[5]; // true post&publish | false post only
-	        /*
+                /*
 	         int postid
-	        */
+                */
 
-	        // -mhe todo security
+                // -mhe todo security
 
 	        $userInfo = $users->getUserInfo( $username, $password );
 
-	        if ($userInfo) {
-		
-	            $blogInfo = $blogsG->getBlogInfo( $blogid );
-				if( !$blogInfo ) {
-					return new IXR_Error(-1, 'Error loading blog' );
-				}
-		
-				// check this user's permissions before proceeding
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "add_post" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}		
-		
-	            if ($publish) {
-	                $status = POST_STATUS_PUBLISHED;
-	            } 
-				else {
-	                $status = POST_STATUS_DRAFT;
-	            }
+	        if (!$userInfo) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
 
-	            // Get the default category
-	            $cats = $category->getBlogCategories($blogid);
+            if(!$blogId){
+                $blogs = $userInfo->getBlogs();
+                if(!$blogs){
+                    return new IXR_Error(-1, "This user doesn't have access to any blogs.");
+                }
+                $blogid = $blogs[0]->getId();
+            }
 
+            $blogInfo = $blogsG->getBlogInfo( $blogid );
+            if( !$blogInfo ) {
+                return new IXR_Error(-1, 'Error loading blog' );
+            }
+            
+				// check this user's permissions before proceeding
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "add_post" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }		
+            
+            if ($publish) {
+                $status = POST_STATUS_PUBLISHED;
+            } 
+            else {
+                $status = POST_STATUS_DRAFT;
+            }
+            
+	            // Get the default category
+            $cats = $category->getBlogCategories($blogid);
+            
 				// some protection again blogs without categories
-				if( !$cats ) {				
-					return new IXR_Error(-1, 'This blog does not have categories!');				
-				}
-
-	            foreach($cats as $cat) {
-	                $idCategory = $cat->getId();
+            if( !$cats ) {				
+                return new IXR_Error(-1, 'This blog does not have any categories!');
+            }
+            
+            foreach($cats as $cat) {
+                $idCategory = $cat->getId();
 	                // Stop here, we have a category
-	                break;
-	            }
+                break;
+            }
 
 				// ecto sends the topic as <title>blah blah</title>rest of the body
-				if( preg_match( "/<title>(.*)<\/title>(.*)/i", $content, $matches )) {
-					$title = $matches[1];
-					$content = $matches[2];
-				}
-				else {
-		            $dummy = explode("\n", $content);
-					if( count( $dummy ) == 1 ) {
-						$title = substr( $content, 0, 60 );
-					}
-					else {
-			            $title = $dummy[0];
-			            unset($dummy[0]);
-			            $content = implode("\n", $dummy);
-			            unset($dummy);
-					}
-				}
-
-	            $article = new Article(
-	                $title,
-	                $content, // text
-	                Array( $idCategory ), // catid
-	                $userInfo->getId(), // userid
-	                $blogid, // blogid
-	                $status,
-	                0, // numread
-	                Array( "comments_enabled" => true ) // enable comments
+            if( preg_match( "/<title>(.*)<\/title>(.*)/i", $content, $matches )) {
+                $title = $matches[1];
+                $content = $matches[2];
+            }
+            else {
+                $dummy = explode("\n", $content);
+                if( count( $dummy ) == 1 ) {
+                    $title = substr( $content, 0, 60 );
+                }
+                else {
+                    $title = $dummy[0];
+                    unset($dummy[0]);
+                    $content = implode("\n", $dummy);
+                    unset($dummy);
+                }
+            }
+            
+            $article = new Article(
+                $title,
+                $content, // text
+                Array( $idCategory ), // catid
+                $userInfo->getId(), // userid
+                $blogid, // blogid
+                $status,
+                0, // numread
+                Array( "comments_enabled" => true ) // enable comments
 	            );
-
-	            $article->setDate(date("YmdHis"));
-
+            
+            $article->setDate(date("YmdHis"));
+            
 	            // Get the plugin manager
-	            $plugMgr =& PluginManager::getPluginManager();
-	            $plugMgr->setBlogInfo( $blogInfo);
-	            $plugMgr->setUserInfo( $userInfo );
-	            $plugMgr->loadPlugins();
+            $plugMgr =& PluginManager::getPluginManager();
+            $plugMgr->setBlogInfo( $blogInfo);
+            $plugMgr->setUserInfo( $userInfo );
+            $plugMgr->loadPlugins();
 	            // Send the PRE_POST_POST_ADD message
-	            $plugMgr->notifyEvent( EVENT_PRE_POST_ADD, Array( "article" => &$article ));            
-
-	            $postid = $articles->addArticle($article);
-
-	            if ($postid != 0) {
-	                // The post was successful
-	                // Send the EVENT_POST_POST_ADD messages to the plugins
-	                $plugMgr->notifyEvent( EVENT_POST_POST_ADD, Array( "article" => &$article ));               
-	                CacheControl::resetBlogCache( $blogid );
-
-	                $blogSettings = $blogInfo->getSettings();
-
-	                // Add article notifcations if this is specified by the default setting.
-	                if ($blogSettings->getValue( "default_send_notification" ))
-	                {
-	                    lt_include( PLOG_CLASS_PATH."class/dao/articlenotifications.class.php" );
-
-	                    $artNotifications = new ArticleNotifications();
-	                    $artNotifications->addNotification( $postid, $blogid, $userInfo->getId());
-	                }
-
-					$this->setResponseCharset( $blogInfo );
-
-	                return sprintf( "%d", $postid );
-	            } 
-	            else {
-	                return new IXR_Error(-1, 'Internal error occured creating your post!');
-	            }
-	        } 
-	        else {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            $plugMgr->notifyEvent( EVENT_PRE_POST_ADD, Array( "article" => &$article ));
+            
+            $postid = $articles->addArticle($article);
+            
+            if ($postid == 0) {
+                return new IXR_Error(-1, 'Internal error occurred while creating your post!');
+            }
+                // The post was successful
+                // Send the EVENT_POST_POST_ADD messages to the plugins
+            $plugMgr->notifyEvent( EVENT_POST_POST_ADD, Array( "article" => &$article ));
+            CacheControl::resetBlogCache( $blogid );
+            
+            $blogSettings = $blogInfo->getSettings();
+            
+                // Add article notifcations if this is specified by the default setting.
+            if ($blogSettings->getValue( "default_send_notification" ))
+            {
+                lt_include( PLOG_CLASS_PATH."class/dao/articlenotifications.class.php" );
+                
+                $artNotifications = new ArticleNotifications();
+                $artNotifications->addNotification( $postid, $blogid, $userInfo->getId());
+            }
+            
+            $this->setResponseCharset( $blogInfo );
+            
+            return sprintf( "%d", $postid );
 		}
 		
         function metaWeblogNewPost($args)
@@ -191,175 +195,169 @@
             $password   = $args[2];
             $content    = $args[3];
             $publish    = $args[4]; // true post&publish | false post only
-            /*
+                /*
              int postid
-            */
+                */
     
             $userInfo = $users->getUserInfo( $username, $password);
     
-            if( $userInfo ) {
-	
-                if ($publish) {
-                    $status = POST_STATUS_PUBLISHED;
-                } 
-				else {
-                    $status = POST_STATUS_DRAFT;
-                }
+            if( !$userInfo ) {
+                return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }	
+            if ($publish) {
+                $status = POST_STATUS_PUBLISHED;
+            } 
+            else {
+                $status = POST_STATUS_DRAFT;
+            }
 
-                $blogInfo = $blogsG->getBlogInfo( $blogid );
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "add_post" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}
+            $blogInfo = $blogsG->getBlogInfo( $blogid );
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "add_post" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }
                 
-                $title = $content["title"];
+            $title = $content["title"];
                 
                 // Check to see if the MovableType extnensions have been added
-				$mt_excerpt = "";
-				$mt_text_more = "";
-				$mt_allow_comments = "";
-				if( isset( $content["mt_excerpt"] ))
-	            	$mt_excerpt = $content["mt_excerpt"]; 
-				if( isset( $content["mt_text_more"] ))
-	            	$mt_text_more = $content["mt_text_more"]; 
-	            if( isset( $content["mt_allow_comments"] ))
-					$mt_allow_comments = $content["mt_allow_comments"]; 
+            $mt_excerpt = "";
+            $mt_text_more = "";
+            $mt_allow_comments = "";
+            if( isset( $content["mt_excerpt"] ))
+                $mt_excerpt = $content["mt_excerpt"]; 
+            if( isset( $content["mt_text_more"] ))
+                $mt_text_more = $content["mt_text_more"]; 
+            if( isset( $content["mt_allow_comments"] ))
+                $mt_allow_comments = $content["mt_allow_comments"]; 
                 
-                if ( $mt_text_more != NULL && trim($mt_text_more != ""))
-                {
-                    $body = $content["description"] . POST_EXTENDED_TEXT_MODIFIER . $mt_text_more;
-                }
-                else
-                {
-                    $body = $content["description"];
-                }
-				$catList = NULL;
-				if( isset( $content["categories"] ))
-                	$catList = $content["categories"];
+            if ( $mt_text_more != NULL && trim($mt_text_more != ""))
+            {
+                $body = $content["description"] . POST_EXTENDED_TEXT_MODIFIER . $mt_text_more;
+            }
+            else
+            {
+                $body = $content["description"];
+            }
+            $catList = NULL;
+            if( isset( $content["categories"] ))
+                $catList = $content["categories"];
 
-                $categoryName = NULL;
+            $categoryName = NULL;
     
                 //
                 // :KLUDGE:
                 // not exactly the smartest and fastest bit of code ever but it seems to work :-)
                 //
-                $categories = Array();
-                $cats = $category->getBlogCategories($blogid);            
+            $categories = Array();
+            $cats = $category->getBlogCategories($blogid);            
     
                 // some protection again blogs without categories
-                if( !$cats ) {
-                    return new IXR_Error(-1, 'This blog does not have categories!');				
-                }
+            if( !$cats ) {
+                return new IXR_Error(-1, 'This blog does not have any categories!');
+            }
     
-                if ( $catList != NULL )
-                {
-                    foreach( $catList as $categoryName ) {
-                        foreach( $cats as $blogCategory ) {
-                            $categoryName = trim($categoryName);
-                            if ( strcmp( $categoryName, $blogCategory->getName()) == 0 )
-                            {
-                                $categories[] = $blogCategory->getId();
-                            }
+            if ( $catList != NULL )
+            {
+                foreach( $catList as $categoryName ) {
+                    foreach( $cats as $blogCategory ) {
+                        $categoryName = trim($categoryName);
+                        if ( strcmp( $categoryName, $blogCategory->getName()) == 0 )
+                        {
+                            $categories[] = $blogCategory->getId();
                         }
                     }
                 }
-                else {
+            }
+            else {
                     // if no category, let's pick a random one
-                    $blogCategory = array_pop( $cats );
-                    $categories[] = $blogCategory->getId();
-                }
+                $blogCategory = array_pop( $cats );
+                $categories[] = $blogCategory->getId();
+            }
     
-                $userInfo = $users->getUserInfoFromUsername( $username );
+            $userInfo = $users->getUserInfoFromUsername( $username );
                 
                 // Initially assume that comments are enabled
-                $enableComments = true;
+            $enableComments = true;
                 
                 // Was a setting specified in the MovableType fields?
-                if ($mt_allow_comments != NULL)
-                {
-                    $enableComments = $mt_allow_comments;
-                }
+            if ($mt_allow_comments != NULL)
+            {
+                $enableComments = $mt_allow_comments;
+            }
                 
                 
-                $article = new Article(
-                    $title,
-                    $body, // text
-                    $categories, // catid
-                    $userInfo->getId(), // userid
-                    $blogid, // blogid
-                    $status,
-                    0, // numread
-                    Array( "comments_enabled" => $enableComments ) 
+            $article = new Article(
+                $title,
+                $body, // text
+                $categories, // catid
+                $userInfo->getId(), // userid
+                $blogid, // blogid
+                $status,
+                0, // numread
+                Array( "comments_enabled" => $enableComments ) 
                 );
     
-				$dateCreated = NULL;
-				if( isset( $content['dateCreated'] ))
-               		$dateCreated = $content['dateCreated'];
+            $dateCreated = NULL;
+            if( isset( $content['dateCreated'] ))
+                $dateCreated = $content['dateCreated'];
                
-               // there must be a bug in the xmlrpc library, we're getting an object in $dateCreated
-               // that does not have a type or anyhting, but it still is an object... kinda weird. Anyway,
-               // clients like ecto do not allow to change the time an article is posted so this is not 
-               // too annoying, *yet*
-                if (!empty($dateCreated))
-                {
-                   // Convert the UTC time to local time, since articleDate is in local time
-                   $ar = localtime ( $dateCreated->getTimestamp() );
-                   $ar[5] += 1900; $ar[4]++;
-                   $localTimeStamp = gmmktime ( $ar[2], $ar[1], $ar[0], $ar[4], $ar[3], $ar[5], $ar[8] );
-                   $articleDate = date("YmdHis", $localTimeStamp);
-                } else
-                {
-                   $articleDate = date("YmdHis");
-                }
+                // there must be a bug in the xmlrpc library, we're getting an object in $dateCreated
+                // that does not have a type or anyhting, but it still is an object... kinda weird. Anyway,
+                // clients like ecto do not allow to change the time an article is posted so this is not 
+                // too annoying, *yet*
+            if (!empty($dateCreated))
+            {
+                    // Convert the UTC time to local time, since articleDate is in local time
+                $ar = localtime ( $dateCreated->getTimestamp() );
+                $ar[5] += 1900; $ar[4]++;
+                $localTimeStamp = gmmktime ( $ar[2], $ar[1], $ar[0], $ar[4], $ar[3], $ar[5], $ar[8] );
+                $articleDate = date("YmdHis", $localTimeStamp);
+            } else
+            {
+                $articleDate = date("YmdHis");
+            }
                 
-                $article->setDate($articleDate);
+            $article->setDate($articleDate);
                 
                 // Get the plugin manager
-                $plugMgr =& PluginManager::getPluginManager();
-                $plugMgr->setBlogInfo( $blogInfo );
-                $plugMgr->setUserInfo( $userInfo );
-                $plugMgr->loadPlugins();
+            $plugMgr =& PluginManager::getPluginManager();
+            $plugMgr->setBlogInfo( $blogInfo );
+            $plugMgr->setUserInfo( $userInfo );
+            $plugMgr->loadPlugins();
                 // Send the PRE_POST_POST_ADD message
-                $plugMgr->notifyEvent( EVENT_PRE_POST_ADD, Array( "article" => &$article ));            
+            $plugMgr->notifyEvent( EVENT_PRE_POST_ADD, Array( "article" => &$article ));            
                 
-                $postid = $articles->addArticle($article);
-                if ($postid != 0)
-                {
-                    // The post was successful
+            $postid = $articles->addArticle($article);
+            if ($postid == 0){
+                return new IXR_Error(-1, 'Internal error occurred while creating your post!');
+            }
+                // The post was successful
                     
-                    // Send the EVENT_POST_POST_ADD messages to the plugins
-                    $plugMgr->notifyEvent( EVENT_POST_POST_ADD, Array( "article" => &$article ));
+                // Send the EVENT_POST_POST_ADD messages to the plugins
+            $plugMgr->notifyEvent( EVENT_POST_POST_ADD, Array( "article" => &$article ));
                     
-                    CacheControl::resetBlogCache( $blogid );
+            CacheControl::resetBlogCache( $blogid );
                     
-                    $blogSettings = $blogInfo->getSettings();
+            $blogSettings = $blogInfo->getSettings();
                     
-                    // Add article notifcations if this is specified by the default setting.
-                    if ($blogSettings->getValue( "default_send_notification" ))
-                    {
-                        lt_include( PLOG_CLASS_PATH."class/dao/articlenotifications.class.php" );
+                // Add article notifcations if this is specified by the default setting.
+            if ($blogSettings->getValue( "default_send_notification" ))
+            {
+                lt_include( PLOG_CLASS_PATH."class/dao/articlenotifications.class.php" );
     
-                        $artNotifications = new ArticleNotifications();
-                        $artNotifications->addNotification( $postid, $blogid, $userInfo->getId());
-                    }
+                $artNotifications = new ArticleNotifications();
+                $artNotifications->addNotification( $postid, $blogid, $userInfo->getId());
+            }
 
- 					$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
                    
-                    return sprintf( "%d", $postid );
-                } else
-                {
-                return new IXR_Error(-1, 'Internal error occured creating your post!');
-                }
-            } else
-            {
-                return new IXR_Error(-1, 'You did not provide the correct password');
-            }
+            return sprintf( "%d", $postid );
         }
 
 	
-		/**
-		 * @private
-		 * sets the character set for responses
-		 */
+            /**
+             * @private
+             * sets the character set for responses
+             */
 		function setResponseCharset( $blog )
 		{
 			$locale = $blog->getLocale();
@@ -367,13 +365,13 @@
 		}
 			
 
-		/** 
-		 * NOTE: this method does not perform permission checking since if it did,
-		 * it would be impossible to post: no categories would be available if the
-	     * view_categories is not available. This is in line with the browser-based UI,
-	     * there it is not necessary to have this permission in order to post new articles,
-		 * only add_post is needed
-		 */
+            /** 
+             * NOTE: this method does not perform permission checking since if it did,
+             * it would be impossible to post: no categories would be available if the
+             * view_categories is not available. This is in line with the browser-based UI,
+             * there it is not necessary to have this permission in order to post new articles,
+             * only add_post is needed
+             */
 	    function metaWeblogGetCategories($args)
 	    {
 			$users = new Users();
@@ -386,37 +384,34 @@
 
 	        $auth = $users->authenticateUser( $username, $password );
 
-	        if ($auth)
-	        {
-                $blogInfo = $blogsG->getBlogInfo( $blogid );
-				if( !$blogInfo ) {
-					return new IXR_Error(-1, 'Incorrect blog id');
-				}
-		
-	            $cats = $category->getBlogCategories($blogid);
-				$url = $blogInfo->getBlogRequestGenerator();
-	            $ret = array();	
-	            foreach($cats as $cat)
-	            {
-	                $dummy                   = array();
-	                $dummy["description"]    = $cat->getDescription();
-
+	        if (!$auth){
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            $blogInfo = $blogsG->getBlogInfo( $blogid );
+            if( !$blogInfo ) {
+                return new IXR_Error(-1, 'Incorrect blog id');
+            }
+            
+            $cats = $category->getBlogCategories($blogid);
+            $url = $blogInfo->getBlogRequestGenerator();
+            $ret = array();	
+            foreach($cats as $cat)
+            {
+                $dummy                   = array();
+                $dummy["description"]    = $cat->getDescription();
+                
 	                // disable the generation of xhtml content or else the IXR_XMLRPC library will
 	                // escape things twice!
-	                $url->setXHTML( false );
-
-	                $dummy["htmlUrl"]        = $url->categoryLink( $cat );
-	                $dummy["rssUrl"]         = "http://";
-	                $ret[$cat->getName()]    = $dummy;
-	            }
-	
-				$this->setResponseCharset( $blogInfo );
-	
-	            return $ret;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+                $url->setXHTML( false );
+                
+                $dummy["htmlUrl"]        = $url->categoryLink( $cat );
+                $dummy["rssUrl"]         = "http://";
+                $ret[$cat->getName()]    = $dummy;
+            }
+            
+            $this->setResponseCharset( $blogInfo );
+            
+            return $ret;
 	    }
 
 	    function mtGetCategoryList($args)
@@ -431,32 +426,29 @@
 
 	        $auth = $users->authenticateUser( $username, $password );
 
-	        if ($auth)
-	        {
-                $blogInfo = $blogsG->getBlogInfo( $blogid );
-				if( !$blogInfo ) {
-					return new IXR_Error(-1, 'Incorrect blog id');
-				}
-		
-	            $cats = $category->getBlogCategories($blogid);
-				$url = $blogInfo->getBlogRequestGenerator();
-	            $ret = array();	
-	            foreach($cats as $cat)
-	            {
-	                $dummy                   = array();
-	                $dummy["categoryId"]     = $cat->getId();
-	                $dummy["categoryName"]   = $cat->getName();
-
-	                $ret[]                   = $dummy;
-	            }
-	
-				$this->setResponseCharset( $blogInfo );
-	
-	            return $ret;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+	        if (!$auth){
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            $blogInfo = $blogsG->getBlogInfo( $blogid );
+            if( !$blogInfo ) {
+                return new IXR_Error(-1, 'Incorrect blog id');
+            }
+            
+            $cats = $category->getBlogCategories($blogid);
+            $url = $blogInfo->getBlogRequestGenerator();
+            $ret = array();	
+            foreach($cats as $cat)
+            {
+                $dummy                   = array();
+                $dummy["categoryId"]     = $cat->getId();
+                $dummy["categoryName"]   = $cat->getName();
+                
+                $ret[]                   = $dummy;
+            }
+            
+            $this->setResponseCharset( $blogInfo );
+            
+            return $ret;
 	    }
 
 	    function getPost($args)
@@ -479,38 +471,36 @@
 	        */
 
 	        $userInfo = $users->getUserInfo($username,$password);
-	        if( $userInfo ) {
-	            $item = $articles->getBlogArticle($postid,
-	                                                 -1, // blogId
-	                                                 true, // includeHiddenFields
-	                                                 -1, // date
-	                                                 -1, // categoryId
-	                                                 $userInfo->getId());
-	            $dateObject = $item->getDateObject();
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }                
+            $item = $articles->getBlogArticle($postid,
+                                              -1, // blogId
+                                              true, // includeHiddenFields
+                                              -1, // date
+                                              -1, // categoryId
+                                              $userInfo->getId());
+            $dateObject = $item->getDateObject();
 	            // Get the unix time stamp 
-	            $time = $dateObject->getTimestamp(DATE_FORMAT_UNIXTIME);
-
-	            $dummy                  = array();
-				$userInfo               = $item->getUserInfo();
-	            $dummy["userid"]        = $userInfo->getId();
-	            $dummy["dateCreated"]   = new IXR_Date($time);
-	            $dummy["content"]       = $item->getTopic() . "\r\n" . $item->getText(false) . " ";
-	            $dummy["postid"]        = $item->getId();
-
-				$blogInfo = $item->getBlogInfo();
-				
+            $time = $dateObject->getTimestamp(DATE_FORMAT_UNIXTIME);
+            
+            $dummy                  = array();
+            $userInfo               = $item->getUserInfo();
+            $dummy["userid"]        = $userInfo->getId();
+            $dummy["dateCreated"]   = new IXR_Date($time);
+            $dummy["content"]       = $item->getTopic() . "\r\n" . $item->getText(false) . " ";
+            $dummy["postid"]        = $item->getId();
+            
+            $blogInfo = $item->getBlogInfo();
+            
 				// check the permissions
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}				
-
-				$this->setResponseCharset( $blogInfo );
-
-	            return $dummy;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }				
+            
+            $this->setResponseCharset( $blogInfo );
+            
+            return $dummy;
 	    }
 
 	    function metaWeblogGetPost($args)
@@ -524,71 +514,69 @@
 
 	        $userInfo = $users->getUserInfo( $username, $password );
 
-	        if( $userInfo )
-	        {
-	            lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+	        if( !$userInfo ){
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
 
-	            $item = $articles->getBlogArticle($postid,
-	                                              -1, // blogId
-	                                              true, // includeHiddenFields
-	                                              -1, // date
-	                                              -1, // categoryId
-	                                              $userInfo->getId());
-	
+            lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+            
+            $item = $articles->getBlogArticle($postid,
+                                              -1, // blogId
+                                              true, // includeHiddenFields
+                                              -1, // date
+                                              -1, // categoryId
+                                              $userInfo->getId());
+            
 				// check if the article is valid
-				if( !$item ) {
-					return( new IXR_Error(-1, 'The article is not valid' ));
-				}
-				
+            if( !$item ) {
+                return( new IXR_Error(-1, 'The article is not valid' ));
+            }
+            
 				// check permissions
-	            $blogInfo = $item->getBlogInfo();				
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
-					return( new IXR_Error(-1, 'This user does not have enough permissions' ));
-				}	
-
-	            $dateObject = $item->getDateObject();
+            $blogInfo = $item->getBlogInfo();				
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
+                return( new IXR_Error(-1, 'This user does not have enough permissions' ));
+            }	
+            
+            $dateObject = $item->getDateObject();
 	            // Get the unix time stamp 
-	            $time = $dateObject->getTimestamp(DATE_FORMAT_UNIXTIME);
+            $time = $dateObject->getTimestamp(DATE_FORMAT_UNIXTIME);
+            
+            $articleCat = $item->getCategory();
+            
+            $blogId = $item->getBlog();
+            $blogs = new Blogs();
+            $url = $blogInfo->getBlogRequestGenerator();
+            
+            $dummy                  = array();
+            $userInfo               = $item->getUserInfo();
+            $dummy["userid"]        = $userInfo->getId();
+            $dummy["dateCreated"]   = new IXR_Date($time);
+            $dummy["title"]         = $item->getTopic();
+            
+            $blogSettings = $blogInfo->getSettings();
+            
+            $dummy["description"]   = $item->getIntroText(); 
+            
+            $dummy["postid"]        = $item->getId();
+            
+            $dummy["link"]          = $url->postLink( $item );
+            $dummy["permaLink"]     = $url->postPermalink( $item );
 
-	            $articleCat = $item->getCategory();
+            $catArray               = array();
+            foreach( $item->getCategories() as $category ) {
+                $catArray[]             = $category->getName();
+            }
+            $dummy["categories"]      = $catArray;
 
-	            $blogId = $item->getBlog();
-	            $blogs = new Blogs();
-	            $url = $blogInfo->getBlogRequestGenerator();
-
-	            $dummy                  = array();
-				$userInfo               = $item->getUserInfo();
-	            $dummy["userid"]        = $userInfo->getId();
-	            $dummy["dateCreated"]   = new IXR_Date($time);
-	            $dummy["title"]         = $item->getTopic();
-
-                $blogSettings = $blogInfo->getSettings();
-                
-                $dummy["description"]   = $item->getIntroText(); 
-
-	            $dummy["postid"]        = $item->getId();
-
-	            $dummy["link"]          = $url->postLink( $item );
-	            $dummy["permaLink"]     = $url->postPermalink( $item );
-
-	            $catArray               = array();
-	            foreach( $item->getCategories() as $category ) {
-	                $catArray[]             = $category->getName();
-	            }
-	            $dummy["categories"]      = $catArray;
-
 	            // The MovableType Extensions
-	            $dummy["mt_text_more"]       = $item->getExtendedText(); 
-	            $dummy["mt_allow_comments"]  = $item->getCommentsEnabled(); 
+            $dummy["mt_text_more"]       = $item->getExtendedText(); 
+            $dummy["mt_allow_comments"]  = $item->getCommentsEnabled(); 
 	            
 	
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 	
-	            return $dummy;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return $dummy;
 	    }
 
 	    function editPost($args)
@@ -609,71 +597,69 @@
 	        */
 
 	        $userInfo = $users->getUserInfo( $username, $password );
-	        if( $userInfo ) {
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
 
 	            // fake topic
-	            $dummy = explode("\n", $content);
-				if( count($dummy) == 1 ) {
-					$title = substr( $content, 0, 60 );
-				}
-				else {
-		            $title = $dummy[0];
-		            unset($dummy[0]);
-		            $content = implode("\n", $dummy);
-		            unset($dummy);
-				}
+            $dummy = explode("\n", $content);
+            if( count($dummy) == 1 ) {
+                $title = substr( $content, 0, 60 );
+            }
+            else {
+                $title = $dummy[0];
+                unset($dummy[0]);
+                $content = implode("\n", $dummy);
+                unset($dummy);
+            }
 
-	            $article = $articles->getBlogArticle($postid,
-	                                                 -1, // blogId
-	                                                 true, // includeHiddenFields
-	                                                 -1, // date
-	                                                 -1, // categoryId
-	                                                 $userInfo->getId());
+            $article = $articles->getBlogArticle($postid,
+                                                 -1, // blogId
+                                                 true, // includeHiddenFields
+                                                 -1, // date
+                                                 -1, // categoryId
+                                                 $userInfo->getId());
 	
-				if( !$article ) {
-					return( new IXR_Error(-1, 'The article is not correct' ));
-				}
+            if( !$article ) {
+                return( new IXR_Error(-1, 'The article id is not correct' ));
+            }
 				
-				$blogInfo = $article->getBlogInfo();				
+            $blogInfo = $article->getBlogInfo();				
 				
 				// check the permissions
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}				
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }				
 	
-	            if ($publish) {
-	                $status = POST_STATUS_PUBLISHED;
-	            } 
-				else {
-	                $status = POST_STATUS_DRAFT;
-	            }
+            if ($publish) {
+                $status = POST_STATUS_PUBLISHED;
+            } 
+            else {
+                $status = POST_STATUS_DRAFT;
+            }
 	
-	            $article->setText($content);
-	            $article->setTopic($title);
-	            $article->setStatus($status);
+            $article->setText($content);
+            $article->setTopic($title);
+            $article->setStatus($status);
 
 				// Get the plugin manager
-				$plugMgr =& PluginManager::getPluginManager();
-				$plugMgr->setBlogInfo( $blogInfo );
-				$plugMgr->setUserInfo( $userInfo );
-				$plugMgr->loadPlugins();
+            $plugMgr =& PluginManager::getPluginManager();
+            $plugMgr->setBlogInfo( $blogInfo );
+            $plugMgr->setUserInfo( $userInfo );
+            $plugMgr->loadPlugins();
 				// Send the EVENT_PRE_POST_UPDATE message
-				$plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));            
+            $plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));            
 
-	            $articles->updateArticle($article);
+            $articles->updateArticle($article);
 
 	            // Send the EVENT_POST_POST_UPDATE messages to the plugins
-	            $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));				
+            $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));				
 
-	    		CacheControl::resetBlogCache( $blogInfo->getId());
+            CacheControl::resetBlogCache( $blogInfo->getId());
 
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 
-	            return true;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return true;
 	    }
 
 	    function metaWeblogEditPost($args)
@@ -693,107 +679,104 @@
 	        */
 
 	        $userInfo = $users->getUserInfo( $username, $password );
-	        if( $userInfo ) {
-		
-	            if ($publish) {
-	                $status = POST_STATUS_PUBLISHED;
-	            } 
-				else {
-	                $status = POST_STATUS_DRAFT;
-	            }            
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            if ($publish) {
+                $status = POST_STATUS_PUBLISHED;
+            } 
+            else {
+                $status = POST_STATUS_DRAFT;
+            }            
 
-                $title = $content["title"];
+            $title = $content["title"];
                 
                 // Check to see if the MovableType extnensions have been added
-	            $mt_excerpt = $content["mt_excerpt"]; 
-	            $mt_text_more = $content["mt_text_more"]; 
-	            $mt_allow_comments = $content["mt_allow_comments"]; 
+            $mt_excerpt = $content["mt_excerpt"]; 
+            $mt_text_more = $content["mt_text_more"]; 
+            $mt_allow_comments = $content["mt_allow_comments"]; 
                 
-                if ( $mt_text_more != NULL && trim($mt_text_more) != "") {
-                    $body = $content["description"] . POST_EXTENDED_TEXT_MODIFIER . $mt_text_more;
-                }
-                else {
-                    $body = $content["description"];
-                }
+            if ( $mt_text_more != NULL && trim($mt_text_more) != "") {
+                $body = $content["description"] . POST_EXTENDED_TEXT_MODIFIER . $mt_text_more;
+            }
+            else {
+                $body = $content["description"];
+            }
 
-	            $article = $articles->getBlogArticle($postid,
-	                                                 -1, // blogId
-	                                                 true, // includeHiddenFields
-	                                                 -1, // date
-	                                                 -1, // categoryId
-	                                                 $userInfo->getId());
+            $article = $articles->getBlogArticle($postid,
+                                                 -1, // blogId
+                                                 true, // includeHiddenFields
+                                                 -1, // date
+                                                 -1, // categoryId
+                                                 $userInfo->getId());
 	
 				// check that the article is valid
-				if( !$article ) {
-					return( new IXR_Error(-1, 'Incorrect article' ));					
-				}
+            if( !$article ) {
+                return( new IXR_Error(-1, 'Incorrect article id' ));					
+            }
 				
 				// see that the user can update articles
-	            $blogid = $article->getBlog();
-				$blogInfo = $article->getBlogInfo();
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
-					return( new IXR_Error(-1, 'This user does not have enough permissions' ));
-				}
+            $blogid = $article->getBlog();
+            $blogInfo = $article->getBlogInfo();
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
+                return( new IXR_Error(-1, 'This user does not have enough permissions' ));
+            }
 
-                $catList = NULL;
-				if ( array_key_exists( "categories",  $content ) ) {
-                    $catList = $content["categories"];
-	            }
+            $catList = NULL;
+            if ( array_key_exists( "categories",  $content ) ) {
+                $catList = $content["categories"];
+            }
 	            //
 	            // :KLUDGE:
 	            // not exactly the smartest and fastest bit of code ever but it seems to work :-)
 	            //
-	            $categories = Array();
-	            $cats = $category->getBlogCategories($blogid);
-	            if ( $catList != NULL )
-	            {
-	                foreach( $catList as $categoryName ) {
-	                    foreach( $cats as $blogCategory ) {
-	                        $categoryName = trim($categoryName);
-	                        if ( strcmp( $categoryName, $blogCategory->getName()) == 0 )
-	                        {
-	                            $categories[] = $blogCategory->getId();
-	                        }
-	                    }
-	                }
-                    $article->setCategoryIds( $categories );
-	            }
-	            else if ( count($article->getCategories()) == 0) {
+            $categories = Array();
+            $cats = $category->getBlogCategories($blogid);
+            if ( $catList != NULL )
+            {
+                foreach( $catList as $categoryName ) {
+                    foreach( $cats as $blogCategory ) {
+                        $categoryName = trim($categoryName);
+                        if ( strcmp( $categoryName, $blogCategory->getName()) == 0 )
+                        {
+                            $categories[] = $blogCategory->getId();
+                        }
+                    }
+                }
+                $article->setCategoryIds( $categories );
+            }
+            else if ( count($article->getCategories()) == 0) {
                     // Only assign a new category if there isn't one   
                     
 	                // if no category, let's pick a random one
-	                $blogCategory = array_pop( $cats );
-	                $categories[] = $blogCategory->getId();
+                $blogCategory = array_pop( $cats );
+                $categories[] = $blogCategory->getId();
 	                
-                    $article->setCategoryIds( $categories );
-	            }
+                $article->setCategoryIds( $categories );
+            }
 
-	            $article->setText($body);
-	            $article->setTopic($title);
-	            $article->setStatus($status);
+            $article->setText($body);
+            $article->setTopic($title);
+            $article->setStatus($status);
 
 				// Get the plugin manager
-				$plugMgr =& PluginManager::getPluginManager();
-				$plugMgr->setBlogInfo( $blogInfo );
-				$plugMgr->setUserInfo( $userInfo );
-				$plugMgr->loadPlugins();
+            $plugMgr =& PluginManager::getPluginManager();
+            $plugMgr->setBlogInfo( $blogInfo );
+            $plugMgr->setUserInfo( $userInfo );
+            $plugMgr->loadPlugins();
 				// Send the EVENT_PRE_POST_UPDATE message
-				$plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));            
+            $plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));            
 
-	            $articles->updateArticle($article);
+            $articles->updateArticle($article);
 
 	            // Send the EVENT_POST_POST_UPDATE messages to the plugins
-	            $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));				
+            $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));				
 
-	    		CacheControl::resetBlogCache( $blogid );            
+            CacheControl::resetBlogCache( $blogid );            
 	
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 
-	            return true;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return true;
 	    }
 
 	    function deletePost($args)
@@ -809,51 +792,49 @@
 	        $publish    = $args[4];
 
 	        $userInfo = $users->getUserInfo( $username, $password );
-	        if( $userInfo ) {
-	            $article = $articles->getBlogArticle($postid,
-	                                                 -1, // blogId
-	                                                 true, // includeHiddenFields
-	                                                 -1, // date
-	                                                 -1, // categoryId
-	                                                 $userInfo->getId());
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            $article = $articles->getBlogArticle($postid,
+                                                 -1, // blogId
+                                                 true, // includeHiddenFields
+                                                 -1, // date
+                                                 -1, // categoryId
+                                                 $userInfo->getId());
 	
 				// check if the article that was pulled is valid at all
-				if( !$article ) {
-					return( new IXR_Error(-1, 'The article is not correct' ));
-				}
+            if( !$article ) {
+                return( new IXR_Error(-1, 'The article id is not correct' ));
+            }
 				
 				// check the permissions
-				$blogInfo = $article->getBlogInfo();
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
-					return( new IXR_Error(-1, 'This user does not have enough permissions' ));
-				}				
+            $blogInfo = $article->getBlogInfo();
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
+                return( new IXR_Error(-1, 'This user does not have enough permissions' ));
+            }				
 
 				// Get the plugin manager
-				$plugMgr =& PluginManager::getPluginManager();
-				$plugMgr->setBlogInfo( $blogInfo );
-				$plugMgr->setUserInfo( $userInfo );
-				$plugMgr->loadPlugins();
+            $plugMgr =& PluginManager::getPluginManager();
+            $plugMgr->setBlogInfo( $blogInfo );
+            $plugMgr->setUserInfo( $userInfo );
+            $plugMgr->loadPlugins();
 				// Send the EVENT_PRE_POST_DELETE message
-				$plugMgr->notifyEvent( EVENT_PRE_POST_DELETE, Array( "article" => &$article ));            
+            $plugMgr->notifyEvent( EVENT_PRE_POST_DELETE, Array( "article" => &$article ));            
 
-	            $articles->deleteArticle(
-	                $postid,
-	                $userInfo->getId(), // userid
-	                $article->getBlog()
+            $articles->deleteArticle(
+                $postid,
+                $userInfo->getId(), // userid
+                $article->getBlog()
 	            );
 
 	            // Send the EVENT_POST_POST_DELETE messages to the plugins
-	            $plugMgr->notifyEvent( EVENT_POST_POST_DELETE, Array( "article" => &$article ));				
+            $plugMgr->notifyEvent( EVENT_POST_POST_DELETE, Array( "article" => &$article ));				
 
-	    		CacheControl::resetBlogCache( $blogInfo->getId());
+            CacheControl::resetBlogCache( $blogInfo->getId());
 
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 
-	            return true;
-	        } 
-			else {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return true;
 	    }
 
 	    function getRecentPosts($args)
@@ -875,49 +856,46 @@
 	        $number     = $args[4];
 
 	        $userInfo = $users->getUserInfo($username,$password);
-	        if( $userInfo )
-	        {
-				$blogInfo = $blogs->getBlogInfo( $blogid );
-				if( !$blogInfo ) {
-					return new IXR_Error(-1, 'Incorrect blog id');					
-				}
+	        if( !$userInfo ){
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            $blogInfo = $blogs->getBlogInfo( $blogid );
+            if( !$blogInfo ) {
+                return new IXR_Error(-1, 'Incorrect blog id');					
+            }
 				
 				// check this user's permissions
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }
 			
-	            $ret = array();
-	            $list = $articles->getBlogArticles(
-	                $blogid,
-	                -1, // date
-	                $number,  // amount
-	                -1  // any category id
+            $ret = array();
+            $list = $articles->getBlogArticles(
+                $blogid,
+                -1, // date
+                $number,  // amount
+                -1  // any category id
 	            );
 	
-	            foreach( $list as $item ) {
-	                $dateObject = $item->getDateObject();
-	                lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+            foreach( $list as $item ) {
+                $dateObject = $item->getDateObject();
+                lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
 	                // Get the unix time stamp 
-	                $time = $dateObject->getTimestamp(DATE_FORMAT_UNIXTIME);
+                $time = $dateObject->getTimestamp(DATE_FORMAT_UNIXTIME);
 
-	                $dummy                  = array();
-					$userInfo               = $item->getUserInfo();
-	                $dummy["userid"]        = $userInfo->getId();
-	                $dummy["dateCreated"]   = new IXR_Date($time);
-	                $dummy["content"]       = $item->getTopic() . "\r\n" . $item->getText(false) . " ";
-	                $dummy["postid"]        = $item->getId();
+                $dummy                  = array();
+                $userInfo               = $item->getUserInfo();
+                $dummy["userid"]        = $userInfo->getId();
+                $dummy["dateCreated"]   = new IXR_Date($time);
+                $dummy["content"]       = $item->getTopic() . "\r\n" . $item->getText(false) . " ";
+                $dummy["postid"]        = $item->getId();
 
-	                $ret[]                  = $dummy;
-	            }
+                $ret[]                  = $dummy;
+            }
 	
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 	
-	            return $ret;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return $ret;
 	    }
 
 	    function metaWeblogGetRecentPosts($args)
@@ -932,73 +910,71 @@
 
 	        $userInfo = $users->getUserInfo( $username, $password );
 
-	        if( $userInfo ) {
-	            $ret = array();
-	            $list = $articles->getBlogArticles(
-	                $blogid,  
-	                -1,  // date
-	                $number, // number of articles
-	                -1  // category id
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            $ret = array();
+            $list = $articles->getBlogArticles(
+                $blogid,  
+                -1,  // date
+                $number, // number of articles
+                -1  // category id
 	            );
 
-	            $blogs = new Blogs();
-	            $blogInfo = $blogs->getBlogInfo( $blogid );
+            $blogs = new Blogs();
+            $blogInfo = $blogs->getBlogInfo( $blogid );
 	
 				// check if the blog is valid
-				if( !$blogInfo ) {
-					return new IXR_Error(-1, 'The blog identifier is not valid' );
-				}
+            if( !$blogInfo ) {
+                return new IXR_Error(-1, 'The blog identifier is not valid' );
+            }
 				
 				// check this user's permissions
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}				
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }				
 	
-                $url = $blogInfo->getBlogRequestGenerator();
+            $url = $blogInfo->getBlogRequestGenerator();
 
-                $blogSettings = $blogInfo->getSettings();
+            $blogSettings = $blogInfo->getSettings();
 
-	            foreach($list as $item)
-	            {
-	                $dateObject = $item->getDateObject();
-	                lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+            foreach($list as $item)
+            {
+                $dateObject = $item->getDateObject();
+                lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
 	                // Get the unix time stamp 
-	                $time = $dateObject->getTimestamp( DATE_FORMAT_UNIXTIME );
+                $time = $dateObject->getTimestamp( DATE_FORMAT_UNIXTIME );
 
-	                $articleCat = $item->getCategory();
+                $articleCat = $item->getCategory();
 
-	                $dummy                  = array();
-					$userInfo               = $item->getUserInfo();
-	                $dummy["userid"]        = $userInfo->getId();
-	                $dummy["dateCreated"]   = new IXR_Date($time);
-	                $dummy["title"]         = $item->getTopic(); 
+                $dummy                  = array();
+                $userInfo               = $item->getUserInfo();
+                $dummy["userid"]        = $userInfo->getId();
+                $dummy["dateCreated"]   = new IXR_Date($time);
+                $dummy["title"]         = $item->getTopic(); 
 
-                    $dummy["description"]   = $item->getIntroText(); 
-	                $dummy["postid"]        = $item->getId();
+                $dummy["description"]   = $item->getIntroText(); 
+                $dummy["postid"]        = $item->getId();
 
-	                $dummy["link"]          = $url->postLink( $item );
-	                $dummy["permaLink"]     = $url->postPermalink( $item );
+                $dummy["link"]          = $url->postLink( $item );
+                $dummy["permaLink"]     = $url->postPermalink( $item );
 
-	                $catArray               = array();
-                    foreach( $item->getCategories() as $category ) {
-                        $catArray[]             = $category->getName();
-                    }
-                    $dummy["categories"]      = $catArray;
+                $catArray               = array();
+                foreach( $item->getCategories() as $category ) {
+                    $catArray[]             = $category->getName();
+                }
+                $dummy["categories"]      = $catArray;
 
                     // The MovableType Extensions
-                    $dummy["mt_text_more"]       = $item->getExtendedText(); 
-                    $dummy["mt_allow_comments"]  = $item->getCommentsEnabled(); 
+                $dummy["mt_text_more"]       = $item->getExtendedText(); 
+                $dummy["mt_allow_comments"]  = $item->getCommentsEnabled(); 
 	            
 	
-					$this->setResponseCharset( $blogInfo );
+                $this->setResponseCharset( $blogInfo );
 
-	                $ret[]                  = $dummy;
-	            }
-	            return $ret;
-	        } 
-			else {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+                $ret[]                  = $dummy;
+            }
+            return $ret;
 	    }
 
 	    function metaWeblogNewMediaObject($args)
@@ -1013,18 +989,19 @@
 	        $file       = $args[3];
 
 	        $userInfo = $users->getUserInfo( $username, $password );
-	        if( $userInfo ) {
-		
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }		
 				// check if the blog id is valid
-			    $blogInfo = $blogsG->getBlogInfo( $blogid );
-				if( !$blogInfo ) {
-					return new IXR_Error(-1, 'The blog is not valid' );
-				}
+            $blogInfo = $blogsG->getBlogInfo( $blogid );
+            if( !$blogInfo ) {
+                return new IXR_Error(-1, 'The blog id is not valid' );
+            }
 				
 				// and now check if the user has enough access to upload resources
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "add_resource" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "add_resource" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }
 		
 	            // Save this file to the tmp directory
 
@@ -1033,61 +1010,57 @@
 	            /**if (!$tmp_dir = get_cfg_var('upload_tmp_dir')) {
 	                $tmp_dir = dirname(tempnam('/tmp', ''));
 	            }*/
-				$config =& Config::getConfig();
-				$tmp_dir = $config->getTempFolder();
+            $config =& Config::getConfig();
+            $tmp_dir = $config->getTempFolder();
 
 	            // Remove all characters that would need to be urlencoded
 	            // This may not be necessary, but this was causing problems when given file
 	            // names with spaces in it.
-	            $tempFile = ereg_replace("[^a-zA-Z0-9._-]", "_", basename($file['name']));
+            $tempFile = ereg_replace("[^a-zA-Z0-9._-]", "_", basename($file['name']));
 	            // Make the tmp name
-	            $tempFile = $tmp_dir . '/' . $tempFile;
+            $tempFile = $tmp_dir . '/' . $tempFile;
 
 	            // Open the file
-	            if (!$handle = fopen( $tempFile, "wb" ) ) {
-	                return new IXR_Error(-1, 'Could not open file');
-	            }    
+            if (!$handle = fopen( $tempFile, "wb" ) ) {
+                return new IXR_Error(-1, 'Could not open temp file');
+            }    
 
 	            // It appears that the data has already been decoded, no need to call base64_decode
-	            $decodedBits = $file['bits'];
+            $decodedBits = $file['bits'];
 	            // Write the data to the file
-	            if ( fwrite( $handle, $decodedBits ) === false ) {
-	                return new IXR_Error(-1, 'Could not write to file');
-	            }
+            if ( fwrite( $handle, $decodedBits ) === false ) {
+                return new IXR_Error(-1, 'Could not write to temp file');
+            }
 
 	            // Close the file
-	            fclose($handle);
+            fclose($handle);
 
 	            // let the gallery library do its work...
-	        	$resources = new GalleryResources();
+            $resources = new GalleryResources();
 
 	            // Get the first album for this blog
-	            $albums = new GalleryAlbums();
+            $albums = new GalleryAlbums();
 	            // get the list of albums for this blog
-	            $albumArray = $albums->getUserAlbums( $blogid );
-	            if ( $albumArray == NULL || count( $albumArray ) == 0 ) {
-	                return new IXR_Error(-1, 'Could not find album');
-	            }
+            $albumArray = $albums->getUserAlbums( $blogid );
+            if ( $albumArray == NULL || count( $albumArray ) == 0 ) {
+                return new IXR_Error(-1, 'Could not find album');
+            }
 
 	            // Add the resource to the first album
-	            $resId = $resources->addResourceFromDisk( $blogid, $albumArray[0]->getId(),
-	                                                     basename($file['name']), $tempFile );
+            $resId = $resources->addResourceFromDisk( $blogid, $albumArray[0]->getId(),
+                                                      basename($file['name']), $tempFile );
 	            // Get the resource from the id
-	            $resource = $resources->getResource( $resId, $blogid, $albumArray[0]->getId() );
+            $resource = $resources->getResource( $resId, $blogid, $albumArray[0]->getId() );
 	            // Now we need to get the url for the resource
-	            $url = $blogInfo->getBlogRequestGenerator();
+            $url = $blogInfo->getBlogRequestGenerator();
 
-                $responseStruct               = array();
+            $responseStruct               = array();
 
-	            $responseStruct['url'] = $url->resourceDownloadLink( $resource );
+            $responseStruct['url'] = $url->resourceDownloadLink( $resource );
 	
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 
-	            return $responseStruct;
-	        } 
-			else {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return $responseStruct;
 	    }	
 
 	    function getUserInfo($args)
@@ -1100,77 +1073,71 @@
 
 	        $userInfo = $users->getUserInfo( $username, $password );
 
-	        if ($userInfo)
-	        {
-	            $ret                = array();
-	            $ret["nickname"]    = $userInfo->getUsername();
-	            $ret["firstname"]   = $userInfo->getUsername();
-	            $ret["lastname"]    = "";
-	            $ret["email"]       = $userInfo->getEmail();
-	            $ret["userid"]      = $userInfo->getId();
-	            $ret["url"]         = "";
+	        if (!$userInfo){
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
 
+            $ret                = array();
+            $ret["nickname"]    = $userInfo->getUsername();
+            $ret["firstname"]   = $userInfo->getUsername();
+            $ret["lastname"]    = "";
+            $ret["email"]       = $userInfo->getEmail();
+            $ret["userid"]      = $userInfo->getId();
+            $ret["url"]         = "";
+
 				// set the response encoding according to one of the blogs owned by this user
-				$userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
-				if( count($userBlogs) > 0 ) {
-					$blogInfo = array_pop( $userBlogs );
-					$this->setResponseCharset( $blogInfo );					
-				}
+            $userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
+            if( count($userBlogs) > 0 ) {
+                $blogInfo = array_pop( $userBlogs );
+                $this->setResponseCharset( $blogInfo );					
+            }
 
-	            return $ret;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return $ret;
 	    }
 
 	    function getUsersBlogs($args)
-	    {
-			$users = new Users();
-			$category = new ArticleCategories();
+        {
+            $users = new Users();
+            $category = new ArticleCategories();
 
-	        $appkey     = $args[0];
-	        $username   = $args[1];
-	        $password   = $args[2];
-	        /*
+            $appkey     = $args[0];
+            $username   = $args[1];
+            $password   = $args[2];
+                /*
 	            "blogName" =>
 	            "url" =>
 	            "blogid" =>
-	        */
+                */
 
-	        $userInfo = $users->getUserInfo( $username, $password );
+            $userInfo = $users->getUserInfo( $username, $password );
 
-	        if ($userInfo)
-	        {
-	            $blogs = $users->getUsersBlogs($userInfo->getId(), BLOG_STATUS_ACTIVE );
-	            $ret = array();
-	            foreach($blogs as $blog)
-	            {
-	                $dummy              = array();
-	                $dummy["blogid"]    = $blog->_id;
-	                $dummy["blogName"]  = $blog->_blog;
-	                $url = $blog->getBlogRequestGenerator();
-	                $dummy["url"]       = $url->blogLink();
-	                $ret[]              = $dummy;
-	            }
+            if (!$userInfo){
+                return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            $blogs = $users->getUsersBlogs($userInfo->getId(), BLOG_STATUS_ACTIVE );
+            $ret = array();
+            foreach($blogs as $blog)
+            {
+                $dummy              = array();
+                $dummy["blogid"]    = $blog->_id;
+                $dummy["blogName"]  = $blog->_blog;
+                $url = $blog->getBlogRequestGenerator();
+                $dummy["url"]       = $url->blogLink();
+                $ret[]              = $dummy;
+            }
 
-				// set the encoding as long as we've got at least one blog
-				if( count( $blogs ) > 0 ) {
-					$blogInfo = $blogs[0];
-					$this->setResponseCharset( $blogInfo );
-				}
+                // set the encoding as long as we've got at least one blog
+            if( count( $blogs ) > 0 ) {
+                $blogInfo = $blogs[0];
+                $this->setResponseCharset( $blogInfo );
+            }
 
-	            return $ret;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return $ret;
 	    }	
 	    
 	    function mtSupportedTextFilters($args)
 	    {
             $ret = array();
-
             return $ret;
 	    }
 	    
@@ -1185,45 +1152,43 @@
 
 	        $userInfo = $users->getUserInfo( $username, $password );
 
-	        if( $userInfo )
-	        {
-	            lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+	        if( !$userInfo ){
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
 
-	            $item = $articles->getBlogArticle($postid,
-	                                              -1, // blogId
-	                                              true, // includeHiddenFields
-	                                              -1, // date
-	                                              -1, // categoryId
-	                                              $userInfo->getId());
+            lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+
+            $item = $articles->getBlogArticle($postid,
+                                              -1, // blogId
+                                              true, // includeHiddenFields
+                                              -1, // date
+                                              -1, // categoryId
+                                              $userInfo->getId());
 	
 				// check if the article is valid
-				if( !$item ) {
-					return( new IXR_Error(-1, 'The article is not valid' ));
-				}
+            if( !$item ) {
+                return( new IXR_Error(-1, 'The article id is not valid' ));
+            }
 				
 				// and permissions
-				$blogInfo = $item->getBlogInfo();
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}
+            $blogInfo = $item->getBlogInfo();
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "view_posts" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }
 
-	            $catArray               = array();
-	            foreach( $item->getCategories() as $category ) {
-   	                $dummy                   = array();
-	                $dummy["categoryId"]     = $category->getId();
-	                $dummy["categoryName"]   = $category->getName();
+            $catArray               = array();
+            foreach( $item->getCategories() as $category ) {
+                $dummy                   = array();
+                $dummy["categoryId"]     = $category->getId();
+                $dummy["categoryName"]   = $category->getName();
 
-	                $catArray[]              = $dummy;
+                $catArray[]              = $dummy;
 
-	            }
+            }
 	
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 	
-	            return $catArray;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return $catArray;
 	    }
 	
         function mtSetPostCategories($args)
@@ -1238,66 +1203,64 @@
 
 	        $userInfo = $users->getUserInfo( $username, $password );
 
-	        if( $userInfo ) {
-	            lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+	        if( !$userInfo ) {
+	            return new IXR_Error(-1, 'You did not provide the correct username and/or password');
+            }
+            lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
 
-	            $article = $articles->getBlogArticle($postid,
-	                                              -1, // blogId
-	                                              true, // includeHiddenFields
-	                                              -1, // date
-	                                              -1, // categoryId
-	                                              $userInfo->getId());
+            $article = $articles->getBlogArticle($postid,
+                                                 -1, // blogId
+                                                 true, // includeHiddenFields
+                                                 -1, // date
+                                                 -1, // categoryId
+                                                 $userInfo->getId());
 				
 				// check that the article is valid
-				if( !$article ) {
-					return( new IXR_Error(-1, 'The article is not correct' ));
-				}
+            if( !$article ) {
+                return( new IXR_Error(-1, 'The article id is not correct' ));
+            }
 
 	
 				// check the permissions
-	            $blogId = $article->getBlog();
-	            $blogInfo = $article->getBlogInfo();	
-				if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
-					return new IXR_Error(-1, 'This user does not have enough permissions' );
-				}	
+            $blogId = $article->getBlog();
+            $blogInfo = $article->getBlogInfo();	
+            if( !$this->userHasPermission( $userInfo, $blogInfo, "update_post" )) {
+                return new IXR_Error(-1, 'This user does not have enough permissions' );
+            }	
 
-                $articleCategories = new ArticleCategories();
+            $articleCategories = new ArticleCategories();
 
 
-	            $catArray      = Array();
+            $catArray      = Array();
 
-	            if ( $categories != NULL )
-	            {
-                    foreach( $categories as $category ) {
-                       // Get the category object for the category
-                       $catArray[] = $category["categoryId"];
-                    }
+            if ( $categories != NULL )
+            {
+                foreach( $categories as $category ) {
+                        // Get the category object for the category
+                    $catArray[] = $category["categoryId"];
                 }
+            }
 	            
-	            $article->setCategoryIds($catArray);
+            $article->setCategoryIds($catArray);
 	
 				// Get the plugin manager
-				$plugMgr =& PluginManager::getPluginManager();
-				$plugMgr->setBlogInfo( $blogInfo );
-				$plugMgr->setUserInfo( $userInfo );
-				$plugMgr->loadPlugins();
+            $plugMgr =& PluginManager::getPluginManager();
+            $plugMgr->setBlogInfo( $blogInfo );
+            $plugMgr->setUserInfo( $userInfo );
+            $plugMgr->loadPlugins();
 				// Send the EVENT_PRE_POST_UPDATE message
-				$plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));            
+            $plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));            
 
-	            $articles->updateArticle($article);
+            $articles->updateArticle($article);
 
 	            // Send the EVENT_POST_POST_UPDATE messages to the plugins
-	            $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));				
+            $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));				
 
-	    		CacheControl::resetBlogCache( $blogId );            
+            CacheControl::resetBlogCache( $blogId );            
 	
-				$this->setResponseCharset( $blogInfo );
+            $this->setResponseCharset( $blogInfo );
 	
-	            return true;
-	        } else
-	        {
-	            return new IXR_Error(-1, 'You did not provide the correct password');
-	        }
+            return true;
 	    }
 	
 		/**

Modified: plog/trunk/class/plugin/pluginbase.class.php
===================================================================
--- plog/trunk/class/plugin/pluginbase.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/plugin/pluginbase.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -90,7 +90,7 @@
     	/**
          * Constructor. Feel free to do here whatever you need to.
 		 *
-		 * @param source Only defined to be 'blog' or 'admin'. This parameter should be used to determine
+		 * @param source Only defined to be 'index' or 'admin'. This parameter should be used to determine
 		 * whether it is index.php registering this plugin ("index") or admin.php doing it ("admin") so that
 		 * we can perform different things. This means that the plugin can be initialized in two different ways
 		 * depending on whether we're being called via index.php or via admin.php so things like menu entries
@@ -322,7 +322,7 @@
 			$pm =& PluginManager::getPluginManager();
 			return( $pm->notifyEvent( $eventType, $params ));
 		}
-		
+
 		/**
 		 * this method should be implemented by plugins, and will tell the plugin manager 
 		 * which configuration settings are stored in the database by this plugin. This will be

Modified: plog/trunk/class/plugin/pluginmanager.class.php
===================================================================
--- plog/trunk/class/plugin/pluginmanager.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/plugin/pluginmanager.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -244,7 +244,7 @@
                	if( File::isReadable( $pluginFile."/".$pluginFileName )) {
 					$className = "Plugin".$plugin;
 					lt_include( $pluginFullPath );
-					$classInstance = new $className( $this->_source );						
+					$classInstance =& new $className( $this->_source );						
 					$classInstance->setPluginFolder( PLOG_CLASS_PATH.$pluginFile."/" );	
 					$name = $classInstance->getId();
 					
@@ -255,7 +255,7 @@
 
 					// create an instance only if the plugin is allowed to run in this version of LT					
 					if( $this->_pluginCanRun( $classInstance->getVersion())) {
-						$this->_pluginInstances["$name"] = &$classInstance;										
+						$this->_pluginInstances["$name"] = &$classInstance;
 					}
 				}
 			}
@@ -330,7 +330,10 @@
         function notifyEvent( $eventType, $params = Array())
         {
             // check if there is any plugin that wants to be notified about this event
-            $plugins = array_key_exists( $eventType, $this->_pluginEventList ) ? $this->_pluginEventList["$eventType"] : Array(); 
+            $plugins = Array();
+            if(array_key_exists( $eventType, $this->_pluginEventList ))
+                $plugins = $this->_pluginEventList["$eventType"];
+
             if( !is_array($plugins) || empty($plugins))
                 return $params;
 
@@ -356,7 +359,7 @@
          * @param pluginClass
          * @return Always true
          */
-        function registerNotification( $eventType, $pluginClass )
+        function registerNotification( $eventType, &$pluginClass )
         {
             // there can be more than one plugin registered for the same event,
             // so we need an array of plugin classes
@@ -365,7 +368,7 @@
             }
 
             // and then add the plugin to the list
-            $this->_pluginEventList["$eventType"][] = $pluginClass;
+            $this->_pluginEventList["$eventType"][] =& $pluginClass;
 
             return true;
         }

Modified: plog/trunk/class/summary/action/doblogregistration.class.php
===================================================================
--- plog/trunk/class/summary/action/doblogregistration.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/summary/action/doblogregistration.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -11,6 +11,7 @@
     lt_include( PLOG_CLASS_PATH."class/data/validator/domainvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/net/http/subdomains.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );	
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );    
 
 	/**
 	 * registers a blog
@@ -21,6 +22,9 @@
         function doBlogRegistration( $actionInfo, $request )
         {
 	    	$this->RegisterAction( $actionInfo, $request );
+	
+			// input filters
+			$this->_request->registerFilter( "blogName", new HtmlFilter( true ));
 	    	
 	    	// data validation
 	    	//$this->registerFieldValidator( "userId", new IntegerValidator());

Modified: plog/trunk/class/summary/action/dousercreation.class.php
===================================================================
--- plog/trunk/class/summary/action/dousercreation.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/summary/action/dousercreation.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -5,6 +5,8 @@
     lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/usernamevalidator.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/passwordvalidator.class.php" );    
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );    
+
     lt_include( PLOG_CLASS_PATH."class/dao/users.class.php" );
     lt_include( PLOG_CLASS_PATH."class/summary/view/doblogregistrationview.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/summary/view/summaryusercreationview.class.php" );    
@@ -19,6 +21,14 @@
 		{
 			$this->RegisterAction( $actionInfo, $request );
 			
+			// apply some filters to the data in the request
+			$f = new HtmlFilter( true );
+			$this->_request->registerFilter( "userName", $f );
+			$this->_request->registerFilter( "userFullName", $f );
+			$this->_request->registerFilter( "userEmail", $f );
+			$this->_request->registerFilter( "userPassword", $f );
+			$this->_request->registerFilter( "userPasswordCheck", $f );
+			
 			// data validation and stuff like that :)
 			$this->registerFieldValidator( "userName", new UsernameValidator());
 			$this->registerFieldValidator( "userPassword", new PasswordValidator());
@@ -37,12 +47,11 @@
         function perform()
         {
 	        // if all data is correct, then we can proceed and use it
-			$tf = new Textfilter();	        
-            $this->userName = $tf->filterAllHTML($this->_request->getValue( "userName" ));
-            $this->userPassword = $tf->filterAllHTML($this->_request->getValue( "userPassword" ));
-            $this->confirmPassword = $tf->filterAllHTML($this->_request->getValue( "userPasswordCheck" ));
-            $this->userEmail = $tf->filterAllHTML($this->_request->getValue( "userEmail" ));
-			$this->userFullName = $tf->filterAllHTML($this->_request->getValue( "userFullName" ));
+            $this->userName = $this->_request->getValue( "userName" );
+            $this->userPassword = $this->_request->getValue( "userPassword" );
+            $this->confirmPassword = $this->_request->getValue( "userPasswordCheck" );
+            $this->userEmail = $this->_request->getValue( "userEmail" );
+			$this->userFullName = $this->_request->getValue( "userFullName" );
 			$this->captcha = $this->_request->getValue( "userAuth" );
 			
 			// check if there is already a user with the same username and quit if so

Modified: plog/trunk/class/template/cachedtemplate.class.php
===================================================================
--- plog/trunk/class/template/cachedtemplate.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/template/cachedtemplate.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -31,11 +31,6 @@
             $config =& Config::getConfig();			
             $this->caching = $config->getValue( "template_cache_enabled");
             $this->cache_lifetime =  $config->getValue( "template_cache_lifetime" );
-            //$this->cache_dir    = $config->getValue( "temp_folder" )
-
-			// whatever is between the {dynamic}...{/dynamic} tags shouldn't be cached
-			$this->register_block('dynamic', "_smarty_nocache", false);
-			
         }
 
         /**
@@ -101,14 +96,4 @@
 			return $timestamp;
 		}
     }
-	
-	
-	/**
-	 * @private
-	 * this tells smarty *not* to cache contents, in case we need it
-	 */
-	function _smarty_nocache($param, $content, $smarty ) 
-	{
-		return $content;
-	}
 ?>

Modified: plog/trunk/class/template/smarty/plugins/modifier.utf8_wordwrap.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.utf8_wordwrap.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/template/smarty/plugins/modifier.utf8_wordwrap.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -39,7 +39,7 @@
     if(!$cut){ 
         $regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.',}\b#U'; 
     } else { 
-        $regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#'; 
+        $regexp = '#^(?:[\x00-\xFF]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#'; 
     } 
     if(function_exists('mb_strlen')){ 
         $str_len = mb_strlen($str,'UTF-8'); 

Modified: plog/trunk/class/test/PHPUnit/GUI/Gtk.php
===================================================================
--- plog/trunk/class/test/PHPUnit/GUI/Gtk.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/GUI/Gtk.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -47,7 +47,7 @@
  */
 
 if (!function_exists('is_a')) {
-    require_once 'PHP/Compat/Function/is_a.php';
+    lt_include('PHP/Compat/Function/is_a.php');
 }
 
 /**
@@ -522,7 +522,7 @@
         if (is_a($file, 'PHPUnit_TestSuite')) {
             return $file;
         } elseif (class_exists($file)) {
-            require_once 'PHPUnit/TestSuite.php';
+            lt_include('PHPUnit/TestSuite.php');
             return new PHPUnit_TestSuite($file);
         }
 
@@ -537,11 +537,11 @@
         // Instantiate the class.
         // If the path is /path/to/test/TestClass.php
         // the class name should be test_TestClass
-        require_once $file;
+        lt_include($file);
         $className = str_replace(DIRECTORY_SEPARATOR, '_', $file);
         $className = substr($className, 0, strpos($className, '.'));
 
-        require_once 'PHPUnit/TestSuite.php';
+        lt_include('PHPUnit/TestSuite.php');
         return new PHPUnit_TestSuite($className);
     }
 

Modified: plog/trunk/class/test/PHPUnit/RepeatedTest.php
===================================================================
--- plog/trunk/class/test/PHPUnit/RepeatedTest.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/RepeatedTest.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -46,7 +46,7 @@
  * @since      File available since Release 1.0.0
  */
 
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestDecorator.php';
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestDecorator.php');
 
 /**
  * A Decorator that runs a test repeatedly.

Modified: plog/trunk/class/test/PHPUnit/Skeleton.php
===================================================================
--- plog/trunk/class/test/PHPUnit/Skeleton.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/Skeleton.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -178,10 +178,10 @@
     function createTestClass() {
         // Instantiate the object.
         if (isset($this->configFile)) {
-            require_once $this->configFile;
+            lt_include($this->configFile);
         }
 
-        require_once $this->classPath;
+        lt_include($this->classPath);
 
         // Get the methods.
         $classMethods = get_class_methods($this->className);
@@ -247,7 +247,7 @@
           " */\n";
 
         // Add the require statements.
-        $this->testClass .= "require_once 'PHPUnit.php';\n";
+        $this->testClass .= "lt_include('PHPUnit.php');\n";
 
         // Add the class definition and variable definition.
         $this->testClass .=
@@ -299,11 +299,11 @@
 
         if (isset($this->configFile)) {
             $this->testClass .=
-            "        require_once '" . $this->configFile . "';\n";
+            "        lt_include('" . $this->configFile . ")';\n";
         }
 
         $this->testClass .=
-          "        require_once '" . $this->classPath . "';\n" .
+          "        lt_include('" . $this->classPath . ")';\n" .
           "        \$this->" . $this->className . " =& new " . $this->className . "(PARAM);\n" .
           "    }\n\n";
 

Modified: plog/trunk/class/test/PHPUnit/TestCase.php
===================================================================
--- plog/trunk/class/test/PHPUnit/TestCase.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/TestCase.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -46,8 +46,8 @@
  * @since      File available since Release 1.0.0
  */
 
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/Assert.php';
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestResult.php';
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/Assert.php');
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestResult.php');
 //lt_include( PLOG_CLASS_PATH."class/test/helpers/lifetypeassert.class.php" );
 
 /**

Modified: plog/trunk/class/test/PHPUnit/TestDecorator.php
===================================================================
--- plog/trunk/class/test/PHPUnit/TestDecorator.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/TestDecorator.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -46,11 +46,11 @@
  * @since      File available since Release 1.0.0
  */
 
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php';
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestSuite.php';
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php');
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestSuite.php');
 
 if (!function_exists('is_a')) {
-    require_once 'PHP/Compat/Function/is_a.php';
+    lt_include('PHP/Compat/Function/is_a.php');
 }
 
 /**

Modified: plog/trunk/class/test/PHPUnit/TestResult.php
===================================================================
--- plog/trunk/class/test/PHPUnit/TestResult.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/TestResult.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -46,11 +46,11 @@
  * @since      File available since Release 1.0.0
  */
 
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestFailure.php';
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestListener.php';
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestFailure.php');
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestListener.php');
 
 if (!function_exists('is_a')) {
-    require_once 'PHP/Compat/Function/is_a.php';
+    lt_include('PHP/Compat/Function/is_a.php');
 }
 
 /**

Modified: plog/trunk/class/test/PHPUnit/TestSuite.php
===================================================================
--- plog/trunk/class/test/PHPUnit/TestSuite.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit/TestSuite.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -46,7 +46,7 @@
  * @since      File available since Release 1.0.0
  */
 
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php';
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php');
 
 /**
  * A TestSuite is a Composite of Tests. It runs a collection of test cases.

Modified: plog/trunk/class/test/PHPUnit.php
===================================================================
--- plog/trunk/class/test/PHPUnit.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/PHPUnit.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -48,9 +48,9 @@
 
 define( "PHPUNIT_CLASS_PATH", PLOG_CLASS_PATH."class/test/" );
 
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php';
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestResult.php';
-require_once PHPUNIT_CLASS_PATH.'PHPUnit/TestSuite.php';
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php');
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestResult.php');
+lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestSuite.php');
 
 /**
  * PHPUnit runs a TestSuite and returns a TestResult object.

Copied: plog/trunk/class/test/tests/config/properties_test.class.php (from rev 5487, plog/branches/lifetype-1.2/class/test/tests/config/properties_test.class.php)
===================================================================
--- plog/trunk/class/test/tests/config/properties_test.class.php	                        (rev 0)
+++ plog/trunk/class/test/tests/config/properties_test.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,45 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/test/helpers/lifetypetestcase.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/config/properties.class.php" );		
+
+	/**
+	 * \ingroup Test
+	 *
+	 * Test cases for the Properties class
+	 */
+	class Properties_Test extends LifeTypeTestCase
+	{
+		var $p;
+		
+		function setUp()
+		{
+			$this->p = new Properties();
+			$this->p->setValue( "test", "<b>this</b> has some <h1>HTML</h1> in it!" );
+		}
+		
+		/**
+		 * Tests the Properties::getValue() method using a filter class as a third
+		 * parameter
+		 */
+		function testGetValueWithFilterClass()
+		{
+			// when not using a filter class, we should get the value as is
+			$this->assertEquals( "<b>this</b> has some <h1>HTML</h1> in it!", $this->p->getValue( "test" ));
+			
+			// when using a filter class, the value should be returned filtered
+			lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+			$this->assertEquals( "this has some HTML in it!", $this->p->getValue( "test", null, new HtmlFilter()));
+		}
+		
+		function testRegisterFilter()
+		{
+			// when not using a filter class, we should get the value as is
+			$this->assertEquals( "<b>this</b> has some <h1>HTML</h1> in it!", $this->p->getValue( "test" ));			
+			
+			// now register a filter for this key and check that the output is filtered
+			$this->p->registerFilter( "test", new HtmlFilter());
+			$this->assertEquals( "this has some HTML in it!", $this->p->getValue( "test" ));
+		}
+	}
+?>
\ No newline at end of file

Copied: plog/trunk/class/test/tests/data/filter (from rev 5487, plog/branches/lifetype-1.2/class/test/tests/data/filter)

Deleted: plog/trunk/class/test/tests/data/filter/filterbase_test.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/test/tests/data/filter/filterbase_test.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/tests/data/filter/filterbase_test.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,34 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/test/helpers/lifetypetestcase.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
-
-	/**
-	 * \ingroup Test
-	 *
-	 * Test case for the FilterBase class
-	 */
-	class FilterBase_Test extends LifeTypeTestCase
-	{
-		function setUp()
-		{
-			// create a username validator
-			$this->f = new FilterBase();
-		}
-		
-		function testAddFilter()
-		{
-			/**
-			 * :TODO:
-			 * This test should be improved!
-			 */
-			
-			// add two filters to the chain
-			$this->f->addFilter( new HtmlFilter());
-			$this->f->addFilter( new HtmlFilter());
-			// and make sure that they're really there
-			$this->assertEquals( 2, count( $this->f->_filters ));
-		}
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/test/tests/data/filter/filterbase_test.class.php (from rev 5487, plog/branches/lifetype-1.2/class/test/tests/data/filter/filterbase_test.class.php)
===================================================================
--- plog/trunk/class/test/tests/data/filter/filterbase_test.class.php	                        (rev 0)
+++ plog/trunk/class/test/tests/data/filter/filterbase_test.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,34 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/test/helpers/lifetypetestcase.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+
+	/**
+	 * \ingroup Test
+	 *
+	 * Test case for the FilterBase class
+	 */
+	class FilterBase_Test extends LifeTypeTestCase
+	{
+		function setUp()
+		{
+			// create a username validator
+			$this->f = new FilterBase();
+		}
+		
+		function testAddFilter()
+		{
+			/**
+			 * :TODO:
+			 * This test should be improved!
+			 */
+			
+			// add two filters to the chain
+			$this->f->addFilter( new HtmlFilter());
+			$this->f->addFilter( new HtmlFilter());
+			// and make sure that they're really there
+			$this->assertEquals( 2, count( $this->f->_filters ));
+		}
+	}
+?>
\ No newline at end of file

Deleted: plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/test/tests/data/filter/htmlfilter_test.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,43 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/test/helpers/lifetypetestcase.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
-
-	/**
-	 * \ingroup Test
-	 *
-	 * Test case for the HtmlFilter class
-	 */
-	class HtmlFilter_Test extends LifeTypeTestCase
-	{
-		function setUp()
-		{
-			// create a username validator
-			$this->f = new HtmlFilter();
-		}
-		
-		function testFilter()
-		{
-			$data = Array(
-				"input" => "input",
-				"<b>input</b>" => "input",
-				"<script>window.alert();</script>" => "window.alert();",
-				"\"><script>alert(1)</script>" => "\">alert(1)"
-			);
-			
-			foreach( $data as $input => $output ) {
-				$this->assertEquals( $output, $this->f->filter( $input ));
-			}
-		}
-		
-		/**
-		 * Test that HTML entities are converted when the first parameter
-		 * passed to the constructor is set to 'true'
-		 */
-		function testFilterWithHtmlFilterEnabled()
-		{
-			$f = new HtmlFilter( true );
-			$this->assertEquals( "&quot;&gt;alert(1)", $f->filter( "\"><script>alert(1)</script>" ));
-		}
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php (from rev 5487, plog/branches/lifetype-1.2/class/test/tests/data/filter/htmlfilter_test.class.php)
===================================================================
--- plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php	                        (rev 0)
+++ plog/trunk/class/test/tests/data/filter/htmlfilter_test.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,43 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/test/helpers/lifetypetestcase.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+
+	/**
+	 * \ingroup Test
+	 *
+	 * Test case for the HtmlFilter class
+	 */
+	class HtmlFilter_Test extends LifeTypeTestCase
+	{
+		function setUp()
+		{
+			// create a username validator
+			$this->f = new HtmlFilter();
+		}
+		
+		function testFilter()
+		{
+			$data = Array(
+				"input" => "input",
+				"<b>input</b>" => "input",
+				"<script>window.alert();</script>" => "window.alert();",
+				"\"><script>alert(1)</script>" => "\">alert(1)"
+			);
+			
+			foreach( $data as $input => $output ) {
+				$this->assertEquals( $output, $this->f->filter( $input ));
+			}
+		}
+		
+		/**
+		 * Test that HTML entities are converted when the first parameter
+		 * passed to the constructor is set to 'true'
+		 */
+		function testFilterWithHtmlFilterEnabled()
+		{
+			$f = new HtmlFilter( true );
+			$this->assertEquals( "&quot;&gt;alert(1)", $f->filter( "\"><script>alert(1)</script>" ));
+		}
+	}
+?>
\ No newline at end of file

Modified: plog/trunk/class/test/tests/data/validator/blognamevalidator_test.class.php
===================================================================
--- plog/trunk/class/test/tests/data/validator/blognamevalidator_test.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/test/tests/data/validator/blognamevalidator_test.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -36,8 +36,9 @@
 			// blog names starting with 'a' and ending with 'b'
 			$forbiddenBlognames = $config->setValue( "forbidden_blognames", "^a.*" );
 			
-			$this->assertFalse( $this->b->validate( "a-this should not work" ), "A forbidden blogname should not be accepted as valid!" );
-			$this->assertTrue( $this->b->validate( "-this should work" ), "A valid blogname was not accepted as valid!" );
+			$b = new BlogNameValidator();			
+			$this->assertFalse( $b->validate( "a-this should not work" ), "A forbidden blogname should not be accepted as valid!" );
+			$this->assertTrue( $b->validate( "-this should work" ), "A valid blogname was not accepted as valid!" );
 		}
 		
 		/**

Modified: plog/trunk/class/view/admin/adminblogsettingsview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminblogsettingsview.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/view/admin/adminblogsettingsview.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -40,6 +40,7 @@
 			$this->setValue( "blogFirstDayOfWeek", $blogSettings->getValue( "first_day_of_week", $locale->firstDayOfWeek() ));
 			$this->setValue( "blogEnableAutosaveDrafts", $blogSettings->getValue( "new_drafts_autosave_enabled" ));
 			$this->setValue( "blogCommentsOrder", $blogSettings->getValue( "comments_order" ));
+			$this->setValue( "blogArticlesOrder", $blogSettings->getValue( "articles_order" ));
 			$this->setValue( "blogCategory", $this->_blogInfo->getBlogCategoryId());
 			$this->setValue( "blogShowInSummary", $this->_blogInfo->getShowInSummary());
 			$this->setValue( "blogSendNotification", $blogSettings->getValue( "default_send_notification" ));

Modified: plog/trunk/class/view/admin/adminview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminview.class.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/class/view/admin/adminview.class.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -21,7 +21,7 @@
      */
     class AdminView extends View 
 	{
-
+        var $_pm;
     	var $_templateService;
         var $_blogInfo;
         var $_userInfo;

Copied: plog/trunk/flash (from rev 5487, plog/branches/lifetype-1.2/flash)

Copied: plog/trunk/flash/mp3player (from rev 5487, plog/branches/lifetype-1.2/flash/mp3player)

Deleted: plog/trunk/flash/mp3player/mp3player.swf
===================================================================
(Binary files differ)

Copied: plog/trunk/flash/mp3player/mp3player.swf (from rev 5487, plog/branches/lifetype-1.2/flash/mp3player/mp3player.swf)
===================================================================
(Binary files differ)

Copied: plog/trunk/gallery/.htaccess (from rev 5487, plog/branches/lifetype-1.2/gallery/.htaccess)
===================================================================
--- plog/trunk/gallery/.htaccess	                        (rev 0)
+++ plog/trunk/gallery/.htaccess	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,15 @@
+<Files "*.php">
+ Order allow,deny
+ Deny from all
+</Files>
+
+<Files "*.htm">
+ Order allow,deny
+ Deny from all
+</Files>
+
+<Files "*.html">
+ Order allow,deny
+ Deny from all
+</Files>
+

Modified: plog/trunk/index.php
===================================================================
--- plog/trunk/index.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/index.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -10,7 +10,7 @@
     lt_include( PLOG_CLASS_PATH."class/file/file.class.php" );
 
     // start gathering statistics
-    Info::startMetrics();    
+    //Info::startMetrics();    
 
     // just to make php use &amp; as the separator when adding the PHPSESSID
     // variable to our requests
@@ -48,7 +48,7 @@
     $pluginManager->loadPlugins( "index" );
 	
     // give control to the, ehem, controller :)
-    $controller->process( HttpVars::getRequest(), "op");	
+    $controller->process( HttpVars::getRequest());	
 
     // log statistics, only for debugging purposes
     Info::logMetrics();

Modified: plog/trunk/install/defaultconfig.properties.php
===================================================================
--- plog/trunk/install/defaultconfig.properties.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/install/defaultconfig.properties.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -127,6 +127,7 @@
 $Inserts['upload_allowed_files']                            = "INSERT INTO {dbprefix}config (config_key, config_value, value_type) VALUES ('upload_allowed_files','', 3);";
 $Inserts['template_load_order']                             = "INSERT INTO {dbprefix}config (config_key, config_value, value_type) VALUES ('template_load_order','2', 1);"; 
 $Inserts['summary_service_name']                            = "INSERT INTO {dbprefix}config (config_key, config_value, value_type) VALUES ('summary_service_name','Your Service Name', 3);"; 
+$Inserts['allow_javascript_blocks_in_posts']                = "INSERT INTO {dbprefix}config (config_key, config_value, value_type) VALUES ('allow_javascript_blocks_in_posts','0', 1);"; 
 $Inserts['location_data_enabled']                           = "INSERT INTO {dbprefix}config (config_key, config_value, value_type) VALUES ('location_data_enabled','0', 1);"; 
 $Inserts['google_maps_api_key']                             = "INSERT INTO {dbprefix}config (config_key, config_value, value_type) VALUES ('google_maps_api_key','', 3);"; 
-?>
\ No newline at end of file
+?>

Copied: plog/trunk/install/files.properties.php (from rev 5487, plog/branches/lifetype-1.2/install/files.properties.php)
===================================================================
--- plog/trunk/install/files.properties.php	                        (rev 0)
+++ plog/trunk/install/files.properties.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,937 @@
+<?php
+$data = Array(
+"class/.htaccess" => "b8f8fba9934f779fd8816b9d2f11e699",
+"class/action/action.class.php" => "7549eaeb7734d94605b54b4639769280",
+"class/action/actioninfo.class.php" => "ae56b91ab21a1157f3495ee2b2e88e16",
+"class/action/addcommentaction.class.php" => "a6600076e690d09058f3daf5311e820a",
+"class/action/addtrackbackaction.class.php" => "db6945c4071e0ca5a687e944314c6bfc",
+"class/action/admin/adminaction.class.php" => "447a07225ac8839af67005e0470ba256",
+"class/action/admin/adminaddarticlecategoryaction.class.php" => "656e834e123d7555a6f1322751eb00d9",
+"class/action/admin/adminaddarticlecategoryajaxaction.class.php" => "55e63f1236ca5e85d1b644a3672aa721",
+"class/action/admin/adminaddblogaction.class.php" => "1963eecc2e642075bd36dcd54505d416",
+"class/action/admin/adminaddblogcategoryaction.class.php" => "75f993a22ff1693613e0687b07e494e8",
+"class/action/admin/adminaddblogtemplateaction.class.php" => "e11cbf6273e37bd7927239640e12cd7c",
+"class/action/admin/adminaddbloguseraction.class.php" => "6a5ab468163836ec84c241fb8ac84dd0",
+"class/action/admin/adminaddcustomfieldaction.class.php" => "c298013275b792e0e0ff2262ef4e4a87",
+"class/action/admin/adminaddglobalarticlecategoryaction.class.php" => "4f09b607dad9242d40559fe810890330",
+"class/action/admin/adminaddlinkaction.class.php" => "a4f2526a9c3267dc4e77d8fbb0081b0c",
+"class/action/admin/adminaddlinkcategoryaction.class.php" => "a435db3585c240e21dc0f3c52afc4302",
+"class/action/admin/adminaddlocaleaction.class.php" => "2d5fca1d11705ecb3e3f424e9030f6ab",
+"class/action/admin/adminaddpermissionaction.class.php" => "6917247bf04f432d5257a4cafa8d8e33",
+"class/action/admin/adminaddpostaction.class.php" => "b11f2be138b6a60edf00723c2f51d59b",
+"class/action/admin/adminaddresourceaction.class.php" => "dcfe639404d4478c4c442d8c4086665b",
+"class/action/admin/adminaddresourcealbumaction.class.php" => "4e0ecab87aac2ec31668de4d0de67770",
+"class/action/admin/adminaddtemplateaction.class.php" => "1cd71cf98cc6d81092199e69a7dc31c1",
+"class/action/admin/adminadduseraction.class.php" => "dc795bced70de625bd4e31f2e40f9c5e",
+"class/action/admin/adminadminblogselectaction.class.php" => "c633a87bc08adb3f74c9200ed5d42b27",
+"class/action/admin/adminblogcategoriesaction.class.php" => "0681c64415f3f59e5739deedb970d2ea",
+"class/action/admin/adminblogcustomfieldsaction.class.php" => "82eff26159c3183a3f678fa80070a1a1",
+"class/action/admin/adminblogsecurityaction.class.php" => "3693cfb7d2edb7939ff45e346462f472",
+"class/action/admin/adminblogsettingsaction.class.php" => "834b0bccf3b21c28e0fb8d739a7ac554",
+"class/action/admin/adminchangeblogstatusaction.class.php" => "0ed3346b6a07ddf42c28d4d9b49f634f",
+"class/action/admin/adminchangecommentsstatusaction.class.php" => "88f1e01dab5aba8c7388fbd253ba0cce",
+"class/action/admin/adminchangegalleryitemsalbumaction.class.php" => "2e343f05da96153e796b4f4f0c084de9",
+"class/action/admin/adminchangelinkscategoryaction.class.php" => "ff9237693339bb50e909a655448e59b0",
+"class/action/admin/adminchangepostscategoryaction.class.php" => "28a9198aa2dd19a3b3f4eff5b911477f",
+"class/action/admin/adminchangepostsstatusaction.class.php" => "15a1b7e7998983f79c37181c12012e7c",
+"class/action/admin/adminchangetrackbacksstatusaction.class.php" => "f20802e73f6ea2211fd6220711052170",
+"class/action/admin/adminchangeuserstatusaction.class.php" => "0ab699fb5b769c93bd84b8fe2458e294",
+"class/action/admin/admincleanupaction.class.php" => "8e53eba268603ddbc059fe9328317fd0",
+"class/action/admin/admincontrolcenteraction.class.php" => "8706de4db8eeff57eefadba14d54ac65",
+"class/action/admin/admincreateblogaction.class.php" => "73444ee007a28fd8131be6870a2ca87e",
+"class/action/admin/admincreateuseraction.class.php" => "97d56459d9048bf7fbd3e3091123d9b1",
+"class/action/admin/admindefaultaction.class.php" => "938b14dac7f4348afe86419e43439597",
+"class/action/admin/admindeletearticlecategoryaction.class.php" => "30cbac7b871a48c3f294dcf1ce6b5e9f",
+"class/action/admin/admindeleteblogaction.class.php" => "2e65a85538d6508d8dfca932bcb548cc",
+"class/action/admin/admindeleteblogcategoryaction.class.php" => "48ba50a474004a6fedd0918d959dd8f2",
+"class/action/admin/admindeleteblogtemplateaction.class.php" => "bfd5cc51fa8c69b75916a552f8cef926",
+"class/action/admin/admindeletebloguserpermissionsaction.class.php" => "7372a264b4e39ae5e229ac3280dd3688",
+"class/action/admin/admindeletecommentaction.class.php" => "eff764753b7126c0110df4ee36c52403",
+"class/action/admin/admindeletecustomfieldsaction.class.php" => "eec189b06703886e88eb5996fa9c58e4",
+"class/action/admin/admindeletegalleryitemsaction.class.php" => "013a958dde4735a654a19784be0e746a",
+"class/action/admin/admindeleteglobalarticlecategoryaction.class.php" => "c0b97955fd40e81217ca9d2526c94a78",
+"class/action/admin/admindeletelinkaction.class.php" => "733150dae7a7532b12209f365d677c7f",
+"class/action/admin/admindeletelinkcategoryaction.class.php" => "5e3dbd4f4ab5d27c2aa61607c18d7db7",
+"class/action/admin/admindeletelocalesaction.class.php" => "5044358849f440e5c318a1d8238252a0",
+"class/action/admin/admindeletepermissionsaction.class.php" => "6328d58c807941335a651ca7627bf0e8",
+"class/action/admin/admindeletepostaction.class.php" => "d44182bce466f41add305381137c48ae",
+"class/action/admin/admindeletereferreraction.class.php" => "d0bbe789cf19fd25cb02292630acc999",
+"class/action/admin/admindeleteresourceaction.class.php" => "c2cc40e1189c5a6269b88ea1782d7505",
+"class/action/admin/admindeleteresourcealbumaction.class.php" => "54e06bce307f94f8f57f0ec3c7b160c1",
+"class/action/admin/admindeletetemplatesaction.class.php" => "c1c4ecbd09b35c408aeb25bcace9dcff",
+"class/action/admin/admindeletetrackbackaction.class.php" => "67efd7a2d816b7b6d4f0bd2f05ed1866",
+"class/action/admin/admindeleteusersaction.class.php" => "0933ec07ebf41addfb80ff842fe70d62",
+"class/action/admin/admindoregisterblogaction.class.php" => "2f776c2e5faa6e13edd7d04cb7d02a75",
+"class/action/admin/admineditarticlecategoriesaction.class.php" => "12b62176fa0256df9070bd2c478a9b59",
+"class/action/admin/admineditarticlecategoryaction.class.php" => "623d2bfd989a21638f357d7ed1f39ee7",
+"class/action/admin/admineditblogaction.class.php" => "32f74b2aba23d924cb3b17634b8298c6",
+"class/action/admin/admineditblogcategoryaction.class.php" => "d5c545dd0de512750bf9cb4c1f8bc104",
+"class/action/admin/admineditblogtemplatesaction.class.php" => "df6e931c50595741294778c7e02c2695",
+"class/action/admin/admineditbloguseraction.class.php" => "01f6738dd03fe2153588bcc9b5ae51ca",
+"class/action/admin/admineditcommentsaction.class.php" => "d9cae4bed318942193a3d28b1ab34ab5",
+"class/action/admin/admineditcustomfieldaction.class.php" => "9972fa00f0d32faac167abfdca87fb3f",
+"class/action/admin/admineditglobalarticlecategoriesaction.class.php" => "47b2aece0adbe622aa25ef7b4decb4d4",
+"class/action/admin/admineditglobalarticlecategoryaction.class.php" => "bf241be5d4ebc1891261a96026a6340b",
+"class/action/admin/admineditlinkaction.class.php" => "27a58bb58654417e549d8deb7f1d5342",
+"class/action/admin/admineditlinkcategoriesaction.class.php" => "178b99748761196eba936991444c02be",
+"class/action/admin/admineditlinkcategoryaction.class.php" => "2a1a175110f5d94346007e009473d231",
+"class/action/admin/admineditlinksaction.class.php" => "7abd60427072baabb351e91a9fb5698f",
+"class/action/admin/admineditpermissionaction.class.php" => "64f44d723b70a4d4148d9e749cb49f13",
+"class/action/admin/admineditpostaction.class.php" => "a50bbcce99dbdc8397c5c37d34c81db4",
+"class/action/admin/admineditpostsaction.class.php" => "60b8f38091c1374a7cdcdd93048442cb",
+"class/action/admin/admineditresourcealbumaction.class.php" => "8cfd80638ad4ea754868deefae6a6f2d",
+"class/action/admin/adminedittemplatesaction.class.php" => "991a0c2d494af14a8efe7c971c5982c2",
+"class/action/admin/adminedittrackbacksaction.class.php" => "40286c10ccc4453e79ca62f74d503c66",
+"class/action/admin/adminemptyaction.class.php" => "d3def5357bda7def0f862b470c23b885",
+"class/action/admin/adminglobalsettingsaction.class.php" => "20ea82a1e37ff2f439a0c1bfa081dd33",
+"class/action/admin/adminloginaction.class.php" => "a5a6bb88b8402ebe3c839e626424802a",
+"class/action/admin/adminlogoutaction.class.php" => "938198b47faf4c7383f6c85d4b4d4dc8",
+"class/action/admin/adminmainaction.class.php" => "17c1072fa72c31b0d6397cc771ee9309",
+"class/action/admin/adminmanageaction.class.php" => "6b33b7f996ce8cdcab92487f2269f4f6",
+"class/action/admin/adminmarkcommentaction.class.php" => "f7eaff095617f1e48134aa48520e25fd",
+"class/action/admin/adminmarktrackbackaction.class.php" => "f874ec79bfb41983d61ddc32fc1f1d41",
+"class/action/admin/adminnewarticlecategoryaction.class.php" => "74816e66ca056faa15e3df2af69c2717",
+"class/action/admin/adminnewblogcategoryaction.class.php" => "88b7563055f4ad5ed3b8c175e051f600",
+"class/action/admin/adminnewblogtemplateaction.class.php" => "4632646d575d4b141b2b4fdc358ecb71",
+"class/action/admin/adminnewbloguseraction.class.php" => "30e21ab3cf4da86199c09fabcae882e6",
+"class/action/admin/adminnewcustomfieldaction.class.php" => "8a122629831653625ecde3ef07cb7345",
+"class/action/admin/adminnewglobalarticlecategoryaction.class.php" => "6e26b48ed3b6220b236789f770aed435",
+"class/action/admin/adminnewlinkaction.class.php" => "14d78c175ffce37fb9ae700cce023ffc",
+"class/action/admin/adminnewlinkcategoryaction.class.php" => "4e1ef89103c07fa9ce5fcac02fa60bd7",
+"class/action/admin/adminnewlocaleaction.class.php" => "fca987b7d7ced30b86f9cd4c4648fb0b",
+"class/action/admin/adminnewpermissionaction.class.php" => "34e6130f5bff7117979ac4cf147fa7e5",
+"class/action/admin/adminnewpostaction.class.php" => "58610930d17f8a34334442d10595a889",
+"class/action/admin/adminnewresourceaction.class.php" => "51a026ea178d4e504f37e95ba19cf5ff",
+"class/action/admin/adminnewresourcealbumaction.class.php" => "c9d89df74ffe491662c68b1fa2437dda",
+"class/action/admin/adminnewtemplateaction.class.php" => "c2774df50805402bfeafc26ec0363d64",
+"class/action/admin/adminpermissionrequiredaction.class.php" => "ab6d096158e627235d96d9f12fb8e1e1",
+"class/action/admin/adminpermissionslistaction.class.php" => "e76698429c423c2a44d47af595c067a8",
+"class/action/admin/adminplugincenteraction.class.php" => "173a4ccc8e42e6e4b6a9c06ca4570354",
+"class/action/admin/adminpluginsettingsaction.class.php" => "3e228b14a3245a355e08733196ffb8e4",
+"class/action/admin/adminpostmanagementcommonaction.class.php" => "a692c1e303d16becefcfdd5fa887599f",
+"class/action/admin/adminpoststatsaction.class.php" => "6ef3764f11cce10f741c01658bdf41e6",
+"class/action/admin/adminpreviewpostaction.class.php" => "360812aa4764cc8ab7bceadbc08b117f",
+"class/action/admin/adminregeneratepreviewaction.class.php" => "6aabcc310f87095f9eacc5511e04a346",
+"class/action/admin/adminregisterblogaction.class.php" => "644923025c0f85759e55b4f560b6c42c",
+"class/action/admin/adminresendconfirmationaction.class.php" => "28ce347b8af2206687a3b68a9fd32559",
+"class/action/admin/adminresourcealbumsaction.class.php" => "3a136d3e23c9bddace9211af7892de6c",
+"class/action/admin/adminresourceinfoaction.class.php" => "854832d11b6d22183cb73418efe9cf6d",
+"class/action/admin/adminresourcesaction.class.php" => "3b53bb82a3b170c091fb069a69d44c9f",
+"class/action/admin/adminresourcesgroupaction.class.php" => "f6e22838e6b28d535290e6ebb155801c",
+"class/action/admin/adminsavedraftarticleajaxaction.class.php" => "95ab050a5ad40bd0e972e35f25c45ad5",
+"class/action/admin/adminsendtrackbacksaction.class.php" => "a81585d5b0e1e9d847f20954c3d97ad9",
+"class/action/admin/adminshowblogusersaction.class.php" => "95167ee4b884c5f0f19d00e19cbc61d7",
+"class/action/admin/adminsiteblogsaction.class.php" => "8b26cf69c5e0cb647e5a9ebba40a317e",
+"class/action/admin/adminsitelocalesaction.class.php" => "e3a1e7722b21f7f8ce249a8ad420539c",
+"class/action/admin/adminsitesettingsaction.class.php" => "4c6ab04ee273b157fddec77965dba02e",
+"class/action/admin/adminsiteusersaction.class.php" => "801578ba2f41cfc9534f12888985d993",
+"class/action/admin/adminstatisticsaction.class.php" => "17caaacbb4a0a772e414653ab8dff2b3",
+"class/action/admin/adminupdatearticlecategoryaction.class.php" => "a20834608dcd63bf902b8028e7c4a931",
+"class/action/admin/adminupdateblogcategoryaction.class.php" => "a85c9641f66d6bc5ad687203921f151f",
+"class/action/admin/adminupdateblogsettingsaction.class.php" => "f93f6407224940f141cd31359a31eb1f",
+"class/action/admin/adminupdatebloguseraction.class.php" => "c04faa24fee91c3f853a6351817632ec",
+"class/action/admin/adminupdatecustomfieldaction.class.php" => "7819377f42dc1bbbdd7d6bc412d63f79",
+"class/action/admin/adminupdateeditblogaction.class.php" => "309ef0b548858f13491eeebef7ce6fee",
+"class/action/admin/adminupdateglobalarticlecategoryaction.class.php" => "b11aec27f3b51589c3e9cd4065288225",
+"class/action/admin/adminupdateglobalsettingsaction.class.php" => "6e0bde244069dd68071e915b8d0adf88",
+"class/action/admin/adminupdatelinkaction.class.php" => "9b3ffd88fd6431bd3c3cff73ea423aed",
+"class/action/admin/adminupdatelinkcategoryaction.class.php" => "1c37bdd0f07e94845f87757efb083b46",
+"class/action/admin/adminupdatepermissionaction.class.php" => "6ef5fd19596105fd8a54adcebc206af5",
+"class/action/admin/adminupdatepluginsettingsaction.class.php" => "9ac58d9980bef52ad5afbbf3cd1824ef",
+"class/action/admin/adminupdatepostaction.class.php" => "2eb90af6a4c05fb8b573a8337bfad39b",
+"class/action/admin/adminupdateresourceaction.class.php" => "c50de99159245ca52e64ac7ae0348a96",
+"class/action/admin/adminupdateresourcealbumaction.class.php" => "49958e1c29ca01d0d6fe768e0fc144d7",
+"class/action/admin/adminupdateuserprofileaction.class.php" => "b5e4ff089f630ca52c3d2819eeca8df2",
+"class/action/admin/adminupdateusersettingsaction.class.php" => "243f0176e3eebf60291cc696ca6a69d3",
+"class/action/admin/adminuserprofileaction.class.php" => "232a9d8ee12238e3cdaaafc68155320e",
+"class/action/admin/adminusersettingsaction.class.php" => "c13923f85b328f8fa237773fdd60c162",
+"class/action/admin/adminversioncheckaction.class.php" => "92470a0762af462214cb9350e6c60632",
+"class/action/admin/adminxmlpingaction.class.php" => "c294effd6b4f8ff068feb6acbd297c11",
+"class/action/admin/chooser/adminblogchooseraction.class.php" => "945fd45efd6c0a86c7d5c33306b62118",
+"class/action/admin/chooser/adminblogtemplatechooseraction.class.php" => "7c0dd529fd9360a8a971de793f9c2f33",
+"class/action/admin/chooser/adminresourcelistaction.class.php" => "dbed1f93c7f616df528f6e4d8cd2b47c",
+"class/action/admin/chooser/adminuserchooseraction.class.php" => "04c7c777fbc2dd0d19f74c619fc2bc2b",
+"class/action/admin/chooser/adminuserpictureselectaction.class.php" => "6181770125e6de2ef88fd41fc7259737",
+"class/action/admin/siteadminaction.class.php" => "d295354877fc5ae7388b28ee2d8da16a",
+"class/action/blogaction.class.php" => "5fb9c95e64d43d25d70751336e389e25",
+"class/action/commentaction.class.php" => "c4dcba60033defcf3e317d67a318ac6c",
+"class/action/defaultaction.class.php" => "9118f890cb861e1fb460025b420b9123",
+"class/action/resourceserveraction.class.php" => "f9c70f3f9efe906a1c29e679756df3d2",
+"class/action/rssaction.class.php" => "200cbcf358304da61bbfae2f0098d59c",
+"class/action/searchaction.class.php" => "7e6038c0351adfb2f046b5f455b6f623",
+"class/action/templateaction.class.php" => "b5cb1dc986c0959d5ae7b09c3a8fc114",
+"class/action/viewalbumaction.class.php" => "581720c549f984bf7b999fa88148ac58",
+"class/action/viewarticleaction.class.php" => "4d451e4b39c0eab550dfe327cc09f13b",
+"class/action/viewarticletrackbacksaction.class.php" => "ec4201202c0c42bc80485de378410101",
+"class/action/viewresourceaction.class.php" => "591403b9e238e19bf044e5ae3af15660",
+"class/bayesian/bayesianfiltercore.class.php" => "6077e1f2859e6bafac0cf62d3a48de19",
+"class/bayesian/bayesiantokenizer.class.php" => "909972c1b3b3bb155ef3ca0f856fb35f",
+"class/bayesian/tokenizer.class.php" => "260d60ddd175cf903c0ef13362890309",
+"class/bootstrap.php" => "ba343d67f899d1d2540381580d24212e",
+"class/cache/cache.class.php" => "e4cd11c57b06c7ae0b80f5105d283c21",
+"class/cache/Cache_Lite/Lite.php" => "f4a901856277490f4be70aa97feaf423",
+"class/cache/cachemanager.class.php" => "45b9c2772396a786c73b87f28bef2fb6",
+"class/cache/memcache.class.php" => "feaefe86ef97f4a1fc65cc66c5357035",
+"class/cache/Memcached_Client/memcached-client.php" => "3d3f6d6f6c97ad919578a989e6774f60",
+"class/config/config.class.php" => "31290e0c4f3f28deb63fe84eb8ef5621",
+"class/config/configabstractstorage.class.php" => "4d461ceee50848a060d5a8178ed2ab36",
+"class/config/configdbstorage.class.php" => "2a2c6aec7125fc958a58c5d79f4f55b1",
+"class/config/configfilestorage.class.php" => "1728e609d2be177ad52b0d903c21f7ff",
+"class/config/properties.class.php" => "b46949c25c140bd414546c739a7f1539",
+"class/config/siteconfig.class.php" => "fb2d548f101f507af3624e2b1c47d04a",
+"class/controller/admincontroller.class.php" => "036f5e2cf3fcbabe70ff4649f57abb5e",
+"class/controller/admincontrollermap.properties.php" => "3c48a29a29f3dc0fe05037c7f31ea9cb",
+"class/controller/blogcontroller.class.php" => "d10e2044cce11188d9790231ab50cfb7",
+"class/controller/controller.class.php" => "8a2a1177cba3ce90096a1e9e71dfdae7",
+"class/controller/controllermap.properties.php" => "ed12497da7f052354c8d6441228138ef",
+"class/controller/resourceclassloader.class.php" => "ef81602c941bd77707f021ef8e20c6cd",
+"class/controller/sequentialcontroller.class.php" => "bb616d5321841273a49a45e852c90b9d",
+"class/dao/archivelink.class.php" => "5e3ea8ced6dcfd37d927343a254f5df0",
+"class/dao/article.class.php" => "1ba3e4643c46e2e4595e94bb26a988dc",
+"class/dao/articlecategories.class.php" => "b88070468d440d63bc667b93abc424d7",
+"class/dao/articlecategory.class.php" => "5d86f4faadc25fb8f09f64ede2e8291d",
+"class/dao/articlecomments.class.php" => "4710add1c80c9f168d1da66340da9949",
+"class/dao/articlecommentstatus.class.php" => "33236cf4f0f17a934985a3f19e8872c5",
+"class/dao/articlenotification.class.php" => "874912b99118ac00a733594968151057",
+"class/dao/articlenotifications.class.php" => "064b1d22c459f67ee42de493125f43a0",
+"class/dao/articles.class.php" => "4d4d65b1e6b7532ebf1d17b98f24cb4c",
+"class/dao/articlestatus.class.php" => "e59453a956cd791654a3814ba6e28bf0",
+"class/dao/bayesianfilterinfo.class.php" => "5a38e98e97ba0206a4ee1414b743d31c",
+"class/dao/bayesianfilterinfos.class.php" => "29b66804bac3c0c098a67a6bfbe26b9a",
+"class/dao/bayesiantoken.class.php" => "12b9f48fcdf6bd2a77b2c076c77c1d53",
+"class/dao/bayesiantokens.class.php" => "e02c18ce5054c617185be18f38080c3f",
+"class/dao/blogcategories.class.php" => "dd55979112df1e3ad0ea7ccbd10a5c0d",
+"class/dao/blogcategory.class.php" => "55afe29f5a0dd859909dd6e3c518f51c",
+"class/dao/bloginfo.class.php" => "80674c720b16b5d4c305be4731b81a72",
+"class/dao/bloglinks.class.php" => "661b57c26eac63b77f09c25bf90e695c",
+"class/dao/blogs.class.php" => "5fa7fadccb89c0c393cc6ee5b1c1404d",
+"class/dao/blogsettings.class.php" => "6ea97d10246ceb2cd74b55f6c92c465b",
+"class/dao/blogstatus.class.php" => "cd60f4575928ef687c3793e7f763b773",
+"class/dao/commentscommon.class.php" => "801f9ec8165af327cc7881fe2ecab69e",
+"class/dao/customfields/customfield.class.php" => "4fe1056670f529abca5f833b677207d6",
+"class/dao/customfields/customfieldcheckboxvalue.class.php" => "9a6d7a159cf5dc6edced457facd256a3",
+"class/dao/customfields/customfielddatevalue.class.php" => "280d23d15b1116645cfe5ebc6b01e019",
+"class/dao/customfields/customfieldlistvalue.class.php" => "2592308f816ab565d62e9bcf858f2999",
+"class/dao/customfields/customfields.class.php" => "0fe2b167147c151edcd71bfad743a0ef",
+"class/dao/customfields/customfieldsvalues.class.php" => "8a30727ff92114ceca9b1d03a0ca1043",
+"class/dao/customfields/customfieldvalue.class.php" => "cd2c3f6ca3b603cfe9f517ce837f7058",
+"class/dao/customfields/customfieldvaluefactory.class.php" => "a9f56d97c18c756461c5114eb3d1daf4",
+"class/dao/daocacheconstants.properties.php" => "a182d1a780b5b8b74d4d1c3f397b9678",
+"class/dao/globalarticlecategories.class.php" => "ee7db8a4c6505c1cc7b4c2423fde2f70",
+"class/dao/globalarticlecategory.class.php" => "c004d6c2288c411e5fba349a3a380a21",
+"class/dao/model.class.php" => "380fa140a6fa4dd589c32df6cc2ccd38",
+"class/dao/mylink.class.php" => "5f891cbf0d297e9ec89fa62facacb53e",
+"class/dao/mylinks.class.php" => "963cb3cf0603bdcf74725f1906e4daaa",
+"class/dao/mylinkscategories.class.php" => "d09e286f8ca48af7b0101969800ee185",
+"class/dao/mylinkscategory.class.php" => "621995cd7385633a5cda1d0846c7701c",
+"class/dao/permission.class.php" => "cc2e4be4594db3e57e7ce219667bbba3",
+"class/dao/permissions.class.php" => "7e65f67840122f9ff7b836b211576f4b",
+"class/dao/purgedata.class.php" => "bda37fa959291d0902ba5d74e93b157f",
+"class/dao/recentarticles.class.php" => "4be26e073831ca950a892361c6fab1ab",
+"class/dao/referer.class.php" => "f6572669e0a22b3d60b9a6a50d9078fb",
+"class/dao/referers.class.php" => "383d7ed8d29b5ecee9877300f1385768",
+"class/dao/searchengine.class.php" => "7ef4a3992244a19c2ebe5b21a761d85c",
+"class/dao/searchresult.class.php" => "e67f98d2f6940b33ab0fe33a863c3255",
+"class/dao/sitestatistics.class.php" => "6dade09f34a27e859aab79782f6c6a2e",
+"class/dao/status/genericstatuslist.class.php" => "c5d0e2b65d4850d59cc2c886bcf73548",
+"class/dao/trackback.class.php" => "84920c70bb091cc548812c130146da9c",
+"class/dao/trackbackclient.class.php" => "37a793b39761b979fff0c5fc53c07682",
+"class/dao/trackbacks.class.php" => "5f886c9bd8d251181ec30d9534dc9bf0",
+"class/dao/usercomment.class.php" => "2eb776282ede7e43ad636392d871900a",
+"class/dao/userdata/baseuserdataprovider.class.php" => "21eed9e3ef3c427a4196b6bc40987827",
+"class/dao/userdata/joomlauserdataprovider.class.php" => "e05ccfdb10bdb805e5a9ed95caa6c71b",
+"class/dao/userdata/lifetypeuserdataprovider.class.php" => "c572b45feb75f49d08bbb2bdd246fe52",
+"class/dao/userdata/phpbb2userdataprovider.class.php" => "6ddfe61593d5f250cd66876885c92b90",
+"class/dao/userdata/simplepostnukeuserdataprovider.class.php" => "57e8b49fe8ce7da4e3074ca64a293ff4",
+"class/dao/userdata/vbb3userdataprovider.class.php" => "cd3943b064095a8ed42e0faa4342be28",
+"class/dao/userdata/wbbuserdataprovider.class.php" => "df91d76779fdcd18a08d1f8987a6125d",
+"class/dao/userinfo.class.php" => "9f37b7ecf13563e83ed4ba95eaf39816",
+"class/dao/userpermission.class.php" => "212d24bd2543097e97583c3185bbdc95",
+"class/dao/userpermissions.class.php" => "c313b0300b5dc4debe02c220da25330c",
+"class/dao/users.class.php" => "b0df1719832c59418916653bae025663",
+"class/dao/userstatus.class.php" => "9ce82a0611165ae66322c9f94f4437ce",
+"class/data/captcha/captcha.class.php" => "c55f180126028d9c96b007eadcdca4d4",
+"class/data/Date/Calc.class.php" => "a7deaa74d091053b995bedffb9f82e87",
+"class/data/Date/Human.class.php" => "e22dcf99024106866040f68b9c23b1c3",
+"class/data/Date/Span.class.php" => "e776bc04ed4ad2fab1c935ad5cf19a16",
+"class/data/Date/TimeZone.class.php" => "a84a4b1d49ccc33d539fad13d53d016b",
+"class/data/Date.class.php" => "d4230cd8287f15620f3b629a94fb4cd9",
+"class/data/forms/formvalidator.class.php" => "175408c22388ccc9c3e1bd2ee68b5ce1",
+"class/data/htmlcalendar.class.php" => "8e3dea5c0b5c6720ce18979db0203319",
+"class/data/jalalicalendar.class.php" => "02e045e81421dc67b645b5d06cc6c890",
+"class/data/jalalicalendarstrings.properties.php" => "1adff2c2986992bdffa5cd41fc4f4b71",
+"class/data/kses.class.php" => "809071175d80b6ff9a4da621717aa45c",
+"class/data/mimetype.class.php" => "75706fd028719890b6e6247c3e774061",
+"class/data/pager/pager.class.php" => "e9b11972ecbf81cf5007c852aa1de3c1",
+"class/data/plogcalendar.class.php" => "9ef508e14aceb49b23b0807ac88154fa",
+"class/data/stringutils.class.php" => "222161ed4330ce6e936f5ce8369cfdd1",
+"class/data/textfilter.class.php" => "4107a3781eb9281afed6e2bf7eb214db",
+"class/data/timestamp.class.php" => "ddd7bb1fc35363455ae9c38f2f504747",
+"class/data/utf8/utf8_funcs.php" => "d55387acef86521adf905d469d2ffcf5",
+"class/data/validator/arrayvalidator.class.php" => "496c5d02508343382445cdbdcd2878c1",
+"class/data/validator/blognamevalidator.class.php" => "3dd0a964b0b63a00cc546b6bfb813a4b",
+"class/data/validator/chainedvalidator.class.php" => "d6bf4b8f8d2321fddeee83867827224f",
+"class/data/validator/domainvalidator.class.php" => "375928bc85d0e77634a21c28da5a05c2",
+"class/data/validator/emailvalidator.class.php" => "35342416fc8aba67b42825ec17fffaff",
+"class/data/validator/emptyvalidator.class.php" => "65f03898802a9cb4a1e447190d3fe29d",
+"class/data/validator/floatvalidator.class.php" => "2cf2565da3b2484aae59bd4aa05a99ec",
+"class/data/validator/httpurlvalidator.class.php" => "b2654df03061813a873a3fcb8c5116f3",
+"class/data/validator/integervalidator.class.php" => "6bc60026833c3e24e09eaf55c7ed8efe",
+"class/data/validator/ipmatchvalidator.class.php" => "6b0539473067e3bba7770f7b50600cb6",
+"class/data/validator/passwordvalidator.class.php" => "ea7699451f9b2c8ba2f7899e0816e2bd",
+"class/data/validator/rules/arrayrule.class.php" => "0d8263cc39ed25c711a7a07170dbeab7",
+"class/data/validator/rules/emaildnsrule.class.php" => "d6c62d1336e7bccf705cbb56bc5c5b82",
+"class/data/validator/rules/emailformatrule.class.php" => "fb69b1f807fc9cafd57bea276dada543",
+"class/data/validator/rules/equalrule.class.php" => "0ac19a9a35188ee1d328d54a71836dde",
+"class/data/validator/rules/filteredpatternsrule.class.php" => "4fb66152e5338b1faf7248494b92f32e",
+"class/data/validator/rules/filteredwordsrule.class.php" => "56b2dab4be4fafeaee2975d08aed782b",
+"class/data/validator/rules/floatrule.class.php" => "184596fc43368878eb2c0e04b90a5379",
+"class/data/validator/rules/intrangerule.class.php" => "eb91b63aef792e4483ca739e69ab1d54",
+"class/data/validator/rules/intrule.class.php" => "05b00951a448597ba2c10175ff9b6e16",
+"class/data/validator/rules/ipcidrformatrule.class.php" => "9b787a4ae953e5ebc7f679a943b5ea33",
+"class/data/validator/rules/ipformatrule.class.php" => "dcd7bc1a29d5be96c529567cf83599df",
+"class/data/validator/rules/iprangerule.class.php" => "ea85ef18cea1a0de8ebf8f039dafb7b7",
+"class/data/validator/rules/nonemptyrule.class.php" => "b6121217cd4e518f6487aceab5ffa40c",
+"class/data/validator/rules/numericrule.class.php" => "be39ba94dad1f4b4a4bdbe3305ada719",
+"class/data/validator/rules/regexprule.class.php" => "c606d3ff4b0f4e1b777a5a78c1ae34aa",
+"class/data/validator/rules/rule.class.php" => "c5c03a0f18282f3f335edf6cdad58bd4",
+"class/data/validator/rules/stringrangerule.class.php" => "275dbe3df183df090bcc733bc46dc409",
+"class/data/validator/rules/uintrule.class.php" => "217b2c921bb4d5fe40e011fd602af505",
+"class/data/validator/rules/urlformatrule.class.php" => "a9c865fe0fed17006046927da91c5ae6",
+"class/data/validator/stringvalidator.class.php" => "a8b15a27b92fc0ca8d3c0ff579ebc313",
+"class/data/validator/templatenamevalidator.class.php" => "314991045470a7c612ab64c2b1572187",
+"class/data/validator/templatesetvalidator.class.php" => "5b267446c6d399084709e242f5fd1c9c",
+"class/data/validator/uploadvalidator.class.php" => "b3ff1d07098605d1812a582cb8ee6241",
+"class/data/validator/usernamevalidator.class.php" => "841977d5a56ec94660d7edbea7de0b18",
+"class/data/validator/validation.class.php" => "fa36ef81badc9a7b43dc2a3d273d16c5",
+"class/data/validator/validator.class.php" => "e9cbc48e9f4e0390b6feac781dc7bf2c",
+"class/database/db.class.php" => "f299ad8197d01c105d6b38c34960f73c",
+"class/database/dbobject.class.php" => "08929f364b2d0026e4fd364a64cbc8ed",
+"class/database/pdb/datadict/pdbbasedatadict.class.php" => "d8831f0b41b53a855a588be19ff40376",
+"class/database/pdb/datadict/pdbfielddescobject.class.php" => "464a4f6e7adba2bf82a0ed997a445c2d",
+"class/database/pdb/datadict/pdbmysqldatadict.class.php" => "805157d050e3b52f545b48e8ffc79b03",
+"class/database/pdb/drivers/pdbdriverbase.class.php" => "5e3bf6b467dd1b586c52ec6827e721b2",
+"class/database/pdb/drivers/pdbmysqldriver.class.php" => "9694d22980b5430dba57b710b469ce4d",
+"class/database/pdb/drivers/pdbmysqlrecordset.class.php" => "85069d7b0b57e6e57b66535f79a66edb",
+"class/database/pdb/drivers/pdbrecordset.class.php" => "93c662009d61ee7c4dbf0f6eb6f9cddc",
+"class/database/pdb/pdb.class.php" => "9553ac65962be1b920398daf2de31f57",
+"class/Doxyfile" => "2c8d73b7d2c38b942adc4b0438e31386",
+"class/file/file.class.php" => "d953223aaa5f0439ef6c5bca75a88d1a",
+"class/file/fileproperties.class.php" => "5868c86b0944b4951cfc3e5f3d97a329",
+"class/file/fileupload.class.php" => "f3de8493f9f2baa154da4cf9ce67d41a",
+"class/file/fileuploads.class.php" => "ea749115f9995beea84c04debdca64de",
+"class/file/finder/filefinder.class.php" => "a9b2e8288721266a1eb2c224ff79fbde",
+"class/file/unpacker/baseunpacker.class.php" => "ccd469fa0a704c35a576e32020f7fdc1",
+"class/file/unpacker/pclzip.lib.php" => "ccceeb3a088942aa9910afb4574d3e2c",
+"class/file/unpacker/rarunpacker.class.php" => "d6d549a2b8488dbdca45f431c006509d",
+"class/file/unpacker/tarbz2unpacker.class.php" => "6634edb12c179916949e433693388ed6",
+"class/file/unpacker/targzunpacker.class.php" => "9146f748ae222272165f84d17c93dce6",
+"class/file/unpacker/unpacker.class.php" => "8509bbe45a3f7d6167b7cb804ee46a6b",
+"class/file/unpacker/zipunpacker.class.php" => "288bda4bf3fa9ba84cc4b5a6daf2cdbb",
+"class/gallery/dao/galleryalbum.class.php" => "504f4014baae3a4e98440b619b9dd584",
+"class/gallery/dao/galleryalbums.class.php" => "4254140fe7f1a0e4475bcd6df6e741ba",
+"class/gallery/dao/galleryitemslist.class.php" => "ee4a7693d67e26b07e111f22b3d05bf3",
+"class/gallery/dao/galleryresource.class.php" => "6826d0ec9376b461e29d583b5dbf6396",
+"class/gallery/dao/galleryresourcequotas.class.php" => "5200fa349f7630c1ef0c0c809d5a22f6",
+"class/gallery/dao/galleryresources.class.php" => "e2484c32cd6679f3480b560acb021ff2",
+"class/gallery/dao/galleryresourcestorage.class.php" => "da32b431f864fc2473c38b7a42741904",
+"class/gallery/data/galleryresourcebasemetadatareader.class.php" => "50996102c1feeb7ab2ec9fbe07614a90",
+"class/gallery/data/galleryresourceimagemetadatareader.class.php" => "19f8f53cb9637776da6c333c31d083f6",
+"class/gallery/data/galleryresourcesoundmetadatareader.class.php" => "864e069b1257016d990f53ce551a3935",
+"class/gallery/data/galleryresourcevideometadatareader.class.php" => "8d2238db9f1631d0e2a52e056d352260",
+"class/gallery/data/galleryresourcezipmetadatareader.class.php" => "3f438e75ee96b18f9931e3a4bf69ffc2",
+"class/gallery/galleryconstants.php" => "3a4beec544ab9a544611bbfdbcd75cb1",
+"class/gallery/getid3/extension.cache.dbm.php" => "ebf10477d37688a47ed0442c30cf0215",
+"class/gallery/getid3/extension.cache.mysql.php" => "595b019d0b2f5f62527a4cc0523db92b",
+"class/gallery/getid3/getid3.lib.php" => "3a262316fae2cdc4afd536abc311f474",
+"class/gallery/getid3/getid3.php" => "0d95cdd5852fd834451adf6fd19812af",
+"class/gallery/getid3/module.archive.gzip.php" => "0bd259d657ae24f5d915aa17862d9cc5",
+"class/gallery/getid3/module.archive.rar.php" => "556a7385fbe982f368b1f1a838c7a7a9",
+"class/gallery/getid3/module.archive.szip.php" => "702398d8cd9f8cc022d912cceeb3469a",
+"class/gallery/getid3/module.archive.tar.php" => "9f7cf60ba8e2049c7bbd6e7efbdddc1e",
+"class/gallery/getid3/module.archive.zip.php" => "177624fe4e0c190ec3ee1e9e4bdf07f2",
+"class/gallery/getid3/module.audio-video.asf.php" => "04944ee66d8908e6c31136c52ee8c78c",
+"class/gallery/getid3/module.audio-video.bink.php" => "056b35a88c44ce9caa7327161262dbc7",
+"class/gallery/getid3/module.audio-video.flv.php" => "2bd00daa048350679b43d2748ebbbe94",
+"class/gallery/getid3/module.audio-video.matroska.php" => "a09d70604ea5be7f47869daa5f3e29eb",
+"class/gallery/getid3/module.audio-video.mpeg.php" => "21e1759829bb359cd6cfd341a66d4360",
+"class/gallery/getid3/module.audio-video.nsv.php" => "4d87d87b9f3555802a710742caabdbca",
+"class/gallery/getid3/module.audio-video.quicktime.php" => "9e7fac3fd905c57ed19e0c22c631c119",
+"class/gallery/getid3/module.audio-video.real.php" => "d413b425e982b88226c788ce5a281dcc",
+"class/gallery/getid3/module.audio-video.riff.php" => "551269aafb58b26b26819d44c4d0c46b",
+"class/gallery/getid3/module.audio-video.swf.php" => "436161d8a0223a0d834c9610ac1abec0",
+"class/gallery/getid3/module.audio.aac.php" => "16dcf5371e3d51ace2b2cf9338ea4f2d",
+"class/gallery/getid3/module.audio.ac3.php" => "20a8c9eb5c73f81931b6817d4d7bf91d",
+"class/gallery/getid3/module.audio.au.php" => "ebc40ba90d9ea64d7d4e9d832af303e2",
+"class/gallery/getid3/module.audio.avr.php" => "9f3640167a69312f7f64e8fc598f5e89",
+"class/gallery/getid3/module.audio.bonk.php" => "55a95aa0cfcd8b6feb2c01e3140e018c",
+"class/gallery/getid3/module.audio.flac.php" => "0ab78bc9339ef02b2840c9ae31880760",
+"class/gallery/getid3/module.audio.la.php" => "7f2d5c9ad64be3185e9574bbef7b6cbc",
+"class/gallery/getid3/module.audio.lpac.php" => "ed95b137caf56ba8b9408318cb8e0baa",
+"class/gallery/getid3/module.audio.midi.php" => "f0086c48abd53402b4f0e631384706fa",
+"class/gallery/getid3/module.audio.mod.php" => "25b709b773fc4225e7eb21366469a5f1",
+"class/gallery/getid3/module.audio.monkey.php" => "4af24e14d5bc84bfd4183bcc5a17eeae",
+"class/gallery/getid3/module.audio.mp3.php" => "51e5fb276857b6aceb3f58ddbad5a5ba",
+"class/gallery/getid3/module.audio.mpc.php" => "90f0f2e5c62ff0dc64f4e33d763edbf6",
+"class/gallery/getid3/module.audio.ogg.php" => "86839077d18436cbe860f7910563a454",
+"class/gallery/getid3/module.audio.optimfrog.php" => "5b723e3ac39da0d312ca4eb35335e95e",
+"class/gallery/getid3/module.audio.rkau.php" => "897a2eeaba82479c855ac7f135e8824a",
+"class/gallery/getid3/module.audio.shorten.php" => "68a80a8f7c92de32fef619365a4409de",
+"class/gallery/getid3/module.audio.tta.php" => "8bc89f95dd33199d7ca0215bf5937ddb",
+"class/gallery/getid3/module.audio.voc.php" => "2a9deac956c7e0e82c86454f35a2cd61",
+"class/gallery/getid3/module.audio.vqf.php" => "32ffa2a853cf39299d331ec92df699b9",
+"class/gallery/getid3/module.audio.wavpack.php" => "9709af4f2e11d4dac9503dc664c747c6",
+"class/gallery/getid3/module.graphic.bmp.php" => "4c6fa319b4fe51221614e15abc7405ff",
+"class/gallery/getid3/module.graphic.gif.php" => "ecc4c00249c67036ca1f728a46675d91",
+"class/gallery/getid3/module.graphic.jpg.php" => "2dc27f202c284245ee3c9d72e98f63ba",
+"class/gallery/getid3/module.graphic.pcd.php" => "82c456ae06803634ef702df1b588aa1e",
+"class/gallery/getid3/module.graphic.png.php" => "89e417990a9006896d1239cc2eaeb05f",
+"class/gallery/getid3/module.graphic.svg.php" => "4e52b9d52c06f144f34be34c5079b928",
+"class/gallery/getid3/module.graphic.tiff.php" => "f80a97983216f0a9c76ee6b2a56f37fa",
+"class/gallery/getid3/module.misc.exe.php" => "88a10d7202d4c28710062901d86e833a",
+"class/gallery/getid3/module.misc.iso.php" => "b69f42df92841d06c420e4686f8dad95",
+"class/gallery/getid3/module.tag.apetag.php" => "68bc4038cb387bc69b46bfa234c9c2fa",
+"class/gallery/getid3/module.tag.id3v1.php" => "1d5f4646cf82fbb56174c938b4bebdce",
+"class/gallery/getid3/module.tag.id3v2.php" => "b9b67a360e3cb90aaa53addc5a4af88f",
+"class/gallery/getid3/module.tag.lyrics3.php" => "f03333b138e01c9b06769b115328a278",
+"class/gallery/getid3/write.apetag.php" => "3fb50c207a82187ddf30f6f9a149aa17",
+"class/gallery/getid3/write.id3v1.php" => "cd9f2c8ea48ee20e359f25a3b7902c18",
+"class/gallery/getid3/write.id3v2.php" => "a2bb3e02a0e90fed5455e51e264d9ebc",
+"class/gallery/getid3/write.lyrics3.php" => "e2b4ddffda9ddf1c8734a751423e3b94",
+"class/gallery/getid3/write.metaflac.php" => "f9f3c575a7880020eea23a4d572445e2",
+"class/gallery/getid3/write.php" => "19be4fc22ccff57c4a3560d9e9aefdc9",
+"class/gallery/getid3/write.real.php" => "5043f5fdac2cd6240227fdfee1e24617",
+"class/gallery/getid3/write.vorbiscomment.php" => "36ced0f0902603e1ce0601ad7c95f39e",
+"class/gallery/helperapps/index.html" => "806d8942eb70ed2d827b12ed2bf44533",
+"class/gallery/resizers/galleryabstractresizer.class.php" => "9ad8e8997ed9cf1e5986debfa6b0e9e6",
+"class/gallery/resizers/gallerygdresizer.class.php" => "083f0757fb2d3405e9b21e26d0dd3cd4",
+"class/gallery/resizers/galleryimagemagickresizer.class.php" => "3d6e400b86319d1c654b84fea9236fbd",
+"class/gallery/resizers/gallerynullresizer.class.php" => "11ef7e3d107196ef4507f4b0c556f16d",
+"class/gallery/resizers/galleryresizer.class.php" => "78f985a8eaf1897906632e2b13803f7a",
+"class/gallery/resizers/gallerythumbnailgenerator.class.php" => "476712ecd901093537dda6043a284445",
+"class/gallery/resizers/gddetector.class.php" => "e51be90a7ced02522edf1fc98cc281dc",
+"class/gallery/template/gallerytemplatetools.class.php" => "ceff569c9702482d1bcb1973d5bb40bc",
+"class/locale/bloglocale.class.php" => "f9a24d8224732c62262b40eee126d640",
+"class/locale/locale.class.php" => "5c2e8f472c9e14e0965c10c10f32e0f7",
+"class/locale/localefinder.class.php" => "7692aa987553095b935527df3ca328ef",
+"class/locale/locales.class.php" => "e7edb3acbe2a9c9270b6c9ae4ec26676",
+"class/locale/pluginlocale.class.php" => "45b614ced2cdcf613504ea38a4d7453d",
+"class/logger/appender/appender.class.php" => "b2aba50836d2ad0c642100f70ab72357",
+"class/logger/appender/fileappender.class.php" => "efddf7be01e64463a064c408af6c1786",
+"class/logger/appender/nullappender.class.php" => "62a2868c44221894b85729c89f7ccd21",
+"class/logger/appender/stdoutappender.class.php" => "d5057aca885eb20ebe0c09378910aa8a",
+"class/logger/config/loggerconfigloader.class.php" => "941e7792191394ffe339c236ecf6799f",
+"class/logger/layout/layout.class.php" => "18534cea27f1be14888cc725490950bd",
+"class/logger/layout/patternlayout.class.php" => "c3ccf6c0ee5d61cead508e2bec461163",
+"class/logger/logger/loggedmessage.class.php" => "41f50ea0e186abb229da744f4382612c",
+"class/logger/logger/logger.class.php" => "8b3e9f9bf34929f677121507528273f8",
+"class/logger/loggermanager.class.php" => "10af54a6be676232059e64835a212e9f",
+"class/logger/LogUtil.php" => "000a473592b19f1272a1ad4fb5e40a89",
+"class/mail/emailmessage.class.php" => "250b0b5301f74c82d1ed1913b49541c5",
+"class/mail/emailservice.class.php" => "ee6eff352cee59eb1268a3d950b1413b",
+"class/mail/phpmailer/class.phpmailer.php" => "fe8e3c61b4f857c39130362e057519a6",
+"class/mail/phpmailer/class.smtp.php" => "d1200166732f0787bfa0aaedb23803d9",
+"class/mail/phpmailer/language/phpmailer.lang-en.php" => "b7f236cc4933f80627057b537d69c74b",
+"class/mail/phpmailer/LICENSE" => "ef938cb01cb27e791cc3c596e363acfb",
+"class/mail/phpmailer/README" => "01180808a6749882a156f65d50498980",
+"class/misc/glob.class.php" => "0a592700eb3515e7cf320f3e578a1972",
+"class/misc/info.class.php" => "7cfe0192092ede53a511c5ccd87aa971",
+"class/misc/integritychecker.class.php" => "5306d1bf2beb473f3ccf8f8bf8201269",
+"class/misc/osdetect.class.php" => "4dae9cf9c5c6c2c7a6f7bccadba9016f",
+"class/misc/version.class.php" => "9666b831caf0785d72ac46efa67e77fe",
+"class/net/baserequestgenerator.class.php" => "a0c158e729a5f422ff9100186777c0ce",
+"class/net/client.class.php" => "111ecb8e15ae1897063dc15cf9ce85b4",
+"class/net/customrequestgenerator.class.php" => "22272bfb1bcd512e9f46389d422b376d",
+"class/net/customurlhandler.class.php" => "af337acebc581421373a8b0f17265073",
+"class/net/dns.class.php" => "c5745f8d71aa8a962560d9649b19dbfd",
+"class/net/http/httpcache.class.php" => "12e4d85d8bdb5b439f0b1c62b79cca35",
+"class/net/http/httpclient.class.php" => "fb7359cf4919ee1111596a53c2ddf415",
+"class/net/http/httpvars.class.php" => "5d188d4abc26365abcbd1f7da27f2dab",
+"class/net/http/phpsniff/LICENSE" => "64fc8352fb2f06d270a7f97696f7c525",
+"class/net/http/phpsniff/phpSniff.class.php" => "b9d22e799e0e73e5da195712053589b0",
+"class/net/http/phpsniff/phpSniff.core.php" => "912c7a39f70f08d11abcbb0aca0890f8",
+"class/net/http/phpsniff/user_agent.inc" => "a4e141c523efef5636db812ca950c70c",
+"class/net/http/session/sessioninfo.class.php" => "e0e8926fd46aa5b77fc46f112efdd293",
+"class/net/http/session/sessionmanager.class.php" => "5a4870c24b36ca72d6812239a7c0534c",
+"class/net/http/subdomains.class.php" => "f862962366a27ff4ddc4c77345630f99",
+"class/net/linkformatmatcher.class.php" => "85bd8a690c6d6a08f15ce1ddde856331",
+"class/net/linkparser.class.php" => "41c596a190e497c5473523ca89ffd78f",
+"class/net/modrewriterequestgenerator.class.php" => "28ebabc4d85f928e77cf00a5567ed1da",
+"class/net/prettyrequestgenerator.class.php" => "3d96cdcd443b11afbe4a4a85fe7a4bf6",
+"class/net/prettyrequestparser.class.php" => "279228928ebdc79fb88624ff03fa8f36",
+"class/net/rawrequestgenerator.class.php" => "0ecf21f15f13cd5b7ae793e2e3f3fa93",
+"class/net/request.class.php" => "2e40efd142ce486c9b0a5fe28275b9cc",
+"class/net/requestgenerator.class.php" => "66b73924eb806c481ab661b94a84b33d",
+"class/net/url.class.php" => "9447a5abeac7497618739efa7c4618fe",
+"class/net/xmlrpc/IXR_Library.lib.php" => "bfdf356ecf1353dac902e00bb959fe41",
+"class/net/xmlrpc/xmlrpcserver.class.php" => "24042bc4044983dee4b00bac433ab6c8",
+"class/net/xmlrpcclient.class.php" => "d9ef470aa691c99e42eaaa460e1813f0",
+"class/object/exception.class.php" => "49f5d9a2c78221cf43cc7c6b5e664164",
+"class/object/loader.class.php" => "306278d7d271a47c3b631e77a36189d1",
+"class/object/loggable.class.php" => "531422993f309fd75729d2f22adba747",
+"class/object/object.class.php" => "19546c38d3f099aeb11f95a88df5cfa0",
+"class/object/observable.class.php" => "72e9c36925e379754281ca5080fc58d3",
+"class/object/observer.class.php" => "be1cff89c70bb8b0b24b29b6c68a2953",
+"class/object/reflection.class.php" => "d7e36961d58563b5ae19b53728fdb318",
+"class/plugin/eventlist.properties.php" => "7026b933c0dac44a946e3e8d7c8a144c",
+"class/plugin/globalpluginconfig.class.php" => "e5b4e7d970b2abf638f74329596fbbc1",
+"class/plugin/pluginbase.class.php" => "2803df61635a40f42a7c08c8c3294998",
+"class/plugin/pluginmanager.class.php" => "5e9b25769ce067e39ade2b4beaf6ff54",
+"class/security/bayesianfilter.class.php" => "8c83462886854a62cf474cc5126016e8",
+"class/security/commentfilter.class.php" => "eceb3619590ca60e0d31734ea9b0368e",
+"class/security/nullpipelinefilter.class.php" => "9db87563f4c06f91d77c159378ec4bd6",
+"class/security/pipeline.class.php" => "3b40cf04bd614cd17326f8c9f4fa6d57",
+"class/security/pipelinefilter.class.php" => "1b99e0f49630e6a905db32fa247d674f",
+"class/security/pipelinerequest.class.php" => "76ed531ea21f4984ef04614497b41c55",
+"class/security/pipelineresult.class.php" => "8a274599385878f547214220df50f2e1",
+"class/summary/action/activeaccountaction.class.php" => "15734019f31bdda2ad67917148ce8449",
+"class/summary/action/bloglistaction.class.php" => "02d6d1735c8bab9453b2d609156f1125",
+"class/summary/action/blogprofileaction.class.php" => "241a2c93855ff7004cee33cc8b5b5e41",
+"class/summary/action/checkusernameajaxaction.class.php" => "e85b1c06b04119398cee470bdf84480c",
+"class/summary/action/chooseblogtemplateaction.class.php" => "6ab4ca4083525c9db90ed94da7e7b99b",
+"class/summary/action/doblogregistration.class.php" => "c957f590e57f57a4de909920d87846bb",
+"class/summary/action/dofinishregister.class.php" => "a371116325a5f014ca92ac288b1291ad",
+"class/summary/action/doreadagreement.class.php" => "c4395238cbd9a25c48d4cd71dface77c",
+"class/summary/action/dousercreation.class.php" => "2890c07857944803a5811d6b55c59da2",
+"class/summary/action/douserregister.class.php" => "9a094bf1a5a0a4b532d13766b86eb878",
+"class/summary/action/postlistaction.class.php" => "7721f3ee18fe6f6cf39a3307137b1cec",
+"class/summary/action/registeraction.class.php" => "d82e057e238ff37571a135baa9c5c95a",
+"class/summary/action/summaryaction.class.php" => "f4d9a78959b5ae8536f596e7a7923a74",
+"class/summary/action/summarycustompageaction.class.php" => "b03d442f320768ec8ee8063b7110c8ac",
+"class/summary/action/summarydefaultaction.class.php" => "67d0e2e647df4c3d812efe29c93486fc",
+"class/summary/action/summaryregistrationaction.class.php" => "533a14cddd3a4cff5dc3a1a9abbefe04",
+"class/summary/action/summaryrssaction.class.php" => "677fb73abfb2703e875da592a759022b",
+"class/summary/action/summarysearchaction.class.php" => "47460503e83ebe4bff0b54ae0f4f41f1",
+"class/summary/action/summarysendresetemail.class.php" => "77d9375c12a45667729c2fb80c3785d0",
+"class/summary/action/summarysetnewpassword.class.php" => "57eace359f1dbad64e5c7c5d0f6f54c3",
+"class/summary/action/summaryshowresetpasswordform.class.php" => "2ee9ac5e99330ba79c43449a2861fe6b",
+"class/summary/action/summaryupdatepassword.class.php" => "f9bfa5db17efc92b6f45110b5a8f557d",
+"class/summary/action/userlistaction.class.php" => "1ce2308bf59993e51cce99ca47bc5730",
+"class/summary/action/userprofileaction.class.php" => "13f3a42902f979d8b59814c9c954feea",
+"class/summary/controller/registrationcontroller.class.php" => "6b0624392117494605f86b11687ec0ec",
+"class/summary/controller/summarycontroller.class.php" => "90449a6962dcfbc2b40ba7fadf3c00c3",
+"class/summary/dao/summarystats.class.php" => "7e205a002250079036cb8caf3204951b",
+"class/summary/dao/summarystatsconstants.class.php" => "b1c24b1e9454f102f3745392f3af4d90",
+"class/summary/data/summarytools.class.php" => "ddc106bd4890f881c0a6b07760b996f7",
+"class/summary/data/validator/customsummarypagevalidator.class.php" => "73cedc81fcd9c0b3135d456f6cb77396",
+"class/summary/mail/confirmemailmessage.class.php" => "2025c175a869e68f4ef3a955f087e02b",
+"class/summary/mail/summarymailer.class.php" => "3dad6479c23488f55bc15bc759e86b6c",
+"class/summary/net/summaryrequestgenerator.class.php" => "aaa1d365a55a37982417ae1031a36d5b",
+"class/summary/view/blogtemplatechooserview.class.php" => "2e1d7b1ff7081687da8a17efa8d937aa",
+"class/summary/view/doblogregistrationview.class.php" => "77fe8c4f4030202206ec172c37bbd3bb",
+"class/summary/view/summarybloglistview.class.php" => "80ba60d3d03cfcb27b594c31ed7819ca",
+"class/summary/view/summarycachedview.class.php" => "879d94ae02c3a904e5b32ccf1659a733",
+"class/summary/view/summarymessageview.class.php" => "f3f1ead7b27d73afb12fc7d1992e1f2b",
+"class/summary/view/summarypostlistview.class.php" => "22ef4b0844e7aba0015fb03d4d829ec5",
+"class/summary/view/summaryrssview.class.php" => "9ae8f3f39c1472b7eee0d0eb93492c01",
+"class/summary/view/summaryusercreationview.class.php" => "2b69e96bc271ab5c57214ec8da83cff2",
+"class/summary/view/summaryuserlistview.class.php" => "e49be678b705df83daeba7b44d7cedee",
+"class/summary/view/summaryview.class.php" => "b45f749842f729a5a53be4ce9195dbc4",
+"class/summary/view/summaryxmlview.class.php" => "7271465d8892633399f1d214d899b26b",
+"class/template/cachecontrol.class.php" => "305894e2c97d80f3ea662caa45f448e1",
+"class/template/cachedtemplate.class.php" => "43d1a3c347c9babea1c491c9cd407bce",
+"class/template/menu/menu.class.php" => "acdb353b332c08dc0ad0f8a4ae5abca5",
+"class/template/menu/menuentry.class.php" => "58d8c53be21d3c145bef4c10dc6216db",
+"class/template/menu/menurenderer.class.php" => "e378842d36060ad97203e025d9af0182",
+"class/template/smarty/Config_File.class.php" => "a6ed67e2208f7589489248c31299aaf8",
+"class/template/smarty/debug.tpl" => "def6c6e062941c8b2986f9f977b26307",
+"class/template/smarty/internals/core.assemble_plugin_filepath.php" => "c98832bd718c94629c732b5d4c2980cb",
+"class/template/smarty/internals/core.assign_smarty_interface.php" => "4c2dd142c1c59e101b2f60cfc7a7cdc2",
+"class/template/smarty/internals/core.create_dir_structure.php" => "a12f6e4653dc814369202e0ed57206b0",
+"class/template/smarty/internals/core.display_debug_console.php" => "297b9baf349e7f32e8e815612e823e3c",
+"class/template/smarty/internals/core.get_include_path.php" => "ba78ea6d4112d4325b00e4b8101497c6",
+"class/template/smarty/internals/core.get_microtime.php" => "72eb40e8367f77f0bd251e15a5bd4f5f",
+"class/template/smarty/internals/core.get_php_resource.php" => "e0fccd538d6f0ed8915d39cc2f9dd860",
+"class/template/smarty/internals/core.is_secure.php" => "7ea83dd65e64bc0bc893d44096ec61e0",
+"class/template/smarty/internals/core.is_trusted.php" => "83e22de7a251fef6a033769b35989bf6",
+"class/template/smarty/internals/core.load_plugins.php" => "d60028c542ec06749cd2d381bc07d0c2",
+"class/template/smarty/internals/core.load_resource_plugin.php" => "08d531fb688eed7253b316b11436e512",
+"class/template/smarty/internals/core.process_cached_inserts.php" => "2a846ebfec89211b7090149052374059",
+"class/template/smarty/internals/core.process_compiled_include.php" => "6da8abe9ab2050618fd6e344fbc8059b",
+"class/template/smarty/internals/core.read_cache_file.php" => "e7de28f374768f8b319687a34e226c80",
+"class/template/smarty/internals/core.rm_auto.php" => "8834d9e9a8aa8473244d74096638b5c2",
+"class/template/smarty/internals/core.rmdir.php" => "08209df8f3113b0d8322bcac3b5e055b",
+"class/template/smarty/internals/core.run_insert_handler.php" => "f6452eb1f0f65cf3b07634228ea4c938",
+"class/template/smarty/internals/core.smarty_include_php.php" => "0d87e492eb18ec8b4fa492f2ac34c163",
+"class/template/smarty/internals/core.write_cache_file.php" => "6e0ca7e246ee7a6fea7e2e6e4381332b",
+"class/template/smarty/internals/core.write_compiled_include.php" => "ff7944e8092eaf7c2ee97d865df29788",
+"class/template/smarty/internals/core.write_compiled_resource.php" => "caa79e832d4587991606dd9a0988c852",
+"class/template/smarty/internals/core.write_file.php" => "127fd445265937b22e0bdb35ff6da0c9",
+"class/template/smarty/plugins/block.check_perms.php" => "5c1fedcae64959f739cecc17f8ce9c4f",
+"class/template/smarty/plugins/block.textformat.php" => "f4e1cc15997ff132066f5e4e09e92054",
+"class/template/smarty/plugins/block.user_cannot_override.php" => "53f71dea630b671f89215d56c90da9f3",
+"class/template/smarty/plugins/compiler.assign.php" => "6c3aaef0d3723c9f5875c7cd3610c1e6",
+"class/template/smarty/plugins/function.adminpager.php" => "d7a4b3040b51b4ac52dbc4533bb43793",
+"class/template/smarty/plugins/function.assign.php" => "4edfd52c4c4f705dce82db9515cf170a",
+"class/template/smarty/plugins/function.assign_debug_info.php" => "0abdfebfea185a7b1a727d9546e244be",
+"class/template/smarty/plugins/function.assignvar.php" => "35808856254524b705f06aa50ad10f69",
+"class/template/smarty/plugins/function.config_load.php" => "fa6466c59cab6333c64ac270dd6c53b1",
+"class/template/smarty/plugins/function.counter.php" => "9531e844efd007c593dadd6173cb0bbd",
+"class/template/smarty/plugins/function.cycle.php" => "db7b2e51bd5e26f93032929dcb2d531b",
+"class/template/smarty/plugins/function.debug.php" => "4963d564da17a2578fc5f56d9c53e7bc",
+"class/template/smarty/plugins/function.eval.php" => "3fedd0e2a4c285200c12fe6427bc2739",
+"class/template/smarty/plugins/function.fetch.php" => "51259f99b6554fa1a6a60013a5e7880a",
+"class/template/smarty/plugins/function.html_checkboxes.php" => "a05460918e36fd9ef66d955754868a3e",
+"class/template/smarty/plugins/function.html_image.php" => "de11daabe07795fe4229b8d0185489dd",
+"class/template/smarty/plugins/function.html_options.php" => "b634076ab0424a5b8310ff733c5615a6",
+"class/template/smarty/plugins/function.html_radios.php" => "6a00315efe8f8202823ade3bf3e6e513",
+"class/template/smarty/plugins/function.html_select_date.php" => "ad1d200bf750d98379cfc5507eac681d",
+"class/template/smarty/plugins/function.html_select_time.php" => "ac7c160c72b293e6509840a5aba9a429",
+"class/template/smarty/plugins/function.html_table.php" => "d7ade8af24efeb33f852bef185004521",
+"class/template/smarty/plugins/function.mailto.php" => "03b5b66b3c6221c34b0d27c030dc7b60",
+"class/template/smarty/plugins/function.math.php" => "0b33b8526bcff403e3d650c3d7eb982b",
+"class/template/smarty/plugins/function.pager.php" => "72c20527622ff918107a0b5e8481e6d4",
+"class/template/smarty/plugins/function.popup.php" => "1e8b78080d08a386ba297c0dbb7c3a7b",
+"class/template/smarty/plugins/function.popup_init.php" => "b2353a42807535109e1f037c0d51f19c",
+"class/template/smarty/plugins/function.posts.php" => "b43f6d9834fa989c6d9f7ec6d9118b56",
+"class/template/smarty/plugins/modifier.capitalize.php" => "70f58c49c5bd2851be11a3d67a92d2a4",
+"class/template/smarty/plugins/modifier.cat.php" => "9dbc6c2d6d78165d9d0ffae481509b6a",
+"class/template/smarty/plugins/modifier.count_characters.php" => "91694b84f8b86aa551ff49ced16dbd11",
+"class/template/smarty/plugins/modifier.count_paragraphs.php" => "c64e0f47b6435424a7bf9647eed06c1e",
+"class/template/smarty/plugins/modifier.count_sentences.php" => "c22e43e96e6ecd34cc18bc5235d59337",
+"class/template/smarty/plugins/modifier.count_words.php" => "073467c9ea7434647bb9ff27fe09183b",
+"class/template/smarty/plugins/modifier.date_format.php" => "5d57183abba166f670d0b8649086f516",
+"class/template/smarty/plugins/modifier.debug_print_var.php" => "083998f71b350e0f2bea5b46477680c2",
+"class/template/smarty/plugins/modifier.default.php" => "11c16bd6f7dde6d576d7f93433652925",
+"class/template/smarty/plugins/modifier.escape.php" => "3bd0b2464f2fe8e2688da39079d84190",
+"class/template/smarty/plugins/modifier.indent.php" => "ea1f5db88c00e850c3968e434eadb074",
+"class/template/smarty/plugins/modifier.lower.php" => "5520933762ceac07d49e658c52587279",
+"class/template/smarty/plugins/modifier.nl2br.php" => "1d16b98e8ec34aac69f0827fab1dc999",
+"class/template/smarty/plugins/modifier.regex_replace.php" => "d4e8f465bc8adbd6119e788dfea53d66",
+"class/template/smarty/plugins/modifier.replace.php" => "b7d144b301a878c3015f9ba96b1922c6",
+"class/template/smarty/plugins/modifier.round.php" => "84394323e28204c7cd7521bd3c896fbd",
+"class/template/smarty/plugins/modifier.spacify.php" => "66993120ab60306acd278a327c5af448",
+"class/template/smarty/plugins/modifier.stars.php" => "3b2a4a6e95605b2177aa87b25341d5be",
+"class/template/smarty/plugins/modifier.string_format.php" => "401048107fc62eecf175d2a0ab997161",
+"class/template/smarty/plugins/modifier.strip.php" => "b1281f77297db8c1e50bc1fd883ebd78",
+"class/template/smarty/plugins/modifier.strip_tags.php" => "481144a581e2d56a2182add2e09c5641",
+"class/template/smarty/plugins/modifier.substr.php" => "3f136f70b61ba695d9e92acce890166f",
+"class/template/smarty/plugins/modifier.truncate.php" => "da35c3d0a2dfc9ea11c32b3a10246aa7",
+"class/template/smarty/plugins/modifier.upper.php" => "0ef0e9784273f5d5384f34ad303bd15e",
+"class/template/smarty/plugins/modifier.url_parse.php" => "ab2c1b02771b3223c493b6878b30a5a0",
+"class/template/smarty/plugins/modifier.utf8_truncate.php" => "c710338dddd33172e44de07a92f0255b",
+"class/template/smarty/plugins/modifier.utf8_wordwrap.php" => "3f5d2d9f3373054777ab7a56b55e6dc5",
+"class/template/smarty/plugins/modifier.wordwrap.php" => "b80bdf801ac29e3aa4662a0428b676e4",
+"class/template/smarty/plugins/outputfilter.trimwhitespace.php" => "6535eaea7108bacf0bd81d45983eced2",
+"class/template/smarty/plugins/shared.escape_special_chars.php" => "2f7221015323ba27d2ed5ae20450fa0d",
+"class/template/smarty/plugins/shared.make_timestamp.php" => "29ffe6553da8fda72147a12273105e10",
+"class/template/smarty/Smarty.class.php" => "e56c4e4d83d7f920a10cebd261596342",
+"class/template/smarty/Smarty_Compiler.class.php" => "e9a2dd9a16a0206583cfe02b758b59da",
+"class/template/template.class.php" => "f43d9c7417b6a6876ea8f66a28ee021b",
+"class/template/templatesandbox.class.php" => "8c4c5d89b7b4b61e5e139746bd3cbe6b",
+"class/template/templateservice.class.php" => "28406ea02cfafad8e9c98a46febde827",
+"class/template/templatesets/templatefinder.class.php" => "3807a835ce28aff4b772f7f5e541695a",
+"class/template/templatesets/templateset.class.php" => "9dd4308da0722cf28d14bfdf908fdafa",
+"class/template/templatesets/templatesets.class.php" => "ace7d9d71d5831b3fbfbd0b3b5915ab5",
+"class/template/templatesets/templatesetstorage.class.php" => "b41a451771e4a6bec51fcba6744a33b6",
+"class/template/templateutils.class.php" => "acba24cd1a8262c6599890f28b0c4b52",
+"class/test/helpers/consolereporter.class.php" => "388bb41b5ddd69891bc25747b523aa05",
+"class/test/helpers/htmlreporter.class.php" => "e40ca92e6a19953e93f17f8fc43852e4",
+"class/test/helpers/lifetypetestcase.class.php" => "6ab742d7b9262238aab71463ab2f23c2",
+"class/test/helpers/testtools.class.php" => "5b283a42094db986dd37fdac8c9198d3",
+"class/test/helpers/uiscriptrunner.class.php" => "2170d4b8fbd945f0ebde5cf2a1becc5d",
+"class/test/PHPUnit/Assert.php" => "a91d6a8665f0e4f9b0d0410f709ef301",
+"class/test/PHPUnit/GUI/Gtk.php" => "f198fd0c56e94eac68cfb7bab1054373",
+"class/test/PHPUnit/GUI/HTML.php" => "2b1756e603e9a4e4a1bdb654cae6837c",
+"class/test/PHPUnit/GUI/HTML.tpl" => "222a8fef6537f8fb1653f68f1b1d6a28",
+"class/test/PHPUnit/GUI/SetupDecorator.php" => "7d6ddbb1c0871f972cdc08233ec61c01",
+"class/test/PHPUnit/RepeatedTest.php" => "952ace28770f3c0d6fc5c6bbce864e80",
+"class/test/PHPUnit/Skeleton.php" => "ed61597b6b9b0dcc245aee75c43be0eb",
+"class/test/PHPUnit/TestCase.php" => "d481c02091b9500612f4bb43d34f82a8",
+"class/test/PHPUnit/TestDecorator.php" => "52af8d7eb9a28819985dc4a9c11a8c2d",
+"class/test/PHPUnit/TestFailure.php" => "d53ccc6d2a88d34f4417018c712a3b56",
+"class/test/PHPUnit/TestListener.php" => "2bc4c412b0115c7adb15f152ed28e6a1",
+"class/test/PHPUnit/TestResult.php" => "437b22cce2ce3cfaa905ee79ed44888e",
+"class/test/PHPUnit/TestSuite.php" => "fab89267c081757bfc24c15a237233cd",
+"class/test/PHPUnit.php" => "2a067ed3ac3c25dcdd8cbedd6fc0ceab",
+"class/test/testrunner.class.php" => "1f53eaa353b2c583b5f4e139fe788c9b",
+"class/test/tests/config/configdbstorage_test.class.php" => "3b75b2e3493b3a5423f31fcd732758c4",
+"class/test/tests/config/configfilestorage_test.class.php" => "e0053ef397539fbe865a7ec4d47f86d2",
+"class/test/tests/dao/article_test.class.php" => "849ed99dab107df8fdb57b462916d159",
+"class/test/tests/dao/articlecategories_test.class.php" => "5149efee0fec5bc23046de040cdd803c",
+"class/test/tests/dao/bloginfo_test.class.php" => "4b3372ad43f157df7fd3173733e7d83f",
+"class/test/tests/dao/blogs_test.class.php" => "25f22f4d6fbf3834b1772704c175f8d5",
+"class/test/tests/dao/commentscommon_test.class.php" => "d9236769f1289c7b0a72678fdda0f809",
+"class/test/tests/dao/permissions_test.class.php" => "6ce7f35fc40c94503508fa8d81d63827",
+"class/test/tests/dao/searchengine_test.class.php" => "b3cf1608cd9aa901c852e325fe6e64eb",
+"class/test/tests/dao/trackbackclient_test.class.php" => "416878c201461fc95f7d4fecf02d055b",
+"class/test/tests/dao/userinfo_test.class.php" => "a2a81940cc0e7b28ca01931a53da2867",
+"class/test/tests/data/textfilter_test.class.php" => "cd33a188b0d86968cab7fef7f186249b",
+"class/test/tests/data/validator/blognamevalidator_test.class.php" => "e45ee3c4a41f5f407a56dfd11520814c",
+"class/test/tests/data/validator/emailvalidator_test.class.php" => "aa1488415a4a65c83fd7e14fdda8eda2",
+"class/test/tests/data/validator/httpurlvalidator_test.class.php" => "c56fc3ae6e28b4ed893387deae9fc141",
+"class/test/tests/data/validator/integervalidator_test.class.php" => "a1b571a87a86ef95e4d677a2c37e0854",
+"class/test/tests/data/validator/rules/stringrangerule_test.class.php" => "a2b0f435a9179d8cd74a71115d816a61",
+"class/test/tests/data/validator/usernamevalidator_test.class.php" => "58f7cdc21992802698d8577b3806d416",
+"class/test/tests/extra/sqlinjection_test.class.php" => "ef02d161b41b143552ec8dea0c4ffb01",
+"class/test/tests/file/file_test.class.php" => "ddd39dfee1bc6e33abd3093f59762cab",
+"class/test/tests/file/unpacker/pclziptest.zip" => "9e67a4b8a955bfeeec53787c22bc9345",
+"class/test/tests/file/unpacker/zipunpacker_test.class.php" => "9194aad95d27b2053dec14115dd14349",
+"class/test/tests/locale/locale_test.class.php" => "c3aad76fd354a4d82ba2961d6c121a20",
+"class/test/tests/logger/loggerutil_test.class.php" => "4ad60dcde9730ec1c115e891584e561c",
+"class/test/tests/mail/emailservice_test.class.php" => "88984a7d661e60246702b96675b60a4c",
+"class/test/tests/mail/phpmailer/phpmailer_test.class.php" => "977eae5034c97e8a516b7612a7f63ed3",
+"class/test/tests/mail/phpmailer/test.png" => "d213b4a3e194d4a27b8325c4128ac56f",
+"class/test/tests/misc/glob_test.class.php" => "13fa7784f939b8f40fbe5e7fe9700998",
+"class/test/tests/net/http/httpclient_test.class.php" => "8dec0b0404beed1afbba2b3dfd55c47e",
+"class/test/tests/net/url_test.class.php" => "d6d9400fbffc15e89e7e9bc29a2ea6f6",
+"class/test/tests/net/xmlrpc/xmlrpcserver_test.class.php" => "8bd1ace0cf36e4921f0fe118cfc88c7b",
+"class/test/tests/summary/action/summaryaction_test.class.php" => "9d5ce3bd7b69843a33b5029247491b87",
+"class/test/tests/summary/dao/summarystats_test.class.php" => "e0d6184112241de9c7b76a83605c01ec",
+"class/test/tests/summary/data/summarytools_test.class.php" => "dc0431fdb15989c276ac2cbb89b44972",
+"class/test/tests/ui/articlecategoriesui_test.class.php" => "6f94937c136f1ff35ce1f2ac0c466758",
+"class/test/tests/ui/login_test.class.php" => "35b44e71d7b41a79500ebec2cc1f207f",
+"class/test/tests/ui/permissionsui_test.class.php" => "7bb372f21839dd352ec9ec63dd4aed6d",
+"class/view/admin/adminadduserview.class.php" => "a7011085e087677d56dafa4c01382814",
+"class/view/admin/adminarticlecategorieslistview.class.php" => "b756fa320cdcf2e8c861fbcae62c2a37",
+"class/view/admin/adminarticlecommentslistview.class.php" => "a591f3cad3d8a9d13c5e3b66f215ab88",
+"class/view/admin/adminarticlereferrersview.class.php" => "459e1484d982d6fbc7714566f7e9cfd6",
+"class/view/admin/adminarticletrackbackslistview.class.php" => "2a316145e39e47dcd34084f1032373ec",
+"class/view/admin/adminblogcategorieslistview.class.php" => "2454b3ac38ac956e6998e2c7d34b7249",
+"class/view/admin/adminblogsettingsview.class.php" => "53b89601929b6d55b6eab41bd3b2f629",
+"class/view/admin/adminblogtemplatechooserview.class.php" => "df4283dc2b0ef585ad76fff7724ca851",
+"class/view/admin/adminblogtemplatesetslistview.class.php" => "ffb8f2a7643d48311a1866aab99779df",
+"class/view/admin/adminbloguserslistview.class.php" => "513205c92fc7243bd137e815920721fa",
+"class/view/admin/admincreateblogview.class.php" => "3e7541c75f038b44ed34ed728debb99a",
+"class/view/admin/admincustomfieldslistview.class.php" => "000093bd60ac4c58cb86e98aa4fc828d",
+"class/view/admin/admindashboardview.class.php" => "a21fde3d761603bd9726cfab46db08e8",
+"class/view/admin/admindefaultview.class.php" => "44073829397d1140e45ed45afa94de28",
+"class/view/admin/admineditlinkview.class.php" => "011b755ef6a9b1ca6e62efc3fb577c84",
+"class/view/admin/admineditpostview.class.php" => "fbfb5c4b1b19fed3339888d7c731eb0e",
+"class/view/admin/admineditresourcealbumview.class.php" => "45df203adb6d325c785c819363725b90",
+"class/view/admin/admineditresourceview.class.php" => "15672028f452b68cac358ce5dec07d04",
+"class/view/admin/admineditsiteblogview.class.php" => "a1bfa7338d2051a102045b4e75617652",
+"class/view/admin/admineditsiteuserview.class.php" => "5beebbb1975b4b177b69db7bc303484d",
+"class/view/admin/adminerrorview.class.php" => "a0637509232fe3d9499420391776d0ff",
+"class/view/admin/adminglobalarticlecategorieslistview.class.php" => "b4a67971f7727f938704e745ed583a95",
+"class/view/admin/adminglobalsettingslistview.class.php" => "e4b7ab01e34089b583b8aedecda09310",
+"class/view/admin/adminlinkcategorieslistview.class.php" => "7fa01911a1a69293fdb26d61f8dc2852",
+"class/view/admin/adminlinkslistview.class.php" => "4b7aadc8af7b96b84ac6bbe3a15ddbdd",
+"class/view/admin/adminloginview.class.php" => "d4d5cdff69d3dd38f7d7c9f3ff4b45a1",
+"class/view/admin/adminmessageview.class.php" => "c7e3e8ee34fff1cfc788539d3d52649a",
+"class/view/admin/adminnewalbumview.class.php" => "eaa7dea97aa9bab1ba3e4baa2a439ceb",
+"class/view/admin/adminnewbloguserview.class.php" => "0919a4680009d2616c89f8ab7b83cc8a",
+"class/view/admin/adminnewglobalarticlecategoryview.class.php" => "feef0000abcf47adf40337423de5e18b",
+"class/view/admin/adminnewlinkview.class.php" => "fab284a11727e71df490f35fcef94214",
+"class/view/admin/adminnewpostview.class.php" => "c1739e9b6303be94ee212bf1144f82bd",
+"class/view/admin/adminnewresourceview.class.php" => "81e5661f2559e1d7e1b0a84c1d374bf8",
+"class/view/admin/adminpermissionslistview.class.php" => "7c18f0af98dc952e863aa3d9245072cd",
+"class/view/admin/adminpluginsettingsview.class.php" => "f49c036c1b5d466fb35ad4d341f2639f",
+"class/view/admin/adminplugintemplatedview.class.php" => "1884346af8579c2c0200b270109c6bf0",
+"class/view/admin/adminpostslistview.class.php" => "b361a78e14a119a0fc380cae6ac210e0",
+"class/view/admin/adminreferrersview.class.php" => "2a4566d1231ae0f426636e924e70d75d",
+"class/view/admin/adminregisterblogview.class.php" => "572e99cf203d7476865a41236b6b03d1",
+"class/view/admin/adminresourcealbumslistview.class.php" => "03fa36fbe8882de505a79a6b833fed92",
+"class/view/admin/adminresourceslistview.class.php" => "44a19e56005a83729d183ece12313317",
+"class/view/admin/adminsimpleerrorview.class.php" => "8cbbaf8073da95280a0f6d7820a94545",
+"class/view/admin/adminsimplemessageview.class.php" => "c4f1e4f39d75df12a3be78c06e8e17af",
+"class/view/admin/adminsiteblogslistview.class.php" => "052a0f83e766df394aa439b9694870ea",
+"class/view/admin/adminsitelocaleslistview.class.php" => "1765505c3ee0b84fe75d0d8106f36da4",
+"class/view/admin/adminsitetemplateslistview.class.php" => "9138d3d94caaaa54f9eea8463546004e",
+"class/view/admin/adminsiteuserslistview.class.php" => "6db475660da80b6439ba2697dd1d1148",
+"class/view/admin/admintemplatedview.class.php" => "daa9487ee86aff5329aff0cd7a7deea5",
+"class/view/admin/adminuserprofileview.class.php" => "6c0e9dc9312f0ab6032d944b099a13d3",
+"class/view/admin/adminview.class.php" => "e4f05c97ecd1873d5c940bed6522e07e",
+"class/view/admin/adminxmlview.class.php" => "2a71d82413ba00a8e97756ad454a8bf3",
+"class/view/admin/chooser/adminblogchooserview.class.php" => "10db6fdd14675212a7613774e596d81e",
+"class/view/admin/chooser/adminsimpleresourceslistview.class.php" => "de9223164f49438036a41ce6a65bd962",
+"class/view/admin/chooser/adminuserchooserview.class.php" => "795c29f84d5456bbe1ece051d4de8425",
+"class/view/admin/chooser/adminuserpictureselectview.class.php" => "886eced1a7e1e9aba29e52c16ac558b1",
+"class/view/blogtemplatedview.class.php" => "0d776f496cfc4bdb68cb89552f430ddd",
+"class/view/blogview.class.php" => "b8c7b9d710afe31aab7c6de2400509f4",
+"class/view/defaultview.class.php" => "e47b8b193440b8752e2de16635678dde",
+"class/view/errorview.class.php" => "760c0066020b2567cc9d1dedb1290fa0",
+"class/view/plugintemplatedview.class.php" => "d16a0ea0b0fc2ff0d3c43f0f0e0df2bf",
+"class/view/redirectview.class.php" => "943ba3c471f5497c5001022199cf009a",
+"class/view/rssview.class.php" => "443205224f21f90016f1a5f438d5f865",
+"class/view/smartyview.class.php" => "9ec7f5aeeeae307650a00e91357dfb36",
+"class/view/templateview.class.php" => "13ec8931cd4cde86a2a64a008c4310f6",
+"class/view/trackbackview.class.php" => "b6eccb63e32312e5a9be72d9daa00f4a",
+"class/view/view.class.php" => "8fb77ab2783001732f5b9ddde6b65238",
+"class/view/viewarticleview.class.php" => "d5ccb57c18ec61c719c8b3b4c34a112b",
+"class/xml/parser/Parser.php" => "5ed1ebe58a4cf5a41374e407bf7fc293",
+"class/xml/pathparser.class.php" => "9b3a8aefc735bff59cf075160ca7b5a3",
+"class/xml/rssparser/magpierss/extlib/Snoopy.class.inc" => "41b8457b9011f84d301011bbc22c82a2",
+"class/xml/rssparser/magpierss/README" => "1f465df5c33245bb7870476352f628f5",
+"class/xml/rssparser/magpierss/rss_cache.inc" => "e5f4c67d03d00107d212845c61dc0d63",
+"class/xml/rssparser/magpierss/rss_fetch.inc" => "6c4cfac911c73e867c30320631792a3c",
+"class/xml/rssparser/magpierss/rss_parse.inc" => "613abd6a6faff1074e5176952bba8196",
+"class/xml/rssparser/magpierss/rss_utils.inc" => "a665d2bc52d9c0ce6ae208fe7b5d0651",
+"class/xml/rssparser/rsschannel.class.php" => "27b8959fa75542d15ab258b8e568e8d1",
+"class/xml/rssparser/rssenclosure.class.php" => "1ec9b288ede3b05f7bbff3deecea59c5",
+"class/xml/rssparser/rssitem.class.php" => "0b6f8c844aa7761fad979c06121d2ecc",
+"class/xml/rssparser/rssparser.class.php" => "7955389db5cea80b4e0e9c52d5ca7f3e",
+"class/xml/tree/Node.php" => "485ad4453f516c0d17619b2d196a9886",
+"class/xml/tree/Tree.php" => "d5d52cedc46a9265e18c3b20ea56cbef",
+"templates/admin/addbloguser.template" => "b86ec2fb5bb6ccde156e9d203506fd02",
+"templates/admin/adminsettings.template" => "38a4da1b471e73c75e7dbf547a8ea767",
+"templates/admin/blogcategories.template" => "5deabb9a46daaad0ce850fb781fbfb86",
+"templates/admin/blogsettings.template" => "82ac3198cc9ceeab85f022756fa1aefa",
+"templates/admin/blogtemplates.template" => "b55d70c149c6a65b067f1a4a197e54ea",
+"templates/admin/blogusers.template" => "2299d8a6cb3727523122b7ca9af500e5",
+"templates/admin/chooser/blogtemplatechooser.template" => "16b1662346bf749348bc0292509fea6d",
+"templates/admin/chooser/footer.template" => "8348f2cb81a1db03c8b1e166ea10df2c",
+"templates/admin/chooser/header.template" => "d390e91a2c219b399f5a2d88bca109ea",
+"templates/admin/chooser/resourcelist.template" => "4e0f35095df8cdb4cce7fde8d6850d11",
+"templates/admin/chooser/siteblogschooser.template" => "7a67b00e3f99799150b2b8ec92d38acc",
+"templates/admin/chooser/siteuserschooser.template" => "7716cf988b39d96e9e833c54dc7dd8a1",
+"templates/admin/chooser/userpictureselect.template" => "fe3f82ddcd6dcd67056655bb937fa3f2",
+"templates/admin/cleanup.template" => "fb68545c9f7374e346d86125327ffeb2",
+"templates/admin/controlcenter.template" => "b833e3a78e46f7fff2dc3ab6867be8c3",
+"templates/admin/createblog.template" => "13a0832db9d5e256ea1ff8c147f88636",
+"templates/admin/createuser.template" => "e9e02cc1bde779497e1043ae433569aa",
+"templates/admin/customfields.template" => "0e89888bcfa578d1d2034861d5c738f7",
+"templates/admin/dashboard.template" => "1c0b3e48237731c7a4e3b6df62e55fe1",
+"templates/admin/default.template" => "769be6fffb3854d6c991e56d41ac2275",
+"templates/admin/editarticlecategories.template" => "24536abeee827619e21c2543a03933d0",
+"templates/admin/editarticlecategory.template" => "1a81b8c6c99b8aebac87b3e76accd224",
+"templates/admin/editblog.template" => "b772e106bd1c4bc64092145eeab3d9dd",
+"templates/admin/editblogcategory.template" => "97a42b56dc8b15fd6624d6ad927ce05c",
+"templates/admin/editbloguser.template" => "4a1c1c6305258db898f9e651ea65497f",
+"templates/admin/editcomments.template" => "88aef97cd5d776a347b3e2133e00270f",
+"templates/admin/editcustomfield.template" => "0ef95e8acbdcfb0816f2127db624bbc9",
+"templates/admin/editglobalarticlecategory.template" => "7cf9030f847168cc0111ee3a7c32e502",
+"templates/admin/editlink.template" => "0be615eb3a2e6947b8826ac632f6ea73",
+"templates/admin/editlinkcategories.template" => "a8ad533f909f62a2b724d8ad9b053cf0",
+"templates/admin/editlinkcategory.template" => "328fe6924710b14865bd875a92e77580",
+"templates/admin/editlinks.template" => "135765934ad81a5d54fe92e014ecd48b",
+"templates/admin/editpermission.template" => "7912447b82268281d8a7b1f6f0f11e44",
+"templates/admin/editpost.template" => "d559daac29141555bd7a32f7c1c85d75",
+"templates/admin/editposts.template" => "d8e8c62004a46d09516856adc8d06992",
+"templates/admin/editresourcealbum.template" => "6e7f563081dd5b5a94b4f98ad12281e0",
+"templates/admin/edittrackbacks.template" => "15aa24c430032939391cec100bae5fdc",
+"templates/admin/error.template" => "71f7710dcafc9520b7e67e28cfa45a2f",
+"templates/admin/errormessage.template" => "9d8846074620bdb176e3e6f557109c46",
+"templates/admin/footer.template" => "44eeece0ebe20f90106e281857eb61ee",
+"templates/admin/footernavigation.template" => "51e155184de20df3df8a771f1bdcf28c",
+"templates/admin/formvalidate.template" => "7cb23a4fd5df3d9201e655e0fdb4e102",
+"templates/admin/globalarticlecategories.template" => "fd08cc070cc7d423871e169207adcdc8",
+"templates/admin/globalsettings.template" => "2a34b6084cc409aeb75e904fddc30fa4",
+"templates/admin/globalsettings_bayesian.template" => "aa1dfb19b39884c8b20529914080c4ca",
+"templates/admin/globalsettings_email.template" => "1dbd50845b2876fdb84e8163b7c0d13b",
+"templates/admin/globalsettings_general.template" => "be61cdc580b26172029c9695a210f8af",
+"templates/admin/globalsettings_helpers.template" => "25a652cdf59a9a7df0f02bce0ae16450",
+"templates/admin/globalsettings_interfaces.template" => "c3083d1d7f25fa8ad40763d02d30aaf0",
+"templates/admin/globalsettings_resources.template" => "333268e5df38c04672217366e81e08be",
+"templates/admin/globalsettings_search.template" => "f6762af59398641aaf05eb858bd526a4",
+"templates/admin/globalsettings_security.template" => "20a27c9bd010c23442b2553c5d902591",
+"templates/admin/globalsettings_summary.template" => "2f3cc846eef8c700977c59da564b4175",
+"templates/admin/globalsettings_templates.template" => "afcf2eceb9a2cbf38383d862aab0c087",
+"templates/admin/globalsettings_uploads.template" => "3a14833676fa3fda26fe40eb317e2df6",
+"templates/admin/globalsettings_url.template" => "664e7848b37d0f726dc317938129e6a5",
+"templates/admin/header.template" => "d05b3e22348a58a54f4c5aa2890803bd",
+"templates/admin/help.template" => "c2ad0b2ac0f2de4b5d1937120bc16b4b",
+"templates/admin/main.template" => "718af7511d7e5a9b0c7d0f74794b4e5b",
+"templates/admin/menus.xml" => "d4a224ed914dd57b4fabbd8d620eede1",
+"templates/admin/menutabs.template" => "66a343901327469592677a3c8c2b2650",
+"templates/admin/message.template" => "edffe8e1babc16f7d64c47db65b08622",
+"templates/admin/navigation.template" => "5177e345865888f6d4789897beff06c3",
+"templates/admin/newblogcategory.template" => "1b9c38b7d8f72f83e4099382c5e8c40b",
+"templates/admin/newblogtemplate.template" => "c76714f527bb25602db20455eedc3be8",
+"templates/admin/newcustomfield.template" => "6c6e2886d8f300eb6b12a44ed562acf9",
+"templates/admin/newglobalarticlecategory.template" => "13e3ab84250eeef408ac8f083f88fa59",
+"templates/admin/newglobaltemplate.template" => "5a87a1e4566381167534b82d8cf12554",
+"templates/admin/newlink.template" => "c8b46c9974877e10479e9377ab9091c6",
+"templates/admin/newlinkcategory.template" => "4ca258f955d325e7eb27bae4fda5a778",
+"templates/admin/newlocale.template" => "bd2e99659fe587dd5d3fc01a9fa08873",
+"templates/admin/newpermission.template" => "5ab034202ec54c47b991dffd7f066a9e",
+"templates/admin/newpost.template" => "c5356e52e8ae06e418a3d2e64dc6d059",
+"templates/admin/newpost_customfields.template" => "c8cc343cf201c641c8b58161e4874d0a",
+"templates/admin/newpostcategory.template" => "c823e3d5ec41a653b2c1cf2c6262cd24",
+"templates/admin/newresource.template" => "d1087e0a150778caf043de1950cd1cec",
+"templates/admin/newresourcealbum.template" => "a2f21779ae577b6e1b6d024d92a52dd4",
+"templates/admin/permissions.template" => "35ab47d087837d01a66b9d1ea13c74bc",
+"templates/admin/plugincenter.template" => "d9d46c0c54d3afd8cdb4dbacadaca85c",
+"templates/admin/pluginsettings.template" => "fc80b3e556ead62128fbcc83dfb211a2",
+"templates/admin/poststats.template" => "65b3ce901d36b46b6cf6a3d0b1b36bcf",
+"templates/admin/registerblog.template" => "3a2d4d497918427ea40c3049fda24186",
+"templates/admin/resourcealbums.template" => "4724a90c2c7e98e808be6696b780d316",
+"templates/admin/resourceinfo.template" => "65ec4beb167e350d475a0c7eae308406",
+"templates/admin/resources.template" => "a0dfd43206121988c2f8d5f731e201a8",
+"templates/admin/resourcesgroup.template" => "a331b6788828357a32427437c8236892",
+"templates/admin/sendtrackbacks.template" => "574ecfbc7cfb0682c027b9869f62ce30",
+"templates/admin/simpleerror.template" => "f00cb7ac681ad32c25870c469d803f0b",
+"templates/admin/simplefooter.template" => "0b47e2df25b10405f6b747e86fb99726",
+"templates/admin/simpleheader.template" => "5990c88b6ebf86ec587b80de682f85f2",
+"templates/admin/siteblogs.template" => "e970f66cc1b757b6d1eb27ba64d269c4",
+"templates/admin/siteblogusers.template" => "06b6462f88de6dc1b1cc02507f739f00",
+"templates/admin/sitelocales.template" => "a56840b12edf23f812552c1c2b8b32e5",
+"templates/admin/sitetemplates.template" => "0fb7ee63e2c55fcf2a8d3440b3ca45c4",
+"templates/admin/siteusers.template" => "f2607a9fd6be243f28d1859f542112fc",
+"templates/admin/statistics.template" => "f8776737d43b9471b92b913235634478",
+"templates/admin/successmessage.template" => "af7d8b8cd641f54721f4a6f96a949178",
+"templates/admin/userprofile.template" => "f05768ce83948be9a69856fafe8a70ff",
+"templates/admin/usersettings.template" => "223bdbf313029d7b34a8fd4aef74fa6a",
+"templates/admin/validate.template" => "3f5e0a7c3f6f3c2cdd054f86e16038bf",
+"templates/admin/validationerror.template" => "1cc9ed2e49aba7477623b4d8ed6a800e",
+"templates/admin/versions.template" => "ed29579591503342a3243e19d0b11cd8",
+"templates/admin/xml/response.template" => "12cfa4970d2e1bd582f602ed07d297f8",
+"templates/wizard/checks.template" => "668524ef87291425a6fa7502fb06fec6",
+"templates/wizard/fix120.template" => "a8347c921f2a028c981c1ebad1c6c70c",
+"templates/wizard/footer.template" => "c1958b3e13eaed06499f4ebf7859f1c4",
+"templates/wizard/header.template" => "c35a15ead80ae5b29364c6cbc1819259",
+"templates/wizard/intro.template" => "42a8f3851f7adad5713d7181a23f9347",
+"templates/wizard/step1.template" => "5f5f2e8ee35c84663c50e2f4b1a05faf",
+"templates/wizard/step2.template" => "d3e3f1dcc307bd036c0677d8ada19f69",
+"templates/wizard/step3.template" => "dd51d6a66c85899cd581b00c2c819a2c",
+"templates/wizard/step4.template" => "db457b63a573c4025bb1556ccdb34f21",
+"templates/wizard/step5.template" => "f069b1ab50f6663cacebcce88c2dc341",
+"templates/wizard/update1.template" => "bfb41b697bee09c95626b9c0ed802d24",
+"templates/wizard/update2.template" => "5b5f36c714b3d42cdc6a209af302b0aa",
+"templates/wizard/update3.template" => "8d7ff6918ad4ab4affa87b1925ac5277",
+"templates/wizard/update4.template" => "db7f403b457ab6064d31564e354ebf99",
+"templates/wizard/validate.template" => "3f5e0a7c3f6f3c2cdd054f86e16038bf",
+"templates/rss/atom.template" => "44b66d2122467cf4879e302c15523a05",
+"templates/rss/klip.template" => "5713e618d13e1c6355a458dae9c97dcc",
+"templates/rss/rss090.template" => "c09f1ad65131600f8fe1d0d6660adfb3",
+"templates/rss/rss10.template" => "0fcb8b9baf9dc724d547e35c313331db",
+"templates/rss/rss20.template" => "9efcbd54c02dc8ab8ac91803b53222da",
+"templates/rss/xbel.template" => "c48d42bc71f49178f88a280190f80a24",
+"templates/rss/xml.template" => "5296805cfcedc318fc6fe783ab62188f",
+"templates/summary/agreement.template" => "d9bfe3eb3fdd27ce504783884b8fc17a",
+"templates/summary/blog.template" => "1e224f8cdafb84ebd15c612371cd5b04",
+"templates/summary/blogprofile.template" => "520f36c654a55d3a3fb15e4f9f47ba9d",
+"templates/summary/blogslist.template" => "f016fce8e282234fbe1373c444f35236",
+"templates/summary/changepassword.template" => "bb9413acb22c4bbd62e6d00f6ab5082a",
+"templates/summary/email_confirm.template" => "829268f5f4a4a73fcb962b6da2a32e47",
+"templates/summary/favicon.ico" => "87a4e31be4e0706963b0c79eeb61cb91",
+"templates/summary/footer.template" => "84d4fd478181d910afa9ab16f1aa1a60",
+"templates/summary/formvalidate.template" => "c9cc67a1e732308384c3b263aca59aed",
+"templates/summary/header.template" => "f991e348034ebd27fe092f799bb5a8a5",
+"templates/summary/index.template" => "063686bb5246b22ba0d708e707401c19",
+"templates/summary/message.template" => "80c74535253b5ea32df2cd0d104d71b8",
+"templates/summary/nouser.gif" => "b36cf5340520e63b1915bddbb1154b88",
+"templates/summary/post.template" => "b21341a541b2a43804bd093944455203",
+"templates/summary/postslist.template" => "9b3ef00915def9945f559132723d9dbd",
+"templates/summary/recent.template" => "d93307be335aea346016ae6d03864b26",
+"templates/summary/registererror.template" => "6b53f13d04023b9338f65f93bcc4583d",
+"templates/summary/registerfinished.template" => "605d0c9c6b62247d2914dc4c5e409dd8",
+"templates/summary/registerstep0.template" => "b5113244dc22aca5163cd05c81c85ebc",
+"templates/summary/registerstep1.template" => "27c94c59245587983722c1d438fed2f5",
+"templates/summary/registerstep2.template" => "c3c7dc70012e02342abc5048ecbd6514",
+"templates/summary/registerstep3.template" => "b2cfe3bd23d8a92a6f418aa12437fe74",
+"templates/summary/registerstep4.template" => "a287fef1d5aacb2279753f97a8043e14",
+"templates/summary/registerstep5.template" => "fc6e0e0af1248c2b1069a129bedbedfe",
+"templates/summary/resetpassword.template" => "f0106c4cf52a7a909f7e6765f067fbd1",
+"templates/summary/resetpasswordemail.template" => "94e5c14867696aceb73bcf181eb773e6",
+"templates/summary/resource.template" => "75a6ae1a8653f4d0936576cd271db129",
+"templates/summary/rss/atom.template" => "ec75983d9ad9969274d5ba8edfd8fd6b",
+"templates/summary/rss/blogs_atom.template" => "b22e51b7017b1f87edb017abcf56b636",
+"templates/summary/rss/blogs_rss090.template" => "87a6c242c90e6e161039f35c1025ad0f",
+"templates/summary/rss/blogs_rss10.template" => "350eb126e9484e93f6180f6b98e699df",
+"templates/summary/rss/blogs_rss20.template" => "34ec3fbb5493d6817fa31d3290aa5eef",
+"templates/summary/rss/rss090.template" => "a5d51e93c8d63e0d4c15732709b4c4a3",
+"templates/summary/rss/rss10.template" => "0b6b9e403f55a1f00ca9b450cb8ba495",
+"templates/summary/rss/rss20.template" => "7d639f98cefa284fe409fa25ac598a5c",
+"templates/summary/rss/xml.template" => "4c3e70c89515dffda77ec31fbc6dac54",
+"templates/summary/searchresults.template" => "7de1b8eda7dd85f29d76738fbd920f4e",
+"templates/summary/summary.template" => "95ebf8fbbfce7bda1e9f622eb67877b1",
+"templates/summary/summaryerror.template" => "e9894ebe954609ae12ec1f4d9fa8ecdd",
+"templates/summary/user.template" => "137921d3888a51014852f9d0a1670ba4",
+"templates/summary/userlist.template" => "0527e343332ac845e09050661a48e1f9",
+"templates/summary/userprofile.template" => "4936c1c3d50ed191883ee9742fca6520",
+"templates/summary/validate.template" => "3f5e0a7c3f6f3c2cdd054f86e16038bf",
+"templates/summary/xml/response.template" => "12cfa4970d2e1bd582f602ed07d297f8",
+"templates/default/commentform.template" => "bc87808403815a97ae7db936517e28a0"
+);
+?>
\ No newline at end of file

Copied: plog/trunk/js/jscalendar (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar)

Deleted: plog/trunk/js/jscalendar/ChangeLog
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/ChangeLog	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/ChangeLog	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,761 +0,0 @@
-2005-03-07  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* skins/aqua/theme.css: *** empty log message ***
-
-	* release-notes.html: updated release notes
-
-	* calendar-setup.js:
-	use a better approach to initialize the calendar--don't call _init twice,
-	it's the most time consuming function in the calendar.  Instead, determine
-	the date beforehand if possible and pass it to the calendar at constructor.
-
-	* calendar.js:
-	avoid keyboard operation when 'multiple dates' is set (very buggy for now)
-
-	* calendar.js:
-	fixed keyboard handling problems: now it works fine when "showsOtherMonths"
-	is passed; it also seems to be fine with disabled dates (won't normally
-	allow selection)--however this area is still likely to be buggy, i.e. in a
-	month that has all the dates disabled.
-
-	* calendar.js:
-	some trivial performance improvements in the _init function
-	Added Date.parseDate (old Calendar.prototype.parseDate now calls this one)
-
-2005-03-05  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* release-notes.html: updated release notes
-
-	* dayinfo.html: *** empty log message ***
-
-	* calendar-setup.js:
-	bugfix--update an inputField even if flat calendar is selected
-
-	* calendar.js:
-	fixed bugs in parseDate function (if for some reason the input string is
-	totally broken, then check numbers for NaN and use values from the current
-	date instead)
-
-	* make-release.pl: copy the skins subdirectory and all skins
-
-	* index.html: added Aqua skin
-
-	* skins/aqua/active-bg.gif, skins/aqua/dark-bg.gif, skins/aqua/hover-bg.gif, skins/aqua/menuarrow.gif, skins/aqua/normal-bg.gif, skins/aqua/rowhover-bg.gif, skins/aqua/status-bg.gif, skins/aqua/theme.css, skins/aqua/title-bg.gif, skins/aqua/today-bg.gif:
-	in the future, skins will go to this directory, each in a separate subdir; for now there's only Aqua, an excellent new skin
-
-	* calendar.js: workaround IE bug, needed in the Aqua theme
-	don't hide select elements unless browser is IE or Opera
-
-	* lang/calendar-bg.js, lang/calendar-big5-utf8.js, lang/calendar-big5.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-utf8.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-de.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fi.js, lang/calendar-fr.js, lang/calendar-he-utf8.js, lang/calendar-hu.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-lt-utf8.js, lang/calendar-lt.js, lang/calendar-lv.js, lang/calendar-nl.js, lang/calendar-no.js, lang/calendar-pl-utf8.js, lang/calendar-pl.js, lang/calendar-pt.js, lang/calendar-ro.js, lang/calendar-ru.js, lang/calendar-ru_win_.js, lang/calendar-si.js, lang/calendar-sk.js, lang/calendar-sp.js, lang/calendar-sv.js, lang/calendar-zh.js, lang/cn_utf8.js:
-	updated urls, copyright notices
-
-	* doc/reference.tex: updated documentation
-
-	* calendar.js, index.html:
-	renamed the global variable to _dynarch_popupCalendar to avoid name clashes
-
-	* multiple-dates.html: start with an empty array
-
-	* calendar.js:
-	fixed bugs in the time selector (12:XX pm was wrongfully understood as 12:XX am)
-
-	* calendar.js:
-	using innerHTML instead of text nodes; works better in Safari and also makes
-	a smaller, cleaner code
-
-2005-03-04  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js:
-	fixed a performance regression that occurred after adding support for multiple dates
-	fixed the time selection bug (now it keeps time correctly)
-	clicking today will close the calendar if "today" is already selected
-
-	* lang/cn_utf8.js: new translation
-
-2005-02-17  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-ar-utf8.zip: Added arabic translation
-
-2004-10-19  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-zh.js: updated
-
-2004-09-20  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-no.js: updated (Daniel Holmen)
-
-2004-09-20  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-no.js: updated (Daniel Holmen)
-
-2004-08-11  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-nl.js: updated language file (thanks to Arjen Duursma)
-
-	* lang/calendar-sp.js: updated (thanks to Rafael Velasco)
-
-2004-07-21  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-br.js: updated
-
-	* calendar-setup.js: fixed bug (dateText)
-
-2004-07-21  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-br.js: updated
-
-	* calendar-setup.js: fixed bug (dateText)
-
-2004-07-04  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-lv.js:
-	added LV translation (thanks to Juris Valdovskis)
-
-2004-06-25  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js:
-	fixed bug in IE (el.calendar.tooltips is null or not an object)
-
-2004-06-24  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex: fixed latex compilation
-
-	* index.html: linking other sample files
-
-	* calendar-setup.js, calendar.js, dayinfo.html:
-	ability to display day info (dateText parameter) + sample file
-
-2004-06-23  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex, lang/calendar-bg.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-nl.js, lang/calendar-sv.js, README, calendar.js, index.html:
-	email address changed
-
-2004-06-14  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-cs-utf8.js, lang/calendar-cs-win.js:
-	updated translations
-
-	* calendar-system.css: added z-index to drop downs
-
-	* lang/calendar-en.js:
-	first day of week can now be part of the language file
-
-	* lang/calendar-es.js:
-	updated language file (thanks to Servilio Afre Puentes)
-
-	* calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar-blue.css:
-	added z-index property to drop downs (fixes bug)
-
-2004-06-13  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js: fixed bug (apply showOthers to flat calendars too)
-
-2004-06-06  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js:
-	firstDay defaults to "null", in which case the value in the language file
-	will be used
-
-	* calendar.js:
-	firstDayOfWeek can now default to a value specified in the language definition file
-
-	* index.html: first day of week is now numeric
-
-2004-06-02  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js: added date tooltip function
-
-2004-05-28  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-br.js: updated (thanks to Marcos Pont)
-
-	* calendar-setup.js: fixed small bug
-
-2004-05-01  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js: returns the calendar object
-
-2004-04-28  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js:
-	patch to read the date value from the inputField, according to ifFormat (if
-	both are passed), for flat calendars.  (thanks Colin T. Hill)
-
-2004-04-20  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js, calendar.js, multiple-dates.html:
-	added support for multiple dates selection
-
-	* lang/calendar-nl.js:
-	updated Dutch translation, thanks to Jeroen Wolsink
-
-	* lang/calendar-big5-utf8.js, lang/calendar-big5.js:
-	Traditional Chinese language (thanks GaryFu)
-
-2004-03-26  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-fr.js, lang/calendar-pt.js: updated
-
-	* lang/calendar-ru_win_.js, lang/calendar-ru.js:
-	updated, thanks to Sly Golovanov
-
-2004-03-25  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-fr.js: updated (thanks to David Duret)
-
-2004-03-24  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-da.js: updated (thanks to Michael Thingmand Henriksen)
-
-2004-03-21  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-ca.js: updated (thanks to David Valls)
-
-2004-03-17  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-de.js: updated to UTF8 (thanks to Jack (tR))
-
-2004-03-09  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-bg.js: Bulgarian translation
-
-2004-03-08  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-he-utf8.js: Hebrew translation (thanks to Idan Sofer)
-
-	* lang/calendar-hu.js: updated (thanks to Istvan Karaszi)
-
-2004-02-27  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-it.js: updated (thanks to Fabio Di Bernardini)
-
-2004-02-25  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js: fix for Safari (thanks to Olivier Chirouze / XPWeb)
-
-2004-02-22  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-al.js: Albanian language file
-
-2004-02-17  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-fr.js: fixed
-
-	* lang/calendar-fr.js:
-	FR translation updated (thanks to SIMON Alexandre)
-
-	* lang/calendar-es.js: ES translation updated, thanks to David Gonzales
-
-2004-02-10  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-pt.js:
-	updated Portugese translation, thanks to Elcio Ferreira
-
-2004-02-09  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* TODO: updated
-
-2004-02-06  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* README: describe the PHP files
-
-	* make-release.pl: includes php files
-
-	* make-release.pl: ChangeLog included in the distribution (if found)
-
-	* calendar.js, doc/reference.tex, index.html: switched to version 0.9.6
-
-	* doc/Calendar.setup.tex, doc/reference.tex: updated documentation
-
-	* release-notes.html: updated release notes
-
-	* calendar.js: Fixed bug: Feb/29 and year change now keeps Feb in view
-
-	* calendar.js: fixed the "ESC" problem (call the close handler)
-
-	* calendar.js: fixed day of year range (1 to 366 instead of 0 to 365)
-
-	* calendar.js: fixed week number calculations
-
-	* doc/reference.tex: fixed (date input format)
-
-	* calendar.php: removed comment
-
-	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js:
-	workaround for IE bug (you can't normally specify through CSS the style for
-	an element having two classes or more; we had to change a classname)
-
-	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
-	smaller fonts on days that are in neighbor months
-
-2004-02-04  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* index.html: first demo shows the "showOtherMonths" capability
-
-	* calendar-setup.js: support new parameters in the calendar.
-	added: firstDay, showOthers, cache.
-
-	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, lang/calendar-en.js, lang/calendar-ro.js:
-	new parameters: firstDayOfWeek, showsOtherMonths; removed mondayFirst.
-	This adds support for setting any day to be the first day of week (by just
-	clicking the day name in the display); also, if showsOtherMonths is enabled
-	then dates belonging to adjacent months that are in the current view will be
-	displayed and the calendar will have a fixed height.
-
-	all themes updated.
-
-	* test.php: test for calendar.php
-
-	* calendar.php: fixed bug (pass numeric values as numbers)
-
-2004-02-01  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.php: added PHP wrapper
-
-	* img.gif: icon updated
-
-	* TODO: updated TODO list
-
-2004-01-27  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js:
-	Janusz Piwowarski sent over a patch for IE5 compatibility which is much more
-	elegant than the atrocities that I had wrote :-D  I'm gettin' old..  Thanks Janusz!
-
-	* lang/calendar-fi.js: updated
-
-2004-01-15  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* TODO: updated TODO list
-
-	* calendar-setup.js: default align changed to "Br"
-
-	* doc/reference.tex: changed default value for "align"
-
-	* calendar-setup.js: calling onchange event handler, if available
-
-	* calendar-setup.js: added "position" option
-
-	* simple-1.html: demonstrates "step" option
-
-	* calendar-setup.js: added "step" option
-
-	* calendar.js: added yearStep config parameter
-
-	* calendar.js:
-	fixed parseDate routine (the NaN bug which occurred when there was a space
-	after the date and no time)
-
-2004-01-14  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-en.js: added "Time:"
-
-	* test-position.html: test for the new position algorithm
-
-	* index.html: do not destroy() the calendar
-	avoid bug in parseDate (%p must be separated by non-word characters)
-
-	* menuarrow2.gif: for calendar-blue2.css
-
-	* calendar-setup.js: honor "date" parameter if passed
-
-	* calendar.js: IE5 support is back
-	performance improvements in IE6 (mouseover combo boxes)
-	display "Time:" beside the clock area, if defined in the language file
-	new positioning algorithm (try to keep the calendar in page)
-	rewrote parseDate a little cleaner
-
-	* lang/calendar-el.js:
-	updated Greek translation (thanks Alexandros Pappas)
-
-2004-01-13  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* index.html: added style blue2, using utf-8 instead of iso-8859-2
-
-	* calendar.js: performance under IE (which sucks, by the way)
-
-	* doc/reference.tex: Sunny added to sponsor list
-
-	* doc/Calendar.setup.tex: documenting parameter 'electric'
-
-	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
-	fixed IE text size problems
-
-2004-01-08  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-pl.js:
-	Polish translation updated to UTF-8 (thanks to Artur Filipiak)
-
-2004-01-07  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-si.js: updated (David Milost)
-
-	* lang/calendar-si.js: Slovenian translation (thanks to David Milost)
-
-2003-12-21  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* TODO: updated TODO list
-
-	* lang/calendar-de.js: German translation (thanks to Peter Strotmann)
-
-2003-12-19  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex: Thank you, Ian Barrak
-
-2003-12-18  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex: fixed documentation bug (thanks Mike)
-
-2003-12-05  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-ko-utf8.js:
-	UTF8 version of the Korean language (hopefully correct)
-
-	* lang/calendar-pl-utf8.js, lang/calendar-pl.js:
-	updated Polish translation (thanks to Janusz Piwowarski)
-
-2003-12-04  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-fr.js:
-	French translation updated (thanks to Angiras Rama)
-
-2003-11-22  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-da.js: updated (thanks to Jesper M. Christensen)
-
-2003-11-20  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-blue2.css, calendar-tas.css:
-	new styles (thanks to Wendall Mosemann for blue2, Mark Lynch for tas)
-
-	* lang/calendar-lt-utf8.js, lang/calendar-lt.js:
-	Lithuanian translation (thanks to Martynas Majeris)
-
-	* lang/calendar-sp.js: updated
-
-2003-11-17  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* TODO: added TODO list
-
-2003-11-14  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-ko.js: Korean translation (thanks to Yourim Yi)
-
-2003-11-12  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-jp.js: small bug fixed (thanks to TAHARA Yusei)
-
-2003-11-10  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-fr.js: translation updated, thanks to Florent Ramiere
-
-	* calendar-setup.js:
-	added new parameter: electric (if false then the field will not get updated on each move)
-
-	* index.html: fixed DOCTYPE
-
-2003-11-07  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js:
-	fixed minor problem (maybe we're passing object reference instead of ID for
-	the flat calendar parent)
-
-2003-11-06  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-fi.js:
-	added Finnish translation (thanks to Antti Tuppurainen)
-
-2003-11-05  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* release-notes.html: fixed typo
-
-	* doc/reference.tex, index.html, calendar.js: 0.9.5
-
-	* README: fixed license statement
-
-	* release-notes.html: updated release notes (0.9.5)
-
-2003-11-03  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-de.js:
-	updated German translation (thanks to Gerhard Neiner)
-
-	* calendar-setup.js: fixed license statement
-
-	* calendar.js: whitespace
-
-	* calendar.js: fixed license statement
-
-	* calendar.js:
-	fixed positioning problem when input field is inside scrolled divs
-
-2003-11-01  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-af.js: Afrikaan language (thanks to Derick Olivier)
-
-2003-10-31  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-it.js:
-	updated IT translation (thanks to Christian Blaser)
-
-	* lang/calendar-es.js: updated ES translation, thanks to Raul
-
-2003-10-30  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-hu.js: updated thanks to Istvan Karaszi
-
-	* index.html, simple-1.html, simple-2.html, simple-3.html:
-	switched to utf-8 all encodings
-
-	* lang/calendar-sk.js:
-	added Slovak translation (thanks to Peter Valach)
-
-	* lang/calendar-ro.js: switched to utf-8
-
-2003-10-29  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-es.js:
-	updated translation, thanks to Jose Ma. Martinez Miralles
-
-	* doc/reference.tex:
-	fixed the footnote problem (thanks Dominique de Waleffe for the tip)
-
-	* lang/calendar-ro.js: fixed typo
-
-	* lang/calendar-sv.js: oops, license should be LGPL
-
-	* lang/calendar-sw.js: new swedish translation is calendar-sv.js
-
-	* menuarrow.gif, menuarrow.png:
-	oops, forgot little drop-down menu arrows
-
-	* lang/calendar-sv.js: swedish translation thanks to Leonard Norrgard
-
-	* index.html: oops, some other minor changes
-
-	* index.html, release-notes.html:
-	latest changes in release-notes and index page for 0.9.4
-
-	* doc/reference.tex, calendar.js:
-	added %s date format (# of seconds since Epoch)
-
-	* calendar.js:
-	A click on TODAY will not close the calendar, even in single-click mode
-
-2003-10-28  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* index.html: previous cal.html
-
-	* cal.html: moved to index.html
-
-	* README, cal.html, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, release-notes.html:
-	LGPL license, forever.
-
-	* doc/Calendar.setup.tex, simple-1.html:
-	doc updated for the onUpdate parameter to Calendar.setup
-
-2003-10-26  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js: fixed bug (correct display of the dropdown menus)
-
-	* doc/Calendar.setup.tex, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-setup.js, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, release-notes.html, simple-1.html, simple-3.html:
-	lots of changes for the 0.9.4 release (see the release-notes.html)
-
-2003-10-15  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex:
-	documentation updated for 0.9.4 (not yet finished though)
-
-2003-10-07  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js, doc/reference.tex, release-notes.html, README, cal.html, calendar-setup.js:
-	modified project website
-
-2003-10-06  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar-setup.js:
-	added some properties (onSelect, onClose, date) (thanks altblue)
-
-2003-09-24  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* simple-3.html: dateIsSpecial does not need the "date" argument ;-)
-
-2003-09-24  fsoft  <fsoft at mishoo>
-
-	* calendar.js, simple-3.html:
-	added year, month, day to getDateStatus() function
-
-2003-09-24  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* simple-3.html: example on how to use special dates
-
-	* calendar-setup.js, calendar.js, simple-1.html:
-	support for special dates (thanks fabio)
-
-2003-09-17  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex: fixed error in section 3.
-
-2003-08-01  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-jp.js: added Japanese translation
-
-2003-07-16  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* simple-1.html: fixed problem with first example [IE,Opera]
-
-2003-07-09  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/Calendar.setup.tex: fixed typo (closing parenthesis)
-
-	* lang/calendar-de.js:
-	added German translation, thanks to Hartwig Weinkauf
-
-2003-07-08  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* cal.html: added link to release-notes
-
-	* release-notes.html: 0.9.3 release notes
-
-	* make-release.pl:
-	Script to create distribution archive.  It needs some additional packages:
-
-	  - LaTeX
-	  - tex2page
-	  - jscrunch (JS compressor)
-
-	* doc/html/makedoc.sh, doc/html/reference.css, doc/reference.tex, doc/makedoc.sh:
-	documentation updates...
-
-	* calendar.js: added semicolon to make the code "compressible"
-
-2003-07-06  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/reference.tex: spell checked
-
-	* doc/reference.tex: [minor] changed credits order
-
-	* doc/reference.tex: various improvements and additions
-
-	* doc/html/reference.css: minor eye-candy tweaks
-
-2003-07-05  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* doc/html/Calendar.setup.html.tex, doc/html/makedoc.sh, doc/html/reference.css, doc/html/reference.t2p, doc/hyperref.cfg, doc/makedoc.sh, doc/reference.tex, doc/Calendar.setup.tex, doc/Calendar.setup.pdf.tex:
-	full documentation in LaTeX, for PDF and HTML formats
-
-	* simple-2.html:
-	added demonstration of flat calendar with Calendar.setup
-
-	* simple-1.html:
-	modified some links, added link to documentation, added demonstration of
-	disableFunc property
-
-	* calendar-setup.js: added the ability to create flat calendar too
-
-	* cal.html: added links to documentation and simple-[12].html pages
-
-	* README: up-to-date...
-
-	* calendar-setup.html: removed: the documentation is unified
-
-2003-07-03  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* cal.html: some links to newly added files
-
-	* calendar-setup.html, calendar-setup.js, img.gif, simple-1.html:
-	added some files to simplify calendar creation for non-(JS)-programmers
-
-	* lang/calendar-zh.js: added simplified chinese (thanks ATang)
-
-2003-07-02  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js: * "yy"-related... [small fix]
-
-	* calendar.js:
-	* #721833 fixed (yy format will understand years prior to 29 as 20xx)
-
-	* calendar.js: * added refresh() function
-
-	* calendar.js: * fixed bug when in single click mode
-	* added alignment options to "showAtElement" member function
-
-2003-06-25  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-pt.js:
-	added portugese translation (thanks Nuno Barreto)
-
-2003-06-24  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js:
-	call user handler when the date was changed using the keyboard
-
-	* bugtest-hidden-selects.html:
-	file to test bug with hidden select-s (thanks Ying Zhang for reporting and for this test file)
-
-	* lang/calendar-hr-utf8.js:
-	added croatian translation in utf8 (thanks Krunoslav Zubrinic)
-
-2003-06-23  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-hu.js: added hungarian translation
-
-	* lang/calendar-hr.js:
-	added croatian translation (thanks to Krunoslav Zubrinic)
-
-2003-06-22  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js:
-	* #723335 fixed (clicking TODAY will not select the today date if the
-	  disabledHandler rejects it)
-
-	* cal.html: * new code for to work with fix for bug #703238
-	* switch to new version
-
-	* calendar.js:
-	* some patches to make code compatible with Opera 7 (well, almost compatible)
-	* bug #703238 fixed (fix breaks compatibility with older code that uses
-	  calendar in single-click mode)
-	* bug #703814 fixed
-
-2003-04-09  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-tr.js: added turkish lang file
-
-2003-03-19  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-ru.js: russian translation added
-
-	* lang/calendar-no.js: norwegian translation added
-
-2003-03-15  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-no.js: norwegian translation
-
-2003-03-12  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* lang/calendar-pl.js: added polish translation
-
-2003-03-11  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js:
-	bugfix in parseDate (added base to parseInt, thanks Alan!)
-
-2003-03-05  Mihai Bazon  <mihai_bazon at yahoo.com>
-
-	* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
-	New file.
-
-	* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
-	moved to CVS at sourceforge.net
-	release: 0.9.2 + new language packs
-
-
-	* README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
-	New file.
-
-	* README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
-	moved to CVS at sourceforge.net
-	release: 0.9.2 + new language packs
-
-

Copied: plog/trunk/js/jscalendar/ChangeLog (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/ChangeLog)
===================================================================
--- plog/trunk/js/jscalendar/ChangeLog	                        (rev 0)
+++ plog/trunk/js/jscalendar/ChangeLog	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,761 @@
+2005-03-07  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* skins/aqua/theme.css: *** empty log message ***
+
+	* release-notes.html: updated release notes
+
+	* calendar-setup.js:
+	use a better approach to initialize the calendar--don't call _init twice,
+	it's the most time consuming function in the calendar.  Instead, determine
+	the date beforehand if possible and pass it to the calendar at constructor.
+
+	* calendar.js:
+	avoid keyboard operation when 'multiple dates' is set (very buggy for now)
+
+	* calendar.js:
+	fixed keyboard handling problems: now it works fine when "showsOtherMonths"
+	is passed; it also seems to be fine with disabled dates (won't normally
+	allow selection)--however this area is still likely to be buggy, i.e. in a
+	month that has all the dates disabled.
+
+	* calendar.js:
+	some trivial performance improvements in the _init function
+	Added Date.parseDate (old Calendar.prototype.parseDate now calls this one)
+
+2005-03-05  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* release-notes.html: updated release notes
+
+	* dayinfo.html: *** empty log message ***
+
+	* calendar-setup.js:
+	bugfix--update an inputField even if flat calendar is selected
+
+	* calendar.js:
+	fixed bugs in parseDate function (if for some reason the input string is
+	totally broken, then check numbers for NaN and use values from the current
+	date instead)
+
+	* make-release.pl: copy the skins subdirectory and all skins
+
+	* index.html: added Aqua skin
+
+	* skins/aqua/active-bg.gif, skins/aqua/dark-bg.gif, skins/aqua/hover-bg.gif, skins/aqua/menuarrow.gif, skins/aqua/normal-bg.gif, skins/aqua/rowhover-bg.gif, skins/aqua/status-bg.gif, skins/aqua/theme.css, skins/aqua/title-bg.gif, skins/aqua/today-bg.gif:
+	in the future, skins will go to this directory, each in a separate subdir; for now there's only Aqua, an excellent new skin
+
+	* calendar.js: workaround IE bug, needed in the Aqua theme
+	don't hide select elements unless browser is IE or Opera
+
+	* lang/calendar-bg.js, lang/calendar-big5-utf8.js, lang/calendar-big5.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-utf8.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-de.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fi.js, lang/calendar-fr.js, lang/calendar-he-utf8.js, lang/calendar-hu.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-lt-utf8.js, lang/calendar-lt.js, lang/calendar-lv.js, lang/calendar-nl.js, lang/calendar-no.js, lang/calendar-pl-utf8.js, lang/calendar-pl.js, lang/calendar-pt.js, lang/calendar-ro.js, lang/calendar-ru.js, lang/calendar-ru_win_.js, lang/calendar-si.js, lang/calendar-sk.js, lang/calendar-sp.js, lang/calendar-sv.js, lang/calendar-zh.js, lang/cn_utf8.js:
+	updated urls, copyright notices
+
+	* doc/reference.tex: updated documentation
+
+	* calendar.js, index.html:
+	renamed the global variable to _dynarch_popupCalendar to avoid name clashes
+
+	* multiple-dates.html: start with an empty array
+
+	* calendar.js:
+	fixed bugs in the time selector (12:XX pm was wrongfully understood as 12:XX am)
+
+	* calendar.js:
+	using innerHTML instead of text nodes; works better in Safari and also makes
+	a smaller, cleaner code
+
+2005-03-04  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js:
+	fixed a performance regression that occurred after adding support for multiple dates
+	fixed the time selection bug (now it keeps time correctly)
+	clicking today will close the calendar if "today" is already selected
+
+	* lang/cn_utf8.js: new translation
+
+2005-02-17  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-ar-utf8.zip: Added arabic translation
+
+2004-10-19  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-zh.js: updated
+
+2004-09-20  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-no.js: updated (Daniel Holmen)
+
+2004-09-20  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-no.js: updated (Daniel Holmen)
+
+2004-08-11  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-nl.js: updated language file (thanks to Arjen Duursma)
+
+	* lang/calendar-sp.js: updated (thanks to Rafael Velasco)
+
+2004-07-21  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-br.js: updated
+
+	* calendar-setup.js: fixed bug (dateText)
+
+2004-07-21  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-br.js: updated
+
+	* calendar-setup.js: fixed bug (dateText)
+
+2004-07-04  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-lv.js:
+	added LV translation (thanks to Juris Valdovskis)
+
+2004-06-25  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js:
+	fixed bug in IE (el.calendar.tooltips is null or not an object)
+
+2004-06-24  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex: fixed latex compilation
+
+	* index.html: linking other sample files
+
+	* calendar-setup.js, calendar.js, dayinfo.html:
+	ability to display day info (dateText parameter) + sample file
+
+2004-06-23  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex, lang/calendar-bg.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-nl.js, lang/calendar-sv.js, README, calendar.js, index.html:
+	email address changed
+
+2004-06-14  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-cs-utf8.js, lang/calendar-cs-win.js:
+	updated translations
+
+	* calendar-system.css: added z-index to drop downs
+
+	* lang/calendar-en.js:
+	first day of week can now be part of the language file
+
+	* lang/calendar-es.js:
+	updated language file (thanks to Servilio Afre Puentes)
+
+	* calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar-blue.css:
+	added z-index property to drop downs (fixes bug)
+
+2004-06-13  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js: fixed bug (apply showOthers to flat calendars too)
+
+2004-06-06  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js:
+	firstDay defaults to "null", in which case the value in the language file
+	will be used
+
+	* calendar.js:
+	firstDayOfWeek can now default to a value specified in the language definition file
+
+	* index.html: first day of week is now numeric
+
+2004-06-02  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js: added date tooltip function
+
+2004-05-28  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-br.js: updated (thanks to Marcos Pont)
+
+	* calendar-setup.js: fixed small bug
+
+2004-05-01  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js: returns the calendar object
+
+2004-04-28  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js:
+	patch to read the date value from the inputField, according to ifFormat (if
+	both are passed), for flat calendars.  (thanks Colin T. Hill)
+
+2004-04-20  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js, calendar.js, multiple-dates.html:
+	added support for multiple dates selection
+
+	* lang/calendar-nl.js:
+	updated Dutch translation, thanks to Jeroen Wolsink
+
+	* lang/calendar-big5-utf8.js, lang/calendar-big5.js:
+	Traditional Chinese language (thanks GaryFu)
+
+2004-03-26  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-fr.js, lang/calendar-pt.js: updated
+
+	* lang/calendar-ru_win_.js, lang/calendar-ru.js:
+	updated, thanks to Sly Golovanov
+
+2004-03-25  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-fr.js: updated (thanks to David Duret)
+
+2004-03-24  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-da.js: updated (thanks to Michael Thingmand Henriksen)
+
+2004-03-21  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-ca.js: updated (thanks to David Valls)
+
+2004-03-17  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-de.js: updated to UTF8 (thanks to Jack (tR))
+
+2004-03-09  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-bg.js: Bulgarian translation
+
+2004-03-08  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-he-utf8.js: Hebrew translation (thanks to Idan Sofer)
+
+	* lang/calendar-hu.js: updated (thanks to Istvan Karaszi)
+
+2004-02-27  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-it.js: updated (thanks to Fabio Di Bernardini)
+
+2004-02-25  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js: fix for Safari (thanks to Olivier Chirouze / XPWeb)
+
+2004-02-22  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-al.js: Albanian language file
+
+2004-02-17  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-fr.js: fixed
+
+	* lang/calendar-fr.js:
+	FR translation updated (thanks to SIMON Alexandre)
+
+	* lang/calendar-es.js: ES translation updated, thanks to David Gonzales
+
+2004-02-10  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-pt.js:
+	updated Portugese translation, thanks to Elcio Ferreira
+
+2004-02-09  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* TODO: updated
+
+2004-02-06  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* README: describe the PHP files
+
+	* make-release.pl: includes php files
+
+	* make-release.pl: ChangeLog included in the distribution (if found)
+
+	* calendar.js, doc/reference.tex, index.html: switched to version 0.9.6
+
+	* doc/Calendar.setup.tex, doc/reference.tex: updated documentation
+
+	* release-notes.html: updated release notes
+
+	* calendar.js: Fixed bug: Feb/29 and year change now keeps Feb in view
+
+	* calendar.js: fixed the "ESC" problem (call the close handler)
+
+	* calendar.js: fixed day of year range (1 to 366 instead of 0 to 365)
+
+	* calendar.js: fixed week number calculations
+
+	* doc/reference.tex: fixed (date input format)
+
+	* calendar.php: removed comment
+
+	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js:
+	workaround for IE bug (you can't normally specify through CSS the style for
+	an element having two classes or more; we had to change a classname)
+
+	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
+	smaller fonts on days that are in neighbor months
+
+2004-02-04  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* index.html: first demo shows the "showOtherMonths" capability
+
+	* calendar-setup.js: support new parameters in the calendar.
+	added: firstDay, showOthers, cache.
+
+	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, lang/calendar-en.js, lang/calendar-ro.js:
+	new parameters: firstDayOfWeek, showsOtherMonths; removed mondayFirst.
+	This adds support for setting any day to be the first day of week (by just
+	clicking the day name in the display); also, if showsOtherMonths is enabled
+	then dates belonging to adjacent months that are in the current view will be
+	displayed and the calendar will have a fixed height.
+
+	all themes updated.
+
+	* test.php: test for calendar.php
+
+	* calendar.php: fixed bug (pass numeric values as numbers)
+
+2004-02-01  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.php: added PHP wrapper
+
+	* img.gif: icon updated
+
+	* TODO: updated TODO list
+
+2004-01-27  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js:
+	Janusz Piwowarski sent over a patch for IE5 compatibility which is much more
+	elegant than the atrocities that I had wrote :-D  I'm gettin' old..  Thanks Janusz!
+
+	* lang/calendar-fi.js: updated
+
+2004-01-15  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* TODO: updated TODO list
+
+	* calendar-setup.js: default align changed to "Br"
+
+	* doc/reference.tex: changed default value for "align"
+
+	* calendar-setup.js: calling onchange event handler, if available
+
+	* calendar-setup.js: added "position" option
+
+	* simple-1.html: demonstrates "step" option
+
+	* calendar-setup.js: added "step" option
+
+	* calendar.js: added yearStep config parameter
+
+	* calendar.js:
+	fixed parseDate routine (the NaN bug which occurred when there was a space
+	after the date and no time)
+
+2004-01-14  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-en.js: added "Time:"
+
+	* test-position.html: test for the new position algorithm
+
+	* index.html: do not destroy() the calendar
+	avoid bug in parseDate (%p must be separated by non-word characters)
+
+	* menuarrow2.gif: for calendar-blue2.css
+
+	* calendar-setup.js: honor "date" parameter if passed
+
+	* calendar.js: IE5 support is back
+	performance improvements in IE6 (mouseover combo boxes)
+	display "Time:" beside the clock area, if defined in the language file
+	new positioning algorithm (try to keep the calendar in page)
+	rewrote parseDate a little cleaner
+
+	* lang/calendar-el.js:
+	updated Greek translation (thanks Alexandros Pappas)
+
+2004-01-13  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* index.html: added style blue2, using utf-8 instead of iso-8859-2
+
+	* calendar.js: performance under IE (which sucks, by the way)
+
+	* doc/reference.tex: Sunny added to sponsor list
+
+	* doc/Calendar.setup.tex: documenting parameter 'electric'
+
+	* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
+	fixed IE text size problems
+
+2004-01-08  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-pl.js:
+	Polish translation updated to UTF-8 (thanks to Artur Filipiak)
+
+2004-01-07  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-si.js: updated (David Milost)
+
+	* lang/calendar-si.js: Slovenian translation (thanks to David Milost)
+
+2003-12-21  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* TODO: updated TODO list
+
+	* lang/calendar-de.js: German translation (thanks to Peter Strotmann)
+
+2003-12-19  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex: Thank you, Ian Barrak
+
+2003-12-18  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex: fixed documentation bug (thanks Mike)
+
+2003-12-05  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-ko-utf8.js:
+	UTF8 version of the Korean language (hopefully correct)
+
+	* lang/calendar-pl-utf8.js, lang/calendar-pl.js:
+	updated Polish translation (thanks to Janusz Piwowarski)
+
+2003-12-04  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-fr.js:
+	French translation updated (thanks to Angiras Rama)
+
+2003-11-22  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-da.js: updated (thanks to Jesper M. Christensen)
+
+2003-11-20  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-blue2.css, calendar-tas.css:
+	new styles (thanks to Wendall Mosemann for blue2, Mark Lynch for tas)
+
+	* lang/calendar-lt-utf8.js, lang/calendar-lt.js:
+	Lithuanian translation (thanks to Martynas Majeris)
+
+	* lang/calendar-sp.js: updated
+
+2003-11-17  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* TODO: added TODO list
+
+2003-11-14  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-ko.js: Korean translation (thanks to Yourim Yi)
+
+2003-11-12  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-jp.js: small bug fixed (thanks to TAHARA Yusei)
+
+2003-11-10  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-fr.js: translation updated, thanks to Florent Ramiere
+
+	* calendar-setup.js:
+	added new parameter: electric (if false then the field will not get updated on each move)
+
+	* index.html: fixed DOCTYPE
+
+2003-11-07  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js:
+	fixed minor problem (maybe we're passing object reference instead of ID for
+	the flat calendar parent)
+
+2003-11-06  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-fi.js:
+	added Finnish translation (thanks to Antti Tuppurainen)
+
+2003-11-05  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* release-notes.html: fixed typo
+
+	* doc/reference.tex, index.html, calendar.js: 0.9.5
+
+	* README: fixed license statement
+
+	* release-notes.html: updated release notes (0.9.5)
+
+2003-11-03  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-de.js:
+	updated German translation (thanks to Gerhard Neiner)
+
+	* calendar-setup.js: fixed license statement
+
+	* calendar.js: whitespace
+
+	* calendar.js: fixed license statement
+
+	* calendar.js:
+	fixed positioning problem when input field is inside scrolled divs
+
+2003-11-01  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-af.js: Afrikaan language (thanks to Derick Olivier)
+
+2003-10-31  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-it.js:
+	updated IT translation (thanks to Christian Blaser)
+
+	* lang/calendar-es.js: updated ES translation, thanks to Raul
+
+2003-10-30  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-hu.js: updated thanks to Istvan Karaszi
+
+	* index.html, simple-1.html, simple-2.html, simple-3.html:
+	switched to utf-8 all encodings
+
+	* lang/calendar-sk.js:
+	added Slovak translation (thanks to Peter Valach)
+
+	* lang/calendar-ro.js: switched to utf-8
+
+2003-10-29  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-es.js:
+	updated translation, thanks to Jose Ma. Martinez Miralles
+
+	* doc/reference.tex:
+	fixed the footnote problem (thanks Dominique de Waleffe for the tip)
+
+	* lang/calendar-ro.js: fixed typo
+
+	* lang/calendar-sv.js: oops, license should be LGPL
+
+	* lang/calendar-sw.js: new swedish translation is calendar-sv.js
+
+	* menuarrow.gif, menuarrow.png:
+	oops, forgot little drop-down menu arrows
+
+	* lang/calendar-sv.js: swedish translation thanks to Leonard Norrgard
+
+	* index.html: oops, some other minor changes
+
+	* index.html, release-notes.html:
+	latest changes in release-notes and index page for 0.9.4
+
+	* doc/reference.tex, calendar.js:
+	added %s date format (# of seconds since Epoch)
+
+	* calendar.js:
+	A click on TODAY will not close the calendar, even in single-click mode
+
+2003-10-28  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* index.html: previous cal.html
+
+	* cal.html: moved to index.html
+
+	* README, cal.html, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, release-notes.html:
+	LGPL license, forever.
+
+	* doc/Calendar.setup.tex, simple-1.html:
+	doc updated for the onUpdate parameter to Calendar.setup
+
+2003-10-26  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js: fixed bug (correct display of the dropdown menus)
+
+	* doc/Calendar.setup.tex, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-setup.js, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, release-notes.html, simple-1.html, simple-3.html:
+	lots of changes for the 0.9.4 release (see the release-notes.html)
+
+2003-10-15  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex:
+	documentation updated for 0.9.4 (not yet finished though)
+
+2003-10-07  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js, doc/reference.tex, release-notes.html, README, cal.html, calendar-setup.js:
+	modified project website
+
+2003-10-06  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar-setup.js:
+	added some properties (onSelect, onClose, date) (thanks altblue)
+
+2003-09-24  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* simple-3.html: dateIsSpecial does not need the "date" argument ;-)
+
+2003-09-24  fsoft  <fsoft at mishoo>
+
+	* calendar.js, simple-3.html:
+	added year, month, day to getDateStatus() function
+
+2003-09-24  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* simple-3.html: example on how to use special dates
+
+	* calendar-setup.js, calendar.js, simple-1.html:
+	support for special dates (thanks fabio)
+
+2003-09-17  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex: fixed error in section 3.
+
+2003-08-01  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-jp.js: added Japanese translation
+
+2003-07-16  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* simple-1.html: fixed problem with first example [IE,Opera]
+
+2003-07-09  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/Calendar.setup.tex: fixed typo (closing parenthesis)
+
+	* lang/calendar-de.js:
+	added German translation, thanks to Hartwig Weinkauf
+
+2003-07-08  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* cal.html: added link to release-notes
+
+	* release-notes.html: 0.9.3 release notes
+
+	* make-release.pl:
+	Script to create distribution archive.  It needs some additional packages:
+
+	  - LaTeX
+	  - tex2page
+	  - jscrunch (JS compressor)
+
+	* doc/html/makedoc.sh, doc/html/reference.css, doc/reference.tex, doc/makedoc.sh:
+	documentation updates...
+
+	* calendar.js: added semicolon to make the code "compressible"
+
+2003-07-06  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/reference.tex: spell checked
+
+	* doc/reference.tex: [minor] changed credits order
+
+	* doc/reference.tex: various improvements and additions
+
+	* doc/html/reference.css: minor eye-candy tweaks
+
+2003-07-05  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* doc/html/Calendar.setup.html.tex, doc/html/makedoc.sh, doc/html/reference.css, doc/html/reference.t2p, doc/hyperref.cfg, doc/makedoc.sh, doc/reference.tex, doc/Calendar.setup.tex, doc/Calendar.setup.pdf.tex:
+	full documentation in LaTeX, for PDF and HTML formats
+
+	* simple-2.html:
+	added demonstration of flat calendar with Calendar.setup
+
+	* simple-1.html:
+	modified some links, added link to documentation, added demonstration of
+	disableFunc property
+
+	* calendar-setup.js: added the ability to create flat calendar too
+
+	* cal.html: added links to documentation and simple-[12].html pages
+
+	* README: up-to-date...
+
+	* calendar-setup.html: removed: the documentation is unified
+
+2003-07-03  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* cal.html: some links to newly added files
+
+	* calendar-setup.html, calendar-setup.js, img.gif, simple-1.html:
+	added some files to simplify calendar creation for non-(JS)-programmers
+
+	* lang/calendar-zh.js: added simplified chinese (thanks ATang)
+
+2003-07-02  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js: * "yy"-related... [small fix]
+
+	* calendar.js:
+	* #721833 fixed (yy format will understand years prior to 29 as 20xx)
+
+	* calendar.js: * added refresh() function
+
+	* calendar.js: * fixed bug when in single click mode
+	* added alignment options to "showAtElement" member function
+
+2003-06-25  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-pt.js:
+	added portugese translation (thanks Nuno Barreto)
+
+2003-06-24  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js:
+	call user handler when the date was changed using the keyboard
+
+	* bugtest-hidden-selects.html:
+	file to test bug with hidden select-s (thanks Ying Zhang for reporting and for this test file)
+
+	* lang/calendar-hr-utf8.js:
+	added croatian translation in utf8 (thanks Krunoslav Zubrinic)
+
+2003-06-23  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-hu.js: added hungarian translation
+
+	* lang/calendar-hr.js:
+	added croatian translation (thanks to Krunoslav Zubrinic)
+
+2003-06-22  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js:
+	* #723335 fixed (clicking TODAY will not select the today date if the
+	  disabledHandler rejects it)
+
+	* cal.html: * new code for to work with fix for bug #703238
+	* switch to new version
+
+	* calendar.js:
+	* some patches to make code compatible with Opera 7 (well, almost compatible)
+	* bug #703238 fixed (fix breaks compatibility with older code that uses
+	  calendar in single-click mode)
+	* bug #703814 fixed
+
+2003-04-09  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-tr.js: added turkish lang file
+
+2003-03-19  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-ru.js: russian translation added
+
+	* lang/calendar-no.js: norwegian translation added
+
+2003-03-15  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-no.js: norwegian translation
+
+2003-03-12  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* lang/calendar-pl.js: added polish translation
+
+2003-03-11  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js:
+	bugfix in parseDate (added base to parseInt, thanks Alan!)
+
+2003-03-05  Mihai Bazon  <mihai_bazon at yahoo.com>
+
+	* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
+	New file.
+
+	* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
+	moved to CVS at sourceforge.net
+	release: 0.9.2 + new language packs
+
+
+	* README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
+	New file.
+
+	* README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
+	moved to CVS at sourceforge.net
+	release: 0.9.2 + new language packs
+
+

Deleted: plog/trunk/js/jscalendar/README
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/README	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/README	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,33 +0,0 @@
-The DHTML Calendar
--------------------
-
-  Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-          http://dynarch.com/mishoo/
-
-  This program is free software published under the
-  terms of the GNU Lesser General Public License.
-
-  For the entire license text please refer to
-  http://www.gnu.org/licenses/lgpl.html
-
-Contents
----------
-
-  calendar.js     -- the main program file
-  lang/*.js       -- internalization files
-  *.css           -- color themes
-  cal.html        -- example usage file
-  doc/            -- documentation, in PDF and HTML
-  simple-1.html   -- quick setup examples [popup calendars]
-  simple-2.html   -- quick setup example for flat calendar
-  calendar.php    -- PHP wrapper
-  test.php        -- test file for the PHP wrapper
-
-Homepage
----------
-
-  For details and latest versions please refer to calendar
-  homepage, located on my website:
-
-    http://dynarch.com/mishoo/calendar.epl
-

Copied: plog/trunk/js/jscalendar/README (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/README)
===================================================================
--- plog/trunk/js/jscalendar/README	                        (rev 0)
+++ plog/trunk/js/jscalendar/README	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,33 @@
+The DHTML Calendar
+-------------------
+
+  Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+          http://dynarch.com/mishoo/
+
+  This program is free software published under the
+  terms of the GNU Lesser General Public License.
+
+  For the entire license text please refer to
+  http://www.gnu.org/licenses/lgpl.html
+
+Contents
+---------
+
+  calendar.js     -- the main program file
+  lang/*.js       -- internalization files
+  *.css           -- color themes
+  cal.html        -- example usage file
+  doc/            -- documentation, in PDF and HTML
+  simple-1.html   -- quick setup examples [popup calendars]
+  simple-2.html   -- quick setup example for flat calendar
+  calendar.php    -- PHP wrapper
+  test.php        -- test file for the PHP wrapper
+
+Homepage
+---------
+
+  For details and latest versions please refer to calendar
+  homepage, located on my website:
+
+    http://dynarch.com/mishoo/calendar.epl
+

Deleted: plog/trunk/js/jscalendar/calendar-blue.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-blue.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-blue.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,232 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-div.calendar { position: relative; }
-
-.calendar, .calendar table {
-  border: 1px solid #556;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #eef;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;    /* They are the navigation buttons */
-  padding: 2px;          /* Make the buttons seem like they're pressing */
-}
-
-.calendar .nav {
-  background: #778 url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;      /* Pressing it will take you to the current date */
-  text-align: center;
-  background: #fff;
-  color: #000;
-  padding: 2px;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-  background: #778;
-  color: #fff;
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-  background: #bdf;
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #556;
-  padding: 2px;
-  text-align: center;
-  color: #000;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #a66;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  background-color: #aaf;
-  color: #000;
-  border: 1px solid #04f;
-  padding: 1px;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  background-color: #77c;
-  padding: 2px 0px 0px 2px;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  color: #456;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #bbb;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #fbb;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #bdf;
-}
-
-.calendar tbody .rowhilite td {
-  background: #def;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #eef;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  background: #def;
-  padding: 1px 3px 1px 1px;
-  border: 1px solid #bbb;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  background: #cde;
-  padding: 2px 2px 0px 2px;
-}
-
-.calendar tbody td.selected { /* Cell showing today date */
-  font-weight: bold;
-  border: 1px solid #000;
-  padding: 1px 3px 1px 1px;
-  background: #fff;
-  color: #000;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #a66;
-}
-
-.calendar tbody td.today { /* Cell showing selected date */
-  font-weight: bold;
-  color: #00f;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-  text-align: center;
-  background: #556;
-  color: #fff;
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: #fff;
-  color: #445;
-  border-top: 1px solid #556;
-  padding: 1px;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  background: #aaf;
-  border: 1px solid #04f;
-  color: #000;
-  padding: 1px;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  background: #77c;
-  padding: 2px 0px 0px 2px;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  top: 0px;
-  left: 0px;
-  width: 4em;
-  cursor: default;
-  border: 1px solid #655;
-  background: #def;
-  color: #000;
-  font-size: 90%;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .hilite {
-  background: #acf;
-}
-
-.calendar .combo .active {
-  border-top: 1px solid #46a;
-  border-bottom: 1px solid #46a;
-  background: #eef;
-  font-weight: bold;
-}
-
-.calendar td.time {
-  border-top: 1px solid #000;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #f4f0e8;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #667;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-blue.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-blue.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-blue.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-blue.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,232 @@
+/* The main calendar widget.  DIV containing a table. */
+
+div.calendar { position: relative; }
+
+.calendar, .calendar table {
+  border: 1px solid #556;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #eef;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;    /* They are the navigation buttons */
+  padding: 2px;          /* Make the buttons seem like they're pressing */
+}
+
+.calendar .nav {
+  background: #778 url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;      /* Pressing it will take you to the current date */
+  text-align: center;
+  background: #fff;
+  color: #000;
+  padding: 2px;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+  background: #778;
+  color: #fff;
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+  background: #bdf;
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #556;
+  padding: 2px;
+  text-align: center;
+  color: #000;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #a66;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  background-color: #aaf;
+  color: #000;
+  border: 1px solid #04f;
+  padding: 1px;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  background-color: #77c;
+  padding: 2px 0px 0px 2px;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  color: #456;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #bbb;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #fbb;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #bdf;
+}
+
+.calendar tbody .rowhilite td {
+  background: #def;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #eef;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  background: #def;
+  padding: 1px 3px 1px 1px;
+  border: 1px solid #bbb;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  background: #cde;
+  padding: 2px 2px 0px 2px;
+}
+
+.calendar tbody td.selected { /* Cell showing today date */
+  font-weight: bold;
+  border: 1px solid #000;
+  padding: 1px 3px 1px 1px;
+  background: #fff;
+  color: #000;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #a66;
+}
+
+.calendar tbody td.today { /* Cell showing selected date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+  text-align: center;
+  background: #556;
+  color: #fff;
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: #fff;
+  color: #445;
+  border-top: 1px solid #556;
+  padding: 1px;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  background: #aaf;
+  border: 1px solid #04f;
+  color: #000;
+  padding: 1px;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  background: #77c;
+  padding: 2px 0px 0px 2px;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 4em;
+  cursor: default;
+  border: 1px solid #655;
+  background: #def;
+  color: #000;
+  font-size: 90%;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .hilite {
+  background: #acf;
+}
+
+.calendar .combo .active {
+  border-top: 1px solid #46a;
+  border-bottom: 1px solid #46a;
+  background: #eef;
+  font-weight: bold;
+}
+
+.calendar td.time {
+  border-top: 1px solid #000;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #f4f0e8;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #667;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-blue2.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-blue2.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-blue2.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,236 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-div.calendar { position: relative; }
-
-.calendar, .calendar table {
-  border: 1px solid #206A9B;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #F1F8FC;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;    /* They are the navigation buttons */
-  padding: 2px;          /* Make the buttons seem like they're pressing */
-}
-
-.calendar .nav {
-  background: #007ED1 url(menuarrow2.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;      /* Pressing it will take you to the current date */
-  text-align: center;
-  background: #000;
-  color: #fff;
-  padding: 2px;
-}
-
-.calendar thead tr { /* Row <TR> containing navigation buttons */
-  background: #007ED1;
-  color: #fff;
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-  background: #C7E1F3;
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #206A9B;
-  padding: 2px;
-  text-align: center;
-  color: #000;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #a66;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  background-color: #34ABFA;
-  color: #000;
-  border: 1px solid #016DC5;
-  padding: 1px;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  background-color: #006AA9;
-  border: 1px solid #008AFF;
-  padding: 2px 0px 0px 2px;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  color: #456;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #bbb;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #fbb;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #C7E1F3;
-}
-
-.calendar tbody .rowhilite td {
-  background: #def;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #F1F8FC;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  background: #def;
-  padding: 1px 3px 1px 1px;
-  border: 1px solid #8FC4E8;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  background: #cde;
-  padding: 2px 2px 0px 2px;
-}
-
-.calendar tbody td.selected { /* Cell showing today date */
-  font-weight: bold;
-  border: 1px solid #000;
-  padding: 1px 3px 1px 1px;
-  background: #fff;
-  color: #000;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #a66;
-}
-
-.calendar tbody td.today { /* Cell showing selected date */
-  font-weight: bold;
-  color: #D50000;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-  text-align: center;
-  background: #206A9B;
-  color: #fff;
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: #000;
-  color: #fff;
-  border-top: 1px solid #206A9B;
-  padding: 1px;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  background: #B8DAF0;
-  border: 1px solid #178AEB;
-  color: #000;
-  padding: 1px;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  background: #006AA9;
-  padding: 2px 0px 0px 2px;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  top: 0px;
-  left: 0px;
-  width: 4em;
-  cursor: default;
-  border: 1px solid #655;
-  background: #def;
-  color: #000;
-  font-size: 90%;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .hilite {
-  background: #34ABFA;
-  border-top: 1px solid #46a;
-  border-bottom: 1px solid #46a;
-  font-weight: bold;
-}
-
-.calendar .combo .active {
-  border-top: 1px solid #46a;
-  border-bottom: 1px solid #46a;
-  background: #F1F8FC;
-  font-weight: bold;
-}
-
-.calendar td.time {
-  border-top: 1px solid #000;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #E3F0F9;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: #F1F8FC;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #267DB7;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: red;
-  background-color: #000;
-  color: #A5FF00;
-}

Copied: plog/trunk/js/jscalendar/calendar-blue2.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-blue2.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-blue2.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-blue2.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,236 @@
+/* The main calendar widget.  DIV containing a table. */
+
+div.calendar { position: relative; }
+
+.calendar, .calendar table {
+  border: 1px solid #206A9B;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #F1F8FC;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;    /* They are the navigation buttons */
+  padding: 2px;          /* Make the buttons seem like they're pressing */
+}
+
+.calendar .nav {
+  background: #007ED1 url(menuarrow2.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;      /* Pressing it will take you to the current date */
+  text-align: center;
+  background: #000;
+  color: #fff;
+  padding: 2px;
+}
+
+.calendar thead tr { /* Row <TR> containing navigation buttons */
+  background: #007ED1;
+  color: #fff;
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+  background: #C7E1F3;
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #206A9B;
+  padding: 2px;
+  text-align: center;
+  color: #000;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #a66;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  background-color: #34ABFA;
+  color: #000;
+  border: 1px solid #016DC5;
+  padding: 1px;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  background-color: #006AA9;
+  border: 1px solid #008AFF;
+  padding: 2px 0px 0px 2px;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  color: #456;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #bbb;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #fbb;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #C7E1F3;
+}
+
+.calendar tbody .rowhilite td {
+  background: #def;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #F1F8FC;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  background: #def;
+  padding: 1px 3px 1px 1px;
+  border: 1px solid #8FC4E8;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  background: #cde;
+  padding: 2px 2px 0px 2px;
+}
+
+.calendar tbody td.selected { /* Cell showing today date */
+  font-weight: bold;
+  border: 1px solid #000;
+  padding: 1px 3px 1px 1px;
+  background: #fff;
+  color: #000;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #a66;
+}
+
+.calendar tbody td.today { /* Cell showing selected date */
+  font-weight: bold;
+  color: #D50000;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+  text-align: center;
+  background: #206A9B;
+  color: #fff;
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: #000;
+  color: #fff;
+  border-top: 1px solid #206A9B;
+  padding: 1px;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  background: #B8DAF0;
+  border: 1px solid #178AEB;
+  color: #000;
+  padding: 1px;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  background: #006AA9;
+  padding: 2px 0px 0px 2px;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 4em;
+  cursor: default;
+  border: 1px solid #655;
+  background: #def;
+  color: #000;
+  font-size: 90%;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .hilite {
+  background: #34ABFA;
+  border-top: 1px solid #46a;
+  border-bottom: 1px solid #46a;
+  font-weight: bold;
+}
+
+.calendar .combo .active {
+  border-top: 1px solid #46a;
+  border-bottom: 1px solid #46a;
+  background: #F1F8FC;
+  font-weight: bold;
+}
+
+.calendar td.time {
+  border-top: 1px solid #000;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #E3F0F9;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: #F1F8FC;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #267DB7;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: red;
+  background-color: #000;
+  color: #A5FF00;
+}

Deleted: plog/trunk/js/jscalendar/calendar-brown.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-brown.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-brown.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,225 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-div.calendar { position: relative; }
-
-.calendar, .calendar table {
-  border: 1px solid #655;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #ffd;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;    /* They are the navigation buttons */
-  padding: 2px;          /* Make the buttons seem like they're pressing */
-}
-
-.calendar .nav {
-  background: #edc url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;      /* Pressing it will take you to the current date */
-  text-align: center;
-  background: #654;
-  color: #fed;
-  padding: 2px;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-  background: #edc;
-  color: #000;
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #655;
-  padding: 2px;
-  text-align: center;
-  color: #000;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  background-color: #faa;
-  color: #000;
-  border: 1px solid #f40;
-  padding: 1px;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  background-color: #c77;
-  padding: 2px 0px 0px 2px;
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-  background: #fed;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #bbb;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #fbb;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #fed;
-}
-
-.calendar tbody .rowhilite td {
-  background: #ddf;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #efe;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  background: #ffe;
-  padding: 1px 3px 1px 1px;
-  border: 1px solid #bbb;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  background: #ddc;
-  padding: 2px 2px 0px 2px;
-}
-
-.calendar tbody td.selected { /* Cell showing today date */
-  font-weight: bold;
-  border: 1px solid #000;
-  padding: 1px 3px 1px 1px;
-  background: #fea;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { font-weight: bold; }
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-  text-align: center;
-  background: #988;
-  color: #000;
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  border-top: 1px solid #655;
-  background: #dcb;
-  color: #840;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  background: #faa;
-  border: 1px solid #f40;
-  padding: 1px;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  background: #c77;
-  padding: 2px 0px 0px 2px;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  top: 0px;
-  left: 0px;
-  width: 4em;
-  cursor: default;
-  border: 1px solid #655;
-  background: #ffe;
-  color: #000;
-  font-size: 90%;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .hilite {
-  background: #fc8;
-}
-
-.calendar .combo .active {
-  border-top: 1px solid #a64;
-  border-bottom: 1px solid #a64;
-  background: #fee;
-  font-weight: bold;
-}
-
-.calendar td.time {
-  border-top: 1px solid #a88;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #fed;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #988;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #866;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-brown.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-brown.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-brown.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-brown.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,225 @@
+/* The main calendar widget.  DIV containing a table. */
+
+div.calendar { position: relative; }
+
+.calendar, .calendar table {
+  border: 1px solid #655;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #ffd;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;    /* They are the navigation buttons */
+  padding: 2px;          /* Make the buttons seem like they're pressing */
+}
+
+.calendar .nav {
+  background: #edc url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;      /* Pressing it will take you to the current date */
+  text-align: center;
+  background: #654;
+  color: #fed;
+  padding: 2px;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+  background: #edc;
+  color: #000;
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #655;
+  padding: 2px;
+  text-align: center;
+  color: #000;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  background-color: #faa;
+  color: #000;
+  border: 1px solid #f40;
+  padding: 1px;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  background-color: #c77;
+  padding: 2px 0px 0px 2px;
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+  background: #fed;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #bbb;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #fbb;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #fed;
+}
+
+.calendar tbody .rowhilite td {
+  background: #ddf;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #efe;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  background: #ffe;
+  padding: 1px 3px 1px 1px;
+  border: 1px solid #bbb;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  background: #ddc;
+  padding: 2px 2px 0px 2px;
+}
+
+.calendar tbody td.selected { /* Cell showing today date */
+  font-weight: bold;
+  border: 1px solid #000;
+  padding: 1px 3px 1px 1px;
+  background: #fea;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { font-weight: bold; }
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+  text-align: center;
+  background: #988;
+  color: #000;
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  border-top: 1px solid #655;
+  background: #dcb;
+  color: #840;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  background: #faa;
+  border: 1px solid #f40;
+  padding: 1px;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  background: #c77;
+  padding: 2px 0px 0px 2px;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 4em;
+  cursor: default;
+  border: 1px solid #655;
+  background: #ffe;
+  color: #000;
+  font-size: 90%;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .hilite {
+  background: #fc8;
+}
+
+.calendar .combo .active {
+  border-top: 1px solid #a64;
+  border-bottom: 1px solid #a64;
+  background: #fee;
+  font-weight: bold;
+}
+
+.calendar td.time {
+  border-top: 1px solid #a88;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #fed;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #988;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #866;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-green.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-green.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-green.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,229 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-div.calendar { position: relative; }
-
-.calendar, .calendar table {
-  border: 1px solid #565;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #efe;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;    /* They are the navigation buttons */
-  padding: 2px;          /* Make the buttons seem like they're pressing */
-  background: #676;
-  color: #fff;
-  font-size: 90%;
-}
-
-.calendar .nav {
-  background: #676 url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;      /* Pressing it will take you to the current date */
-  text-align: center;
-  padding: 2px;
-  background: #250;
-  color: #efa;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #565;
-  padding: 2px;
-  text-align: center;
-  color: #000;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #a66;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  background-color: #afa;
-  color: #000;
-  border: 1px solid #084;
-  padding: 1px;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  background-color: #7c7;
-  padding: 2px 0px 0px 2px;
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-  background: #dfb;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  color: #564;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #bbb;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #fbb;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #8a8;
-  background: #dfb;
-}
-
-.calendar tbody .rowhilite td {
-  background: #dfd;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #efe;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  background: #efd;
-  padding: 1px 3px 1px 1px;
-  border: 1px solid #bbb;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  background: #dec;
-  padding: 2px 2px 0px 2px;
-}
-
-.calendar tbody td.selected { /* Cell showing today date */
-  font-weight: bold;
-  border: 1px solid #000;
-  padding: 1px 3px 1px 1px;
-  background: #f8fff8;
-  color: #000;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #a66;
-}
-
-.calendar tbody td.today { font-weight: bold; color: #0a0; }
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-  text-align: center;
-  background: #565;
-  color: #fff;
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  padding: 2px;
-  background: #250;
-  color: #efa;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  background: #afa;
-  border: 1px solid #084;
-  color: #000;
-  padding: 1px;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  background: #7c7;
-  padding: 2px 0px 0px 2px;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  top: 0px;
-  left: 0px;
-  width: 4em;
-  cursor: default;
-  border: 1px solid #565;
-  background: #efd;
-  color: #000;
-  font-size: 90%;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .hilite {
-  background: #af8;
-}
-
-.calendar .combo .active {
-  border-top: 1px solid #6a4;
-  border-bottom: 1px solid #6a4;
-  background: #efe;
-  font-weight: bold;
-}
-
-.calendar td.time {
-  border-top: 1px solid #8a8;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #dfb;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #898;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #686;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-green.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-green.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-green.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-green.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,229 @@
+/* The main calendar widget.  DIV containing a table. */
+
+div.calendar { position: relative; }
+
+.calendar, .calendar table {
+  border: 1px solid #565;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #efe;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;    /* They are the navigation buttons */
+  padding: 2px;          /* Make the buttons seem like they're pressing */
+  background: #676;
+  color: #fff;
+  font-size: 90%;
+}
+
+.calendar .nav {
+  background: #676 url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;      /* Pressing it will take you to the current date */
+  text-align: center;
+  padding: 2px;
+  background: #250;
+  color: #efa;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #565;
+  padding: 2px;
+  text-align: center;
+  color: #000;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #a66;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  background-color: #afa;
+  color: #000;
+  border: 1px solid #084;
+  padding: 1px;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  background-color: #7c7;
+  padding: 2px 0px 0px 2px;
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+  background: #dfb;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  color: #564;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #bbb;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #fbb;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #8a8;
+  background: #dfb;
+}
+
+.calendar tbody .rowhilite td {
+  background: #dfd;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #efe;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  background: #efd;
+  padding: 1px 3px 1px 1px;
+  border: 1px solid #bbb;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  background: #dec;
+  padding: 2px 2px 0px 2px;
+}
+
+.calendar tbody td.selected { /* Cell showing today date */
+  font-weight: bold;
+  border: 1px solid #000;
+  padding: 1px 3px 1px 1px;
+  background: #f8fff8;
+  color: #000;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #a66;
+}
+
+.calendar tbody td.today { font-weight: bold; color: #0a0; }
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+  text-align: center;
+  background: #565;
+  color: #fff;
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  padding: 2px;
+  background: #250;
+  color: #efa;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  background: #afa;
+  border: 1px solid #084;
+  color: #000;
+  padding: 1px;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  background: #7c7;
+  padding: 2px 0px 0px 2px;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 4em;
+  cursor: default;
+  border: 1px solid #565;
+  background: #efd;
+  color: #000;
+  font-size: 90%;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .hilite {
+  background: #af8;
+}
+
+.calendar .combo .active {
+  border-top: 1px solid #6a4;
+  border-bottom: 1px solid #6a4;
+  background: #efe;
+  font-weight: bold;
+}
+
+.calendar td.time {
+  border-top: 1px solid #8a8;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #dfb;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #898;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #686;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-setup.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-setup.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-setup.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,200 +0,0 @@
-/*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/
- * ---------------------------------------------------------------------------
- *
- * The DHTML Calendar
- *
- * Details and latest version at:
- * http://dynarch.com/mishoo/calendar.epl
- *
- * This script is distributed under the GNU Lesser General Public License.
- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
- *
- * This file defines helper functions for setting up the calendar.  They are
- * intended to help non-programmers get a working calendar on their site
- * quickly.  This script should not be seen as part of the calendar.  It just
- * shows you what one can do with the calendar, while in the same time
- * providing a quick and simple method for setting it up.  If you need
- * exhaustive customization of the calendar creation process feel free to
- * modify this code to suit your needs (this is recommended and much better
- * than modifying calendar.js itself).
- */
-
-// $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $
-
-/**
- *  This function "patches" an input field (or other element) to use a calendar
- *  widget for date selection.
- *
- *  The "params" is a single object that can have the following properties:
- *
- *    prop. name   | description
- *  -------------------------------------------------------------------------------------------------
- *   inputField    | the ID of an input field to store the date
- *   displayArea   | the ID of a DIV or other element to show the date
- *   button        | ID of a button or other element that will trigger the calendar
- *   eventName     | event that will trigger the calendar, without the "on" prefix (default: "click")
- *   ifFormat      | date format that will be stored in the input field
- *   daFormat      | the date format that will be used to display the date in displayArea
- *   singleClick   | (true/false) wether the calendar is in single click mode or not (default: true)
- *   firstDay      | numeric: 0 to 6.  "0" means display Sunday first, "1" means display Monday first, etc.
- *   align         | alignment (default: "Br"); if you don't know what's this see the calendar documentation
- *   range         | array with 2 elements.  Default: [1900, 2999] -- the range of years available
- *   weekNumbers   | (true/false) if it's true (default) the calendar will display week numbers
- *   flat          | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID
- *   flatCallback  | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar)
- *   disableFunc   | function that receives a JS Date object and should return true if that date has to be disabled in the calendar
- *   onSelect      | function that gets called when a date is selected.  You don't _have_ to supply this (the default is generally okay)
- *   onClose       | function that gets called when the calendar is closed.  [default]
- *   onUpdate      | function that gets called after the date is updated in the input field.  Receives a reference to the calendar.
- *   date          | the date that the calendar will be initially displayed to
- *   showsTime     | default: false; if true the calendar will include a time selector
- *   timeFormat    | the time format; can be "12" or "24", default is "12"
- *   electric      | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close
- *   step          | configures the step of the years in drop-down boxes; default: 2
- *   position      | configures the calendar absolute position; default: null
- *   cache         | if "true" (but default: "false") it will reuse the same calendar object, where possible
- *   showOthers    | if "true" (but default: "false") it will show days from other months too
- *
- *  None of them is required, they all have default values.  However, if you
- *  pass none of "inputField", "displayArea" or "button" you'll get a warning
- *  saying "nothing to setup".
- */
-Calendar.setup = function (params) {
-	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
-
-	param_default("inputField",     null);
-	param_default("displayArea",    null);
-	param_default("button",         null);
-	param_default("eventName",      "click");
-	param_default("ifFormat",       "%Y/%m/%d");
-	param_default("daFormat",       "%Y/%m/%d");
-	param_default("singleClick",    true);
-	param_default("disableFunc",    null);
-	param_default("dateStatusFunc", params["disableFunc"]);	// takes precedence if both are defined
-	param_default("dateText",       null);
-	param_default("firstDay",       null);
-	param_default("align",          "Br");
-	param_default("range",          [1900, 2999]);
-	param_default("weekNumbers",    true);
-	param_default("flat",           null);
-	param_default("flatCallback",   null);
-	param_default("onSelect",       null);
-	param_default("onClose",        null);
-	param_default("onUpdate",       null);
-	param_default("date",           null);
-	param_default("showsTime",      false);
-	param_default("timeFormat",     "24");
-	param_default("electric",       true);
-	param_default("step",           2);
-	param_default("position",       null);
-	param_default("cache",          false);
-	param_default("showOthers",     false);
-	param_default("multiple",       null);
-
-	var tmp = ["inputField", "displayArea", "button"];
-	for (var i in tmp) {
-		if (typeof params[tmp[i]] == "string") {
-			params[tmp[i]] = document.getElementById(params[tmp[i]]);
-		}
-	}
-	if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
-		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
-		return false;
-	}
-
-	function onSelect(cal) {
-		var p = cal.params;
-		var update = (cal.dateClicked || p.electric);
-		if (update && p.inputField) {
-			p.inputField.value = cal.date.print(p.ifFormat);
-			if (typeof p.inputField.onchange == "function")
-				p.inputField.onchange();
-		}
-		if (update && p.displayArea)
-			p.displayArea.innerHTML = cal.date.print(p.daFormat);
-		if (update && typeof p.onUpdate == "function")
-			p.onUpdate(cal);
-		if (update && p.flat) {
-			if (typeof p.flatCallback == "function")
-				p.flatCallback(cal);
-		}
-		if (update && p.singleClick && cal.dateClicked)
-			cal.callCloseHandler();
-	};
-
-	if (params.flat != null) {
-		if (typeof params.flat == "string")
-			params.flat = document.getElementById(params.flat);
-		if (!params.flat) {
-			alert("Calendar.setup:\n  Flat specified but can't find parent.");
-			return false;
-		}
-		var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
-		cal.showsOtherMonths = params.showOthers;
-		cal.showsTime = params.showsTime;
-		cal.time24 = (params.timeFormat == "24");
-		cal.params = params;
-		cal.weekNumbers = params.weekNumbers;
-		cal.setRange(params.range[0], params.range[1]);
-		cal.setDateStatusHandler(params.dateStatusFunc);
-		cal.getDateText = params.dateText;
-		if (params.ifFormat) {
-			cal.setDateFormat(params.ifFormat);
-		}
-		if (params.inputField && typeof params.inputField.value == "string") {
-			cal.parseDate(params.inputField.value);
-		}
-		cal.create(params.flat);
-		cal.show();
-		return false;
-	}
-
-	var triggerEl = params.button || params.displayArea || params.inputField;
-	triggerEl["on" + params.eventName] = function() {
-		var dateEl = params.inputField || params.displayArea;
-		var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
-		var mustCreate = false;
-		var cal = window.calendar;
-		if (dateEl)
-			params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
-		if (!(cal && params.cache)) {
-			window.calendar = cal = new Calendar(params.firstDay,
-							     params.date,
-							     params.onSelect || onSelect,
-							     params.onClose || function(cal) { cal.hide(); });
-			cal.showsTime = params.showsTime;
-			cal.time24 = (params.timeFormat == "24");
-			cal.weekNumbers = params.weekNumbers;
-			mustCreate = true;
-		} else {
-			if (params.date)
-				cal.setDate(params.date);
-			cal.hide();
-		}
-		if (params.multiple) {
-			cal.multiple = {};
-			for (var i = params.multiple.length; --i >= 0;) {
-				var d = params.multiple[i];
-				var ds = d.print("%Y%m%d");
-				cal.multiple[ds] = d;
-			}
-		}
-		cal.showsOtherMonths = params.showOthers;
-		cal.yearStep = params.step;
-		cal.setRange(params.range[0], params.range[1]);
-		cal.params = params;
-		cal.setDateStatusHandler(params.dateStatusFunc);
-		cal.getDateText = params.dateText;
-		cal.setDateFormat(dateFmt);
-		if (mustCreate)
-			cal.create();
-		cal.refresh();
-		if (!params.position)
-			cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
-		else
-			cal.showAt(params.position[0], params.position[1]);
-		return false;
-	};
-
-	return cal;
-};

Copied: plog/trunk/js/jscalendar/calendar-setup.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-setup.js)
===================================================================
--- plog/trunk/js/jscalendar/calendar-setup.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-setup.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,200 @@
+/*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/
+ * ---------------------------------------------------------------------------
+ *
+ * The DHTML Calendar
+ *
+ * Details and latest version at:
+ * http://dynarch.com/mishoo/calendar.epl
+ *
+ * This script is distributed under the GNU Lesser General Public License.
+ * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
+ *
+ * This file defines helper functions for setting up the calendar.  They are
+ * intended to help non-programmers get a working calendar on their site
+ * quickly.  This script should not be seen as part of the calendar.  It just
+ * shows you what one can do with the calendar, while in the same time
+ * providing a quick and simple method for setting it up.  If you need
+ * exhaustive customization of the calendar creation process feel free to
+ * modify this code to suit your needs (this is recommended and much better
+ * than modifying calendar.js itself).
+ */
+
+// $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $
+
+/**
+ *  This function "patches" an input field (or other element) to use a calendar
+ *  widget for date selection.
+ *
+ *  The "params" is a single object that can have the following properties:
+ *
+ *    prop. name   | description
+ *  -------------------------------------------------------------------------------------------------
+ *   inputField    | the ID of an input field to store the date
+ *   displayArea   | the ID of a DIV or other element to show the date
+ *   button        | ID of a button or other element that will trigger the calendar
+ *   eventName     | event that will trigger the calendar, without the "on" prefix (default: "click")
+ *   ifFormat      | date format that will be stored in the input field
+ *   daFormat      | the date format that will be used to display the date in displayArea
+ *   singleClick   | (true/false) wether the calendar is in single click mode or not (default: true)
+ *   firstDay      | numeric: 0 to 6.  "0" means display Sunday first, "1" means display Monday first, etc.
+ *   align         | alignment (default: "Br"); if you don't know what's this see the calendar documentation
+ *   range         | array with 2 elements.  Default: [1900, 2999] -- the range of years available
+ *   weekNumbers   | (true/false) if it's true (default) the calendar will display week numbers
+ *   flat          | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID
+ *   flatCallback  | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar)
+ *   disableFunc   | function that receives a JS Date object and should return true if that date has to be disabled in the calendar
+ *   onSelect      | function that gets called when a date is selected.  You don't _have_ to supply this (the default is generally okay)
+ *   onClose       | function that gets called when the calendar is closed.  [default]
+ *   onUpdate      | function that gets called after the date is updated in the input field.  Receives a reference to the calendar.
+ *   date          | the date that the calendar will be initially displayed to
+ *   showsTime     | default: false; if true the calendar will include a time selector
+ *   timeFormat    | the time format; can be "12" or "24", default is "12"
+ *   electric      | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close
+ *   step          | configures the step of the years in drop-down boxes; default: 2
+ *   position      | configures the calendar absolute position; default: null
+ *   cache         | if "true" (but default: "false") it will reuse the same calendar object, where possible
+ *   showOthers    | if "true" (but default: "false") it will show days from other months too
+ *
+ *  None of them is required, they all have default values.  However, if you
+ *  pass none of "inputField", "displayArea" or "button" you'll get a warning
+ *  saying "nothing to setup".
+ */
+Calendar.setup = function (params) {
+	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
+
+	param_default("inputField",     null);
+	param_default("displayArea",    null);
+	param_default("button",         null);
+	param_default("eventName",      "click");
+	param_default("ifFormat",       "%Y/%m/%d");
+	param_default("daFormat",       "%Y/%m/%d");
+	param_default("singleClick",    true);
+	param_default("disableFunc",    null);
+	param_default("dateStatusFunc", params["disableFunc"]);	// takes precedence if both are defined
+	param_default("dateText",       null);
+	param_default("firstDay",       null);
+	param_default("align",          "Br");
+	param_default("range",          [1900, 2999]);
+	param_default("weekNumbers",    true);
+	param_default("flat",           null);
+	param_default("flatCallback",   null);
+	param_default("onSelect",       null);
+	param_default("onClose",        null);
+	param_default("onUpdate",       null);
+	param_default("date",           null);
+	param_default("showsTime",      false);
+	param_default("timeFormat",     "24");
+	param_default("electric",       true);
+	param_default("step",           2);
+	param_default("position",       null);
+	param_default("cache",          false);
+	param_default("showOthers",     false);
+	param_default("multiple",       null);
+
+	var tmp = ["inputField", "displayArea", "button"];
+	for (var i in tmp) {
+		if (typeof params[tmp[i]] == "string") {
+			params[tmp[i]] = document.getElementById(params[tmp[i]]);
+		}
+	}
+	if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
+		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
+		return false;
+	}
+
+	function onSelect(cal) {
+		var p = cal.params;
+		var update = (cal.dateClicked || p.electric);
+		if (update && p.inputField) {
+			p.inputField.value = cal.date.print(p.ifFormat);
+			if (typeof p.inputField.onchange == "function")
+				p.inputField.onchange();
+		}
+		if (update && p.displayArea)
+			p.displayArea.innerHTML = cal.date.print(p.daFormat);
+		if (update && typeof p.onUpdate == "function")
+			p.onUpdate(cal);
+		if (update && p.flat) {
+			if (typeof p.flatCallback == "function")
+				p.flatCallback(cal);
+		}
+		if (update && p.singleClick && cal.dateClicked)
+			cal.callCloseHandler();
+	};
+
+	if (params.flat != null) {
+		if (typeof params.flat == "string")
+			params.flat = document.getElementById(params.flat);
+		if (!params.flat) {
+			alert("Calendar.setup:\n  Flat specified but can't find parent.");
+			return false;
+		}
+		var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
+		cal.showsOtherMonths = params.showOthers;
+		cal.showsTime = params.showsTime;
+		cal.time24 = (params.timeFormat == "24");
+		cal.params = params;
+		cal.weekNumbers = params.weekNumbers;
+		cal.setRange(params.range[0], params.range[1]);
+		cal.setDateStatusHandler(params.dateStatusFunc);
+		cal.getDateText = params.dateText;
+		if (params.ifFormat) {
+			cal.setDateFormat(params.ifFormat);
+		}
+		if (params.inputField && typeof params.inputField.value == "string") {
+			cal.parseDate(params.inputField.value);
+		}
+		cal.create(params.flat);
+		cal.show();
+		return false;
+	}
+
+	var triggerEl = params.button || params.displayArea || params.inputField;
+	triggerEl["on" + params.eventName] = function() {
+		var dateEl = params.inputField || params.displayArea;
+		var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
+		var mustCreate = false;
+		var cal = window.calendar;
+		if (dateEl)
+			params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
+		if (!(cal && params.cache)) {
+			window.calendar = cal = new Calendar(params.firstDay,
+							     params.date,
+							     params.onSelect || onSelect,
+							     params.onClose || function(cal) { cal.hide(); });
+			cal.showsTime = params.showsTime;
+			cal.time24 = (params.timeFormat == "24");
+			cal.weekNumbers = params.weekNumbers;
+			mustCreate = true;
+		} else {
+			if (params.date)
+				cal.setDate(params.date);
+			cal.hide();
+		}
+		if (params.multiple) {
+			cal.multiple = {};
+			for (var i = params.multiple.length; --i >= 0;) {
+				var d = params.multiple[i];
+				var ds = d.print("%Y%m%d");
+				cal.multiple[ds] = d;
+			}
+		}
+		cal.showsOtherMonths = params.showOthers;
+		cal.yearStep = params.step;
+		cal.setRange(params.range[0], params.range[1]);
+		cal.params = params;
+		cal.setDateStatusHandler(params.dateStatusFunc);
+		cal.getDateText = params.dateText;
+		cal.setDateFormat(dateFmt);
+		if (mustCreate)
+			cal.create();
+		cal.refresh();
+		if (!params.position)
+			cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
+		else
+			cal.showAt(params.position[0], params.position[1]);
+		return false;
+	};
+
+	return cal;
+};

Deleted: plog/trunk/js/jscalendar/calendar-setup_stripped.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-setup_stripped.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-setup_stripped.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,21 +0,0 @@
-/*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/
- * ---------------------------------------------------------------------------
- *
- * The DHTML Calendar
- *
- * Details and latest version at:
- * http://dynarch.com/mishoo/calendar.epl
- *
- * This script is distributed under the GNU Lesser General Public License.
- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
- *
- * This file defines helper functions for setting up the calendar.  They are
- * intended to help non-programmers get a working calendar on their site
- * quickly.  This script should not be seen as part of the calendar.  It just
- * shows you what one can do with the calendar, while in the same time
- * providing a quick and simple method for setting it up.  If you need
- * exhaustive customization of the calendar creation process feel free to
- * modify this code to suit your needs (this is recommended and much better
- * than modifying calendar.js itself).
- */
- Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("
 showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(pa
 rams.flat);if(!params.flat){alert("Calendar.setup:\n  Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl
 .value||dateEl.innerHTML,dateFmt);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/calendar-setup_stripped.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-setup_stripped.js)
===================================================================
--- plog/trunk/js/jscalendar/calendar-setup_stripped.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-setup_stripped.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,21 @@
+/*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/
+ * ---------------------------------------------------------------------------
+ *
+ * The DHTML Calendar
+ *
+ * Details and latest version at:
+ * http://dynarch.com/mishoo/calendar.epl
+ *
+ * This script is distributed under the GNU Lesser General Public License.
+ * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
+ *
+ * This file defines helper functions for setting up the calendar.  They are
+ * intended to help non-programmers get a working calendar on their site
+ * quickly.  This script should not be seen as part of the calendar.  It just
+ * shows you what one can do with the calendar, while in the same time
+ * providing a quick and simple method for setting it up.  If you need
+ * exhaustive customization of the calendar creation process feel free to
+ * modify this code to suit your needs (this is recommended and much better
+ * than modifying calendar.js itself).
+ */
+ Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("
 showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(pa
 rams.flat);if(!params.flat){alert("Calendar.setup:\n  Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl
 .value||dateEl.innerHTML,dateFmt);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/calendar-system.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-system.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-system.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,251 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-.calendar {
-  position: relative;
-  display: none;
-  border: 1px solid;
-  border-color: #fff #000 #000 #fff;
-  font-size: 11px;
-  cursor: default;
-  background: Window;
-  color: WindowText;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-.calendar table {
-  border: 1px solid;
-  border-color: #fff #000 #000 #fff;
-  font-size: 11px;
-  cursor: default;
-  background: Window;
-  color: WindowText;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;
-  padding: 1px;
-  border: 1px solid;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-  background: ButtonFace;
-}
-
-.calendar .nav {
-  background: ButtonFace url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;
-  padding: 1px;
-  border: 1px solid #000;
-  background: ActiveCaption;
-  color: CaptionText;
-  text-align: center;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid ButtonShadow;
-  padding: 2px;
-  text-align: center;
-  background: ButtonFace;
-  color: ButtonText;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  border: 2px solid;
-  padding: 0px;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  border-width: 1px;
-  padding: 2px 0px 0px 2px;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #aaa;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #faa;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid ButtonShadow;
-  background: ButtonFace;
-  color: ButtonText;
-}
-
-.calendar tbody .rowhilite td {
-  background: Highlight;
-  color: HighlightText;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  padding: 1px 3px 1px 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  padding: 2px 2px 0px 2px;
-  border: 1px solid;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-}
-
-.calendar tbody td.selected { /* Cell showing selected date */
-  font-weight: bold;
-  border: 1px solid;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-  padding: 2px 2px 0px 2px;
-  background: ButtonFace;
-  color: ButtonText;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { /* Cell showing today date */
-  font-weight: bold;
-  color: #00f;
-}
-
-.calendar tbody td.disabled { color: GrayText; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: ButtonFace;
-  padding: 1px;
-  border: 1px solid;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-  color: ButtonText;
-  text-align: center;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  padding: 1px;
-  background: #e4e0d8;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  width: 4em;
-  top: 0px;
-  left: 0px;
-  cursor: default;
-  border: 1px solid;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-  background: Menu;
-  color: MenuText;
-  font-size: 90%;
-  padding: 1px;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .active {
-  padding: 0px;
-  border: 1px solid #000;
-}
-
-.calendar .combo .hilite {
-  background: Highlight;
-  color: HighlightText;
-}
-
-.calendar td.time {
-  border-top: 1px solid ButtonShadow;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: ButtonFace;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: Menu;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: Highlight;
-  color: HighlightText;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-system.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-system.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-system.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-system.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,251 @@
+/* The main calendar widget.  DIV containing a table. */
+
+.calendar {
+  position: relative;
+  display: none;
+  border: 1px solid;
+  border-color: #fff #000 #000 #fff;
+  font-size: 11px;
+  cursor: default;
+  background: Window;
+  color: WindowText;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+.calendar table {
+  border: 1px solid;
+  border-color: #fff #000 #000 #fff;
+  font-size: 11px;
+  cursor: default;
+  background: Window;
+  color: WindowText;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;
+  padding: 1px;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+  background: ButtonFace;
+}
+
+.calendar .nav {
+  background: ButtonFace url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;
+  padding: 1px;
+  border: 1px solid #000;
+  background: ActiveCaption;
+  color: CaptionText;
+  text-align: center;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid ButtonShadow;
+  padding: 2px;
+  text-align: center;
+  background: ButtonFace;
+  color: ButtonText;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  border: 2px solid;
+  padding: 0px;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  border-width: 1px;
+  padding: 2px 0px 0px 2px;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid ButtonShadow;
+  background: ButtonFace;
+  color: ButtonText;
+}
+
+.calendar tbody .rowhilite td {
+  background: Highlight;
+  color: HighlightText;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  padding: 1px 3px 1px 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+  padding: 2px 2px 0px 2px;
+  background: ButtonFace;
+  color: ButtonText;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { /* Cell showing today date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody td.disabled { color: GrayText; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: ButtonFace;
+  padding: 1px;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+  color: ButtonText;
+  text-align: center;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  padding: 1px;
+  background: #e4e0d8;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  width: 4em;
+  top: 0px;
+  left: 0px;
+  cursor: default;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+  background: Menu;
+  color: MenuText;
+  font-size: 90%;
+  padding: 1px;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .active {
+  padding: 0px;
+  border: 1px solid #000;
+}
+
+.calendar .combo .hilite {
+  background: Highlight;
+  color: HighlightText;
+}
+
+.calendar td.time {
+  border-top: 1px solid ButtonShadow;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: ButtonFace;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: Menu;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: Highlight;
+  color: HighlightText;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-tas.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-tas.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-tas.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,239 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-div.calendar { position: relative; }
-
-.calendar, .calendar table {
-  border: 1px solid #655;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #ffd;
-  font-family: tahoma,verdana,sans-serif;
-  filter:
-progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;    /* They are the navigation buttons */
-  padding: 2px;          /* Make the buttons seem like they're pressing */
-  color:#363636;
-}
-
-.calendar .nav {
-  background: #edc url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;      /* Pressing it will take you to the current date */
-  text-align: center;
-  background: #654;
-  color: #363636;
-  padding: 2px;
-  filter:
-progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#dddccc);
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-  /*background: #3B86A0;*/
-  color: #363636;
-  font-weight: bold; 	
-filter:
-progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#3b86a0);
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #655;
-  padding: 2px;
-  text-align: center;
-  color: #363636;
-    filter:
-progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  background-color: #ffcc86;
-  color: #000;
-  border: 1px solid #b59345;
-  padding: 1px;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  background-color: #c77;
-  padding: 2px 0px 0px 2px;
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-  background: #fed;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #aaa;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #faa;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #fed;
-}
-
-.calendar tbody .rowhilite td {
- background: #ddf;
-  
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #efe;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  background: #ffe;
-  padding: 1px 3px 1px 1px;
-  border: 1px solid #bbb;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  background: #ddc;
-  padding: 2px 2px 0px 2px;
-}
-
-.calendar tbody td.selected { /* Cell showing today date */
-  font-weight: bold;
-  border: 1px solid #000;
-  padding: 1px 3px 1px 1px;
-  background: #fea;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { font-weight: bold; }
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-  text-align: center;
-  background: #988;
-  color: #000;
-  
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  border-top: 1px solid #655;
-  background: #dcb;
-  color: #363636;
-  font-weight: bold;
-	filter:
-progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#FFFFFF,EndColorStr=#DDDCCC);
-}
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  background: #faa;
-  border: 1px solid #f40;
-  padding: 1px;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  background: #c77;
-  padding: 2px 0px 0px 2px;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.combo {
-  position: absolute;
-  display: none;
-  top: 0px;
-  left: 0px;
-  width: 4em;
-  cursor: default;
-  border: 1px solid #655;
-  background: #ffe;
-  color: #000;
-  font-size: smaller;
-  z-index: 100;
-}
-
-.combo .label,
-.combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.combo .label-IEfix {
-  width: 4em;
-}
-
-.combo .hilite {
-  background: #fc8;
-}
-
-.combo .active {
-  border-top: 1px solid #a64;
-  border-bottom: 1px solid #a64;
-  background: #fee;
-  font-weight: bold;
-}
-
-.calendar td.time {
-  border-top: 1px solid #a88;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #fed;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #988;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #866;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-tas.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-tas.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-tas.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-tas.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,239 @@
+/* The main calendar widget.  DIV containing a table. */
+
+div.calendar { position: relative; }
+
+.calendar, .calendar table {
+  border: 1px solid #655;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #ffd;
+  font-family: tahoma,verdana,sans-serif;
+  filter:
+progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;    /* They are the navigation buttons */
+  padding: 2px;          /* Make the buttons seem like they're pressing */
+  color:#363636;
+}
+
+.calendar .nav {
+  background: #edc url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;      /* Pressing it will take you to the current date */
+  text-align: center;
+  background: #654;
+  color: #363636;
+  padding: 2px;
+  filter:
+progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#dddccc);
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+  /*background: #3B86A0;*/
+  color: #363636;
+  font-weight: bold; 	
+filter:
+progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#3b86a0);
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #655;
+  padding: 2px;
+  text-align: center;
+  color: #363636;
+    filter:
+progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  background-color: #ffcc86;
+  color: #000;
+  border: 1px solid #b59345;
+  padding: 1px;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  background-color: #c77;
+  padding: 2px 0px 0px 2px;
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+  background: #fed;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #fed;
+}
+
+.calendar tbody .rowhilite td {
+ background: #ddf;
+  
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #efe;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  background: #ffe;
+  padding: 1px 3px 1px 1px;
+  border: 1px solid #bbb;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  background: #ddc;
+  padding: 2px 2px 0px 2px;
+}
+
+.calendar tbody td.selected { /* Cell showing today date */
+  font-weight: bold;
+  border: 1px solid #000;
+  padding: 1px 3px 1px 1px;
+  background: #fea;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { font-weight: bold; }
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+  text-align: center;
+  background: #988;
+  color: #000;
+  
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  border-top: 1px solid #655;
+  background: #dcb;
+  color: #363636;
+  font-weight: bold;
+	filter:
+progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#FFFFFF,EndColorStr=#DDDCCC);
+}
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  background: #faa;
+  border: 1px solid #f40;
+  padding: 1px;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  background: #c77;
+  padding: 2px 0px 0px 2px;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.combo {
+  position: absolute;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 4em;
+  cursor: default;
+  border: 1px solid #655;
+  background: #ffe;
+  color: #000;
+  font-size: smaller;
+  z-index: 100;
+}
+
+.combo .label,
+.combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.combo .label-IEfix {
+  width: 4em;
+}
+
+.combo .hilite {
+  background: #fc8;
+}
+
+.combo .active {
+  border-top: 1px solid #a64;
+  border-bottom: 1px solid #a64;
+  background: #fee;
+  font-weight: bold;
+}
+
+.calendar td.time {
+  border-top: 1px solid #a88;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #fed;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #988;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #866;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-win2k-1.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-1.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-win2k-1.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,271 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-.calendar {
-  position: relative;
-  display: none;
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #d4d0c8;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-.calendar table {
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #d4d0c8;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;
-  padding: 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar .nav {
-  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #848078;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #000;
-  padding: 2px;
-  text-align: center;
-  background: #f4f0e8;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  padding: 0px;
-  background-color: #e4e0d8;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  background-color: #c4c0b8;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #aaa;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #faa;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #f4f0e8;
-}
-
-.calendar tbody .rowhilite td {
-  background: #e4e0d8;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #d4d0c8;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  padding: 1px 3px 1px 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  padding: 2px 2px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar tbody td.selected { /* Cell showing selected date */
-  font-weight: bold;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  padding: 2px 2px 0px 2px;
-  background: #e4e0d8;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { /* Cell showing today date */
-  font-weight: bold;
-  color: #00f;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: #f4f0e8;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #848078;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  padding: 1px;
-  background: #e4e0d8;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  width: 4em;
-  top: 0px;
-  left: 0px;
-  cursor: default;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  background: #e4e0d8;
-  font-size: 90%;
-  padding: 1px;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .active {
-  background: #c4c0b8;
-  padding: 0px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar .combo .hilite {
-  background: #048;
-  color: #fea;
-}
-
-.calendar td.time {
-  border-top: 1px solid #000;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #f4f0e8;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #766;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-win2k-1.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-1.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-win2k-1.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-win2k-1.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,271 @@
+/* The main calendar widget.  DIV containing a table. */
+
+.calendar {
+  position: relative;
+  display: none;
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #d4d0c8;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+.calendar table {
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #d4d0c8;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;
+  padding: 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar .nav {
+  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #848078;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #000;
+  padding: 2px;
+  text-align: center;
+  background: #f4f0e8;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  padding: 0px;
+  background-color: #e4e0d8;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  background-color: #c4c0b8;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #f4f0e8;
+}
+
+.calendar tbody .rowhilite td {
+  background: #e4e0d8;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #d4d0c8;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  padding: 1px 3px 1px 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  padding: 2px 2px 0px 2px;
+  background: #e4e0d8;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { /* Cell showing today date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: #f4f0e8;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #848078;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  padding: 1px;
+  background: #e4e0d8;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  width: 4em;
+  top: 0px;
+  left: 0px;
+  cursor: default;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  background: #e4e0d8;
+  font-size: 90%;
+  padding: 1px;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .active {
+  background: #c4c0b8;
+  padding: 0px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar .combo .hilite {
+  background: #048;
+  color: #fea;
+}
+
+.calendar td.time {
+  border-top: 1px solid #000;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #f4f0e8;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #766;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-win2k-2.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-2.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-win2k-2.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,271 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-.calendar {
-  position: relative;
-  display: none;
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #d4c8d0;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-.calendar table {
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #d4c8d0;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;
-  padding: 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar .nav {
-  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #847880;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #000;
-  padding: 2px;
-  text-align: center;
-  background: #f4e8f0;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  padding: 0px;
-  background-color: #e4d8e0;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  background-color: #c4b8c0;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #aaa;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #faa;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #f4e8f0;
-}
-
-.calendar tbody .rowhilite td {
-  background: #e4d8e0;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #d4c8d0;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  padding: 1px 3px 1px 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  padding: 2px 2px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar tbody td.selected { /* Cell showing selected date */
-  font-weight: bold;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  padding: 2px 2px 0px 2px;
-  background: #e4d8e0;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { /* Cell showing today date */
-  font-weight: bold;
-  color: #00f;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: #f4e8f0;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #847880;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  padding: 1px;
-  background: #e4d8e0;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  width: 4em;
-  top: 0px;
-  left: 0px;
-  cursor: default;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  background: #e4d8e0;
-  font-size: 90%;
-  padding: 1px;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .active {
-  background: #d4c8d0;
-  padding: 0px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar .combo .hilite {
-  background: #408;
-  color: #fea;
-}
-
-.calendar td.time {
-  border-top: 1px solid #000;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #f4f0e8;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #766;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-win2k-2.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-2.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-win2k-2.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-win2k-2.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,271 @@
+/* The main calendar widget.  DIV containing a table. */
+
+.calendar {
+  position: relative;
+  display: none;
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #d4c8d0;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+.calendar table {
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #d4c8d0;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;
+  padding: 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar .nav {
+  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #847880;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #000;
+  padding: 2px;
+  text-align: center;
+  background: #f4e8f0;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  padding: 0px;
+  background-color: #e4d8e0;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  background-color: #c4b8c0;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #f4e8f0;
+}
+
+.calendar tbody .rowhilite td {
+  background: #e4d8e0;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #d4c8d0;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  padding: 1px 3px 1px 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  padding: 2px 2px 0px 2px;
+  background: #e4d8e0;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { /* Cell showing today date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: #f4e8f0;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #847880;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  padding: 1px;
+  background: #e4d8e0;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  width: 4em;
+  top: 0px;
+  left: 0px;
+  cursor: default;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  background: #e4d8e0;
+  font-size: 90%;
+  padding: 1px;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .active {
+  background: #d4c8d0;
+  padding: 0px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar .combo .hilite {
+  background: #408;
+  color: #fea;
+}
+
+.calendar td.time {
+  border-top: 1px solid #000;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #f4f0e8;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #766;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-win2k-cold-1.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-cold-1.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-win2k-cold-1.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,265 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-.calendar {
-  position: relative;
-  display: none;
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #c8d0d4;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-.calendar table {
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #c8d0d4;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;
-  padding: 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar .nav {
-  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #788084;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #000;
-  padding: 2px;
-  text-align: center;
-  background: #e8f0f4;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  padding: 0px;
-  background-color: #d8e0e4;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  background-color: #b8c0c4;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #aaa;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #faa;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #e8f4f0;
-}
-
-.calendar tbody .rowhilite td {
-  background: #d8e4e0;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #c8d4d0;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  padding: 1px 3px 1px 1px;
-  border: 1px solid;
-  border-color: #fff #000 #000 #fff;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  padding: 2px 2px 0px 2px;
-  border: 1px solid;
-  border-color: #000 #fff #fff #000;
-}
-
-.calendar tbody td.selected { /* Cell showing selected date */
-  font-weight: bold;
-  padding: 2px 2px 0px 2px;
-  border: 1px solid;
-  border-color: #000 #fff #fff #000;
-  background: #d8e0e4;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { /* Cell showing today date */
-  font-weight: bold;
-  color: #00f;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: #e8f0f4;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #788084;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  padding: 1px;
-  background: #d8e0e4;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  width: 4em;
-  top: 0px;
-  left: 0px;
-  cursor: default;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  background: #d8e0e4;
-  font-size: 90%;
-  padding: 1px;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .active {
-  background: #c8d0d4;
-  padding: 0px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar .combo .hilite {
-  background: #048;
-  color: #aef;
-}
-
-.calendar td.time {
-  border-top: 1px solid #000;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #e8f0f4;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #667;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-win2k-cold-1.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-cold-1.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-win2k-cold-1.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-win2k-cold-1.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,265 @@
+/* The main calendar widget.  DIV containing a table. */
+
+.calendar {
+  position: relative;
+  display: none;
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #c8d0d4;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+.calendar table {
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #c8d0d4;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;
+  padding: 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar .nav {
+  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #788084;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #000;
+  padding: 2px;
+  text-align: center;
+  background: #e8f0f4;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  padding: 0px;
+  background-color: #d8e0e4;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  background-color: #b8c0c4;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #e8f4f0;
+}
+
+.calendar tbody .rowhilite td {
+  background: #d8e4e0;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #c8d4d0;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  padding: 1px 3px 1px 1px;
+  border: 1px solid;
+  border-color: #fff #000 #000 #fff;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+  border: 1px solid;
+  border-color: #000 #fff #fff #000;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  padding: 2px 2px 0px 2px;
+  border: 1px solid;
+  border-color: #000 #fff #fff #000;
+  background: #d8e0e4;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { /* Cell showing today date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: #e8f0f4;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #788084;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  padding: 1px;
+  background: #d8e0e4;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  width: 4em;
+  top: 0px;
+  left: 0px;
+  cursor: default;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  background: #d8e0e4;
+  font-size: 90%;
+  padding: 1px;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .active {
+  background: #c8d0d4;
+  padding: 0px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar .combo .hilite {
+  background: #048;
+  color: #aef;
+}
+
+.calendar td.time {
+  border-top: 1px solid #000;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #e8f0f4;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #667;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar-win2k-cold-2.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-cold-2.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar-win2k-cold-2.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,271 +0,0 @@
-/* The main calendar widget.  DIV containing a table. */
-
-.calendar {
-  position: relative;
-  display: none;
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #c8d4d0;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-.calendar table {
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: #c8d4d0;
-  font-family: tahoma,verdana,sans-serif;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;
-  padding: 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar .nav {
-  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
-}
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #788480;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #000;
-  padding: 2px;
-  text-align: center;
-  background: #e8f4f0;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #f00;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  border-top: 2px solid #fff;
-  border-right: 2px solid #000;
-  border-bottom: 2px solid #000;
-  border-left: 2px solid #fff;
-  padding: 0px;
-  background-color: #d8e4e0;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  background-color: #b8c4c0;
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  width: 2em;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #aaa;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #faa;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #000;
-  background: #e8f4f0;
-}
-
-.calendar tbody .rowhilite td {
-  background: #d8e4e0;
-}
-
-.calendar tbody .rowhilite td.wn {
-  background: #c8d4d0;
-}
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  padding: 1px 3px 1px 1px;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  padding: 2px 2px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar tbody td.selected { /* Cell showing selected date */
-  font-weight: bold;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-  padding: 2px 2px 0px 2px;
-  background: #d8e4e0;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #f00;
-}
-
-.calendar tbody td.today { /* Cell showing today date */
-  font-weight: bold;
-  color: #00f;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  background: #e8f4f0;
-  padding: 1px;
-  border: 1px solid #000;
-  background: #788480;
-  color: #fff;
-  text-align: center;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  padding: 1px;
-  background: #d8e4e0;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  padding: 2px 0px 0px 2px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  width: 4em;
-  top: 0px;
-  left: 0px;
-  cursor: default;
-  border-top: 1px solid #fff;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-  border-left: 1px solid #fff;
-  background: #d8e4e0;
-  font-size: 90%;
-  padding: 1px;
-  z-index: 100;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .active {
-  background: #c8d4d0;
-  padding: 0px;
-  border-top: 1px solid #000;
-  border-right: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  border-left: 1px solid #000;
-}
-
-.calendar .combo .hilite {
-  background: #048;
-  color: #aef;
-}
-
-.calendar td.time {
-  border-top: 1px solid #000;
-  padding: 1px 0px;
-  text-align: center;
-  background-color: #e8f0f4;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 3px 0px 4px;
-  border: 1px solid #889;
-  font-weight: bold;
-  background-color: #fff;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  border-color: #000;
-  background-color: #667;
-  color: #fff;
-}
-
-.calendar td.time span.active {
-  border-color: #f00;
-  background-color: #000;
-  color: #0f0;
-}

Copied: plog/trunk/js/jscalendar/calendar-win2k-cold-2.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar-win2k-cold-2.css)
===================================================================
--- plog/trunk/js/jscalendar/calendar-win2k-cold-2.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar-win2k-cold-2.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,271 @@
+/* The main calendar widget.  DIV containing a table. */
+
+.calendar {
+  position: relative;
+  display: none;
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #c8d4d0;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+.calendar table {
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: #c8d4d0;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;
+  padding: 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar .nav {
+  background: transparent url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #788480;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #000;
+  padding: 2px;
+  text-align: center;
+  background: #e8f4f0;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  border-top: 2px solid #fff;
+  border-right: 2px solid #000;
+  border-bottom: 2px solid #000;
+  border-left: 2px solid #fff;
+  padding: 0px;
+  background-color: #d8e4e0;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  background-color: #b8c4c0;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #000;
+  background: #e8f4f0;
+}
+
+.calendar tbody .rowhilite td {
+  background: #d8e4e0;
+}
+
+.calendar tbody .rowhilite td.wn {
+  background: #c8d4d0;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  padding: 1px 3px 1px 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+  padding: 2px 2px 0px 2px;
+  background: #d8e4e0;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { /* Cell showing today date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: #e8f4f0;
+  padding: 1px;
+  border: 1px solid #000;
+  background: #788480;
+  color: #fff;
+  text-align: center;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  padding: 1px;
+  background: #d8e4e0;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  width: 4em;
+  top: 0px;
+  left: 0px;
+  cursor: default;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  background: #d8e4e0;
+  font-size: 90%;
+  padding: 1px;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .active {
+  background: #c8d4d0;
+  padding: 0px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+.calendar .combo .hilite {
+  background: #048;
+  color: #aef;
+}
+
+.calendar td.time {
+  border-top: 1px solid #000;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: #e8f0f4;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: #fff;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: #667;
+  color: #fff;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Deleted: plog/trunk/js/jscalendar/calendar.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,1806 +0,0 @@
-/*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
- * -----------------------------------------------------------
- *
- * The DHTML Calendar, version 1.0 "It is happening again"
- *
- * Details and latest version at:
- * www.dynarch.com/projects/calendar
- *
- * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
- *
- * This script is distributed under the GNU Lesser General Public License.
- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
- */
-
-// $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $
-
-/** The Calendar object constructor. */
-Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
-	// member variables
-	this.activeDiv = null;
-	this.currentDateEl = null;
-	this.getDateStatus = null;
-	this.getDateToolTip = null;
-	this.getDateText = null;
-	this.timeout = null;
-	this.onSelected = onSelected || null;
-	this.onClose = onClose || null;
-	this.dragging = false;
-	this.hidden = false;
-	this.minYear = 1970;
-	this.maxYear = 2050;
-	this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
-	this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
-	this.isPopup = true;
-	this.weekNumbers = true;
-	this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
-	this.showsOtherMonths = false;
-	this.dateStr = dateStr;
-	this.ar_days = null;
-	this.showsTime = false;
-	this.time24 = true;
-	this.yearStep = 2;
-	this.hiliteToday = true;
-	this.multiple = null;
-	// HTML elements
-	this.table = null;
-	this.element = null;
-	this.tbody = null;
-	this.firstdayname = null;
-	// Combo boxes
-	this.monthsCombo = null;
-	this.yearsCombo = null;
-	this.hilitedMonth = null;
-	this.activeMonth = null;
-	this.hilitedYear = null;
-	this.activeYear = null;
-	// Information
-	this.dateClicked = false;
-
-	// one-time initializations
-	if (typeof Calendar._SDN == "undefined") {
-		// table of short day names
-		if (typeof Calendar._SDN_len == "undefined")
-			Calendar._SDN_len = 3;
-		var ar = new Array();
-		for (var i = 8; i > 0;) {
-			ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
-		}
-		Calendar._SDN = ar;
-		// table of short month names
-		if (typeof Calendar._SMN_len == "undefined")
-			Calendar._SMN_len = 3;
-		ar = new Array();
-		for (var i = 12; i > 0;) {
-			ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
-		}
-		Calendar._SMN = ar;
-	}
-};
-
-// ** constants
-
-/// "static", needed for event handlers.
-Calendar._C = null;
-
-/// detect a special case of "web browser"
-Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
-		   !/opera/i.test(navigator.userAgent) );
-
-Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );
-
-/// detect Opera browser
-Calendar.is_opera = /opera/i.test(navigator.userAgent);
-
-/// detect KHTML-based browsers
-Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);
-
-// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
-//        library, at some point.
-
-Calendar.getAbsolutePos = function(el) {
-	var SL = 0, ST = 0;
-	var is_div = /^div$/i.test(el.tagName);
-	if (is_div && el.scrollLeft)
-		SL = el.scrollLeft;
-	if (is_div && el.scrollTop)
-		ST = el.scrollTop;
-	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
-	if (el.offsetParent) {
-		var tmp = this.getAbsolutePos(el.offsetParent);
-		r.x += tmp.x;
-		r.y += tmp.y;
-	}
-	return r;
-};
-
-Calendar.isRelated = function (el, evt) {
-	var related = evt.relatedTarget;
-	if (!related) {
-		var type = evt.type;
-		if (type == "mouseover") {
-			related = evt.fromElement;
-		} else if (type == "mouseout") {
-			related = evt.toElement;
-		}
-	}
-	while (related) {
-		if (related == el) {
-			return true;
-		}
-		related = related.parentNode;
-	}
-	return false;
-};
-
-Calendar.removeClass = function(el, className) {
-	if (!(el && el.className)) {
-		return;
-	}
-	var cls = el.className.split(" ");
-	var ar = new Array();
-	for (var i = cls.length; i > 0;) {
-		if (cls[--i] != className) {
-			ar[ar.length] = cls[i];
-		}
-	}
-	el.className = ar.join(" ");
-};
-
-Calendar.addClass = function(el, className) {
-	Calendar.removeClass(el, className);
-	el.className += " " + className;
-};
-
-// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
-Calendar.getElement = function(ev) {
-	var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
-	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
-		f = f.parentNode;
-	return f;
-};
-
-Calendar.getTargetElement = function(ev) {
-	var f = Calendar.is_ie ? window.event.srcElement : ev.target;
-	while (f.nodeType != 1)
-		f = f.parentNode;
-	return f;
-};
-
-Calendar.stopEvent = function(ev) {
-	ev || (ev = window.event);
-	if (Calendar.is_ie) {
-		ev.cancelBubble = true;
-		ev.returnValue = false;
-	} else {
-		ev.preventDefault();
-		ev.stopPropagation();
-	}
-	return false;
-};
-
-Calendar.addEvent = function(el, evname, func) {
-	if (el.attachEvent) { // IE
-		el.attachEvent("on" + evname, func);
-	} else if (el.addEventListener) { // Gecko / W3C
-		el.addEventListener(evname, func, true);
-	} else {
-		el["on" + evname] = func;
-	}
-};
-
-Calendar.removeEvent = function(el, evname, func) {
-	if (el.detachEvent) { // IE
-		el.detachEvent("on" + evname, func);
-	} else if (el.removeEventListener) { // Gecko / W3C
-		el.removeEventListener(evname, func, true);
-	} else {
-		el["on" + evname] = null;
-	}
-};
-
-Calendar.createElement = function(type, parent) {
-	var el = null;
-	if (document.createElementNS) {
-		// use the XHTML namespace; IE won't normally get here unless
-		// _they_ "fix" the DOM2 implementation.
-		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
-	} else {
-		el = document.createElement(type);
-	}
-	if (typeof parent != "undefined") {
-		parent.appendChild(el);
-	}
-	return el;
-};
-
-// END: UTILITY FUNCTIONS
-
-// BEGIN: CALENDAR STATIC FUNCTIONS
-
-/** Internal -- adds a set of events to make some element behave like a button. */
-Calendar._add_evs = function(el) {
-	with (Calendar) {
-		addEvent(el, "mouseover", dayMouseOver);
-		addEvent(el, "mousedown", dayMouseDown);
-		addEvent(el, "mouseout", dayMouseOut);
-		if (is_ie) {
-			addEvent(el, "dblclick", dayMouseDblClick);
-			el.setAttribute("unselectable", true);
-		}
-	}
-};
-
-Calendar.findMonth = function(el) {
-	if (typeof el.month != "undefined") {
-		return el;
-	} else if (typeof el.parentNode.month != "undefined") {
-		return el.parentNode;
-	}
-	return null;
-};
-
-Calendar.findYear = function(el) {
-	if (typeof el.year != "undefined") {
-		return el;
-	} else if (typeof el.parentNode.year != "undefined") {
-		return el.parentNode;
-	}
-	return null;
-};
-
-Calendar.showMonthsCombo = function () {
-	var cal = Calendar._C;
-	if (!cal) {
-		return false;
-	}
-	var cal = cal;
-	var cd = cal.activeDiv;
-	var mc = cal.monthsCombo;
-	if (cal.hilitedMonth) {
-		Calendar.removeClass(cal.hilitedMonth, "hilite");
-	}
-	if (cal.activeMonth) {
-		Calendar.removeClass(cal.activeMonth, "active");
-	}
-	var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
-	Calendar.addClass(mon, "active");
-	cal.activeMonth = mon;
-	var s = mc.style;
-	s.display = "block";
-	if (cd.navtype < 0)
-		s.left = cd.offsetLeft + "px";
-	else {
-		var mcw = mc.offsetWidth;
-		if (typeof mcw == "undefined")
-			// Konqueror brain-dead techniques
-			mcw = 50;
-		s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
-	}
-	s.top = (cd.offsetTop + cd.offsetHeight) + "px";
-};
-
-Calendar.showYearsCombo = function (fwd) {
-	var cal = Calendar._C;
-	if (!cal) {
-		return false;
-	}
-	var cal = cal;
-	var cd = cal.activeDiv;
-	var yc = cal.yearsCombo;
-	if (cal.hilitedYear) {
-		Calendar.removeClass(cal.hilitedYear, "hilite");
-	}
-	if (cal.activeYear) {
-		Calendar.removeClass(cal.activeYear, "active");
-	}
-	cal.activeYear = null;
-	var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
-	var yr = yc.firstChild;
-	var show = false;
-	for (var i = 12; i > 0; --i) {
-		if (Y >= cal.minYear && Y <= cal.maxYear) {
-			yr.innerHTML = Y;
-			yr.year = Y;
-			yr.style.display = "block";
-			show = true;
-		} else {
-			yr.style.display = "none";
-		}
-		yr = yr.nextSibling;
-		Y += fwd ? cal.yearStep : -cal.yearStep;
-	}
-	if (show) {
-		var s = yc.style;
-		s.display = "block";
-		if (cd.navtype < 0)
-			s.left = cd.offsetLeft + "px";
-		else {
-			var ycw = yc.offsetWidth;
-			if (typeof ycw == "undefined")
-				// Konqueror brain-dead techniques
-				ycw = 50;
-			s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
-		}
-		s.top = (cd.offsetTop + cd.offsetHeight) + "px";
-	}
-};
-
-// event handlers
-
-Calendar.tableMouseUp = function(ev) {
-	var cal = Calendar._C;
-	if (!cal) {
-		return false;
-	}
-	if (cal.timeout) {
-		clearTimeout(cal.timeout);
-	}
-	var el = cal.activeDiv;
-	if (!el) {
-		return false;
-	}
-	var target = Calendar.getTargetElement(ev);
-	ev || (ev = window.event);
-	Calendar.removeClass(el, "active");
-	if (target == el || target.parentNode == el) {
-		Calendar.cellClick(el, ev);
-	}
-	var mon = Calendar.findMonth(target);
-	var date = null;
-	if (mon) {
-		date = new Date(cal.date);
-		if (mon.month != date.getMonth()) {
-			date.setMonth(mon.month);
-			cal.setDate(date);
-			cal.dateClicked = false;
-			cal.callHandler();
-		}
-	} else {
-		var year = Calendar.findYear(target);
-		if (year) {
-			date = new Date(cal.date);
-			if (year.year != date.getFullYear()) {
-				date.setFullYear(year.year);
-				cal.setDate(date);
-				cal.dateClicked = false;
-				cal.callHandler();
-			}
-		}
-	}
-	with (Calendar) {
-		removeEvent(document, "mouseup", tableMouseUp);
-		removeEvent(document, "mouseover", tableMouseOver);
-		removeEvent(document, "mousemove", tableMouseOver);
-		cal._hideCombos();
-		_C = null;
-		return stopEvent(ev);
-	}
-};
-
-Calendar.tableMouseOver = function (ev) {
-	var cal = Calendar._C;
-	if (!cal) {
-		return;
-	}
-	var el = cal.activeDiv;
-	var target = Calendar.getTargetElement(ev);
-	if (target == el || target.parentNode == el) {
-		Calendar.addClass(el, "hilite active");
-		Calendar.addClass(el.parentNode, "rowhilite");
-	} else {
-		if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))
-			Calendar.removeClass(el, "active");
-		Calendar.removeClass(el, "hilite");
-		Calendar.removeClass(el.parentNode, "rowhilite");
-	}
-	ev || (ev = window.event);
-	if (el.navtype == 50 && target != el) {
-		var pos = Calendar.getAbsolutePos(el);
-		var w = el.offsetWidth;
-		var x = ev.clientX;
-		var dx;
-		var decrease = true;
-		if (x > pos.x + w) {
-			dx = x - pos.x - w;
-			decrease = false;
-		} else
-			dx = pos.x - x;
-
-		if (dx < 0) dx = 0;
-		var range = el._range;
-		var current = el._current;
-		var count = Math.floor(dx / 10) % range.length;
-		for (var i = range.length; --i >= 0;)
-			if (range[i] == current)
-				break;
-		while (count-- > 0)
-			if (decrease) {
-				if (--i < 0)
-					i = range.length - 1;
-			} else if ( ++i >= range.length )
-				i = 0;
-		var newval = range[i];
-		el.innerHTML = newval;
-
-		cal.onUpdateTime();
-	}
-	var mon = Calendar.findMonth(target);
-	if (mon) {
-		if (mon.month != cal.date.getMonth()) {
-			if (cal.hilitedMonth) {
-				Calendar.removeClass(cal.hilitedMonth, "hilite");
-			}
-			Calendar.addClass(mon, "hilite");
-			cal.hilitedMonth = mon;
-		} else if (cal.hilitedMonth) {
-			Calendar.removeClass(cal.hilitedMonth, "hilite");
-		}
-	} else {
-		if (cal.hilitedMonth) {
-			Calendar.removeClass(cal.hilitedMonth, "hilite");
-		}
-		var year = Calendar.findYear(target);
-		if (year) {
-			if (year.year != cal.date.getFullYear()) {
-				if (cal.hilitedYear) {
-					Calendar.removeClass(cal.hilitedYear, "hilite");
-				}
-				Calendar.addClass(year, "hilite");
-				cal.hilitedYear = year;
-			} else if (cal.hilitedYear) {
-				Calendar.removeClass(cal.hilitedYear, "hilite");
-			}
-		} else if (cal.hilitedYear) {
-			Calendar.removeClass(cal.hilitedYear, "hilite");
-		}
-	}
-	return Calendar.stopEvent(ev);
-};
-
-Calendar.tableMouseDown = function (ev) {
-	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
-		return Calendar.stopEvent(ev);
-	}
-};
-
-Calendar.calDragIt = function (ev) {
-	var cal = Calendar._C;
-	if (!(cal && cal.dragging)) {
-		return false;
-	}
-	var posX;
-	var posY;
-	if (Calendar.is_ie) {
-		posY = window.event.clientY + document.body.scrollTop;
-		posX = window.event.clientX + document.body.scrollLeft;
-	} else {
-		posX = ev.pageX;
-		posY = ev.pageY;
-	}
-	cal.hideShowCovered();
-	var st = cal.element.style;
-	st.left = (posX - cal.xOffs) + "px";
-	st.top = (posY - cal.yOffs) + "px";
-	return Calendar.stopEvent(ev);
-};
-
-Calendar.calDragEnd = function (ev) {
-	var cal = Calendar._C;
-	if (!cal) {
-		return false;
-	}
-	cal.dragging = false;
-	with (Calendar) {
-		removeEvent(document, "mousemove", calDragIt);
-		removeEvent(document, "mouseup", calDragEnd);
-		tableMouseUp(ev);
-	}
-	cal.hideShowCovered();
-};
-
-Calendar.dayMouseDown = function(ev) {
-	var el = Calendar.getElement(ev);
-	if (el.disabled) {
-		return false;
-	}
-	var cal = el.calendar;
-	cal.activeDiv = el;
-	Calendar._C = cal;
-	if (el.navtype != 300) with (Calendar) {
-		if (el.navtype == 50) {
-			el._current = el.innerHTML;
-			addEvent(document, "mousemove", tableMouseOver);
-		} else
-			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
-		addClass(el, "hilite active");
-		addEvent(document, "mouseup", tableMouseUp);
-	} else if (cal.isPopup) {
-		cal._dragStart(ev);
-	}
-	if (el.navtype == -1 || el.navtype == 1) {
-		if (cal.timeout) clearTimeout(cal.timeout);
-		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
-	} else if (el.navtype == -2 || el.navtype == 2) {
-		if (cal.timeout) clearTimeout(cal.timeout);
-		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
-	} else {
-		cal.timeout = null;
-	}
-	return Calendar.stopEvent(ev);
-};
-
-Calendar.dayMouseDblClick = function(ev) {
-	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
-	if (Calendar.is_ie) {
-		document.selection.empty();
-	}
-};
-
-Calendar.dayMouseOver = function(ev) {
-	var el = Calendar.getElement(ev);
-	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
-		return false;
-	}
-	if (el.ttip) {
-		if (el.ttip.substr(0, 1) == "_") {
-			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
-		}
-		el.calendar.tooltips.innerHTML = el.ttip;
-	}
-	if (el.navtype != 300) {
-		Calendar.addClass(el, "hilite");
-		if (el.caldate) {
-			Calendar.addClass(el.parentNode, "rowhilite");
-		}
-	}
-	return Calendar.stopEvent(ev);
-};
-
-Calendar.dayMouseOut = function(ev) {
-	with (Calendar) {
-		var el = getElement(ev);
-		if (isRelated(el, ev) || _C || el.disabled)
-			return false;
-		removeClass(el, "hilite");
-		if (el.caldate)
-			removeClass(el.parentNode, "rowhilite");
-		if (el.calendar)
-			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
-		return stopEvent(ev);
-	}
-};
-
-/**
- *  A generic "click" handler :) handles all types of buttons defined in this
- *  calendar.
- */
-Calendar.cellClick = function(el, ev) {
-	var cal = el.calendar;
-	var closing = false;
-	var newdate = false;
-	var date = null;
-	if (typeof el.navtype == "undefined") {
-		if (cal.currentDateEl) {
-			Calendar.removeClass(cal.currentDateEl, "selected");
-			Calendar.addClass(el, "selected");
-			closing = (cal.currentDateEl == el);
-			if (!closing) {
-				cal.currentDateEl = el;
-			}
-		}
-		cal.date.setDateOnly(el.caldate);
-		date = cal.date;
-		var other_month = !(cal.dateClicked = !el.otherMonth);
-		if (!other_month && !cal.currentDateEl)
-			cal._toggleMultipleDate(new Date(date));
-		else
-			newdate = !el.disabled;
-		// a date was clicked
-		if (other_month)
-			cal._init(cal.firstDayOfWeek, date);
-	} else {
-		if (el.navtype == 200) {
-			Calendar.removeClass(el, "hilite");
-			cal.callCloseHandler();
-			return;
-		}
-		date = new Date(cal.date);
-		if (el.navtype == 0)
-			date.setDateOnly(new Date()); // TODAY
-		// unless "today" was clicked, we assume no date was clicked so
-		// the selected handler will know not to close the calenar when
-		// in single-click mode.
-		// cal.dateClicked = (el.navtype == 0);
-		cal.dateClicked = false;
-		var year = date.getFullYear();
-		var mon = date.getMonth();
-		function setMonth(m) {
-			var day = date.getDate();
-			var max = date.getMonthDays(m);
-			if (day > max) {
-				date.setDate(max);
-			}
-			date.setMonth(m);
-		};
-		switch (el.navtype) {
-		    case 400:
-			Calendar.removeClass(el, "hilite");
-			var text = Calendar._TT["ABOUT"];
-			if (typeof text != "undefined") {
-				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
-			} else {
-				// FIXME: this should be removed as soon as lang files get updated!
-				text = "Help and about box text is not translated into this language.\n" +
-					"If you know this language and you feel generous please update\n" +
-					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +
-					"and send it back to <mihai_bazon at yahoo.com> to get it into the distribution  ;-)\n\n" +
-					"Thank you!\n" +
-					"http://dynarch.com/mishoo/calendar.epl\n";
-			}
-			alert(text);
-			return;
-		    case -2:
-			if (year > cal.minYear) {
-				date.setFullYear(year - 1);
-			}
-			break;
-		    case -1:
-			if (mon > 0) {
-				setMonth(mon - 1);
-			} else if (year-- > cal.minYear) {
-				date.setFullYear(year);
-				setMonth(11);
-			}
-			break;
-		    case 1:
-			if (mon < 11) {
-				setMonth(mon + 1);
-			} else if (year < cal.maxYear) {
-				date.setFullYear(year + 1);
-				setMonth(0);
-			}
-			break;
-		    case 2:
-			if (year < cal.maxYear) {
-				date.setFullYear(year + 1);
-			}
-			break;
-		    case 100:
-			cal.setFirstDayOfWeek(el.fdow);
-			return;
-		    case 50:
-			var range = el._range;
-			var current = el.innerHTML;
-			for (var i = range.length; --i >= 0;)
-				if (range[i] == current)
-					break;
-			if (ev && ev.shiftKey) {
-				if (--i < 0)
-					i = range.length - 1;
-			} else if ( ++i >= range.length )
-				i = 0;
-			var newval = range[i];
-			el.innerHTML = newval;
-			cal.onUpdateTime();
-			return;
-		    case 0:
-			// TODAY will bring us here
-			if ((typeof cal.getDateStatus == "function") &&
-			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
-				return false;
-			}
-			break;
-		}
-		if (!date.equalsTo(cal.date)) {
-			cal.setDate(date);
-			newdate = true;
-		} else if (el.navtype == 0)
-			newdate = closing = true;
-	}
-	if (newdate) {
-		ev && cal.callHandler();
-	}
-	if (closing) {
-		Calendar.removeClass(el, "hilite");
-		ev && cal.callCloseHandler();
-	}
-};
-
-// END: CALENDAR STATIC FUNCTIONS
-
-// BEGIN: CALENDAR OBJECT FUNCTIONS
-
-/**
- *  This function creates the calendar inside the given parent.  If _par is
- *  null than it creates a popup calendar inside the BODY element.  If _par is
- *  an element, be it BODY, then it creates a non-popup calendar (still
- *  hidden).  Some properties need to be set before calling this function.
- */
-Calendar.prototype.create = function (_par) {
-	var parent = null;
-	if (! _par) {
-		// default parent is the document body, in which case we create
-		// a popup calendar.
-		parent = document.getElementsByTagName("body")[0];
-		this.isPopup = true;
-	} else {
-		parent = _par;
-		this.isPopup = false;
-	}
-	this.date = this.dateStr ? new Date(this.dateStr) : new Date();
-
-	var table = Calendar.createElement("table");
-	this.table = table;
-	table.cellSpacing = 0;
-	table.cellPadding = 0;
-	table.calendar = this;
-	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);
-
-	var div = Calendar.createElement("div");
-	this.element = div;
-	div.className = "calendar";
-	if (this.isPopup) {
-		div.style.position = "absolute";
-		div.style.display = "none";
-	}
-	div.appendChild(table);
-
-	var thead = Calendar.createElement("thead", table);
-	var cell = null;
-	var row = null;
-
-	var cal = this;
-	var hh = function (text, cs, navtype) {
-		cell = Calendar.createElement("td", row);
-		cell.colSpan = cs;
-		cell.className = "button";
-		if (navtype != 0 && Math.abs(navtype) <= 2)
-			cell.className += " nav";
-		Calendar._add_evs(cell);
-		cell.calendar = cal;
-		cell.navtype = navtype;
-		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
-		return cell;
-	};
-
-	row = Calendar.createElement("tr", thead);
-	var title_length = 6;
-	(this.isPopup) && --title_length;
-	(this.weekNumbers) && ++title_length;
-
-	hh("?", 1, 400).ttip = Calendar._TT["INFO"];
-	this.title = hh("", title_length, 300);
-	this.title.className = "title";
-	if (this.isPopup) {
-		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
-		this.title.style.cursor = "move";
-		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];
-	}
-
-	row = Calendar.createElement("tr", thead);
-	row.className = "headrow";
-
-	this._nav_py = hh("&#x00ab;", 1, -2);
-	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];
-
-	this._nav_pm = hh("&#x2039;", 1, -1);
-	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];
-
-	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);
-	this._nav_now.ttip = Calendar._TT["GO_TODAY"];
-
-	this._nav_nm = hh("&#x203a;", 1, 1);
-	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
-
-	this._nav_ny = hh("&#x00bb;", 1, 2);
-	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];
-
-	// day names
-	row = Calendar.createElement("tr", thead);
-	row.className = "daynames";
-	if (this.weekNumbers) {
-		cell = Calendar.createElement("td", row);
-		cell.className = "name wn";
-		cell.innerHTML = Calendar._TT["WK"];
-	}
-	for (var i = 7; i > 0; --i) {
-		cell = Calendar.createElement("td", row);
-		if (!i) {
-			cell.navtype = 100;
-			cell.calendar = this;
-			Calendar._add_evs(cell);
-		}
-	}
-	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
-	this._displayWeekdays();
-
-	var tbody = Calendar.createElement("tbody", table);
-	this.tbody = tbody;
-
-	for (i = 6; i > 0; --i) {
-		row = Calendar.createElement("tr", tbody);
-		if (this.weekNumbers) {
-			cell = Calendar.createElement("td", row);
-		}
-		for (var j = 7; j > 0; --j) {
-			cell = Calendar.createElement("td", row);
-			cell.calendar = this;
-			Calendar._add_evs(cell);
-		}
-	}
-
-	if (this.showsTime) {
-		row = Calendar.createElement("tr", tbody);
-		row.className = "time";
-
-		cell = Calendar.createElement("td", row);
-		cell.className = "time";
-		cell.colSpan = 2;
-		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";
-
-		cell = Calendar.createElement("td", row);
-		cell.className = "time";
-		cell.colSpan = this.weekNumbers ? 4 : 3;
-
-		(function(){
-			function makeTimePart(className, init, range_start, range_end) {
-				var part = Calendar.createElement("span", cell);
-				part.className = className;
-				part.innerHTML = init;
-				part.calendar = cal;
-				part.ttip = Calendar._TT["TIME_PART"];
-				part.navtype = 50;
-				part._range = [];
-				if (typeof range_start != "number")
-					part._range = range_start;
-				else {
-					for (var i = range_start; i <= range_end; ++i) {
-						var txt;
-						if (i < 10 && range_end >= 10) txt = '0' + i;
-						else txt = '' + i;
-						part._range[part._range.length] = txt;
-					}
-				}
-				Calendar._add_evs(part);
-				return part;
-			};
-			var hrs = cal.date.getHours();
-			var mins = cal.date.getMinutes();
-			var t12 = !cal.time24;
-			var pm = (hrs > 12);
-			if (t12 && pm) hrs -= 12;
-			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
-			var span = Calendar.createElement("span", cell);
-			span.innerHTML = ":";
-			span.className = "colon";
-			var M = makeTimePart("minute", mins, 0, 59);
-			var AP = null;
-			cell = Calendar.createElement("td", row);
-			cell.className = "time";
-			cell.colSpan = 2;
-			if (t12)
-				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);
-			else
-				cell.innerHTML = "&nbsp;";
-
-			cal.onSetTime = function() {
-				var pm, hrs = this.date.getHours(),
-					mins = this.date.getMinutes();
-				if (t12) {
-					pm = (hrs >= 12);
-					if (pm) hrs -= 12;
-					if (hrs == 0) hrs = 12;
-					AP.innerHTML = pm ? "pm" : "am";
-				}
-				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
-				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
-			};
-
-			cal.onUpdateTime = function() {
-				var date = this.date;
-				var h = parseInt(H.innerHTML, 10);
-				if (t12) {
-					if (/pm/i.test(AP.innerHTML) && h < 12)
-						h += 12;
-					else if (/am/i.test(AP.innerHTML) && h == 12)
-						h = 0;
-				}
-				var d = date.getDate();
-				var m = date.getMonth();
-				var y = date.getFullYear();
-				date.setHours(h);
-				date.setMinutes(parseInt(M.innerHTML, 10));
-				date.setFullYear(y);
-				date.setMonth(m);
-				date.setDate(d);
-				this.dateClicked = false;
-				this.callHandler();
-			};
-		})();
-	} else {
-		this.onSetTime = this.onUpdateTime = function() {};
-	}
-
-	var tfoot = Calendar.createElement("tfoot", table);
-
-	row = Calendar.createElement("tr", tfoot);
-	row.className = "footrow";
-
-	cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
-	cell.className = "ttip";
-	if (this.isPopup) {
-		cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
-		cell.style.cursor = "move";
-	}
-	this.tooltips = cell;
-
-	div = Calendar.createElement("div", this.element);
-	this.monthsCombo = div;
-	div.className = "combo";
-	for (i = 0; i < Calendar._MN.length; ++i) {
-		var mn = Calendar.createElement("div");
-		mn.className = Calendar.is_ie ? "label-IEfix" : "label";
-		mn.month = i;
-		mn.innerHTML = Calendar._SMN[i];
-		div.appendChild(mn);
-	}
-
-	div = Calendar.createElement("div", this.element);
-	this.yearsCombo = div;
-	div.className = "combo";
-	for (i = 12; i > 0; --i) {
-		var yr = Calendar.createElement("div");
-		yr.className = Calendar.is_ie ? "label-IEfix" : "label";
-		div.appendChild(yr);
-	}
-
-	this._init(this.firstDayOfWeek, this.date);
-	parent.appendChild(this.element);
-};
-
-/** keyboard navigation, only for popup calendars */
-Calendar._keyEvent = function(ev) {
-	var cal = window._dynarch_popupCalendar;
-	if (!cal || cal.multiple)
-		return false;
-	(Calendar.is_ie) && (ev = window.event);
-	var act = (Calendar.is_ie || ev.type == "keypress"),
-		K = ev.keyCode;
-	if (ev.ctrlKey) {
-		switch (K) {
-		    case 37: // KEY left
-			act && Calendar.cellClick(cal._nav_pm);
-			break;
-		    case 38: // KEY up
-			act && Calendar.cellClick(cal._nav_py);
-			break;
-		    case 39: // KEY right
-			act && Calendar.cellClick(cal._nav_nm);
-			break;
-		    case 40: // KEY down
-			act && Calendar.cellClick(cal._nav_ny);
-			break;
-		    default:
-			return false;
-		}
-	} else switch (K) {
-	    case 32: // KEY space (now)
-		Calendar.cellClick(cal._nav_now);
-		break;
-	    case 27: // KEY esc
-		act && cal.callCloseHandler();
-		break;
-	    case 37: // KEY left
-	    case 38: // KEY up
-	    case 39: // KEY right
-	    case 40: // KEY down
-		if (act) {
-			var prev, x, y, ne, el, step;
-			prev = K == 37 || K == 38;
-			step = (K == 37 || K == 39) ? 1 : 7;
-			function setVars() {
-				el = cal.currentDateEl;
-				var p = el.pos;
-				x = p & 15;
-				y = p >> 4;
-				ne = cal.ar_days[y][x];
-			};setVars();
-			function prevMonth() {
-				var date = new Date(cal.date);
-				date.setDate(date.getDate() - step);
-				cal.setDate(date);
-			};
-			function nextMonth() {
-				var date = new Date(cal.date);
-				date.setDate(date.getDate() + step);
-				cal.setDate(date);
-			};
-			while (1) {
-				switch (K) {
-				    case 37: // KEY left
-					if (--x >= 0)
-						ne = cal.ar_days[y][x];
-					else {
-						x = 6;
-						K = 38;
-						continue;
-					}
-					break;
-				    case 38: // KEY up
-					if (--y >= 0)
-						ne = cal.ar_days[y][x];
-					else {
-						prevMonth();
-						setVars();
-					}
-					break;
-				    case 39: // KEY right
-					if (++x < 7)
-						ne = cal.ar_days[y][x];
-					else {
-						x = 0;
-						K = 40;
-						continue;
-					}
-					break;
-				    case 40: // KEY down
-					if (++y < cal.ar_days.length)
-						ne = cal.ar_days[y][x];
-					else {
-						nextMonth();
-						setVars();
-					}
-					break;
-				}
-				break;
-			}
-			if (ne) {
-				if (!ne.disabled)
-					Calendar.cellClick(ne);
-				else if (prev)
-					prevMonth();
-				else
-					nextMonth();
-			}
-		}
-		break;
-	    case 13: // KEY enter
-		if (act)
-			Calendar.cellClick(cal.currentDateEl, ev);
-		break;
-	    default:
-		return false;
-	}
-	return Calendar.stopEvent(ev);
-};
-
-/**
- *  (RE)Initializes the calendar to the given date and firstDayOfWeek
- */
-Calendar.prototype._init = function (firstDayOfWeek, date) {
-	var today = new Date(),
-		TY = today.getFullYear(),
-		TM = today.getMonth(),
-		TD = today.getDate();
-	this.table.style.visibility = "hidden";
-	var year = date.getFullYear();
-	if (year < this.minYear) {
-		year = this.minYear;
-		date.setFullYear(year);
-	} else if (year > this.maxYear) {
-		year = this.maxYear;
-		date.setFullYear(year);
-	}
-	this.firstDayOfWeek = firstDayOfWeek;
-	this.date = new Date(date);
-	var month = date.getMonth();
-	var mday = date.getDate();
-	var no_days = date.getMonthDays();
-
-	// calendar voodoo for computing the first day that would actually be
-	// displayed in the calendar, even if it's from the previous month.
-	// WARNING: this is magic. ;-)
-	date.setDate(1);
-	var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
-	if (day1 < 0)
-		day1 += 7;
-	date.setDate(-day1);
-	date.setDate(date.getDate() + 1);
-
-	var row = this.tbody.firstChild;
-	var MN = Calendar._SMN[month];
-	var ar_days = this.ar_days = new Array();
-	var weekend = Calendar._TT["WEEKEND"];
-	var dates = this.multiple ? (this.datesCells = {}) : null;
-	for (var i = 0; i < 6; ++i, row = row.nextSibling) {
-		var cell = row.firstChild;
-		if (this.weekNumbers) {
-			cell.className = "day wn";
-			cell.innerHTML = date.getWeekNumber();
-			cell = cell.nextSibling;
-		}
-		row.className = "daysrow";
-		var hasdays = false, iday, dpos = ar_days[i] = [];
-		for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
-			iday = date.getDate();
-			var wday = date.getDay();
-			cell.className = "day";
-			cell.pos = i << 4 | j;
-			dpos[j] = cell;
-			var current_month = (date.getMonth() == month);
-			if (!current_month) {
-				if (this.showsOtherMonths) {
-					cell.className += " othermonth";
-					cell.otherMonth = true;
-				} else {
-					cell.className = "emptycell";
-					cell.innerHTML = "&nbsp;";
-					cell.disabled = true;
-					continue;
-				}
-			} else {
-				cell.otherMonth = false;
-				hasdays = true;
-			}
-			cell.disabled = false;
-			cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
-			if (dates)
-				dates[date.print("%Y%m%d")] = cell;
-			if (this.getDateStatus) {
-				var status = this.getDateStatus(date, year, month, iday);
-				if (this.getDateToolTip) {
-					var toolTip = this.getDateToolTip(date, year, month, iday);
-					if (toolTip)
-						cell.title = toolTip;
-				}
-				if (status === true) {
-					cell.className += " disabled";
-					cell.disabled = true;
-				} else {
-					if (/disabled/i.test(status))
-						cell.disabled = true;
-					cell.className += " " + status;
-				}
-			}
-			if (!cell.disabled) {
-				cell.caldate = new Date(date);
-				cell.ttip = "_";
-				if (!this.multiple && current_month
-				    && iday == mday && this.hiliteToday) {
-					cell.className += " selected";
-					this.currentDateEl = cell;
-				}
-				if (date.getFullYear() == TY &&
-				    date.getMonth() == TM &&
-				    iday == TD) {
-					cell.className += " today";
-					cell.ttip += Calendar._TT["PART_TODAY"];
-				}
-				if (weekend.indexOf(wday.toString()) != -1)
-					cell.className += cell.otherMonth ? " oweekend" : " weekend";
-			}
-		}
-		if (!(hasdays || this.showsOtherMonths))
-			row.className = "emptyrow";
-	}
-	this.title.innerHTML = Calendar._MN[month] + ", " + year;
-	this.onSetTime();
-	this.table.style.visibility = "visible";
-	this._initMultipleDates();
-	// PROFILE
-	// this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms";
-};
-
-Calendar.prototype._initMultipleDates = function() {
-	if (this.multiple) {
-		for (var i in this.multiple) {
-			var cell = this.datesCells[i];
-			var d = this.multiple[i];
-			if (!d)
-				continue;
-			if (cell)
-				cell.className += " selected";
-		}
-	}
-};
-
-Calendar.prototype._toggleMultipleDate = function(date) {
-	if (this.multiple) {
-		var ds = date.print("%Y%m%d");
-		var cell = this.datesCells[ds];
-		if (cell) {
-			var d = this.multiple[ds];
-			if (!d) {
-				Calendar.addClass(cell, "selected");
-				this.multiple[ds] = date;
-			} else {
-				Calendar.removeClass(cell, "selected");
-				delete this.multiple[ds];
-			}
-		}
-	}
-};
-
-Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
-	this.getDateToolTip = unaryFunction;
-};
-
-/**
- *  Calls _init function above for going to a certain date (but only if the
- *  date is different than the currently selected one).
- */
-Calendar.prototype.setDate = function (date) {
-	if (!date.equalsTo(this.date)) {
-		this._init(this.firstDayOfWeek, date);
-	}
-};
-
-/**
- *  Refreshes the calendar.  Useful if the "disabledHandler" function is
- *  dynamic, meaning that the list of disabled date can change at runtime.
- *  Just * call this function if you think that the list of disabled dates
- *  should * change.
- */
-Calendar.prototype.refresh = function () {
-	this._init(this.firstDayOfWeek, this.date);
-};
-
-/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */
-Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
-	this._init(firstDayOfWeek, this.date);
-	this._displayWeekdays();
-};
-
-/**
- *  Allows customization of what dates are enabled.  The "unaryFunction"
- *  parameter must be a function object that receives the date (as a JS Date
- *  object) and returns a boolean value.  If the returned value is true then
- *  the passed date will be marked as disabled.
- */
-Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
-	this.getDateStatus = unaryFunction;
-};
-
-/** Customization of allowed year range for the calendar. */
-Calendar.prototype.setRange = function (a, z) {
-	this.minYear = a;
-	this.maxYear = z;
-};
-
-/** Calls the first user handler (selectedHandler). */
-Calendar.prototype.callHandler = function () {
-	if (this.onSelected) {
-		this.onSelected(this, this.date.print(this.dateFormat));
-	}
-};
-
-/** Calls the second user handler (closeHandler). */
-Calendar.prototype.callCloseHandler = function () {
-	if (this.onClose) {
-		this.onClose(this);
-	}
-	this.hideShowCovered();
-};
-
-/** Removes the calendar object from the DOM tree and destroys it. */
-Calendar.prototype.destroy = function () {
-	var el = this.element.parentNode;
-	el.removeChild(this.element);
-	Calendar._C = null;
-	window._dynarch_popupCalendar = null;
-};
-
-/**
- *  Moves the calendar element to a different section in the DOM tree (changes
- *  its parent).
- */
-Calendar.prototype.reparent = function (new_parent) {
-	var el = this.element;
-	el.parentNode.removeChild(el);
-	new_parent.appendChild(el);
-};
-
-// This gets called when the user presses a mouse button anywhere in the
-// document, if the calendar is shown.  If the click was outside the open
-// calendar this function closes it.
-Calendar._checkCalendar = function(ev) {
-	var calendar = window._dynarch_popupCalendar;
-	if (!calendar) {
-		return false;
-	}
-	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
-	for (; el != null && el != calendar.element; el = el.parentNode);
-	if (el == null) {
-		// calls closeHandler which should hide the calendar.
-		window._dynarch_popupCalendar.callCloseHandler();
-		return Calendar.stopEvent(ev);
-	}
-};
-
-/** Shows the calendar. */
-Calendar.prototype.show = function () {
-	var rows = this.table.getElementsByTagName("tr");
-	for (var i = rows.length; i > 0;) {
-		var row = rows[--i];
-		Calendar.removeClass(row, "rowhilite");
-		var cells = row.getElementsByTagName("td");
-		for (var j = cells.length; j > 0;) {
-			var cell = cells[--j];
-			Calendar.removeClass(cell, "hilite");
-			Calendar.removeClass(cell, "active");
-		}
-	}
-	this.element.style.display = "block";
-	this.hidden = false;
-	if (this.isPopup) {
-		window._dynarch_popupCalendar = this;
-		Calendar.addEvent(document, "keydown", Calendar._keyEvent);
-		Calendar.addEvent(document, "keypress", Calendar._keyEvent);
-		Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
-	}
-	this.hideShowCovered();
-};
-
-/**
- *  Hides the calendar.  Also removes any "hilite" from the class of any TD
- *  element.
- */
-Calendar.prototype.hide = function () {
-	if (this.isPopup) {
-		Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
-		Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
-		Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
-	}
-	this.element.style.display = "none";
-	this.hidden = true;
-	this.hideShowCovered();
-};
-
-/**
- *  Shows the calendar at a given absolute position (beware that, depending on
- *  the calendar element style -- position property -- this might be relative
- *  to the parent's containing rectangle).
- */
-Calendar.prototype.showAt = function (x, y) {
-	var s = this.element.style;
-	s.left = x + "px";
-	s.top = y + "px";
-	this.show();
-};
-
-/** Shows the calendar near a given element. */
-Calendar.prototype.showAtElement = function (el, opts) {
-	var self = this;
-	var p = Calendar.getAbsolutePos(el);
-	if (!opts || typeof opts != "string") {
-		this.showAt(p.x, p.y + el.offsetHeight);
-		return true;
-	}
-	function fixPosition(box) {
-		if (box.x < 0)
-			box.x = 0;
-		if (box.y < 0)
-			box.y = 0;
-		var cp = document.createElement("div");
-		var s = cp.style;
-		s.position = "absolute";
-		s.right = s.bottom = s.width = s.height = "0px";
-		document.body.appendChild(cp);
-		var br = Calendar.getAbsolutePos(cp);
-		document.body.removeChild(cp);
-		if (Calendar.is_ie) {
-			br.y += document.body.scrollTop;
-			br.x += document.body.scrollLeft;
-		} else {
-			br.y += window.scrollY;
-			br.x += window.scrollX;
-		}
-		var tmp = box.x + box.width - br.x;
-		if (tmp > 0) box.x -= tmp;
-		tmp = box.y + box.height - br.y;
-		if (tmp > 0) box.y -= tmp;
-	};
-	this.element.style.display = "block";
-	Calendar.continuation_for_the_fucking_khtml_browser = function() {
-		var w = self.element.offsetWidth;
-		var h = self.element.offsetHeight;
-		self.element.style.display = "none";
-		var valign = opts.substr(0, 1);
-		var halign = "l";
-		if (opts.length > 1) {
-			halign = opts.substr(1, 1);
-		}
-		// vertical alignment
-		switch (valign) {
-		    case "T": p.y -= h; break;
-		    case "B": p.y += el.offsetHeight; break;
-		    case "C": p.y += (el.offsetHeight - h) / 2; break;
-		    case "t": p.y += el.offsetHeight - h; break;
-		    case "b": break; // already there
-		}
-		// horizontal alignment
-		switch (halign) {
-		    case "L": p.x -= w; break;
-		    case "R": p.x += el.offsetWidth; break;
-		    case "C": p.x += (el.offsetWidth - w) / 2; break;
-		    case "l": p.x += el.offsetWidth - w; break;
-		    case "r": break; // already there
-		}
-		p.width = w;
-		p.height = h + 40;
-		self.monthsCombo.style.display = "none";
-		fixPosition(p);
-		self.showAt(p.x, p.y);
-	};
-	if (Calendar.is_khtml)
-		setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10);
-	else
-		Calendar.continuation_for_the_fucking_khtml_browser();
-};
-
-/** Customizes the date format. */
-Calendar.prototype.setDateFormat = function (str) {
-	this.dateFormat = str;
-};
-
-/** Customizes the tooltip date format. */
-Calendar.prototype.setTtDateFormat = function (str) {
-	this.ttDateFormat = str;
-};
-
-/**
- *  Tries to identify the date represented in a string.  If successful it also
- *  calls this.setDate which moves the calendar to the given date.
- */
-Calendar.prototype.parseDate = function(str, fmt) {
-	if (!fmt)
-		fmt = this.dateFormat;
-	this.setDate(Date.parseDate(str, fmt));
-};
-
-Calendar.prototype.hideShowCovered = function () {
-	if (!Calendar.is_ie && !Calendar.is_opera)
-		return;
-	function getVisib(obj){
-		var value = obj.style.visibility;
-		if (!value) {
-			if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
-				if (!Calendar.is_khtml)
-					value = document.defaultView.
-						getComputedStyle(obj, "").getPropertyValue("visibility");
-				else
-					value = '';
-			} else if (obj.currentStyle) { // IE
-				value = obj.currentStyle.visibility;
-			} else
-				value = '';
-		}
-		return value;
-	};
-
-	var tags = new Array("applet", "iframe", "select");
-	var el = this.element;
-
-	var p = Calendar.getAbsolutePos(el);
-	var EX1 = p.x;
-	var EX2 = el.offsetWidth + EX1;
-	var EY1 = p.y;
-	var EY2 = el.offsetHeight + EY1;
-
-	for (var k = tags.length; k > 0; ) {
-		var ar = document.getElementsByTagName(tags[--k]);
-		var cc = null;
-
-		for (var i = ar.length; i > 0;) {
-			cc = ar[--i];
-
-			p = Calendar.getAbsolutePos(cc);
-			var CX1 = p.x;
-			var CX2 = cc.offsetWidth + CX1;
-			var CY1 = p.y;
-			var CY2 = cc.offsetHeight + CY1;
-
-			if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
-				if (!cc.__msh_save_visibility) {
-					cc.__msh_save_visibility = getVisib(cc);
-				}
-				cc.style.visibility = cc.__msh_save_visibility;
-			} else {
-				if (!cc.__msh_save_visibility) {
-					cc.__msh_save_visibility = getVisib(cc);
-				}
-				cc.style.visibility = "hidden";
-			}
-		}
-	}
-};
-
-/** Internal function; it displays the bar with the names of the weekday. */
-Calendar.prototype._displayWeekdays = function () {
-	var fdow = this.firstDayOfWeek;
-	var cell = this.firstdayname;
-	var weekend = Calendar._TT["WEEKEND"];
-	for (var i = 0; i < 7; ++i) {
-		cell.className = "day name";
-		var realday = (i + fdow) % 7;
-		if (i) {
-			cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
-			cell.navtype = 100;
-			cell.calendar = this;
-			cell.fdow = realday;
-			Calendar._add_evs(cell);
-		}
-		if (weekend.indexOf(realday.toString()) != -1) {
-			Calendar.addClass(cell, "weekend");
-		}
-		cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
-		cell = cell.nextSibling;
-	}
-};
-
-/** Internal function.  Hides all combo boxes that might be displayed. */
-Calendar.prototype._hideCombos = function () {
-	this.monthsCombo.style.display = "none";
-	this.yearsCombo.style.display = "none";
-};
-
-/** Internal function.  Starts dragging the element. */
-Calendar.prototype._dragStart = function (ev) {
-	if (this.dragging) {
-		return;
-	}
-	this.dragging = true;
-	var posX;
-	var posY;
-	if (Calendar.is_ie) {
-		posY = window.event.clientY + document.body.scrollTop;
-		posX = window.event.clientX + document.body.scrollLeft;
-	} else {
-		posY = ev.clientY + window.scrollY;
-		posX = ev.clientX + window.scrollX;
-	}
-	var st = this.element.style;
-	this.xOffs = posX - parseInt(st.left);
-	this.yOffs = posY - parseInt(st.top);
-	with (Calendar) {
-		addEvent(document, "mousemove", calDragIt);
-		addEvent(document, "mouseup", calDragEnd);
-	}
-};
-
-// BEGIN: DATE OBJECT PATCHES
-
-/** Adds the number of days array to the Date object. */
-Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
-
-/** Constants used for time computations */
-Date.SECOND = 1000 /* milliseconds */;
-Date.MINUTE = 60 * Date.SECOND;
-Date.HOUR   = 60 * Date.MINUTE;
-Date.DAY    = 24 * Date.HOUR;
-Date.WEEK   =  7 * Date.DAY;
-
-Date.parseDate = function(str, fmt) {
-	var today = new Date();
-	var y = 0;
-	var m = -1;
-	var d = 0;
-	var a = str.split(/\W+/);
-	var b = fmt.match(/%./g);
-	var i = 0, j = 0;
-	var hr = 0;
-	var min = 0;
-	for (i = 0; i < a.length; ++i) {
-		if (!a[i])
-			continue;
-		switch (b[i]) {
-		    case "%d":
-		    case "%e":
-			d = parseInt(a[i], 10);
-			break;
-
-		    case "%m":
-			m = parseInt(a[i], 10) - 1;
-			break;
-
-		    case "%Y":
-		    case "%y":
-			y = parseInt(a[i], 10);
-			(y < 100) && (y += (y > 29) ? 1900 : 2000);
-			break;
-
-		    case "%b":
-		    case "%B":
-			for (j = 0; j < 12; ++j) {
-				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
-			}
-			break;
-
-		    case "%H":
-		    case "%I":
-		    case "%k":
-		    case "%l":
-			hr = parseInt(a[i], 10);
-			break;
-
-		    case "%P":
-		    case "%p":
-			if (/pm/i.test(a[i]) && hr < 12)
-				hr += 12;
-			else if (/am/i.test(a[i]) && hr >= 12)
-				hr -= 12;
-			break;
-
-		    case "%M":
-			min = parseInt(a[i], 10);
-			break;
-		}
-	}
-	if (isNaN(y)) y = today.getFullYear();
-	if (isNaN(m)) m = today.getMonth();
-	if (isNaN(d)) d = today.getDate();
-	if (isNaN(hr)) hr = today.getHours();
-	if (isNaN(min)) min = today.getMinutes();
-	if (y != 0 && m != -1 && d != 0)
-		return new Date(y, m, d, hr, min, 0);
-	y = 0; m = -1; d = 0;
-	for (i = 0; i < a.length; ++i) {
-		if (a[i].search(/[a-zA-Z]+/) != -1) {
-			var t = -1;
-			for (j = 0; j < 12; ++j) {
-				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
-			}
-			if (t != -1) {
-				if (m != -1) {
-					d = m+1;
-				}
-				m = t;
-			}
-		} else if (parseInt(a[i], 10) <= 12 && m == -1) {
-			m = a[i]-1;
-		} else if (parseInt(a[i], 10) > 31 && y == 0) {
-			y = parseInt(a[i], 10);
-			(y < 100) && (y += (y > 29) ? 1900 : 2000);
-		} else if (d == 0) {
-			d = a[i];
-		}
-	}
-	if (y == 0)
-		y = today.getFullYear();
-	if (m != -1 && d != 0)
-		return new Date(y, m, d, hr, min, 0);
-	return today;
-};
-
-/** Returns the number of days in the current month */
-Date.prototype.getMonthDays = function(month) {
-	var year = this.getFullYear();
-	if (typeof month == "undefined") {
-		month = this.getMonth();
-	}
-	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
-		return 29;
-	} else {
-		return Date._MD[month];
-	}
-};
-
-/** Returns the number of day in the year. */
-Date.prototype.getDayOfYear = function() {
-	var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
-	var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
-	var time = now - then;
-	return Math.floor(time / Date.DAY);
-};
-
-/** Returns the number of the week in year, as defined in ISO 8601. */
-Date.prototype.getWeekNumber = function() {
-	var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
-	var DoW = d.getDay();
-	d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
-	var ms = d.valueOf(); // GMT
-	d.setMonth(0);
-	d.setDate(4); // Thu in Week 1
-	return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
-};
-
-/** Checks date and time equality */
-Date.prototype.equalsTo = function(date) {
-	return ((this.getFullYear() == date.getFullYear()) &&
-		(this.getMonth() == date.getMonth()) &&
-		(this.getDate() == date.getDate()) &&
-		(this.getHours() == date.getHours()) &&
-		(this.getMinutes() == date.getMinutes()));
-};
-
-/** Set only the year, month, date parts (keep existing time) */
-Date.prototype.setDateOnly = function(date) {
-	var tmp = new Date(date);
-	this.setDate(1);
-	this.setFullYear(tmp.getFullYear());
-	this.setMonth(tmp.getMonth());
-	this.setDate(tmp.getDate());
-};
-
-/** Prints the date in a string according to the given format. */
-Date.prototype.print = function (str) {
-	var m = this.getMonth();
-	var d = this.getDate();
-	var y = this.getFullYear();
-	var wn = this.getWeekNumber();
-	var w = this.getDay();
-	var s = {};
-	var hr = this.getHours();
-	var pm = (hr >= 12);
-	var ir = (pm) ? (hr - 12) : hr;
-	var dy = this.getDayOfYear();
-	if (ir == 0)
-		ir = 12;
-	var min = this.getMinutes();
-	var sec = this.getSeconds();
-	s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N]
-	s["%A"] = Calendar._DN[w]; // full weekday name
-	s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N]
-	s["%B"] = Calendar._MN[m]; // full month name
-	// FIXME: %c : preferred date and time representation for the current locale
-	s["%C"] = 1 + Math.floor(y / 100); // the century number
-	s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31)
-	s["%e"] = d; // the day of the month (range 1 to 31)
-	// FIXME: %D : american date style: %m/%d/%y
-	// FIXME: %E, %F, %G, %g, %h (man strftime)
-	s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format)
-	s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format)
-	s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366)
-	s["%k"] = hr;		// hour, range 0 to 23 (24h format)
-	s["%l"] = ir;		// hour, range 1 to 12 (12h format)
-	s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12
-	s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59
-	s["%n"] = "\n";		// a newline character
-	s["%p"] = pm ? "PM" : "AM";
-	s["%P"] = pm ? "pm" : "am";
-	// FIXME: %r : the time in am/pm notation %I:%M:%S %p
-	// FIXME: %R : the time in 24-hour notation %H:%M
-	s["%s"] = Math.floor(this.getTime() / 1000);
-	s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59
-	s["%t"] = "\t";		// a tab character
-	// FIXME: %T : the time in 24-hour notation (%H:%M:%S)
-	s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
-	s["%u"] = w + 1;	// the day of the week (range 1 to 7, 1 = MON)
-	s["%w"] = w;		// the day of the week (range 0 to 6, 0 = SUN)
-	// FIXME: %x : preferred date representation for the current locale without the time
-	// FIXME: %X : preferred time representation for the current locale without the date
-	s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99)
-	s["%Y"] = y;		// year with the century
-	s["%%"] = "%";		// a literal '%' character
-
-	var re = /%./g;
-	if (!Calendar.is_ie5 && !Calendar.is_khtml)
-		return str.replace(re, function (par) { return s[par] || par; });
-
-	var a = str.match(re);
-	for (var i = 0; i < a.length; i++) {
-		var tmp = s[a[i]];
-		if (tmp) {
-			re = new RegExp(a[i], 'g');
-			str = str.replace(re, tmp);
-		}
-	}
-
-	return str;
-};
-
-Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
-Date.prototype.setFullYear = function(y) {
-	var d = new Date(this);
-	d.__msh_oldSetFullYear(y);
-	if (d.getMonth() != this.getMonth())
-		this.setDate(28);
-	this.__msh_oldSetFullYear(y);
-};
-
-// END: DATE OBJECT PATCHES
-
-
-// global object that remembers the calendar
-window._dynarch_popupCalendar = null;

Copied: plog/trunk/js/jscalendar/calendar.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar.js)
===================================================================
--- plog/trunk/js/jscalendar/calendar.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,1806 @@
+/*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
+ * -----------------------------------------------------------
+ *
+ * The DHTML Calendar, version 1.0 "It is happening again"
+ *
+ * Details and latest version at:
+ * www.dynarch.com/projects/calendar
+ *
+ * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
+ *
+ * This script is distributed under the GNU Lesser General Public License.
+ * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
+ */
+
+// $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $
+
+/** The Calendar object constructor. */
+Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
+	// member variables
+	this.activeDiv = null;
+	this.currentDateEl = null;
+	this.getDateStatus = null;
+	this.getDateToolTip = null;
+	this.getDateText = null;
+	this.timeout = null;
+	this.onSelected = onSelected || null;
+	this.onClose = onClose || null;
+	this.dragging = false;
+	this.hidden = false;
+	this.minYear = 1970;
+	this.maxYear = 2050;
+	this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
+	this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
+	this.isPopup = true;
+	this.weekNumbers = true;
+	this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
+	this.showsOtherMonths = false;
+	this.dateStr = dateStr;
+	this.ar_days = null;
+	this.showsTime = false;
+	this.time24 = true;
+	this.yearStep = 2;
+	this.hiliteToday = true;
+	this.multiple = null;
+	// HTML elements
+	this.table = null;
+	this.element = null;
+	this.tbody = null;
+	this.firstdayname = null;
+	// Combo boxes
+	this.monthsCombo = null;
+	this.yearsCombo = null;
+	this.hilitedMonth = null;
+	this.activeMonth = null;
+	this.hilitedYear = null;
+	this.activeYear = null;
+	// Information
+	this.dateClicked = false;
+
+	// one-time initializations
+	if (typeof Calendar._SDN == "undefined") {
+		// table of short day names
+		if (typeof Calendar._SDN_len == "undefined")
+			Calendar._SDN_len = 3;
+		var ar = new Array();
+		for (var i = 8; i > 0;) {
+			ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
+		}
+		Calendar._SDN = ar;
+		// table of short month names
+		if (typeof Calendar._SMN_len == "undefined")
+			Calendar._SMN_len = 3;
+		ar = new Array();
+		for (var i = 12; i > 0;) {
+			ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
+		}
+		Calendar._SMN = ar;
+	}
+};
+
+// ** constants
+
+/// "static", needed for event handlers.
+Calendar._C = null;
+
+/// detect a special case of "web browser"
+Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
+		   !/opera/i.test(navigator.userAgent) );
+
+Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );
+
+/// detect Opera browser
+Calendar.is_opera = /opera/i.test(navigator.userAgent);
+
+/// detect KHTML-based browsers
+Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);
+
+// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
+//        library, at some point.
+
+Calendar.getAbsolutePos = function(el) {
+	var SL = 0, ST = 0;
+	var is_div = /^div$/i.test(el.tagName);
+	if (is_div && el.scrollLeft)
+		SL = el.scrollLeft;
+	if (is_div && el.scrollTop)
+		ST = el.scrollTop;
+	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
+	if (el.offsetParent) {
+		var tmp = this.getAbsolutePos(el.offsetParent);
+		r.x += tmp.x;
+		r.y += tmp.y;
+	}
+	return r;
+};
+
+Calendar.isRelated = function (el, evt) {
+	var related = evt.relatedTarget;
+	if (!related) {
+		var type = evt.type;
+		if (type == "mouseover") {
+			related = evt.fromElement;
+		} else if (type == "mouseout") {
+			related = evt.toElement;
+		}
+	}
+	while (related) {
+		if (related == el) {
+			return true;
+		}
+		related = related.parentNode;
+	}
+	return false;
+};
+
+Calendar.removeClass = function(el, className) {
+	if (!(el && el.className)) {
+		return;
+	}
+	var cls = el.className.split(" ");
+	var ar = new Array();
+	for (var i = cls.length; i > 0;) {
+		if (cls[--i] != className) {
+			ar[ar.length] = cls[i];
+		}
+	}
+	el.className = ar.join(" ");
+};
+
+Calendar.addClass = function(el, className) {
+	Calendar.removeClass(el, className);
+	el.className += " " + className;
+};
+
+// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
+Calendar.getElement = function(ev) {
+	var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
+	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
+		f = f.parentNode;
+	return f;
+};
+
+Calendar.getTargetElement = function(ev) {
+	var f = Calendar.is_ie ? window.event.srcElement : ev.target;
+	while (f.nodeType != 1)
+		f = f.parentNode;
+	return f;
+};
+
+Calendar.stopEvent = function(ev) {
+	ev || (ev = window.event);
+	if (Calendar.is_ie) {
+		ev.cancelBubble = true;
+		ev.returnValue = false;
+	} else {
+		ev.preventDefault();
+		ev.stopPropagation();
+	}
+	return false;
+};
+
+Calendar.addEvent = function(el, evname, func) {
+	if (el.attachEvent) { // IE
+		el.attachEvent("on" + evname, func);
+	} else if (el.addEventListener) { // Gecko / W3C
+		el.addEventListener(evname, func, true);
+	} else {
+		el["on" + evname] = func;
+	}
+};
+
+Calendar.removeEvent = function(el, evname, func) {
+	if (el.detachEvent) { // IE
+		el.detachEvent("on" + evname, func);
+	} else if (el.removeEventListener) { // Gecko / W3C
+		el.removeEventListener(evname, func, true);
+	} else {
+		el["on" + evname] = null;
+	}
+};
+
+Calendar.createElement = function(type, parent) {
+	var el = null;
+	if (document.createElementNS) {
+		// use the XHTML namespace; IE won't normally get here unless
+		// _they_ "fix" the DOM2 implementation.
+		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
+	} else {
+		el = document.createElement(type);
+	}
+	if (typeof parent != "undefined") {
+		parent.appendChild(el);
+	}
+	return el;
+};
+
+// END: UTILITY FUNCTIONS
+
+// BEGIN: CALENDAR STATIC FUNCTIONS
+
+/** Internal -- adds a set of events to make some element behave like a button. */
+Calendar._add_evs = function(el) {
+	with (Calendar) {
+		addEvent(el, "mouseover", dayMouseOver);
+		addEvent(el, "mousedown", dayMouseDown);
+		addEvent(el, "mouseout", dayMouseOut);
+		if (is_ie) {
+			addEvent(el, "dblclick", dayMouseDblClick);
+			el.setAttribute("unselectable", true);
+		}
+	}
+};
+
+Calendar.findMonth = function(el) {
+	if (typeof el.month != "undefined") {
+		return el;
+	} else if (typeof el.parentNode.month != "undefined") {
+		return el.parentNode;
+	}
+	return null;
+};
+
+Calendar.findYear = function(el) {
+	if (typeof el.year != "undefined") {
+		return el;
+	} else if (typeof el.parentNode.year != "undefined") {
+		return el.parentNode;
+	}
+	return null;
+};
+
+Calendar.showMonthsCombo = function () {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	var cal = cal;
+	var cd = cal.activeDiv;
+	var mc = cal.monthsCombo;
+	if (cal.hilitedMonth) {
+		Calendar.removeClass(cal.hilitedMonth, "hilite");
+	}
+	if (cal.activeMonth) {
+		Calendar.removeClass(cal.activeMonth, "active");
+	}
+	var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
+	Calendar.addClass(mon, "active");
+	cal.activeMonth = mon;
+	var s = mc.style;
+	s.display = "block";
+	if (cd.navtype < 0)
+		s.left = cd.offsetLeft + "px";
+	else {
+		var mcw = mc.offsetWidth;
+		if (typeof mcw == "undefined")
+			// Konqueror brain-dead techniques
+			mcw = 50;
+		s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
+	}
+	s.top = (cd.offsetTop + cd.offsetHeight) + "px";
+};
+
+Calendar.showYearsCombo = function (fwd) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	var cal = cal;
+	var cd = cal.activeDiv;
+	var yc = cal.yearsCombo;
+	if (cal.hilitedYear) {
+		Calendar.removeClass(cal.hilitedYear, "hilite");
+	}
+	if (cal.activeYear) {
+		Calendar.removeClass(cal.activeYear, "active");
+	}
+	cal.activeYear = null;
+	var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
+	var yr = yc.firstChild;
+	var show = false;
+	for (var i = 12; i > 0; --i) {
+		if (Y >= cal.minYear && Y <= cal.maxYear) {
+			yr.innerHTML = Y;
+			yr.year = Y;
+			yr.style.display = "block";
+			show = true;
+		} else {
+			yr.style.display = "none";
+		}
+		yr = yr.nextSibling;
+		Y += fwd ? cal.yearStep : -cal.yearStep;
+	}
+	if (show) {
+		var s = yc.style;
+		s.display = "block";
+		if (cd.navtype < 0)
+			s.left = cd.offsetLeft + "px";
+		else {
+			var ycw = yc.offsetWidth;
+			if (typeof ycw == "undefined")
+				// Konqueror brain-dead techniques
+				ycw = 50;
+			s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
+		}
+		s.top = (cd.offsetTop + cd.offsetHeight) + "px";
+	}
+};
+
+// event handlers
+
+Calendar.tableMouseUp = function(ev) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	if (cal.timeout) {
+		clearTimeout(cal.timeout);
+	}
+	var el = cal.activeDiv;
+	if (!el) {
+		return false;
+	}
+	var target = Calendar.getTargetElement(ev);
+	ev || (ev = window.event);
+	Calendar.removeClass(el, "active");
+	if (target == el || target.parentNode == el) {
+		Calendar.cellClick(el, ev);
+	}
+	var mon = Calendar.findMonth(target);
+	var date = null;
+	if (mon) {
+		date = new Date(cal.date);
+		if (mon.month != date.getMonth()) {
+			date.setMonth(mon.month);
+			cal.setDate(date);
+			cal.dateClicked = false;
+			cal.callHandler();
+		}
+	} else {
+		var year = Calendar.findYear(target);
+		if (year) {
+			date = new Date(cal.date);
+			if (year.year != date.getFullYear()) {
+				date.setFullYear(year.year);
+				cal.setDate(date);
+				cal.dateClicked = false;
+				cal.callHandler();
+			}
+		}
+	}
+	with (Calendar) {
+		removeEvent(document, "mouseup", tableMouseUp);
+		removeEvent(document, "mouseover", tableMouseOver);
+		removeEvent(document, "mousemove", tableMouseOver);
+		cal._hideCombos();
+		_C = null;
+		return stopEvent(ev);
+	}
+};
+
+Calendar.tableMouseOver = function (ev) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return;
+	}
+	var el = cal.activeDiv;
+	var target = Calendar.getTargetElement(ev);
+	if (target == el || target.parentNode == el) {
+		Calendar.addClass(el, "hilite active");
+		Calendar.addClass(el.parentNode, "rowhilite");
+	} else {
+		if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))
+			Calendar.removeClass(el, "active");
+		Calendar.removeClass(el, "hilite");
+		Calendar.removeClass(el.parentNode, "rowhilite");
+	}
+	ev || (ev = window.event);
+	if (el.navtype == 50 && target != el) {
+		var pos = Calendar.getAbsolutePos(el);
+		var w = el.offsetWidth;
+		var x = ev.clientX;
+		var dx;
+		var decrease = true;
+		if (x > pos.x + w) {
+			dx = x - pos.x - w;
+			decrease = false;
+		} else
+			dx = pos.x - x;
+
+		if (dx < 0) dx = 0;
+		var range = el._range;
+		var current = el._current;
+		var count = Math.floor(dx / 10) % range.length;
+		for (var i = range.length; --i >= 0;)
+			if (range[i] == current)
+				break;
+		while (count-- > 0)
+			if (decrease) {
+				if (--i < 0)
+					i = range.length - 1;
+			} else if ( ++i >= range.length )
+				i = 0;
+		var newval = range[i];
+		el.innerHTML = newval;
+
+		cal.onUpdateTime();
+	}
+	var mon = Calendar.findMonth(target);
+	if (mon) {
+		if (mon.month != cal.date.getMonth()) {
+			if (cal.hilitedMonth) {
+				Calendar.removeClass(cal.hilitedMonth, "hilite");
+			}
+			Calendar.addClass(mon, "hilite");
+			cal.hilitedMonth = mon;
+		} else if (cal.hilitedMonth) {
+			Calendar.removeClass(cal.hilitedMonth, "hilite");
+		}
+	} else {
+		if (cal.hilitedMonth) {
+			Calendar.removeClass(cal.hilitedMonth, "hilite");
+		}
+		var year = Calendar.findYear(target);
+		if (year) {
+			if (year.year != cal.date.getFullYear()) {
+				if (cal.hilitedYear) {
+					Calendar.removeClass(cal.hilitedYear, "hilite");
+				}
+				Calendar.addClass(year, "hilite");
+				cal.hilitedYear = year;
+			} else if (cal.hilitedYear) {
+				Calendar.removeClass(cal.hilitedYear, "hilite");
+			}
+		} else if (cal.hilitedYear) {
+			Calendar.removeClass(cal.hilitedYear, "hilite");
+		}
+	}
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.tableMouseDown = function (ev) {
+	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
+		return Calendar.stopEvent(ev);
+	}
+};
+
+Calendar.calDragIt = function (ev) {
+	var cal = Calendar._C;
+	if (!(cal && cal.dragging)) {
+		return false;
+	}
+	var posX;
+	var posY;
+	if (Calendar.is_ie) {
+		posY = window.event.clientY + document.body.scrollTop;
+		posX = window.event.clientX + document.body.scrollLeft;
+	} else {
+		posX = ev.pageX;
+		posY = ev.pageY;
+	}
+	cal.hideShowCovered();
+	var st = cal.element.style;
+	st.left = (posX - cal.xOffs) + "px";
+	st.top = (posY - cal.yOffs) + "px";
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.calDragEnd = function (ev) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	cal.dragging = false;
+	with (Calendar) {
+		removeEvent(document, "mousemove", calDragIt);
+		removeEvent(document, "mouseup", calDragEnd);
+		tableMouseUp(ev);
+	}
+	cal.hideShowCovered();
+};
+
+Calendar.dayMouseDown = function(ev) {
+	var el = Calendar.getElement(ev);
+	if (el.disabled) {
+		return false;
+	}
+	var cal = el.calendar;
+	cal.activeDiv = el;
+	Calendar._C = cal;
+	if (el.navtype != 300) with (Calendar) {
+		if (el.navtype == 50) {
+			el._current = el.innerHTML;
+			addEvent(document, "mousemove", tableMouseOver);
+		} else
+			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
+		addClass(el, "hilite active");
+		addEvent(document, "mouseup", tableMouseUp);
+	} else if (cal.isPopup) {
+		cal._dragStart(ev);
+	}
+	if (el.navtype == -1 || el.navtype == 1) {
+		if (cal.timeout) clearTimeout(cal.timeout);
+		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
+	} else if (el.navtype == -2 || el.navtype == 2) {
+		if (cal.timeout) clearTimeout(cal.timeout);
+		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
+	} else {
+		cal.timeout = null;
+	}
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.dayMouseDblClick = function(ev) {
+	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
+	if (Calendar.is_ie) {
+		document.selection.empty();
+	}
+};
+
+Calendar.dayMouseOver = function(ev) {
+	var el = Calendar.getElement(ev);
+	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
+		return false;
+	}
+	if (el.ttip) {
+		if (el.ttip.substr(0, 1) == "_") {
+			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
+		}
+		el.calendar.tooltips.innerHTML = el.ttip;
+	}
+	if (el.navtype != 300) {
+		Calendar.addClass(el, "hilite");
+		if (el.caldate) {
+			Calendar.addClass(el.parentNode, "rowhilite");
+		}
+	}
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.dayMouseOut = function(ev) {
+	with (Calendar) {
+		var el = getElement(ev);
+		if (isRelated(el, ev) || _C || el.disabled)
+			return false;
+		removeClass(el, "hilite");
+		if (el.caldate)
+			removeClass(el.parentNode, "rowhilite");
+		if (el.calendar)
+			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
+		return stopEvent(ev);
+	}
+};
+
+/**
+ *  A generic "click" handler :) handles all types of buttons defined in this
+ *  calendar.
+ */
+Calendar.cellClick = function(el, ev) {
+	var cal = el.calendar;
+	var closing = false;
+	var newdate = false;
+	var date = null;
+	if (typeof el.navtype == "undefined") {
+		if (cal.currentDateEl) {
+			Calendar.removeClass(cal.currentDateEl, "selected");
+			Calendar.addClass(el, "selected");
+			closing = (cal.currentDateEl == el);
+			if (!closing) {
+				cal.currentDateEl = el;
+			}
+		}
+		cal.date.setDateOnly(el.caldate);
+		date = cal.date;
+		var other_month = !(cal.dateClicked = !el.otherMonth);
+		if (!other_month && !cal.currentDateEl)
+			cal._toggleMultipleDate(new Date(date));
+		else
+			newdate = !el.disabled;
+		// a date was clicked
+		if (other_month)
+			cal._init(cal.firstDayOfWeek, date);
+	} else {
+		if (el.navtype == 200) {
+			Calendar.removeClass(el, "hilite");
+			cal.callCloseHandler();
+			return;
+		}
+		date = new Date(cal.date);
+		if (el.navtype == 0)
+			date.setDateOnly(new Date()); // TODAY
+		// unless "today" was clicked, we assume no date was clicked so
+		// the selected handler will know not to close the calenar when
+		// in single-click mode.
+		// cal.dateClicked = (el.navtype == 0);
+		cal.dateClicked = false;
+		var year = date.getFullYear();
+		var mon = date.getMonth();
+		function setMonth(m) {
+			var day = date.getDate();
+			var max = date.getMonthDays(m);
+			if (day > max) {
+				date.setDate(max);
+			}
+			date.setMonth(m);
+		};
+		switch (el.navtype) {
+		    case 400:
+			Calendar.removeClass(el, "hilite");
+			var text = Calendar._TT["ABOUT"];
+			if (typeof text != "undefined") {
+				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
+			} else {
+				// FIXME: this should be removed as soon as lang files get updated!
+				text = "Help and about box text is not translated into this language.\n" +
+					"If you know this language and you feel generous please update\n" +
+					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +
+					"and send it back to <mihai_bazon at yahoo.com> to get it into the distribution  ;-)\n\n" +
+					"Thank you!\n" +
+					"http://dynarch.com/mishoo/calendar.epl\n";
+			}
+			alert(text);
+			return;
+		    case -2:
+			if (year > cal.minYear) {
+				date.setFullYear(year - 1);
+			}
+			break;
+		    case -1:
+			if (mon > 0) {
+				setMonth(mon - 1);
+			} else if (year-- > cal.minYear) {
+				date.setFullYear(year);
+				setMonth(11);
+			}
+			break;
+		    case 1:
+			if (mon < 11) {
+				setMonth(mon + 1);
+			} else if (year < cal.maxYear) {
+				date.setFullYear(year + 1);
+				setMonth(0);
+			}
+			break;
+		    case 2:
+			if (year < cal.maxYear) {
+				date.setFullYear(year + 1);
+			}
+			break;
+		    case 100:
+			cal.setFirstDayOfWeek(el.fdow);
+			return;
+		    case 50:
+			var range = el._range;
+			var current = el.innerHTML;
+			for (var i = range.length; --i >= 0;)
+				if (range[i] == current)
+					break;
+			if (ev && ev.shiftKey) {
+				if (--i < 0)
+					i = range.length - 1;
+			} else if ( ++i >= range.length )
+				i = 0;
+			var newval = range[i];
+			el.innerHTML = newval;
+			cal.onUpdateTime();
+			return;
+		    case 0:
+			// TODAY will bring us here
+			if ((typeof cal.getDateStatus == "function") &&
+			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
+				return false;
+			}
+			break;
+		}
+		if (!date.equalsTo(cal.date)) {
+			cal.setDate(date);
+			newdate = true;
+		} else if (el.navtype == 0)
+			newdate = closing = true;
+	}
+	if (newdate) {
+		ev && cal.callHandler();
+	}
+	if (closing) {
+		Calendar.removeClass(el, "hilite");
+		ev && cal.callCloseHandler();
+	}
+};
+
+// END: CALENDAR STATIC FUNCTIONS
+
+// BEGIN: CALENDAR OBJECT FUNCTIONS
+
+/**
+ *  This function creates the calendar inside the given parent.  If _par is
+ *  null than it creates a popup calendar inside the BODY element.  If _par is
+ *  an element, be it BODY, then it creates a non-popup calendar (still
+ *  hidden).  Some properties need to be set before calling this function.
+ */
+Calendar.prototype.create = function (_par) {
+	var parent = null;
+	if (! _par) {
+		// default parent is the document body, in which case we create
+		// a popup calendar.
+		parent = document.getElementsByTagName("body")[0];
+		this.isPopup = true;
+	} else {
+		parent = _par;
+		this.isPopup = false;
+	}
+	this.date = this.dateStr ? new Date(this.dateStr) : new Date();
+
+	var table = Calendar.createElement("table");
+	this.table = table;
+	table.cellSpacing = 0;
+	table.cellPadding = 0;
+	table.calendar = this;
+	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);
+
+	var div = Calendar.createElement("div");
+	this.element = div;
+	div.className = "calendar";
+	if (this.isPopup) {
+		div.style.position = "absolute";
+		div.style.display = "none";
+	}
+	div.appendChild(table);
+
+	var thead = Calendar.createElement("thead", table);
+	var cell = null;
+	var row = null;
+
+	var cal = this;
+	var hh = function (text, cs, navtype) {
+		cell = Calendar.createElement("td", row);
+		cell.colSpan = cs;
+		cell.className = "button";
+		if (navtype != 0 && Math.abs(navtype) <= 2)
+			cell.className += " nav";
+		Calendar._add_evs(cell);
+		cell.calendar = cal;
+		cell.navtype = navtype;
+		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
+		return cell;
+	};
+
+	row = Calendar.createElement("tr", thead);
+	var title_length = 6;
+	(this.isPopup) && --title_length;
+	(this.weekNumbers) && ++title_length;
+
+	hh("?", 1, 400).ttip = Calendar._TT["INFO"];
+	this.title = hh("", title_length, 300);
+	this.title.className = "title";
+	if (this.isPopup) {
+		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
+		this.title.style.cursor = "move";
+		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];
+	}
+
+	row = Calendar.createElement("tr", thead);
+	row.className = "headrow";
+
+	this._nav_py = hh("&#x00ab;", 1, -2);
+	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];
+
+	this._nav_pm = hh("&#x2039;", 1, -1);
+	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];
+
+	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);
+	this._nav_now.ttip = Calendar._TT["GO_TODAY"];
+
+	this._nav_nm = hh("&#x203a;", 1, 1);
+	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
+
+	this._nav_ny = hh("&#x00bb;", 1, 2);
+	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];
+
+	// day names
+	row = Calendar.createElement("tr", thead);
+	row.className = "daynames";
+	if (this.weekNumbers) {
+		cell = Calendar.createElement("td", row);
+		cell.className = "name wn";
+		cell.innerHTML = Calendar._TT["WK"];
+	}
+	for (var i = 7; i > 0; --i) {
+		cell = Calendar.createElement("td", row);
+		if (!i) {
+			cell.navtype = 100;
+			cell.calendar = this;
+			Calendar._add_evs(cell);
+		}
+	}
+	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
+	this._displayWeekdays();
+
+	var tbody = Calendar.createElement("tbody", table);
+	this.tbody = tbody;
+
+	for (i = 6; i > 0; --i) {
+		row = Calendar.createElement("tr", tbody);
+		if (this.weekNumbers) {
+			cell = Calendar.createElement("td", row);
+		}
+		for (var j = 7; j > 0; --j) {
+			cell = Calendar.createElement("td", row);
+			cell.calendar = this;
+			Calendar._add_evs(cell);
+		}
+	}
+
+	if (this.showsTime) {
+		row = Calendar.createElement("tr", tbody);
+		row.className = "time";
+
+		cell = Calendar.createElement("td", row);
+		cell.className = "time";
+		cell.colSpan = 2;
+		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";
+
+		cell = Calendar.createElement("td", row);
+		cell.className = "time";
+		cell.colSpan = this.weekNumbers ? 4 : 3;
+
+		(function(){
+			function makeTimePart(className, init, range_start, range_end) {
+				var part = Calendar.createElement("span", cell);
+				part.className = className;
+				part.innerHTML = init;
+				part.calendar = cal;
+				part.ttip = Calendar._TT["TIME_PART"];
+				part.navtype = 50;
+				part._range = [];
+				if (typeof range_start != "number")
+					part._range = range_start;
+				else {
+					for (var i = range_start; i <= range_end; ++i) {
+						var txt;
+						if (i < 10 && range_end >= 10) txt = '0' + i;
+						else txt = '' + i;
+						part._range[part._range.length] = txt;
+					}
+				}
+				Calendar._add_evs(part);
+				return part;
+			};
+			var hrs = cal.date.getHours();
+			var mins = cal.date.getMinutes();
+			var t12 = !cal.time24;
+			var pm = (hrs > 12);
+			if (t12 && pm) hrs -= 12;
+			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
+			var span = Calendar.createElement("span", cell);
+			span.innerHTML = ":";
+			span.className = "colon";
+			var M = makeTimePart("minute", mins, 0, 59);
+			var AP = null;
+			cell = Calendar.createElement("td", row);
+			cell.className = "time";
+			cell.colSpan = 2;
+			if (t12)
+				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);
+			else
+				cell.innerHTML = "&nbsp;";
+
+			cal.onSetTime = function() {
+				var pm, hrs = this.date.getHours(),
+					mins = this.date.getMinutes();
+				if (t12) {
+					pm = (hrs >= 12);
+					if (pm) hrs -= 12;
+					if (hrs == 0) hrs = 12;
+					AP.innerHTML = pm ? "pm" : "am";
+				}
+				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
+				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
+			};
+
+			cal.onUpdateTime = function() {
+				var date = this.date;
+				var h = parseInt(H.innerHTML, 10);
+				if (t12) {
+					if (/pm/i.test(AP.innerHTML) && h < 12)
+						h += 12;
+					else if (/am/i.test(AP.innerHTML) && h == 12)
+						h = 0;
+				}
+				var d = date.getDate();
+				var m = date.getMonth();
+				var y = date.getFullYear();
+				date.setHours(h);
+				date.setMinutes(parseInt(M.innerHTML, 10));
+				date.setFullYear(y);
+				date.setMonth(m);
+				date.setDate(d);
+				this.dateClicked = false;
+				this.callHandler();
+			};
+		})();
+	} else {
+		this.onSetTime = this.onUpdateTime = function() {};
+	}
+
+	var tfoot = Calendar.createElement("tfoot", table);
+
+	row = Calendar.createElement("tr", tfoot);
+	row.className = "footrow";
+
+	cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
+	cell.className = "ttip";
+	if (this.isPopup) {
+		cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
+		cell.style.cursor = "move";
+	}
+	this.tooltips = cell;
+
+	div = Calendar.createElement("div", this.element);
+	this.monthsCombo = div;
+	div.className = "combo";
+	for (i = 0; i < Calendar._MN.length; ++i) {
+		var mn = Calendar.createElement("div");
+		mn.className = Calendar.is_ie ? "label-IEfix" : "label";
+		mn.month = i;
+		mn.innerHTML = Calendar._SMN[i];
+		div.appendChild(mn);
+	}
+
+	div = Calendar.createElement("div", this.element);
+	this.yearsCombo = div;
+	div.className = "combo";
+	for (i = 12; i > 0; --i) {
+		var yr = Calendar.createElement("div");
+		yr.className = Calendar.is_ie ? "label-IEfix" : "label";
+		div.appendChild(yr);
+	}
+
+	this._init(this.firstDayOfWeek, this.date);
+	parent.appendChild(this.element);
+};
+
+/** keyboard navigation, only for popup calendars */
+Calendar._keyEvent = function(ev) {
+	var cal = window._dynarch_popupCalendar;
+	if (!cal || cal.multiple)
+		return false;
+	(Calendar.is_ie) && (ev = window.event);
+	var act = (Calendar.is_ie || ev.type == "keypress"),
+		K = ev.keyCode;
+	if (ev.ctrlKey) {
+		switch (K) {
+		    case 37: // KEY left
+			act && Calendar.cellClick(cal._nav_pm);
+			break;
+		    case 38: // KEY up
+			act && Calendar.cellClick(cal._nav_py);
+			break;
+		    case 39: // KEY right
+			act && Calendar.cellClick(cal._nav_nm);
+			break;
+		    case 40: // KEY down
+			act && Calendar.cellClick(cal._nav_ny);
+			break;
+		    default:
+			return false;
+		}
+	} else switch (K) {
+	    case 32: // KEY space (now)
+		Calendar.cellClick(cal._nav_now);
+		break;
+	    case 27: // KEY esc
+		act && cal.callCloseHandler();
+		break;
+	    case 37: // KEY left
+	    case 38: // KEY up
+	    case 39: // KEY right
+	    case 40: // KEY down
+		if (act) {
+			var prev, x, y, ne, el, step;
+			prev = K == 37 || K == 38;
+			step = (K == 37 || K == 39) ? 1 : 7;
+			function setVars() {
+				el = cal.currentDateEl;
+				var p = el.pos;
+				x = p & 15;
+				y = p >> 4;
+				ne = cal.ar_days[y][x];
+			};setVars();
+			function prevMonth() {
+				var date = new Date(cal.date);
+				date.setDate(date.getDate() - step);
+				cal.setDate(date);
+			};
+			function nextMonth() {
+				var date = new Date(cal.date);
+				date.setDate(date.getDate() + step);
+				cal.setDate(date);
+			};
+			while (1) {
+				switch (K) {
+				    case 37: // KEY left
+					if (--x >= 0)
+						ne = cal.ar_days[y][x];
+					else {
+						x = 6;
+						K = 38;
+						continue;
+					}
+					break;
+				    case 38: // KEY up
+					if (--y >= 0)
+						ne = cal.ar_days[y][x];
+					else {
+						prevMonth();
+						setVars();
+					}
+					break;
+				    case 39: // KEY right
+					if (++x < 7)
+						ne = cal.ar_days[y][x];
+					else {
+						x = 0;
+						K = 40;
+						continue;
+					}
+					break;
+				    case 40: // KEY down
+					if (++y < cal.ar_days.length)
+						ne = cal.ar_days[y][x];
+					else {
+						nextMonth();
+						setVars();
+					}
+					break;
+				}
+				break;
+			}
+			if (ne) {
+				if (!ne.disabled)
+					Calendar.cellClick(ne);
+				else if (prev)
+					prevMonth();
+				else
+					nextMonth();
+			}
+		}
+		break;
+	    case 13: // KEY enter
+		if (act)
+			Calendar.cellClick(cal.currentDateEl, ev);
+		break;
+	    default:
+		return false;
+	}
+	return Calendar.stopEvent(ev);
+};
+
+/**
+ *  (RE)Initializes the calendar to the given date and firstDayOfWeek
+ */
+Calendar.prototype._init = function (firstDayOfWeek, date) {
+	var today = new Date(),
+		TY = today.getFullYear(),
+		TM = today.getMonth(),
+		TD = today.getDate();
+	this.table.style.visibility = "hidden";
+	var year = date.getFullYear();
+	if (year < this.minYear) {
+		year = this.minYear;
+		date.setFullYear(year);
+	} else if (year > this.maxYear) {
+		year = this.maxYear;
+		date.setFullYear(year);
+	}
+	this.firstDayOfWeek = firstDayOfWeek;
+	this.date = new Date(date);
+	var month = date.getMonth();
+	var mday = date.getDate();
+	var no_days = date.getMonthDays();
+
+	// calendar voodoo for computing the first day that would actually be
+	// displayed in the calendar, even if it's from the previous month.
+	// WARNING: this is magic. ;-)
+	date.setDate(1);
+	var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
+	if (day1 < 0)
+		day1 += 7;
+	date.setDate(-day1);
+	date.setDate(date.getDate() + 1);
+
+	var row = this.tbody.firstChild;
+	var MN = Calendar._SMN[month];
+	var ar_days = this.ar_days = new Array();
+	var weekend = Calendar._TT["WEEKEND"];
+	var dates = this.multiple ? (this.datesCells = {}) : null;
+	for (var i = 0; i < 6; ++i, row = row.nextSibling) {
+		var cell = row.firstChild;
+		if (this.weekNumbers) {
+			cell.className = "day wn";
+			cell.innerHTML = date.getWeekNumber();
+			cell = cell.nextSibling;
+		}
+		row.className = "daysrow";
+		var hasdays = false, iday, dpos = ar_days[i] = [];
+		for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
+			iday = date.getDate();
+			var wday = date.getDay();
+			cell.className = "day";
+			cell.pos = i << 4 | j;
+			dpos[j] = cell;
+			var current_month = (date.getMonth() == month);
+			if (!current_month) {
+				if (this.showsOtherMonths) {
+					cell.className += " othermonth";
+					cell.otherMonth = true;
+				} else {
+					cell.className = "emptycell";
+					cell.innerHTML = "&nbsp;";
+					cell.disabled = true;
+					continue;
+				}
+			} else {
+				cell.otherMonth = false;
+				hasdays = true;
+			}
+			cell.disabled = false;
+			cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
+			if (dates)
+				dates[date.print("%Y%m%d")] = cell;
+			if (this.getDateStatus) {
+				var status = this.getDateStatus(date, year, month, iday);
+				if (this.getDateToolTip) {
+					var toolTip = this.getDateToolTip(date, year, month, iday);
+					if (toolTip)
+						cell.title = toolTip;
+				}
+				if (status === true) {
+					cell.className += " disabled";
+					cell.disabled = true;
+				} else {
+					if (/disabled/i.test(status))
+						cell.disabled = true;
+					cell.className += " " + status;
+				}
+			}
+			if (!cell.disabled) {
+				cell.caldate = new Date(date);
+				cell.ttip = "_";
+				if (!this.multiple && current_month
+				    && iday == mday && this.hiliteToday) {
+					cell.className += " selected";
+					this.currentDateEl = cell;
+				}
+				if (date.getFullYear() == TY &&
+				    date.getMonth() == TM &&
+				    iday == TD) {
+					cell.className += " today";
+					cell.ttip += Calendar._TT["PART_TODAY"];
+				}
+				if (weekend.indexOf(wday.toString()) != -1)
+					cell.className += cell.otherMonth ? " oweekend" : " weekend";
+			}
+		}
+		if (!(hasdays || this.showsOtherMonths))
+			row.className = "emptyrow";
+	}
+	this.title.innerHTML = Calendar._MN[month] + ", " + year;
+	this.onSetTime();
+	this.table.style.visibility = "visible";
+	this._initMultipleDates();
+	// PROFILE
+	// this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms";
+};
+
+Calendar.prototype._initMultipleDates = function() {
+	if (this.multiple) {
+		for (var i in this.multiple) {
+			var cell = this.datesCells[i];
+			var d = this.multiple[i];
+			if (!d)
+				continue;
+			if (cell)
+				cell.className += " selected";
+		}
+	}
+};
+
+Calendar.prototype._toggleMultipleDate = function(date) {
+	if (this.multiple) {
+		var ds = date.print("%Y%m%d");
+		var cell = this.datesCells[ds];
+		if (cell) {
+			var d = this.multiple[ds];
+			if (!d) {
+				Calendar.addClass(cell, "selected");
+				this.multiple[ds] = date;
+			} else {
+				Calendar.removeClass(cell, "selected");
+				delete this.multiple[ds];
+			}
+		}
+	}
+};
+
+Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
+	this.getDateToolTip = unaryFunction;
+};
+
+/**
+ *  Calls _init function above for going to a certain date (but only if the
+ *  date is different than the currently selected one).
+ */
+Calendar.prototype.setDate = function (date) {
+	if (!date.equalsTo(this.date)) {
+		this._init(this.firstDayOfWeek, date);
+	}
+};
+
+/**
+ *  Refreshes the calendar.  Useful if the "disabledHandler" function is
+ *  dynamic, meaning that the list of disabled date can change at runtime.
+ *  Just * call this function if you think that the list of disabled dates
+ *  should * change.
+ */
+Calendar.prototype.refresh = function () {
+	this._init(this.firstDayOfWeek, this.date);
+};
+
+/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */
+Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
+	this._init(firstDayOfWeek, this.date);
+	this._displayWeekdays();
+};
+
+/**
+ *  Allows customization of what dates are enabled.  The "unaryFunction"
+ *  parameter must be a function object that receives the date (as a JS Date
+ *  object) and returns a boolean value.  If the returned value is true then
+ *  the passed date will be marked as disabled.
+ */
+Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
+	this.getDateStatus = unaryFunction;
+};
+
+/** Customization of allowed year range for the calendar. */
+Calendar.prototype.setRange = function (a, z) {
+	this.minYear = a;
+	this.maxYear = z;
+};
+
+/** Calls the first user handler (selectedHandler). */
+Calendar.prototype.callHandler = function () {
+	if (this.onSelected) {
+		this.onSelected(this, this.date.print(this.dateFormat));
+	}
+};
+
+/** Calls the second user handler (closeHandler). */
+Calendar.prototype.callCloseHandler = function () {
+	if (this.onClose) {
+		this.onClose(this);
+	}
+	this.hideShowCovered();
+};
+
+/** Removes the calendar object from the DOM tree and destroys it. */
+Calendar.prototype.destroy = function () {
+	var el = this.element.parentNode;
+	el.removeChild(this.element);
+	Calendar._C = null;
+	window._dynarch_popupCalendar = null;
+};
+
+/**
+ *  Moves the calendar element to a different section in the DOM tree (changes
+ *  its parent).
+ */
+Calendar.prototype.reparent = function (new_parent) {
+	var el = this.element;
+	el.parentNode.removeChild(el);
+	new_parent.appendChild(el);
+};
+
+// This gets called when the user presses a mouse button anywhere in the
+// document, if the calendar is shown.  If the click was outside the open
+// calendar this function closes it.
+Calendar._checkCalendar = function(ev) {
+	var calendar = window._dynarch_popupCalendar;
+	if (!calendar) {
+		return false;
+	}
+	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
+	for (; el != null && el != calendar.element; el = el.parentNode);
+	if (el == null) {
+		// calls closeHandler which should hide the calendar.
+		window._dynarch_popupCalendar.callCloseHandler();
+		return Calendar.stopEvent(ev);
+	}
+};
+
+/** Shows the calendar. */
+Calendar.prototype.show = function () {
+	var rows = this.table.getElementsByTagName("tr");
+	for (var i = rows.length; i > 0;) {
+		var row = rows[--i];
+		Calendar.removeClass(row, "rowhilite");
+		var cells = row.getElementsByTagName("td");
+		for (var j = cells.length; j > 0;) {
+			var cell = cells[--j];
+			Calendar.removeClass(cell, "hilite");
+			Calendar.removeClass(cell, "active");
+		}
+	}
+	this.element.style.display = "block";
+	this.hidden = false;
+	if (this.isPopup) {
+		window._dynarch_popupCalendar = this;
+		Calendar.addEvent(document, "keydown", Calendar._keyEvent);
+		Calendar.addEvent(document, "keypress", Calendar._keyEvent);
+		Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
+	}
+	this.hideShowCovered();
+};
+
+/**
+ *  Hides the calendar.  Also removes any "hilite" from the class of any TD
+ *  element.
+ */
+Calendar.prototype.hide = function () {
+	if (this.isPopup) {
+		Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
+		Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
+		Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
+	}
+	this.element.style.display = "none";
+	this.hidden = true;
+	this.hideShowCovered();
+};
+
+/**
+ *  Shows the calendar at a given absolute position (beware that, depending on
+ *  the calendar element style -- position property -- this might be relative
+ *  to the parent's containing rectangle).
+ */
+Calendar.prototype.showAt = function (x, y) {
+	var s = this.element.style;
+	s.left = x + "px";
+	s.top = y + "px";
+	this.show();
+};
+
+/** Shows the calendar near a given element. */
+Calendar.prototype.showAtElement = function (el, opts) {
+	var self = this;
+	var p = Calendar.getAbsolutePos(el);
+	if (!opts || typeof opts != "string") {
+		this.showAt(p.x, p.y + el.offsetHeight);
+		return true;
+	}
+	function fixPosition(box) {
+		if (box.x < 0)
+			box.x = 0;
+		if (box.y < 0)
+			box.y = 0;
+		var cp = document.createElement("div");
+		var s = cp.style;
+		s.position = "absolute";
+		s.right = s.bottom = s.width = s.height = "0px";
+		document.body.appendChild(cp);
+		var br = Calendar.getAbsolutePos(cp);
+		document.body.removeChild(cp);
+		if (Calendar.is_ie) {
+			br.y += document.body.scrollTop;
+			br.x += document.body.scrollLeft;
+		} else {
+			br.y += window.scrollY;
+			br.x += window.scrollX;
+		}
+		var tmp = box.x + box.width - br.x;
+		if (tmp > 0) box.x -= tmp;
+		tmp = box.y + box.height - br.y;
+		if (tmp > 0) box.y -= tmp;
+	};
+	this.element.style.display = "block";
+	Calendar.continuation_for_the_fucking_khtml_browser = function() {
+		var w = self.element.offsetWidth;
+		var h = self.element.offsetHeight;
+		self.element.style.display = "none";
+		var valign = opts.substr(0, 1);
+		var halign = "l";
+		if (opts.length > 1) {
+			halign = opts.substr(1, 1);
+		}
+		// vertical alignment
+		switch (valign) {
+		    case "T": p.y -= h; break;
+		    case "B": p.y += el.offsetHeight; break;
+		    case "C": p.y += (el.offsetHeight - h) / 2; break;
+		    case "t": p.y += el.offsetHeight - h; break;
+		    case "b": break; // already there
+		}
+		// horizontal alignment
+		switch (halign) {
+		    case "L": p.x -= w; break;
+		    case "R": p.x += el.offsetWidth; break;
+		    case "C": p.x += (el.offsetWidth - w) / 2; break;
+		    case "l": p.x += el.offsetWidth - w; break;
+		    case "r": break; // already there
+		}
+		p.width = w;
+		p.height = h + 40;
+		self.monthsCombo.style.display = "none";
+		fixPosition(p);
+		self.showAt(p.x, p.y);
+	};
+	if (Calendar.is_khtml)
+		setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10);
+	else
+		Calendar.continuation_for_the_fucking_khtml_browser();
+};
+
+/** Customizes the date format. */
+Calendar.prototype.setDateFormat = function (str) {
+	this.dateFormat = str;
+};
+
+/** Customizes the tooltip date format. */
+Calendar.prototype.setTtDateFormat = function (str) {
+	this.ttDateFormat = str;
+};
+
+/**
+ *  Tries to identify the date represented in a string.  If successful it also
+ *  calls this.setDate which moves the calendar to the given date.
+ */
+Calendar.prototype.parseDate = function(str, fmt) {
+	if (!fmt)
+		fmt = this.dateFormat;
+	this.setDate(Date.parseDate(str, fmt));
+};
+
+Calendar.prototype.hideShowCovered = function () {
+	if (!Calendar.is_ie && !Calendar.is_opera)
+		return;
+	function getVisib(obj){
+		var value = obj.style.visibility;
+		if (!value) {
+			if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
+				if (!Calendar.is_khtml)
+					value = document.defaultView.
+						getComputedStyle(obj, "").getPropertyValue("visibility");
+				else
+					value = '';
+			} else if (obj.currentStyle) { // IE
+				value = obj.currentStyle.visibility;
+			} else
+				value = '';
+		}
+		return value;
+	};
+
+	var tags = new Array("applet", "iframe", "select");
+	var el = this.element;
+
+	var p = Calendar.getAbsolutePos(el);
+	var EX1 = p.x;
+	var EX2 = el.offsetWidth + EX1;
+	var EY1 = p.y;
+	var EY2 = el.offsetHeight + EY1;
+
+	for (var k = tags.length; k > 0; ) {
+		var ar = document.getElementsByTagName(tags[--k]);
+		var cc = null;
+
+		for (var i = ar.length; i > 0;) {
+			cc = ar[--i];
+
+			p = Calendar.getAbsolutePos(cc);
+			var CX1 = p.x;
+			var CX2 = cc.offsetWidth + CX1;
+			var CY1 = p.y;
+			var CY2 = cc.offsetHeight + CY1;
+
+			if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
+				if (!cc.__msh_save_visibility) {
+					cc.__msh_save_visibility = getVisib(cc);
+				}
+				cc.style.visibility = cc.__msh_save_visibility;
+			} else {
+				if (!cc.__msh_save_visibility) {
+					cc.__msh_save_visibility = getVisib(cc);
+				}
+				cc.style.visibility = "hidden";
+			}
+		}
+	}
+};
+
+/** Internal function; it displays the bar with the names of the weekday. */
+Calendar.prototype._displayWeekdays = function () {
+	var fdow = this.firstDayOfWeek;
+	var cell = this.firstdayname;
+	var weekend = Calendar._TT["WEEKEND"];
+	for (var i = 0; i < 7; ++i) {
+		cell.className = "day name";
+		var realday = (i + fdow) % 7;
+		if (i) {
+			cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
+			cell.navtype = 100;
+			cell.calendar = this;
+			cell.fdow = realday;
+			Calendar._add_evs(cell);
+		}
+		if (weekend.indexOf(realday.toString()) != -1) {
+			Calendar.addClass(cell, "weekend");
+		}
+		cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
+		cell = cell.nextSibling;
+	}
+};
+
+/** Internal function.  Hides all combo boxes that might be displayed. */
+Calendar.prototype._hideCombos = function () {
+	this.monthsCombo.style.display = "none";
+	this.yearsCombo.style.display = "none";
+};
+
+/** Internal function.  Starts dragging the element. */
+Calendar.prototype._dragStart = function (ev) {
+	if (this.dragging) {
+		return;
+	}
+	this.dragging = true;
+	var posX;
+	var posY;
+	if (Calendar.is_ie) {
+		posY = window.event.clientY + document.body.scrollTop;
+		posX = window.event.clientX + document.body.scrollLeft;
+	} else {
+		posY = ev.clientY + window.scrollY;
+		posX = ev.clientX + window.scrollX;
+	}
+	var st = this.element.style;
+	this.xOffs = posX - parseInt(st.left);
+	this.yOffs = posY - parseInt(st.top);
+	with (Calendar) {
+		addEvent(document, "mousemove", calDragIt);
+		addEvent(document, "mouseup", calDragEnd);
+	}
+};
+
+// BEGIN: DATE OBJECT PATCHES
+
+/** Adds the number of days array to the Date object. */
+Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
+
+/** Constants used for time computations */
+Date.SECOND = 1000 /* milliseconds */;
+Date.MINUTE = 60 * Date.SECOND;
+Date.HOUR   = 60 * Date.MINUTE;
+Date.DAY    = 24 * Date.HOUR;
+Date.WEEK   =  7 * Date.DAY;
+
+Date.parseDate = function(str, fmt) {
+	var today = new Date();
+	var y = 0;
+	var m = -1;
+	var d = 0;
+	var a = str.split(/\W+/);
+	var b = fmt.match(/%./g);
+	var i = 0, j = 0;
+	var hr = 0;
+	var min = 0;
+	for (i = 0; i < a.length; ++i) {
+		if (!a[i])
+			continue;
+		switch (b[i]) {
+		    case "%d":
+		    case "%e":
+			d = parseInt(a[i], 10);
+			break;
+
+		    case "%m":
+			m = parseInt(a[i], 10) - 1;
+			break;
+
+		    case "%Y":
+		    case "%y":
+			y = parseInt(a[i], 10);
+			(y < 100) && (y += (y > 29) ? 1900 : 2000);
+			break;
+
+		    case "%b":
+		    case "%B":
+			for (j = 0; j < 12; ++j) {
+				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
+			}
+			break;
+
+		    case "%H":
+		    case "%I":
+		    case "%k":
+		    case "%l":
+			hr = parseInt(a[i], 10);
+			break;
+
+		    case "%P":
+		    case "%p":
+			if (/pm/i.test(a[i]) && hr < 12)
+				hr += 12;
+			else if (/am/i.test(a[i]) && hr >= 12)
+				hr -= 12;
+			break;
+
+		    case "%M":
+			min = parseInt(a[i], 10);
+			break;
+		}
+	}
+	if (isNaN(y)) y = today.getFullYear();
+	if (isNaN(m)) m = today.getMonth();
+	if (isNaN(d)) d = today.getDate();
+	if (isNaN(hr)) hr = today.getHours();
+	if (isNaN(min)) min = today.getMinutes();
+	if (y != 0 && m != -1 && d != 0)
+		return new Date(y, m, d, hr, min, 0);
+	y = 0; m = -1; d = 0;
+	for (i = 0; i < a.length; ++i) {
+		if (a[i].search(/[a-zA-Z]+/) != -1) {
+			var t = -1;
+			for (j = 0; j < 12; ++j) {
+				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
+			}
+			if (t != -1) {
+				if (m != -1) {
+					d = m+1;
+				}
+				m = t;
+			}
+		} else if (parseInt(a[i], 10) <= 12 && m == -1) {
+			m = a[i]-1;
+		} else if (parseInt(a[i], 10) > 31 && y == 0) {
+			y = parseInt(a[i], 10);
+			(y < 100) && (y += (y > 29) ? 1900 : 2000);
+		} else if (d == 0) {
+			d = a[i];
+		}
+	}
+	if (y == 0)
+		y = today.getFullYear();
+	if (m != -1 && d != 0)
+		return new Date(y, m, d, hr, min, 0);
+	return today;
+};
+
+/** Returns the number of days in the current month */
+Date.prototype.getMonthDays = function(month) {
+	var year = this.getFullYear();
+	if (typeof month == "undefined") {
+		month = this.getMonth();
+	}
+	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
+		return 29;
+	} else {
+		return Date._MD[month];
+	}
+};
+
+/** Returns the number of day in the year. */
+Date.prototype.getDayOfYear = function() {
+	var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
+	var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
+	var time = now - then;
+	return Math.floor(time / Date.DAY);
+};
+
+/** Returns the number of the week in year, as defined in ISO 8601. */
+Date.prototype.getWeekNumber = function() {
+	var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
+	var DoW = d.getDay();
+	d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
+	var ms = d.valueOf(); // GMT
+	d.setMonth(0);
+	d.setDate(4); // Thu in Week 1
+	return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
+};
+
+/** Checks date and time equality */
+Date.prototype.equalsTo = function(date) {
+	return ((this.getFullYear() == date.getFullYear()) &&
+		(this.getMonth() == date.getMonth()) &&
+		(this.getDate() == date.getDate()) &&
+		(this.getHours() == date.getHours()) &&
+		(this.getMinutes() == date.getMinutes()));
+};
+
+/** Set only the year, month, date parts (keep existing time) */
+Date.prototype.setDateOnly = function(date) {
+	var tmp = new Date(date);
+	this.setDate(1);
+	this.setFullYear(tmp.getFullYear());
+	this.setMonth(tmp.getMonth());
+	this.setDate(tmp.getDate());
+};
+
+/** Prints the date in a string according to the given format. */
+Date.prototype.print = function (str) {
+	var m = this.getMonth();
+	var d = this.getDate();
+	var y = this.getFullYear();
+	var wn = this.getWeekNumber();
+	var w = this.getDay();
+	var s = {};
+	var hr = this.getHours();
+	var pm = (hr >= 12);
+	var ir = (pm) ? (hr - 12) : hr;
+	var dy = this.getDayOfYear();
+	if (ir == 0)
+		ir = 12;
+	var min = this.getMinutes();
+	var sec = this.getSeconds();
+	s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N]
+	s["%A"] = Calendar._DN[w]; // full weekday name
+	s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N]
+	s["%B"] = Calendar._MN[m]; // full month name
+	// FIXME: %c : preferred date and time representation for the current locale
+	s["%C"] = 1 + Math.floor(y / 100); // the century number
+	s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31)
+	s["%e"] = d; // the day of the month (range 1 to 31)
+	// FIXME: %D : american date style: %m/%d/%y
+	// FIXME: %E, %F, %G, %g, %h (man strftime)
+	s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format)
+	s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format)
+	s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366)
+	s["%k"] = hr;		// hour, range 0 to 23 (24h format)
+	s["%l"] = ir;		// hour, range 1 to 12 (12h format)
+	s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12
+	s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59
+	s["%n"] = "\n";		// a newline character
+	s["%p"] = pm ? "PM" : "AM";
+	s["%P"] = pm ? "pm" : "am";
+	// FIXME: %r : the time in am/pm notation %I:%M:%S %p
+	// FIXME: %R : the time in 24-hour notation %H:%M
+	s["%s"] = Math.floor(this.getTime() / 1000);
+	s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59
+	s["%t"] = "\t";		// a tab character
+	// FIXME: %T : the time in 24-hour notation (%H:%M:%S)
+	s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
+	s["%u"] = w + 1;	// the day of the week (range 1 to 7, 1 = MON)
+	s["%w"] = w;		// the day of the week (range 0 to 6, 0 = SUN)
+	// FIXME: %x : preferred date representation for the current locale without the time
+	// FIXME: %X : preferred time representation for the current locale without the date
+	s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99)
+	s["%Y"] = y;		// year with the century
+	s["%%"] = "%";		// a literal '%' character
+
+	var re = /%./g;
+	if (!Calendar.is_ie5 && !Calendar.is_khtml)
+		return str.replace(re, function (par) { return s[par] || par; });
+
+	var a = str.match(re);
+	for (var i = 0; i < a.length; i++) {
+		var tmp = s[a[i]];
+		if (tmp) {
+			re = new RegExp(a[i], 'g');
+			str = str.replace(re, tmp);
+		}
+	}
+
+	return str;
+};
+
+Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
+Date.prototype.setFullYear = function(y) {
+	var d = new Date(this);
+	d.__msh_oldSetFullYear(y);
+	if (d.getMonth() != this.getMonth())
+		this.setDate(28);
+	this.__msh_oldSetFullYear(y);
+};
+
+// END: DATE OBJECT PATCHES
+
+
+// global object that remembers the calendar
+window._dynarch_popupCalendar = null;

Deleted: plog/trunk/js/jscalendar/calendar.php
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,119 +0,0 @@
-<?php
-
-/**
- *  File: calendar.php | (c) dynarch.com 2004
- *  Distributed as part of "The Coolest DHTML Calendar"
- *  under the same terms.
- *  -----------------------------------------------------------------
- *  This file implements a simple PHP wrapper for the calendar.  It
- *  allows you to easily include all the calendar files and setup the
- *  calendar by instantiating and calling a PHP object.
- */
-
-define('NEWLINE', "\n");
-
-class DHTML_Calendar {
-    var $calendar_lib_path;
-
-    var $calendar_file;
-    var $calendar_lang_file;
-    var $calendar_setup_file;
-    var $calendar_theme_file;
-    var $calendar_options;
-
-    function DHTML_Calendar($calendar_lib_path = '/calendar/',
-                            $lang              = 'en',
-                            $theme             = 'calendar-win2k-1',
-                            $stripped          = true) {
-        if ($stripped) {
-            $this->calendar_file = 'calendar_stripped.js';
-            $this->calendar_setup_file = 'calendar-setup_stripped.js';
-        } else {
-            $this->calendar_file = 'calendar.js';
-            $this->calendar_setup_file = 'calendar-setup.js';
-        }
-        $this->calendar_lang_file = 'lang/calendar-' . $lang . '.js';
-        $this->calendar_theme_file = $theme.'.css';
-        $this->calendar_lib_path = preg_replace('/\/+$/', '/', $calendar_lib_path);
-        $this->calendar_options = array('ifFormat' => '%Y/%m/%d',
-                                        'daFormat' => '%Y/%m/%d');
-    }
-
-    function set_option($name, $value) {
-        $this->calendar_options[$name] = $value;
-    }
-
-    function load_files() {
-        echo $this->get_load_files_code();
-    }
-
-    function get_load_files_code() {
-        $code  = ( '<link rel="stylesheet" type="text/css" media="all" href="' .
-                   $this->calendar_lib_path . $this->calendar_theme_file .
-                   '" />' . NEWLINE );
-        $code .= ( '<script type="text/javascript" src="' .
-                   $this->calendar_lib_path . $this->calendar_file .
-                   '"></script>' . NEWLINE );
-        $code .= ( '<script type="text/javascript" src="' .
-                   $this->calendar_lib_path . $this->calendar_lang_file .
-                   '"></script>' . NEWLINE );
-        $code .= ( '<script type="text/javascript" src="' .
-                   $this->calendar_lib_path . $this->calendar_setup_file .
-                   '"></script>' );
-        return $code;
-    }
-
-    function _make_calendar($other_options = array()) {
-        $js_options = $this->_make_js_hash(array_merge($this->calendar_options, $other_options));
-        $code  = ( '<script type="text/javascript">Calendar.setup({' .
-                   $js_options .
-                   '});</script>' );
-        return $code;
-    }
-
-    function make_input_field($cal_options = array(), $field_attributes = array()) {
-        $id = $this->_gen_id();
-        $attrstr = $this->_make_html_attr(array_merge($field_attributes,
-                                                      array('id'   => $this->_field_id($id),
-                                                            'type' => 'text')));
-        echo '<input ' . $attrstr .'/>';
-        echo '<a href="#" id="'. $this->_trigger_id($id) . '">' .
-            '<img align="middle" border="0" src="' . $this->calendar_lib_path . 'img.gif" alt="" /></a>';
-
-        $options = array_merge($cal_options,
-                               array('inputField' => $this->_field_id($id),
-                                     'button'     => $this->_trigger_id($id)));
-        echo $this->_make_calendar($options);
-    }
-
-    /// PRIVATE SECTION
-
-    function _field_id($id) { return 'f-calendar-field-' . $id; }
-    function _trigger_id($id) { return 'f-calendar-trigger-' . $id; }
-    function _gen_id() { static $id = 0; return ++$id; }
-
-    function _make_js_hash($array) {
-        $jstr = '';
-        reset($array);
-        while (list($key, $val) = each($array)) {
-            if (is_bool($val))
-                $val = $val ? 'true' : 'false';
-            else if (!is_numeric($val))
-                $val = '"'.$val.'"';
-            if ($jstr) $jstr .= ',';
-            $jstr .= '"' . $key . '":' . $val;
-        }
-        return $jstr;
-    }
-
-    function _make_html_attr($array) {
-        $attrstr = '';
-        reset($array);
-        while (list($key, $val) = each($array)) {
-            $attrstr .= $key . '="' . $val . '" ';
-        }
-        return $attrstr;
-    }
-};
-
-?>
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/calendar.php (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar.php)
===================================================================
--- plog/trunk/js/jscalendar/calendar.php	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ *  File: calendar.php | (c) dynarch.com 2004
+ *  Distributed as part of "The Coolest DHTML Calendar"
+ *  under the same terms.
+ *  -----------------------------------------------------------------
+ *  This file implements a simple PHP wrapper for the calendar.  It
+ *  allows you to easily include all the calendar files and setup the
+ *  calendar by instantiating and calling a PHP object.
+ */
+
+define('NEWLINE', "\n");
+
+class DHTML_Calendar {
+    var $calendar_lib_path;
+
+    var $calendar_file;
+    var $calendar_lang_file;
+    var $calendar_setup_file;
+    var $calendar_theme_file;
+    var $calendar_options;
+
+    function DHTML_Calendar($calendar_lib_path = '/calendar/',
+                            $lang              = 'en',
+                            $theme             = 'calendar-win2k-1',
+                            $stripped          = true) {
+        if ($stripped) {
+            $this->calendar_file = 'calendar_stripped.js';
+            $this->calendar_setup_file = 'calendar-setup_stripped.js';
+        } else {
+            $this->calendar_file = 'calendar.js';
+            $this->calendar_setup_file = 'calendar-setup.js';
+        }
+        $this->calendar_lang_file = 'lang/calendar-' . $lang . '.js';
+        $this->calendar_theme_file = $theme.'.css';
+        $this->calendar_lib_path = preg_replace('/\/+$/', '/', $calendar_lib_path);
+        $this->calendar_options = array('ifFormat' => '%Y/%m/%d',
+                                        'daFormat' => '%Y/%m/%d');
+    }
+
+    function set_option($name, $value) {
+        $this->calendar_options[$name] = $value;
+    }
+
+    function load_files() {
+        echo $this->get_load_files_code();
+    }
+
+    function get_load_files_code() {
+        $code  = ( '<link rel="stylesheet" type="text/css" media="all" href="' .
+                   $this->calendar_lib_path . $this->calendar_theme_file .
+                   '" />' . NEWLINE );
+        $code .= ( '<script type="text/javascript" src="' .
+                   $this->calendar_lib_path . $this->calendar_file .
+                   '"></script>' . NEWLINE );
+        $code .= ( '<script type="text/javascript" src="' .
+                   $this->calendar_lib_path . $this->calendar_lang_file .
+                   '"></script>' . NEWLINE );
+        $code .= ( '<script type="text/javascript" src="' .
+                   $this->calendar_lib_path . $this->calendar_setup_file .
+                   '"></script>' );
+        return $code;
+    }
+
+    function _make_calendar($other_options = array()) {
+        $js_options = $this->_make_js_hash(array_merge($this->calendar_options, $other_options));
+        $code  = ( '<script type="text/javascript">Calendar.setup({' .
+                   $js_options .
+                   '});</script>' );
+        return $code;
+    }
+
+    function make_input_field($cal_options = array(), $field_attributes = array()) {
+        $id = $this->_gen_id();
+        $attrstr = $this->_make_html_attr(array_merge($field_attributes,
+                                                      array('id'   => $this->_field_id($id),
+                                                            'type' => 'text')));
+        echo '<input ' . $attrstr .'/>';
+        echo '<a href="#" id="'. $this->_trigger_id($id) . '">' .
+            '<img align="middle" border="0" src="' . $this->calendar_lib_path . 'img.gif" alt="" /></a>';
+
+        $options = array_merge($cal_options,
+                               array('inputField' => $this->_field_id($id),
+                                     'button'     => $this->_trigger_id($id)));
+        echo $this->_make_calendar($options);
+    }
+
+    /// PRIVATE SECTION
+
+    function _field_id($id) { return 'f-calendar-field-' . $id; }
+    function _trigger_id($id) { return 'f-calendar-trigger-' . $id; }
+    function _gen_id() { static $id = 0; return ++$id; }
+
+    function _make_js_hash($array) {
+        $jstr = '';
+        reset($array);
+        while (list($key, $val) = each($array)) {
+            if (is_bool($val))
+                $val = $val ? 'true' : 'false';
+            else if (!is_numeric($val))
+                $val = '"'.$val.'"';
+            if ($jstr) $jstr .= ',';
+            $jstr .= '"' . $key . '":' . $val;
+        }
+        return $jstr;
+    }
+
+    function _make_html_attr($array) {
+        $attrstr = '';
+        reset($array);
+        while (list($key, $val) = each($array)) {
+            $attrstr .= $key . '="' . $val . '" ';
+        }
+        return $attrstr;
+    }
+};
+
+?>
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/calendar_stripped.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/calendar_stripped.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/calendar_stripped.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,14 +0,0 @@
-/*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
- * -----------------------------------------------------------
- *
- * The DHTML Calendar, version 1.0 "It is happening again"
- *
- * Details and latest version at:
- * www.dynarch.com/projects/calendar
- *
- * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
- *
- * This script is distributed under the GNU Lesser General Public License.
- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
- */
- Calendar=function(firstDayOfWeek,dateStr,onSelected,onClose){this.activeDiv=null;this.currentDateEl=null;this.getDateStatus=null;this.getDateToolTip=null;this.getDateText=null;this.timeout=null;this.onSelected=onSelected||null;this.onClose=onClose||null;this.dragging=false;this.hidden=false;this.minYear=1970;this.maxYear=2050;this.dateFormat=Calendar._TT["DEF_DATE_FORMAT"];this.ttDateFormat=Calendar._TT["TT_DATE_FORMAT"];this.isPopup=true;this.weekNumbers=true;this.firstDayOfWeek=typeof firstDayOfWeek=="number"?firstDayOfWeek:Calendar._FD;this.showsOtherMonths=false;this.dateStr=dateStr;this.ar_days=null;this.showsTime=false;this.time24=true;this.yearStep=2;this.hiliteToday=true;this.multiple=null;this.table=null;this.element=null;this.tbody=null;this.firstdayname=null;this.monthsCombo=null;this.yearsCombo=null;this.hilitedMonth=null;this.activeMonth=null;this.hilitedYear=null;this.activeYear=null;this.dateClicked=false;if(typeof Calendar._SDN=="undefined"){if(typeof Calend
 ar._SDN_len=="undefined")Calendar._SDN_len=3;var ar=new Array();for(var i=8;i>0;){ar[--i]=Calendar._DN[i].substr(0,Calendar._SDN_len);}Calendar._SDN=ar;if(typeof Calendar._SMN_len=="undefined")Calendar._SMN_len=3;ar=new Array();for(var i=12;i>0;){ar[--i]=Calendar._MN[i].substr(0,Calendar._SMN_len);}Calendar._SMN=ar;}};Calendar._C=null;Calendar.is_ie=(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));Calendar.is_ie5=(Calendar.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Calendar.is_opera=/opera/i.test(navigator.userAgent);Calendar.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Calendar.getAbsolutePos=function(el){var SL=0,ST=0;var is_div=/^div$/i.test(el.tagName);if(is_div&&el.scrollLeft)SL=el.scrollLeft;if(is_div&&el.scrollTop)ST=el.scrollTop;var r={x:el.offsetLeft-SL,y:el.offsetTop-ST};if(el.offsetParent){var tmp=this.getAbsolutePos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;}return r;};Calendar.isRelated=function(el,evt){var related=evt.re
 latedTarget;if(!related){var type=evt.type;if(type=="mouseover"){related=evt.fromElement;}else if(type=="mouseout"){related=evt.toElement;}}while(related){if(related==el){return true;}related=related.parentNode;}return false;};Calendar.removeClass=function(el,className){if(!(el&&el.className)){return;}var cls=el.className.split(" ");var ar=new Array();for(var i=cls.length;i>0;){if(cls[--i]!=className){ar[ar.length]=cls[i];}}el.className=ar.join(" ");};Calendar.addClass=function(el,className){Calendar.removeClass(el,className);el.className+=" "+className;};Calendar.getElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.currentTarget;while(f.nodeType!=1||/^div$/i.test(f.tagName))f=f.parentNode;return f;};Calendar.getTargetElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.target;while(f.nodeType!=1)f=f.parentNode;return f;};Calendar.stopEvent=function(ev){ev||(ev=window.event);if(Calendar.is_ie){ev.cancelBubble=true;ev.returnValue=false;}else
 {ev.preventDefault();ev.stopPropagation();}return false;};Calendar.addEvent=function(el,evname,func){if(el.attachEvent){el.attachEvent("on"+evname,func);}else if(el.addEventListener){el.addEventListener(evname,func,true);}else{el["on"+evname]=func;}};Calendar.removeEvent=function(el,evname,func){if(el.detachEvent){el.detachEvent("on"+evname,func);}else if(el.removeEventListener){el.removeEventListener(evname,func,true);}else{el["on"+evname]=null;}};Calendar.createElement=function(type,parent){var el=null;if(document.createElementNS){el=document.createElementNS("http://www.w3.org/1999/xhtml",type);}else{el=document.createElement(type);}if(typeof parent!="undefined"){parent.appendChild(el);}return el;};Calendar._add_evs=function(el){with(Calendar){addEvent(el,"mouseover",dayMouseOver);addEvent(el,"mousedown",dayMouseDown);addEvent(el,"mouseout",dayMouseOut);if(is_ie){addEvent(el,"dblclick",dayMouseDblClick);el.setAttribute("unselectable",true);}}};Calendar.findMonth=function(e
 l){if(typeof el.month!="undefined"){return el;}else if(typeof el.parentNode.month!="undefined"){return el.parentNode;}return null;};Calendar.findYear=function(el){if(typeof el.year!="undefined"){return el;}else if(typeof el.parentNode.year!="undefined"){return el.parentNode;}return null;};Calendar.showMonthsCombo=function(){var cal=Calendar._C;if(!cal){return false;}var cal=cal;var cd=cal.activeDiv;var mc=cal.monthsCombo;if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}if(cal.activeMonth){Calendar.removeClass(cal.activeMonth,"active");}var mon=cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];Calendar.addClass(mon,"active");cal.activeMonth=mon;var s=mc.style;s.display="block";if(cd.navtype<0)s.left=cd.offsetLeft+"px";else{var mcw=mc.offsetWidth;if(typeof mcw=="undefined")mcw=50;s.left=(cd.offsetLeft+cd.offsetWidth-mcw)+"px";}s.top=(cd.offsetTop+cd.offsetHeight)+"px";};Calendar.showYearsCombo=function(fwd){var cal=Calendar._C;if(!cal){retur
 n false;}var cal=cal;var cd=cal.activeDiv;var yc=cal.yearsCombo;if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}if(cal.activeYear){Calendar.removeClass(cal.activeYear,"active");}cal.activeYear=null;var Y=cal.date.getFullYear()+(fwd?1:-1);var yr=yc.firstChild;var show=false;for(var i=12;i>0;--i){if(Y>=cal.minYear&&Y<=cal.maxYear){yr.innerHTML=Y;yr.year=Y;yr.style.display="block";show=true;}else{yr.style.display="none";}yr=yr.nextSibling;Y+=fwd?cal.yearStep:-cal.yearStep;}if(show){var s=yc.style;s.display="block";if(cd.navtype<0)s.left=cd.offsetLeft+"px";else{var ycw=yc.offsetWidth;if(typeof ycw=="undefined")ycw=50;s.left=(cd.offsetLeft+cd.offsetWidth-ycw)+"px";}s.top=(cd.offsetTop+cd.offsetHeight)+"px";}};Calendar.tableMouseUp=function(ev){var cal=Calendar._C;if(!cal){return false;}if(cal.timeout){clearTimeout(cal.timeout);}var el=cal.activeDiv;if(!el){return false;}var target=Calendar.getTargetElement(ev);ev||(ev=window.event);Calendar.removeClass(el,"act
 ive");if(target==el||target.parentNode==el){Calendar.cellClick(el,ev);}var mon=Calendar.findMonth(target);var date=null;if(mon){date=new Date(cal.date);if(mon.month!=date.getMonth()){date.setMonth(mon.month);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}else{var year=Calendar.findYear(target);if(year){date=new Date(cal.date);if(year.year!=date.getFullYear()){date.setFullYear(year.year);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}}with(Calendar){removeEvent(document,"mouseup",tableMouseUp);removeEvent(document,"mouseover",tableMouseOver);removeEvent(document,"mousemove",tableMouseOver);cal._hideCombos();_C=null;return stopEvent(ev);}};Calendar.tableMouseOver=function(ev){var cal=Calendar._C;if(!cal){return;}var el=cal.activeDiv;var target=Calendar.getTargetElement(ev);if(target==el||target.parentNode==el){Calendar.addClass(el,"hilite active");Calendar.addClass(el.parentNode,"rowhilite");}else{if(typeof el.navtype=="undefined"||(el.navtype!=50&&(e
 l.navtype==0||Math.abs(el.navtype)>2)))Calendar.removeClass(el,"active");Calendar.removeClass(el,"hilite");Calendar.removeClass(el.parentNode,"rowhilite");}ev||(ev=window.event);if(el.navtype==50&&target!=el){var pos=Calendar.getAbsolutePos(el);var w=el.offsetWidth;var x=ev.clientX;var dx;var decrease=true;if(x>pos.x+w){dx=x-pos.x-w;decrease=false;}else dx=pos.x-x;if(dx<0)dx=0;var range=el._range;var current=el._current;var count=Math.floor(dx/10)%range.length;for(var i=range.length;--i>=0;)if(range[i]==current)break;while(count-->0)if(decrease){if(--i<0)i=range.length-1;}else if(++i>=range.length)i=0;var newval=range[i];el.innerHTML=newval;cal.onUpdateTime();}var mon=Calendar.findMonth(target);if(mon){if(mon.month!=cal.date.getMonth()){if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}Calendar.addClass(mon,"hilite");cal.hilitedMonth=mon;}else if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}}else{if(cal.hilitedMonth){Calendar.removeC
 lass(cal.hilitedMonth,"hilite");}var year=Calendar.findYear(target);if(year){if(year.year!=cal.date.getFullYear()){if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}Calendar.addClass(year,"hilite");cal.hilitedYear=year;}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}return Calendar.stopEvent(ev);};Calendar.tableMouseDown=function(ev){if(Calendar.getTargetElement(ev)==Calendar.getElement(ev)){return Calendar.stopEvent(ev);}};Calendar.calDragIt=function(ev){var cal=Calendar._C;if(!(cal&&cal.dragging)){return false;}var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posX=ev.pageX;posY=ev.pageY;}cal.hideShowCovered();var st=cal.element.style;st.left=(posX-cal.xOffs)+"px";st.top=(posY-cal.yOffs)+"px";return Calendar.stopEvent(ev);};Calendar.calDragEnd=function(ev){var cal
 =Calendar._C;if(!cal){return false;}cal.dragging=false;with(Calendar){removeEvent(document,"mousemove",calDragIt);removeEvent(document,"mouseup",calDragEnd);tableMouseUp(ev);}cal.hideShowCovered();};Calendar.dayMouseDown=function(ev){var el=Calendar.getElement(ev);if(el.disabled){return false;}var cal=el.calendar;cal.activeDiv=el;Calendar._C=cal;if(el.navtype!=300)with(Calendar){if(el.navtype==50){el._current=el.innerHTML;addEvent(document,"mousemove",tableMouseOver);}else addEvent(document,Calendar.is_ie5?"mousemove":"mouseover",tableMouseOver);addClass(el,"hilite active");addEvent(document,"mouseup",tableMouseUp);}else if(cal.isPopup){cal._dragStart(ev);}if(el.navtype==-1||el.navtype==1){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout("Calendar.showMonthsCombo()",250);}else if(el.navtype==-2||el.navtype==2){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout((el.navtype>0)?"Calendar.showYearsCombo(true)":"Calendar.showYearsCombo(false)",250);}el
 se{cal.timeout=null;}return Calendar.stopEvent(ev);};Calendar.dayMouseDblClick=function(ev){Calendar.cellClick(Calendar.getElement(ev),ev||window.event);if(Calendar.is_ie){document.selection.empty();}};Calendar.dayMouseOver=function(ev){var el=Calendar.getElement(ev);if(Calendar.isRelated(el,ev)||Calendar._C||el.disabled){return false;}if(el.ttip){if(el.ttip.substr(0,1)=="_"){el.ttip=el.caldate.print(el.calendar.ttDateFormat)+el.ttip.substr(1);}el.calendar.tooltips.innerHTML=el.ttip;}if(el.navtype!=300){Calendar.addClass(el,"hilite");if(el.caldate){Calendar.addClass(el.parentNode,"rowhilite");}}return Calendar.stopEvent(ev);};Calendar.dayMouseOut=function(ev){with(Calendar){var el=getElement(ev);if(isRelated(el,ev)||_C||el.disabled)return false;removeClass(el,"hilite");if(el.caldate)removeClass(el.parentNode,"rowhilite");if(el.calendar)el.calendar.tooltips.innerHTML=_TT["SEL_DATE"];return stopEvent(ev);}};Calendar.cellClick=function(el,ev){var cal=el.calendar;var closing=fal
 se;var newdate=false;var date=null;if(typeof el.navtype=="undefined"){if(cal.currentDateEl){Calendar.removeClass(cal.currentDateEl,"selected");Calendar.addClass(el,"selected");closing=(cal.currentDateEl==el);if(!closing){cal.currentDateEl=el;}}cal.date.setDateOnly(el.caldate);date=cal.date;var other_month=!(cal.dateClicked=!el.otherMonth);if(!other_month&&!cal.currentDateEl)cal._toggleMultipleDate(new Date(date));else newdate=!el.disabled;if(other_month)cal._init(cal.firstDayOfWeek,date);}else{if(el.navtype==200){Calendar.removeClass(el,"hilite");cal.callCloseHandler();return;}date=new Date(cal.date);if(el.navtype==0)date.setDateOnly(new Date());cal.dateClicked=false;var year=date.getFullYear();var mon=date.getMonth();function setMonth(m){var day=date.getDate();var max=date.getMonthDays(m);if(day>max){date.setDate(max);}date.setMonth(m);};switch(el.navtype){case 400:Calendar.removeClass(el,"hilite");var text=Calendar._TT["ABOUT"];if(typeof text!="undefined"){text+=cal.showsT
 ime?Calendar._TT["ABOUT_TIME"]:"";}else{text="Help and about box text is not translated into this language.\n"+"If you know this language and you feel generous please update\n"+"the corresponding file in \"lang\" subdir to match calendar-en.js\n"+"and send it back to <mihai_bazon at yahoo.com> to get it into the distribution  ;-)\n\n"+"Thank you!\n"+"http://dynarch.com/mishoo/calendar.epl\n";}alert(text);return;case-2:if(year>cal.minYear){date.setFullYear(year-1);}break;case-1:if(mon>0){setMonth(mon-1);}else if(year-->cal.minYear){date.setFullYear(year);setMonth(11);}break;case 1:if(mon<11){setMonth(mon+1);}else if(year<cal.maxYear){date.setFullYear(year+1);setMonth(0);}break;case 2:if(year<cal.maxYear){date.setFullYear(year+1);}break;case 100:cal.setFirstDayOfWeek(el.fdow);return;case 50:var range=el._range;var current=el.innerHTML;for(var i=range.length;--i>=0;)if(range[i]==current)break;if(ev&&ev.shiftKey){if(--i<0)i=range.length-1;}else if(++i>=range.length)i=0;var newval=r
 ange[i];el.innerHTML=newval;cal.onUpdateTime();return;case 0:if((typeof cal.getDateStatus=="function")&&cal.getDateStatus(date,date.getFullYear(),date.getMonth(),date.getDate())){return false;}break;}if(!date.equalsTo(cal.date)){cal.setDate(date);newdate=true;}else if(el.navtype==0)newdate=closing=true;}if(newdate){ev&&cal.callHandler();}if(closing){Calendar.removeClass(el,"hilite");ev&&cal.callCloseHandler();}};Calendar.prototype.create=function(_par){var parent=null;if(!_par){parent=document.getElementsByTagName("body")[0];this.isPopup=true;}else{parent=_par;this.isPopup=false;}this.date=this.dateStr?new Date(this.dateStr):new Date();var table=Calendar.createElement("table");this.table=table;table.cellSpacing=0;table.cellPadding=0;table.calendar=this;Calendar.addEvent(table,"mousedown",Calendar.tableMouseDown);var div=Calendar.createElement("div");this.element=div;div.className="calendar";if(this.isPopup){div.style.position="absolute";div.style.display="none";}div.appendCh
 ild(table);var thead=Calendar.createElement("thead",table);var cell=null;var row=null;var cal=this;var hh=function(text,cs,navtype){cell=Calendar.createElement("td",row);cell.colSpan=cs;cell.className="button";if(navtype!=0&&Math.abs(navtype)<=2)cell.className+=" nav";Calendar._add_evs(cell);cell.calendar=cal;cell.navtype=navtype;cell.innerHTML="<div unselectable='on'>"+text+"</div>";return cell;};row=Calendar.createElement("tr",thead);var title_length=6;(this.isPopup)&&--title_length;(this.weekNumbers)&&++title_length;hh("?",1,400).ttip=Calendar._TT["INFO"];this.title=hh("",title_length,300);this.title.className="title";if(this.isPopup){this.title.ttip=Calendar._TT["DRAG_TO_MOVE"];this.title.style.cursor="move";hh("&#x00d7;",1,200).ttip=Calendar._TT["CLOSE"];}row=Calendar.createElement("tr",thead);row.className="headrow";this._nav_py=hh("&#x00ab;",1,-2);this._nav_py.ttip=Calendar._TT["PREV_YEAR"];this._nav_pm=hh("&#x2039;",1,-1);this._nav_pm.ttip=Calendar._TT["PREV_MONTH"];
 this._nav_now=hh(Calendar._TT["TODAY"],this.weekNumbers?4:3,0);this._nav_now.ttip=Calendar._TT["GO_TODAY"];this._nav_nm=hh("&#x203a;",1,1);this._nav_nm.ttip=Calendar._TT["NEXT_MONTH"];this._nav_ny=hh("&#x00bb;",1,2);this._nav_ny.ttip=Calendar._TT["NEXT_YEAR"];row=Calendar.createElement("tr",thead);row.className="daynames";if(this.weekNumbers){cell=Calendar.createElement("td",row);cell.className="name wn";cell.innerHTML=Calendar._TT["WK"];}for(var i=7;i>0;--i){cell=Calendar.createElement("td",row);if(!i){cell.navtype=100;cell.calendar=this;Calendar._add_evs(cell);}}this.firstdayname=(this.weekNumbers)?row.firstChild.nextSibling:row.firstChild;this._displayWeekdays();var tbody=Calendar.createElement("tbody",table);this.tbody=tbody;for(i=6;i>0;--i){row=Calendar.createElement("tr",tbody);if(this.weekNumbers){cell=Calendar.createElement("td",row);}for(var j=7;j>0;--j){cell=Calendar.createElement("td",row);cell.calendar=this;Calendar._add_evs(cell);}}if(this.showsTime){row=Calenda
 r.createElement("tr",tbody);row.className="time";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;cell.innerHTML=Calendar._TT["TIME"]||"&nbsp;";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=this.weekNumbers?4:3;(function(){function makeTimePart(className,init,range_start,range_end){var part=Calendar.createElement("span",cell);part.className=className;part.innerHTML=init;part.calendar=cal;part.ttip=Calendar._TT["TIME_PART"];part.navtype=50;part._range=[];if(typeof range_start!="number")part._range=range_start;else{for(var i=range_start;i<=range_end;++i){var txt;if(i<10&&range_end>=10)txt='0'+i;else txt=''+i;part._range[part._range.length]=txt;}}Calendar._add_evs(part);return part;};var hrs=cal.date.getHours();var mins=cal.date.getMinutes();var t12=!cal.time24;var pm=(hrs>12);if(t12&&pm)hrs-=12;var H=makeTimePart("hour",hrs,t12?1:0,t12?12:23);var span=Calendar.createElement("span",cell);span.innerHTML=":";span.className="col
 on";var M=makeTimePart("minute",mins,0,59);var AP=null;cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;if(t12)AP=makeTimePart("ampm",pm?"pm":"am",["am","pm"]);else cell.innerHTML="&nbsp;";cal.onSetTime=function(){var pm,hrs=this.date.getHours(),mins=this.date.getMinutes();if(t12){pm=(hrs>=12);if(pm)hrs-=12;if(hrs==0)hrs=12;AP.innerHTML=pm?"pm":"am";}H.innerHTML=(hrs<10)?("0"+hrs):hrs;M.innerHTML=(mins<10)?("0"+mins):mins;};cal.onUpdateTime=function(){var date=this.date;var h=parseInt(H.innerHTML,10);if(t12){if(/pm/i.test(AP.innerHTML)&&h<12)h+=12;else if(/am/i.test(AP.innerHTML)&&h==12)h=0;}var d=date.getDate();var m=date.getMonth();var y=date.getFullYear();date.setHours(h);date.setMinutes(parseInt(M.innerHTML,10));date.setFullYear(y);date.setMonth(m);date.setDate(d);this.dateClicked=false;this.callHandler();};})();}else{this.onSetTime=this.onUpdateTime=function(){};}var tfoot=Calendar.createElement("tfoot",table);row=Calendar.createElement("tr",tf
 oot);row.className="footrow";cell=hh(Calendar._TT["SEL_DATE"],this.weekNumbers?8:7,300);cell.className="ttip";if(this.isPopup){cell.ttip=Calendar._TT["DRAG_TO_MOVE"];cell.style.cursor="move";}this.tooltips=cell;div=Calendar.createElement("div",this.element);this.monthsCombo=div;div.className="combo";for(i=0;i<Calendar._MN.length;++i){var mn=Calendar.createElement("div");mn.className=Calendar.is_ie?"label-IEfix":"label";mn.month=i;mn.innerHTML=Calendar._SMN[i];div.appendChild(mn);}div=Calendar.createElement("div",this.element);this.yearsCombo=div;div.className="combo";for(i=12;i>0;--i){var yr=Calendar.createElement("div");yr.className=Calendar.is_ie?"label-IEfix":"label";div.appendChild(yr);}this._init(this.firstDayOfWeek,this.date);parent.appendChild(this.element);};Calendar._keyEvent=function(ev){var cal=window._dynarch_popupCalendar;if(!cal||cal.multiple)return false;(Calendar.is_ie)&&(ev=window.event);var act=(Calendar.is_ie||ev.type=="keypress"),K=ev.keyCode;if(ev.ctrlKe
 y){switch(K){case 37:act&&Calendar.cellClick(cal._nav_pm);break;case 38:act&&Calendar.cellClick(cal._nav_py);break;case 39:act&&Calendar.cellClick(cal._nav_nm);break;case 40:act&&Calendar.cellClick(cal._nav_ny);break;default:return false;}}else switch(K){case 32:Calendar.cellClick(cal._nav_now);break;case 27:act&&cal.callCloseHandler();break;case 37:case 38:case 39:case 40:if(act){var prev,x,y,ne,el,step;prev=K==37||K==38;step=(K==37||K==39)?1:7;function setVars(){el=cal.currentDateEl;var p=el.pos;x=p&15;y=p>>4;ne=cal.ar_days[y][x];};setVars();function prevMonth(){var date=new Date(cal.date);date.setDate(date.getDate()-step);cal.setDate(date);};function nextMonth(){var date=new Date(cal.date);date.setDate(date.getDate()+step);cal.setDate(date);};while(1){switch(K){case 37:if(--x>=0)ne=cal.ar_days[y][x];else{x=6;K=38;continue;}break;case 38:if(--y>=0)ne=cal.ar_days[y][x];else{prevMonth();setVars();}break;case 39:if(++x<7)ne=cal.ar_days[y][x];else{x=0;K=40;continue;}break;case
  40:if(++y<cal.ar_days.length)ne=cal.ar_days[y][x];else{nextMonth();setVars();}break;}break;}if(ne){if(!ne.disabled)Calendar.cellClick(ne);else if(prev)prevMonth();else nextMonth();}}break;case 13:if(act)Calendar.cellClick(cal.currentDateEl,ev);break;default:return false;}return Calendar.stopEvent(ev);};Calendar.prototype._init=function(firstDayOfWeek,date){var today=new Date(),TY=today.getFullYear(),TM=today.getMonth(),TD=today.getDate();this.table.style.visibility="hidden";var year=date.getFullYear();if(year<this.minYear){year=this.minYear;date.setFullYear(year);}else if(year>this.maxYear){year=this.maxYear;date.setFullYear(year);}this.firstDayOfWeek=firstDayOfWeek;this.date=new Date(date);var month=date.getMonth();var mday=date.getDate();var no_days=date.getMonthDays();date.setDate(1);var day1=(date.getDay()-this.firstDayOfWeek)%7;if(day1<0)day1+=7;date.setDate(-day1);date.setDate(date.getDate()+1);var row=this.tbody.firstChild;var MN=Calendar._SMN[month];var ar_days=this
 .ar_days=new Array();var weekend=Calendar._TT["WEEKEND"];var dates=this.multiple?(this.datesCells={}):null;for(var i=0;i<6;++i,row=row.nextSibling){var cell=row.firstChild;if(this.weekNumbers){cell.className="day wn";cell.innerHTML=date.getWeekNumber();cell=cell.nextSibling;}row.className="daysrow";var hasdays=false,iday,dpos=ar_days[i]=[];for(var j=0;j<7;++j,cell=cell.nextSibling,date.setDate(iday+1)){iday=date.getDate();var wday=date.getDay();cell.className="day";cell.pos=i<<4|j;dpos[j]=cell;var current_month=(date.getMonth()==month);if(!current_month){if(this.showsOtherMonths){cell.className+=" othermonth";cell.otherMonth=true;}else{cell.className="emptycell";cell.innerHTML="&nbsp;";cell.disabled=true;continue;}}else{cell.otherMonth=false;hasdays=true;}cell.disabled=false;cell.innerHTML=this.getDateText?this.getDateText(date,iday):iday;if(dates)dates[date.print("%Y%m%d")]=cell;if(this.getDateStatus){var status=this.getDateStatus(date,year,month,iday);if(this.getDateToolTi
 p){var toolTip=this.getDateToolTip(date,year,month,iday);if(toolTip)cell.title=toolTip;}if(status===true){cell.className+=" disabled";cell.disabled=true;}else{if(/disabled/i.test(status))cell.disabled=true;cell.className+=" "+status;}}if(!cell.disabled){cell.caldate=new Date(date);cell.ttip="_";if(!this.multiple&&current_month&&iday==mday&&this.hiliteToday){cell.className+=" selected";this.currentDateEl=cell;}if(date.getFullYear()==TY&&date.getMonth()==TM&&iday==TD){cell.className+=" today";cell.ttip+=Calendar._TT["PART_TODAY"];}if(weekend.indexOf(wday.toString())!=-1)cell.className+=cell.otherMonth?" oweekend":" weekend";}}if(!(hasdays||this.showsOtherMonths))row.className="emptyrow";}this.title.innerHTML=Calendar._MN[month]+", "+year;this.onSetTime();this.table.style.visibility="visible";this._initMultipleDates();};Calendar.prototype._initMultipleDates=function(){if(this.multiple){for(var i in this.multiple){var cell=this.datesCells[i];var d=this.multiple[i];if(!d)continue
 ;if(cell)cell.className+=" selected";}}};Calendar.prototype._toggleMultipleDate=function(date){if(this.multiple){var ds=date.print("%Y%m%d");var cell=this.datesCells[ds];if(cell){var d=this.multiple[ds];if(!d){Calendar.addClass(cell,"selected");this.multiple[ds]=date;}else{Calendar.removeClass(cell,"selected");delete this.multiple[ds];}}}};Calendar.prototype.setDateToolTipHandler=function(unaryFunction){this.getDateToolTip=unaryFunction;};Calendar.prototype.setDate=function(date){if(!date.equalsTo(this.date)){this._init(this.firstDayOfWeek,date);}};Calendar.prototype.refresh=function(){this._init(this.firstDayOfWeek,this.date);};Calendar.prototype.setFirstDayOfWeek=function(firstDayOfWeek){this._init(firstDayOfWeek,this.date);this._displayWeekdays();};Calendar.prototype.setDateStatusHandler=Calendar.prototype.setDisabledHandler=function(unaryFunction){this.getDateStatus=unaryFunction;};Calendar.prototype.setRange=function(a,z){this.minYear=a;this.maxYear=z;};Calendar.prototy
 pe.callHandler=function(){if(this.onSelected){this.onSelected(this,this.date.print(this.dateFormat));}};Calendar.prototype.callCloseHandler=function(){if(this.onClose){this.onClose(this);}this.hideShowCovered();};Calendar.prototype.destroy=function(){var el=this.element.parentNode;el.removeChild(this.element);Calendar._C=null;window._dynarch_popupCalendar=null;};Calendar.prototype.reparent=function(new_parent){var el=this.element;el.parentNode.removeChild(el);new_parent.appendChild(el);};Calendar._checkCalendar=function(ev){var calendar=window._dynarch_popupCalendar;if(!calendar){return false;}var el=Calendar.is_ie?Calendar.getElement(ev):Calendar.getTargetElement(ev);for(;el!=null&&el!=calendar.element;el=el.parentNode);if(el==null){window._dynarch_popupCalendar.callCloseHandler();return Calendar.stopEvent(ev);}};Calendar.prototype.show=function(){var rows=this.table.getElementsByTagName("tr");for(var i=rows.length;i>0;){var row=rows[--i];Calendar.removeClass(row,"rowhilite
 ");var cells=row.getElementsByTagName("td");for(var j=cells.length;j>0;){var cell=cells[--j];Calendar.removeClass(cell,"hilite");Calendar.removeClass(cell,"active");}}this.element.style.display="block";this.hidden=false;if(this.isPopup){window._dynarch_popupCalendar=this;Calendar.addEvent(document,"keydown",Calendar._keyEvent);Calendar.addEvent(document,"keypress",Calendar._keyEvent);Calendar.addEvent(document,"mousedown",Calendar._checkCalendar);}this.hideShowCovered();};Calendar.prototype.hide=function(){if(this.isPopup){Calendar.removeEvent(document,"keydown",Calendar._keyEvent);Calendar.removeEvent(document,"keypress",Calendar._keyEvent);Calendar.removeEvent(document,"mousedown",Calendar._checkCalendar);}this.element.style.display="none";this.hidden=true;this.hideShowCovered();};Calendar.prototype.showAt=function(x,y){var s=this.element.style;s.left=x+"px";s.top=y+"px";this.show();};Calendar.prototype.showAtElement=function(el,opts){var self=this;var p=Calendar.getAbsolu
 tePos(el);if(!opts||typeof opts!="string"){this.showAt(p.x,p.y+el.offsetHeight);return true;}function fixPosition(box){if(box.x<0)box.x=0;if(box.y<0)box.y=0;var cp=document.createElement("div");var s=cp.style;s.position="absolute";s.right=s.bottom=s.width=s.height="0px";document.body.appendChild(cp);var br=Calendar.getAbsolutePos(cp);document.body.removeChild(cp);if(Calendar.is_ie){br.y+=document.body.scrollTop;br.x+=document.body.scrollLeft;}else{br.y+=window.scrollY;br.x+=window.scrollX;}var tmp=box.x+box.width-br.x;if(tmp>0)box.x-=tmp;tmp=box.y+box.height-br.y;if(tmp>0)box.y-=tmp;};this.element.style.display="block";Calendar.continuation_for_the_fucking_khtml_browser=function(){var w=self.element.offsetWidth;var h=self.element.offsetHeight;self.element.style.display="none";var valign=opts.substr(0,1);var halign="l";if(opts.length>1){halign=opts.substr(1,1);}switch(valign){case "T":p.y-=h;break;case "B":p.y+=el.offsetHeight;break;case "C":p.y+=(el.offsetHeight-h)/2;break;c
 ase "t":p.y+=el.offsetHeight-h;break;case "b":break;}switch(halign){case "L":p.x-=w;break;case "R":p.x+=el.offsetWidth;break;case "C":p.x+=(el.offsetWidth-w)/2;break;case "l":p.x+=el.offsetWidth-w;break;case "r":break;}p.width=w;p.height=h+40;self.monthsCombo.style.display="none";fixPosition(p);self.showAt(p.x,p.y);};if(Calendar.is_khtml)setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()",10);else Calendar.continuation_for_the_fucking_khtml_browser();};Calendar.prototype.setDateFormat=function(str){this.dateFormat=str;};Calendar.prototype.setTtDateFormat=function(str){this.ttDateFormat=str;};Calendar.prototype.parseDate=function(str,fmt){if(!fmt)fmt=this.dateFormat;this.setDate(Date.parseDate(str,fmt));};Calendar.prototype.hideShowCovered=function(){if(!Calendar.is_ie&&!Calendar.is_opera)return;function getVisib(obj){var value=obj.style.visibility;if(!value){if(document.defaultView&&typeof(document.defaultView.getComputedStyle)=="function"){if(!Calendar.is_kht
 ml)value=document.defaultView. getComputedStyle(obj,"").getPropertyValue("visibility");else value='';}else if(obj.currentStyle){value=obj.currentStyle.visibility;}else value='';}return value;};var tags=new Array("applet","iframe","select");var el=this.element;var p=Calendar.getAbsolutePos(el);var EX1=p.x;var EX2=el.offsetWidth+EX1;var EY1=p.y;var EY2=el.offsetHeight+EY1;for(var k=tags.length;k>0;){var ar=document.getElementsByTagName(tags[--k]);var cc=null;for(var i=ar.length;i>0;){cc=ar[--i];p=Calendar.getAbsolutePos(cc);var CX1=p.x;var CX2=cc.offsetWidth+CX1;var CY1=p.y;var CY2=cc.offsetHeight+CY1;if(this.hidden||(CX1>EX2)||(CX2<EX1)||(CY1>EY2)||(CY2<EY1)){if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}cc.style.visibility=cc.__msh_save_visibility;}else{if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}cc.style.visibility="hidden";}}}};Calendar.prototype._displayWeekdays=function(){var fdow=this.firstDayOfWeek;var cell=this.firstdayn
 ame;var weekend=Calendar._TT["WEEKEND"];for(var i=0;i<7;++i){cell.className="day name";var realday=(i+fdow)%7;if(i){cell.ttip=Calendar._TT["DAY_FIRST"].replace("%s",Calendar._DN[realday]);cell.navtype=100;cell.calendar=this;cell.fdow=realday;Calendar._add_evs(cell);}if(weekend.indexOf(realday.toString())!=-1){Calendar.addClass(cell,"weekend");}cell.innerHTML=Calendar._SDN[(i+fdow)%7];cell=cell.nextSibling;}};Calendar.prototype._hideCombos=function(){this.monthsCombo.style.display="none";this.yearsCombo.style.display="none";};Calendar.prototype._dragStart=function(ev){if(this.dragging){return;}this.dragging=true;var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posY=ev.clientY+window.scrollY;posX=ev.clientX+window.scrollX;}var st=this.element.style;this.xOffs=posX-parseInt(st.left);this.yOffs=posY-parseInt(st.top);with(Calendar){addEvent(document,"mousemove",calDragIt);addEvent(docum
 ent,"mouseup",calDragEnd);}};Date._MD=new Array(31,28,31,30,31,30,31,31,30,31,30,31);Date.SECOND=1000;Date.MINUTE=60*Date.SECOND;Date.HOUR=60*Date.MINUTE;Date.DAY=24*Date.HOUR;Date.WEEK=7*Date.DAY;Date.parseDate=function(str,fmt){var today=new Date();var y=0;var m=-1;var d=0;var a=str.split(/\W+/);var b=fmt.match(/%./g);var i=0,j=0;var hr=0;var min=0;for(i=0;i<a.length;++i){if(!a[i])continue;switch(b[i]){case "%d":case "%e":d=parseInt(a[i],10);break;case "%m":m=parseInt(a[i],10)-1;break;case "%Y":case "%y":y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);break;case "%b":case "%B":for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){m=j;break;}}break;case "%H":case "%I":case "%k":case "%l":hr=parseInt(a[i],10);break;case "%P":case "%p":if(/pm/i.test(a[i])&&hr<12)hr+=12;else if(/am/i.test(a[i])&&hr>=12)hr-=12;break;case "%M":min=parseInt(a[i],10);break;}}if(isNaN(y))y=today.getFullYear();if(isNaN(m))m=today.getMonth();if(isNaN(d))d=to
 day.getDate();if(isNaN(hr))hr=today.getHours();if(isNaN(min))min=today.getMinutes();if(y!=0&&m!=-1&&d!=0)return new Date(y,m,d,hr,min,0);y=0;m=-1;d=0;for(i=0;i<a.length;++i){if(a[i].search(/[a-zA-Z]+/)!=-1){var t=-1;for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){t=j;break;}}if(t!=-1){if(m!=-1){d=m+1;}m=t;}}else if(parseInt(a[i],10)<=12&&m==-1){m=a[i]-1;}else if(parseInt(a[i],10)>31&&y==0){y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);}else if(d==0){d=a[i];}}if(y==0)y=today.getFullYear();if(m!=-1&&d!=0)return new Date(y,m,d,hr,min,0);return today;};Date.prototype.getMonthDays=function(month){var year=this.getFullYear();if(typeof month=="undefined"){month=this.getMonth();}if(((0==(year%4))&&((0!=(year%100))||(0==(year%400))))&&month==1){return 29;}else{return Date._MD[month];}};Date.prototype.getDayOfYear=function(){var now=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var then=new Date(this.getFullYear(),
 0,0,0,0,0);var time=now-then;return Math.floor(time/Date.DAY);};Date.prototype.getWeekNumber=function(){var d=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var DoW=d.getDay();d.setDate(d.getDate()-(DoW+6)%7+3);var ms=d.valueOf();d.setMonth(0);d.setDate(4);return Math.round((ms-d.valueOf())/(7*864e5))+1;};Date.prototype.equalsTo=function(date){return((this.getFullYear()==date.getFullYear())&&(this.getMonth()==date.getMonth())&&(this.getDate()==date.getDate())&&(this.getHours()==date.getHours())&&(this.getMinutes()==date.getMinutes()));};Date.prototype.setDateOnly=function(date){var tmp=new Date(date);this.setDate(1);this.setFullYear(tmp.getFullYear());this.setMonth(tmp.getMonth());this.setDate(tmp.getDate());};Date.prototype.print=function(str){var m=this.getMonth();var d=this.getDate();var y=this.getFullYear();var wn=this.getWeekNumber();var w=this.getDay();var s={};var hr=this.getHours();var pm=(hr>=12);var ir=(pm)?(hr-12):hr;var dy=this.getDayOfYear();i
 f(ir==0)ir=12;var min=this.getMinutes();var sec=this.getSeconds();s["%a"]=Calendar._SDN[w];s["%A"]=Calendar._DN[w];s["%b"]=Calendar._SMN[m];s["%B"]=Calendar._MN[m];s["%C"]=1+Math.floor(y/100);s["%d"]=(d<10)?("0"+d):d;s["%e"]=d;s["%H"]=(hr<10)?("0"+hr):hr;s["%I"]=(ir<10)?("0"+ir):ir;s["%j"]=(dy<100)?((dy<10)?("00"+dy):("0"+dy)):dy;s["%k"]=hr;s["%l"]=ir;s["%m"]=(m<9)?("0"+(1+m)):(1+m);s["%M"]=(min<10)?("0"+min):min;s["%n"]="\n";s["%p"]=pm?"PM":"AM";s["%P"]=pm?"pm":"am";s["%s"]=Math.floor(this.getTime()/1000);s["%S"]=(sec<10)?("0"+sec):sec;s["%t"]="\t";s["%U"]=s["%W"]=s["%V"]=(wn<10)?("0"+wn):wn;s["%u"]=w+1;s["%w"]=w;s["%y"]=(''+y).substr(2,2);s["%Y"]=y;s["%%"]="%";var re=/%./g;if(!Calendar.is_ie5&&!Calendar.is_khtml)return str.replace(re,function(par){return s[par]||par;});var a=str.match(re);for(var i=0;i<a.length;i++){var tmp=s[a[i]];if(tmp){re=new RegExp(a[i],'g');str=str.replace(re,tmp);}}return str;};Date.prototype.__msh_oldSetFullYear=Date.prototype.setFullYear;Date.prot
 otype.setFullYear=function(y){var d=new Date(this);d.__msh_oldSetFullYear(y);if(d.getMonth()!=this.getMonth())this.setDate(28);this.__msh_oldSetFullYear(y);};window._dynarch_popupCalendar=null;
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/calendar_stripped.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/calendar_stripped.js)
===================================================================
--- plog/trunk/js/jscalendar/calendar_stripped.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/calendar_stripped.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,14 @@
+/*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
+ * -----------------------------------------------------------
+ *
+ * The DHTML Calendar, version 1.0 "It is happening again"
+ *
+ * Details and latest version at:
+ * www.dynarch.com/projects/calendar
+ *
+ * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
+ *
+ * This script is distributed under the GNU Lesser General Public License.
+ * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
+ */
+ Calendar=function(firstDayOfWeek,dateStr,onSelected,onClose){this.activeDiv=null;this.currentDateEl=null;this.getDateStatus=null;this.getDateToolTip=null;this.getDateText=null;this.timeout=null;this.onSelected=onSelected||null;this.onClose=onClose||null;this.dragging=false;this.hidden=false;this.minYear=1970;this.maxYear=2050;this.dateFormat=Calendar._TT["DEF_DATE_FORMAT"];this.ttDateFormat=Calendar._TT["TT_DATE_FORMAT"];this.isPopup=true;this.weekNumbers=true;this.firstDayOfWeek=typeof firstDayOfWeek=="number"?firstDayOfWeek:Calendar._FD;this.showsOtherMonths=false;this.dateStr=dateStr;this.ar_days=null;this.showsTime=false;this.time24=true;this.yearStep=2;this.hiliteToday=true;this.multiple=null;this.table=null;this.element=null;this.tbody=null;this.firstdayname=null;this.monthsCombo=null;this.yearsCombo=null;this.hilitedMonth=null;this.activeMonth=null;this.hilitedYear=null;this.activeYear=null;this.dateClicked=false;if(typeof Calendar._SDN=="undefined"){if(typeof Calend
 ar._SDN_len=="undefined")Calendar._SDN_len=3;var ar=new Array();for(var i=8;i>0;){ar[--i]=Calendar._DN[i].substr(0,Calendar._SDN_len);}Calendar._SDN=ar;if(typeof Calendar._SMN_len=="undefined")Calendar._SMN_len=3;ar=new Array();for(var i=12;i>0;){ar[--i]=Calendar._MN[i].substr(0,Calendar._SMN_len);}Calendar._SMN=ar;}};Calendar._C=null;Calendar.is_ie=(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));Calendar.is_ie5=(Calendar.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Calendar.is_opera=/opera/i.test(navigator.userAgent);Calendar.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Calendar.getAbsolutePos=function(el){var SL=0,ST=0;var is_div=/^div$/i.test(el.tagName);if(is_div&&el.scrollLeft)SL=el.scrollLeft;if(is_div&&el.scrollTop)ST=el.scrollTop;var r={x:el.offsetLeft-SL,y:el.offsetTop-ST};if(el.offsetParent){var tmp=this.getAbsolutePos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;}return r;};Calendar.isRelated=function(el,evt){var related=evt.re
 latedTarget;if(!related){var type=evt.type;if(type=="mouseover"){related=evt.fromElement;}else if(type=="mouseout"){related=evt.toElement;}}while(related){if(related==el){return true;}related=related.parentNode;}return false;};Calendar.removeClass=function(el,className){if(!(el&&el.className)){return;}var cls=el.className.split(" ");var ar=new Array();for(var i=cls.length;i>0;){if(cls[--i]!=className){ar[ar.length]=cls[i];}}el.className=ar.join(" ");};Calendar.addClass=function(el,className){Calendar.removeClass(el,className);el.className+=" "+className;};Calendar.getElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.currentTarget;while(f.nodeType!=1||/^div$/i.test(f.tagName))f=f.parentNode;return f;};Calendar.getTargetElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.target;while(f.nodeType!=1)f=f.parentNode;return f;};Calendar.stopEvent=function(ev){ev||(ev=window.event);if(Calendar.is_ie){ev.cancelBubble=true;ev.returnValue=false;}else
 {ev.preventDefault();ev.stopPropagation();}return false;};Calendar.addEvent=function(el,evname,func){if(el.attachEvent){el.attachEvent("on"+evname,func);}else if(el.addEventListener){el.addEventListener(evname,func,true);}else{el["on"+evname]=func;}};Calendar.removeEvent=function(el,evname,func){if(el.detachEvent){el.detachEvent("on"+evname,func);}else if(el.removeEventListener){el.removeEventListener(evname,func,true);}else{el["on"+evname]=null;}};Calendar.createElement=function(type,parent){var el=null;if(document.createElementNS){el=document.createElementNS("http://www.w3.org/1999/xhtml",type);}else{el=document.createElement(type);}if(typeof parent!="undefined"){parent.appendChild(el);}return el;};Calendar._add_evs=function(el){with(Calendar){addEvent(el,"mouseover",dayMouseOver);addEvent(el,"mousedown",dayMouseDown);addEvent(el,"mouseout",dayMouseOut);if(is_ie){addEvent(el,"dblclick",dayMouseDblClick);el.setAttribute("unselectable",true);}}};Calendar.findMonth=function(e
 l){if(typeof el.month!="undefined"){return el;}else if(typeof el.parentNode.month!="undefined"){return el.parentNode;}return null;};Calendar.findYear=function(el){if(typeof el.year!="undefined"){return el;}else if(typeof el.parentNode.year!="undefined"){return el.parentNode;}return null;};Calendar.showMonthsCombo=function(){var cal=Calendar._C;if(!cal){return false;}var cal=cal;var cd=cal.activeDiv;var mc=cal.monthsCombo;if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}if(cal.activeMonth){Calendar.removeClass(cal.activeMonth,"active");}var mon=cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];Calendar.addClass(mon,"active");cal.activeMonth=mon;var s=mc.style;s.display="block";if(cd.navtype<0)s.left=cd.offsetLeft+"px";else{var mcw=mc.offsetWidth;if(typeof mcw=="undefined")mcw=50;s.left=(cd.offsetLeft+cd.offsetWidth-mcw)+"px";}s.top=(cd.offsetTop+cd.offsetHeight)+"px";};Calendar.showYearsCombo=function(fwd){var cal=Calendar._C;if(!cal){retur
 n false;}var cal=cal;var cd=cal.activeDiv;var yc=cal.yearsCombo;if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}if(cal.activeYear){Calendar.removeClass(cal.activeYear,"active");}cal.activeYear=null;var Y=cal.date.getFullYear()+(fwd?1:-1);var yr=yc.firstChild;var show=false;for(var i=12;i>0;--i){if(Y>=cal.minYear&&Y<=cal.maxYear){yr.innerHTML=Y;yr.year=Y;yr.style.display="block";show=true;}else{yr.style.display="none";}yr=yr.nextSibling;Y+=fwd?cal.yearStep:-cal.yearStep;}if(show){var s=yc.style;s.display="block";if(cd.navtype<0)s.left=cd.offsetLeft+"px";else{var ycw=yc.offsetWidth;if(typeof ycw=="undefined")ycw=50;s.left=(cd.offsetLeft+cd.offsetWidth-ycw)+"px";}s.top=(cd.offsetTop+cd.offsetHeight)+"px";}};Calendar.tableMouseUp=function(ev){var cal=Calendar._C;if(!cal){return false;}if(cal.timeout){clearTimeout(cal.timeout);}var el=cal.activeDiv;if(!el){return false;}var target=Calendar.getTargetElement(ev);ev||(ev=window.event);Calendar.removeClass(el,"act
 ive");if(target==el||target.parentNode==el){Calendar.cellClick(el,ev);}var mon=Calendar.findMonth(target);var date=null;if(mon){date=new Date(cal.date);if(mon.month!=date.getMonth()){date.setMonth(mon.month);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}else{var year=Calendar.findYear(target);if(year){date=new Date(cal.date);if(year.year!=date.getFullYear()){date.setFullYear(year.year);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}}with(Calendar){removeEvent(document,"mouseup",tableMouseUp);removeEvent(document,"mouseover",tableMouseOver);removeEvent(document,"mousemove",tableMouseOver);cal._hideCombos();_C=null;return stopEvent(ev);}};Calendar.tableMouseOver=function(ev){var cal=Calendar._C;if(!cal){return;}var el=cal.activeDiv;var target=Calendar.getTargetElement(ev);if(target==el||target.parentNode==el){Calendar.addClass(el,"hilite active");Calendar.addClass(el.parentNode,"rowhilite");}else{if(typeof el.navtype=="undefined"||(el.navtype!=50&&(e
 l.navtype==0||Math.abs(el.navtype)>2)))Calendar.removeClass(el,"active");Calendar.removeClass(el,"hilite");Calendar.removeClass(el.parentNode,"rowhilite");}ev||(ev=window.event);if(el.navtype==50&&target!=el){var pos=Calendar.getAbsolutePos(el);var w=el.offsetWidth;var x=ev.clientX;var dx;var decrease=true;if(x>pos.x+w){dx=x-pos.x-w;decrease=false;}else dx=pos.x-x;if(dx<0)dx=0;var range=el._range;var current=el._current;var count=Math.floor(dx/10)%range.length;for(var i=range.length;--i>=0;)if(range[i]==current)break;while(count-->0)if(decrease){if(--i<0)i=range.length-1;}else if(++i>=range.length)i=0;var newval=range[i];el.innerHTML=newval;cal.onUpdateTime();}var mon=Calendar.findMonth(target);if(mon){if(mon.month!=cal.date.getMonth()){if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}Calendar.addClass(mon,"hilite");cal.hilitedMonth=mon;}else if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}}else{if(cal.hilitedMonth){Calendar.removeC
 lass(cal.hilitedMonth,"hilite");}var year=Calendar.findYear(target);if(year){if(year.year!=cal.date.getFullYear()){if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}Calendar.addClass(year,"hilite");cal.hilitedYear=year;}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}return Calendar.stopEvent(ev);};Calendar.tableMouseDown=function(ev){if(Calendar.getTargetElement(ev)==Calendar.getElement(ev)){return Calendar.stopEvent(ev);}};Calendar.calDragIt=function(ev){var cal=Calendar._C;if(!(cal&&cal.dragging)){return false;}var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posX=ev.pageX;posY=ev.pageY;}cal.hideShowCovered();var st=cal.element.style;st.left=(posX-cal.xOffs)+"px";st.top=(posY-cal.yOffs)+"px";return Calendar.stopEvent(ev);};Calendar.calDragEnd=function(ev){var cal
 =Calendar._C;if(!cal){return false;}cal.dragging=false;with(Calendar){removeEvent(document,"mousemove",calDragIt);removeEvent(document,"mouseup",calDragEnd);tableMouseUp(ev);}cal.hideShowCovered();};Calendar.dayMouseDown=function(ev){var el=Calendar.getElement(ev);if(el.disabled){return false;}var cal=el.calendar;cal.activeDiv=el;Calendar._C=cal;if(el.navtype!=300)with(Calendar){if(el.navtype==50){el._current=el.innerHTML;addEvent(document,"mousemove",tableMouseOver);}else addEvent(document,Calendar.is_ie5?"mousemove":"mouseover",tableMouseOver);addClass(el,"hilite active");addEvent(document,"mouseup",tableMouseUp);}else if(cal.isPopup){cal._dragStart(ev);}if(el.navtype==-1||el.navtype==1){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout("Calendar.showMonthsCombo()",250);}else if(el.navtype==-2||el.navtype==2){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout((el.navtype>0)?"Calendar.showYearsCombo(true)":"Calendar.showYearsCombo(false)",250);}el
 se{cal.timeout=null;}return Calendar.stopEvent(ev);};Calendar.dayMouseDblClick=function(ev){Calendar.cellClick(Calendar.getElement(ev),ev||window.event);if(Calendar.is_ie){document.selection.empty();}};Calendar.dayMouseOver=function(ev){var el=Calendar.getElement(ev);if(Calendar.isRelated(el,ev)||Calendar._C||el.disabled){return false;}if(el.ttip){if(el.ttip.substr(0,1)=="_"){el.ttip=el.caldate.print(el.calendar.ttDateFormat)+el.ttip.substr(1);}el.calendar.tooltips.innerHTML=el.ttip;}if(el.navtype!=300){Calendar.addClass(el,"hilite");if(el.caldate){Calendar.addClass(el.parentNode,"rowhilite");}}return Calendar.stopEvent(ev);};Calendar.dayMouseOut=function(ev){with(Calendar){var el=getElement(ev);if(isRelated(el,ev)||_C||el.disabled)return false;removeClass(el,"hilite");if(el.caldate)removeClass(el.parentNode,"rowhilite");if(el.calendar)el.calendar.tooltips.innerHTML=_TT["SEL_DATE"];return stopEvent(ev);}};Calendar.cellClick=function(el,ev){var cal=el.calendar;var closing=fal
 se;var newdate=false;var date=null;if(typeof el.navtype=="undefined"){if(cal.currentDateEl){Calendar.removeClass(cal.currentDateEl,"selected");Calendar.addClass(el,"selected");closing=(cal.currentDateEl==el);if(!closing){cal.currentDateEl=el;}}cal.date.setDateOnly(el.caldate);date=cal.date;var other_month=!(cal.dateClicked=!el.otherMonth);if(!other_month&&!cal.currentDateEl)cal._toggleMultipleDate(new Date(date));else newdate=!el.disabled;if(other_month)cal._init(cal.firstDayOfWeek,date);}else{if(el.navtype==200){Calendar.removeClass(el,"hilite");cal.callCloseHandler();return;}date=new Date(cal.date);if(el.navtype==0)date.setDateOnly(new Date());cal.dateClicked=false;var year=date.getFullYear();var mon=date.getMonth();function setMonth(m){var day=date.getDate();var max=date.getMonthDays(m);if(day>max){date.setDate(max);}date.setMonth(m);};switch(el.navtype){case 400:Calendar.removeClass(el,"hilite");var text=Calendar._TT["ABOUT"];if(typeof text!="undefined"){text+=cal.showsT
 ime?Calendar._TT["ABOUT_TIME"]:"";}else{text="Help and about box text is not translated into this language.\n"+"If you know this language and you feel generous please update\n"+"the corresponding file in \"lang\" subdir to match calendar-en.js\n"+"and send it back to <mihai_bazon at yahoo.com> to get it into the distribution  ;-)\n\n"+"Thank you!\n"+"http://dynarch.com/mishoo/calendar.epl\n";}alert(text);return;case-2:if(year>cal.minYear){date.setFullYear(year-1);}break;case-1:if(mon>0){setMonth(mon-1);}else if(year-->cal.minYear){date.setFullYear(year);setMonth(11);}break;case 1:if(mon<11){setMonth(mon+1);}else if(year<cal.maxYear){date.setFullYear(year+1);setMonth(0);}break;case 2:if(year<cal.maxYear){date.setFullYear(year+1);}break;case 100:cal.setFirstDayOfWeek(el.fdow);return;case 50:var range=el._range;var current=el.innerHTML;for(var i=range.length;--i>=0;)if(range[i]==current)break;if(ev&&ev.shiftKey){if(--i<0)i=range.length-1;}else if(++i>=range.length)i=0;var newval=r
 ange[i];el.innerHTML=newval;cal.onUpdateTime();return;case 0:if((typeof cal.getDateStatus=="function")&&cal.getDateStatus(date,date.getFullYear(),date.getMonth(),date.getDate())){return false;}break;}if(!date.equalsTo(cal.date)){cal.setDate(date);newdate=true;}else if(el.navtype==0)newdate=closing=true;}if(newdate){ev&&cal.callHandler();}if(closing){Calendar.removeClass(el,"hilite");ev&&cal.callCloseHandler();}};Calendar.prototype.create=function(_par){var parent=null;if(!_par){parent=document.getElementsByTagName("body")[0];this.isPopup=true;}else{parent=_par;this.isPopup=false;}this.date=this.dateStr?new Date(this.dateStr):new Date();var table=Calendar.createElement("table");this.table=table;table.cellSpacing=0;table.cellPadding=0;table.calendar=this;Calendar.addEvent(table,"mousedown",Calendar.tableMouseDown);var div=Calendar.createElement("div");this.element=div;div.className="calendar";if(this.isPopup){div.style.position="absolute";div.style.display="none";}div.appendCh
 ild(table);var thead=Calendar.createElement("thead",table);var cell=null;var row=null;var cal=this;var hh=function(text,cs,navtype){cell=Calendar.createElement("td",row);cell.colSpan=cs;cell.className="button";if(navtype!=0&&Math.abs(navtype)<=2)cell.className+=" nav";Calendar._add_evs(cell);cell.calendar=cal;cell.navtype=navtype;cell.innerHTML="<div unselectable='on'>"+text+"</div>";return cell;};row=Calendar.createElement("tr",thead);var title_length=6;(this.isPopup)&&--title_length;(this.weekNumbers)&&++title_length;hh("?",1,400).ttip=Calendar._TT["INFO"];this.title=hh("",title_length,300);this.title.className="title";if(this.isPopup){this.title.ttip=Calendar._TT["DRAG_TO_MOVE"];this.title.style.cursor="move";hh("&#x00d7;",1,200).ttip=Calendar._TT["CLOSE"];}row=Calendar.createElement("tr",thead);row.className="headrow";this._nav_py=hh("&#x00ab;",1,-2);this._nav_py.ttip=Calendar._TT["PREV_YEAR"];this._nav_pm=hh("&#x2039;",1,-1);this._nav_pm.ttip=Calendar._TT["PREV_MONTH"];
 this._nav_now=hh(Calendar._TT["TODAY"],this.weekNumbers?4:3,0);this._nav_now.ttip=Calendar._TT["GO_TODAY"];this._nav_nm=hh("&#x203a;",1,1);this._nav_nm.ttip=Calendar._TT["NEXT_MONTH"];this._nav_ny=hh("&#x00bb;",1,2);this._nav_ny.ttip=Calendar._TT["NEXT_YEAR"];row=Calendar.createElement("tr",thead);row.className="daynames";if(this.weekNumbers){cell=Calendar.createElement("td",row);cell.className="name wn";cell.innerHTML=Calendar._TT["WK"];}for(var i=7;i>0;--i){cell=Calendar.createElement("td",row);if(!i){cell.navtype=100;cell.calendar=this;Calendar._add_evs(cell);}}this.firstdayname=(this.weekNumbers)?row.firstChild.nextSibling:row.firstChild;this._displayWeekdays();var tbody=Calendar.createElement("tbody",table);this.tbody=tbody;for(i=6;i>0;--i){row=Calendar.createElement("tr",tbody);if(this.weekNumbers){cell=Calendar.createElement("td",row);}for(var j=7;j>0;--j){cell=Calendar.createElement("td",row);cell.calendar=this;Calendar._add_evs(cell);}}if(this.showsTime){row=Calenda
 r.createElement("tr",tbody);row.className="time";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;cell.innerHTML=Calendar._TT["TIME"]||"&nbsp;";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=this.weekNumbers?4:3;(function(){function makeTimePart(className,init,range_start,range_end){var part=Calendar.createElement("span",cell);part.className=className;part.innerHTML=init;part.calendar=cal;part.ttip=Calendar._TT["TIME_PART"];part.navtype=50;part._range=[];if(typeof range_start!="number")part._range=range_start;else{for(var i=range_start;i<=range_end;++i){var txt;if(i<10&&range_end>=10)txt='0'+i;else txt=''+i;part._range[part._range.length]=txt;}}Calendar._add_evs(part);return part;};var hrs=cal.date.getHours();var mins=cal.date.getMinutes();var t12=!cal.time24;var pm=(hrs>12);if(t12&&pm)hrs-=12;var H=makeTimePart("hour",hrs,t12?1:0,t12?12:23);var span=Calendar.createElement("span",cell);span.innerHTML=":";span.className="col
 on";var M=makeTimePart("minute",mins,0,59);var AP=null;cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;if(t12)AP=makeTimePart("ampm",pm?"pm":"am",["am","pm"]);else cell.innerHTML="&nbsp;";cal.onSetTime=function(){var pm,hrs=this.date.getHours(),mins=this.date.getMinutes();if(t12){pm=(hrs>=12);if(pm)hrs-=12;if(hrs==0)hrs=12;AP.innerHTML=pm?"pm":"am";}H.innerHTML=(hrs<10)?("0"+hrs):hrs;M.innerHTML=(mins<10)?("0"+mins):mins;};cal.onUpdateTime=function(){var date=this.date;var h=parseInt(H.innerHTML,10);if(t12){if(/pm/i.test(AP.innerHTML)&&h<12)h+=12;else if(/am/i.test(AP.innerHTML)&&h==12)h=0;}var d=date.getDate();var m=date.getMonth();var y=date.getFullYear();date.setHours(h);date.setMinutes(parseInt(M.innerHTML,10));date.setFullYear(y);date.setMonth(m);date.setDate(d);this.dateClicked=false;this.callHandler();};})();}else{this.onSetTime=this.onUpdateTime=function(){};}var tfoot=Calendar.createElement("tfoot",table);row=Calendar.createElement("tr",tf
 oot);row.className="footrow";cell=hh(Calendar._TT["SEL_DATE"],this.weekNumbers?8:7,300);cell.className="ttip";if(this.isPopup){cell.ttip=Calendar._TT["DRAG_TO_MOVE"];cell.style.cursor="move";}this.tooltips=cell;div=Calendar.createElement("div",this.element);this.monthsCombo=div;div.className="combo";for(i=0;i<Calendar._MN.length;++i){var mn=Calendar.createElement("div");mn.className=Calendar.is_ie?"label-IEfix":"label";mn.month=i;mn.innerHTML=Calendar._SMN[i];div.appendChild(mn);}div=Calendar.createElement("div",this.element);this.yearsCombo=div;div.className="combo";for(i=12;i>0;--i){var yr=Calendar.createElement("div");yr.className=Calendar.is_ie?"label-IEfix":"label";div.appendChild(yr);}this._init(this.firstDayOfWeek,this.date);parent.appendChild(this.element);};Calendar._keyEvent=function(ev){var cal=window._dynarch_popupCalendar;if(!cal||cal.multiple)return false;(Calendar.is_ie)&&(ev=window.event);var act=(Calendar.is_ie||ev.type=="keypress"),K=ev.keyCode;if(ev.ctrlKe
 y){switch(K){case 37:act&&Calendar.cellClick(cal._nav_pm);break;case 38:act&&Calendar.cellClick(cal._nav_py);break;case 39:act&&Calendar.cellClick(cal._nav_nm);break;case 40:act&&Calendar.cellClick(cal._nav_ny);break;default:return false;}}else switch(K){case 32:Calendar.cellClick(cal._nav_now);break;case 27:act&&cal.callCloseHandler();break;case 37:case 38:case 39:case 40:if(act){var prev,x,y,ne,el,step;prev=K==37||K==38;step=(K==37||K==39)?1:7;function setVars(){el=cal.currentDateEl;var p=el.pos;x=p&15;y=p>>4;ne=cal.ar_days[y][x];};setVars();function prevMonth(){var date=new Date(cal.date);date.setDate(date.getDate()-step);cal.setDate(date);};function nextMonth(){var date=new Date(cal.date);date.setDate(date.getDate()+step);cal.setDate(date);};while(1){switch(K){case 37:if(--x>=0)ne=cal.ar_days[y][x];else{x=6;K=38;continue;}break;case 38:if(--y>=0)ne=cal.ar_days[y][x];else{prevMonth();setVars();}break;case 39:if(++x<7)ne=cal.ar_days[y][x];else{x=0;K=40;continue;}break;case
  40:if(++y<cal.ar_days.length)ne=cal.ar_days[y][x];else{nextMonth();setVars();}break;}break;}if(ne){if(!ne.disabled)Calendar.cellClick(ne);else if(prev)prevMonth();else nextMonth();}}break;case 13:if(act)Calendar.cellClick(cal.currentDateEl,ev);break;default:return false;}return Calendar.stopEvent(ev);};Calendar.prototype._init=function(firstDayOfWeek,date){var today=new Date(),TY=today.getFullYear(),TM=today.getMonth(),TD=today.getDate();this.table.style.visibility="hidden";var year=date.getFullYear();if(year<this.minYear){year=this.minYear;date.setFullYear(year);}else if(year>this.maxYear){year=this.maxYear;date.setFullYear(year);}this.firstDayOfWeek=firstDayOfWeek;this.date=new Date(date);var month=date.getMonth();var mday=date.getDate();var no_days=date.getMonthDays();date.setDate(1);var day1=(date.getDay()-this.firstDayOfWeek)%7;if(day1<0)day1+=7;date.setDate(-day1);date.setDate(date.getDate()+1);var row=this.tbody.firstChild;var MN=Calendar._SMN[month];var ar_days=this
 .ar_days=new Array();var weekend=Calendar._TT["WEEKEND"];var dates=this.multiple?(this.datesCells={}):null;for(var i=0;i<6;++i,row=row.nextSibling){var cell=row.firstChild;if(this.weekNumbers){cell.className="day wn";cell.innerHTML=date.getWeekNumber();cell=cell.nextSibling;}row.className="daysrow";var hasdays=false,iday,dpos=ar_days[i]=[];for(var j=0;j<7;++j,cell=cell.nextSibling,date.setDate(iday+1)){iday=date.getDate();var wday=date.getDay();cell.className="day";cell.pos=i<<4|j;dpos[j]=cell;var current_month=(date.getMonth()==month);if(!current_month){if(this.showsOtherMonths){cell.className+=" othermonth";cell.otherMonth=true;}else{cell.className="emptycell";cell.innerHTML="&nbsp;";cell.disabled=true;continue;}}else{cell.otherMonth=false;hasdays=true;}cell.disabled=false;cell.innerHTML=this.getDateText?this.getDateText(date,iday):iday;if(dates)dates[date.print("%Y%m%d")]=cell;if(this.getDateStatus){var status=this.getDateStatus(date,year,month,iday);if(this.getDateToolTi
 p){var toolTip=this.getDateToolTip(date,year,month,iday);if(toolTip)cell.title=toolTip;}if(status===true){cell.className+=" disabled";cell.disabled=true;}else{if(/disabled/i.test(status))cell.disabled=true;cell.className+=" "+status;}}if(!cell.disabled){cell.caldate=new Date(date);cell.ttip="_";if(!this.multiple&&current_month&&iday==mday&&this.hiliteToday){cell.className+=" selected";this.currentDateEl=cell;}if(date.getFullYear()==TY&&date.getMonth()==TM&&iday==TD){cell.className+=" today";cell.ttip+=Calendar._TT["PART_TODAY"];}if(weekend.indexOf(wday.toString())!=-1)cell.className+=cell.otherMonth?" oweekend":" weekend";}}if(!(hasdays||this.showsOtherMonths))row.className="emptyrow";}this.title.innerHTML=Calendar._MN[month]+", "+year;this.onSetTime();this.table.style.visibility="visible";this._initMultipleDates();};Calendar.prototype._initMultipleDates=function(){if(this.multiple){for(var i in this.multiple){var cell=this.datesCells[i];var d=this.multiple[i];if(!d)continue
 ;if(cell)cell.className+=" selected";}}};Calendar.prototype._toggleMultipleDate=function(date){if(this.multiple){var ds=date.print("%Y%m%d");var cell=this.datesCells[ds];if(cell){var d=this.multiple[ds];if(!d){Calendar.addClass(cell,"selected");this.multiple[ds]=date;}else{Calendar.removeClass(cell,"selected");delete this.multiple[ds];}}}};Calendar.prototype.setDateToolTipHandler=function(unaryFunction){this.getDateToolTip=unaryFunction;};Calendar.prototype.setDate=function(date){if(!date.equalsTo(this.date)){this._init(this.firstDayOfWeek,date);}};Calendar.prototype.refresh=function(){this._init(this.firstDayOfWeek,this.date);};Calendar.prototype.setFirstDayOfWeek=function(firstDayOfWeek){this._init(firstDayOfWeek,this.date);this._displayWeekdays();};Calendar.prototype.setDateStatusHandler=Calendar.prototype.setDisabledHandler=function(unaryFunction){this.getDateStatus=unaryFunction;};Calendar.prototype.setRange=function(a,z){this.minYear=a;this.maxYear=z;};Calendar.prototy
 pe.callHandler=function(){if(this.onSelected){this.onSelected(this,this.date.print(this.dateFormat));}};Calendar.prototype.callCloseHandler=function(){if(this.onClose){this.onClose(this);}this.hideShowCovered();};Calendar.prototype.destroy=function(){var el=this.element.parentNode;el.removeChild(this.element);Calendar._C=null;window._dynarch_popupCalendar=null;};Calendar.prototype.reparent=function(new_parent){var el=this.element;el.parentNode.removeChild(el);new_parent.appendChild(el);};Calendar._checkCalendar=function(ev){var calendar=window._dynarch_popupCalendar;if(!calendar){return false;}var el=Calendar.is_ie?Calendar.getElement(ev):Calendar.getTargetElement(ev);for(;el!=null&&el!=calendar.element;el=el.parentNode);if(el==null){window._dynarch_popupCalendar.callCloseHandler();return Calendar.stopEvent(ev);}};Calendar.prototype.show=function(){var rows=this.table.getElementsByTagName("tr");for(var i=rows.length;i>0;){var row=rows[--i];Calendar.removeClass(row,"rowhilite
 ");var cells=row.getElementsByTagName("td");for(var j=cells.length;j>0;){var cell=cells[--j];Calendar.removeClass(cell,"hilite");Calendar.removeClass(cell,"active");}}this.element.style.display="block";this.hidden=false;if(this.isPopup){window._dynarch_popupCalendar=this;Calendar.addEvent(document,"keydown",Calendar._keyEvent);Calendar.addEvent(document,"keypress",Calendar._keyEvent);Calendar.addEvent(document,"mousedown",Calendar._checkCalendar);}this.hideShowCovered();};Calendar.prototype.hide=function(){if(this.isPopup){Calendar.removeEvent(document,"keydown",Calendar._keyEvent);Calendar.removeEvent(document,"keypress",Calendar._keyEvent);Calendar.removeEvent(document,"mousedown",Calendar._checkCalendar);}this.element.style.display="none";this.hidden=true;this.hideShowCovered();};Calendar.prototype.showAt=function(x,y){var s=this.element.style;s.left=x+"px";s.top=y+"px";this.show();};Calendar.prototype.showAtElement=function(el,opts){var self=this;var p=Calendar.getAbsolu
 tePos(el);if(!opts||typeof opts!="string"){this.showAt(p.x,p.y+el.offsetHeight);return true;}function fixPosition(box){if(box.x<0)box.x=0;if(box.y<0)box.y=0;var cp=document.createElement("div");var s=cp.style;s.position="absolute";s.right=s.bottom=s.width=s.height="0px";document.body.appendChild(cp);var br=Calendar.getAbsolutePos(cp);document.body.removeChild(cp);if(Calendar.is_ie){br.y+=document.body.scrollTop;br.x+=document.body.scrollLeft;}else{br.y+=window.scrollY;br.x+=window.scrollX;}var tmp=box.x+box.width-br.x;if(tmp>0)box.x-=tmp;tmp=box.y+box.height-br.y;if(tmp>0)box.y-=tmp;};this.element.style.display="block";Calendar.continuation_for_the_fucking_khtml_browser=function(){var w=self.element.offsetWidth;var h=self.element.offsetHeight;self.element.style.display="none";var valign=opts.substr(0,1);var halign="l";if(opts.length>1){halign=opts.substr(1,1);}switch(valign){case "T":p.y-=h;break;case "B":p.y+=el.offsetHeight;break;case "C":p.y+=(el.offsetHeight-h)/2;break;c
 ase "t":p.y+=el.offsetHeight-h;break;case "b":break;}switch(halign){case "L":p.x-=w;break;case "R":p.x+=el.offsetWidth;break;case "C":p.x+=(el.offsetWidth-w)/2;break;case "l":p.x+=el.offsetWidth-w;break;case "r":break;}p.width=w;p.height=h+40;self.monthsCombo.style.display="none";fixPosition(p);self.showAt(p.x,p.y);};if(Calendar.is_khtml)setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()",10);else Calendar.continuation_for_the_fucking_khtml_browser();};Calendar.prototype.setDateFormat=function(str){this.dateFormat=str;};Calendar.prototype.setTtDateFormat=function(str){this.ttDateFormat=str;};Calendar.prototype.parseDate=function(str,fmt){if(!fmt)fmt=this.dateFormat;this.setDate(Date.parseDate(str,fmt));};Calendar.prototype.hideShowCovered=function(){if(!Calendar.is_ie&&!Calendar.is_opera)return;function getVisib(obj){var value=obj.style.visibility;if(!value){if(document.defaultView&&typeof(document.defaultView.getComputedStyle)=="function"){if(!Calendar.is_kht
 ml)value=document.defaultView. getComputedStyle(obj,"").getPropertyValue("visibility");else value='';}else if(obj.currentStyle){value=obj.currentStyle.visibility;}else value='';}return value;};var tags=new Array("applet","iframe","select");var el=this.element;var p=Calendar.getAbsolutePos(el);var EX1=p.x;var EX2=el.offsetWidth+EX1;var EY1=p.y;var EY2=el.offsetHeight+EY1;for(var k=tags.length;k>0;){var ar=document.getElementsByTagName(tags[--k]);var cc=null;for(var i=ar.length;i>0;){cc=ar[--i];p=Calendar.getAbsolutePos(cc);var CX1=p.x;var CX2=cc.offsetWidth+CX1;var CY1=p.y;var CY2=cc.offsetHeight+CY1;if(this.hidden||(CX1>EX2)||(CX2<EX1)||(CY1>EY2)||(CY2<EY1)){if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}cc.style.visibility=cc.__msh_save_visibility;}else{if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}cc.style.visibility="hidden";}}}};Calendar.prototype._displayWeekdays=function(){var fdow=this.firstDayOfWeek;var cell=this.firstdayn
 ame;var weekend=Calendar._TT["WEEKEND"];for(var i=0;i<7;++i){cell.className="day name";var realday=(i+fdow)%7;if(i){cell.ttip=Calendar._TT["DAY_FIRST"].replace("%s",Calendar._DN[realday]);cell.navtype=100;cell.calendar=this;cell.fdow=realday;Calendar._add_evs(cell);}if(weekend.indexOf(realday.toString())!=-1){Calendar.addClass(cell,"weekend");}cell.innerHTML=Calendar._SDN[(i+fdow)%7];cell=cell.nextSibling;}};Calendar.prototype._hideCombos=function(){this.monthsCombo.style.display="none";this.yearsCombo.style.display="none";};Calendar.prototype._dragStart=function(ev){if(this.dragging){return;}this.dragging=true;var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posY=ev.clientY+window.scrollY;posX=ev.clientX+window.scrollX;}var st=this.element.style;this.xOffs=posX-parseInt(st.left);this.yOffs=posY-parseInt(st.top);with(Calendar){addEvent(document,"mousemove",calDragIt);addEvent(docum
 ent,"mouseup",calDragEnd);}};Date._MD=new Array(31,28,31,30,31,30,31,31,30,31,30,31);Date.SECOND=1000;Date.MINUTE=60*Date.SECOND;Date.HOUR=60*Date.MINUTE;Date.DAY=24*Date.HOUR;Date.WEEK=7*Date.DAY;Date.parseDate=function(str,fmt){var today=new Date();var y=0;var m=-1;var d=0;var a=str.split(/\W+/);var b=fmt.match(/%./g);var i=0,j=0;var hr=0;var min=0;for(i=0;i<a.length;++i){if(!a[i])continue;switch(b[i]){case "%d":case "%e":d=parseInt(a[i],10);break;case "%m":m=parseInt(a[i],10)-1;break;case "%Y":case "%y":y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);break;case "%b":case "%B":for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){m=j;break;}}break;case "%H":case "%I":case "%k":case "%l":hr=parseInt(a[i],10);break;case "%P":case "%p":if(/pm/i.test(a[i])&&hr<12)hr+=12;else if(/am/i.test(a[i])&&hr>=12)hr-=12;break;case "%M":min=parseInt(a[i],10);break;}}if(isNaN(y))y=today.getFullYear();if(isNaN(m))m=today.getMonth();if(isNaN(d))d=to
 day.getDate();if(isNaN(hr))hr=today.getHours();if(isNaN(min))min=today.getMinutes();if(y!=0&&m!=-1&&d!=0)return new Date(y,m,d,hr,min,0);y=0;m=-1;d=0;for(i=0;i<a.length;++i){if(a[i].search(/[a-zA-Z]+/)!=-1){var t=-1;for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){t=j;break;}}if(t!=-1){if(m!=-1){d=m+1;}m=t;}}else if(parseInt(a[i],10)<=12&&m==-1){m=a[i]-1;}else if(parseInt(a[i],10)>31&&y==0){y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);}else if(d==0){d=a[i];}}if(y==0)y=today.getFullYear();if(m!=-1&&d!=0)return new Date(y,m,d,hr,min,0);return today;};Date.prototype.getMonthDays=function(month){var year=this.getFullYear();if(typeof month=="undefined"){month=this.getMonth();}if(((0==(year%4))&&((0!=(year%100))||(0==(year%400))))&&month==1){return 29;}else{return Date._MD[month];}};Date.prototype.getDayOfYear=function(){var now=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var then=new Date(this.getFullYear(),
 0,0,0,0,0);var time=now-then;return Math.floor(time/Date.DAY);};Date.prototype.getWeekNumber=function(){var d=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var DoW=d.getDay();d.setDate(d.getDate()-(DoW+6)%7+3);var ms=d.valueOf();d.setMonth(0);d.setDate(4);return Math.round((ms-d.valueOf())/(7*864e5))+1;};Date.prototype.equalsTo=function(date){return((this.getFullYear()==date.getFullYear())&&(this.getMonth()==date.getMonth())&&(this.getDate()==date.getDate())&&(this.getHours()==date.getHours())&&(this.getMinutes()==date.getMinutes()));};Date.prototype.setDateOnly=function(date){var tmp=new Date(date);this.setDate(1);this.setFullYear(tmp.getFullYear());this.setMonth(tmp.getMonth());this.setDate(tmp.getDate());};Date.prototype.print=function(str){var m=this.getMonth();var d=this.getDate();var y=this.getFullYear();var wn=this.getWeekNumber();var w=this.getDay();var s={};var hr=this.getHours();var pm=(hr>=12);var ir=(pm)?(hr-12):hr;var dy=this.getDayOfYear();i
 f(ir==0)ir=12;var min=this.getMinutes();var sec=this.getSeconds();s["%a"]=Calendar._SDN[w];s["%A"]=Calendar._DN[w];s["%b"]=Calendar._SMN[m];s["%B"]=Calendar._MN[m];s["%C"]=1+Math.floor(y/100);s["%d"]=(d<10)?("0"+d):d;s["%e"]=d;s["%H"]=(hr<10)?("0"+hr):hr;s["%I"]=(ir<10)?("0"+ir):ir;s["%j"]=(dy<100)?((dy<10)?("00"+dy):("0"+dy)):dy;s["%k"]=hr;s["%l"]=ir;s["%m"]=(m<9)?("0"+(1+m)):(1+m);s["%M"]=(min<10)?("0"+min):min;s["%n"]="\n";s["%p"]=pm?"PM":"AM";s["%P"]=pm?"pm":"am";s["%s"]=Math.floor(this.getTime()/1000);s["%S"]=(sec<10)?("0"+sec):sec;s["%t"]="\t";s["%U"]=s["%W"]=s["%V"]=(wn<10)?("0"+wn):wn;s["%u"]=w+1;s["%w"]=w;s["%y"]=(''+y).substr(2,2);s["%Y"]=y;s["%%"]="%";var re=/%./g;if(!Calendar.is_ie5&&!Calendar.is_khtml)return str.replace(re,function(par){return s[par]||par;});var a=str.match(re);for(var i=0;i<a.length;i++){var tmp=s[a[i]];if(tmp){re=new RegExp(a[i],'g');str=str.replace(re,tmp);}}return str;};Date.prototype.__msh_oldSetFullYear=Date.prototype.setFullYear;Date.prot
 otype.setFullYear=function(y){var d=new Date(this);d.__msh_oldSetFullYear(y);if(d.getMonth()!=this.getMonth())this.setDate(28);this.__msh_oldSetFullYear(y);};window._dynarch_popupCalendar=null;
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/img.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/img.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/img.gif)
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/lang (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang)

Deleted: plog/trunk/js/jscalendar/lang/calendar-af.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-af.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-af.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,39 +0,0 @@
-// ** I18N Afrikaans
-Calendar._DN = new Array
-("Sondag",
- "Maandag",
- "Dinsdag",
- "Woensdag",
- "Donderdag",
- "Vrydag",
- "Saterdag",
- "Sondag");
-Calendar._MN = new Array
-("Januarie",
- "Februarie",
- "Maart",
- "April",
- "Mei",
- "Junie",
- "Julie",
- "Augustus",
- "September",
- "Oktober",
- "November",
- "Desember");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["TOGGLE"] = "Verander eerste dag van die week";
-Calendar._TT["PREV_YEAR"] = "Vorige jaar (hou vir keuselys)";
-Calendar._TT["PREV_MONTH"] = "Vorige maand (hou vir keuselys)";
-Calendar._TT["GO_TODAY"] = "Gaan na vandag";
-Calendar._TT["NEXT_MONTH"] = "Volgende maand (hou vir keuselys)";
-Calendar._TT["NEXT_YEAR"] = "Volgende jaar (hou vir keuselys)";
-Calendar._TT["SEL_DATE"] = "Kies datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te skuif";
-Calendar._TT["PART_TODAY"] = " (vandag)";
-Calendar._TT["MON_FIRST"] = "Vertoon Maandag eerste";
-Calendar._TT["SUN_FIRST"] = "Display Sunday first";
-Calendar._TT["CLOSE"] = "Close";
-Calendar._TT["TODAY"] = "Today";

Copied: plog/trunk/js/jscalendar/lang/calendar-af.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-af.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-af.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-af.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,39 @@
+// ** I18N Afrikaans
+Calendar._DN = new Array
+("Sondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrydag",
+ "Saterdag",
+ "Sondag");
+Calendar._MN = new Array
+("Januarie",
+ "Februarie",
+ "Maart",
+ "April",
+ "Mei",
+ "Junie",
+ "Julie",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Verander eerste dag van die week";
+Calendar._TT["PREV_YEAR"] = "Vorige jaar (hou vir keuselys)";
+Calendar._TT["PREV_MONTH"] = "Vorige maand (hou vir keuselys)";
+Calendar._TT["GO_TODAY"] = "Gaan na vandag";
+Calendar._TT["NEXT_MONTH"] = "Volgende maand (hou vir keuselys)";
+Calendar._TT["NEXT_YEAR"] = "Volgende jaar (hou vir keuselys)";
+Calendar._TT["SEL_DATE"] = "Kies datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te skuif";
+Calendar._TT["PART_TODAY"] = " (vandag)";
+Calendar._TT["MON_FIRST"] = "Vertoon Maandag eerste";
+Calendar._TT["SUN_FIRST"] = "Display Sunday first";
+Calendar._TT["CLOSE"] = "Close";
+Calendar._TT["TODAY"] = "Today";

Deleted: plog/trunk/js/jscalendar/lang/calendar-al.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-al.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-al.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,101 +0,0 @@
-// Calendar ALBANIAN language
-//author Rigels Gordani rige at hotmail.com
-
-// ditet
-Calendar._DN = new Array
-("E Diele",
-"E Hene",
-"E Marte",
-"E Merkure",
-"E Enjte",
-"E Premte",
-"E Shtune",
-"E Diele");
-
-//ditet shkurt
-Calendar._SDN = new Array
-("Die",
-"Hen",
-"Mar",
-"Mer",
-"Enj",
-"Pre",
-"Sht",
-"Die");
-
-// muajt
-Calendar._MN = new Array
-("Janar",
-"Shkurt",
-"Mars",
-"Prill",
-"Maj",
-"Qeshor",
-"Korrik",
-"Gusht",
-"Shtator",
-"Tetor",
-"Nentor",
-"Dhjetor");
-
-// muajte shkurt
-Calendar._SMN = new Array
-("Jan",
-"Shk",
-"Mar",
-"Pri",
-"Maj",
-"Qes",
-"Kor",
-"Gus",
-"Sht",
-"Tet",
-"Nen",
-"Dhj");
-
-// ndihmesa
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Per kalendarin";
-
-Calendar._TT["ABOUT"] =
-"Zgjedhes i ores/dates ne DHTML \n" +
-"\n\n" +"Zgjedhja e Dates:\n" +
-"- Perdor butonat \xab, \xbb per te zgjedhur vitin\n" +
-"- Perdor  butonat" + String.fromCharCode(0x2039) + ", " + 
-String.fromCharCode(0x203a) +
-" per te  zgjedhur muajin\n" +
-"- Mbani shtypur butonin e mousit per nje zgjedje me te shpejte.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Zgjedhja e kohes:\n" +
-"- Kliko tek ndonje nga pjeset e ores per ta rritur ate\n" +
-"- ose kliko me Shift per ta zvogeluar ate\n" +
-"- ose cliko dhe terhiq per zgjedhje me te shpejte.";
-
-Calendar._TT["PREV_YEAR"] = "Viti i shkuar (prit per menune)";
-Calendar._TT["PREV_MONTH"] = "Muaji i shkuar (prit per menune)";
-Calendar._TT["GO_TODAY"] = "Sot";
-Calendar._TT["NEXT_MONTH"] = "Muaji i ardhshem (prit per menune)";
-Calendar._TT["NEXT_YEAR"] = "Viti i ardhshem (prit per menune)";
-Calendar._TT["SEL_DATE"] = "Zgjidh daten";
-Calendar._TT["DRAG_TO_MOVE"] = "Terhiqe per te levizur";
-Calendar._TT["PART_TODAY"] = " (sot)";
-
-// "%s" eshte dita e pare e javes
-// %s do te zevendesohet me emrin e dite
-Calendar._TT["DAY_FIRST"] = "Trego te %s te paren";
-
-
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Mbyll";
-Calendar._TT["TODAY"] = "Sot";
-Calendar._TT["TIME_PART"] = "Kliko me (Shift-)ose terhiqe per te ndryshuar 
-vleren";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "Java";
-Calendar._TT["TIME"] = "Koha:";
-

Copied: plog/trunk/js/jscalendar/lang/calendar-al.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-al.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-al.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-al.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,101 @@
+// Calendar ALBANIAN language
+//author Rigels Gordani rige at hotmail.com
+
+// ditet
+Calendar._DN = new Array
+("E Diele",
+"E Hene",
+"E Marte",
+"E Merkure",
+"E Enjte",
+"E Premte",
+"E Shtune",
+"E Diele");
+
+//ditet shkurt
+Calendar._SDN = new Array
+("Die",
+"Hen",
+"Mar",
+"Mer",
+"Enj",
+"Pre",
+"Sht",
+"Die");
+
+// muajt
+Calendar._MN = new Array
+("Janar",
+"Shkurt",
+"Mars",
+"Prill",
+"Maj",
+"Qeshor",
+"Korrik",
+"Gusht",
+"Shtator",
+"Tetor",
+"Nentor",
+"Dhjetor");
+
+// muajte shkurt
+Calendar._SMN = new Array
+("Jan",
+"Shk",
+"Mar",
+"Pri",
+"Maj",
+"Qes",
+"Kor",
+"Gus",
+"Sht",
+"Tet",
+"Nen",
+"Dhj");
+
+// ndihmesa
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Per kalendarin";
+
+Calendar._TT["ABOUT"] =
+"Zgjedhes i ores/dates ne DHTML \n" +
+"\n\n" +"Zgjedhja e Dates:\n" +
+"- Perdor butonat \xab, \xbb per te zgjedhur vitin\n" +
+"- Perdor  butonat" + String.fromCharCode(0x2039) + ", " + 
+String.fromCharCode(0x203a) +
+" per te  zgjedhur muajin\n" +
+"- Mbani shtypur butonin e mousit per nje zgjedje me te shpejte.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zgjedhja e kohes:\n" +
+"- Kliko tek ndonje nga pjeset e ores per ta rritur ate\n" +
+"- ose kliko me Shift per ta zvogeluar ate\n" +
+"- ose cliko dhe terhiq per zgjedhje me te shpejte.";
+
+Calendar._TT["PREV_YEAR"] = "Viti i shkuar (prit per menune)";
+Calendar._TT["PREV_MONTH"] = "Muaji i shkuar (prit per menune)";
+Calendar._TT["GO_TODAY"] = "Sot";
+Calendar._TT["NEXT_MONTH"] = "Muaji i ardhshem (prit per menune)";
+Calendar._TT["NEXT_YEAR"] = "Viti i ardhshem (prit per menune)";
+Calendar._TT["SEL_DATE"] = "Zgjidh daten";
+Calendar._TT["DRAG_TO_MOVE"] = "Terhiqe per te levizur";
+Calendar._TT["PART_TODAY"] = " (sot)";
+
+// "%s" eshte dita e pare e javes
+// %s do te zevendesohet me emrin e dite
+Calendar._TT["DAY_FIRST"] = "Trego te %s te paren";
+
+
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Mbyll";
+Calendar._TT["TODAY"] = "Sot";
+Calendar._TT["TIME_PART"] = "Kliko me (Shift-)ose terhiqe per te ndryshuar 
+vleren";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Java";
+Calendar._TT["TIME"] = "Koha:";
+

Deleted: plog/trunk/js/jscalendar/lang/calendar-bg.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-bg.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-bg.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,124 +0,0 @@
-// ** I18N
-
-// Calendar BG language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Translator: Valentin Sheiretsky, <valio at valio.eu.org>
-// Encoding: Windows-1251
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Íåäåëÿ",
- "Ïîíåäåëíèê",
- "Âòîðíèê",
- "Ñðÿäà",
- "×åòâúðòúê",
- "Ïåòúê",
- "Ñúáîòà",
- "Íåäåëÿ");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Íåä",
- "Ïîí",
- "Âòî",
- "Ñðÿ",
- "×åò",
- "Ïåò",
- "Ñúá",
- "Íåä");
-
-// full month names
-Calendar._MN = new Array
-("ßíóàðè",
- "Ôåâðóàðè",
- "Ìàðò",
- "Àïðèë",
- "Ìàé",
- "Þíè",
- "Þëè",
- "Àâãóñò",
- "Ñåïòåìâðè",
- "Îêòîìâðè",
- "Íîåìâðè",
- "Äåêåìâðè");
-
-// short month names
-Calendar._SMN = new Array
-("ßíó",
- "Ôåâ",
- "Ìàð",
- "Àïð",
- "Ìàé",
- "Þíè",
- "Þëè",
- "Àâã",
- "Ñåï",
- "Îêò",
- "Íîå",
- "Äåê");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Èíôîðìàöèÿ çà êàëåíäàðà";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Date selection:\n" +
-"- Use the \xab, \xbb buttons to select year\n" +
-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
-"- Hold mouse button on any of the above buttons for faster selection.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Time selection:\n" +
-"- Click on any of the time parts to increase it\n" +
-"- or Shift-click to decrease it\n" +
-"- or click and drag for faster selection.";
-
-Calendar._TT["PREV_YEAR"] = "Ïðåäíà ãîäèíà (çàäðúæòå çà ìåíþ)";
-Calendar._TT["PREV_MONTH"] = "Ïðåäåí ìåñåö (çàäðúæòå çà ìåíþ)";
-Calendar._TT["GO_TODAY"] = "Èçáåðåòå äíåñ";
-Calendar._TT["NEXT_MONTH"] = "Ñëåäâàù ìåñåö (çàäðúæòå çà ìåíþ)";
-Calendar._TT["NEXT_YEAR"] = "Ñëåäâàùà ãîäèíà (çàäðúæòå çà ìåíþ)";
-Calendar._TT["SEL_DATE"] = "Èçáåðåòå äàòà";
-Calendar._TT["DRAG_TO_MOVE"] = "Ïðåìåñòâàíå";
-Calendar._TT["PART_TODAY"] = " (äíåñ)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "%s êàòî ïúðâè äåí";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Çàòâîðåòå";
-Calendar._TT["TODAY"] = "Äíåñ";
-Calendar._TT["TIME_PART"] = "(Shift-)Click èëè drag çà äà ïðîìåíèòå ñòîéíîñòòà";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%A - %e %B %Y";
-
-Calendar._TT["WK"] = "Ñåäì";
-Calendar._TT["TIME"] = "×àñ:";

Copied: plog/trunk/js/jscalendar/lang/calendar-bg.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-bg.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-bg.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-bg.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar BG language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Translator: Valentin Sheiretsky, <valio at valio.eu.org>
+// Encoding: Windows-1251
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Íåäåëÿ",
+ "Ïîíåäåëíèê",
+ "Âòîðíèê",
+ "Ñðÿäà",
+ "×åòâúðòúê",
+ "Ïåòúê",
+ "Ñúáîòà",
+ "Íåäåëÿ");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Íåä",
+ "Ïîí",
+ "Âòî",
+ "Ñðÿ",
+ "×åò",
+ "Ïåò",
+ "Ñúá",
+ "Íåä");
+
+// full month names
+Calendar._MN = new Array
+("ßíóàðè",
+ "Ôåâðóàðè",
+ "Ìàðò",
+ "Àïðèë",
+ "Ìàé",
+ "Þíè",
+ "Þëè",
+ "Àâãóñò",
+ "Ñåïòåìâðè",
+ "Îêòîìâðè",
+ "Íîåìâðè",
+ "Äåêåìâðè");
+
+// short month names
+Calendar._SMN = new Array
+("ßíó",
+ "Ôåâ",
+ "Ìàð",
+ "Àïð",
+ "Ìàé",
+ "Þíè",
+ "Þëè",
+ "Àâã",
+ "Ñåï",
+ "Îêò",
+ "Íîå",
+ "Äåê");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Èíôîðìàöèÿ çà êàëåíäàðà";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "Ïðåäíà ãîäèíà (çàäðúæòå çà ìåíþ)";
+Calendar._TT["PREV_MONTH"] = "Ïðåäåí ìåñåö (çàäðúæòå çà ìåíþ)";
+Calendar._TT["GO_TODAY"] = "Èçáåðåòå äíåñ";
+Calendar._TT["NEXT_MONTH"] = "Ñëåäâàù ìåñåö (çàäðúæòå çà ìåíþ)";
+Calendar._TT["NEXT_YEAR"] = "Ñëåäâàùà ãîäèíà (çàäðúæòå çà ìåíþ)";
+Calendar._TT["SEL_DATE"] = "Èçáåðåòå äàòà";
+Calendar._TT["DRAG_TO_MOVE"] = "Ïðåìåñòâàíå";
+Calendar._TT["PART_TODAY"] = " (äíåñ)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "%s êàòî ïúðâè äåí";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Çàòâîðåòå";
+Calendar._TT["TODAY"] = "Äíåñ";
+Calendar._TT["TIME_PART"] = "(Shift-)Click èëè drag çà äà ïðîìåíèòå ñòîéíîñòòà";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A - %e %B %Y";
+
+Calendar._TT["WK"] = "Ñåäì";
+Calendar._TT["TIME"] = "×àñ:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-big5-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,127 +0,0 @@
-// ** I18N
-
-// Calendar big5-utf8 language
-// Author: Gary Fu, <gary at garyfu.idv.tw>
-// Encoding: utf8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-	
-// full day names
-Calendar._DN = new Array
-("星期日",
- "星期一",
- "星期二",
- "星期三",
- "星期四",
- "星期五",
- "星期六",
- "星期日");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("æ—¥",
- "一",
- "二",
- "三",
- "å››",
- "五",
- "å…­",
- "æ—¥");
-
-// First day of the week. "0" means display Sunday first, "1" means display
-// Monday first, etc.
-Calendar._FD = 0;
-
-// full month names
-Calendar._MN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// short month names
-Calendar._SMN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "關於";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"日期選擇方法:\n" +
-"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
-"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
-"- 按住上面的按鈕可以加快選取";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"時間選擇方法:\n" +
-"- 點擊任何的時間部份可增加其值\n" +
-"- 同時按Shift鍵再點擊可減少其值\n" +
-"- 點擊並拖曳可加快改變的值";
-
-Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
-Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
-Calendar._TT["GO_TODAY"] = "到今日";
-Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
-Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
-Calendar._TT["SEL_DATE"] = "選擇日期";
-Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
-Calendar._TT["PART_TODAY"] = " (今日)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "關閉";
-Calendar._TT["TODAY"] = "今日";
-Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%b %e (%a)";
-
-Calendar._TT["WK"] = "週";
-Calendar._TT["TIME"] = "時間:";

Copied: plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-big5-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-big5-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar big5-utf8 language
+// Author: Gary Fu, <gary at garyfu.idv.tw>
+// Encoding: utf8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+	
+// full day names
+Calendar._DN = new Array
+("星期日",
+ "星期一",
+ "星期二",
+ "星期三",
+ "星期四",
+ "星期五",
+ "星期六",
+ "星期日");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("æ—¥",
+ "一",
+ "二",
+ "三",
+ "å››",
+ "五",
+ "å…­",
+ "æ—¥");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// short month names
+Calendar._SMN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "關於";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"日期選擇方法:\n" +
+"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
+"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
+"- 按住上面的按鈕可以加快選取";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"時間選擇方法:\n" +
+"- 點擊任何的時間部份可增加其值\n" +
+"- 同時按Shift鍵再點擊可減少其值\n" +
+"- 點擊並拖曳可加快改變的值";
+
+Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
+Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
+Calendar._TT["GO_TODAY"] = "到今日";
+Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
+Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
+Calendar._TT["SEL_DATE"] = "選擇日期";
+Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
+Calendar._TT["PART_TODAY"] = " (今日)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "關閉";
+Calendar._TT["TODAY"] = "今日";
+Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b %e (%a)";
+
+Calendar._TT["WK"] = "週";
+Calendar._TT["TIME"] = "時間:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-big5.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-big5.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-big5.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar big5 language
-// Author: Gary Fu, <gary at garyfu.idv.tw>
-// Encoding: big5
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-	
-// full day names
-Calendar._DN = new Array
-("¬P´Á¤é",
- "¬P´Á¤@",
- "¬P´Á¤G",
- "¬P´Á¤T",
- "¬P´Á¥|",
- "¬P´Á¤­",
- "¬P´Á¤»",
- "¬P´Á¤é");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("¤é",
- "¤@",
- "¤G",
- "¤T",
- "¥|",
- "¤­",
- "¤»",
- "¤é");
-
-// full month names
-Calendar._MN = new Array
-("¤@¤ë",
- "¤G¤ë",
- "¤T¤ë",
- "¥|¤ë",
- "¤­¤ë",
- "¤»¤ë",
- "¤C¤ë",
- "¤K¤ë",
- "¤E¤ë",
- "¤Q¤ë",
- "¤Q¤@¤ë",
- "¤Q¤G¤ë");
-
-// short month names
-Calendar._SMN = new Array
-("¤@¤ë",
- "¤G¤ë",
- "¤T¤ë",
- "¥|¤ë",
- "¤­¤ë",
- "¤»¤ë",
- "¤C¤ë",
- "¤K¤ë",
- "¤E¤ë",
- "¤Q¤ë",
- "¤Q¤@¤ë",
- "¤Q¤G¤ë");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Ãö©ó";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"¤é´Á¿ï¾Ü¤èªk:\n" +
-"- ¨Ï¥Î \xab, \xbb «ö¶s¥i¿ï¾Ü¦~¥÷\n" +
-"- ¨Ï¥Î " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " «ö¶s¥i¿ï¾Ü¤ë¥÷\n" +
-"- «ö¦í¤W­±ªº«ö¶s¥i¥H¥[§Ö¿ï¨ú";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"®É¶¡¿ï¾Ü¤èªk:\n" +
-"- ÂIÀ»¥ô¦óªº®É¶¡³¡¥÷¥i¼W¥[¨ä­È\n" +
-"- ¦P®É«öShiftÁä¦AÂIÀ»¥i´î¤Ö¨ä­È\n" +
-"- ÂIÀ»¨Ã©ì¦²¥i¥[§Ö§ïÅܪº­È";
-
-Calendar._TT["PREV_YEAR"] = "¤W¤@¦~ («ö¦í¿ï³æ)";
-Calendar._TT["PREV_MONTH"] = "¤U¤@¦~ («ö¦í¿ï³æ)";
-Calendar._TT["GO_TODAY"] = "¨ì¤µ¤é";
-Calendar._TT["NEXT_MONTH"] = "¤W¤@¤ë («ö¦í¿ï³æ)";
-Calendar._TT["NEXT_YEAR"] = "¤U¤@¤ë («ö¦í¿ï³æ)";
-Calendar._TT["SEL_DATE"] = "¿ï¾Ü¤é´Á";
-Calendar._TT["DRAG_TO_MOVE"] = "©ì¦²";
-Calendar._TT["PART_TODAY"] = " (¤µ¤é)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "±N %s Åã¥Ü¦b«e";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Ãö³¬";
-Calendar._TT["TODAY"] = "¤µ¤é";
-Calendar._TT["TIME_PART"] = "ÂIÀ»or©ì¦²¥i§ïÅܮɶ¡(¦P®É«öShift¬°´î)";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "¶g";
-Calendar._TT["TIME"] = "Time:";

Copied: plog/trunk/js/jscalendar/lang/calendar-big5.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-big5.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-big5.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-big5.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar big5 language
+// Author: Gary Fu, <gary at garyfu.idv.tw>
+// Encoding: big5
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+	
+// full day names
+Calendar._DN = new Array
+("¬P´Á¤é",
+ "¬P´Á¤@",
+ "¬P´Á¤G",
+ "¬P´Á¤T",
+ "¬P´Á¥|",
+ "¬P´Á¤­",
+ "¬P´Á¤»",
+ "¬P´Á¤é");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("¤é",
+ "¤@",
+ "¤G",
+ "¤T",
+ "¥|",
+ "¤­",
+ "¤»",
+ "¤é");
+
+// full month names
+Calendar._MN = new Array
+("¤@¤ë",
+ "¤G¤ë",
+ "¤T¤ë",
+ "¥|¤ë",
+ "¤­¤ë",
+ "¤»¤ë",
+ "¤C¤ë",
+ "¤K¤ë",
+ "¤E¤ë",
+ "¤Q¤ë",
+ "¤Q¤@¤ë",
+ "¤Q¤G¤ë");
+
+// short month names
+Calendar._SMN = new Array
+("¤@¤ë",
+ "¤G¤ë",
+ "¤T¤ë",
+ "¥|¤ë",
+ "¤­¤ë",
+ "¤»¤ë",
+ "¤C¤ë",
+ "¤K¤ë",
+ "¤E¤ë",
+ "¤Q¤ë",
+ "¤Q¤@¤ë",
+ "¤Q¤G¤ë");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Ãö©ó";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"¤é´Á¿ï¾Ü¤èªk:\n" +
+"- ¨Ï¥Î \xab, \xbb «ö¶s¥i¿ï¾Ü¦~¥÷\n" +
+"- ¨Ï¥Î " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " «ö¶s¥i¿ï¾Ü¤ë¥÷\n" +
+"- «ö¦í¤W­±ªº«ö¶s¥i¥H¥[§Ö¿ï¨ú";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"®É¶¡¿ï¾Ü¤èªk:\n" +
+"- ÂIÀ»¥ô¦óªº®É¶¡³¡¥÷¥i¼W¥[¨ä­È\n" +
+"- ¦P®É«öShiftÁä¦AÂIÀ»¥i´î¤Ö¨ä­È\n" +
+"- ÂIÀ»¨Ã©ì¦²¥i¥[§Ö§ïÅܪº­È";
+
+Calendar._TT["PREV_YEAR"] = "¤W¤@¦~ («ö¦í¿ï³æ)";
+Calendar._TT["PREV_MONTH"] = "¤U¤@¦~ («ö¦í¿ï³æ)";
+Calendar._TT["GO_TODAY"] = "¨ì¤µ¤é";
+Calendar._TT["NEXT_MONTH"] = "¤W¤@¤ë («ö¦í¿ï³æ)";
+Calendar._TT["NEXT_YEAR"] = "¤U¤@¤ë («ö¦í¿ï³æ)";
+Calendar._TT["SEL_DATE"] = "¿ï¾Ü¤é´Á";
+Calendar._TT["DRAG_TO_MOVE"] = "©ì¦²";
+Calendar._TT["PART_TODAY"] = " (¤µ¤é)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "±N %s Åã¥Ü¦b«e";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Ãö³¬";
+Calendar._TT["TODAY"] = "¤µ¤é";
+Calendar._TT["TIME_PART"] = "ÂIÀ»or©ì¦²¥i§ïÅܮɶ¡(¦P®É«öShift¬°´î)";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "¶g";
+Calendar._TT["TIME"] = "Time:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-br.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-br.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-br.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,108 +0,0 @@
-// ** I18N
-
-// Calendar pt-BR language
-// Author: Fernando Dourado, <fernando.dourado at ig.com.br>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Domingo",
- "Segunda",
- "Terça",
- "Quarta",
- "Quinta",
- "Sexta",
- "Sabádo",
- "Domingo");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-// [No changes using default values]
-
-// full month names
-Calendar._MN = new Array
-("Janeiro",
- "Fevereiro",
- "Março",
- "Abril",
- "Maio",
- "Junho",
- "Julho",
- "Agosto",
- "Setembro",
- "Outubro",
- "Novembro",
- "Dezembro");
-
-// short month names
-// [No changes using default values]
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Sobre o calendário";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Translate to portuguese Brazil (pt-BR) by Fernando Dourado (fernando.dourado at ig.com.br)\n" +
-"Tradução para o português Brasil (pt-BR) por Fernando Dourado (fernando.dourado at ig.com.br)" +
-"\n\n" +
-"Selecionar data:\n" +
-"- Use as teclas \xab, \xbb para selecionar o ano\n" +
-"- Use as teclas " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mês\n" +
-"- Clique e segure com o mouse em qualquer botão para selecionar rapidamente.";
-
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selecionar hora:\n" +
-"- Clique em qualquer uma das partes da hora para aumentar\n" +
-"- ou Shift-clique para diminuir\n" +
-"- ou clique e arraste para selecionar rapidamente.";
-
-Calendar._TT["PREV_YEAR"] = "Ano anterior (clique e segure para menu)";
-Calendar._TT["PREV_MONTH"] = "Mês anterior (clique e segure para menu)";
-Calendar._TT["GO_TODAY"] = "Ir para a data atual";
-Calendar._TT["NEXT_MONTH"] = "Próximo mês (clique e segure para menu)";
-Calendar._TT["NEXT_YEAR"] = "Próximo ano (clique e segure para menu)";
-Calendar._TT["SEL_DATE"] = "Selecione uma data";
-Calendar._TT["DRAG_TO_MOVE"] = "Clique e segure para mover";
-Calendar._TT["PART_TODAY"] = " (hoje)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Exibir %s primeiro";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Fechar";
-Calendar._TT["TODAY"] = "Hoje";
-Calendar._TT["TIME_PART"] = "(Shift-)Clique ou arraste para mudar o valor";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%d de %B de %Y";
-
-Calendar._TT["WK"] = "sem";
-Calendar._TT["TIME"] = "Hora:";
-

Copied: plog/trunk/js/jscalendar/lang/calendar-br.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-br.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-br.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-br.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,108 @@
+// ** I18N
+
+// Calendar pt-BR language
+// Author: Fernando Dourado, <fernando.dourado at ig.com.br>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Segunda",
+ "Terça",
+ "Quarta",
+ "Quinta",
+ "Sexta",
+ "Sabádo",
+ "Domingo");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+// [No changes using default values]
+
+// full month names
+Calendar._MN = new Array
+("Janeiro",
+ "Fevereiro",
+ "Março",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro");
+
+// short month names
+// [No changes using default values]
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Sobre o calendário";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Translate to portuguese Brazil (pt-BR) by Fernando Dourado (fernando.dourado at ig.com.br)\n" +
+"Tradução para o português Brasil (pt-BR) por Fernando Dourado (fernando.dourado at ig.com.br)" +
+"\n\n" +
+"Selecionar data:\n" +
+"- Use as teclas \xab, \xbb para selecionar o ano\n" +
+"- Use as teclas " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mês\n" +
+"- Clique e segure com o mouse em qualquer botão para selecionar rapidamente.";
+
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selecionar hora:\n" +
+"- Clique em qualquer uma das partes da hora para aumentar\n" +
+"- ou Shift-clique para diminuir\n" +
+"- ou clique e arraste para selecionar rapidamente.";
+
+Calendar._TT["PREV_YEAR"] = "Ano anterior (clique e segure para menu)";
+Calendar._TT["PREV_MONTH"] = "Mês anterior (clique e segure para menu)";
+Calendar._TT["GO_TODAY"] = "Ir para a data atual";
+Calendar._TT["NEXT_MONTH"] = "Próximo mês (clique e segure para menu)";
+Calendar._TT["NEXT_YEAR"] = "Próximo ano (clique e segure para menu)";
+Calendar._TT["SEL_DATE"] = "Selecione uma data";
+Calendar._TT["DRAG_TO_MOVE"] = "Clique e segure para mover";
+Calendar._TT["PART_TODAY"] = " (hoje)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Exibir %s primeiro";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Fechar";
+Calendar._TT["TODAY"] = "Hoje";
+Calendar._TT["TIME_PART"] = "(Shift-)Clique ou arraste para mudar o valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%d de %B de %Y";
+
+Calendar._TT["WK"] = "sem";
+Calendar._TT["TIME"] = "Hora:";
+

Deleted: plog/trunk/js/jscalendar/lang/calendar-ca.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ca.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-ca.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar CA language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Diumenge",
- "Dilluns",
- "Dimarts",
- "Dimecres",
- "Dijous",
- "Divendres",
- "Dissabte",
- "Diumenge");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Diu",
- "Dil",
- "Dmt",
- "Dmc",
- "Dij",
- "Div",
- "Dis",
- "Diu");
-
-// full month names
-Calendar._MN = new Array
-("Gener",
- "Febrer",
- "Març",
- "Abril",
- "Maig",
- "Juny",
- "Juliol",
- "Agost",
- "Setembre",
- "Octubre",
- "Novembre",
- "Desembre");
-
-// short month names
-Calendar._SMN = new Array
-("Gen",
- "Feb",
- "Mar",
- "Abr",
- "Mai",
- "Jun",
- "Jul",
- "Ago",
- "Set",
- "Oct",
- "Nov",
- "Des");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Sobre el calendari";
-
-Calendar._TT["ABOUT"] =
-"DHTML Selector de Data/Hora\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Sel.lecció de Dates:\n" +
-"- Fes servir els botons \xab, \xbb per sel.leccionar l'any\n" +
-"- Fes servir els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per se.lecciconar el mes\n" +
-"- Manté el ratolí apretat en qualsevol dels anteriors per sel.lecció ràpida.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Time selection:\n" +
-"- claca en qualsevol de les parts de la hora per augmentar-les\n" +
-"- o Shift-click per decrementar-la\n" +
-"- or click and arrastra per sel.lecció ràpida.";
-
-Calendar._TT["PREV_YEAR"] = "Any anterior (Mantenir per menu)";
-Calendar._TT["PREV_MONTH"] = "Mes anterior (Mantenir per menu)";
-Calendar._TT["GO_TODAY"] = "Anar a avui";
-Calendar._TT["NEXT_MONTH"] = "Mes següent (Mantenir per menu)";
-Calendar._TT["NEXT_YEAR"] = "Any següent (Mantenir per menu)";
-Calendar._TT["SEL_DATE"] = "Sel.leccionar data";
-Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per moure";
-Calendar._TT["PART_TODAY"] = " (avui)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Mostra %s primer";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Tanca";
-Calendar._TT["TODAY"] = "Avui";
-Calendar._TT["TIME_PART"] = "(Shift-)Click a arrastra per canviar el valor";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "st";
-Calendar._TT["TIME"] = "Hora:";

Copied: plog/trunk/js/jscalendar/lang/calendar-ca.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ca.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-ca.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-ca.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar CA language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Diumenge",
+ "Dilluns",
+ "Dimarts",
+ "Dimecres",
+ "Dijous",
+ "Divendres",
+ "Dissabte",
+ "Diumenge");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Diu",
+ "Dil",
+ "Dmt",
+ "Dmc",
+ "Dij",
+ "Div",
+ "Dis",
+ "Diu");
+
+// full month names
+Calendar._MN = new Array
+("Gener",
+ "Febrer",
+ "Març",
+ "Abril",
+ "Maig",
+ "Juny",
+ "Juliol",
+ "Agost",
+ "Setembre",
+ "Octubre",
+ "Novembre",
+ "Desembre");
+
+// short month names
+Calendar._SMN = new Array
+("Gen",
+ "Feb",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Oct",
+ "Nov",
+ "Des");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Sobre el calendari";
+
+Calendar._TT["ABOUT"] =
+"DHTML Selector de Data/Hora\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Sel.lecció de Dates:\n" +
+"- Fes servir els botons \xab, \xbb per sel.leccionar l'any\n" +
+"- Fes servir els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per se.lecciconar el mes\n" +
+"- Manté el ratolí apretat en qualsevol dels anteriors per sel.lecció ràpida.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- claca en qualsevol de les parts de la hora per augmentar-les\n" +
+"- o Shift-click per decrementar-la\n" +
+"- or click and arrastra per sel.lecció ràpida.";
+
+Calendar._TT["PREV_YEAR"] = "Any anterior (Mantenir per menu)";
+Calendar._TT["PREV_MONTH"] = "Mes anterior (Mantenir per menu)";
+Calendar._TT["GO_TODAY"] = "Anar a avui";
+Calendar._TT["NEXT_MONTH"] = "Mes següent (Mantenir per menu)";
+Calendar._TT["NEXT_YEAR"] = "Any següent (Mantenir per menu)";
+Calendar._TT["SEL_DATE"] = "Sel.leccionar data";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per moure";
+Calendar._TT["PART_TODAY"] = " (avui)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostra %s primer";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Tanca";
+Calendar._TT["TODAY"] = "Avui";
+Calendar._TT["TIME_PART"] = "(Shift-)Click a arrastra per canviar el valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "st";
+Calendar._TT["TIME"] = "Hora:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-cs-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,65 +0,0 @@
-/* 
-	calendar-cs-win.js
-	language: Czech
-	encoding: windows-1250
-	author: Lubos Jerabek (xnet at seznam.cz)
-	        Jan Uhlir (espinosa at centrum.cz)
-*/
-
-// ** I18N
-Calendar._DN  = new Array('Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota','Neděle');
-Calendar._SDN = new Array('Ne','Po','Út','St','Čt','Pá','So','Ne');
-Calendar._MN  = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
-Calendar._SMN = new Array('Led','Úno','Bře','Dub','Kvě','Črv','Čvc','Srp','Zář','Říj','Lis','Pro');
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "O komponentě kalendář";
-Calendar._TT["TOGGLE"] = "Změna prvního dne v týdnu";
-Calendar._TT["PREV_YEAR"] = "Předchozí rok (přidrž pro menu)";
-Calendar._TT["PREV_MONTH"] = "Předchozí měsíc (přidrž pro menu)";
-Calendar._TT["GO_TODAY"] = "Dnešní datum";
-Calendar._TT["NEXT_MONTH"] = "Další měsíc (přidrž pro menu)";
-Calendar._TT["NEXT_YEAR"] = "Další rok (přidrž pro menu)";
-Calendar._TT["SEL_DATE"] = "Vyber datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Chyť a táhni, pro přesun";
-Calendar._TT["PART_TODAY"] = " (dnes)";
-Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondělí";
-//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Neděli";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Výběr datumu:\n" +
-"- Use the \xab, \xbb buttons to select year\n" +
-"- Použijte tlačítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výběru měsíce\n" +
-"- Podržte tlačítko myši na jakémkoliv z těch tlačítek pro rychlejší výběr.";
-
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Výběr času:\n" +
-"- Klikněte na jakoukoliv z částí výběru času pro zvýšení.\n" +
-"- nebo Shift-click pro snížení\n" +
-"- nebo klikněte a táhněte pro rychlejší výběr.";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Zavřít";
-Calendar._TT["TODAY"] = "Dnes";
-Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro změnu hodnoty";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "ÄŒas:";

Copied: plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-cs-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-cs-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,65 @@
+/* 
+	calendar-cs-win.js
+	language: Czech
+	encoding: windows-1250
+	author: Lubos Jerabek (xnet at seznam.cz)
+	        Jan Uhlir (espinosa at centrum.cz)
+*/
+
+// ** I18N
+Calendar._DN  = new Array('Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota','Neděle');
+Calendar._SDN = new Array('Ne','Po','Út','St','Čt','Pá','So','Ne');
+Calendar._MN  = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
+Calendar._SMN = new Array('Led','Úno','Bře','Dub','Kvě','Črv','Čvc','Srp','Zář','Říj','Lis','Pro');
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O komponentě kalendář";
+Calendar._TT["TOGGLE"] = "Změna prvního dne v týdnu";
+Calendar._TT["PREV_YEAR"] = "Předchozí rok (přidrž pro menu)";
+Calendar._TT["PREV_MONTH"] = "Předchozí měsíc (přidrž pro menu)";
+Calendar._TT["GO_TODAY"] = "Dnešní datum";
+Calendar._TT["NEXT_MONTH"] = "Další měsíc (přidrž pro menu)";
+Calendar._TT["NEXT_YEAR"] = "Další rok (přidrž pro menu)";
+Calendar._TT["SEL_DATE"] = "Vyber datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Chyť a táhni, pro přesun";
+Calendar._TT["PART_TODAY"] = " (dnes)";
+Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondělí";
+//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Neděli";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Výběr datumu:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Použijte tlačítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výběru měsíce\n" +
+"- Podržte tlačítko myši na jakémkoliv z těch tlačítek pro rychlejší výběr.";
+
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Výběr času:\n" +
+"- Klikněte na jakoukoliv z částí výběru času pro zvýšení.\n" +
+"- nebo Shift-click pro snížení\n" +
+"- nebo klikněte a táhněte pro rychlejší výběr.";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Zavřít";
+Calendar._TT["TODAY"] = "Dnes";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro změnu hodnoty";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "ÄŒas:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-cs-win.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-cs-win.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-cs-win.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,65 +0,0 @@
-/* 
-	calendar-cs-win.js
-	language: Czech
-	encoding: windows-1250
-	author: Lubos Jerabek (xnet at seznam.cz)
-	        Jan Uhlir (espinosa at centrum.cz)
-*/
-
-// ** I18N
-Calendar._DN  = new Array('Nedìle','Pondìlí','Úterý','Støeda','Ètvrtek','Pátek','Sobota','Nedìle');
-Calendar._SDN = new Array('Ne','Po','Út','St','Èt','Pá','So','Ne');
-Calendar._MN  = new Array('Leden','Únor','Bøezen','Duben','Kvìten','Èerven','Èervenec','Srpen','Záøí','Øíjen','Listopad','Prosinec');
-Calendar._SMN = new Array('Led','Úno','Bøe','Dub','Kvì','Èrv','Èvc','Srp','Záø','Øíj','Lis','Pro');
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "O komponentì kalendáø";
-Calendar._TT["TOGGLE"] = "Zmìna prvního dne v týdnu";
-Calendar._TT["PREV_YEAR"] = "Pøedchozí rok (pøidrž pro menu)";
-Calendar._TT["PREV_MONTH"] = "Pøedchozí mìsíc (pøidrž pro menu)";
-Calendar._TT["GO_TODAY"] = "Dnešní datum";
-Calendar._TT["NEXT_MONTH"] = "Další mìsíc (pøidrž pro menu)";
-Calendar._TT["NEXT_YEAR"] = "Další rok (pøidrž pro menu)";
-Calendar._TT["SEL_DATE"] = "Vyber datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Chy a táhni, pro pøesun";
-Calendar._TT["PART_TODAY"] = " (dnes)";
-Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondìlí";
-//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Nedìli";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Výbìr datumu:\n" +
-"- Use the \xab, \xbb buttons to select year\n" +
-"- Použijte tlaèítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výbìru mìsíce\n" +
-"- Podržte tlaèítko myši na jakémkoliv z tìch tlaèítek pro rychlejší výbìr.";
-
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Výbìr èasu:\n" +
-"- Kliknìte na jakoukoliv z èástí výbìru èasu pro zvýšení.\n" +
-"- nebo Shift-click pro snížení\n" +
-"- nebo kliknìte a táhnìte pro rychlejší výbìr.";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Zavøít";
-Calendar._TT["TODAY"] = "Dnes";
-Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro zmìnu hodnoty";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "Èas:";

Copied: plog/trunk/js/jscalendar/lang/calendar-cs-win.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-cs-win.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-cs-win.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-cs-win.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,65 @@
+/* 
+	calendar-cs-win.js
+	language: Czech
+	encoding: windows-1250
+	author: Lubos Jerabek (xnet at seznam.cz)
+	        Jan Uhlir (espinosa at centrum.cz)
+*/
+
+// ** I18N
+Calendar._DN  = new Array('Nedìle','Pondìlí','Úterý','Støeda','Ètvrtek','Pátek','Sobota','Nedìle');
+Calendar._SDN = new Array('Ne','Po','Út','St','Èt','Pá','So','Ne');
+Calendar._MN  = new Array('Leden','Únor','Bøezen','Duben','Kvìten','Èerven','Èervenec','Srpen','Záøí','Øíjen','Listopad','Prosinec');
+Calendar._SMN = new Array('Led','Úno','Bøe','Dub','Kvì','Èrv','Èvc','Srp','Záø','Øíj','Lis','Pro');
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O komponentì kalendáø";
+Calendar._TT["TOGGLE"] = "Zmìna prvního dne v týdnu";
+Calendar._TT["PREV_YEAR"] = "Pøedchozí rok (pøidrž pro menu)";
+Calendar._TT["PREV_MONTH"] = "Pøedchozí mìsíc (pøidrž pro menu)";
+Calendar._TT["GO_TODAY"] = "Dnešní datum";
+Calendar._TT["NEXT_MONTH"] = "Další mìsíc (pøidrž pro menu)";
+Calendar._TT["NEXT_YEAR"] = "Další rok (pøidrž pro menu)";
+Calendar._TT["SEL_DATE"] = "Vyber datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Chy a táhni, pro pøesun";
+Calendar._TT["PART_TODAY"] = " (dnes)";
+Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondìlí";
+//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Nedìli";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Výbìr datumu:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Použijte tlaèítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výbìru mìsíce\n" +
+"- Podržte tlaèítko myši na jakémkoliv z tìch tlaèítek pro rychlejší výbìr.";
+
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Výbìr èasu:\n" +
+"- Kliknìte na jakoukoliv z èástí výbìru èasu pro zvýšení.\n" +
+"- nebo Shift-click pro snížení\n" +
+"- nebo kliknìte a táhnìte pro rychlejší výbìr.";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Zavøít";
+Calendar._TT["TODAY"] = "Dnes";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro zmìnu hodnoty";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Èas:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-da.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-da.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-da.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar DA language
-// Author: Michael Thingmand Henriksen, <michael (a) thingmand dot dk>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible. We strongly believe that
-// Unicode is the answer to a real internationalized world. Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Søndag",
-"Mandag",
-"Tirsdag",
-"Onsdag",
-"Torsdag",
-"Fredag",
-"Lørdag",
-"Søndag");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary. We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-// Calendar._SDN_len = N; // short day name length
-// Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Søn",
-"Man",
-"Tir",
-"Ons",
-"Tor",
-"Fre",
-"Lør",
-"Søn");
-
-// full month names
-Calendar._MN = new Array
-("Januar",
-"Februar",
-"Marts",
-"April",
-"Maj",
-"Juni",
-"Juli",
-"August",
-"September",
-"Oktober",
-"November",
-"December");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
-"Feb",
-"Mar",
-"Apr",
-"Maj",
-"Jun",
-"Jul",
-"Aug",
-"Sep",
-"Okt",
-"Nov",
-"Dec");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Om Kalenderen";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For den seneste version besøg: http://www.dynarch.com/projects/calendar/\n"; +
-"Distribueret under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detajler." +
-"\n\n" +
-"Valg af dato:\n" +
-"- Brug \xab, \xbb knapperne for at vælge år\n" +
-"- Brug " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knapperne for at vælge måned\n" +
-"- Hold knappen på musen nede på knapperne ovenfor for hurtigere valg.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Valg af tid:\n" +
-"- Klik på en vilkårlig del for større værdi\n" +
-"- eller Shift-klik for for mindre værdi\n" +
-"- eller klik og træk for hurtigere valg.";
-
-Calendar._TT["PREV_YEAR"] = "Ét år tilbage (hold for menu)";
-Calendar._TT["PREV_MONTH"] = "Én måned tilbage (hold for menu)";
-Calendar._TT["GO_TODAY"] = "GÃ¥ til i dag";
-Calendar._TT["NEXT_MONTH"] = "Én måned frem (hold for menu)";
-Calendar._TT["NEXT_YEAR"] = "Ét år frem (hold for menu)";
-Calendar._TT["SEL_DATE"] = "Vælg dag";
-Calendar._TT["DRAG_TO_MOVE"] = "Træk vinduet";
-Calendar._TT["PART_TODAY"] = " (i dag)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Vis %s først";
-
-// This may be locale-dependent. It specifies the week-end days, as an array
-// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Luk";
-Calendar._TT["TODAY"] = "I dag";
-Calendar._TT["TIME_PART"] = "(Shift-)klik eller træk for at ændre værdi";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "Uge";
-Calendar._TT["TIME"] = "Tid:";

Copied: plog/trunk/js/jscalendar/lang/calendar-da.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-da.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-da.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-da.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar DA language
+// Author: Michael Thingmand Henriksen, <michael (a) thingmand dot dk>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible. We strongly believe that
+// Unicode is the answer to a real internationalized world. Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Søndag",
+"Mandag",
+"Tirsdag",
+"Onsdag",
+"Torsdag",
+"Fredag",
+"Lørdag",
+"Søndag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary. We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+// Calendar._SDN_len = N; // short day name length
+// Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Søn",
+"Man",
+"Tir",
+"Ons",
+"Tor",
+"Fre",
+"Lør",
+"Søn");
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+"Februar",
+"Marts",
+"April",
+"Maj",
+"Juni",
+"Juli",
+"August",
+"September",
+"Oktober",
+"November",
+"December");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+"Feb",
+"Mar",
+"Apr",
+"Maj",
+"Jun",
+"Jul",
+"Aug",
+"Sep",
+"Okt",
+"Nov",
+"Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Om Kalenderen";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For den seneste version besøg: http://www.dynarch.com/projects/calendar/\n"; +
+"Distribueret under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detajler." +
+"\n\n" +
+"Valg af dato:\n" +
+"- Brug \xab, \xbb knapperne for at vælge år\n" +
+"- Brug " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knapperne for at vælge måned\n" +
+"- Hold knappen på musen nede på knapperne ovenfor for hurtigere valg.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Valg af tid:\n" +
+"- Klik på en vilkårlig del for større værdi\n" +
+"- eller Shift-klik for for mindre værdi\n" +
+"- eller klik og træk for hurtigere valg.";
+
+Calendar._TT["PREV_YEAR"] = "Ét år tilbage (hold for menu)";
+Calendar._TT["PREV_MONTH"] = "Én måned tilbage (hold for menu)";
+Calendar._TT["GO_TODAY"] = "GÃ¥ til i dag";
+Calendar._TT["NEXT_MONTH"] = "Én måned frem (hold for menu)";
+Calendar._TT["NEXT_YEAR"] = "Ét år frem (hold for menu)";
+Calendar._TT["SEL_DATE"] = "Vælg dag";
+Calendar._TT["DRAG_TO_MOVE"] = "Træk vinduet";
+Calendar._TT["PART_TODAY"] = " (i dag)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Vis %s først";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Luk";
+Calendar._TT["TODAY"] = "I dag";
+Calendar._TT["TIME_PART"] = "(Shift-)klik eller træk for at ændre værdi";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Uge";
+Calendar._TT["TIME"] = "Tid:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-de.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-de.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-de.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,124 +0,0 @@
-// ** I18N
-
-// Calendar DE language
-// Author: Jack (tR), <jack at jtr.de>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Sonntag",
- "Montag",
- "Dienstag",
- "Mittwoch",
- "Donnerstag",
- "Freitag",
- "Samstag",
- "Sonntag");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("So",
- "Mo",
- "Di",
- "Mi",
- "Do",
- "Fr",
- "Sa",
- "So");
-
-// full month names
-Calendar._MN = new Array
-("Januar",
- "Februar",
- "M\u00e4rz",
- "April",
- "Mai",
- "Juni",
- "Juli",
- "August",
- "September",
- "Oktober",
- "November",
- "Dezember");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Feb",
- "M\u00e4r",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Dez");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Datum ausw\u00e4hlen:\n" +
-"- Benutzen Sie die \xab, \xbb Buttons um das Jahr zu w\u00e4hlen\n" +
-"- Benutzen Sie die " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " Buttons um den Monat zu w\u00e4hlen\n" +
-"- F\u00fcr eine Schnellauswahl halten Sie die Maustaste \u00fcber diesen Buttons fest.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Zeit ausw\u00e4hlen:\n" +
-"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\u00F6hen\n" +
-"- oder klicken Sie mit festgehaltener Shift-Taste um diese zu verringern\n" +
-"- oder klicken und festhalten f\u00fcr Schnellauswahl.";
-
-Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\u00e4hlen";
-Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Festhalten f\u00fcr Schnellauswahl)";
-Calendar._TT["PREV_MONTH"] = "Voriger Monat (Festhalten f\u00fcr Schnellauswahl)";
-Calendar._TT["GO_TODAY"] = "Heute ausw\u00e4hlen";
-Calendar._TT["NEXT_MONTH"] = "N\u00e4chst. Monat (Festhalten f\u00fcr Schnellauswahl)";
-Calendar._TT["NEXT_YEAR"] = "N\u00e4chst. Jahr (Festhalten f\u00fcr Schnellauswahl)";
-Calendar._TT["SEL_DATE"] = "Datum ausw\u00e4hlen";
-Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen festhalten";
-Calendar._TT["PART_TODAY"] = " (Heute)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s ";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Schlie\u00dfen";
-Calendar._TT["TODAY"] = "Heute";
-Calendar._TT["TIME_PART"] = "(Shift-)Klick oder Festhalten und Ziehen um den Wert zu \u00e4ndern";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "Zeit:";

Copied: plog/trunk/js/jscalendar/lang/calendar-de.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-de.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-de.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-de.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar DE language
+// Author: Jack (tR), <jack at jtr.de>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ "Sonntag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa",
+ "So");
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Datum ausw\u00e4hlen:\n" +
+"- Benutzen Sie die \xab, \xbb Buttons um das Jahr zu w\u00e4hlen\n" +
+"- Benutzen Sie die " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " Buttons um den Monat zu w\u00e4hlen\n" +
+"- F\u00fcr eine Schnellauswahl halten Sie die Maustaste \u00fcber diesen Buttons fest.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zeit ausw\u00e4hlen:\n" +
+"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\u00F6hen\n" +
+"- oder klicken Sie mit festgehaltener Shift-Taste um diese zu verringern\n" +
+"- oder klicken und festhalten f\u00fcr Schnellauswahl.";
+
+Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\u00e4hlen";
+Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["PREV_MONTH"] = "Voriger Monat (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["GO_TODAY"] = "Heute ausw\u00e4hlen";
+Calendar._TT["NEXT_MONTH"] = "N\u00e4chst. Monat (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["NEXT_YEAR"] = "N\u00e4chst. Jahr (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["SEL_DATE"] = "Datum ausw\u00e4hlen";
+Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen festhalten";
+Calendar._TT["PART_TODAY"] = " (Heute)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s ";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Schlie\u00dfen";
+Calendar._TT["TODAY"] = "Heute";
+Calendar._TT["TIME_PART"] = "(Shift-)Klick oder Festhalten und Ziehen um den Wert zu \u00e4ndern";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Zeit:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-du.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-du.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-du.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,45 +0,0 @@
-// ** I18N
-Calendar._DN = new Array
-("Zondag",
- "Maandag",
- "Dinsdag",
- "Woensdag",
- "Donderdag",
- "Vrijdag",
- "Zaterdag",
- "Zondag");
-Calendar._MN = new Array
-("Januari",
- "Februari",
- "Maart",
- "April",
- "Mei",
- "Juni",
- "Juli",
- "Augustus",
- "September",
- "Oktober",
- "November",
- "December");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["TOGGLE"] = "Toggle startdag van de week";
-Calendar._TT["PREV_YEAR"] = "Vorig jaar (indrukken voor menu)";
-Calendar._TT["PREV_MONTH"] = "Vorige month (indrukken voor menu)";
-Calendar._TT["GO_TODAY"] = "Naar Vandaag";
-Calendar._TT["NEXT_MONTH"] = "Volgende Maand (indrukken voor menu)";
-Calendar._TT["NEXT_YEAR"] = "Volgend jaar (indrukken voor menu)";
-Calendar._TT["SEL_DATE"] = "Selecteer datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te verplaatsen";
-Calendar._TT["PART_TODAY"] = " (vandaag)";
-Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
-Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
-Calendar._TT["CLOSE"] = "Sluiten";
-Calendar._TT["TODAY"] = "Vandaag";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
-Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
-
-Calendar._TT["WK"] = "wk";

Copied: plog/trunk/js/jscalendar/lang/calendar-du.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-du.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-du.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-du.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,45 @@
+// ** I18N
+Calendar._DN = new Array
+("Zondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrijdag",
+ "Zaterdag",
+ "Zondag");
+Calendar._MN = new Array
+("Januari",
+ "Februari",
+ "Maart",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "December");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Toggle startdag van de week";
+Calendar._TT["PREV_YEAR"] = "Vorig jaar (indrukken voor menu)";
+Calendar._TT["PREV_MONTH"] = "Vorige month (indrukken voor menu)";
+Calendar._TT["GO_TODAY"] = "Naar Vandaag";
+Calendar._TT["NEXT_MONTH"] = "Volgende Maand (indrukken voor menu)";
+Calendar._TT["NEXT_YEAR"] = "Volgend jaar (indrukken voor menu)";
+Calendar._TT["SEL_DATE"] = "Selecteer datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te verplaatsen";
+Calendar._TT["PART_TODAY"] = " (vandaag)";
+Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
+Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
+Calendar._TT["CLOSE"] = "Sluiten";
+Calendar._TT["TODAY"] = "Vandaag";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
+Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
+
+Calendar._TT["WK"] = "wk";

Deleted: plog/trunk/js/jscalendar/lang/calendar-el.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-el.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-el.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,89 +0,0 @@
-// ** I18N
-Calendar._DN = new Array
-("Κυριακή",
- "Δευτέρα",
- "Τρίτη",
- "Τετάρτη",
- "Πέμπτη",
- "Παρασκευή",
- "Σάββατο",
- "Κυριακή");
-
-Calendar._SDN = new Array
-("Κυ",
- "Δε",
- "Tρ",
- "Τε",
- "Πε",
- "Πα",
- "Σα",
- "Κυ");
-
-Calendar._MN = new Array
-("Ιανουάριος",
- "Φεβρουάριος",
- "Μάρτιος",
- "Απρίλιος",
- "Μάϊος",
- "Ιούνιος",
- "Ιούλιος",
- "Αύγουστος",
- "Σεπτέμβριος",
- "Οκτώβριος",
- "Νοέμβριος",
- "Δεκέμβριος");
-
-Calendar._SMN = new Array
-("Ιαν",
- "Φεβ",
- "Μαρ",
- "Απρ",
- "Μαι",
- "Ιουν",
- "Ιουλ",
- "Αυγ",
- "Σεπ",
- "Οκτ",
- "Νοε",
- "Δεκ");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Για το ημερολόγιο";
-
-Calendar._TT["ABOUT"] =
-"Επιλογέας ημερομηνίας/ώρας σε DHTML\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Για τελευταία έκδοση: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Επιλογή ημερομηνίας:\n" +
-"- Χρησιμοποιείστε τα κουμπιά \xab, \xbb για επιλογή έτους\n" +
-"- Χρησιμοποιείστε τα κουμπιά " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " για επιλογή μήνα\n" +
-"- Κρατήστε κουμπί ποντικού πατημένο στα παραπάνω κουμπιά για πιο γρήγορη επιλογή.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Επιλογή ώρας:\n" +
-"- Κάντε κλικ σε ένα από τα μέρη της ώρας για αύξηση\n" +
-"- ή Shift-κλικ για μείωση\n" +
-"- ή κλικ και μετακίνηση για πιο γρήγορη επιλογή.";
-Calendar._TT["TOGGLE"] = "Μπάρα πρώτης ημέρας της εβδομάδας";
-Calendar._TT["PREV_YEAR"] = "Προηγ. έτος (κρατήστε για το μενού)";
-Calendar._TT["PREV_MONTH"] = "Προηγ. μήνας (κρατήστε για το μενού)";
-Calendar._TT["GO_TODAY"] = "Σήμερα";
-Calendar._TT["NEXT_MONTH"] = "Επόμενος μήνας (κρατήστε για το μενού)";
-Calendar._TT["NEXT_YEAR"] = "Επόμενο έτος (κρατήστε για το μενού)";
-Calendar._TT["SEL_DATE"] = "Επιλέξτε ημερομηνία";
-Calendar._TT["DRAG_TO_MOVE"] = "Σύρτε για να μετακινήσετε";
-Calendar._TT["PART_TODAY"] = " (σήμερα)";
-Calendar._TT["MON_FIRST"] = "Εμφάνιση Δευτέρας πρώτα";
-Calendar._TT["SUN_FIRST"] = "Εμφάνιση Κυριακής πρώτα";
-Calendar._TT["CLOSE"] = "Κλείσιμο";
-Calendar._TT["TODAY"] = "Σήμερα";
-Calendar._TT["TIME_PART"] = "(Shift-)κλικ ή μετακίνηση για αλλαγή";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
-Calendar._TT["TT_DATE_FORMAT"] = "D, d M";
-
-Calendar._TT["WK"] = "εβδ";
-

Copied: plog/trunk/js/jscalendar/lang/calendar-el.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-el.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-el.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-el.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,89 @@
+// ** I18N
+Calendar._DN = new Array
+("Κυριακή",
+ "Δευτέρα",
+ "Τρίτη",
+ "Τετάρτη",
+ "Πέμπτη",
+ "Παρασκευή",
+ "Σάββατο",
+ "Κυριακή");
+
+Calendar._SDN = new Array
+("Κυ",
+ "Δε",
+ "Tρ",
+ "Τε",
+ "Πε",
+ "Πα",
+ "Σα",
+ "Κυ");
+
+Calendar._MN = new Array
+("Ιανουάριος",
+ "Φεβρουάριος",
+ "Μάρτιος",
+ "Απρίλιος",
+ "Μάϊος",
+ "Ιούνιος",
+ "Ιούλιος",
+ "Αύγουστος",
+ "Σεπτέμβριος",
+ "Οκτώβριος",
+ "Νοέμβριος",
+ "Δεκέμβριος");
+
+Calendar._SMN = new Array
+("Ιαν",
+ "Φεβ",
+ "Μαρ",
+ "Απρ",
+ "Μαι",
+ "Ιουν",
+ "Ιουλ",
+ "Αυγ",
+ "Σεπ",
+ "Οκτ",
+ "Νοε",
+ "Δεκ");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Για το ημερολόγιο";
+
+Calendar._TT["ABOUT"] =
+"Επιλογέας ημερομηνίας/ώρας σε DHTML\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Για τελευταία έκδοση: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Επιλογή ημερομηνίας:\n" +
+"- Χρησιμοποιείστε τα κουμπιά \xab, \xbb για επιλογή έτους\n" +
+"- Χρησιμοποιείστε τα κουμπιά " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " για επιλογή μήνα\n" +
+"- Κρατήστε κουμπί ποντικού πατημένο στα παραπάνω κουμπιά για πιο γρήγορη επιλογή.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Επιλογή ώρας:\n" +
+"- Κάντε κλικ σε ένα από τα μέρη της ώρας για αύξηση\n" +
+"- ή Shift-κλικ για μείωση\n" +
+"- ή κλικ και μετακίνηση για πιο γρήγορη επιλογή.";
+Calendar._TT["TOGGLE"] = "Μπάρα πρώτης ημέρας της εβδομάδας";
+Calendar._TT["PREV_YEAR"] = "Προηγ. έτος (κρατήστε για το μενού)";
+Calendar._TT["PREV_MONTH"] = "Προηγ. μήνας (κρατήστε για το μενού)";
+Calendar._TT["GO_TODAY"] = "Σήμερα";
+Calendar._TT["NEXT_MONTH"] = "Επόμενος μήνας (κρατήστε για το μενού)";
+Calendar._TT["NEXT_YEAR"] = "Επόμενο έτος (κρατήστε για το μενού)";
+Calendar._TT["SEL_DATE"] = "Επιλέξτε ημερομηνία";
+Calendar._TT["DRAG_TO_MOVE"] = "Σύρτε για να μετακινήσετε";
+Calendar._TT["PART_TODAY"] = " (σήμερα)";
+Calendar._TT["MON_FIRST"] = "Εμφάνιση Δευτέρας πρώτα";
+Calendar._TT["SUN_FIRST"] = "Εμφάνιση Κυριακής πρώτα";
+Calendar._TT["CLOSE"] = "Κλείσιμο";
+Calendar._TT["TODAY"] = "Σήμερα";
+Calendar._TT["TIME_PART"] = "(Shift-)κλικ ή μετακίνηση για αλλαγή";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
+Calendar._TT["TT_DATE_FORMAT"] = "D, d M";
+
+Calendar._TT["WK"] = "εβδ";
+

Deleted: plog/trunk/js/jscalendar/lang/calendar-en.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-en.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-en.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,127 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Sunday",
- "Monday",
- "Tuesday",
- "Wednesday",
- "Thursday",
- "Friday",
- "Saturday",
- "Sunday");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Sun",
- "Mon",
- "Tue",
- "Wed",
- "Thu",
- "Fri",
- "Sat",
- "Sun");
-
-// First day of the week. "0" means display Sunday first, "1" means display
-// Monday first, etc.
-Calendar._FD = 0;
-
-// full month names
-Calendar._MN = new Array
-("January",
- "February",
- "March",
- "April",
- "May",
- "June",
- "July",
- "August",
- "September",
- "October",
- "November",
- "December");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "About the calendar";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Date selection:\n" +
-"- Use the \xab, \xbb buttons to select year\n" +
-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
-"- Hold mouse button on any of the above buttons for faster selection.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Time selection:\n" +
-"- Click on any of the time parts to increase it\n" +
-"- or Shift-click to decrease it\n" +
-"- or click and drag for faster selection.";
-
-Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
-Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
-Calendar._TT["GO_TODAY"] = "Go Today";
-Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
-Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
-Calendar._TT["SEL_DATE"] = "Select date";
-Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
-Calendar._TT["PART_TODAY"] = " (today)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Display %s first";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Close";
-Calendar._TT["TODAY"] = "Today";
-Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "Time:";

Copied: plog/trunk/js/jscalendar/lang/calendar-en.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-en.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-en.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-en.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ "Sunday");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat",
+ "Sun");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "About the calendar";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
+Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
+Calendar._TT["GO_TODAY"] = "Go Today";
+Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
+Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
+Calendar._TT["SEL_DATE"] = "Select date";
+Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
+Calendar._TT["PART_TODAY"] = " (today)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Close";
+Calendar._TT["TODAY"] = "Today";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Time:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-es.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-es.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-es.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,129 +0,0 @@
-// ** I18N
-
-// Calendar ES (spanish) language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Updater: Servilio Afre Puentes <servilios at yahoo.com>
-// Updated: 2004-06-03
-// Encoding: utf-8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Domingo",
- "Lunes",
- "Martes",
- "Miércoles",
- "Jueves",
- "Viernes",
- "Sábado",
- "Domingo");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Dom",
- "Lun",
- "Mar",
- "Mié",
- "Jue",
- "Vie",
- "Sáb",
- "Dom");
-
-// First day of the week. "0" means display Sunday first, "1" means display
-// Monday first, etc.
-Calendar._FD = 1;
-
-// full month names
-Calendar._MN = new Array
-("Enero",
- "Febrero",
- "Marzo",
- "Abril",
- "Mayo",
- "Junio",
- "Julio",
- "Agosto",
- "Septiembre",
- "Octubre",
- "Noviembre",
- "Diciembre");
-
-// short month names
-Calendar._SMN = new Array
-("Ene",
- "Feb",
- "Mar",
- "Abr",
- "May",
- "Jun",
- "Jul",
- "Ago",
- "Sep",
- "Oct",
- "Nov",
- "Dic");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Acerca del calendario";
-
-Calendar._TT["ABOUT"] =
-"Selector DHTML de Fecha/Hora\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Para conseguir la última versión visite: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuido bajo licencia GNU LGPL. Visite http://gnu.org/licenses/lgpl.html para más detalles." +
-"\n\n" +
-"Selección de fecha:\n" +
-"- Use los botones \xab, \xbb para seleccionar el año\n" +
-"- Use los botones " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
-"- Mantenga pulsado el ratón en cualquiera de estos botones para una selección rápida.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selección de hora:\n" +
-"- Pulse en cualquiera de las partes de la hora para incrementarla\n" +
-"- o pulse las mayúsculas mientras hace clic para decrementarla\n" +
-"- o haga clic y arrastre el ratón para una selección más rápida.";
-
-Calendar._TT["PREV_YEAR"] = "Año anterior (mantener para menú)";
-Calendar._TT["PREV_MONTH"] = "Mes anterior (mantener para menú)";
-Calendar._TT["GO_TODAY"] = "Ir a hoy";
-Calendar._TT["NEXT_MONTH"] = "Mes siguiente (mantener para menú)";
-Calendar._TT["NEXT_YEAR"] = "Año siguiente (mantener para menú)";
-Calendar._TT["SEL_DATE"] = "Seleccionar fecha";
-Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar para mover";
-Calendar._TT["PART_TODAY"] = " (hoy)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Hacer %s primer día de la semana";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Cerrar";
-Calendar._TT["TODAY"] = "Hoy";
-Calendar._TT["TIME_PART"] = "(Mayúscula-)Clic o arrastre para cambiar valor";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
-
-Calendar._TT["WK"] = "sem";
-Calendar._TT["TIME"] = "Hora:";

Copied: plog/trunk/js/jscalendar/lang/calendar-es.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-es.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-es.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-es.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,129 @@
+// ** I18N
+
+// Calendar ES (spanish) language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Updater: Servilio Afre Puentes <servilios at yahoo.com>
+// Updated: 2004-06-03
+// Encoding: utf-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Lunes",
+ "Martes",
+ "Miércoles",
+ "Jueves",
+ "Viernes",
+ "Sábado",
+ "Domingo");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Lun",
+ "Mar",
+ "Mié",
+ "Jue",
+ "Vie",
+ "Sáb",
+ "Dom");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 1;
+
+// full month names
+Calendar._MN = new Array
+("Enero",
+ "Febrero",
+ "Marzo",
+ "Abril",
+ "Mayo",
+ "Junio",
+ "Julio",
+ "Agosto",
+ "Septiembre",
+ "Octubre",
+ "Noviembre",
+ "Diciembre");
+
+// short month names
+Calendar._SMN = new Array
+("Ene",
+ "Feb",
+ "Mar",
+ "Abr",
+ "May",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dic");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Acerca del calendario";
+
+Calendar._TT["ABOUT"] =
+"Selector DHTML de Fecha/Hora\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Para conseguir la última versión visite: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuido bajo licencia GNU LGPL. Visite http://gnu.org/licenses/lgpl.html para más detalles." +
+"\n\n" +
+"Selección de fecha:\n" +
+"- Use los botones \xab, \xbb para seleccionar el año\n" +
+"- Use los botones " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
+"- Mantenga pulsado el ratón en cualquiera de estos botones para una selección rápida.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selección de hora:\n" +
+"- Pulse en cualquiera de las partes de la hora para incrementarla\n" +
+"- o pulse las mayúsculas mientras hace clic para decrementarla\n" +
+"- o haga clic y arrastre el ratón para una selección más rápida.";
+
+Calendar._TT["PREV_YEAR"] = "Año anterior (mantener para menú)";
+Calendar._TT["PREV_MONTH"] = "Mes anterior (mantener para menú)";
+Calendar._TT["GO_TODAY"] = "Ir a hoy";
+Calendar._TT["NEXT_MONTH"] = "Mes siguiente (mantener para menú)";
+Calendar._TT["NEXT_YEAR"] = "Año siguiente (mantener para menú)";
+Calendar._TT["SEL_DATE"] = "Seleccionar fecha";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar para mover";
+Calendar._TT["PART_TODAY"] = " (hoy)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Hacer %s primer día de la semana";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Cerrar";
+Calendar._TT["TODAY"] = "Hoy";
+Calendar._TT["TIME_PART"] = "(Mayúscula-)Clic o arrastre para cambiar valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
+
+Calendar._TT["WK"] = "sem";
+Calendar._TT["TIME"] = "Hora:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-fi.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-fi.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-fi.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,98 +0,0 @@
-// ** I18N
-
-// Calendar FI language (Finnish, Suomi)
-// Author: Jarno Käyhkö, <gambler at phnet.fi>
-// Encoding: UTF-8
-// Distributed under the same terms as the calendar itself.
-
-// full day names
-Calendar._DN = new Array
-("Sunnuntai",
- "Maanantai",
- "Tiistai",
- "Keskiviikko",
- "Torstai",
- "Perjantai",
- "Lauantai",
- "Sunnuntai");
-
-// short day names
-Calendar._SDN = new Array
-("Su",
- "Ma",
- "Ti",
- "Ke",
- "To",
- "Pe",
- "La",
- "Su");
-
-// full month names
-Calendar._MN = new Array
-("Tammikuu",
- "Helmikuu",
- "Maaliskuu",
- "Huhtikuu",
- "Toukokuu",
- "Kesäkuu",
- "Heinäkuu",
- "Elokuu",
- "Syyskuu",
- "Lokakuu",
- "Marraskuu",
- "Joulukuu");
-
-// short month names
-Calendar._SMN = new Array
-("Tam",
- "Hel",
- "Maa",
- "Huh",
- "Tou",
- "Kes",
- "Hei",
- "Elo",
- "Syy",
- "Lok",
- "Mar",
- "Jou");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Tietoja kalenterista";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Uusin versio osoitteessa: http://www.dynarch.com/projects/calendar/\n" +
-"Julkaistu GNU LGPL lisenssin alaisuudessa. Lisätietoja osoitteessa http://gnu.org/licenses/lgpl.html" +
-"\n\n" +
-"Päivämäärä valinta:\n" +
-"- Käytä \xab, \xbb painikkeita valitaksesi vuosi\n" +
-"- Käytä " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " painikkeita valitaksesi kuukausi\n" +
-"- Pitämällä hiiren painiketta minkä tahansa yllä olevan painikkeen kohdalla, saat näkyviin valikon nopeampaan siirtymiseen.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Ajan valinta:\n" +
-"- Klikkaa kellonajan numeroita lisätäksesi aikaa\n" +
-"- tai pitämällä Shift-näppäintä pohjassa saat aikaa taaksepäin\n" +
-"- tai klikkaa ja pidä hiiren painike pohjassa sekä liikuta hiirtä muuttaaksesi aikaa nopeasti eteen- ja taaksepäin.";
-
-Calendar._TT["PREV_YEAR"] = "Edell. vuosi (paina hetki, näet valikon)";
-Calendar._TT["PREV_MONTH"] = "Edell. kuukausi (paina hetki, näet valikon)";
-Calendar._TT["GO_TODAY"] = "Siirry tähän päivään";
-Calendar._TT["NEXT_MONTH"] = "Seur. kuukausi (paina hetki, näet valikon)";
-Calendar._TT["NEXT_YEAR"] = "Seur. vuosi (paina hetki, näet valikon)";
-Calendar._TT["SEL_DATE"] = "Valitse päivämäärä";
-Calendar._TT["DRAG_TO_MOVE"] = "Siirrä kalenterin paikkaa";
-Calendar._TT["PART_TODAY"] = " (tänään)";
-Calendar._TT["MON_FIRST"] = "Näytä maanantai ensimmäisenä";
-Calendar._TT["SUN_FIRST"] = "Näytä sunnuntai ensimmäisenä";
-Calendar._TT["CLOSE"] = "Sulje";
-Calendar._TT["TODAY"] = "Tänään";
-Calendar._TT["TIME_PART"] = "(Shift-) Klikkaa tai liikuta muuttaaksesi aikaa";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%d.%m.%Y";
-
-Calendar._TT["WK"] = "Vko";

Copied: plog/trunk/js/jscalendar/lang/calendar-fi.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-fi.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-fi.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-fi.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,98 @@
+// ** I18N
+
+// Calendar FI language (Finnish, Suomi)
+// Author: Jarno Käyhkö, <gambler at phnet.fi>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Sunnuntai",
+ "Maanantai",
+ "Tiistai",
+ "Keskiviikko",
+ "Torstai",
+ "Perjantai",
+ "Lauantai",
+ "Sunnuntai");
+
+// short day names
+Calendar._SDN = new Array
+("Su",
+ "Ma",
+ "Ti",
+ "Ke",
+ "To",
+ "Pe",
+ "La",
+ "Su");
+
+// full month names
+Calendar._MN = new Array
+("Tammikuu",
+ "Helmikuu",
+ "Maaliskuu",
+ "Huhtikuu",
+ "Toukokuu",
+ "Kesäkuu",
+ "Heinäkuu",
+ "Elokuu",
+ "Syyskuu",
+ "Lokakuu",
+ "Marraskuu",
+ "Joulukuu");
+
+// short month names
+Calendar._SMN = new Array
+("Tam",
+ "Hel",
+ "Maa",
+ "Huh",
+ "Tou",
+ "Kes",
+ "Hei",
+ "Elo",
+ "Syy",
+ "Lok",
+ "Mar",
+ "Jou");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Tietoja kalenterista";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Uusin versio osoitteessa: http://www.dynarch.com/projects/calendar/\n" +
+"Julkaistu GNU LGPL lisenssin alaisuudessa. Lisätietoja osoitteessa http://gnu.org/licenses/lgpl.html" +
+"\n\n" +
+"Päivämäärä valinta:\n" +
+"- Käytä \xab, \xbb painikkeita valitaksesi vuosi\n" +
+"- Käytä " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " painikkeita valitaksesi kuukausi\n" +
+"- Pitämällä hiiren painiketta minkä tahansa yllä olevan painikkeen kohdalla, saat näkyviin valikon nopeampaan siirtymiseen.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Ajan valinta:\n" +
+"- Klikkaa kellonajan numeroita lisätäksesi aikaa\n" +
+"- tai pitämällä Shift-näppäintä pohjassa saat aikaa taaksepäin\n" +
+"- tai klikkaa ja pidä hiiren painike pohjassa sekä liikuta hiirtä muuttaaksesi aikaa nopeasti eteen- ja taaksepäin.";
+
+Calendar._TT["PREV_YEAR"] = "Edell. vuosi (paina hetki, näet valikon)";
+Calendar._TT["PREV_MONTH"] = "Edell. kuukausi (paina hetki, näet valikon)";
+Calendar._TT["GO_TODAY"] = "Siirry tähän päivään";
+Calendar._TT["NEXT_MONTH"] = "Seur. kuukausi (paina hetki, näet valikon)";
+Calendar._TT["NEXT_YEAR"] = "Seur. vuosi (paina hetki, näet valikon)";
+Calendar._TT["SEL_DATE"] = "Valitse päivämäärä";
+Calendar._TT["DRAG_TO_MOVE"] = "Siirrä kalenterin paikkaa";
+Calendar._TT["PART_TODAY"] = " (tänään)";
+Calendar._TT["MON_FIRST"] = "Näytä maanantai ensimmäisenä";
+Calendar._TT["SUN_FIRST"] = "Näytä sunnuntai ensimmäisenä";
+Calendar._TT["CLOSE"] = "Sulje";
+Calendar._TT["TODAY"] = "Tänään";
+Calendar._TT["TIME_PART"] = "(Shift-) Klikkaa tai liikuta muuttaaksesi aikaa";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%d.%m.%Y";
+
+Calendar._TT["WK"] = "Vko";

Deleted: plog/trunk/js/jscalendar/lang/calendar-fr.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-fr.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,125 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// Translator: David Duret, <pilgrim at mala-template.net> from previous french version
-
-// full day names
-Calendar._DN = new Array
-("Dimanche",
- "Lundi",
- "Mardi",
- "Mercredi",
- "Jeudi",
- "Vendredi",
- "Samedi",
- "Dimanche");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Dim",
- "Lun",
- "Mar",
- "Mar",
- "Jeu",
- "Ven",
- "Sam",
- "Dim");
-
-// full month names
-Calendar._MN = new Array
-("Janvier",
- "Février",
- "Mars",
- "Avril",
- "Mai",
- "Juin",
- "Juillet",
- "Août",
- "Septembre",
- "Octobre",
- "Novembre",
- "Décembre");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Fev",
- "Mar",
- "Avr",
- "Mai",
- "Juin",
- "Juil",
- "Aout",
- "Sep",
- "Oct",
- "Nov",
- "Dec");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "A propos du calendrier";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Heure Selecteur\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Pour la derniere version visitez : http://www.dynarch.com/projects/calendar/\n" +
-"Distribué par GNU LGPL.  Voir http://gnu.org/licenses/lgpl.html pour les details." +
-"\n\n" +
-"Selection de la date :\n" +
-"- Utiliser les bouttons \xab, \xbb  pour selectionner l\'annee\n" +
-"- Utiliser les bouttons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pour selectionner les mois\n" +
-"- Garder la souris sur n'importe quels boutons pour une selection plus rapide";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selection de l\'heure :\n" +
-"- Cliquer sur heures ou minutes pour incrementer\n" +
-"- ou Maj-clic pour decrementer\n" +
-"- ou clic et glisser-deplacer pour une selection plus rapide";
-
-Calendar._TT["PREV_YEAR"] = "Année préc. (maintenir pour menu)";
-Calendar._TT["PREV_MONTH"] = "Mois préc. (maintenir pour menu)";
-Calendar._TT["GO_TODAY"] = "Atteindre la date du jour";
-Calendar._TT["NEXT_MONTH"] = "Mois suiv. (maintenir pour menu)";
-Calendar._TT["NEXT_YEAR"] = "Année suiv. (maintenir pour menu)";
-Calendar._TT["SEL_DATE"] = "Sélectionner une date";
-Calendar._TT["DRAG_TO_MOVE"] = "Déplacer";
-Calendar._TT["PART_TODAY"] = " (Aujourd'hui)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Afficher %s en premier";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Fermer";
-Calendar._TT["TODAY"] = "Aujourd'hui";
-Calendar._TT["TIME_PART"] = "(Maj-)Clic ou glisser pour modifier la valeur";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "Sem.";
-Calendar._TT["TIME"] = "Heure :";

Copied: plog/trunk/js/jscalendar/lang/calendar-fr.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-fr.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-fr.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,125 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// Translator: David Duret, <pilgrim at mala-template.net> from previous french version
+
+// full day names
+Calendar._DN = new Array
+("Dimanche",
+ "Lundi",
+ "Mardi",
+ "Mercredi",
+ "Jeudi",
+ "Vendredi",
+ "Samedi",
+ "Dimanche");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dim",
+ "Lun",
+ "Mar",
+ "Mar",
+ "Jeu",
+ "Ven",
+ "Sam",
+ "Dim");
+
+// full month names
+Calendar._MN = new Array
+("Janvier",
+ "Février",
+ "Mars",
+ "Avril",
+ "Mai",
+ "Juin",
+ "Juillet",
+ "Août",
+ "Septembre",
+ "Octobre",
+ "Novembre",
+ "Décembre");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Fev",
+ "Mar",
+ "Avr",
+ "Mai",
+ "Juin",
+ "Juil",
+ "Aout",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "A propos du calendrier";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Heure Selecteur\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Pour la derniere version visitez : http://www.dynarch.com/projects/calendar/\n" +
+"Distribué par GNU LGPL.  Voir http://gnu.org/licenses/lgpl.html pour les details." +
+"\n\n" +
+"Selection de la date :\n" +
+"- Utiliser les bouttons \xab, \xbb  pour selectionner l\'annee\n" +
+"- Utiliser les bouttons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pour selectionner les mois\n" +
+"- Garder la souris sur n'importe quels boutons pour une selection plus rapide";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selection de l\'heure :\n" +
+"- Cliquer sur heures ou minutes pour incrementer\n" +
+"- ou Maj-clic pour decrementer\n" +
+"- ou clic et glisser-deplacer pour une selection plus rapide";
+
+Calendar._TT["PREV_YEAR"] = "Année préc. (maintenir pour menu)";
+Calendar._TT["PREV_MONTH"] = "Mois préc. (maintenir pour menu)";
+Calendar._TT["GO_TODAY"] = "Atteindre la date du jour";
+Calendar._TT["NEXT_MONTH"] = "Mois suiv. (maintenir pour menu)";
+Calendar._TT["NEXT_YEAR"] = "Année suiv. (maintenir pour menu)";
+Calendar._TT["SEL_DATE"] = "Sélectionner une date";
+Calendar._TT["DRAG_TO_MOVE"] = "Déplacer";
+Calendar._TT["PART_TODAY"] = " (Aujourd'hui)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Afficher %s en premier";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Fermer";
+Calendar._TT["TODAY"] = "Aujourd'hui";
+Calendar._TT["TIME_PART"] = "(Maj-)Clic ou glisser pour modifier la valeur";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Sem.";
+Calendar._TT["TIME"] = "Heure :";

Deleted: plog/trunk/js/jscalendar/lang/calendar-he-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-he-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-he-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Idan Sofer, <idan at idanso.dyndns.org>
-// Encoding: UTF-8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("ראשון",
- "שני",
- "שלישי",
- "רביעי",
- "חמישי",
- "שישי",
- "שבת",
- "ראשון");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("א",
- "ב",
- "×’",
- "ד",
- "×”",
- "ו",
- "ש",
- "א");
-
-// full month names
-Calendar._MN = new Array
-("ינואר",
- "פברואר",
- "מרץ",
- "אפריל",
- "מאי",
- "יוני",
- "יולי",
- "אוגוסט",
- "ספטמבר",
- "אוקטובר",
- "נובמבר",
- "דצמבר");
-
-// short month names
-Calendar._SMN = new Array
-("ינא",
- "פבר",
- "מרץ",
- "אפר",
- "מאי",
- "יונ",
- "יול",
- "אוג",
- "ספט",
- "אוק",
- "נוב",
- "דצמ");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "אודות השנתון";
-
-Calendar._TT["ABOUT"] =
-"בחרן תאריך/שעה DHTML\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"הגירסא האחרונה זמינה ב: http://www.dynarch.com/projects/calendar/\n" +
-"מופץ תחת זיכיון ה GNU LGPL.  עיין ב http://gnu.org/licenses/lgpl.html לפרטים נוספים." +
-"\n\n" +
-בחירת תאריך:\n" +
-"- השתמש בכפתורים \xab, \xbb לבחירת שנה\n" +
-"- השתמש בכפתורים " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " לבחירת חודש\n" +
-"- החזק העכבר לחוץ מעל הכפתורים המוזכרים לעיל לבחירה מהירה יותר.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"בחירת זמן:\n" +
-"- לחץ על כל אחד מחלקי הזמן כדי להוסיף\n" +
-"- או shift בשילוב עם לחיצה כדי להחסיר\n" +
-"- או לחץ וגרור לפעולה מהירה יותר.";
-
-Calendar._TT["PREV_YEAR"] = "שנה קודמת - החזק לקבלת תפריט";
-Calendar._TT["PREV_MONTH"] = "חודש קודם - החזק לקבלת תפריט";
-Calendar._TT["GO_TODAY"] = "עבור להיום";
-Calendar._TT["NEXT_MONTH"] = "חודש הבא - החזק לתפריט";
-Calendar._TT["NEXT_YEAR"] = "שנה הבאה - החזק לתפריט";
-Calendar._TT["SEL_DATE"] = "בחר תאריך";
-Calendar._TT["DRAG_TO_MOVE"] = "גרור להזזה";
-Calendar._TT["PART_TODAY"] = " )היום(";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "הצג %s קודם";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "6";
-
-Calendar._TT["CLOSE"] = "סגור";
-Calendar._TT["TODAY"] = "היום";
-Calendar._TT["TIME_PART"] = "(שיפט-)לחץ וגרור כדי לשנות ערך";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "שעה::";

Copied: plog/trunk/js/jscalendar/lang/calendar-he-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-he-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-he-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-he-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Idan Sofer, <idan at idanso.dyndns.org>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("ראשון",
+ "שני",
+ "שלישי",
+ "רביעי",
+ "חמישי",
+ "שישי",
+ "שבת",
+ "ראשון");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("א",
+ "ב",
+ "×’",
+ "ד",
+ "×”",
+ "ו",
+ "ש",
+ "א");
+
+// full month names
+Calendar._MN = new Array
+("ינואר",
+ "פברואר",
+ "מרץ",
+ "אפריל",
+ "מאי",
+ "יוני",
+ "יולי",
+ "אוגוסט",
+ "ספטמבר",
+ "אוקטובר",
+ "נובמבר",
+ "דצמבר");
+
+// short month names
+Calendar._SMN = new Array
+("ינא",
+ "פבר",
+ "מרץ",
+ "אפר",
+ "מאי",
+ "יונ",
+ "יול",
+ "אוג",
+ "ספט",
+ "אוק",
+ "נוב",
+ "דצמ");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "אודות השנתון";
+
+Calendar._TT["ABOUT"] =
+"בחרן תאריך/שעה DHTML\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"הגירסא האחרונה זמינה ב: http://www.dynarch.com/projects/calendar/\n" +
+"מופץ תחת זיכיון ה GNU LGPL.  עיין ב http://gnu.org/licenses/lgpl.html לפרטים נוספים." +
+"\n\n" +
+בחירת תאריך:\n" +
+"- השתמש בכפתורים \xab, \xbb לבחירת שנה\n" +
+"- השתמש בכפתורים " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " לבחירת חודש\n" +
+"- החזק העכבר לחוץ מעל הכפתורים המוזכרים לעיל לבחירה מהירה יותר.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"בחירת זמן:\n" +
+"- לחץ על כל אחד מחלקי הזמן כדי להוסיף\n" +
+"- או shift בשילוב עם לחיצה כדי להחסיר\n" +
+"- או לחץ וגרור לפעולה מהירה יותר.";
+
+Calendar._TT["PREV_YEAR"] = "שנה קודמת - החזק לקבלת תפריט";
+Calendar._TT["PREV_MONTH"] = "חודש קודם - החזק לקבלת תפריט";
+Calendar._TT["GO_TODAY"] = "עבור להיום";
+Calendar._TT["NEXT_MONTH"] = "חודש הבא - החזק לתפריט";
+Calendar._TT["NEXT_YEAR"] = "שנה הבאה - החזק לתפריט";
+Calendar._TT["SEL_DATE"] = "בחר תאריך";
+Calendar._TT["DRAG_TO_MOVE"] = "גרור להזזה";
+Calendar._TT["PART_TODAY"] = " )היום(";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "הצג %s קודם";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "6";
+
+Calendar._TT["CLOSE"] = "סגור";
+Calendar._TT["TODAY"] = "היום";
+Calendar._TT["TIME_PART"] = "(שיפט-)לחץ וגרור כדי לשנות ערך";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "שעה::";

Deleted: plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-hr-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,49 +0,0 @@
-/* Croatian language file for the DHTML Calendar version 0.9.2 
-* Author Krunoslav Zubrinic <krunoslav.zubrinic at vip.hr>, June 2003.
-* Feel free to use this script under the terms of the GNU Lesser General
-* Public License, as long as you do not remove or alter this notice.
-*/
-Calendar._DN = new Array
-("Nedjelja",
- "Ponedjeljak",
- "Utorak",
- "Srijeda",
- "ÄŒetvrtak",
- "Petak",
- "Subota",
- "Nedjelja");
-Calendar._MN = new Array
-("Siječanj",
- "Veljača",
- "Ožujak",
- "Travanj",
- "Svibanj",
- "Lipanj",
- "Srpanj",
- "Kolovoz",
- "Rujan",
- "Listopad",
- "Studeni",
- "Prosinac");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["TOGGLE"] = "Promjeni dan s kojim počinje tjedan";
-Calendar._TT["PREV_YEAR"] = "Prethodna godina (dugi pritisak za meni)";
-Calendar._TT["PREV_MONTH"] = "Prethodni mjesec (dugi pritisak za meni)";
-Calendar._TT["GO_TODAY"] = "Idi na tekući dan";
-Calendar._TT["NEXT_MONTH"] = "Slijedeći mjesec (dugi pritisak za meni)";
-Calendar._TT["NEXT_YEAR"] = "Slijedeća godina (dugi pritisak za meni)";
-Calendar._TT["SEL_DATE"] = "Izaberite datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Pritisni i povuci za promjenu pozicije";
-Calendar._TT["PART_TODAY"] = " (today)";
-Calendar._TT["MON_FIRST"] = "Prikaži ponedjeljak kao prvi dan";
-Calendar._TT["SUN_FIRST"] = "Prikaži nedjelju kao prvi dan";
-Calendar._TT["CLOSE"] = "Zatvori";
-Calendar._TT["TODAY"] = "Danas";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
-Calendar._TT["TT_DATE_FORMAT"] = "DD, dd.mm.y";
-
-Calendar._TT["WK"] = "Tje";
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-hr-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-hr-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,49 @@
+/* Croatian language file for the DHTML Calendar version 0.9.2 
+* Author Krunoslav Zubrinic <krunoslav.zubrinic at vip.hr>, June 2003.
+* Feel free to use this script under the terms of the GNU Lesser General
+* Public License, as long as you do not remove or alter this notice.
+*/
+Calendar._DN = new Array
+("Nedjelja",
+ "Ponedjeljak",
+ "Utorak",
+ "Srijeda",
+ "ÄŒetvrtak",
+ "Petak",
+ "Subota",
+ "Nedjelja");
+Calendar._MN = new Array
+("Siječanj",
+ "Veljača",
+ "Ožujak",
+ "Travanj",
+ "Svibanj",
+ "Lipanj",
+ "Srpanj",
+ "Kolovoz",
+ "Rujan",
+ "Listopad",
+ "Studeni",
+ "Prosinac");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Promjeni dan s kojim počinje tjedan";
+Calendar._TT["PREV_YEAR"] = "Prethodna godina (dugi pritisak za meni)";
+Calendar._TT["PREV_MONTH"] = "Prethodni mjesec (dugi pritisak za meni)";
+Calendar._TT["GO_TODAY"] = "Idi na tekući dan";
+Calendar._TT["NEXT_MONTH"] = "Slijedeći mjesec (dugi pritisak za meni)";
+Calendar._TT["NEXT_YEAR"] = "Slijedeća godina (dugi pritisak za meni)";
+Calendar._TT["SEL_DATE"] = "Izaberite datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Pritisni i povuci za promjenu pozicije";
+Calendar._TT["PART_TODAY"] = " (today)";
+Calendar._TT["MON_FIRST"] = "Prikaži ponedjeljak kao prvi dan";
+Calendar._TT["SUN_FIRST"] = "Prikaži nedjelju kao prvi dan";
+Calendar._TT["CLOSE"] = "Zatvori";
+Calendar._TT["TODAY"] = "Danas";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
+Calendar._TT["TT_DATE_FORMAT"] = "DD, dd.mm.y";
+
+Calendar._TT["WK"] = "Tje";
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/lang/calendar-hr.js
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/lang/calendar-hr.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-hr.js)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/lang/calendar-hu.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-hu.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-hu.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,124 +0,0 @@
-// ** I18N
-
-// Calendar HU language
-// Author: ???
-// Modifier: KARASZI Istvan, <jscalendar at spam.raszi.hu>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Vasárnap",
- "Hétfõ",
- "Kedd",
- "Szerda",
- "Csütörtök",
- "Péntek",
- "Szombat",
- "Vasárnap");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("v",
- "h",
- "k",
- "sze",
- "cs",
- "p",
- "szo",
- "v");
-
-// full month names
-Calendar._MN = new Array
-("január",
- "február",
- "március",
- "április",
- "május",
- "június",
- "július",
- "augusztus",
- "szeptember",
- "október",
- "november",
- "december");
-
-// short month names
-Calendar._SMN = new Array
-("jan",
- "feb",
- "már",
- "ápr",
- "máj",
- "jún",
- "júl",
- "aug",
- "sze",
- "okt",
- "nov",
- "dec");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "A kalendáriumról";
-
-Calendar._TT["ABOUT"] =
-"DHTML dátum/idõ kiválasztó\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"a legfrissebb verzió megtalálható: http://www.dynarch.com/projects/calendar/\n" +
-"GNU LGPL alatt terjesztve.  Lásd a http://gnu.org/licenses/lgpl.html oldalt a részletekhez." +
-"\n\n" +
-"Dátum választás:\n" +
-"- használja a \xab, \xbb gombokat az év kiválasztásához\n" +
-"- használja a " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gombokat a hónap kiválasztásához\n" +
-"- tartsa lenyomva az egérgombot a gyors választáshoz.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Idõ választás:\n" +
-"- kattintva növelheti az idõt\n" +
-"- shift-tel kattintva csökkentheti\n" +
-"- lenyomva tartva és húzva gyorsabban kiválaszthatja.";
-
-Calendar._TT["PREV_YEAR"] = "Elõzõ év (tartsa nyomva a menühöz)";
-Calendar._TT["PREV_MONTH"] = "Elõzõ hónap (tartsa nyomva a menühöz)";
-Calendar._TT["GO_TODAY"] = "Mai napra ugrás";
-Calendar._TT["NEXT_MONTH"] = "Köv. hónap (tartsa nyomva a menühöz)";
-Calendar._TT["NEXT_YEAR"] = "Köv. év (tartsa nyomva a menühöz)";
-Calendar._TT["SEL_DATE"] = "Válasszon dátumot";
-Calendar._TT["DRAG_TO_MOVE"] = "Húzza a mozgatáshoz";
-Calendar._TT["PART_TODAY"] = " (ma)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "%s legyen a hét elsõ napja";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Bezár";
-Calendar._TT["TODAY"] = "Ma";
-Calendar._TT["TIME_PART"] = "(Shift-)Klikk vagy húzás az érték változtatásához";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%b %e, %a";
-
-Calendar._TT["WK"] = "hét";
-Calendar._TT["TIME"] = "idõ:";

Copied: plog/trunk/js/jscalendar/lang/calendar-hu.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-hu.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-hu.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-hu.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar HU language
+// Author: ???
+// Modifier: KARASZI Istvan, <jscalendar at spam.raszi.hu>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Vasárnap",
+ "Hétfõ",
+ "Kedd",
+ "Szerda",
+ "Csütörtök",
+ "Péntek",
+ "Szombat",
+ "Vasárnap");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("v",
+ "h",
+ "k",
+ "sze",
+ "cs",
+ "p",
+ "szo",
+ "v");
+
+// full month names
+Calendar._MN = new Array
+("január",
+ "február",
+ "március",
+ "április",
+ "május",
+ "június",
+ "július",
+ "augusztus",
+ "szeptember",
+ "október",
+ "november",
+ "december");
+
+// short month names
+Calendar._SMN = new Array
+("jan",
+ "feb",
+ "már",
+ "ápr",
+ "máj",
+ "jún",
+ "júl",
+ "aug",
+ "sze",
+ "okt",
+ "nov",
+ "dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "A kalendáriumról";
+
+Calendar._TT["ABOUT"] =
+"DHTML dátum/idõ kiválasztó\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"a legfrissebb verzió megtalálható: http://www.dynarch.com/projects/calendar/\n" +
+"GNU LGPL alatt terjesztve.  Lásd a http://gnu.org/licenses/lgpl.html oldalt a részletekhez." +
+"\n\n" +
+"Dátum választás:\n" +
+"- használja a \xab, \xbb gombokat az év kiválasztásához\n" +
+"- használja a " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gombokat a hónap kiválasztásához\n" +
+"- tartsa lenyomva az egérgombot a gyors választáshoz.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Idõ választás:\n" +
+"- kattintva növelheti az idõt\n" +
+"- shift-tel kattintva csökkentheti\n" +
+"- lenyomva tartva és húzva gyorsabban kiválaszthatja.";
+
+Calendar._TT["PREV_YEAR"] = "Elõzõ év (tartsa nyomva a menühöz)";
+Calendar._TT["PREV_MONTH"] = "Elõzõ hónap (tartsa nyomva a menühöz)";
+Calendar._TT["GO_TODAY"] = "Mai napra ugrás";
+Calendar._TT["NEXT_MONTH"] = "Köv. hónap (tartsa nyomva a menühöz)";
+Calendar._TT["NEXT_YEAR"] = "Köv. év (tartsa nyomva a menühöz)";
+Calendar._TT["SEL_DATE"] = "Válasszon dátumot";
+Calendar._TT["DRAG_TO_MOVE"] = "Húzza a mozgatáshoz";
+Calendar._TT["PART_TODAY"] = " (ma)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "%s legyen a hét elsõ napja";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Bezár";
+Calendar._TT["TODAY"] = "Ma";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikk vagy húzás az érték változtatásához";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b %e, %a";
+
+Calendar._TT["WK"] = "hét";
+Calendar._TT["TIME"] = "idõ:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-it.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-it.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-it.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,124 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Translator: Fabio Di Bernardini, <altraqua at email.it>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Domenica",
- "Lunedì",
- "Martedì",
- "Mercoledì",
- "Giovedì",
- "Venerdì",
- "Sabato",
- "Domenica");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Dom",
- "Lun",
- "Mar",
- "Mer",
- "Gio",
- "Ven",
- "Sab",
- "Dom");
-
-// full month names
-Calendar._MN = new Array
-("Gennaio",
- "Febbraio",
- "Marzo",
- "Aprile",
- "Maggio",
- "Giugno",
- "Luglio",
- "Augosto",
- "Settembre",
- "Ottobre",
- "Novembre",
- "Dicembre");
-
-// short month names
-Calendar._SMN = new Array
-("Gen",
- "Feb",
- "Mar",
- "Apr",
- "Mag",
- "Giu",
- "Lug",
- "Ago",
- "Set",
- "Ott",
- "Nov",
- "Dic");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Informazioni sul calendario";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Per gli aggiornamenti: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuito sotto licenza GNU LGPL.  Vedi http://gnu.org/licenses/lgpl.html per i dettagli." +
-"\n\n" +
-"Selezione data:\n" +
-"- Usa \xab, \xbb per selezionare l'anno\n" +
-"- Usa  " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per i mesi\n" +
-"- Tieni premuto a lungo il mouse per accedere alle funzioni di selezione veloce.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selezione orario:\n" +
-"- Clicca sul numero per incrementarlo\n" +
-"- o Shift+click per decrementarlo\n" +
-"- o click e sinistra o destra per variarlo.";
-
-Calendar._TT["PREV_YEAR"] = "Anno prec.(clicca a lungo per il menù)";
-Calendar._TT["PREV_MONTH"] = "Mese prec. (clicca a lungo per il menù)";
-Calendar._TT["GO_TODAY"] = "Oggi";
-Calendar._TT["NEXT_MONTH"] = "Pross. mese (clicca a lungo per il menù)";
-Calendar._TT["NEXT_YEAR"] = "Pross. anno (clicca a lungo per il menù)";
-Calendar._TT["SEL_DATE"] = "Seleziona data";
-Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostarlo";
-Calendar._TT["PART_TODAY"] = " (oggi)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Mostra prima %s";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Chiudi";
-Calendar._TT["TODAY"] = "Oggi";
-Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per cambiare il valore";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a:%b:%e";
-
-Calendar._TT["WK"] = "set";
-Calendar._TT["TIME"] = "Ora:";

Copied: plog/trunk/js/jscalendar/lang/calendar-it.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-it.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-it.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-it.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Translator: Fabio Di Bernardini, <altraqua at email.it>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domenica",
+ "Lunedì",
+ "Martedì",
+ "Mercoledì",
+ "Giovedì",
+ "Venerdì",
+ "Sabato",
+ "Domenica");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Lun",
+ "Mar",
+ "Mer",
+ "Gio",
+ "Ven",
+ "Sab",
+ "Dom");
+
+// full month names
+Calendar._MN = new Array
+("Gennaio",
+ "Febbraio",
+ "Marzo",
+ "Aprile",
+ "Maggio",
+ "Giugno",
+ "Luglio",
+ "Augosto",
+ "Settembre",
+ "Ottobre",
+ "Novembre",
+ "Dicembre");
+
+// short month names
+Calendar._SMN = new Array
+("Gen",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mag",
+ "Giu",
+ "Lug",
+ "Ago",
+ "Set",
+ "Ott",
+ "Nov",
+ "Dic");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Informazioni sul calendario";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Per gli aggiornamenti: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuito sotto licenza GNU LGPL.  Vedi http://gnu.org/licenses/lgpl.html per i dettagli." +
+"\n\n" +
+"Selezione data:\n" +
+"- Usa \xab, \xbb per selezionare l'anno\n" +
+"- Usa  " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per i mesi\n" +
+"- Tieni premuto a lungo il mouse per accedere alle funzioni di selezione veloce.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selezione orario:\n" +
+"- Clicca sul numero per incrementarlo\n" +
+"- o Shift+click per decrementarlo\n" +
+"- o click e sinistra o destra per variarlo.";
+
+Calendar._TT["PREV_YEAR"] = "Anno prec.(clicca a lungo per il menù)";
+Calendar._TT["PREV_MONTH"] = "Mese prec. (clicca a lungo per il menù)";
+Calendar._TT["GO_TODAY"] = "Oggi";
+Calendar._TT["NEXT_MONTH"] = "Pross. mese (clicca a lungo per il menù)";
+Calendar._TT["NEXT_YEAR"] = "Pross. anno (clicca a lungo per il menù)";
+Calendar._TT["SEL_DATE"] = "Seleziona data";
+Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostarlo";
+Calendar._TT["PART_TODAY"] = " (oggi)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostra prima %s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Chiudi";
+Calendar._TT["TODAY"] = "Oggi";
+Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per cambiare il valore";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a:%b:%e";
+
+Calendar._TT["WK"] = "set";
+Calendar._TT["TIME"] = "Ora:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-jp.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-jp.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-jp.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,45 +0,0 @@
-// ** I18N
-Calendar._DN = new Array
-("“ú",
- "ŒŽ",
- "‰Î",
- "…",
- "–Ø",
- "‹à",
- "“y",
- "“ú");
-Calendar._MN = new Array
-("1ŒŽ",
- "2ŒŽ",
- "3ŒŽ",
- "4ŒŽ",
- "5ŒŽ",
- "6ŒŽ",
- "7ŒŽ",
- "8ŒŽ",
- "9ŒŽ",
- "10ŒŽ",
- "11ŒŽ",
- "12ŒŽ");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["TOGGLE"] = "T‚̍ŏ‰‚Ì—j“ú‚ðØ‚è‘Ö‚¦";
-Calendar._TT["PREV_YEAR"] = "‘O”N";
-Calendar._TT["PREV_MONTH"] = "‘OŒŽ";
-Calendar._TT["GO_TODAY"] = "¡“ú";
-Calendar._TT["NEXT_MONTH"] = "—‚ŒŽ";
-Calendar._TT["NEXT_YEAR"] = "—‚”N";
-Calendar._TT["SEL_DATE"] = "“ú•t‘I‘ð";
-Calendar._TT["DRAG_TO_MOVE"] = "ƒEƒBƒ“ƒhƒE‚̈ړ®";
-Calendar._TT["PART_TODAY"] = " (¡“ú)";
-Calendar._TT["MON_FIRST"] = "ŒŽ—j“ú‚ðæ“ª‚É";
-Calendar._TT["SUN_FIRST"] = "“ú—j“ú‚ðæ“ª‚É";
-Calendar._TT["CLOSE"] = "•Â‚¶‚é";
-Calendar._TT["TODAY"] = "¡“ú";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
-Calendar._TT["TT_DATE_FORMAT"] = "%mŒŽ %d“ú (%a)";
-
-Calendar._TT["WK"] = "T";

Copied: plog/trunk/js/jscalendar/lang/calendar-jp.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-jp.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-jp.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-jp.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,45 @@
+// ** I18N
+Calendar._DN = new Array
+("“ú",
+ "ŒŽ",
+ "‰Î",
+ "…",
+ "–Ø",
+ "‹à",
+ "“y",
+ "“ú");
+Calendar._MN = new Array
+("1ŒŽ",
+ "2ŒŽ",
+ "3ŒŽ",
+ "4ŒŽ",
+ "5ŒŽ",
+ "6ŒŽ",
+ "7ŒŽ",
+ "8ŒŽ",
+ "9ŒŽ",
+ "10ŒŽ",
+ "11ŒŽ",
+ "12ŒŽ");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "T‚̍ŏ‰‚Ì—j“ú‚ðØ‚è‘Ö‚¦";
+Calendar._TT["PREV_YEAR"] = "‘O”N";
+Calendar._TT["PREV_MONTH"] = "‘OŒŽ";
+Calendar._TT["GO_TODAY"] = "¡“ú";
+Calendar._TT["NEXT_MONTH"] = "—‚ŒŽ";
+Calendar._TT["NEXT_YEAR"] = "—‚”N";
+Calendar._TT["SEL_DATE"] = "“ú•t‘I‘ð";
+Calendar._TT["DRAG_TO_MOVE"] = "ƒEƒBƒ“ƒhƒE‚̈ړ®";
+Calendar._TT["PART_TODAY"] = " (¡“ú)";
+Calendar._TT["MON_FIRST"] = "ŒŽ—j“ú‚ðæ“ª‚É";
+Calendar._TT["SUN_FIRST"] = "“ú—j“ú‚ðæ“ª‚É";
+Calendar._TT["CLOSE"] = "•Â‚¶‚é";
+Calendar._TT["TODAY"] = "¡“ú";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
+Calendar._TT["TT_DATE_FORMAT"] = "%mŒŽ %d“ú (%a)";
+
+Calendar._TT["WK"] = "T";

Deleted: plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ko-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,120 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Translation: Yourim Yi <yyi at yourim.net>
-// Encoding: EUC-KR
-// lang : ko
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-
-Calendar._DN = new Array
-("일요일",
- "월요일",
- "화요일",
- "수요일",
- "목요일",
- "금요일",
- "토요일",
- "일요일");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("일",
- "ì›”",
- "í™”",
- "수",
- "목",
- "금",
- "토",
- "일");
-
-// full month names
-Calendar._MN = new Array
-("1ì›”",
- "2ì›”",
- "3ì›”",
- "4ì›”",
- "5ì›”",
- "6ì›”",
- "7ì›”",
- "8ì›”",
- "9ì›”",
- "10ì›”",
- "11ì›”",
- "12ì›”");
-
-// short month names
-Calendar._SMN = new Array
-("1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9",
- "10",
- "11",
- "12");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "calendar 에 대해서";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"\n"+
-"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
-"\n"+
-"GNU LGPL 라이센스로 배포됩니다. \n"+
-"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
-"\n\n" +
-"날짜 선택:\n" +
-"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" +
-"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\n" +
-"- 계속 누르고 있으면 위 값들을 빠르게 선택하실 수 있습니다.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"시간 선택:\n" +
-"- 마우스로 누르면 시간이 증가합니다\n" +
-"- Shift 키와 함께 누르면 감소합니다\n" +
-"- 누른 상태에서 마우스를 움직이면 좀 더 빠르게 값이 변합니다.\n";
-
-Calendar._TT["PREV_YEAR"] = "지난 해 (길게 누르면 목록)";
-Calendar._TT["PREV_MONTH"] = "지난 달 (길게 누르면 목록)";
-Calendar._TT["GO_TODAY"] = "오늘 날짜로";
-Calendar._TT["NEXT_MONTH"] = "다음 달 (길게 누르면 목록)";
-Calendar._TT["NEXT_YEAR"] = "다음 해 (길게 누르면 목록)";
-Calendar._TT["SEL_DATE"] = "날짜를 선택하세요";
-Calendar._TT["DRAG_TO_MOVE"] = "마우스 드래그로 이동 하세요";
-Calendar._TT["PART_TODAY"] = " (오늘)";
-Calendar._TT["MON_FIRST"] = "월요일을 한 주의 시작 요일로";
-Calendar._TT["SUN_FIRST"] = "일요일을 한 주의 시작 요일로";
-Calendar._TT["CLOSE"] = "닫기";
-Calendar._TT["TODAY"] = "오늘";
-Calendar._TT["TIME_PART"] = "(Shift-)클릭 또는 드래그 하세요";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
-
-Calendar._TT["WK"] = "주";

Copied: plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ko-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-ko-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,120 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Translation: Yourim Yi <yyi at yourim.net>
+// Encoding: EUC-KR
+// lang : ko
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+
+Calendar._DN = new Array
+("일요일",
+ "월요일",
+ "화요일",
+ "수요일",
+ "목요일",
+ "금요일",
+ "토요일",
+ "일요일");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("일",
+ "ì›”",
+ "í™”",
+ "수",
+ "목",
+ "금",
+ "토",
+ "일");
+
+// full month names
+Calendar._MN = new Array
+("1ì›”",
+ "2ì›”",
+ "3ì›”",
+ "4ì›”",
+ "5ì›”",
+ "6ì›”",
+ "7ì›”",
+ "8ì›”",
+ "9ì›”",
+ "10ì›”",
+ "11ì›”",
+ "12ì›”");
+
+// short month names
+Calendar._SMN = new Array
+("1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "calendar 에 대해서";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"\n"+
+"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
+"\n"+
+"GNU LGPL 라이센스로 배포됩니다. \n"+
+"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
+"\n\n" +
+"날짜 선택:\n" +
+"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" +
+"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\n" +
+"- 계속 누르고 있으면 위 값들을 빠르게 선택하실 수 있습니다.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"시간 선택:\n" +
+"- 마우스로 누르면 시간이 증가합니다\n" +
+"- Shift 키와 함께 누르면 감소합니다\n" +
+"- 누른 상태에서 마우스를 움직이면 좀 더 빠르게 값이 변합니다.\n";
+
+Calendar._TT["PREV_YEAR"] = "지난 해 (길게 누르면 목록)";
+Calendar._TT["PREV_MONTH"] = "지난 달 (길게 누르면 목록)";
+Calendar._TT["GO_TODAY"] = "오늘 날짜로";
+Calendar._TT["NEXT_MONTH"] = "다음 달 (길게 누르면 목록)";
+Calendar._TT["NEXT_YEAR"] = "다음 해 (길게 누르면 목록)";
+Calendar._TT["SEL_DATE"] = "날짜를 선택하세요";
+Calendar._TT["DRAG_TO_MOVE"] = "마우스 드래그로 이동 하세요";
+Calendar._TT["PART_TODAY"] = " (오늘)";
+Calendar._TT["MON_FIRST"] = "월요일을 한 주의 시작 요일로";
+Calendar._TT["SUN_FIRST"] = "일요일을 한 주의 시작 요일로";
+Calendar._TT["CLOSE"] = "닫기";
+Calendar._TT["TODAY"] = "오늘";
+Calendar._TT["TIME_PART"] = "(Shift-)클릭 또는 드래그 하세요";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
+
+Calendar._TT["WK"] = "주";

Deleted: plog/trunk/js/jscalendar/lang/calendar-ko.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ko.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-ko.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,120 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Translation: Yourim Yi <yyi at yourim.net>
-// Encoding: EUC-KR
-// lang : ko
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-
-Calendar._DN = new Array
-("ÀÏ¿äÀÏ",
- "¿ù¿äÀÏ",
- "È­¿äÀÏ",
- "¼ö¿äÀÏ",
- "¸ñ¿äÀÏ",
- "±Ý¿äÀÏ",
- "Åä¿äÀÏ",
- "ÀÏ¿äÀÏ");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("ÀÏ",
- "¿ù",
- "È­",
- "¼ö",
- "¸ñ",
- "±Ý",
- "Åä",
- "ÀÏ");
-
-// full month names
-Calendar._MN = new Array
-("1¿ù",
- "2¿ù",
- "3¿ù",
- "4¿ù",
- "5¿ù",
- "6¿ù",
- "7¿ù",
- "8¿ù",
- "9¿ù",
- "10¿ù",
- "11¿ù",
- "12¿ù");
-
-// short month names
-Calendar._SMN = new Array
-("1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9",
- "10",
- "11",
- "12");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "calendar ¿¡ ´ëÇؼ­";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"\n"+
-"ÃֽŠ¹öÀüÀ» ¹ÞÀ¸½Ã·Á¸é http://www.dynarch.com/projects/calendar/ ¿¡ ¹æ¹®Çϼ¼¿ä\n" +
-"\n"+
-"GNU LGPL ¶óÀ̼¾½º·Î ¹èÆ÷µË´Ï´Ù. \n"+
-"¶óÀ̼¾½º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº http://gnu.org/licenses/lgpl.html À» ÀÐÀ¸¼¼¿ä." +
-"\n\n" +
-"³¯Â¥ ¼±ÅÃ:\n" +
-"- ¿¬µµ¸¦ ¼±ÅÃÇÏ·Á¸é \xab, \xbb ¹öÆ°À» »ç¿ëÇÕ´Ï´Ù\n" +
-"- ´ÞÀ» ¼±ÅÃÇÏ·Á¸é " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " ¹öÆ°À» ´©¸£¼¼¿ä\n" +
-"- °è¼Ó ´©¸£°í ÀÖÀ¸¸é À§ °ªµéÀ» ºü¸£°Ô ¼±ÅÃÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"½Ã°£ ¼±ÅÃ:\n" +
-"- ¸¶¿ì½º·Î ´©¸£¸é ½Ã°£ÀÌ Áõ°¡ÇÕ´Ï´Ù\n" +
-"- Shift Å°¿Í ÇÔ²² ´©¸£¸é °¨¼ÒÇÕ´Ï´Ù\n" +
-"- ´©¸¥ »óÅ¿¡¼­ ¸¶¿ì½º¸¦ ¿òÁ÷À̸é Á» ´õ ºü¸£°Ô °ªÀÌ º¯ÇÕ´Ï´Ù.\n";
-
-Calendar._TT["PREV_YEAR"] = "Áö³­ ÇØ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
-Calendar._TT["PREV_MONTH"] = "Áö³­ ´Þ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
-Calendar._TT["GO_TODAY"] = "¿À´Ã ³¯Â¥·Î";
-Calendar._TT["NEXT_MONTH"] = "´ÙÀ½ ´Þ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
-Calendar._TT["NEXT_YEAR"] = "´ÙÀ½ ÇØ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
-Calendar._TT["SEL_DATE"] = "³¯Â¥¸¦ ¼±ÅÃÇϼ¼¿ä";
-Calendar._TT["DRAG_TO_MOVE"] = "¸¶¿ì½º µå·¡±×·Î À̵¿ Çϼ¼¿ä";
-Calendar._TT["PART_TODAY"] = " (¿À´Ã)";
-Calendar._TT["MON_FIRST"] = "¿ù¿äÀÏÀ» ÇÑ ÁÖÀÇ ½ÃÀÛ ¿äÀÏ·Î";
-Calendar._TT["SUN_FIRST"] = "ÀÏ¿äÀÏÀ» ÇÑ ÁÖÀÇ ½ÃÀÛ ¿äÀÏ·Î";
-Calendar._TT["CLOSE"] = "´Ý±â";
-Calendar._TT["TODAY"] = "¿À´Ã";
-Calendar._TT["TIME_PART"] = "(Shift-)Ŭ¸¯ ¶Ç´Â µå·¡±× Çϼ¼¿ä";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
-
-Calendar._TT["WK"] = "ÁÖ";

Copied: plog/trunk/js/jscalendar/lang/calendar-ko.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ko.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-ko.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-ko.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,120 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Translation: Yourim Yi <yyi at yourim.net>
+// Encoding: EUC-KR
+// lang : ko
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+
+Calendar._DN = new Array
+("ÀÏ¿äÀÏ",
+ "¿ù¿äÀÏ",
+ "È­¿äÀÏ",
+ "¼ö¿äÀÏ",
+ "¸ñ¿äÀÏ",
+ "±Ý¿äÀÏ",
+ "Åä¿äÀÏ",
+ "ÀÏ¿äÀÏ");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("ÀÏ",
+ "¿ù",
+ "È­",
+ "¼ö",
+ "¸ñ",
+ "±Ý",
+ "Åä",
+ "ÀÏ");
+
+// full month names
+Calendar._MN = new Array
+("1¿ù",
+ "2¿ù",
+ "3¿ù",
+ "4¿ù",
+ "5¿ù",
+ "6¿ù",
+ "7¿ù",
+ "8¿ù",
+ "9¿ù",
+ "10¿ù",
+ "11¿ù",
+ "12¿ù");
+
+// short month names
+Calendar._SMN = new Array
+("1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "calendar ¿¡ ´ëÇؼ­";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"\n"+
+"ÃֽŠ¹öÀüÀ» ¹ÞÀ¸½Ã·Á¸é http://www.dynarch.com/projects/calendar/ ¿¡ ¹æ¹®Çϼ¼¿ä\n" +
+"\n"+
+"GNU LGPL ¶óÀ̼¾½º·Î ¹èÆ÷µË´Ï´Ù. \n"+
+"¶óÀ̼¾½º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº http://gnu.org/licenses/lgpl.html À» ÀÐÀ¸¼¼¿ä." +
+"\n\n" +
+"³¯Â¥ ¼±ÅÃ:\n" +
+"- ¿¬µµ¸¦ ¼±ÅÃÇÏ·Á¸é \xab, \xbb ¹öÆ°À» »ç¿ëÇÕ´Ï´Ù\n" +
+"- ´ÞÀ» ¼±ÅÃÇÏ·Á¸é " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " ¹öÆ°À» ´©¸£¼¼¿ä\n" +
+"- °è¼Ó ´©¸£°í ÀÖÀ¸¸é À§ °ªµéÀ» ºü¸£°Ô ¼±ÅÃÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"½Ã°£ ¼±ÅÃ:\n" +
+"- ¸¶¿ì½º·Î ´©¸£¸é ½Ã°£ÀÌ Áõ°¡ÇÕ´Ï´Ù\n" +
+"- Shift Å°¿Í ÇÔ²² ´©¸£¸é °¨¼ÒÇÕ´Ï´Ù\n" +
+"- ´©¸¥ »óÅ¿¡¼­ ¸¶¿ì½º¸¦ ¿òÁ÷À̸é Á» ´õ ºü¸£°Ô °ªÀÌ º¯ÇÕ´Ï´Ù.\n";
+
+Calendar._TT["PREV_YEAR"] = "Áö³­ ÇØ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
+Calendar._TT["PREV_MONTH"] = "Áö³­ ´Þ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
+Calendar._TT["GO_TODAY"] = "¿À´Ã ³¯Â¥·Î";
+Calendar._TT["NEXT_MONTH"] = "´ÙÀ½ ´Þ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
+Calendar._TT["NEXT_YEAR"] = "´ÙÀ½ ÇØ (±æ°Ô ´©¸£¸é ¸ñ·Ï)";
+Calendar._TT["SEL_DATE"] = "³¯Â¥¸¦ ¼±ÅÃÇϼ¼¿ä";
+Calendar._TT["DRAG_TO_MOVE"] = "¸¶¿ì½º µå·¡±×·Î À̵¿ Çϼ¼¿ä";
+Calendar._TT["PART_TODAY"] = " (¿À´Ã)";
+Calendar._TT["MON_FIRST"] = "¿ù¿äÀÏÀ» ÇÑ ÁÖÀÇ ½ÃÀÛ ¿äÀÏ·Î";
+Calendar._TT["SUN_FIRST"] = "ÀÏ¿äÀÏÀ» ÇÑ ÁÖÀÇ ½ÃÀÛ ¿äÀÏ·Î";
+Calendar._TT["CLOSE"] = "´Ý±â";
+Calendar._TT["TODAY"] = "¿À´Ã";
+Calendar._TT["TIME_PART"] = "(Shift-)Ŭ¸¯ ¶Ç´Â µå·¡±× Çϼ¼¿ä";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
+
+Calendar._TT["WK"] = "ÁÖ";

Deleted: plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-lt-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,114 +0,0 @@
-// ** I18N
-
-// Calendar LT language
-// Author: Martynas Majeris, <martynas at solmetra.lt>
-// Encoding: UTF-8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Sekmadienis",
- "Pirmadienis",
- "Antradienis",
- "Trečiadienis",
- "Ketvirtadienis",
- "Pentadienis",
- "Šeštadienis",
- "Sekmadienis");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Sek",
- "Pir",
- "Ant",
- "Tre",
- "Ket",
- "Pen",
- "Šeš",
- "Sek");
-
-// full month names
-Calendar._MN = new Array
-("Sausis",
- "Vasaris",
- "Kovas",
- "Balandis",
- "Gegužė",
- "Birželis",
- "Liepa",
- "Rugpjūtis",
- "RugsÄ—jis",
- "Spalis",
- "Lapkritis",
- "Gruodis");
-
-// short month names
-Calendar._SMN = new Array
-("Sau",
- "Vas",
- "Kov",
- "Bal",
- "Geg",
- "Bir",
- "Lie",
- "Rgp",
- "Rgs",
- "Spa",
- "Lap",
- "Gru");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Apie kalendorių";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"NaujausiÄ… versijÄ… rasite: http://www.dynarch.com/projects/calendar/\n" +
-"Platinamas pagal GNU LGPL licencijÄ…. Aplankykite http://gnu.org/licenses/lgpl.html" +
-"\n\n" +
-"Datos pasirinkimas:\n" +
-"- Metų pasirinkimas: \xab, \xbb\n" +
-"- MÄ—nesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
-"- Nuspauskite ir laikykite pelės klavišą greitesniam pasirinkimui.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Laiko pasirinkimas:\n" +
-"- Spustelkite ant valandų arba minučių - skaičius padidės vienetu.\n" +
-"- Jei spausite kartu su Shift, skaičius sumažės.\n" +
-"- Greitam pasirinkimui spustelkite ir pajudinkite pelÄ™.";
-
-Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
-Calendar._TT["PREV_MONTH"] = "Ankstesnis mÄ—nuo (laikykite, jei norite meniu)";
-Calendar._TT["GO_TODAY"] = "Pasirinkti Å¡iandienÄ…";
-Calendar._TT["NEXT_MONTH"] = "Kitas mÄ—nuo (laikykite, jei norite meniu)";
-Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
-Calendar._TT["SEL_DATE"] = "Pasirinkite datÄ…";
-Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
-Calendar._TT["PART_TODAY"] = " (Å¡iandien)";
-Calendar._TT["MON_FIRST"] = "Pirma savaitÄ—s diena - pirmadienis";
-Calendar._TT["SUN_FIRST"] = "Pirma savaitÄ—s diena - sekmadienis";
-Calendar._TT["CLOSE"] = "Uždaryti";
-Calendar._TT["TODAY"] = "Å iandien";
-Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
-
-Calendar._TT["WK"] = "sav";

Copied: plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-lt-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-lt-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,114 @@
+// ** I18N
+
+// Calendar LT language
+// Author: Martynas Majeris, <martynas at solmetra.lt>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sekmadienis",
+ "Pirmadienis",
+ "Antradienis",
+ "Trečiadienis",
+ "Ketvirtadienis",
+ "Pentadienis",
+ "Šeštadienis",
+ "Sekmadienis");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sek",
+ "Pir",
+ "Ant",
+ "Tre",
+ "Ket",
+ "Pen",
+ "Šeš",
+ "Sek");
+
+// full month names
+Calendar._MN = new Array
+("Sausis",
+ "Vasaris",
+ "Kovas",
+ "Balandis",
+ "Gegužė",
+ "Birželis",
+ "Liepa",
+ "Rugpjūtis",
+ "RugsÄ—jis",
+ "Spalis",
+ "Lapkritis",
+ "Gruodis");
+
+// short month names
+Calendar._SMN = new Array
+("Sau",
+ "Vas",
+ "Kov",
+ "Bal",
+ "Geg",
+ "Bir",
+ "Lie",
+ "Rgp",
+ "Rgs",
+ "Spa",
+ "Lap",
+ "Gru");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Apie kalendorių";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"NaujausiÄ… versijÄ… rasite: http://www.dynarch.com/projects/calendar/\n" +
+"Platinamas pagal GNU LGPL licencijÄ…. Aplankykite http://gnu.org/licenses/lgpl.html" +
+"\n\n" +
+"Datos pasirinkimas:\n" +
+"- Metų pasirinkimas: \xab, \xbb\n" +
+"- MÄ—nesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
+"- Nuspauskite ir laikykite pelės klavišą greitesniam pasirinkimui.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Laiko pasirinkimas:\n" +
+"- Spustelkite ant valandų arba minučių - skaičius padidės vienetu.\n" +
+"- Jei spausite kartu su Shift, skaičius sumažės.\n" +
+"- Greitam pasirinkimui spustelkite ir pajudinkite pelÄ™.";
+
+Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
+Calendar._TT["PREV_MONTH"] = "Ankstesnis mÄ—nuo (laikykite, jei norite meniu)";
+Calendar._TT["GO_TODAY"] = "Pasirinkti Å¡iandienÄ…";
+Calendar._TT["NEXT_MONTH"] = "Kitas mÄ—nuo (laikykite, jei norite meniu)";
+Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
+Calendar._TT["SEL_DATE"] = "Pasirinkite datÄ…";
+Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
+Calendar._TT["PART_TODAY"] = " (Å¡iandien)";
+Calendar._TT["MON_FIRST"] = "Pirma savaitÄ—s diena - pirmadienis";
+Calendar._TT["SUN_FIRST"] = "Pirma savaitÄ—s diena - sekmadienis";
+Calendar._TT["CLOSE"] = "Uždaryti";
+Calendar._TT["TODAY"] = "Å iandien";
+Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
+
+Calendar._TT["WK"] = "sav";

Deleted: plog/trunk/js/jscalendar/lang/calendar-lt.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-lt.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-lt.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,114 +0,0 @@
-// ** I18N
-
-// Calendar LT language
-// Author: Martynas Majeris, <martynas at solmetra.lt>
-// Encoding: Windows-1257
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Sekmadienis",
- "Pirmadienis",
- "Antradienis",
- "Treèiadienis",
- "Ketvirtadienis",
- "Pentadienis",
- "Ðeðtadienis",
- "Sekmadienis");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Sek",
- "Pir",
- "Ant",
- "Tre",
- "Ket",
- "Pen",
- "Ðeð",
- "Sek");
-
-// full month names
-Calendar._MN = new Array
-("Sausis",
- "Vasaris",
- "Kovas",
- "Balandis",
- "Geguþë",
- "Birþelis",
- "Liepa",
- "Rugpjûtis",
- "Rugsëjis",
- "Spalis",
- "Lapkritis",
- "Gruodis");
-
-// short month names
-Calendar._SMN = new Array
-("Sau",
- "Vas",
- "Kov",
- "Bal",
- "Geg",
- "Bir",
- "Lie",
- "Rgp",
- "Rgs",
- "Spa",
- "Lap",
- "Gru");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Apie kalendoriø";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Naujausià versijà rasite: http://www.dynarch.com/projects/calendar/\n" +
-"Platinamas pagal GNU LGPL licencijà. Aplankykite http://gnu.org/licenses/lgpl.html" +
-"\n\n" +
-"Datos pasirinkimas:\n" +
-"- Metø pasirinkimas: \xab, \xbb\n" +
-"- Mënesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
-"- Nuspauskite ir laikykite pelës klaviðà greitesniam pasirinkimui.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Laiko pasirinkimas:\n" +
-"- Spustelkite ant valandø arba minuèiø - skaièus padidës vienetu.\n" +
-"- Jei spausite kartu su Shift, skaièius sumaþës.\n" +
-"- Greitam pasirinkimui spustelkite ir pajudinkite pelæ.";
-
-Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
-Calendar._TT["PREV_MONTH"] = "Ankstesnis mënuo (laikykite, jei norite meniu)";
-Calendar._TT["GO_TODAY"] = "Pasirinkti ðiandienà";
-Calendar._TT["NEXT_MONTH"] = "Kitas mënuo (laikykite, jei norite meniu)";
-Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
-Calendar._TT["SEL_DATE"] = "Pasirinkite datà";
-Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
-Calendar._TT["PART_TODAY"] = " (ðiandien)";
-Calendar._TT["MON_FIRST"] = "Pirma savaitës diena - pirmadienis";
-Calendar._TT["SUN_FIRST"] = "Pirma savaitës diena - sekmadienis";
-Calendar._TT["CLOSE"] = "Uþdaryti";
-Calendar._TT["TODAY"] = "Ðiandien";
-Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
-
-Calendar._TT["WK"] = "sav";

Copied: plog/trunk/js/jscalendar/lang/calendar-lt.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-lt.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-lt.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-lt.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,114 @@
+// ** I18N
+
+// Calendar LT language
+// Author: Martynas Majeris, <martynas at solmetra.lt>
+// Encoding: Windows-1257
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sekmadienis",
+ "Pirmadienis",
+ "Antradienis",
+ "Treèiadienis",
+ "Ketvirtadienis",
+ "Pentadienis",
+ "Ðeðtadienis",
+ "Sekmadienis");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sek",
+ "Pir",
+ "Ant",
+ "Tre",
+ "Ket",
+ "Pen",
+ "Ðeð",
+ "Sek");
+
+// full month names
+Calendar._MN = new Array
+("Sausis",
+ "Vasaris",
+ "Kovas",
+ "Balandis",
+ "Geguþë",
+ "Birþelis",
+ "Liepa",
+ "Rugpjûtis",
+ "Rugsëjis",
+ "Spalis",
+ "Lapkritis",
+ "Gruodis");
+
+// short month names
+Calendar._SMN = new Array
+("Sau",
+ "Vas",
+ "Kov",
+ "Bal",
+ "Geg",
+ "Bir",
+ "Lie",
+ "Rgp",
+ "Rgs",
+ "Spa",
+ "Lap",
+ "Gru");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Apie kalendoriø";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Naujausià versijà rasite: http://www.dynarch.com/projects/calendar/\n" +
+"Platinamas pagal GNU LGPL licencijà. Aplankykite http://gnu.org/licenses/lgpl.html" +
+"\n\n" +
+"Datos pasirinkimas:\n" +
+"- Metø pasirinkimas: \xab, \xbb\n" +
+"- Mënesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
+"- Nuspauskite ir laikykite pelës klaviðà greitesniam pasirinkimui.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Laiko pasirinkimas:\n" +
+"- Spustelkite ant valandø arba minuèiø - skaièus padidës vienetu.\n" +
+"- Jei spausite kartu su Shift, skaièius sumaþës.\n" +
+"- Greitam pasirinkimui spustelkite ir pajudinkite pelæ.";
+
+Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
+Calendar._TT["PREV_MONTH"] = "Ankstesnis mënuo (laikykite, jei norite meniu)";
+Calendar._TT["GO_TODAY"] = "Pasirinkti ðiandienà";
+Calendar._TT["NEXT_MONTH"] = "Kitas mënuo (laikykite, jei norite meniu)";
+Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
+Calendar._TT["SEL_DATE"] = "Pasirinkite datà";
+Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
+Calendar._TT["PART_TODAY"] = " (ðiandien)";
+Calendar._TT["MON_FIRST"] = "Pirma savaitës diena - pirmadienis";
+Calendar._TT["SUN_FIRST"] = "Pirma savaitës diena - sekmadienis";
+Calendar._TT["CLOSE"] = "Uþdaryti";
+Calendar._TT["TODAY"] = "Ðiandien";
+Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
+
+Calendar._TT["WK"] = "sav";

Deleted: plog/trunk/js/jscalendar/lang/calendar-lv.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-lv.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-lv.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar LV language
-// Author: Juris Valdovskis, <juris at dc.lv>
-// Encoding: cp1257
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Svçtdiena",
- "Pirmdiena",
- "Otrdiena",
- "Treðdiena",
- "Ceturdiena",
- "Piektdiena",
- "Sestdiena",
- "Svçtdiena");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Sv",
- "Pr",
- "Ot",
- "Tr",
- "Ce",
- "Pk",
- "Se",
- "Sv");
-
-// full month names
-Calendar._MN = new Array
-("Janvâris",
- "Februâris",
- "Marts",
- "Aprîlis",
- "Maijs",
- "Jûnijs",
- "Jûlijs",
- "Augusts",
- "Septembris",
- "Oktobris",
- "Novembris",
- "Decembris");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Feb",
- "Mar",
- "Apr",
- "Mai",
- "Jûn",
- "Jûl",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Dec");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Par kalendâru";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Datuma izvçle:\n" +
-"- Izmanto \xab, \xbb pogas, lai izvçlçtos gadu\n" +
-"- Izmanto " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "pogas, lai izvçlçtos mçnesi\n" +
-"- Turi nospiestu peles pogu uz jebkuru no augstâk minçtajâm pogâm, lai paâtrinâtu izvçli.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Laika izvçle:\n" +
-"- Uzklikðíini uz jebkuru no laika daïâm, lai palielinâtu to\n" +
-"- vai Shift-klikðíis, lai samazinâtu to\n" +
-"- vai noklikðíini un velc uz attiecîgo virzienu lai mainîtu âtrâk.";
-
-Calendar._TT["PREV_YEAR"] = "Iepr. gads (turi izvçlnei)";
-Calendar._TT["PREV_MONTH"] = "Iepr. mçnesis (turi izvçlnei)";
-Calendar._TT["GO_TODAY"] = "Ðodien";
-Calendar._TT["NEXT_MONTH"] = "Nâkoðais mçnesis (turi izvçlnei)";
-Calendar._TT["NEXT_YEAR"] = "Nâkoðais gads (turi izvçlnei)";
-Calendar._TT["SEL_DATE"] = "Izvçlies datumu";
-Calendar._TT["DRAG_TO_MOVE"] = "Velc, lai pârvietotu";
-Calendar._TT["PART_TODAY"] = " (ðodien)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Attçlot %s kâ pirmo";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "1,7";
-
-Calendar._TT["CLOSE"] = "Aizvçrt";
-Calendar._TT["TODAY"] = "Ðodien";
-Calendar._TT["TIME_PART"] = "(Shift-)Klikðíis vai pârvieto, lai mainîtu";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "Laiks:";

Copied: plog/trunk/js/jscalendar/lang/calendar-lv.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-lv.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-lv.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-lv.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar LV language
+// Author: Juris Valdovskis, <juris at dc.lv>
+// Encoding: cp1257
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Svçtdiena",
+ "Pirmdiena",
+ "Otrdiena",
+ "Treðdiena",
+ "Ceturdiena",
+ "Piektdiena",
+ "Sestdiena",
+ "Svçtdiena");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sv",
+ "Pr",
+ "Ot",
+ "Tr",
+ "Ce",
+ "Pk",
+ "Se",
+ "Sv");
+
+// full month names
+Calendar._MN = new Array
+("Janvâris",
+ "Februâris",
+ "Marts",
+ "Aprîlis",
+ "Maijs",
+ "Jûnijs",
+ "Jûlijs",
+ "Augusts",
+ "Septembris",
+ "Oktobris",
+ "Novembris",
+ "Decembris");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mai",
+ "Jûn",
+ "Jûl",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Par kalendâru";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Datuma izvçle:\n" +
+"- Izmanto \xab, \xbb pogas, lai izvçlçtos gadu\n" +
+"- Izmanto " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "pogas, lai izvçlçtos mçnesi\n" +
+"- Turi nospiestu peles pogu uz jebkuru no augstâk minçtajâm pogâm, lai paâtrinâtu izvçli.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Laika izvçle:\n" +
+"- Uzklikðíini uz jebkuru no laika daïâm, lai palielinâtu to\n" +
+"- vai Shift-klikðíis, lai samazinâtu to\n" +
+"- vai noklikðíini un velc uz attiecîgo virzienu lai mainîtu âtrâk.";
+
+Calendar._TT["PREV_YEAR"] = "Iepr. gads (turi izvçlnei)";
+Calendar._TT["PREV_MONTH"] = "Iepr. mçnesis (turi izvçlnei)";
+Calendar._TT["GO_TODAY"] = "Ðodien";
+Calendar._TT["NEXT_MONTH"] = "Nâkoðais mçnesis (turi izvçlnei)";
+Calendar._TT["NEXT_YEAR"] = "Nâkoðais gads (turi izvçlnei)";
+Calendar._TT["SEL_DATE"] = "Izvçlies datumu";
+Calendar._TT["DRAG_TO_MOVE"] = "Velc, lai pârvietotu";
+Calendar._TT["PART_TODAY"] = " (ðodien)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Attçlot %s kâ pirmo";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "1,7";
+
+Calendar._TT["CLOSE"] = "Aizvçrt";
+Calendar._TT["TODAY"] = "Ðodien";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikðíis vai pârvieto, lai mainîtu";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Laiks:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-nl.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-nl.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-nl.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,73 +0,0 @@
-// ** I18N
-Calendar._DN = new Array
-("Zondag",
- "Maandag",
- "Dinsdag",
- "Woensdag",
- "Donderdag",
- "Vrijdag",
- "Zaterdag",
- "Zondag");
-
-Calendar._SDN_len = 2;
-
-Calendar._MN = new Array
-("Januari",
- "Februari",
- "Maart",
- "April",
- "Mei",
- "Juni",
- "Juli",
- "Augustus",
- "September",
- "Oktober",
- "November",
- "December");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Info";
-
-Calendar._TT["ABOUT"] =
-"DHTML Datum/Tijd Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
-"Ga voor de meest recente versie naar: http://www.dynarch.com/projects/calendar/\n" +
-"Verspreid onder de GNU LGPL. Zie http://gnu.org/licenses/lgpl.html voor details." +
-"\n\n" +
-"Datum selectie:\n" +
-"- Gebruik de \xab \xbb knoppen om een jaar te selecteren\n" +
-"- Gebruik de " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knoppen om een maand te selecteren\n" +
-"- Houd de muis ingedrukt op de genoemde knoppen voor een snellere selectie.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Tijd selectie:\n" +
-"- Klik op een willekeurig onderdeel van het tijd gedeelte om het te verhogen\n" +
-"- of Shift-klik om het te verlagen\n" +
-"- of klik en sleep voor een snellere selectie.";
-
-//Calendar._TT["TOGGLE"] = "Selecteer de eerste week-dag";
-Calendar._TT["PREV_YEAR"] = "Vorig jaar (ingedrukt voor menu)";
-Calendar._TT["PREV_MONTH"] = "Vorige maand (ingedrukt voor menu)";
-Calendar._TT["GO_TODAY"] = "Ga naar Vandaag";
-Calendar._TT["NEXT_MONTH"] = "Volgende maand (ingedrukt voor menu)";
-Calendar._TT["NEXT_YEAR"] = "Volgend jaar (ingedrukt voor menu)";
-Calendar._TT["SEL_DATE"] = "Selecteer datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Klik en sleep om te verplaatsen";
-Calendar._TT["PART_TODAY"] = " (vandaag)";
-//Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
-//Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
-
-Calendar._TT["DAY_FIRST"] = "Toon %s eerst";
-
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Sluiten";
-Calendar._TT["TODAY"] = "(vandaag)";
-Calendar._TT["TIME_PART"] = "(Shift-)Klik of sleep om de waarde te veranderen";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b %Y";
-
-Calendar._TT["WK"] = "wk";
-Calendar._TT["TIME"] = "Tijd:";
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/lang/calendar-nl.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-nl.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-nl.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-nl.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,73 @@
+// ** I18N
+Calendar._DN = new Array
+("Zondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrijdag",
+ "Zaterdag",
+ "Zondag");
+
+Calendar._SDN_len = 2;
+
+Calendar._MN = new Array
+("Januari",
+ "Februari",
+ "Maart",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "December");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Info";
+
+Calendar._TT["ABOUT"] =
+"DHTML Datum/Tijd Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
+"Ga voor de meest recente versie naar: http://www.dynarch.com/projects/calendar/\n" +
+"Verspreid onder de GNU LGPL. Zie http://gnu.org/licenses/lgpl.html voor details." +
+"\n\n" +
+"Datum selectie:\n" +
+"- Gebruik de \xab \xbb knoppen om een jaar te selecteren\n" +
+"- Gebruik de " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knoppen om een maand te selecteren\n" +
+"- Houd de muis ingedrukt op de genoemde knoppen voor een snellere selectie.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Tijd selectie:\n" +
+"- Klik op een willekeurig onderdeel van het tijd gedeelte om het te verhogen\n" +
+"- of Shift-klik om het te verlagen\n" +
+"- of klik en sleep voor een snellere selectie.";
+
+//Calendar._TT["TOGGLE"] = "Selecteer de eerste week-dag";
+Calendar._TT["PREV_YEAR"] = "Vorig jaar (ingedrukt voor menu)";
+Calendar._TT["PREV_MONTH"] = "Vorige maand (ingedrukt voor menu)";
+Calendar._TT["GO_TODAY"] = "Ga naar Vandaag";
+Calendar._TT["NEXT_MONTH"] = "Volgende maand (ingedrukt voor menu)";
+Calendar._TT["NEXT_YEAR"] = "Volgend jaar (ingedrukt voor menu)";
+Calendar._TT["SEL_DATE"] = "Selecteer datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Klik en sleep om te verplaatsen";
+Calendar._TT["PART_TODAY"] = " (vandaag)";
+//Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
+//Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
+
+Calendar._TT["DAY_FIRST"] = "Toon %s eerst";
+
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Sluiten";
+Calendar._TT["TODAY"] = "(vandaag)";
+Calendar._TT["TIME_PART"] = "(Shift-)Klik of sleep om de waarde te veranderen";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b %Y";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Tijd:";
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/lang/calendar-no.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-no.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-no.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,114 +0,0 @@
-// ** I18N
-
-// Calendar NO language
-// Author: Daniel Holmen, <daniel.holmen at ciber.no>
-// Encoding: UTF-8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Søndag",
- "Mandag",
- "Tirsdag",
- "Onsdag",
- "Torsdag",
- "Fredag",
- "Lørdag",
- "Søndag");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Søn",
- "Man",
- "Tir",
- "Ons",
- "Tor",
- "Fre",
- "Lør",
- "Søn");
-
-// full month names
-Calendar._MN = new Array
-("Januar",
- "Februar",
- "Mars",
- "April",
- "Mai",
- "Juni",
- "Juli",
- "August",
- "September",
- "Oktober",
- "November",
- "Desember");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Feb",
- "Mar",
- "Apr",
- "Mai",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Des");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Om kalenderen";
-
-Calendar._TT["ABOUT"] =
-"DHTML Dato-/Tidsvelger\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For nyeste versjon, gå til: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuert under GNU LGPL.  Se http://gnu.org/licenses/lgpl.html for detaljer." +
-"\n\n" +
-"Datovalg:\n" +
-"- Bruk knappene \xab og \xbb for å velge år\n" +
-"- Bruk knappene " + String.fromCharCode(0x2039) + " og " + String.fromCharCode(0x203a) + " for å velge måned\n" +
-"- Hold inne musknappen eller knappene over for raskere valg.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Tidsvalg:\n" +
-"- Klikk på en av tidsdelene for å øke den\n" +
-"- eller Shift-klikk for å senke verdien\n" +
-"- eller klikk-og-dra for raskere valg..";
-
-Calendar._TT["PREV_YEAR"] = "Forrige. år (hold for meny)";
-Calendar._TT["PREV_MONTH"] = "Forrige. måned (hold for meny)";
-Calendar._TT["GO_TODAY"] = "GÃ¥ til idag";
-Calendar._TT["NEXT_MONTH"] = "Neste måned (hold for meny)";
-Calendar._TT["NEXT_YEAR"] = "Neste år (hold for meny)";
-Calendar._TT["SEL_DATE"] = "Velg dato";
-Calendar._TT["DRAG_TO_MOVE"] = "Dra for å flytte";
-Calendar._TT["PART_TODAY"] = " (idag)";
-Calendar._TT["MON_FIRST"] = "Vis mandag først";
-Calendar._TT["SUN_FIRST"] = "Vis søndag først";
-Calendar._TT["CLOSE"] = "Lukk";
-Calendar._TT["TODAY"] = "Idag";
-Calendar._TT["TIME_PART"] = "(Shift-)Klikk eller dra for å endre verdi";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "uke";
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/lang/calendar-no.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-no.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-no.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-no.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,114 @@
+// ** I18N
+
+// Calendar NO language
+// Author: Daniel Holmen, <daniel.holmen at ciber.no>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Søndag",
+ "Mandag",
+ "Tirsdag",
+ "Onsdag",
+ "Torsdag",
+ "Fredag",
+ "Lørdag",
+ "Søndag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Søn",
+ "Man",
+ "Tir",
+ "Ons",
+ "Tor",
+ "Fre",
+ "Lør",
+ "Søn");
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "Mars",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Desember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Om kalenderen";
+
+Calendar._TT["ABOUT"] =
+"DHTML Dato-/Tidsvelger\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For nyeste versjon, gå til: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuert under GNU LGPL.  Se http://gnu.org/licenses/lgpl.html for detaljer." +
+"\n\n" +
+"Datovalg:\n" +
+"- Bruk knappene \xab og \xbb for å velge år\n" +
+"- Bruk knappene " + String.fromCharCode(0x2039) + " og " + String.fromCharCode(0x203a) + " for å velge måned\n" +
+"- Hold inne musknappen eller knappene over for raskere valg.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Tidsvalg:\n" +
+"- Klikk på en av tidsdelene for å øke den\n" +
+"- eller Shift-klikk for å senke verdien\n" +
+"- eller klikk-og-dra for raskere valg..";
+
+Calendar._TT["PREV_YEAR"] = "Forrige. år (hold for meny)";
+Calendar._TT["PREV_MONTH"] = "Forrige. måned (hold for meny)";
+Calendar._TT["GO_TODAY"] = "GÃ¥ til idag";
+Calendar._TT["NEXT_MONTH"] = "Neste måned (hold for meny)";
+Calendar._TT["NEXT_YEAR"] = "Neste år (hold for meny)";
+Calendar._TT["SEL_DATE"] = "Velg dato";
+Calendar._TT["DRAG_TO_MOVE"] = "Dra for å flytte";
+Calendar._TT["PART_TODAY"] = " (idag)";
+Calendar._TT["MON_FIRST"] = "Vis mandag først";
+Calendar._TT["SUN_FIRST"] = "Vis søndag først";
+Calendar._TT["CLOSE"] = "Lukk";
+Calendar._TT["TODAY"] = "Idag";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikk eller dra for å endre verdi";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "uke";
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-pl-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,93 +0,0 @@
-// ** I18N
-
-// Calendar PL language
-// Author: Dariusz Pietrzak, <eyck at ghost.anime.pl>
-// Author: Janusz Piwowarski, <jpiw at go2.pl>
-// Encoding: utf-8
-// Distributed under the same terms as the calendar itself.
-
-Calendar._DN = new Array
-("Niedziela",
- "Poniedziałek",
- "Wtorek",
- "Åšroda",
- "Czwartek",
- "PiÄ…tek",
- "Sobota",
- "Niedziela");
-Calendar._SDN = new Array
-("Nie",
- "Pn",
- "Wt",
- "Åšr",
- "Cz",
- "Pt",
- "So",
- "Nie");
-Calendar._MN = new Array
-("Styczeń",
- "Luty",
- "Marzec",
- "Kwiecień",
- "Maj",
- "Czerwiec",
- "Lipiec",
- "Sierpień",
- "Wrzesień",
- "Październik",
- "Listopad",
- "Grudzień");
-Calendar._SMN = new Array
-("Sty",
- "Lut",
- "Mar",
- "Kwi",
- "Maj",
- "Cze",
- "Lip",
- "Sie",
- "Wrz",
- "Paź",
- "Lis",
- "Gru");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "O kalendarzu";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Aby pobrać najnowszą wersję, odwiedź: http://www.dynarch.com/projects/calendar/\n" +
-"Dostępny na licencji GNU LGPL. Zobacz szczegóły na http://gnu.org/licenses/lgpl.html." +
-"\n\n" +
-"Wybór daty:\n" +
-"- Użyj przycisków \xab, \xbb by wybrać rok\n" +
-"- Użyj przycisków " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " by wybrać miesiąc\n" +
-"- Przytrzymaj klawisz myszy nad jednym z powyższych przycisków dla szybszego wyboru.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Wybór czasu:\n" +
-"- Kliknij na jednym z pól czasu by zwiększyć jego wartość\n" +
-"- lub kliknij trzymając Shift by zmiejszyć jego wartość\n" +
-"- lub kliknij i przeciÄ…gnij dla szybszego wyboru.";
-
-//Calendar._TT["TOGGLE"] = "Zmień pierwszy dzień tygodnia";
-Calendar._TT["PREV_YEAR"] = "Poprzedni rok (przytrzymaj dla menu)";
-Calendar._TT["PREV_MONTH"] = "Poprzedni miesiÄ…c (przytrzymaj dla menu)";
-Calendar._TT["GO_TODAY"] = "Idź do dzisiaj";
-Calendar._TT["NEXT_MONTH"] = "Następny miesiąc (przytrzymaj dla menu)";
-Calendar._TT["NEXT_YEAR"] = "Następny rok (przytrzymaj dla menu)";
-Calendar._TT["SEL_DATE"] = "Wybierz datÄ™";
-Calendar._TT["DRAG_TO_MOVE"] = "Przeciągnij by przesunąć";
-Calendar._TT["PART_TODAY"] = " (dzisiaj)";
-Calendar._TT["MON_FIRST"] = "Wyświetl poniedziałek jako pierwszy";
-Calendar._TT["SUN_FIRST"] = "Wyświetl niedzielę jako pierwszą";
-Calendar._TT["CLOSE"] = "Zamknij";
-Calendar._TT["TODAY"] = "Dzisiaj";
-Calendar._TT["TIME_PART"] = "(Shift-)Kliknij lub przeciągnij by zmienić wartość";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%e %B, %A";
-
-Calendar._TT["WK"] = "ty";

Copied: plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-pl-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-pl-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,93 @@
+// ** I18N
+
+// Calendar PL language
+// Author: Dariusz Pietrzak, <eyck at ghost.anime.pl>
+// Author: Janusz Piwowarski, <jpiw at go2.pl>
+// Encoding: utf-8
+// Distributed under the same terms as the calendar itself.
+
+Calendar._DN = new Array
+("Niedziela",
+ "Poniedziałek",
+ "Wtorek",
+ "Åšroda",
+ "Czwartek",
+ "PiÄ…tek",
+ "Sobota",
+ "Niedziela");
+Calendar._SDN = new Array
+("Nie",
+ "Pn",
+ "Wt",
+ "Åšr",
+ "Cz",
+ "Pt",
+ "So",
+ "Nie");
+Calendar._MN = new Array
+("Styczeń",
+ "Luty",
+ "Marzec",
+ "Kwiecień",
+ "Maj",
+ "Czerwiec",
+ "Lipiec",
+ "Sierpień",
+ "Wrzesień",
+ "Październik",
+ "Listopad",
+ "Grudzień");
+Calendar._SMN = new Array
+("Sty",
+ "Lut",
+ "Mar",
+ "Kwi",
+ "Maj",
+ "Cze",
+ "Lip",
+ "Sie",
+ "Wrz",
+ "Paź",
+ "Lis",
+ "Gru");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O kalendarzu";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Aby pobrać najnowszą wersję, odwiedź: http://www.dynarch.com/projects/calendar/\n" +
+"Dostępny na licencji GNU LGPL. Zobacz szczegóły na http://gnu.org/licenses/lgpl.html." +
+"\n\n" +
+"Wybór daty:\n" +
+"- Użyj przycisków \xab, \xbb by wybrać rok\n" +
+"- Użyj przycisków " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " by wybrać miesiąc\n" +
+"- Przytrzymaj klawisz myszy nad jednym z powyższych przycisków dla szybszego wyboru.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Wybór czasu:\n" +
+"- Kliknij na jednym z pól czasu by zwiększyć jego wartość\n" +
+"- lub kliknij trzymając Shift by zmiejszyć jego wartość\n" +
+"- lub kliknij i przeciÄ…gnij dla szybszego wyboru.";
+
+//Calendar._TT["TOGGLE"] = "Zmień pierwszy dzień tygodnia";
+Calendar._TT["PREV_YEAR"] = "Poprzedni rok (przytrzymaj dla menu)";
+Calendar._TT["PREV_MONTH"] = "Poprzedni miesiÄ…c (przytrzymaj dla menu)";
+Calendar._TT["GO_TODAY"] = "Idź do dzisiaj";
+Calendar._TT["NEXT_MONTH"] = "Następny miesiąc (przytrzymaj dla menu)";
+Calendar._TT["NEXT_YEAR"] = "Następny rok (przytrzymaj dla menu)";
+Calendar._TT["SEL_DATE"] = "Wybierz datÄ™";
+Calendar._TT["DRAG_TO_MOVE"] = "Przeciągnij by przesunąć";
+Calendar._TT["PART_TODAY"] = " (dzisiaj)";
+Calendar._TT["MON_FIRST"] = "Wyświetl poniedziałek jako pierwszy";
+Calendar._TT["SUN_FIRST"] = "Wyświetl niedzielę jako pierwszą";
+Calendar._TT["CLOSE"] = "Zamknij";
+Calendar._TT["TODAY"] = "Dzisiaj";
+Calendar._TT["TIME_PART"] = "(Shift-)Kliknij lub przeciągnij by zmienić wartość";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%e %B, %A";
+
+Calendar._TT["WK"] = "ty";

Deleted: plog/trunk/js/jscalendar/lang/calendar-pl.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-pl.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-pl.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,56 +0,0 @@
-// ** I18N
-// Calendar PL language
-// Author: Artur Filipiak, <imagen at poczta.fm>
-// January, 2004
-// Encoding: UTF-8
-Calendar._DN = new Array
-("Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela");
-
-Calendar._SDN = new Array
-("N", "Pn", "Wt", "Åšr", "Cz", "Pt", "So", "N");
-
-Calendar._MN = new Array
-("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
-
-Calendar._SMN = new Array
-("Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "O kalendarzu";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Wybór daty:\n" +
-"- aby wybrać rok użyj przycisków \xab, \xbb\n" +
-"- aby wybrać miesiąc użyj przycisków " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
-"- aby przyspieszyć wybór przytrzymaj wciśnięty przycisk myszy nad ww. przyciskami.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Wybór czasu:\n" +
-"- aby zwiększyć wartość kliknij na dowolnym elemencie selekcji czasu\n" +
-"- aby zmniejszyć wartość użyj dodatkowo klawisza Shift\n" +
-"- możesz również poruszać myszkę w lewo i prawo wraz z wciśniętym lewym klawiszem.";
-
-Calendar._TT["PREV_YEAR"] = "Poprz. rok (przytrzymaj dla menu)";
-Calendar._TT["PREV_MONTH"] = "Poprz. miesiÄ…c (przytrzymaj dla menu)";
-Calendar._TT["GO_TODAY"] = "Pokaż dziś";
-Calendar._TT["NEXT_MONTH"] = "Nast. miesiÄ…c (przytrzymaj dla menu)";
-Calendar._TT["NEXT_YEAR"] = "Nast. rok (przytrzymaj dla menu)";
-Calendar._TT["SEL_DATE"] = "Wybierz datÄ™";
-Calendar._TT["DRAG_TO_MOVE"] = "Przesuń okienko";
-Calendar._TT["PART_TODAY"] = " (dziÅ›)";
-Calendar._TT["MON_FIRST"] = "Pokaż Poniedziałek jako pierwszy";
-Calendar._TT["SUN_FIRST"] = "Pokaż Niedzielę jako pierwszą";
-Calendar._TT["CLOSE"] = "Zamknij";
-Calendar._TT["TODAY"] = "DziÅ›";
-Calendar._TT["TIME_PART"] = "(Shift-)klik | drag, aby zmienić wartość";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y.%m.%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "wk";
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/lang/calendar-pl.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-pl.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-pl.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-pl.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,56 @@
+// ** I18N
+// Calendar PL language
+// Author: Artur Filipiak, <imagen at poczta.fm>
+// January, 2004
+// Encoding: UTF-8
+Calendar._DN = new Array
+("Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela");
+
+Calendar._SDN = new Array
+("N", "Pn", "Wt", "Åšr", "Cz", "Pt", "So", "N");
+
+Calendar._MN = new Array
+("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
+
+Calendar._SMN = new Array
+("Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O kalendarzu";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Wybór daty:\n" +
+"- aby wybrać rok użyj przycisków \xab, \xbb\n" +
+"- aby wybrać miesiąc użyj przycisków " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
+"- aby przyspieszyć wybór przytrzymaj wciśnięty przycisk myszy nad ww. przyciskami.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Wybór czasu:\n" +
+"- aby zwiększyć wartość kliknij na dowolnym elemencie selekcji czasu\n" +
+"- aby zmniejszyć wartość użyj dodatkowo klawisza Shift\n" +
+"- możesz również poruszać myszkę w lewo i prawo wraz z wciśniętym lewym klawiszem.";
+
+Calendar._TT["PREV_YEAR"] = "Poprz. rok (przytrzymaj dla menu)";
+Calendar._TT["PREV_MONTH"] = "Poprz. miesiÄ…c (przytrzymaj dla menu)";
+Calendar._TT["GO_TODAY"] = "Pokaż dziś";
+Calendar._TT["NEXT_MONTH"] = "Nast. miesiÄ…c (przytrzymaj dla menu)";
+Calendar._TT["NEXT_YEAR"] = "Nast. rok (przytrzymaj dla menu)";
+Calendar._TT["SEL_DATE"] = "Wybierz datÄ™";
+Calendar._TT["DRAG_TO_MOVE"] = "Przesuń okienko";
+Calendar._TT["PART_TODAY"] = " (dziÅ›)";
+Calendar._TT["MON_FIRST"] = "Pokaż Poniedziałek jako pierwszy";
+Calendar._TT["SUN_FIRST"] = "Pokaż Niedzielę jako pierwszą";
+Calendar._TT["CLOSE"] = "Zamknij";
+Calendar._TT["TODAY"] = "DziÅ›";
+Calendar._TT["TIME_PART"] = "(Shift-)klik | drag, aby zmienić wartość";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y.%m.%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/lang/calendar-pt.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-pt.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-pt.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar pt_BR language
-// Author: Adalberto Machado, <betosm at terra.com.br>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Domingo",
- "Segunda",
- "Terca",
- "Quarta",
- "Quinta",
- "Sexta",
- "Sabado",
- "Domingo");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("Dom",
- "Seg",
- "Ter",
- "Qua",
- "Qui",
- "Sex",
- "Sab",
- "Dom");
-
-// full month names
-Calendar._MN = new Array
-("Janeiro",
- "Fevereiro",
- "Marco",
- "Abril",
- "Maio",
- "Junho",
- "Julho",
- "Agosto",
- "Setembro",
- "Outubro",
- "Novembro",
- "Dezembro");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Fev",
- "Mar",
- "Abr",
- "Mai",
- "Jun",
- "Jul",
- "Ago",
- "Set",
- "Out",
- "Nov",
- "Dez");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Sobre o calendario";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Ultima versao visite: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuido sobre GNU LGPL.  Veja http://gnu.org/licenses/lgpl.html para detalhes." +
-"\n\n" +
-"Selecao de data:\n" +
-"- Use os botoes \xab, \xbb para selecionar o ano\n" +
-"- Use os botoes " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mes\n" +
-"- Segure o botao do mouse em qualquer um desses botoes para selecao rapida.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selecao de hora:\n" +
-"- Clique em qualquer parte da hora para incrementar\n" +
-"- ou Shift-click para decrementar\n" +
-"- ou clique e segure para selecao rapida.";
-
-Calendar._TT["PREV_YEAR"] = "Ant. ano (segure para menu)";
-Calendar._TT["PREV_MONTH"] = "Ant. mes (segure para menu)";
-Calendar._TT["GO_TODAY"] = "Hoje";
-Calendar._TT["NEXT_MONTH"] = "Prox. mes (segure para menu)";
-Calendar._TT["NEXT_YEAR"] = "Prox. ano (segure para menu)";
-Calendar._TT["SEL_DATE"] = "Selecione a data";
-Calendar._TT["DRAG_TO_MOVE"] = "Arraste para mover";
-Calendar._TT["PART_TODAY"] = " (hoje)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Mostre %s primeiro";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Fechar";
-Calendar._TT["TODAY"] = "Hoje";
-Calendar._TT["TIME_PART"] = "(Shift-)Click ou arraste para mudar valor";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
-
-Calendar._TT["WK"] = "sm";
-Calendar._TT["TIME"] = "Hora:";

Copied: plog/trunk/js/jscalendar/lang/calendar-pt.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-pt.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-pt.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-pt.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar pt_BR language
+// Author: Adalberto Machado, <betosm at terra.com.br>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Segunda",
+ "Terca",
+ "Quarta",
+ "Quinta",
+ "Sexta",
+ "Sabado",
+ "Domingo");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Seg",
+ "Ter",
+ "Qua",
+ "Qui",
+ "Sex",
+ "Sab",
+ "Dom");
+
+// full month names
+Calendar._MN = new Array
+("Janeiro",
+ "Fevereiro",
+ "Marco",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Fev",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Sobre o calendario";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Ultima versao visite: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuido sobre GNU LGPL.  Veja http://gnu.org/licenses/lgpl.html para detalhes." +
+"\n\n" +
+"Selecao de data:\n" +
+"- Use os botoes \xab, \xbb para selecionar o ano\n" +
+"- Use os botoes " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mes\n" +
+"- Segure o botao do mouse em qualquer um desses botoes para selecao rapida.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selecao de hora:\n" +
+"- Clique em qualquer parte da hora para incrementar\n" +
+"- ou Shift-click para decrementar\n" +
+"- ou clique e segure para selecao rapida.";
+
+Calendar._TT["PREV_YEAR"] = "Ant. ano (segure para menu)";
+Calendar._TT["PREV_MONTH"] = "Ant. mes (segure para menu)";
+Calendar._TT["GO_TODAY"] = "Hoje";
+Calendar._TT["NEXT_MONTH"] = "Prox. mes (segure para menu)";
+Calendar._TT["NEXT_YEAR"] = "Prox. ano (segure para menu)";
+Calendar._TT["SEL_DATE"] = "Selecione a data";
+Calendar._TT["DRAG_TO_MOVE"] = "Arraste para mover";
+Calendar._TT["PART_TODAY"] = " (hoje)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostre %s primeiro";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Fechar";
+Calendar._TT["TODAY"] = "Hoje";
+Calendar._TT["TIME_PART"] = "(Shift-)Click ou arraste para mudar valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
+
+Calendar._TT["WK"] = "sm";
+Calendar._TT["TIME"] = "Hora:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-ro.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ro.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-ro.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,66 +0,0 @@
-// ** I18N
-Calendar._DN = new Array
-("Duminică",
- "Luni",
- "Marţi",
- "Miercuri",
- "Joi",
- "Vineri",
- "Sâmbătă",
- "Duminică");
-Calendar._SDN_len = 2;
-Calendar._MN = new Array
-("Ianuarie",
- "Februarie",
- "Martie",
- "Aprilie",
- "Mai",
- "Iunie",
- "Iulie",
- "August",
- "Septembrie",
- "Octombrie",
- "Noiembrie",
- "Decembrie");
-
-// tooltips
-Calendar._TT = {};
-
-Calendar._TT["INFO"] = "Despre calendar";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Pentru ultima versiune vizitaţi: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuit sub GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Selecţia datei:\n" +
-"- Folosiţi butoanele \xab, \xbb pentru a selecta anul\n" +
-"- Folosiţi butoanele " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pentru a selecta luna\n" +
-"- Tineţi butonul mouse-ului apăsat pentru selecţie mai rapidă.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selecţia orei:\n" +
-"- Click pe ora sau minut pentru a mări valoarea cu 1\n" +
-"- Sau Shift-Click pentru a micÅŸora valoarea cu 1\n" +
-"- Sau Click ÅŸi drag pentru a selecta mai repede.";
-
-Calendar._TT["PREV_YEAR"] = "Anul precedent (lung pt menu)";
-Calendar._TT["PREV_MONTH"] = "Luna precedentă (lung pt menu)";
-Calendar._TT["GO_TODAY"] = "Data de azi";
-Calendar._TT["NEXT_MONTH"] = "Luna următoare (lung pt menu)";
-Calendar._TT["NEXT_YEAR"] = "Anul următor (lung pt menu)";
-Calendar._TT["SEL_DATE"] = "Selectează data";
-Calendar._TT["DRAG_TO_MOVE"] = "Trage pentru a miÅŸca";
-Calendar._TT["PART_TODAY"] = " (astăzi)";
-Calendar._TT["DAY_FIRST"] = "Afişează %s prima zi";
-Calendar._TT["WEEKEND"] = "0,6";
-Calendar._TT["CLOSE"] = "ÃŽnchide";
-Calendar._TT["TODAY"] = "Astăzi";
-Calendar._TT["TIME_PART"] = "(Shift-)Click sau drag pentru a selecta";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %d %B";
-
-Calendar._TT["WK"] = "spt";
-Calendar._TT["TIME"] = "Ora:";

Copied: plog/trunk/js/jscalendar/lang/calendar-ro.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ro.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-ro.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-ro.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,66 @@
+// ** I18N
+Calendar._DN = new Array
+("Duminică",
+ "Luni",
+ "Marţi",
+ "Miercuri",
+ "Joi",
+ "Vineri",
+ "Sâmbătă",
+ "Duminică");
+Calendar._SDN_len = 2;
+Calendar._MN = new Array
+("Ianuarie",
+ "Februarie",
+ "Martie",
+ "Aprilie",
+ "Mai",
+ "Iunie",
+ "Iulie",
+ "August",
+ "Septembrie",
+ "Octombrie",
+ "Noiembrie",
+ "Decembrie");
+
+// tooltips
+Calendar._TT = {};
+
+Calendar._TT["INFO"] = "Despre calendar";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Pentru ultima versiune vizitaţi: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuit sub GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Selecţia datei:\n" +
+"- Folosiţi butoanele \xab, \xbb pentru a selecta anul\n" +
+"- Folosiţi butoanele " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pentru a selecta luna\n" +
+"- Tineţi butonul mouse-ului apăsat pentru selecţie mai rapidă.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selecţia orei:\n" +
+"- Click pe ora sau minut pentru a mări valoarea cu 1\n" +
+"- Sau Shift-Click pentru a micÅŸora valoarea cu 1\n" +
+"- Sau Click ÅŸi drag pentru a selecta mai repede.";
+
+Calendar._TT["PREV_YEAR"] = "Anul precedent (lung pt menu)";
+Calendar._TT["PREV_MONTH"] = "Luna precedentă (lung pt menu)";
+Calendar._TT["GO_TODAY"] = "Data de azi";
+Calendar._TT["NEXT_MONTH"] = "Luna următoare (lung pt menu)";
+Calendar._TT["NEXT_YEAR"] = "Anul următor (lung pt menu)";
+Calendar._TT["SEL_DATE"] = "Selectează data";
+Calendar._TT["DRAG_TO_MOVE"] = "Trage pentru a miÅŸca";
+Calendar._TT["PART_TODAY"] = " (astăzi)";
+Calendar._TT["DAY_FIRST"] = "Afişează %s prima zi";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["CLOSE"] = "ÃŽnchide";
+Calendar._TT["TODAY"] = "Astăzi";
+Calendar._TT["TIME_PART"] = "(Shift-)Click sau drag pentru a selecta";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %d %B";
+
+Calendar._TT["WK"] = "spt";
+Calendar._TT["TIME"] = "Ora:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-ru.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ru.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-ru.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar RU language
-// Translation: Sly Golovanov, http://golovanov.net, <sly at golovanov.net>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("воскресенье",
- "понедельник",
- "вторник",
- "среда",
- "четверг",
- "пятница",
- "суббота",
- "воскресенье");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("вск",
- "пон",
- "втр",
- "срд",
- "чет",
- "пят",
- "суб",
- "вск");
-
-// full month names
-Calendar._MN = new Array
-("январь",
- "февраль",
- "март",
- "апрель",
- "май",
- "июнь",
- "июль",
- "август",
- "сентябрь",
- "октябрь",
- "ноябрь",
- "декабрь");
-
-// short month names
-Calendar._SMN = new Array
-("янв",
- "фев",
- "мар",
- "апр",
- "май",
- "июн",
- "июл",
- "авг",
- "сен",
- "окт",
- "ноя",
- "дек");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "О календаре...";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Как выбрать дату:\n" +
-"- При помощи кнопок \xab, \xbb можно выбрать год\n" +
-"- При помощи кнопок " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " можно выбрать месяц\n" +
-"- Подержите эти кнопки нажатыми, чтобы появилось меню быстрого выбора.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Как выбрать время:\n" +
-"- При клике на часах или минутах они увеличиваются\n" +
-"- при клике с нажатой клавишей Shift они уменьшаются\n" +
-"- если нажать и двигать мышкой влево/вправо, они будут меняться быстрее.";
-
-Calendar._TT["PREV_YEAR"] = "На год назад (удерживать для меню)";
-Calendar._TT["PREV_MONTH"] = "На месяц назад (удерживать для меню)";
-Calendar._TT["GO_TODAY"] = "Сегодня";
-Calendar._TT["NEXT_MONTH"] = "На месяц вперед (удерживать для меню)";
-Calendar._TT["NEXT_YEAR"] = "На год вперед (удерживать для меню)";
-Calendar._TT["SEL_DATE"] = "Выберите дату";
-Calendar._TT["DRAG_TO_MOVE"] = "Перетаскивайте мышкой";
-Calendar._TT["PART_TODAY"] = " (сегодня)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Первый день недели будет %s";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Закрыть";
-Calendar._TT["TODAY"] = "Сегодня";
-Calendar._TT["TIME_PART"] = "(Shift-)клик или нажать и двигать";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
-
-Calendar._TT["WK"] = "нед";
-Calendar._TT["TIME"] = "Время:";

Copied: plog/trunk/js/jscalendar/lang/calendar-ru.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ru.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-ru.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-ru.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar RU language
+// Translation: Sly Golovanov, http://golovanov.net, <sly at golovanov.net>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("воскресенье",
+ "понедельник",
+ "вторник",
+ "среда",
+ "четверг",
+ "пятница",
+ "суббота",
+ "воскресенье");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("вск",
+ "пон",
+ "втр",
+ "срд",
+ "чет",
+ "пят",
+ "суб",
+ "вск");
+
+// full month names
+Calendar._MN = new Array
+("январь",
+ "февраль",
+ "март",
+ "апрель",
+ "май",
+ "июнь",
+ "июль",
+ "август",
+ "сентябрь",
+ "октябрь",
+ "ноябрь",
+ "декабрь");
+
+// short month names
+Calendar._SMN = new Array
+("янв",
+ "фев",
+ "мар",
+ "апр",
+ "май",
+ "июн",
+ "июл",
+ "авг",
+ "сен",
+ "окт",
+ "ноя",
+ "дек");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "О календаре...";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Как выбрать дату:\n" +
+"- При помощи кнопок \xab, \xbb можно выбрать год\n" +
+"- При помощи кнопок " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " можно выбрать месяц\n" +
+"- Подержите эти кнопки нажатыми, чтобы появилось меню быстрого выбора.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Как выбрать время:\n" +
+"- При клике на часах или минутах они увеличиваются\n" +
+"- при клике с нажатой клавишей Shift они уменьшаются\n" +
+"- если нажать и двигать мышкой влево/вправо, они будут меняться быстрее.";
+
+Calendar._TT["PREV_YEAR"] = "На год назад (удерживать для меню)";
+Calendar._TT["PREV_MONTH"] = "На месяц назад (удерживать для меню)";
+Calendar._TT["GO_TODAY"] = "Сегодня";
+Calendar._TT["NEXT_MONTH"] = "На месяц вперед (удерживать для меню)";
+Calendar._TT["NEXT_YEAR"] = "На год вперед (удерживать для меню)";
+Calendar._TT["SEL_DATE"] = "Выберите дату";
+Calendar._TT["DRAG_TO_MOVE"] = "Перетаскивайте мышкой";
+Calendar._TT["PART_TODAY"] = " (сегодня)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Первый день недели будет %s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Закрыть";
+Calendar._TT["TODAY"] = "Сегодня";
+Calendar._TT["TIME_PART"] = "(Shift-)клик или нажать и двигать";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
+
+Calendar._TT["WK"] = "нед";
+Calendar._TT["TIME"] = "Время:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-ru_win_.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ru_win_.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-ru_win_.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar RU language
-// Translation: Sly Golovanov, http://golovanov.net, <sly at golovanov.net>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("âîñêðåñåíüå",
- "ïîíåäåëüíèê",
- "âòîðíèê",
- "ñðåäà",
- "÷åòâåðã",
- "ïÿòíèöà",
- "ñóááîòà",
- "âîñêðåñåíüå");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("âñê",
- "ïîí",
- "âòð",
- "ñðä",
- "÷åò",
- "ïÿò",
- "ñóá",
- "âñê");
-
-// full month names
-Calendar._MN = new Array
-("ÿíâàðü",
- "ôåâðàëü",
- "ìàðò",
- "àïðåëü",
- "ìàé",
- "èþíü",
- "èþëü",
- "àâãóñò",
- "ñåíòÿáðü",
- "îêòÿáðü",
- "íîÿáðü",
- "äåêàáðü");
-
-// short month names
-Calendar._SMN = new Array
-("ÿíâ",
- "ôåâ",
- "ìàð",
- "àïð",
- "ìàé",
- "èþí",
- "èþë",
- "àâã",
- "ñåí",
- "îêò",
- "íîÿ",
- "äåê");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Î êàëåíäàðå...";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Êàê âûáðàòü äàòó:\n" +
-"- Ïðè ïîìîùè êíîïîê \xab, \xbb ìîæíî âûáðàòü ãîä\n" +
-"- Ïðè ïîìîùè êíîïîê " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " ìîæíî âûáðàòü ìåñÿö\n" +
-"- Ïîäåðæèòå ýòè êíîïêè íàæàòûìè, ÷òîáû ïîÿâèëîñü ìåíþ áûñòðîãî âûáîðà.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Êàê âûáðàòü âðåìÿ:\n" +
-"- Ïðè êëèêå íà ÷àñàõ èëè ìèíóòàõ îíè óâåëè÷èâàþòñÿ\n" +
-"- ïðè êëèêå ñ íàæàòîé êëàâèøåé Shift îíè óìåíüøàþòñÿ\n" +
-"- åñëè íàæàòü è äâèãàòü ìûøêîé âëåâî/âïðàâî, îíè áóäóò ìåíÿòüñÿ áûñòðåå.";
-
-Calendar._TT["PREV_YEAR"] = "Íà ãîä íàçàä (óäåðæèâàòü äëÿ ìåíþ)";
-Calendar._TT["PREV_MONTH"] = "Íà ìåñÿö íàçàä (óäåðæèâàòü äëÿ ìåíþ)";
-Calendar._TT["GO_TODAY"] = "Ñåãîäíÿ";
-Calendar._TT["NEXT_MONTH"] = "Íà ìåñÿö âïåðåä (óäåðæèâàòü äëÿ ìåíþ)";
-Calendar._TT["NEXT_YEAR"] = "Íà ãîä âïåðåä (óäåðæèâàòü äëÿ ìåíþ)";
-Calendar._TT["SEL_DATE"] = "Âûáåðèòå äàòó";
-Calendar._TT["DRAG_TO_MOVE"] = "Ïåðåòàñêèâàéòå ìûøêîé";
-Calendar._TT["PART_TODAY"] = " (ñåãîäíÿ)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Ïåðâûé äåíü íåäåëè áóäåò %s";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Çàêðûòü";
-Calendar._TT["TODAY"] = "Ñåãîäíÿ";
-Calendar._TT["TIME_PART"] = "(Shift-)êëèê èëè íàæàòü è äâèãàòü";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
-
-Calendar._TT["WK"] = "íåä";
-Calendar._TT["TIME"] = "Âðåìÿ:";

Copied: plog/trunk/js/jscalendar/lang/calendar-ru_win_.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-ru_win_.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-ru_win_.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-ru_win_.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar RU language
+// Translation: Sly Golovanov, http://golovanov.net, <sly at golovanov.net>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("âîñêðåñåíüå",
+ "ïîíåäåëüíèê",
+ "âòîðíèê",
+ "ñðåäà",
+ "÷åòâåðã",
+ "ïÿòíèöà",
+ "ñóááîòà",
+ "âîñêðåñåíüå");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("âñê",
+ "ïîí",
+ "âòð",
+ "ñðä",
+ "÷åò",
+ "ïÿò",
+ "ñóá",
+ "âñê");
+
+// full month names
+Calendar._MN = new Array
+("ÿíâàðü",
+ "ôåâðàëü",
+ "ìàðò",
+ "àïðåëü",
+ "ìàé",
+ "èþíü",
+ "èþëü",
+ "àâãóñò",
+ "ñåíòÿáðü",
+ "îêòÿáðü",
+ "íîÿáðü",
+ "äåêàáðü");
+
+// short month names
+Calendar._SMN = new Array
+("ÿíâ",
+ "ôåâ",
+ "ìàð",
+ "àïð",
+ "ìàé",
+ "èþí",
+ "èþë",
+ "àâã",
+ "ñåí",
+ "îêò",
+ "íîÿ",
+ "äåê");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Î êàëåíäàðå...";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Êàê âûáðàòü äàòó:\n" +
+"- Ïðè ïîìîùè êíîïîê \xab, \xbb ìîæíî âûáðàòü ãîä\n" +
+"- Ïðè ïîìîùè êíîïîê " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " ìîæíî âûáðàòü ìåñÿö\n" +
+"- Ïîäåðæèòå ýòè êíîïêè íàæàòûìè, ÷òîáû ïîÿâèëîñü ìåíþ áûñòðîãî âûáîðà.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Êàê âûáðàòü âðåìÿ:\n" +
+"- Ïðè êëèêå íà ÷àñàõ èëè ìèíóòàõ îíè óâåëè÷èâàþòñÿ\n" +
+"- ïðè êëèêå ñ íàæàòîé êëàâèøåé Shift îíè óìåíüøàþòñÿ\n" +
+"- åñëè íàæàòü è äâèãàòü ìûøêîé âëåâî/âïðàâî, îíè áóäóò ìåíÿòüñÿ áûñòðåå.";
+
+Calendar._TT["PREV_YEAR"] = "Íà ãîä íàçàä (óäåðæèâàòü äëÿ ìåíþ)";
+Calendar._TT["PREV_MONTH"] = "Íà ìåñÿö íàçàä (óäåðæèâàòü äëÿ ìåíþ)";
+Calendar._TT["GO_TODAY"] = "Ñåãîäíÿ";
+Calendar._TT["NEXT_MONTH"] = "Íà ìåñÿö âïåðåä (óäåðæèâàòü äëÿ ìåíþ)";
+Calendar._TT["NEXT_YEAR"] = "Íà ãîä âïåðåä (óäåðæèâàòü äëÿ ìåíþ)";
+Calendar._TT["SEL_DATE"] = "Âûáåðèòå äàòó";
+Calendar._TT["DRAG_TO_MOVE"] = "Ïåðåòàñêèâàéòå ìûøêîé";
+Calendar._TT["PART_TODAY"] = " (ñåãîäíÿ)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Ïåðâûé äåíü íåäåëè áóäåò %s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Çàêðûòü";
+Calendar._TT["TODAY"] = "Ñåãîäíÿ";
+Calendar._TT["TIME_PART"] = "(Shift-)êëèê èëè íàæàòü è äâèãàòü";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
+
+Calendar._TT["WK"] = "íåä";
+Calendar._TT["TIME"] = "Âðåìÿ:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-si.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-si.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-si.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,94 +0,0 @@
-/* Slovenian language file for the DHTML Calendar version 0.9.2 
-* Author David Milost <mercy at volja.net>, January 2004.
-* Feel free to use this script under the terms of the GNU Lesser General
-* Public License, as long as you do not remove or alter this notice.
-*/
- // full day names
-Calendar._DN = new Array
-("Nedelja",
- "Ponedeljek",
- "Torek",
- "Sreda",
- "ÄŒetrtek",
- "Petek",
- "Sobota",
- "Nedelja");
- // short day names
- Calendar._SDN = new Array
-("Ned",
- "Pon",
- "Tor",
- "Sre",
- "ÄŒet",
- "Pet",
- "Sob",
- "Ned");
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Feb",
- "Mar",
- "Apr",
- "Maj",
- "Jun",
- "Jul",
- "Avg",
- "Sep",
- "Okt",
- "Nov",
- "Dec");
-  // full month names
-Calendar._MN = new Array
-("Januar",
- "Februar",
- "Marec",
- "April",
- "Maj",
- "Junij",
- "Julij",
- "Avgust",
- "September",
- "Oktober",
- "November",
- "December");
-
-// tooltips
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "O koledarju";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Za zadnjo verzijo pojdine na naslov: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuirano pod GNU LGPL.  Poglejte http://gnu.org/licenses/lgpl.html za podrobnosti." +
-"\n\n" +
-"Izbor datuma:\n" +
-"- Uporabite \xab, \xbb gumbe za izbor leta\n" +
-"- Uporabite " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gumbe za izbor meseca\n" +
-"- Zadržite klik na kateremkoli od zgornjih gumbov za hiter izbor.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Izbor ćasa:\n" +
-"- Kliknite na katerikoli del ćasa za poveć. le-tega\n" +
-"- ali Shift-click za zmanj. le-tega\n" +
-"- ali kliknite in povlecite za hiter izbor.";
-
-Calendar._TT["TOGGLE"] = "Spremeni dan s katerim se prićne teden";
-Calendar._TT["PREV_YEAR"] = "Predhodnje leto (dolg klik za meni)";
-Calendar._TT["PREV_MONTH"] = "Predhodnji mesec (dolg klik za meni)";
-Calendar._TT["GO_TODAY"] = "Pojdi na tekoći dan";
-Calendar._TT["NEXT_MONTH"] = "Naslednji mesec (dolg klik za meni)";
-Calendar._TT["NEXT_YEAR"] = "Naslednje leto (dolg klik za meni)";
-Calendar._TT["SEL_DATE"] = "Izberite datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Pritisni in povleci za spremembo pozicije";
-Calendar._TT["PART_TODAY"] = " (danes)";
-Calendar._TT["MON_FIRST"] = "Prikaži ponedeljek kot prvi dan";
-Calendar._TT["SUN_FIRST"] = "Prikaži nedeljo kot prvi dan";
-Calendar._TT["CLOSE"] = "Zapri";
-Calendar._TT["TODAY"] = "Danes";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
-
-Calendar._TT["WK"] = "Ted";
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/lang/calendar-si.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-si.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-si.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-si.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,94 @@
+/* Slovenian language file for the DHTML Calendar version 0.9.2 
+* Author David Milost <mercy at volja.net>, January 2004.
+* Feel free to use this script under the terms of the GNU Lesser General
+* Public License, as long as you do not remove or alter this notice.
+*/
+ // full day names
+Calendar._DN = new Array
+("Nedelja",
+ "Ponedeljek",
+ "Torek",
+ "Sreda",
+ "ÄŒetrtek",
+ "Petek",
+ "Sobota",
+ "Nedelja");
+ // short day names
+ Calendar._SDN = new Array
+("Ned",
+ "Pon",
+ "Tor",
+ "Sre",
+ "ÄŒet",
+ "Pet",
+ "Sob",
+ "Ned");
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Maj",
+ "Jun",
+ "Jul",
+ "Avg",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dec");
+  // full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "Marec",
+ "April",
+ "Maj",
+ "Junij",
+ "Julij",
+ "Avgust",
+ "September",
+ "Oktober",
+ "November",
+ "December");
+
+// tooltips
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O koledarju";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Za zadnjo verzijo pojdine na naslov: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuirano pod GNU LGPL.  Poglejte http://gnu.org/licenses/lgpl.html za podrobnosti." +
+"\n\n" +
+"Izbor datuma:\n" +
+"- Uporabite \xab, \xbb gumbe za izbor leta\n" +
+"- Uporabite " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gumbe za izbor meseca\n" +
+"- Zadržite klik na kateremkoli od zgornjih gumbov za hiter izbor.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Izbor ćasa:\n" +
+"- Kliknite na katerikoli del ćasa za poveć. le-tega\n" +
+"- ali Shift-click za zmanj. le-tega\n" +
+"- ali kliknite in povlecite za hiter izbor.";
+
+Calendar._TT["TOGGLE"] = "Spremeni dan s katerim se prićne teden";
+Calendar._TT["PREV_YEAR"] = "Predhodnje leto (dolg klik za meni)";
+Calendar._TT["PREV_MONTH"] = "Predhodnji mesec (dolg klik za meni)";
+Calendar._TT["GO_TODAY"] = "Pojdi na tekoći dan";
+Calendar._TT["NEXT_MONTH"] = "Naslednji mesec (dolg klik za meni)";
+Calendar._TT["NEXT_YEAR"] = "Naslednje leto (dolg klik za meni)";
+Calendar._TT["SEL_DATE"] = "Izberite datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Pritisni in povleci za spremembo pozicije";
+Calendar._TT["PART_TODAY"] = " (danes)";
+Calendar._TT["MON_FIRST"] = "Prikaži ponedeljek kot prvi dan";
+Calendar._TT["SUN_FIRST"] = "Prikaži nedeljo kot prvi dan";
+Calendar._TT["CLOSE"] = "Zapri";
+Calendar._TT["TODAY"] = "Danes";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Ted";
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/lang/calendar-sk.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-sk.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-sk.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,99 +0,0 @@
-// ** I18N
-
-// Calendar SK language
-// Author: Peter Valach (pvalach at gmx.net)
-// Encoding: utf-8
-// Last update: 2003/10/29
-// Distributed under the same terms as the calendar itself.
-
-// full day names
-Calendar._DN = new Array
-("NedeÄľa",
- "Pondelok",
- "Utorok",
- "Streda",
- "Ĺ tvrtok",
- "Piatok",
- "Sobota",
- "NedeÄľa");
-
-// short day names
-Calendar._SDN = new Array
-("Ned",
- "Pon",
- "Uto",
- "Str",
- "Ĺ tv",
- "Pia",
- "Sob",
- "Ned");
-
-// full month names
-Calendar._MN = new Array
-("Január",
- "Február",
- "Marec",
- "AprĂ­l",
- "Máj",
- "JÄ‚ÅŸn",
- "JÄ‚ÅŸl",
- "August",
- "September",
- "OktĂłber",
- "November",
- "December");
-
-// short month names
-Calendar._SMN = new Array
-("Jan",
- "Feb",
- "Mar",
- "Apr",
- "Máj",
- "JÄ‚ÅŸn",
- "JÄ‚ÅŸl",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Dec");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "O kalendári";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
-"Poslednú verziu nájdete na: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuované pod GNU LGPL.  Viď http://gnu.org/licenses/lgpl.html pre detaily." +
-"\n\n" +
-"Výber dátumu:\n" +
-"- Použite tlačidlá \xab, \xbb pre výber roku\n" +
-"- Použite tlačidlá " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pre výber mesiaca\n" +
-"- Ak ktorékoľvek z týchto tlačidiel podržíte dlhšie, zobrazí sa rýchly výber.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Výber času:\n" +
-"- Kliknutie na niektorú položku času ju zvýši\n" +
-"- Shift-klik ju znĂ­Ĺľi\n" +
-"- Ak podržíte tlačítko stlačené, posúvaním meníte hodnotu.";
-
-Calendar._TT["PREV_YEAR"] = "Predošlý rok (podržte pre menu)";
-Calendar._TT["PREV_MONTH"] = "Predošlý mesiac (podržte pre menu)";
-Calendar._TT["GO_TODAY"] = "Prejsť na dnešok";
-Calendar._TT["NEXT_MONTH"] = "Nasl. mesiac (podrĹľte pre menu)";
-Calendar._TT["NEXT_YEAR"] = "Nasl. rok (podrĹľte pre menu)";
-Calendar._TT["SEL_DATE"] = "Zvoľte dátum";
-Calendar._TT["DRAG_TO_MOVE"] = "PodrĹľanĂ­m tlaÄŤĂ­tka zmenĂ­te polohu";
-Calendar._TT["PART_TODAY"] = " (dnes)";
-Calendar._TT["MON_FIRST"] = "ZobraziĹĄ pondelok ako prvĂ˝";
-Calendar._TT["SUN_FIRST"] = "ZobraziĹĄ nedeÄľu ako prvĂş";
-Calendar._TT["CLOSE"] = "ZavrieĹĄ";
-Calendar._TT["TODAY"] = "Dnes";
-Calendar._TT["TIME_PART"] = "(Shift-)klik/ĹĄahanie zmenĂ­ hodnotu";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "$d. %m. %Y";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
-
-Calendar._TT["WK"] = "týž";

Copied: plog/trunk/js/jscalendar/lang/calendar-sk.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-sk.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-sk.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-sk.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,99 @@
+// ** I18N
+
+// Calendar SK language
+// Author: Peter Valach (pvalach at gmx.net)
+// Encoding: utf-8
+// Last update: 2003/10/29
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("NedeÄľa",
+ "Pondelok",
+ "Utorok",
+ "Streda",
+ "Ĺ tvrtok",
+ "Piatok",
+ "Sobota",
+ "NedeÄľa");
+
+// short day names
+Calendar._SDN = new Array
+("Ned",
+ "Pon",
+ "Uto",
+ "Str",
+ "Ĺ tv",
+ "Pia",
+ "Sob",
+ "Ned");
+
+// full month names
+Calendar._MN = new Array
+("Január",
+ "Február",
+ "Marec",
+ "AprĂ­l",
+ "Máj",
+ "JÄ‚ÅŸn",
+ "JÄ‚ÅŸl",
+ "August",
+ "September",
+ "OktĂłber",
+ "November",
+ "December");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Máj",
+ "JÄ‚ÅŸn",
+ "JÄ‚ÅŸl",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O kalendári";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
+"Poslednú verziu nájdete na: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuované pod GNU LGPL.  Viď http://gnu.org/licenses/lgpl.html pre detaily." +
+"\n\n" +
+"Výber dátumu:\n" +
+"- Použite tlačidlá \xab, \xbb pre výber roku\n" +
+"- Použite tlačidlá " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pre výber mesiaca\n" +
+"- Ak ktorékoľvek z týchto tlačidiel podržíte dlhšie, zobrazí sa rýchly výber.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Výber času:\n" +
+"- Kliknutie na niektorú položku času ju zvýši\n" +
+"- Shift-klik ju znĂ­Ĺľi\n" +
+"- Ak podržíte tlačítko stlačené, posúvaním meníte hodnotu.";
+
+Calendar._TT["PREV_YEAR"] = "Predošlý rok (podržte pre menu)";
+Calendar._TT["PREV_MONTH"] = "Predošlý mesiac (podržte pre menu)";
+Calendar._TT["GO_TODAY"] = "Prejsť na dnešok";
+Calendar._TT["NEXT_MONTH"] = "Nasl. mesiac (podrĹľte pre menu)";
+Calendar._TT["NEXT_YEAR"] = "Nasl. rok (podrĹľte pre menu)";
+Calendar._TT["SEL_DATE"] = "Zvoľte dátum";
+Calendar._TT["DRAG_TO_MOVE"] = "PodrĹľanĂ­m tlaÄŤĂ­tka zmenĂ­te polohu";
+Calendar._TT["PART_TODAY"] = " (dnes)";
+Calendar._TT["MON_FIRST"] = "ZobraziĹĄ pondelok ako prvĂ˝";
+Calendar._TT["SUN_FIRST"] = "ZobraziĹĄ nedeÄľu ako prvĂş";
+Calendar._TT["CLOSE"] = "ZavrieĹĄ";
+Calendar._TT["TODAY"] = "Dnes";
+Calendar._TT["TIME_PART"] = "(Shift-)klik/ĹĄahanie zmenĂ­ hodnotu";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "$d. %m. %Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
+
+Calendar._TT["WK"] = "týž";

Deleted: plog/trunk/js/jscalendar/lang/calendar-sp.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-sp.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-sp.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,110 +0,0 @@
-// ** I18N
-
-// Calendar SP language
-// Author: Rafael Velasco <rvu_at_idecnet_dot_com>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("Domingo",
- "Lunes",
- "Martes",
- "Miercoles",
- "Jueves",
- "Viernes",
- "Sabado",
- "Domingo");
-
-Calendar._SDN = new Array
-("Dom",
- "Lun",
- "Mar",
- "Mie",
- "Jue",
- "Vie",
- "Sab",
- "Dom");
-
-// full month names
-Calendar._MN = new Array
-("Enero",
- "Febrero",
- "Marzo",
- "Abril",
- "Mayo",
- "Junio",
- "Julio",
- "Agosto",
- "Septiembre",
- "Octubre",
- "Noviembre",
- "Diciembre");
-
-// short month names
-Calendar._SMN = new Array
-("Ene",
- "Feb",
- "Mar",
- "Abr",
- "May",
- "Jun",
- "Jul",
- "Ago",
- "Sep",
- "Oct",
- "Nov",
- "Dic");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Información del Calendario";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"Nuevas versiones en: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuida bajo licencia GNU LGPL.  Para detalles vea http://gnu.org/licenses/lgpl.html ." +
-"\n\n" +
-"Selección de Fechas:\n" +
-"- Use  \xab, \xbb para seleccionar el año\n" +
-"- Use " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
-"- Mantenga presionado el botón del ratón en cualquiera de las opciones superiores para un acceso rapido .";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Selección del Reloj:\n" +
-"- Seleccione la hora para cambiar el reloj\n" +
-"- o presione  Shift-click para disminuirlo\n" +
-"- o presione click y arrastre del ratón para una selección rapida.";
-
-Calendar._TT["PREV_YEAR"] = "Año anterior (Presione para menu)";
-Calendar._TT["PREV_MONTH"] = "Mes Anterior (Presione para menu)";
-Calendar._TT["GO_TODAY"] = "Ir a Hoy";
-Calendar._TT["NEXT_MONTH"] = "Mes Siguiente (Presione para menu)";
-Calendar._TT["NEXT_YEAR"] = "Año Siguiente (Presione para menu)";
-Calendar._TT["SEL_DATE"] = "Seleccione fecha";
-Calendar._TT["DRAG_TO_MOVE"] = "Arrastre y mueva";
-Calendar._TT["PART_TODAY"] = " (Hoy)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "Mostrar %s primero";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "Cerrar";
-Calendar._TT["TODAY"] = "Hoy";
-Calendar._TT["TIME_PART"] = "(Shift-)Click o arrastra para cambar el valor";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%dd-%mm-%yy";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
-
-Calendar._TT["WK"] = "Sm";
-Calendar._TT["TIME"] = "Hora:";

Copied: plog/trunk/js/jscalendar/lang/calendar-sp.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-sp.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-sp.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-sp.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,110 @@
+// ** I18N
+
+// Calendar SP language
+// Author: Rafael Velasco <rvu_at_idecnet_dot_com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Lunes",
+ "Martes",
+ "Miercoles",
+ "Jueves",
+ "Viernes",
+ "Sabado",
+ "Domingo");
+
+Calendar._SDN = new Array
+("Dom",
+ "Lun",
+ "Mar",
+ "Mie",
+ "Jue",
+ "Vie",
+ "Sab",
+ "Dom");
+
+// full month names
+Calendar._MN = new Array
+("Enero",
+ "Febrero",
+ "Marzo",
+ "Abril",
+ "Mayo",
+ "Junio",
+ "Julio",
+ "Agosto",
+ "Septiembre",
+ "Octubre",
+ "Noviembre",
+ "Diciembre");
+
+// short month names
+Calendar._SMN = new Array
+("Ene",
+ "Feb",
+ "Mar",
+ "Abr",
+ "May",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dic");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Información del Calendario";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Nuevas versiones en: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuida bajo licencia GNU LGPL.  Para detalles vea http://gnu.org/licenses/lgpl.html ." +
+"\n\n" +
+"Selección de Fechas:\n" +
+"- Use  \xab, \xbb para seleccionar el año\n" +
+"- Use " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
+"- Mantenga presionado el botón del ratón en cualquiera de las opciones superiores para un acceso rapido .";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selección del Reloj:\n" +
+"- Seleccione la hora para cambiar el reloj\n" +
+"- o presione  Shift-click para disminuirlo\n" +
+"- o presione click y arrastre del ratón para una selección rapida.";
+
+Calendar._TT["PREV_YEAR"] = "Año anterior (Presione para menu)";
+Calendar._TT["PREV_MONTH"] = "Mes Anterior (Presione para menu)";
+Calendar._TT["GO_TODAY"] = "Ir a Hoy";
+Calendar._TT["NEXT_MONTH"] = "Mes Siguiente (Presione para menu)";
+Calendar._TT["NEXT_YEAR"] = "Año Siguiente (Presione para menu)";
+Calendar._TT["SEL_DATE"] = "Seleccione fecha";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrastre y mueva";
+Calendar._TT["PART_TODAY"] = " (Hoy)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostrar %s primero";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Cerrar";
+Calendar._TT["TODAY"] = "Hoy";
+Calendar._TT["TIME_PART"] = "(Shift-)Click o arrastra para cambar el valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%dd-%mm-%yy";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
+
+Calendar._TT["WK"] = "Sm";
+Calendar._TT["TIME"] = "Hora:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-sv.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-sv.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-sv.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,93 +0,0 @@
-// ** I18N
-
-// Calendar SV language (Swedish, svenska)
-// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
-// Translation team: <sv at li.org>
-// Translator: Leonard Norrgård <leonard.norrgard at refactor.fi>
-// Last translator: Leonard Norrgård <leonard.norrgard at refactor.fi>
-// Encoding: iso-latin-1
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("söndag",
- "måndag",
- "tisdag",
- "onsdag",
- "torsdag",
- "fredag",
- "lördag",
- "söndag");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-Calendar._SDN_len = 2;
-Calendar._SMN_len = 3;
-
-// full month names
-Calendar._MN = new Array
-("januari",
- "februari",
- "mars",
- "april",
- "maj",
- "juni",
- "juli",
- "augusti",
- "september",
- "oktober",
- "november",
- "december");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "Om kalendern";
-
-Calendar._TT["ABOUT"] =
-"DHTML Datum/tid-väljare\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"För senaste version gå till: http://www.dynarch.com/projects/calendar/\n" +
-"Distribueras under GNU LGPL.  Se http://gnu.org/licenses/lgpl.html för detaljer." +
-"\n\n" +
-"Val av datum:\n" +
-"- Använd knapparna \xab, \xbb för att välja år\n" +
-"- Använd knapparna " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " för att välja månad\n" +
-"- Håll musknappen nedtryckt på någon av ovanstående knappar för snabbare val.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Val av tid:\n" +
-"- Klicka på en del av tiden för att öka den delen\n" +
-"- eller skift-klicka för att minska den\n" +
-"- eller klicka och drag för snabbare val.";
-
-Calendar._TT["PREV_YEAR"] = "Föregående år (håll för menu)";
-Calendar._TT["PREV_MONTH"] = "Föregående månad (håll för menu)";
-Calendar._TT["GO_TODAY"] = "Gå till dagens datum";
-Calendar._TT["NEXT_MONTH"] = "Följande månad (håll för menu)";
-Calendar._TT["NEXT_YEAR"] = "Följande år (håll för menu)";
-Calendar._TT["SEL_DATE"] = "Välj datum";
-Calendar._TT["DRAG_TO_MOVE"] = "Drag för att flytta";
-Calendar._TT["PART_TODAY"] = " (idag)";
-Calendar._TT["MON_FIRST"] = "Visa måndag först";
-Calendar._TT["SUN_FIRST"] = "Visa söndag först";
-Calendar._TT["CLOSE"] = "Stäng";
-Calendar._TT["TODAY"] = "Idag";
-Calendar._TT["TIME_PART"] = "(Skift-)klicka eller drag för att ändra tid";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%A %d %b %Y";
-
-Calendar._TT["WK"] = "vecka";

Copied: plog/trunk/js/jscalendar/lang/calendar-sv.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-sv.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-sv.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-sv.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,93 @@
+// ** I18N
+
+// Calendar SV language (Swedish, svenska)
+// Author: Mihai Bazon, <mihai_bazon at yahoo.com>
+// Translation team: <sv at li.org>
+// Translator: Leonard Norrgård <leonard.norrgard at refactor.fi>
+// Last translator: Leonard Norrgård <leonard.norrgard at refactor.fi>
+// Encoding: iso-latin-1
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("söndag",
+ "måndag",
+ "tisdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "lördag",
+ "söndag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+Calendar._SDN_len = 2;
+Calendar._SMN_len = 3;
+
+// full month names
+Calendar._MN = new Array
+("januari",
+ "februari",
+ "mars",
+ "april",
+ "maj",
+ "juni",
+ "juli",
+ "augusti",
+ "september",
+ "oktober",
+ "november",
+ "december");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Om kalendern";
+
+Calendar._TT["ABOUT"] =
+"DHTML Datum/tid-väljare\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"För senaste version gå till: http://www.dynarch.com/projects/calendar/\n" +
+"Distribueras under GNU LGPL.  Se http://gnu.org/licenses/lgpl.html för detaljer." +
+"\n\n" +
+"Val av datum:\n" +
+"- Använd knapparna \xab, \xbb för att välja år\n" +
+"- Använd knapparna " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " för att välja månad\n" +
+"- Håll musknappen nedtryckt på någon av ovanstående knappar för snabbare val.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Val av tid:\n" +
+"- Klicka på en del av tiden för att öka den delen\n" +
+"- eller skift-klicka för att minska den\n" +
+"- eller klicka och drag för snabbare val.";
+
+Calendar._TT["PREV_YEAR"] = "Föregående år (håll för menu)";
+Calendar._TT["PREV_MONTH"] = "Föregående månad (håll för menu)";
+Calendar._TT["GO_TODAY"] = "Gå till dagens datum";
+Calendar._TT["NEXT_MONTH"] = "Följande månad (håll för menu)";
+Calendar._TT["NEXT_YEAR"] = "Följande år (håll för menu)";
+Calendar._TT["SEL_DATE"] = "Välj datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Drag för att flytta";
+Calendar._TT["PART_TODAY"] = " (idag)";
+Calendar._TT["MON_FIRST"] = "Visa måndag först";
+Calendar._TT["SUN_FIRST"] = "Visa söndag först";
+Calendar._TT["CLOSE"] = "Stäng";
+Calendar._TT["TODAY"] = "Idag";
+Calendar._TT["TIME_PART"] = "(Skift-)klicka eller drag för att ändra tid";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A %d %b %Y";
+
+Calendar._TT["WK"] = "vecka";

Deleted: plog/trunk/js/jscalendar/lang/calendar-tr.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-tr.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-tr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,58 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////////////////////
-//	Turkish Translation by Nuri AKMAN
-//	Location: Ankara/TURKEY
-//	e-mail	: nuriakman at hotmail.com
-//	Date	: April, 9 2003
-//
-//	Note: if Turkish Characters does not shown on you screen
-//		  please include falowing line your html code:
-//
-//		  <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
-//
-//////////////////////////////////////////////////////////////////////////////////////////////
-
-// ** I18N
-Calendar._DN = new Array
-("Pazar",
- "Pazartesi",
- "Salý",
- "Çarþamba",
- "Perþembe",
- "Cuma",
- "Cumartesi",
- "Pazar");
-Calendar._MN = new Array
-("Ocak",
- "Þubat",
- "Mart",
- "Nisan",
- "Mayýs",
- "Haziran",
- "Temmuz",
- "Aðustos",
- "Eylül",
- "Ekim",
- "Kasým",
- "Aralýk");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["TOGGLE"] = "Haftanýn ilk gününü kaydýr";
-Calendar._TT["PREV_YEAR"] = "Önceki Yýl (Menü için basýlý tutunuz)";
-Calendar._TT["PREV_MONTH"] = "Önceki Ay (Menü için basýlý tutunuz)";
-Calendar._TT["GO_TODAY"] = "Bugün'e git";
-Calendar._TT["NEXT_MONTH"] = "Sonraki Ay (Menü için basýlý tutunuz)";
-Calendar._TT["NEXT_YEAR"] = "Sonraki Yýl (Menü için basýlý tutunuz)";
-Calendar._TT["SEL_DATE"] = "Tarih seçiniz";
-Calendar._TT["DRAG_TO_MOVE"] = "Taþýmak için sürükleyiniz";
-Calendar._TT["PART_TODAY"] = " (bugün)";
-Calendar._TT["MON_FIRST"] = "Takvim Pazartesi gününden baþlasýn";
-Calendar._TT["SUN_FIRST"] = "Takvim Pazar gününden baþlasýn";
-Calendar._TT["CLOSE"] = "Kapat";
-Calendar._TT["TODAY"] = "Bugün";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
-Calendar._TT["TT_DATE_FORMAT"] = "d MM y, DD";
-
-Calendar._TT["WK"] = "Hafta";

Copied: plog/trunk/js/jscalendar/lang/calendar-tr.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-tr.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-tr.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-tr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,58 @@
+//////////////////////////////////////////////////////////////////////////////////////////////
+//	Turkish Translation by Nuri AKMAN
+//	Location: Ankara/TURKEY
+//	e-mail	: nuriakman at hotmail.com
+//	Date	: April, 9 2003
+//
+//	Note: if Turkish Characters does not shown on you screen
+//		  please include falowing line your html code:
+//
+//		  <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
+//
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+// ** I18N
+Calendar._DN = new Array
+("Pazar",
+ "Pazartesi",
+ "Salý",
+ "Çarþamba",
+ "Perþembe",
+ "Cuma",
+ "Cumartesi",
+ "Pazar");
+Calendar._MN = new Array
+("Ocak",
+ "Þubat",
+ "Mart",
+ "Nisan",
+ "Mayýs",
+ "Haziran",
+ "Temmuz",
+ "Aðustos",
+ "Eylül",
+ "Ekim",
+ "Kasým",
+ "Aralýk");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Haftanýn ilk gününü kaydýr";
+Calendar._TT["PREV_YEAR"] = "Önceki Yýl (Menü için basýlý tutunuz)";
+Calendar._TT["PREV_MONTH"] = "Önceki Ay (Menü için basýlý tutunuz)";
+Calendar._TT["GO_TODAY"] = "Bugün'e git";
+Calendar._TT["NEXT_MONTH"] = "Sonraki Ay (Menü için basýlý tutunuz)";
+Calendar._TT["NEXT_YEAR"] = "Sonraki Yýl (Menü için basýlý tutunuz)";
+Calendar._TT["SEL_DATE"] = "Tarih seçiniz";
+Calendar._TT["DRAG_TO_MOVE"] = "Taþýmak için sürükleyiniz";
+Calendar._TT["PART_TODAY"] = " (bugün)";
+Calendar._TT["MON_FIRST"] = "Takvim Pazartesi gününden baþlasýn";
+Calendar._TT["SUN_FIRST"] = "Takvim Pazar gününden baþlasýn";
+Calendar._TT["CLOSE"] = "Kapat";
+Calendar._TT["TODAY"] = "Bugün";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
+Calendar._TT["TT_DATE_FORMAT"] = "d MM y, DD";
+
+Calendar._TT["WK"] = "Hafta";

Deleted: plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,119 +0,0 @@
-// ** I18N
-
-// Calendar ZH language
-// Author: muziq, <muziq at sina.com>
-// Encoding: GB2312 or GBK
-// Distributed under the same terms as the calendar itself.
-
-// full day names
-Calendar._DN = new Array
-("星期日",
- "星期一",
- "星期二",
- "星期三",
- "星期四",
- "星期五",
- "星期六",
- "星期日");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("æ—¥",
- "一",
- "二",
- "三",
- "å››",
- "五",
- "å…­",
- "æ—¥");
-
-// full month names
-Calendar._MN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// short month names
-Calendar._SMN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "幫助";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"選擇日期:\n" +
-"- 點擊 \xab, \xbb 按鈕選擇年份\n" +
-"- 點擊 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕選擇月份\n" +
-"- 長按以上按鈕可從菜單中快速選擇年份或月份";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"選擇時間:\n" +
-"- 點擊小時或分鐘可使改數值加一\n" +
-"- 按住Shift鍵點擊小時或分鐘可使改數值減一\n" +
-"- 點擊拖動鼠標可進行快速選擇";
-
-Calendar._TT["PREV_YEAR"] = "上一年 (按住出菜單)";
-Calendar._TT["PREV_MONTH"] = "上一月 (按住出菜單)";
-Calendar._TT["GO_TODAY"] = "轉到今日";
-Calendar._TT["NEXT_MONTH"] = "下一月 (按住出菜單)";
-Calendar._TT["NEXT_YEAR"] = "下一年 (按住出菜單)";
-Calendar._TT["SEL_DATE"] = "選擇日期";
-Calendar._TT["DRAG_TO_MOVE"] = "æ‹–å‹•";
-Calendar._TT["PART_TODAY"] = " (今日)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "最左邊顯示%s";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "關閉";
-Calendar._TT["TODAY"] = "今日";
-Calendar._TT["TIME_PART"] = "(Shift-)點擊鼠標或拖動改變值";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %b %eæ—¥";
-
-Calendar._TT["WK"] = "周";
-Calendar._TT["TIME"] = "時間:";
\ No newline at end of file

Copied: plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-zh-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,119 @@
+// ** I18N
+
+// Calendar ZH language
+// Author: muziq, <muziq at sina.com>
+// Encoding: GB2312 or GBK
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("星期日",
+ "星期一",
+ "星期二",
+ "星期三",
+ "星期四",
+ "星期五",
+ "星期六",
+ "星期日");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("æ—¥",
+ "一",
+ "二",
+ "三",
+ "å››",
+ "五",
+ "å…­",
+ "æ—¥");
+
+// full month names
+Calendar._MN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// short month names
+Calendar._SMN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "幫助";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"選擇日期:\n" +
+"- 點擊 \xab, \xbb 按鈕選擇年份\n" +
+"- 點擊 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕選擇月份\n" +
+"- 長按以上按鈕可從菜單中快速選擇年份或月份";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"選擇時間:\n" +
+"- 點擊小時或分鐘可使改數值加一\n" +
+"- 按住Shift鍵點擊小時或分鐘可使改數值減一\n" +
+"- 點擊拖動鼠標可進行快速選擇";
+
+Calendar._TT["PREV_YEAR"] = "上一年 (按住出菜單)";
+Calendar._TT["PREV_MONTH"] = "上一月 (按住出菜單)";
+Calendar._TT["GO_TODAY"] = "轉到今日";
+Calendar._TT["NEXT_MONTH"] = "下一月 (按住出菜單)";
+Calendar._TT["NEXT_YEAR"] = "下一年 (按住出菜單)";
+Calendar._TT["SEL_DATE"] = "選擇日期";
+Calendar._TT["DRAG_TO_MOVE"] = "æ‹–å‹•";
+Calendar._TT["PART_TODAY"] = " (今日)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "最左邊顯示%s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "關閉";
+Calendar._TT["TODAY"] = "今日";
+Calendar._TT["TIME_PART"] = "(Shift-)點擊鼠標或拖動改變值";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %b %eæ—¥";
+
+Calendar._TT["WK"] = "周";
+Calendar._TT["TIME"] = "時間:";
\ No newline at end of file

Deleted: plog/trunk/js/jscalendar/lang/calendar-zh.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-zh.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,119 +0,0 @@
-// ** I18N
-
-// Calendar ZH language
-// Author: muziq, <muziq at sina.com>
-// Encoding: GB2312 or GBK
-// Distributed under the same terms as the calendar itself.
-
-// full day names
-Calendar._DN = new Array
-("ÐÇÆÚÈÕ",
- "ÐÇÆÚÒ»",
- "ÐÇÆÚ¶þ",
- "ÐÇÆÚÈý",
- "ÐÇÆÚËÄ",
- "ÐÇÆÚÎå",
- "ÐÇÆÚÁù",
- "ÐÇÆÚÈÕ");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("ÈÕ",
- "Ò»",
- "¶þ",
- "Èý",
- "ËÄ",
- "Îå",
- "Áù",
- "ÈÕ");
-
-// full month names
-Calendar._MN = new Array
-("Ò»ÔÂ",
- "¶þÔÂ",
- "ÈýÔÂ",
- "ËÄÔÂ",
- "ÎåÔÂ",
- "ÁùÔÂ",
- "ÆßÔÂ",
- "°ËÔÂ",
- "¾ÅÔÂ",
- "Ê®ÔÂ",
- "ʮһÔÂ",
- "Ê®¶þÔÂ");
-
-// short month names
-Calendar._SMN = new Array
-("Ò»ÔÂ",
- "¶þÔÂ",
- "ÈýÔÂ",
- "ËÄÔÂ",
- "ÎåÔÂ",
- "ÁùÔÂ",
- "ÆßÔÂ",
- "°ËÔÂ",
- "¾ÅÔÂ",
- "Ê®ÔÂ",
- "ʮһÔÂ",
- "Ê®¶þÔÂ");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "°ïÖú";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"Ñ¡ÔñÈÕÆÚ:\n" +
-"- µã»÷ \xab, \xbb °´Å¥Ñ¡ÔñÄê·Ý\n" +
-"- µã»÷ " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " °´Å¥Ñ¡ÔñÔ·Ý\n" +
-"- ³¤°´ÒÔÉÏ°´Å¥¿É´Ó²Ëµ¥ÖпìËÙÑ¡ÔñÄê·Ý»òÔ·Ý";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Ñ¡Ôñʱ¼ä:\n" +
-"- µã»÷Сʱ»ò·ÖÖÓ¿Éʹ¸ÄÊýÖµ¼ÓÒ»\n" +
-"- °´×¡Shift¼üµã»÷Сʱ»ò·ÖÖÓ¿Éʹ¸ÄÊýÖµ¼õÒ»\n" +
-"- µã»÷Í϶¯Êó±ê¿É½øÐпìËÙÑ¡Ôñ";
-
-Calendar._TT["PREV_YEAR"] = "ÉÏÒ»Äê (°´×¡³ö²Ëµ¥)";
-Calendar._TT["PREV_MONTH"] = "ÉÏÒ»Ô (°´×¡³ö²Ëµ¥)";
-Calendar._TT["GO_TODAY"] = "תµ½½ñÈÕ";
-Calendar._TT["NEXT_MONTH"] = "ÏÂÒ»Ô (°´×¡³ö²Ëµ¥)";
-Calendar._TT["NEXT_YEAR"] = "ÏÂÒ»Äê (°´×¡³ö²Ëµ¥)";
-Calendar._TT["SEL_DATE"] = "Ñ¡ÔñÈÕÆÚ";
-Calendar._TT["DRAG_TO_MOVE"] = "Í϶¯";
-Calendar._TT["PART_TODAY"] = " (½ñÈÕ)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "×î×ó±ßÏÔʾ%s";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "¹Ø±Õ";
-Calendar._TT["TODAY"] = "½ñÈÕ";
-Calendar._TT["TIME_PART"] = "(Shift-)µã»÷Êó±ê»òÍ϶¯¸Ä±äÖµ";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%A, %b %eÈÕ";
-
-Calendar._TT["WK"] = "ÖÜ";
-Calendar._TT["TIME"] = "ʱ¼ä:";

Copied: plog/trunk/js/jscalendar/lang/calendar-zh.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-zh.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-zh.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,119 @@
+// ** I18N
+
+// Calendar ZH language
+// Author: muziq, <muziq at sina.com>
+// Encoding: GB2312 or GBK
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("ÐÇÆÚÈÕ",
+ "ÐÇÆÚÒ»",
+ "ÐÇÆÚ¶þ",
+ "ÐÇÆÚÈý",
+ "ÐÇÆÚËÄ",
+ "ÐÇÆÚÎå",
+ "ÐÇÆÚÁù",
+ "ÐÇÆÚÈÕ");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("ÈÕ",
+ "Ò»",
+ "¶þ",
+ "Èý",
+ "ËÄ",
+ "Îå",
+ "Áù",
+ "ÈÕ");
+
+// full month names
+Calendar._MN = new Array
+("Ò»ÔÂ",
+ "¶þÔÂ",
+ "ÈýÔÂ",
+ "ËÄÔÂ",
+ "ÎåÔÂ",
+ "ÁùÔÂ",
+ "ÆßÔÂ",
+ "°ËÔÂ",
+ "¾ÅÔÂ",
+ "Ê®ÔÂ",
+ "ʮһÔÂ",
+ "Ê®¶þÔÂ");
+
+// short month names
+Calendar._SMN = new Array
+("Ò»ÔÂ",
+ "¶þÔÂ",
+ "ÈýÔÂ",
+ "ËÄÔÂ",
+ "ÎåÔÂ",
+ "ÁùÔÂ",
+ "ÆßÔÂ",
+ "°ËÔÂ",
+ "¾ÅÔÂ",
+ "Ê®ÔÂ",
+ "ʮһÔÂ",
+ "Ê®¶þÔÂ");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "°ïÖú";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Ñ¡ÔñÈÕÆÚ:\n" +
+"- µã»÷ \xab, \xbb °´Å¥Ñ¡ÔñÄê·Ý\n" +
+"- µã»÷ " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " °´Å¥Ñ¡ÔñÔ·Ý\n" +
+"- ³¤°´ÒÔÉÏ°´Å¥¿É´Ó²Ëµ¥ÖпìËÙÑ¡ÔñÄê·Ý»òÔ·Ý";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Ñ¡Ôñʱ¼ä:\n" +
+"- µã»÷Сʱ»ò·ÖÖÓ¿Éʹ¸ÄÊýÖµ¼ÓÒ»\n" +
+"- °´×¡Shift¼üµã»÷Сʱ»ò·ÖÖÓ¿Éʹ¸ÄÊýÖµ¼õÒ»\n" +
+"- µã»÷Í϶¯Êó±ê¿É½øÐпìËÙÑ¡Ôñ";
+
+Calendar._TT["PREV_YEAR"] = "ÉÏÒ»Äê (°´×¡³ö²Ëµ¥)";
+Calendar._TT["PREV_MONTH"] = "ÉÏÒ»Ô (°´×¡³ö²Ëµ¥)";
+Calendar._TT["GO_TODAY"] = "תµ½½ñÈÕ";
+Calendar._TT["NEXT_MONTH"] = "ÏÂÒ»Ô (°´×¡³ö²Ëµ¥)";
+Calendar._TT["NEXT_YEAR"] = "ÏÂÒ»Äê (°´×¡³ö²Ëµ¥)";
+Calendar._TT["SEL_DATE"] = "Ñ¡ÔñÈÕÆÚ";
+Calendar._TT["DRAG_TO_MOVE"] = "Í϶¯";
+Calendar._TT["PART_TODAY"] = " (½ñÈÕ)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "×î×ó±ßÏÔʾ%s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "¹Ø±Õ";
+Calendar._TT["TODAY"] = "½ñÈÕ";
+Calendar._TT["TIME_PART"] = "(Shift-)µã»÷Êó±ê»òÍ϶¯¸Ä±äÖµ";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %b %eÈÕ";
+
+Calendar._TT["WK"] = "ÖÜ";
+Calendar._TT["TIME"] = "ʱ¼ä:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh_CN-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,127 +0,0 @@
-// ** I18N
-
-// Calendar big5-utf8 language
-// Author: Gary Fu, <gary at garyfu.idv.tw>
-// Encoding: utf8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-	
-// full day names
-Calendar._DN = new Array
-("星期日",
- "星期一",
- "星期二",
- "星期三",
- "星期四",
- "星期五",
- "星期六",
- "星期日");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("æ—¥",
- "一",
- "二",
- "三",
- "å››",
- "五",
- "å…­",
- "æ—¥");
-
-// First day of the week. "0" means display Sunday first, "1" means display
-// Monday first, etc.
-Calendar._FD = 0;
-
-// full month names
-Calendar._MN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// short month names
-Calendar._SMN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "关于";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"日期选择方法:\n" +
-"- 使用 \xab, \xbb 按钮可选择年份\n" +
-"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按钮可选择月份\n" +
-"- 按住上面的按钮可以加快选取";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"时间选择方法:\n" +
-"- 点击任何的时间部份可增加其值\n" +
-"- 同时按Shift键再点击可减少其值\n" +
-"- 点击并拖曳可加快改变的值";
-
-Calendar._TT["PREV_YEAR"] = "上一年 (按住选单)";
-Calendar._TT["PREV_MONTH"] = "下一年 (按住选单)";
-Calendar._TT["GO_TODAY"] = "到今日";
-Calendar._TT["NEXT_MONTH"] = "上一月 (按住选单)";
-Calendar._TT["NEXT_YEAR"] = "下一月 (按住选单)";
-Calendar._TT["SEL_DATE"] = "选择日期";
-Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
-Calendar._TT["PART_TODAY"] = " (今日)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "将 %s 显示在前";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "关闭";
-Calendar._TT["TODAY"] = "今日";
-Calendar._TT["TIME_PART"] = "点击or拖曳可改变时间(同时按Shift为减)";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%b %e (%A)";
-
-Calendar._TT["WK"] = "周";
-Calendar._TT["TIME"] = "时间:";

Copied: plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh_CN-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-zh_CN-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar big5-utf8 language
+// Author: Gary Fu, <gary at garyfu.idv.tw>
+// Encoding: utf8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+	
+// full day names
+Calendar._DN = new Array
+("星期日",
+ "星期一",
+ "星期二",
+ "星期三",
+ "星期四",
+ "星期五",
+ "星期六",
+ "星期日");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("æ—¥",
+ "一",
+ "二",
+ "三",
+ "å››",
+ "五",
+ "å…­",
+ "æ—¥");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// short month names
+Calendar._SMN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "关于";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"日期选择方法:\n" +
+"- 使用 \xab, \xbb 按钮可选择年份\n" +
+"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按钮可选择月份\n" +
+"- 按住上面的按钮可以加快选取";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"时间选择方法:\n" +
+"- 点击任何的时间部份可增加其值\n" +
+"- 同时按Shift键再点击可减少其值\n" +
+"- 点击并拖曳可加快改变的值";
+
+Calendar._TT["PREV_YEAR"] = "上一年 (按住选单)";
+Calendar._TT["PREV_MONTH"] = "下一年 (按住选单)";
+Calendar._TT["GO_TODAY"] = "到今日";
+Calendar._TT["NEXT_MONTH"] = "上一月 (按住选单)";
+Calendar._TT["NEXT_YEAR"] = "下一月 (按住选单)";
+Calendar._TT["SEL_DATE"] = "选择日期";
+Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
+Calendar._TT["PART_TODAY"] = " (今日)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "将 %s 显示在前";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "关闭";
+Calendar._TT["TODAY"] = "今日";
+Calendar._TT["TIME_PART"] = "点击or拖曳可改变时间(同时按Shift为减)";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b %e (%A)";
+
+Calendar._TT["WK"] = "周";
+Calendar._TT["TIME"] = "时间:";

Deleted: plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh_TW-utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,127 +0,0 @@
-// ** I18N
-
-// Calendar big5-utf8 language
-// Author: Gary Fu, <gary at garyfu.idv.tw>
-// Encoding: utf8
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-	
-// full day names
-Calendar._DN = new Array
-("星期日",
- "星期一",
- "星期二",
- "星期三",
- "星期四",
- "星期五",
- "星期六",
- "星期日");
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("æ—¥",
- "一",
- "二",
- "三",
- "å››",
- "五",
- "å…­",
- "æ—¥");
-
-// First day of the week. "0" means display Sunday first, "1" means display
-// Monday first, etc.
-Calendar._FD = 0;
-
-// full month names
-Calendar._MN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// short month names
-Calendar._SMN = new Array
-("一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "關於";
-
-Calendar._TT["ABOUT"] =
-"DHTML Date/Time Selector\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
-"\n\n" +
-"日期選擇方法:\n" +
-"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
-"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
-"- 按住上面的按鈕可以加快選取";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"時間選擇方法:\n" +
-"- 點擊任何的時間部份可增加其值\n" +
-"- 同時按Shift鍵再點擊可減少其值\n" +
-"- 點擊並拖曳可加快改變的值";
-
-Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
-Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
-Calendar._TT["GO_TODAY"] = "到今日";
-Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
-Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
-Calendar._TT["SEL_DATE"] = "選擇日期";
-Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
-Calendar._TT["PART_TODAY"] = " (今日)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "關閉";
-Calendar._TT["TODAY"] = "今日";
-Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%b %e (%A)";
-
-Calendar._TT["WK"] = "週";
-Calendar._TT["TIME"] = "時間:";

Copied: plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/calendar-zh_TW-utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/calendar-zh_TW-utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar big5-utf8 language
+// Author: Gary Fu, <gary at garyfu.idv.tw>
+// Encoding: utf8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+	
+// full day names
+Calendar._DN = new Array
+("星期日",
+ "星期一",
+ "星期二",
+ "星期三",
+ "星期四",
+ "星期五",
+ "星期六",
+ "星期日");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("æ—¥",
+ "一",
+ "二",
+ "三",
+ "å››",
+ "五",
+ "å…­",
+ "æ—¥");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// short month names
+Calendar._SMN = new Array
+("一月",
+ "二月",
+ "三月",
+ "四月",
+ "五月",
+ "六月",
+ "七月",
+ "八月",
+ "九月",
+ "十月",
+ "十一月",
+ "十二月");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "關於";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"日期選擇方法:\n" +
+"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
+"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
+"- 按住上面的按鈕可以加快選取";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"時間選擇方法:\n" +
+"- 點擊任何的時間部份可增加其值\n" +
+"- 同時按Shift鍵再點擊可減少其值\n" +
+"- 點擊並拖曳可加快改變的值";
+
+Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
+Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
+Calendar._TT["GO_TODAY"] = "到今日";
+Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
+Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
+Calendar._TT["SEL_DATE"] = "選擇日期";
+Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
+Calendar._TT["PART_TODAY"] = " (今日)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "關閉";
+Calendar._TT["TODAY"] = "今日";
+Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b %e (%A)";
+
+Calendar._TT["WK"] = "週";
+Calendar._TT["TIME"] = "時間:";

Deleted: plog/trunk/js/jscalendar/lang/cn_utf8.js
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/lang/cn_utf8.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/lang/cn_utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,123 +0,0 @@
-// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mishoo at infoiasi.ro>
-// Encoding: any
-// Translator : Niko <nikoused at gmail.com>
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible.  We strongly believe that
-// Unicode is the answer to a real internationalized world.  Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("\u5468\u65e5",//\u5468\u65e5
- "\u5468\u4e00",//\u5468\u4e00
- "\u5468\u4e8c",//\u5468\u4e8c
- "\u5468\u4e09",//\u5468\u4e09
- "\u5468\u56db",//\u5468\u56db
- "\u5468\u4e94",//\u5468\u4e94
- "\u5468\u516d",//\u5468\u516d
- "\u5468\u65e5");//\u5468\u65e5
-
-// Please note that the following array of short day names (and the same goes
-// for short month names, _SMN) isn't absolutely necessary.  We give it here
-// for exemplification on how one can customize the short day names, but if
-// they are simply the first N letters of the full name you can simply say:
-//
-//   Calendar._SDN_len = N; // short day name length
-//   Calendar._SMN_len = N; // short month name length
-//
-// If N = 3 then this is not needed either since we assume a value of 3 if not
-// present, to be compatible with translation files that were written before
-// this feature.
-
-// short day names
-Calendar._SDN = new Array
-("\u5468\u65e5",
- "\u5468\u4e00",
- "\u5468\u4e8c",
- "\u5468\u4e09",
- "\u5468\u56db",
- "\u5468\u4e94",
- "\u5468\u516d",
- "\u5468\u65e5");
-
-// full month names
-Calendar._MN = new Array
-("\u4e00\u6708",
- "\u4e8c\u6708",
- "\u4e09\u6708",
- "\u56db\u6708",
- "\u4e94\u6708",
- "\u516d\u6708",
- "\u4e03\u6708",
- "\u516b\u6708",
- "\u4e5d\u6708",
- "\u5341\u6708",
- "\u5341\u4e00\u6708",
- "\u5341\u4e8c\u6708");
-
-// short month names
-Calendar._SMN = new Array
-("\u4e00\u6708",
- "\u4e8c\u6708",
- "\u4e09\u6708",
- "\u56db\u6708",
- "\u4e94\u6708",
- "\u516d\u6708",
- "\u4e03\u6708",
- "\u516b\u6708",
- "\u4e5d\u6708",
- "\u5341\u6708",
- "\u5341\u4e00\u6708",
- "\u5341\u4e8c\u6708");
-
-// tooltips
-Calendar._TT = {};
-Calendar._TT["INFO"] = "\u5173\u4e8e";
-
-Calendar._TT["ABOUT"] =
-"   DHTML \u65e5\u8d77/\u65f6\u95f4\u9009\u62e9\u63a7\u4ef6\n" +
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: \u6700\u65b0\u7248\u672c\u8bf7\u767b\u9646http://www.dynarch.com/projects/calendar/\u5bdf\u770b\n" +
-"\u9075\u5faaGNU LGPL.  \u7ec6\u8282\u53c2\u9605 http://gnu.org/licenses/lgpl.html" +
-"\n\n" +
-"\u65e5\u671f\u9009\u62e9:\n" +
-"- \u70b9\u51fb\xab(\xbb)\u6309\u94ae\u9009\u62e9\u4e0a(\u4e0b)\u4e00\u5e74\u5ea6.\n" +
-"- \u70b9\u51fb" + String.fromCharCode(0x2039) + "(" + String.fromCharCode(0x203a) + ")\u6309\u94ae\u9009\u62e9\u4e0a(\u4e0b)\u4e2a\u6708\u4efd.\n" +
-"- \u957f\u65f6\u95f4\u6309\u7740\u6309\u94ae\u5c06\u51fa\u73b0\u66f4\u591a\u9009\u62e9\u9879.";
-Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"\u65f6\u95f4\u9009\u62e9:\n" +
-"-\u5728\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\u4e0a\u5355\u51fb\u9f20\u6807\u5de6\u952e\u6765\u589e\u52a0\u5f53\u524d\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\n" +
-"-\u5728\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\u4e0a\u6309\u4f4fShift\u952e\u540e\u5355\u51fb\u9f20\u6807\u5de6\u952e\u6765\u51cf\u5c11\u5f53\u524d\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2).";
-
-Calendar._TT["PREV_YEAR"] = "\u4e0a\u4e00\u5e74";
-Calendar._TT["PREV_MONTH"] = "\u4e0a\u4e2a\u6708";
-Calendar._TT["GO_TODAY"] = "\u5230\u4eca\u5929";
-Calendar._TT["NEXT_MONTH"] = "\u4e0b\u4e2a\u6708";
-Calendar._TT["NEXT_YEAR"] = "\u4e0b\u4e00\u5e74";
-Calendar._TT["SEL_DATE"] = "\u9009\u62e9\u65e5\u671f";
-Calendar._TT["DRAG_TO_MOVE"] = "\u62d6\u52a8";
-Calendar._TT["PART_TODAY"] = " (\u4eca\u5929)";
-
-// the following is to inform that "%s" is to be the first day of week
-// %s will be replaced with the day name.
-Calendar._TT["DAY_FIRST"] = "%s\u4e3a\u8fd9\u5468\u7684\u7b2c\u4e00\u5929";
-
-// This may be locale-dependent.  It specifies the week-end days, as an array
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
-// means Monday, etc.
-Calendar._TT["WEEKEND"] = "0,6";
-
-Calendar._TT["CLOSE"] = "\u5173\u95ed";
-Calendar._TT["TODAY"] = "\u4eca\u5929";
-Calendar._TT["TIME_PART"] = "(\u6309\u7740Shift\u952e)\u5355\u51fb\u6216\u62d6\u52a8\u6539\u53d8\u503c";
-
-// date formats
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e\u65e5";
-
-Calendar._TT["WK"] = "\u5468";
-Calendar._TT["TIME"] = "\u65f6\u95f4:";

Copied: plog/trunk/js/jscalendar/lang/cn_utf8.js (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/lang/cn_utf8.js)
===================================================================
--- plog/trunk/js/jscalendar/lang/cn_utf8.js	                        (rev 0)
+++ plog/trunk/js/jscalendar/lang/cn_utf8.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mishoo at infoiasi.ro>
+// Encoding: any
+// Translator : Niko <nikoused at gmail.com>
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("\u5468\u65e5",//\u5468\u65e5
+ "\u5468\u4e00",//\u5468\u4e00
+ "\u5468\u4e8c",//\u5468\u4e8c
+ "\u5468\u4e09",//\u5468\u4e09
+ "\u5468\u56db",//\u5468\u56db
+ "\u5468\u4e94",//\u5468\u4e94
+ "\u5468\u516d",//\u5468\u516d
+ "\u5468\u65e5");//\u5468\u65e5
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("\u5468\u65e5",
+ "\u5468\u4e00",
+ "\u5468\u4e8c",
+ "\u5468\u4e09",
+ "\u5468\u56db",
+ "\u5468\u4e94",
+ "\u5468\u516d",
+ "\u5468\u65e5");
+
+// full month names
+Calendar._MN = new Array
+("\u4e00\u6708",
+ "\u4e8c\u6708",
+ "\u4e09\u6708",
+ "\u56db\u6708",
+ "\u4e94\u6708",
+ "\u516d\u6708",
+ "\u4e03\u6708",
+ "\u516b\u6708",
+ "\u4e5d\u6708",
+ "\u5341\u6708",
+ "\u5341\u4e00\u6708",
+ "\u5341\u4e8c\u6708");
+
+// short month names
+Calendar._SMN = new Array
+("\u4e00\u6708",
+ "\u4e8c\u6708",
+ "\u4e09\u6708",
+ "\u56db\u6708",
+ "\u4e94\u6708",
+ "\u516d\u6708",
+ "\u4e03\u6708",
+ "\u516b\u6708",
+ "\u4e5d\u6708",
+ "\u5341\u6708",
+ "\u5341\u4e00\u6708",
+ "\u5341\u4e8c\u6708");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u5173\u4e8e";
+
+Calendar._TT["ABOUT"] =
+"   DHTML \u65e5\u8d77/\u65f6\u95f4\u9009\u62e9\u63a7\u4ef6\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: \u6700\u65b0\u7248\u672c\u8bf7\u767b\u9646http://www.dynarch.com/projects/calendar/\u5bdf\u770b\n" +
+"\u9075\u5faaGNU LGPL.  \u7ec6\u8282\u53c2\u9605 http://gnu.org/licenses/lgpl.html" +
+"\n\n" +
+"\u65e5\u671f\u9009\u62e9:\n" +
+"- \u70b9\u51fb\xab(\xbb)\u6309\u94ae\u9009\u62e9\u4e0a(\u4e0b)\u4e00\u5e74\u5ea6.\n" +
+"- \u70b9\u51fb" + String.fromCharCode(0x2039) + "(" + String.fromCharCode(0x203a) + ")\u6309\u94ae\u9009\u62e9\u4e0a(\u4e0b)\u4e2a\u6708\u4efd.\n" +
+"- \u957f\u65f6\u95f4\u6309\u7740\u6309\u94ae\u5c06\u51fa\u73b0\u66f4\u591a\u9009\u62e9\u9879.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"\u65f6\u95f4\u9009\u62e9:\n" +
+"-\u5728\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\u4e0a\u5355\u51fb\u9f20\u6807\u5de6\u952e\u6765\u589e\u52a0\u5f53\u524d\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\n" +
+"-\u5728\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\u4e0a\u6309\u4f4fShift\u952e\u540e\u5355\u51fb\u9f20\u6807\u5de6\u952e\u6765\u51cf\u5c11\u5f53\u524d\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2).";
+
+Calendar._TT["PREV_YEAR"] = "\u4e0a\u4e00\u5e74";
+Calendar._TT["PREV_MONTH"] = "\u4e0a\u4e2a\u6708";
+Calendar._TT["GO_TODAY"] = "\u5230\u4eca\u5929";
+Calendar._TT["NEXT_MONTH"] = "\u4e0b\u4e2a\u6708";
+Calendar._TT["NEXT_YEAR"] = "\u4e0b\u4e00\u5e74";
+Calendar._TT["SEL_DATE"] = "\u9009\u62e9\u65e5\u671f";
+Calendar._TT["DRAG_TO_MOVE"] = "\u62d6\u52a8";
+Calendar._TT["PART_TODAY"] = " (\u4eca\u5929)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "%s\u4e3a\u8fd9\u5468\u7684\u7b2c\u4e00\u5929";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "\u5173\u95ed";
+Calendar._TT["TODAY"] = "\u4eca\u5929";
+Calendar._TT["TIME_PART"] = "(\u6309\u7740Shift\u952e)\u5355\u51fb\u6216\u62d6\u52a8\u6539\u53d8\u503c";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e\u65e5";
+
+Calendar._TT["WK"] = "\u5468";
+Calendar._TT["TIME"] = "\u65f6\u95f4:";

Deleted: plog/trunk/js/jscalendar/menuarrow.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/menuarrow.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/menuarrow.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/menuarrow2.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/menuarrow2.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/menuarrow2.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/release-notes.html
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/release-notes.html	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/release-notes.html	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,435 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
-<html>
-  <head>
-    <title>jscalendar release notes</title>
-
-    <style type="text/css">
-      h1 { border-bottom: 1px solid #000; }
-      h2 { border-bottom: 1px solid #444; }
-      ul li { margin-top: 0.5em; margin-bottom: 0.5em; }
-    </style>
-  </head>
-
-  <body>
-    <div style="float: right; border: 1px solid #000; background: #fff; padding: 10px; ">
-      <a href="http://www.dynarch.com/projects/calendar/">The Coolest DHTML Calendar</a><br />
-      © <a href="http://www.dynarch.com/">Dynarch.com</a> 2002 and later.
-    </div>
-    <h1>jscalendar release notes</h1>
-
-    <p>This release compiled at Monday,  7 Mar 2005 (19:06).</p>
-
-    <h2>1.0</h2>
-
-    <ul>
-
-      <li>
-        Added support for multiple dates selection.  In this mode the
-        calendar will allow the user to select more than one date, and
-        will maintain an array of selected dates that can be
-        investigated from your custom handlers.  Sample in <a
-        href="multiple-dates.html">multiple-dates.html</a>.
-      </li>
-
-      <li>
-        Support for “day info”.  Using this feature you can display
-        custom information for certain dates.  Sample in <a
-        href="dayinfo.html">dayinfo.html</a>.  Note that if the text
-        is really big the calendar layout might appear somehow broken;
-        this is something that should be easy to fix in the CSS file.
-      </li>
-
-      <li>
-        Clicking on “Today” will now close the calendar if the current
-        date is already selected.
-      </li>
-
-      <li>
-        The “first day of week” setting can now be defined in the
-        language file--after all, it is locale-specific.  The new
-        parameter is “Calendar._FD”.  Language files should be
-        updated, but the calendar will not complain nor fail to
-        function if the parameter is not present.
-      </li>
-
-      <li>
-        Some fixes to make the thing work in Safari.  It now seems to
-        be properly supported, please let me know if you encounter any
-        problems.
-      </li>
-
-      <li>
-        New skin: Aqua theme, appropriate for MacOSX fan sites :-)
-        This theme is located in “skins/aqua/theme.css” (in the
-        future, all themes will go to this directory).
-      </li>
-
-      <li>
-        <b>Bug fixes.</b>
-        <ul>
-          <li>
-            Keyboard operation now functions normally when the
-            calendar is displaying days from adjacent months; it might
-            even work correctly for months containing disabled dates
-            :).  This fix was originally developed under contract for
-            <a
-            href="http://www.zapatec.com/website/main/products/prod1/">The
-            Zapatec Calendar</a>.  Zapatec kindly allowed us to
-            include the bugfixes back in the open source calendar.
-          </li>
-          <li>
-            Fixed the time selection bug: the previous version would
-            reset the time to current time when a new date was
-            clicked.
-          </li>
-          <li>
-            Parsing hours like "12:XX pm" would wrongfully replace
-            "pm" with "am"--fixed.
-          </li>
-          <li>
-            Fixed critical bugs in parseDate function that would
-            initialize the calendar with 'NaN' values in all cells if
-            the string to be parsed is not a valid date.
-          </li>
-          <li>
-            The golbal variable that we are using was renamed to
-            “_dynarch_popupCalendar” to minimize the risk of name
-            clashes.  It's still difficult to get rid of it.
-          </li>
-          <li>
-            Added z-index property to drop-down menus style.
-          </li>
-          <li>
-            The calendar will update an input field even in flat mode,
-            if an input field was passed.  Also, the “showOthers”
-            parameter will be effective in both popup and flat mode.
-          </li>
-          <li>
-            Others, probably.
-          </li>
-        </ul>
-      </li>
-
-      <li>
-        Documentation &amp; sample files updated.
-      </li>
-
-    </ul>
-
-    <h2>0.9.6</h2>
-
-    <ul>
-
-      <li>
-        "Smart" (TM :-) positioning algorithm.  The new algorithm will
-        try to keep the calendar in the browser view, which is helpful
-        in situations when the input field is near the bottom or the
-        right edge.  This code is only tested with IE and Mozilla, but
-        it should work with other browsers too.  Many thanks to <a
-        href="http://www.ex3.com">Sunny Chowdhury</a> for sponsoring
-        this feature!
-      </li>
-
-      <li>
-        Support for IE5/Win is back.  I also want to thank Janusz
-        Piwowarski for keeping his eye on the CVS ;-) He reviewed my
-        IE5-related changes and sent me a much cleaner patch.
-      </li>
-
-      <li>
-        The calendar will now allow any day of week to be "the first
-        day of week".  This was requested long time ago, by someone
-        whose name I forgot (sorry).  The reason was that in certain
-        countries weeks start on Saturday.  So I thought that instead
-        of having a "mondayFirst" and a "saturdayFirst" parameter,
-        :-), it's better to have a "firstDayOfWeek" parameter; now
-        it's present and its meaning is: "0 for Sunday", "1 for
-        Monday", "2 for Tuesday", etc.  The equivalent parameter for
-        Calendar.setup is "firstDay".  The end user can also change
-        it very easy: click on the day name in the calendar display.
-      </li>
-
-      <li>
-        The above feature triggered one <b>important change</b>: the
-        notion of "weekend" is now defined in the language file.
-        Added parameters:
-
-        <pre>
-          Calendar._TT["WEEKEND"] = "0,6";
-          Calendar._TT["DAY_FIRST"] = "Display %s first";</pre>
-
-        "WEEKEND" specifies a string with comma-separated numbers from
-        0 to 7; they define what days are marked as "weekend".  5 and
-        6 mean, of course, "Sunday" and "Saturday".  Day first is the
-        tooltip displayed when a day name is hovered; "%s" will get
-        replaced with the day name.  Updated languages are "en" and
-        "ro", which I maintain.  Please note that languages wich are
-        not updated <b>will not work</b>.  If yours is one of them,
-        please consider fixing it and sending me the fix so that I can
-        include it in the distro.
-      </li>
-
-      <li>
-        The calendar can now display days from the months adjacent to
-        the currently displayed one.  This is optional, of course, and
-        the parameter name is "showsOtherMonths" (or "showOthers" in
-        Calendar.setup).  All theme files were updated.
-      </li>
-
-      <li>
-        Displays "Time:" near the time selector, only if defined in
-        the language file.
-      </li>
-
-      <li>
-        Some bugs fixed in the date parsing code (which has also been
-        rewritten a little bit cleaner).
-      </li>
-
-      <li>
-        Calendar.setup will now configure the calendar to trigger the
-        input fields' "onchange" event, if specified, when a date is
-        selected.
-      </li>
-
-      <li>
-        New parameter in Calendar.setup: "cache" (<b>defaults to
-        false</b>).  If set to true then the popup calendar object
-        will be "cached", meaning, it will be created only once, no
-        matter how many input fields are there in the page.  Sometimes
-        this is not desirable, which is why I've added this
-        parameter.  Please note that it defaults to "false" (thus the
-        default behavior has changed).
-      </li>
-
-      <li>
-        Added a simple PHP wrapper.  It provides code which loads all
-        the required scripts and theme file, and one function which
-        creates and configures an input field for date input.  It
-        takes care of creating and assigning unique ID-s for the
-        calendar fields and it also creates the "Calendar.setup" code.
-        Functions to create more specialized fields can be added very
-        easily.  This feature was requested by the FreeMED.org project
-        (thanks for donating!).
-      </li>
-
-    </ul>
-
-    <p>Wow, there were quite some changes :-D  Enjoy it!</p>
-
-    <h2>0.9.5</h2>
-
-    <p>
-      This release's primary goal is to fix a wrong license statement which
-      can be found in some files from 0.9.4.  For instance in README or
-      calendar.js, the statement was that the code is distributed under the
-      GNU GPL; that's because I had plans to change the license, then
-      changed my mind but unfortunately I committed files so.  I am sorry
-      for this inconvenience, please use the latest (0.9.5) release which is
-      fully covered by LGPL.
-    </p>
-
-    <p>Other changes:</p>
-
-    <ul>
-
-      <li>
-        <b>Fixed</b> an annoying bug that prevented the calendar to display
-	correctly when it was configured for an input field inside a
-	<b>scrolling area</b>.  <b>Many thanks</b> to Ian Barrack (<a
-	href="http://www.simban.com">Simban.com</a>) who pointed it up and
-	donated quite some money for the Calendar project!
-      </li>
-
-      <li>
-        All examples use UTF-8 now; the translations may not be all
-        up-to-date, but I <strong>strongly</strong> suggest everyone to use
-        UTF-8; other encodings are a plain mess.  So far I know for sure
-        that Romanian translation will work with UTF-8 and <em>not
-        anymore</em> with ISO-8859-2.  Other translations are probably
-        usable under UTF-8, but if your preferred language isn't... ;-)
-        please make it and send it to me for inclusion.
-      </li>
-
-      <li>
-        Fixed small bug in the documentation (one footnote didn't appear
-        where it should have).
-      </li>
-
-      <li>
-        Updated translations: DE, ES, HU, IT, RO.  Thanks to everyone who
-        sent translations!
-      </li>
-
-    </ul>
-
-    <h2>0.9.4</h2>
-
-    <h3>New stuff</h3>
-
-    <ul>
-
-      <li>Supports time selection.  Yes. ;-) This work has been largely
-        sponsored by <strong>Himanshukumar Shah</strong> (thank you!).  See
-        the docs and example files for details on how to setup.</li>
-
-      <li>Easy to link 2 or more fields by using the new
-        <code>onUpdate</code> parameter of <code>Calendar.setup</code>.  This
-        is useful, say, to automatically set a value in a second field based
-        on the value selected in the first field.  See the documentation and
-        first sample in <a href="simple-1.html">simple-1.html</a>.</li>
-
-      <li>Other <code>Calendar.setup</code> low-level parameters, for those
-        wanting to have the complete control: <code>onSelect</code> and
-        <code>onClose</code>.  The handlers are called when something is
-        selected in the calendar or when the calendar is closed.</li>
-
-      <li>The translation files can optionally include the short day names
-        and the short month names.  That's because in some languages, like
-        German, the short form is not the first 3 letters of the entire name
-        but only the first 2.  Also in other languages short names can't be
-        as easily derived from the full name by just calling substr, so this
-        patch solves the problem.</li>
-
-      <li>Implemented a nice way to make some dates "special" (look
-        different).  Specifically, the <code>setDisabledHandler</code> method
-        was replaced with the more general <code>setDateStatusHandler</code>
-        method (the old one is still available for backwards compatibility but
-        <em>will</em> be removed).  More details about this in the
-        documentation.  Also see <a href="simple-3.html">simple-3.html</a>
-        for a live sample.</li>
-
-      <li>Date parsing and formatting engine is now rewritten and supports a
-        subset of <code>strftime</code> format specifiers from ANSI C.  This
-        makes it possible to use dates like "YYYYMMDD" (the corresponding
-        format for this would be "%Y%m%d").  Details in the documentation.
-        <b>Please note that the new engine is not compatibile with older
-          calendar releases!</b></li>
-
-      <li>Along with the new date parser I workarounded an unpleasant crash
-        that occurred in IE when certain accented characters appeared in the
-        texts.  I think German was one of the language with such problems, and
-        the workaround was to use the letter without an accent.  Well, now you
-        can translate to whatever you want.</li>
-
-      <li>"Fixes" (I mean, "horrible workarounds") for Konqueror (and
-        hopefully Safari).  Unfortunately, this otherwise excellent browser
-        still has some bugs that keep the calendar from working
-        <em>exactly</em> as it should..  But they're going to be fixed,
-        right? ;-)</li>
-
-      <li>CSS themes got pretty much modified too so if you wrote your theme
-        you need to update it.  Aside for the time selector support, the CSS
-        themes contain a simple hack that makes the navigation buttons show
-        a little arrow in the lower-right corner which indicates that if one
-        holds the mouse a menu will appear.</li>
-
-    </ul>
-
-    <h3>Translation files</h3>
-
-    <p>The translation files need to be updated in order for the calendar to
-      work properly.  Currently the only updated files are calendar-en.js
-      (main file) and calendar-ro.js (well, yes, I am a Romanian ;-).</p>
-
-    <p>Specifically, they need the following:</p>
-
-    <ul>
-
-      <li>Correct date format, according with the new format specifiers
-        introduced in 0.9.4.  Details about the available format specifiers
-        in the documentation</li>
-
-      <li>Short day or month names, <em>if required</em>.  If they can be
-        derived by taking the first N letters of the full name then a simple
-        Calendar._SDN_len = N or Calendar._SMN_len = N will suffice.  If N
-        is 3 then nothing needs to be done as we take it for granted if no
-        other option is offered ;-)</li>
-
-      <li>We have some new texts that shows short usage information as well
-        as copyright information.</li>
-
-    </ul>
-
-    <p>If your favorite language is not there yet, or it is but not updated
-      according to the main calendar-en.js file, then please consider
-      translating calendar-en.js and send the translation back to me so that
-      I include it in the official distribution.</p>
-
-    <h3>Bug status</h3>
-
-    <p>Check <a
-        href="http://sourceforge.net/tracker/?atid=544285&group_id=75569&func=browse">SourceForge</a>,
-      I didn't keep track.  However, there were a lot of bugfixes.</p>
-
-    <h2>0.9.3</h2>    
-
-    <h3>New stuff</h3>
-
-    <ul>
-
-      <li>Opera&nbsp;7 compatibility &mdash; keyboard navigation is
-        still not available; text selection can't be disabled, leading to an
-        ugly effect when walking through the month/year menus.</li>
-
-      <li>Ability to align the calendar relative to the input field (or any
-        other element).  Vertical: top, center, bottom.  Horizontal: left,
-        center, right.  This is established as a new parameter for
-        <tt>showAtElement</tt>.</li>
-
-      <li>Added <tt>dateClicked</tt> property (boolean).  This can be
-        inspected in the "onSelect" handler to determine if a date was
-        really clicked or the user only changed month/year using the menus.
-        You <em>need</em> to check this for "single-click" calendars and
-        only close/hide the calendar if it's <tt>true</tt>.</li>
-
-      <li>Full documentation in <a href="doc/html/reference.html">HTML</a>
-        and <a href="doc/reference.pdf">PDF</a> format is now available in the
-        distribution archive.</li>
-
-      <li>New language definition files: HU, HR, PT, ZH.  Thanks those who
-        submitted!</li>
-
-    </ul>
-
-    <h3>Bug status</h3>
-
-    <p>This covers only those bugs that have been reported <a
-        href="http://sourceforge.net/projects/jscalendar" target="_blank"
-        title="Project page at SourceForge">at SourceForge</a>.</p>
-
-    <ol>
-
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=703238&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#703,238</tt></a> &mdash; fixed</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=703814&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#703,814</tt></a> &mdash; fixed</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=716777&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#716,777</tt></a> &mdash; closed (was fixed already in 0.9.2-1)</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=723335&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#723,335</tt></a> &mdash; fixed</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=715122&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#715,122</tt></a> &mdash; feature request; implemented.</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=721206&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#721,206</tt></a> &mdash; fixed (added "refresh()" function)</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=721833&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#721,833</tt></a> &mdash; fixed (bug concerning the "yy" format
-        parsing)</li>
-      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=721833&group_id=75569&atid=544285" target="_blank"
-            title="Go to bug description at sourceforge"><tt>#721,833</tt></a> &mdash; won't fix (we won't set the time to
-        midnight; time might actually be useful when we implement support
-        for time selection).
-
-    </ol>
-
-    <hr />
-    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
-<!-- Created: Tue Jul  8 17:29:37 EEST 2003 -->
-<!-- hhmts start -->
-Last modified on Wed Oct 29 02:37:07 2003
-<!-- hhmts end -->
-<!-- doc-lang: English -->
-  </body>
-</html>
-
-

Copied: plog/trunk/js/jscalendar/release-notes.html (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/release-notes.html)
===================================================================
--- plog/trunk/js/jscalendar/release-notes.html	                        (rev 0)
+++ plog/trunk/js/jscalendar/release-notes.html	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,435 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
+<html>
+  <head>
+    <title>jscalendar release notes</title>
+
+    <style type="text/css">
+      h1 { border-bottom: 1px solid #000; }
+      h2 { border-bottom: 1px solid #444; }
+      ul li { margin-top: 0.5em; margin-bottom: 0.5em; }
+    </style>
+  </head>
+
+  <body>
+    <div style="float: right; border: 1px solid #000; background: #fff; padding: 10px; ">
+      <a href="http://www.dynarch.com/projects/calendar/">The Coolest DHTML Calendar</a><br />
+      © <a href="http://www.dynarch.com/">Dynarch.com</a> 2002 and later.
+    </div>
+    <h1>jscalendar release notes</h1>
+
+    <p>This release compiled at Monday,  7 Mar 2005 (19:06).</p>
+
+    <h2>1.0</h2>
+
+    <ul>
+
+      <li>
+        Added support for multiple dates selection.  In this mode the
+        calendar will allow the user to select more than one date, and
+        will maintain an array of selected dates that can be
+        investigated from your custom handlers.  Sample in <a
+        href="multiple-dates.html">multiple-dates.html</a>.
+      </li>
+
+      <li>
+        Support for “day info”.  Using this feature you can display
+        custom information for certain dates.  Sample in <a
+        href="dayinfo.html">dayinfo.html</a>.  Note that if the text
+        is really big the calendar layout might appear somehow broken;
+        this is something that should be easy to fix in the CSS file.
+      </li>
+
+      <li>
+        Clicking on “Today” will now close the calendar if the current
+        date is already selected.
+      </li>
+
+      <li>
+        The “first day of week” setting can now be defined in the
+        language file--after all, it is locale-specific.  The new
+        parameter is “Calendar._FD”.  Language files should be
+        updated, but the calendar will not complain nor fail to
+        function if the parameter is not present.
+      </li>
+
+      <li>
+        Some fixes to make the thing work in Safari.  It now seems to
+        be properly supported, please let me know if you encounter any
+        problems.
+      </li>
+
+      <li>
+        New skin: Aqua theme, appropriate for MacOSX fan sites :-)
+        This theme is located in “skins/aqua/theme.css” (in the
+        future, all themes will go to this directory).
+      </li>
+
+      <li>
+        <b>Bug fixes.</b>
+        <ul>
+          <li>
+            Keyboard operation now functions normally when the
+            calendar is displaying days from adjacent months; it might
+            even work correctly for months containing disabled dates
+            :).  This fix was originally developed under contract for
+            <a
+            href="http://www.zapatec.com/website/main/products/prod1/">The
+            Zapatec Calendar</a>.  Zapatec kindly allowed us to
+            include the bugfixes back in the open source calendar.
+          </li>
+          <li>
+            Fixed the time selection bug: the previous version would
+            reset the time to current time when a new date was
+            clicked.
+          </li>
+          <li>
+            Parsing hours like "12:XX pm" would wrongfully replace
+            "pm" with "am"--fixed.
+          </li>
+          <li>
+            Fixed critical bugs in parseDate function that would
+            initialize the calendar with 'NaN' values in all cells if
+            the string to be parsed is not a valid date.
+          </li>
+          <li>
+            The golbal variable that we are using was renamed to
+            “_dynarch_popupCalendar” to minimize the risk of name
+            clashes.  It's still difficult to get rid of it.
+          </li>
+          <li>
+            Added z-index property to drop-down menus style.
+          </li>
+          <li>
+            The calendar will update an input field even in flat mode,
+            if an input field was passed.  Also, the “showOthers”
+            parameter will be effective in both popup and flat mode.
+          </li>
+          <li>
+            Others, probably.
+          </li>
+        </ul>
+      </li>
+
+      <li>
+        Documentation &amp; sample files updated.
+      </li>
+
+    </ul>
+
+    <h2>0.9.6</h2>
+
+    <ul>
+
+      <li>
+        "Smart" (TM :-) positioning algorithm.  The new algorithm will
+        try to keep the calendar in the browser view, which is helpful
+        in situations when the input field is near the bottom or the
+        right edge.  This code is only tested with IE and Mozilla, but
+        it should work with other browsers too.  Many thanks to <a
+        href="http://www.ex3.com">Sunny Chowdhury</a> for sponsoring
+        this feature!
+      </li>
+
+      <li>
+        Support for IE5/Win is back.  I also want to thank Janusz
+        Piwowarski for keeping his eye on the CVS ;-) He reviewed my
+        IE5-related changes and sent me a much cleaner patch.
+      </li>
+
+      <li>
+        The calendar will now allow any day of week to be "the first
+        day of week".  This was requested long time ago, by someone
+        whose name I forgot (sorry).  The reason was that in certain
+        countries weeks start on Saturday.  So I thought that instead
+        of having a "mondayFirst" and a "saturdayFirst" parameter,
+        :-), it's better to have a "firstDayOfWeek" parameter; now
+        it's present and its meaning is: "0 for Sunday", "1 for
+        Monday", "2 for Tuesday", etc.  The equivalent parameter for
+        Calendar.setup is "firstDay".  The end user can also change
+        it very easy: click on the day name in the calendar display.
+      </li>
+
+      <li>
+        The above feature triggered one <b>important change</b>: the
+        notion of "weekend" is now defined in the language file.
+        Added parameters:
+
+        <pre>
+          Calendar._TT["WEEKEND"] = "0,6";
+          Calendar._TT["DAY_FIRST"] = "Display %s first";</pre>
+
+        "WEEKEND" specifies a string with comma-separated numbers from
+        0 to 7; they define what days are marked as "weekend".  5 and
+        6 mean, of course, "Sunday" and "Saturday".  Day first is the
+        tooltip displayed when a day name is hovered; "%s" will get
+        replaced with the day name.  Updated languages are "en" and
+        "ro", which I maintain.  Please note that languages wich are
+        not updated <b>will not work</b>.  If yours is one of them,
+        please consider fixing it and sending me the fix so that I can
+        include it in the distro.
+      </li>
+
+      <li>
+        The calendar can now display days from the months adjacent to
+        the currently displayed one.  This is optional, of course, and
+        the parameter name is "showsOtherMonths" (or "showOthers" in
+        Calendar.setup).  All theme files were updated.
+      </li>
+
+      <li>
+        Displays "Time:" near the time selector, only if defined in
+        the language file.
+      </li>
+
+      <li>
+        Some bugs fixed in the date parsing code (which has also been
+        rewritten a little bit cleaner).
+      </li>
+
+      <li>
+        Calendar.setup will now configure the calendar to trigger the
+        input fields' "onchange" event, if specified, when a date is
+        selected.
+      </li>
+
+      <li>
+        New parameter in Calendar.setup: "cache" (<b>defaults to
+        false</b>).  If set to true then the popup calendar object
+        will be "cached", meaning, it will be created only once, no
+        matter how many input fields are there in the page.  Sometimes
+        this is not desirable, which is why I've added this
+        parameter.  Please note that it defaults to "false" (thus the
+        default behavior has changed).
+      </li>
+
+      <li>
+        Added a simple PHP wrapper.  It provides code which loads all
+        the required scripts and theme file, and one function which
+        creates and configures an input field for date input.  It
+        takes care of creating and assigning unique ID-s for the
+        calendar fields and it also creates the "Calendar.setup" code.
+        Functions to create more specialized fields can be added very
+        easily.  This feature was requested by the FreeMED.org project
+        (thanks for donating!).
+      </li>
+
+    </ul>
+
+    <p>Wow, there were quite some changes :-D  Enjoy it!</p>
+
+    <h2>0.9.5</h2>
+
+    <p>
+      This release's primary goal is to fix a wrong license statement which
+      can be found in some files from 0.9.4.  For instance in README or
+      calendar.js, the statement was that the code is distributed under the
+      GNU GPL; that's because I had plans to change the license, then
+      changed my mind but unfortunately I committed files so.  I am sorry
+      for this inconvenience, please use the latest (0.9.5) release which is
+      fully covered by LGPL.
+    </p>
+
+    <p>Other changes:</p>
+
+    <ul>
+
+      <li>
+        <b>Fixed</b> an annoying bug that prevented the calendar to display
+	correctly when it was configured for an input field inside a
+	<b>scrolling area</b>.  <b>Many thanks</b> to Ian Barrack (<a
+	href="http://www.simban.com">Simban.com</a>) who pointed it up and
+	donated quite some money for the Calendar project!
+      </li>
+
+      <li>
+        All examples use UTF-8 now; the translations may not be all
+        up-to-date, but I <strong>strongly</strong> suggest everyone to use
+        UTF-8; other encodings are a plain mess.  So far I know for sure
+        that Romanian translation will work with UTF-8 and <em>not
+        anymore</em> with ISO-8859-2.  Other translations are probably
+        usable under UTF-8, but if your preferred language isn't... ;-)
+        please make it and send it to me for inclusion.
+      </li>
+
+      <li>
+        Fixed small bug in the documentation (one footnote didn't appear
+        where it should have).
+      </li>
+
+      <li>
+        Updated translations: DE, ES, HU, IT, RO.  Thanks to everyone who
+        sent translations!
+      </li>
+
+    </ul>
+
+    <h2>0.9.4</h2>
+
+    <h3>New stuff</h3>
+
+    <ul>
+
+      <li>Supports time selection.  Yes. ;-) This work has been largely
+        sponsored by <strong>Himanshukumar Shah</strong> (thank you!).  See
+        the docs and example files for details on how to setup.</li>
+
+      <li>Easy to link 2 or more fields by using the new
+        <code>onUpdate</code> parameter of <code>Calendar.setup</code>.  This
+        is useful, say, to automatically set a value in a second field based
+        on the value selected in the first field.  See the documentation and
+        first sample in <a href="simple-1.html">simple-1.html</a>.</li>
+
+      <li>Other <code>Calendar.setup</code> low-level parameters, for those
+        wanting to have the complete control: <code>onSelect</code> and
+        <code>onClose</code>.  The handlers are called when something is
+        selected in the calendar or when the calendar is closed.</li>
+
+      <li>The translation files can optionally include the short day names
+        and the short month names.  That's because in some languages, like
+        German, the short form is not the first 3 letters of the entire name
+        but only the first 2.  Also in other languages short names can't be
+        as easily derived from the full name by just calling substr, so this
+        patch solves the problem.</li>
+
+      <li>Implemented a nice way to make some dates "special" (look
+        different).  Specifically, the <code>setDisabledHandler</code> method
+        was replaced with the more general <code>setDateStatusHandler</code>
+        method (the old one is still available for backwards compatibility but
+        <em>will</em> be removed).  More details about this in the
+        documentation.  Also see <a href="simple-3.html">simple-3.html</a>
+        for a live sample.</li>
+
+      <li>Date parsing and formatting engine is now rewritten and supports a
+        subset of <code>strftime</code> format specifiers from ANSI C.  This
+        makes it possible to use dates like "YYYYMMDD" (the corresponding
+        format for this would be "%Y%m%d").  Details in the documentation.
+        <b>Please note that the new engine is not compatibile with older
+          calendar releases!</b></li>
+
+      <li>Along with the new date parser I workarounded an unpleasant crash
+        that occurred in IE when certain accented characters appeared in the
+        texts.  I think German was one of the language with such problems, and
+        the workaround was to use the letter without an accent.  Well, now you
+        can translate to whatever you want.</li>
+
+      <li>"Fixes" (I mean, "horrible workarounds") for Konqueror (and
+        hopefully Safari).  Unfortunately, this otherwise excellent browser
+        still has some bugs that keep the calendar from working
+        <em>exactly</em> as it should..  But they're going to be fixed,
+        right? ;-)</li>
+
+      <li>CSS themes got pretty much modified too so if you wrote your theme
+        you need to update it.  Aside for the time selector support, the CSS
+        themes contain a simple hack that makes the navigation buttons show
+        a little arrow in the lower-right corner which indicates that if one
+        holds the mouse a menu will appear.</li>
+
+    </ul>
+
+    <h3>Translation files</h3>
+
+    <p>The translation files need to be updated in order for the calendar to
+      work properly.  Currently the only updated files are calendar-en.js
+      (main file) and calendar-ro.js (well, yes, I am a Romanian ;-).</p>
+
+    <p>Specifically, they need the following:</p>
+
+    <ul>
+
+      <li>Correct date format, according with the new format specifiers
+        introduced in 0.9.4.  Details about the available format specifiers
+        in the documentation</li>
+
+      <li>Short day or month names, <em>if required</em>.  If they can be
+        derived by taking the first N letters of the full name then a simple
+        Calendar._SDN_len = N or Calendar._SMN_len = N will suffice.  If N
+        is 3 then nothing needs to be done as we take it for granted if no
+        other option is offered ;-)</li>
+
+      <li>We have some new texts that shows short usage information as well
+        as copyright information.</li>
+
+    </ul>
+
+    <p>If your favorite language is not there yet, or it is but not updated
+      according to the main calendar-en.js file, then please consider
+      translating calendar-en.js and send the translation back to me so that
+      I include it in the official distribution.</p>
+
+    <h3>Bug status</h3>
+
+    <p>Check <a
+        href="http://sourceforge.net/tracker/?atid=544285&group_id=75569&func=browse">SourceForge</a>,
+      I didn't keep track.  However, there were a lot of bugfixes.</p>
+
+    <h2>0.9.3</h2>    
+
+    <h3>New stuff</h3>
+
+    <ul>
+
+      <li>Opera&nbsp;7 compatibility &mdash; keyboard navigation is
+        still not available; text selection can't be disabled, leading to an
+        ugly effect when walking through the month/year menus.</li>
+
+      <li>Ability to align the calendar relative to the input field (or any
+        other element).  Vertical: top, center, bottom.  Horizontal: left,
+        center, right.  This is established as a new parameter for
+        <tt>showAtElement</tt>.</li>
+
+      <li>Added <tt>dateClicked</tt> property (boolean).  This can be
+        inspected in the "onSelect" handler to determine if a date was
+        really clicked or the user only changed month/year using the menus.
+        You <em>need</em> to check this for "single-click" calendars and
+        only close/hide the calendar if it's <tt>true</tt>.</li>
+
+      <li>Full documentation in <a href="doc/html/reference.html">HTML</a>
+        and <a href="doc/reference.pdf">PDF</a> format is now available in the
+        distribution archive.</li>
+
+      <li>New language definition files: HU, HR, PT, ZH.  Thanks those who
+        submitted!</li>
+
+    </ul>
+
+    <h3>Bug status</h3>
+
+    <p>This covers only those bugs that have been reported <a
+        href="http://sourceforge.net/projects/jscalendar" target="_blank"
+        title="Project page at SourceForge">at SourceForge</a>.</p>
+
+    <ol>
+
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=703238&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#703,238</tt></a> &mdash; fixed</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=703814&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#703,814</tt></a> &mdash; fixed</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=716777&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#716,777</tt></a> &mdash; closed (was fixed already in 0.9.2-1)</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=723335&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#723,335</tt></a> &mdash; fixed</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=715122&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#715,122</tt></a> &mdash; feature request; implemented.</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=721206&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#721,206</tt></a> &mdash; fixed (added "refresh()" function)</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=721833&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#721,833</tt></a> &mdash; fixed (bug concerning the "yy" format
+        parsing)</li>
+      <li><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=721833&group_id=75569&atid=544285" target="_blank"
+            title="Go to bug description at sourceforge"><tt>#721,833</tt></a> &mdash; won't fix (we won't set the time to
+        midnight; time might actually be useful when we implement support
+        for time selection).
+
+    </ol>
+
+    <hr />
+    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
+<!-- Created: Tue Jul  8 17:29:37 EEST 2003 -->
+<!-- hhmts start -->
+Last modified on Wed Oct 29 02:37:07 2003
+<!-- hhmts end -->
+<!-- doc-lang: English -->
+  </body>
+</html>
+
+

Copied: plog/trunk/js/jscalendar/skins (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins)

Copied: plog/trunk/js/jscalendar/skins/aqua (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua)

Deleted: plog/trunk/js/jscalendar/skins/aqua/active-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/active-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/active-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/dark-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/dark-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/dark-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/hover-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/hover-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/hover-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/menuarrow.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/menuarrow.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/menuarrow.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/normal-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/normal-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/normal-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/rowhover-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/rowhover-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/rowhover-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/status-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/status-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/status-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/theme.css
===================================================================
--- plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/theme.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/jscalendar/skins/aqua/theme.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,236 +0,0 @@
-/* Distributed as part of The Coolest DHTML Calendar
-   Author: Mihai Bazon, www.bazon.net/mishoo
-   Copyright Dynarch.com 2005, www.dynarch.com
-*/
-
-/* The main calendar widget.  DIV containing a table. */
-
-div.calendar { position: relative; }
-
-.calendar, .calendar table {
-  border: 1px solid #bdb2bf;
-  font-size: 11px;
-  color: #000;
-  cursor: default;
-  background: url("normal-bg.gif");
-  font-family: "trebuchet ms",verdana,tahoma,sans-serif;
-}
-
-.calendar {
-  border-color: #797979;
-}
-
-/* Header part -- contains navigation buttons and day names. */
-
-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
-  text-align: center;    /* They are the navigation buttons */
-  padding: 2px;          /* Make the buttons seem like they're pressing */
-  background: url("title-bg.gif") repeat-x 0 100%; color: #000;
-  font-weight: bold;
-}
-
-.calendar .nav {
-  font-family: verdana,tahoma,sans-serif;
-}
-
-.calendar .nav div {
-  background: transparent url("menuarrow.gif") no-repeat 100% 100%;
-}
-
-.calendar thead tr { background: url("title-bg.gif") repeat-x 0 100%; color: #000; }
-
-.calendar thead .title { /* This holds the current "month, year" */
-  font-weight: bold;      /* Pressing it will take you to the current date */
-  text-align: center;
-  padding: 2px;
-  background: url("title-bg.gif") repeat-x 0 100%; color: #000;
-}
-
-.calendar thead .headrow { /* Row <TR> containing navigation buttons */
-}
-
-.calendar thead .name { /* Cells <TD> containing the day names */
-  border-bottom: 1px solid #797979;
-  padding: 2px;
-  text-align: center;
-  color: #000;
-}
-
-.calendar thead .weekend { /* How a weekend day name shows in header */
-  color: #c44;
-}
-
-.calendar thead .hilite { /* How do the buttons in header appear when hover */
-  background: url("hover-bg.gif");
-  border-bottom: 1px solid #797979;
-  padding: 2px 2px 1px 2px;
-}
-
-.calendar thead .active { /* Active (pressed) buttons in header */
-  background: url("active-bg.gif"); color: #fff;
-  padding: 3px 1px 0px 3px;
-  border-bottom: 1px solid #797979;
-}
-
-.calendar thead .daynames { /* Row <TR> containing the day names */
-  background: url("dark-bg.gif");
-}
-
-/* The body part -- contains all the days in month. */
-
-.calendar tbody .day { /* Cells <TD> containing month days dates */
-  font-family: verdana,tahoma,sans-serif;
-  width: 2em;
-  color: #000;
-  text-align: right;
-  padding: 2px 4px 2px 2px;
-}
-.calendar tbody .day.othermonth {
-  font-size: 80%;
-  color: #999;
-}
-.calendar tbody .day.othermonth.oweekend {
-  color: #f99;
-}
-
-.calendar table .wn {
-  padding: 2px 3px 2px 2px;
-  border-right: 1px solid #797979;
-  background: url("dark-bg.gif");
-}
-
-.calendar tbody .rowhilite td,
-.calendar tbody .rowhilite td.wn {
-  background: url("rowhover-bg.gif");
-}
-
-.calendar tbody td.today { font-weight: bold; /* background: url("today-bg.gif") no-repeat 70% 50%; */ }
-
-.calendar tbody td.hilite { /* Hovered cells <TD> */
-  background: url("hover-bg.gif");
-  padding: 1px 3px 1px 1px;
-  border: 1px solid #bbb;
-}
-
-.calendar tbody td.active { /* Active (pressed) cells <TD> */
-  padding: 2px 2px 0px 2px;
-}
-
-.calendar tbody td.weekend { /* Cells showing weekend days */
-  color: #c44;
-}
-
-.calendar tbody td.selected { /* Cell showing selected date */
-  font-weight: bold;
-  border: 1px solid #797979;
-  padding: 1px 3px 1px 1px;
-  background: url("active-bg.gif"); color: #fff;
-}
-
-.calendar tbody .disabled { color: #999; }
-
-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
-  visibility: hidden;
-}
-
-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
-  display: none;
-}
-
-/* The footer part -- status bar and "Close" button */
-
-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
-  text-align: center;
-  background: #565;
-  color: #fff;
-}
-
-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
-  padding: 2px;
-  background: url("status-bg.gif") repeat-x 0 0; color: #000;
-}
-
-.calendar tfoot .hilite { /* Hover style for buttons in footer */
-  background: #afa;
-  border: 1px solid #084;
-  color: #000;
-  padding: 1px;
-}
-
-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
-  background: #7c7;
-  padding: 2px 0px 0px 2px;
-}
-
-/* Combo boxes (menus that display months/years for direct selection) */
-
-.calendar .combo {
-  position: absolute;
-  display: none;
-  top: 0px;
-  left: 0px;
-  width: 4em;
-  cursor: default;
-  border-width: 0 1px 1px 1px;
-  border-style: solid;
-  border-color: #797979;
-  background: url("normal-bg.gif"); color: #000;
-  z-index: 100;
-  font-size: 90%;
-}
-
-.calendar .combo .label,
-.calendar .combo .label-IEfix {
-  text-align: center;
-  padding: 1px;
-}
-
-.calendar .combo .label-IEfix {
-  width: 4em;
-}
-
-.calendar .combo .hilite {
-  background: url("hover-bg.gif"); color: #000;
-}
-
-.calendar .combo .active {
-  background: url("active-bg.gif"); color: #fff;
-  font-weight: bold;
-}
-
-.calendar td.time {
-  border-top: 1px solid #797979;
-  padding: 1px 0px;
-  text-align: center;
-  background: url("dark-bg.gif");
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute,
-.calendar td.time .ampm {
-  padding: 0px 5px 0px 6px;
-  font-weight: bold;
-  background: url("normal-bg.gif"); color: #000;
-}
-
-.calendar td.time .hour,
-.calendar td.time .minute {
-  font-family: monospace;
-}
-
-.calendar td.time .ampm {
-  text-align: center;
-}
-
-.calendar td.time .colon {
-  padding: 0px 2px 0px 3px;
-  font-weight: bold;
-}
-
-.calendar td.time span.hilite {
-  background: url("hover-bg.gif"); color: #000;
-}
-
-.calendar td.time span.active {
-  background: url("active-bg.gif"); color: #fff;
-}

Copied: plog/trunk/js/jscalendar/skins/aqua/theme.css (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/theme.css)
===================================================================
--- plog/trunk/js/jscalendar/skins/aqua/theme.css	                        (rev 0)
+++ plog/trunk/js/jscalendar/skins/aqua/theme.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,236 @@
+/* Distributed as part of The Coolest DHTML Calendar
+   Author: Mihai Bazon, www.bazon.net/mishoo
+   Copyright Dynarch.com 2005, www.dynarch.com
+*/
+
+/* The main calendar widget.  DIV containing a table. */
+
+div.calendar { position: relative; }
+
+.calendar, .calendar table {
+  border: 1px solid #bdb2bf;
+  font-size: 11px;
+  color: #000;
+  cursor: default;
+  background: url("normal-bg.gif");
+  font-family: "trebuchet ms",verdana,tahoma,sans-serif;
+}
+
+.calendar {
+  border-color: #797979;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;    /* They are the navigation buttons */
+  padding: 2px;          /* Make the buttons seem like they're pressing */
+  background: url("title-bg.gif") repeat-x 0 100%; color: #000;
+  font-weight: bold;
+}
+
+.calendar .nav {
+  font-family: verdana,tahoma,sans-serif;
+}
+
+.calendar .nav div {
+  background: transparent url("menuarrow.gif") no-repeat 100% 100%;
+}
+
+.calendar thead tr { background: url("title-bg.gif") repeat-x 0 100%; color: #000; }
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;      /* Pressing it will take you to the current date */
+  text-align: center;
+  padding: 2px;
+  background: url("title-bg.gif") repeat-x 0 100%; color: #000;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid #797979;
+  padding: 2px;
+  text-align: center;
+  color: #000;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #c44;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  background: url("hover-bg.gif");
+  border-bottom: 1px solid #797979;
+  padding: 2px 2px 1px 2px;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  background: url("active-bg.gif"); color: #fff;
+  padding: 3px 1px 0px 3px;
+  border-bottom: 1px solid #797979;
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+  background: url("dark-bg.gif");
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  font-family: verdana,tahoma,sans-serif;
+  width: 2em;
+  color: #000;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #999;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #f99;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid #797979;
+  background: url("dark-bg.gif");
+}
+
+.calendar tbody .rowhilite td,
+.calendar tbody .rowhilite td.wn {
+  background: url("rowhover-bg.gif");
+}
+
+.calendar tbody td.today { font-weight: bold; /* background: url("today-bg.gif") no-repeat 70% 50%; */ }
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  background: url("hover-bg.gif");
+  padding: 1px 3px 1px 1px;
+  border: 1px solid #bbb;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #c44;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  border: 1px solid #797979;
+  padding: 1px 3px 1px 1px;
+  background: url("active-bg.gif"); color: #fff;
+}
+
+.calendar tbody .disabled { color: #999; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+  text-align: center;
+  background: #565;
+  color: #fff;
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  padding: 2px;
+  background: url("status-bg.gif") repeat-x 0 0; color: #000;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  background: #afa;
+  border: 1px solid #084;
+  color: #000;
+  padding: 1px;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  background: #7c7;
+  padding: 2px 0px 0px 2px;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 4em;
+  cursor: default;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  border-color: #797979;
+  background: url("normal-bg.gif"); color: #000;
+  z-index: 100;
+  font-size: 90%;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .hilite {
+  background: url("hover-bg.gif"); color: #000;
+}
+
+.calendar .combo .active {
+  background: url("active-bg.gif"); color: #fff;
+  font-weight: bold;
+}
+
+.calendar td.time {
+  border-top: 1px solid #797979;
+  padding: 1px 0px;
+  text-align: center;
+  background: url("dark-bg.gif");
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 5px 0px 6px;
+  font-weight: bold;
+  background: url("normal-bg.gif"); color: #000;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute {
+  font-family: monospace;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  background: url("hover-bg.gif"); color: #000;
+}
+
+.calendar td.time span.active {
+  background: url("active-bg.gif"); color: #fff;
+}

Deleted: plog/trunk/js/jscalendar/skins/aqua/title-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/title-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/title-bg.gif)
===================================================================
(Binary files differ)

Deleted: plog/trunk/js/jscalendar/skins/aqua/today-bg.gif
===================================================================
(Binary files differ)

Copied: plog/trunk/js/jscalendar/skins/aqua/today-bg.gif (from rev 5487, plog/branches/lifetype-1.2/js/jscalendar/skins/aqua/today-bg.gif)
===================================================================
(Binary files differ)

Copied: plog/trunk/js/tinymce/plugins/insertaudio (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio)

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/audioinput.html	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,38 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{$lang_insertaudio_desc}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="functions.js"></script>	
-	<base target="_self" />
-</head>
-<body style="display: none">
-	<form name="audio" id="audio" method="post" action="#">
-	<div class="tabs">
-	  <ul>
-	   <li id="general_tab" class="current"><span>{$lang_insertaudio_desc}</span></li>
-	  </ul>
-	</div>
-	<div class="panel_wrapper">
-	  <div id="general_panel" class="panel_current">
-	     <legend>{$lang_insertaudio_panellegend}</legend>	     	     
-	     <table border="0" cellpadding="4" cellspacing="0">
-	      <tr>
-	       <td nowrap="nowrap">{$lang_insertaudio_url}</td>
-	       <td><input type="text" id="url" name="url" value="" style="width:300px" /></td>
-	      </tr>		
-		 </table>		    
-		</div>
-		</div>
-		<div class="mceActionPanel">
-		  <div style="float:left">		
-			<input type="button" name="insert" value="{$lang_insert}" onClick="insertAudioCode()" id="insert" />
-		  </div>
-		  <div style="float:right">
-		    <input type="button" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" id="cancel" />
-		  </div>
-		</div>
-	 </div>
-	</div>				
-	 </form>
-</body>
-</html>

Copied: plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/audioinput.html)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/audioinput.html	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,38 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_insertaudio_desc}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="functions.js"></script>	
+	<base target="_self" />
+</head>
+<body style="display: none">
+	<form name="audio" id="audio" method="post" action="#">
+	<div class="tabs">
+	  <ul>
+	   <li id="general_tab" class="current"><span>{$lang_insertaudio_desc}</span></li>
+	  </ul>
+	</div>
+	<div class="panel_wrapper">
+	  <div id="general_panel" class="panel_current">
+	     <legend>{$lang_insertaudio_panellegend}</legend>	     	     
+	     <table border="0" cellpadding="4" cellspacing="0">
+	      <tr>
+	       <td nowrap="nowrap">{$lang_insertaudio_url}</td>
+	       <td><input type="text" id="url" name="url" value="" style="width:300px" /></td>
+	      </tr>		
+		 </table>		    
+		</div>
+		</div>
+		<div class="mceActionPanel">
+		  <div style="float:left">		
+			<input type="button" name="insert" value="{$lang_insert}" onClick="insertAudioCode()" id="insert" />
+		  </div>
+		  <div style="float:right">
+		    <input type="button" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" id="cancel" />
+		  </div>
+		</div>
+	 </div>
+	</div>				
+	 </form>
+</body>
+</html>

Copied: plog/trunk/js/tinymce/plugins/insertaudio/css (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/css)

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/css/content.css
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/css/content.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/css/content.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,7 +0,0 @@
-.ltFlashPlayer {
-	background-image: url('../images/player.png');	
-	border: 1px dotted #cc0000;
-	background-position: center;
-	background-repeat: no-repeat;
-	background-color: #ffffcc;
-}
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertaudio/css/content.css (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/css/content.css)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/css/content.css	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/css/content.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,7 @@
+.ltFlashPlayer {
+	background-image: url('../images/player.png');	
+	border: 1px dotted #cc0000;
+	background-position: center;
+	background-repeat: no-repeat;
+	background-color: #ffffcc;
+}
\ No newline at end of file

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/css/flash.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,11 +0,0 @@
-.panel_wrapper div.current {
-	height: 100px;
-}
-
-#width, #height {
-	width: 50px;
-}
-
-#file {
-	width: 250px;
-}

Copied: plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/css/flash.css)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/css/flash.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,11 @@
+.panel_wrapper div.current {
+	height: 100px;
+}
+
+#width, #height {
+	width: 50px;
+}
+
+#file {
+	width: 250px;
+}

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/editor_plugin.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,251 +0,0 @@
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('insertaudio', 'en,fr'); // <- Add a comma separated list of all supported languages
-
-// Singleton class
-var TinyMCE_insertaudioPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'insertaudio plugin',
-			author : 'Gabriel ROUSSEAU',
-			authorurl : 'http://grvg.free.fr',
-			infourl : 'http://grvg.free.fr',
-			version : "0.2"
-		};
-	},
-
-	initInstance : function(inst) {
-		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/insertaudio/css/content.css");	
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "insertaudio":
-				return tinyMCE.getButtonHTML(cn, 'lang_insertaudio_desc', '{$pluginurl}/images/player.png', 'mceinsertaudio', true);
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes a specific command, this function handles plugin commands.
-	 *
-	 * @param {string} editor_id TinyMCE editor instance id that issued the command.
-	 * @param {HTMLElement} element Body or root element for the editor instance.
-	 * @param {string} command Command name to be executed.
-	 * @param {string} user_interface True/false if a user interface should be presented.
-	 * @param {mixed} value Custom value argument, can be anything.
-	 * @return true/false if the command was executed by this plugin or not.
-	 * @type
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands		
-		switch (command) {
-			// Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser.
-			case "mceinsertaudio":
-				// Show UI/Popup
-				if (user_interface) {
-					// Open a popup window and send in some custom data in a window argument
-					var insertaudio = new Array();
-
-					insertaudio['file'] = '../../plugins/insertaudio/audioinput.html'; // Relative to theme
-					insertaudio['width'] = 500;
-					insertaudio['height'] = 120;
-
-					tinyMCE.openWindow(insertaudio, {editor_id : editor_id, resizable : "no", scrollbars : "no", inline : "yes"});
-				}
-				return true;
-		}
-
-	   // Pass to next handler in chain
-	   return false;
-	},
-
-	cleanup : function(type, content) {
-		switch (type) {
-			case "insert_to_editor_dom":
-				// Force relative/absolute
-				if (tinyMCE.getParam('convert_urls')) {
-					var imgs = content.getElementsByTagName("img");
-					for (var i=0; i<imgs.length; i++) {
-						//if (tinyMCE.getAttrib(imgs[i], "class")== "ltVideoYouTube") {
-						if (tinyMCE.getAttrib(imgs[i], "class").substr(0,6) == "ltFlashPlayer") {							
-							var src = tinyMCE.getAttrib(imgs[i], "alt");
-
-							if (tinyMCE.getParam('convert_urls'))
-								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
-
-							imgs[i].setAttribute('alt', src);
-							imgs[i].setAttribute('title', src);
-						}
-					}
-				}
-				break;
-
-			case "get_from_editor_dom":
-				var imgs = content.getElementsByTagName("img");
-				for (var i=0; i<imgs.length; i++) {
-					if (tinyMCE.getAttrib(imgs[i], "class").substr(0,6) == "ltAudio") {
-						var src = tinyMCE.getAttrib(imgs[i], "alt");
-
-						if (tinyMCE.getParam('convert_urls'))
-							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
-
-						imgs[i].setAttribute('alt', src);
-						imgs[i].setAttribute('title', src);
-					}
-				}
-				break;
-
-			case "insert_to_editor":
-				var startPos = 0;
-				var embedList = new Array();			
-
-				// Fix the embed and object elements
-				content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
-				content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');			
-				
-				// Parse all object tags and replace them with images from the embed data
-				var index = 0;
-				while ((startPos = content.indexOf('<object', startPos)) != -1) {
-
-					// Find end of object
-					endPos = content.indexOf('</object>', startPos);
-					endPos += 9;
-					
-					objectTag = content.substring(startPos,endPos);
-					attribs = TinyMCE_insertaudioPlugin._parseAttributes( objectTag );
-					
-					var cssClass = "";					
-					if( attribs["data"] == undefined )
-					{
-						startPos++;
-						continue;
-					} else {
-						cssClass = "ltFlashPlayer";
-					}
-					
-					// Insert image
-					var contentAfter = content.substring(endPos);
-					content = content.substring(0, startPos);
-					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
-					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["data"] + '"';
-					content += ' alt="' + attribs["data"] + '" class="'+cssClass+'" />' + content.substring(endPos);
-					content += contentAfter;
-					index++;
-
-					startPos++;
-				}
-				
-				break;
-
-			case "get_from_editor":
-				// Parse all img tags and replace them with object+embed
-				var startPos = -1;
-
-				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
-					var endPos = content.indexOf('/>', startPos);
-					var attribs = TinyMCE_insertaudioPlugin._parseAttributes(content.substring(startPos + 4, endPos));
-
-					// Is not flash, skip it
-					if (attribs['class'] != "ltFlashPlayer")
-						continue;
-
-					type = attribs['class'];
-
-					endPos += 2;
-
-					var embedHTML = '';
-					
-					embedHTML = getAudioFlashHTML( attribs["title"] );
-
-					// Insert embed/object chunk
-					chunkBefore = content.substring(0, startPos);
-					chunkAfter = content.substring(endPos);
-					content = chunkBefore + embedHTML + chunkAfter;
-				}
-				break;
-		}
-
-		// Pass through to next handler in chain
-		return content;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node == null)
-			return;
-
-		do {
-			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('ltFlashPlayer') == 0) {
-				tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected');
-				return true;
-			}
-		} while ((node = node.parentNode));
-
-		tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal');
-
-		return true;
-	},
-
-	// Private plugin internal functions
-
-	_parseAttributes : function(attribute_string) {
-		var attributeName = "";
-		var attributeValue = "";
-		var withInName;
-		var withInValue;
-		var attributes = new Array();
-		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
-
-		if (attribute_string == null || attribute_string.length < 2)
-			return null;
-
-		withInName = withInValue = false;
-
-		for (var i=0; i<attribute_string.length; i++) {
-			var chr = attribute_string.charAt(i);
-
-			if ((chr == '"' || chr == "'") && !withInValue)
-				withInValue = true;
-			else if ((chr == '"' || chr == "'") && withInValue) {
-				withInValue = false;
-
-				var pos = attributeName.lastIndexOf(' ');
-				if (pos != -1)
-					attributeName = attributeName.substring(pos+1);
-
-				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
-
-				attributeName = "";
-				attributeValue = "";
-			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
-				withInName = true;
-
-			if (chr == '=' && withInName)
-				withInName = false;
-
-			if (withInName)
-				attributeName += chr;
-
-			if (withInValue)
-				attributeValue += chr;
-		}
-
-		return attributes;
-	}
-};
-
-function getAudioFlashHTML( url )
-{		
-	var baseUrl = TinyMCE.baseURL.substring(0, TinyMCE.baseURL.indexOf("/js/tinymce",0));
-		
-	var html =	'<object data="'+baseUrl+'/flash/mp3player/mp3player.swf" type="application/x-shockwave-flash" width="320" height="20" class="ltFlashPlayer">'+
-			'<param name="quality" value="best" />'+
-			'<param name="bgcolor" value="#FFFFFF" />'+
-			'<param name="movie" value="http://asaxweb.org/classes/flash/mp3player/mp3player.swf" />'+
-			'<param name="FlashVars" value="&amp;file='+url+'&amp;height=20&amp;width=320" />'+
-			'</object>';
-	
-	return( html );
-}
-
-tinyMCE.addPlugin("insertaudio", TinyMCE_insertaudioPlugin );
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/editor_plugin.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/editor_plugin.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,251 @@
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('insertaudio', 'en,fr'); // <- Add a comma separated list of all supported languages
+
+// Singleton class
+var TinyMCE_insertaudioPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'insertaudio plugin',
+			author : 'Gabriel ROUSSEAU',
+			authorurl : 'http://grvg.free.fr',
+			infourl : 'http://grvg.free.fr',
+			version : "0.2"
+		};
+	},
+
+	initInstance : function(inst) {
+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/insertaudio/css/content.css");	
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "insertaudio":
+				return tinyMCE.getButtonHTML(cn, 'lang_insertaudio_desc', '{$pluginurl}/images/player.png', 'mceinsertaudio', true);
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes a specific command, this function handles plugin commands.
+	 *
+	 * @param {string} editor_id TinyMCE editor instance id that issued the command.
+	 * @param {HTMLElement} element Body or root element for the editor instance.
+	 * @param {string} command Command name to be executed.
+	 * @param {string} user_interface True/false if a user interface should be presented.
+	 * @param {mixed} value Custom value argument, can be anything.
+	 * @return true/false if the command was executed by this plugin or not.
+	 * @type
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands		
+		switch (command) {
+			// Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser.
+			case "mceinsertaudio":
+				// Show UI/Popup
+				if (user_interface) {
+					// Open a popup window and send in some custom data in a window argument
+					var insertaudio = new Array();
+
+					insertaudio['file'] = '../../plugins/insertaudio/audioinput.html'; // Relative to theme
+					insertaudio['width'] = 500;
+					insertaudio['height'] = 120;
+
+					tinyMCE.openWindow(insertaudio, {editor_id : editor_id, resizable : "no", scrollbars : "no", inline : "yes"});
+				}
+				return true;
+		}
+
+	   // Pass to next handler in chain
+	   return false;
+	},
+
+	cleanup : function(type, content) {
+		switch (type) {
+			case "insert_to_editor_dom":
+				// Force relative/absolute
+				if (tinyMCE.getParam('convert_urls')) {
+					var imgs = content.getElementsByTagName("img");
+					for (var i=0; i<imgs.length; i++) {
+						//if (tinyMCE.getAttrib(imgs[i], "class")== "ltVideoYouTube") {
+						if (tinyMCE.getAttrib(imgs[i], "class").substr(0,6) == "ltFlashPlayer") {							
+							var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+							if (tinyMCE.getParam('convert_urls'))
+								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+							imgs[i].setAttribute('alt', src);
+							imgs[i].setAttribute('title', src);
+						}
+					}
+				}
+				break;
+
+			case "get_from_editor_dom":
+				var imgs = content.getElementsByTagName("img");
+				for (var i=0; i<imgs.length; i++) {
+					if (tinyMCE.getAttrib(imgs[i], "class").substr(0,6) == "ltAudio") {
+						var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+						if (tinyMCE.getParam('convert_urls'))
+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+						imgs[i].setAttribute('alt', src);
+						imgs[i].setAttribute('title', src);
+					}
+				}
+				break;
+
+			case "insert_to_editor":
+				var startPos = 0;
+				var embedList = new Array();			
+
+				// Fix the embed and object elements
+				content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
+				content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');			
+				
+				// Parse all object tags and replace them with images from the embed data
+				var index = 0;
+				while ((startPos = content.indexOf('<object', startPos)) != -1) {
+
+					// Find end of object
+					endPos = content.indexOf('</object>', startPos);
+					endPos += 9;
+					
+					objectTag = content.substring(startPos,endPos);
+					attribs = TinyMCE_insertaudioPlugin._parseAttributes( objectTag );
+					
+					var cssClass = "";					
+					if( attribs["data"] == undefined )
+					{
+						startPos++;
+						continue;
+					} else {
+						cssClass = "ltFlashPlayer";
+					}
+					
+					// Insert image
+					var contentAfter = content.substring(endPos);
+					content = content.substring(0, startPos);
+					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
+					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["data"] + '"';
+					content += ' alt="' + attribs["data"] + '" class="'+cssClass+'" />' + content.substring(endPos);
+					content += contentAfter;
+					index++;
+
+					startPos++;
+				}
+				
+				break;
+
+			case "get_from_editor":
+				// Parse all img tags and replace them with object+embed
+				var startPos = -1;
+
+				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
+					var endPos = content.indexOf('/>', startPos);
+					var attribs = TinyMCE_insertaudioPlugin._parseAttributes(content.substring(startPos + 4, endPos));
+
+					// Is not flash, skip it
+					if (attribs['class'] != "ltFlashPlayer")
+						continue;
+
+					type = attribs['class'];
+
+					endPos += 2;
+
+					var embedHTML = '';
+					
+					embedHTML = getAudioFlashHTML( attribs["title"] );
+
+					// Insert embed/object chunk
+					chunkBefore = content.substring(0, startPos);
+					chunkAfter = content.substring(endPos);
+					content = chunkBefore + embedHTML + chunkAfter;
+				}
+				break;
+		}
+
+		// Pass through to next handler in chain
+		return content;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		if (node == null)
+			return;
+
+		do {
+			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('ltFlashPlayer') == 0) {
+				tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected');
+				return true;
+			}
+		} while ((node = node.parentNode));
+
+		tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal');
+
+		return true;
+	},
+
+	// Private plugin internal functions
+
+	_parseAttributes : function(attribute_string) {
+		var attributeName = "";
+		var attributeValue = "";
+		var withInName;
+		var withInValue;
+		var attributes = new Array();
+		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
+
+		if (attribute_string == null || attribute_string.length < 2)
+			return null;
+
+		withInName = withInValue = false;
+
+		for (var i=0; i<attribute_string.length; i++) {
+			var chr = attribute_string.charAt(i);
+
+			if ((chr == '"' || chr == "'") && !withInValue)
+				withInValue = true;
+			else if ((chr == '"' || chr == "'") && withInValue) {
+				withInValue = false;
+
+				var pos = attributeName.lastIndexOf(' ');
+				if (pos != -1)
+					attributeName = attributeName.substring(pos+1);
+
+				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
+
+				attributeName = "";
+				attributeValue = "";
+			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
+				withInName = true;
+
+			if (chr == '=' && withInName)
+				withInName = false;
+
+			if (withInName)
+				attributeName += chr;
+
+			if (withInValue)
+				attributeValue += chr;
+		}
+
+		return attributes;
+	}
+};
+
+function getAudioFlashHTML( url )
+{		
+	var baseUrl = TinyMCE.baseURL.substring(0, TinyMCE.baseURL.indexOf("/js/tinymce",0));
+		
+	var html =	'<object data="'+baseUrl+'/flash/mp3player/mp3player.swf" type="application/x-shockwave-flash" width="320" height="20" class="ltFlashPlayer">'+
+			'<param name="quality" value="best" />'+
+			'<param name="bgcolor" value="#FFFFFF" />'+
+			'<param name="movie" value="http://asaxweb.org/classes/flash/mp3player/mp3player.swf" />'+
+			'<param name="FlashVars" value="&amp;file='+url+'&amp;height=20&amp;width=320" />'+
+			'</object>';
+	
+	return( html );
+}
+
+tinyMCE.addPlugin("insertaudio", TinyMCE_insertaudioPlugin );
\ No newline at end of file

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/functions.js
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/functions.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/functions.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,41 +0,0 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-}
-
-function isValidUrl( url )
-{
-	var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
-	return regexp.test(url);
-}
-
-function insertAudioCode()
-{
-	// get and check the URL
-	urlField = document.forms[0].url;
-	url = urlField.value;
-	if( url == "" || !isValidUrl( url )) {
-		window.alert( tinyMCE.getLang('lang_insertvideo_badurl', 0) );
-		return( false );
-	}
-
-	css="ltFlashPlayer";
-	width=320;
-	height=20;
-	
-	insertFlash( url, css, width, height );
-}
-
-function insertFlash( file, css, width, height ) {
-
-	var html      = '';
-
-	html += ''
-		+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
-		+ 'width="' + width + '" height="' + height + '" '
-		+ 'border="0" alt="' + file + '" title="' + file + '" class="'+css+'" />';
-
-	tinyMCEPopup.execCommand("mceInsertContent", true, html);
-	tinyMCE.selectedInstance.repaint();
-
-	tinyMCEPopup.close();
-}
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertaudio/functions.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/functions.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/functions.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/functions.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,41 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+}
+
+function isValidUrl( url )
+{
+	var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
+	return regexp.test(url);
+}
+
+function insertAudioCode()
+{
+	// get and check the URL
+	urlField = document.forms[0].url;
+	url = urlField.value;
+	if( url == "" || !isValidUrl( url )) {
+		window.alert( tinyMCE.getLang('lang_insertvideo_badurl', 0) );
+		return( false );
+	}
+
+	css="ltFlashPlayer";
+	width=320;
+	height=20;
+	
+	insertFlash( url, css, width, height );
+}
+
+function insertFlash( file, css, width, height ) {
+
+	var html      = '';
+
+	html += ''
+		+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
+		+ 'width="' + width + '" height="' + height + '" '
+		+ 'border="0" alt="' + file + '" title="' + file + '" class="'+css+'" />';
+
+	tinyMCEPopup.execCommand("mceInsertContent", true, html);
+	tinyMCE.selectedInstance.repaint();
+
+	tinyMCEPopup.close();
+}
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertaudio/images (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/images)

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/images/player.png
===================================================================
(Binary files differ)

Copied: plog/trunk/js/tinymce/plugins/insertaudio/images/player.png (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/images/player.png)
===================================================================
(Binary files differ)

Copied: plog/trunk/js/tinymce/plugins/insertaudio/langs (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/langs)

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/langs/en.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,8 +0,0 @@
-// UK lang variables
-
-tinyMCE.addToLang('',{
-lang_insertaudio_desc : 'Insert Audio',
-lang_insertaudio_panellegend : 'Please provide a link to an mp3 audio file.',
-lang_insertaudio_url : 'Audio URL:',
-lang_insertaudio_badurl : 'Invalid URL',
-});
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/langs/en.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/langs/en.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,8 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+lang_insertaudio_desc : 'Insert Audio',
+lang_insertaudio_panellegend : 'Please provide a link to an mp3 audio file.',
+lang_insertaudio_url : 'Audio URL:',
+lang_insertaudio_badurl : 'Invalid URL',
+});
\ No newline at end of file

Deleted: plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/langs/fr.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,8 +0,0 @@
-// FR lang variables
-
-tinyMCE.addToLang('',{
-lang_insertaudio_desc : 'Ins&eacute;rer audio',
-lang_insertaudio_panellegend : 'Veuillez indiquer un lien vers un fichier audio mp3.',
-lang_insertaudio_url : 'URL du fichier audio :',
-lang_insertaudio_badurl : 'L’URL indiquée n’est pas valide',
-});
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertaudio/langs/fr.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertaudio/langs/fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,8 @@
+// FR lang variables
+
+tinyMCE.addToLang('',{
+lang_insertaudio_desc : 'Ins&eacute;rer audio',
+lang_insertaudio_panellegend : 'Veuillez indiquer un lien vers un fichier audio mp3.',
+lang_insertaudio_url : 'URL du fichier audio :',
+lang_insertaudio_badurl : 'L’URL indiquée n’est pas valide',
+});
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertresource/css (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertresource/css)

Deleted: plog/trunk/js/tinymce/plugins/insertresource/css/content.css
===================================================================
--- plog/branches/lifetype-1.2/js/tinymce/plugins/insertresource/css/content.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertresource/css/content.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,7 +0,0 @@
-.ltFlashPlayer {
-	background-image: url('../images/player.png');	
-	border: 1px dotted #cc0000;
-	background-position: center;
-	background-repeat: no-repeat;
-	background-color: #ffffcc;
-}
\ No newline at end of file

Copied: plog/trunk/js/tinymce/plugins/insertresource/css/content.css (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertresource/css/content.css)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertresource/css/content.css	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertresource/css/content.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,7 @@
+.ltFlashPlayer {
+	background-image: url('../images/player.png');	
+	border: 1px dotted #cc0000;
+	background-position: center;
+	background-repeat: no-repeat;
+	background-color: #ffffcc;
+}
\ No newline at end of file

Modified: plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js
===================================================================
--- plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -23,6 +23,7 @@
 	},
 
 	initInstance : function(inst) {
+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/insertresource/css/content.css");		
 	},
 
 	getControlHTML : function(cn) {
@@ -73,6 +74,187 @@
 
 		// Pass to next handler in chain
 		return false;
+	},
+
+	cleanup : function(type, content) {
+		switch (type) {
+			case "insert_to_editor_dom":
+				// Force relative/absolute
+				if (tinyMCE.getParam('convert_urls')) {
+					var imgs = content.getElementsByTagName("img");
+					for (var i=0; i<imgs.length; i++) {
+						if (tinyMCE.getAttrib(imgs[i], "class") == "ltFlashPlayer") {
+							var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+							if (tinyMCE.getParam('convert_urls'))
+								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+							imgs[i].setAttribute('alt', src);
+							imgs[i].setAttribute('title', src);
+						}
+					}
+				}
+				break;
+
+			case "get_from_editor_dom":
+				var imgs = content.getElementsByTagName("img");
+				for (var i=0; i<imgs.length; i++) {
+						if (tinyMCE.getAttrib(imgs[i], "class")== "ltFlashPlayer") {
+							var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+							if (tinyMCE.getParam('convert_urls'))
+								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+								imgs[i].setAttribute('alt', src);
+								imgs[i].setAttribute('title', src);
+					}
+				}
+				break;
+
+			case "insert_to_editor":
+				var startPos = 0;
+				var embedList = new Array();			
+
+				// Fix the embed and object elements
+				content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
+				content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');			
+				
+				// Parse all object tags and replace them with images from the embed data
+				var index = 0;
+				while ((startPos = content.indexOf('<object', startPos)) != -1) {
+
+					// Find end of object
+					endPos = content.indexOf('</object>', startPos);
+					endPos += 9;
+					
+					objectTag = content.substring(startPos,endPos);
+					
+					/**
+					 * NOTE: this method call relies in a bug of the _parseAttributes method.
+					 * This method parses a tag and returns a list of its attributes. It works fine
+					 * when presented with a single tag but now that we're passing a whole <object>...</object>
+					 * block, it will also parse any other tags in the block. This means that it will return the
+					 * value we're looking for as long as "FlashVars" is passed as the last parameter
+					 * in the <object> block.
+					 */
+					attribs = TinyMCE_insertresourcePlugin._parseAttributes( objectTag );
+					
+					var cssClass = "";					
+					if( attribs["value"] == undefined || attribs["class"] != "ltPlayer" ) {
+						startPos++;
+						continue;
+					}
+					
+					// find the value in "file=XXX"
+					var regexp = /.*file=([a-zA-Z0-9\-\/:._]*)/i;
+					result = regexp.exec( attribs["value"] );
+					var fileUrl = "";
+					if( result ) {
+						fileUrl = result[1];
+					}			
+					//window.alert("val = " + attribs["value"] + " - " + fileUrl);		
+					
+					// default values for height and width in case they were not defined (for some reason)
+					if( attribs["height"] == undefined )
+						attribs["height"] = 20;
+					if( attribs["width"] == undefined )
+						attribs["width"] = 320;
+					// Insert image						
+					var contentAfter = content.substring(endPos);
+					content = content.substring(0, startPos);
+					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
+					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + fileUrl + '"';
+					content += ' alt="' + fileUrl + '" class="ltFlashPlayer" />' + content.substring(endPos);
+					content += contentAfter;
+					
+					index++;
+
+					startPos++;
+				}
+				
+				break;
+
+			case "get_from_editor":
+				// Parse all img tags and replace them with object+embed
+				var startPos = -1;
+
+				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
+					var endPos = content.indexOf('/>', startPos);
+					var attribs = TinyMCE_insertresourcePlugin._parseAttributes(content.substring(startPos + 4, endPos));
+
+					// Is not flash, skip it
+					if (attribs['class'] != "ltFlashPlayer" )
+						continue;
+
+					type = attribs['class'];
+
+					endPos += 2;
+
+					var embedHTML = '';
+					
+					if( attribs["height"] == undefined )
+						attribs["height"] = 20;
+					if( attribs["width"] == undefined )
+						attribs["width"] = 320;					
+					embedHTML = getFlashPlayerHTML( attribs["alt"], attribs["height"], attribs["width"] );
+
+					// Insert embed/object chunk
+					chunkBefore = content.substring(0, startPos);
+					chunkAfter = content.substring(endPos);
+					content = chunkBefore + embedHTML + chunkAfter;
+				}
+				break;
+		}
+
+		// Pass through to next handler in chain
+		return content;
+	},
+
+	// Private plugin internal functions
+
+	_parseAttributes : function(attribute_string) {
+		var attributeName = "";
+		var attributeValue = "";
+		var withInName;
+		var withInValue;
+		var attributes = new Array();
+		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
+
+		if (attribute_string == null || attribute_string.length < 2)
+			return null;
+
+		withInName = withInValue = false;
+
+		for (var i=0; i<attribute_string.length; i++) {
+			var chr = attribute_string.charAt(i);
+
+			if ((chr == '"' || chr == "'") && !withInValue)
+				withInValue = true;
+			else if ((chr == '"' || chr == "'") && withInValue) {
+				withInValue = false;
+
+				var pos = attributeName.lastIndexOf(' ');
+				if (pos != -1)
+					attributeName = attributeName.substring(pos+1);
+
+				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
+
+				attributeName = "";
+				attributeValue = "";
+			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
+				withInName = true;
+
+			if (chr == '=' && withInName)
+				withInName = false;
+
+			if (withInName)
+				attributeName += chr;
+
+			if (withInValue)
+				attributeValue += chr;
+		}
+
+		return attributes;
 	}
 };
 

Copied: plog/trunk/js/tinymce/plugins/insertresource/images/player.png (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertresource/images/player.png)
===================================================================
(Binary files differ)

Copied: plog/trunk/js/tinymce/plugins/insertresource/langs/fr.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertresource/langs/fr.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertresource/langs/fr.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertresource/langs/fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,6 @@
+// UK lang variables
+
+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */
+
+tinyMCELang['lang_insertresource_title'] = 'Ins&eacute;rer ressource/album';
+tinyMCELang['lang_insertresource_desc'] = 'Ins&eacute;rer ressource/album';

Copied: plog/trunk/js/tinymce/plugins/insertvideo/README.txt (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertvideo/README.txt)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/README.txt	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertvideo/README.txt	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,18 @@
+InsertVideo:
+
+Author: Oscar Renalias / LifeType (copied from the flash plugin)
+
+A plugin for tinymce that allows to insert videos from youtube and
+google video without breaking the xhhtml compliancy. The code has been
+shamelessly ripped from the tinymce 'flash' plugin but it works.
+
+
+
+History:
+
+10/2006: Created
+
+early 2007: various bug fixes/typos
+
+06/2007: DailyMotion support and Localized for other
+         languages by Gabriel Rousseau

Modified: plog/trunk/js/tinymce/plugins/insertvideo/css/content.css
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/css/content.css	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertvideo/css/content.css	2007-06-05 13:51:03 UTC (rev 5488)
@@ -39,4 +39,11 @@
 	background-position: center;
 	background-repeat: no-repeat;
 	background-color: #ffffcc;
+	}
+.ltVideoDailymot {
+	border: 1px dotted #cc0000;
+	background-image: url('../images/dailymotion.png');
+	background-position: center;
+	background-repeat: no-repeat;
+	background-color: #ffffcc;
 	}
\ No newline at end of file

Modified: plog/trunk/js/tinymce/plugins/insertvideo/editor_plugin.js
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/editor_plugin.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertvideo/editor_plugin.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,5 +1,5 @@
 /* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('insertvideo', 'en,tr,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,pl'); // <- Add a comma separated list of all supported languages
+tinyMCE.importPluginLanguagePack('insertvideo', 'en,fr'); // <- Add a comma separated list of all supported languages
 
 // Singleton class
 var TinyMCE_insertvideoPlugin = {
@@ -9,7 +9,7 @@
 			author : 'The LifeType Project',
 			authorurl : 'http://www.lifetype.net',
 			infourl : 'http://www.lifetype.net',
-			version : "1.0"
+			version : "1.1"
 		};
 	},
 
@@ -140,6 +140,9 @@
 						else if( videoType == 6 ) {
 							cssClass = "ltVideoGrouper";
 						}
+						else if( videoType == 7 ) {
+							cssClass = "ltVideoDailymot";
+						}
 						else {
 							// ignore it, it's not a youtube or googlevideo video
 							startPos++;
@@ -171,7 +174,7 @@
 					var attribs = TinyMCE_insertvideoPlugin._parseAttributes(content.substring(startPos + 4, endPos));
 
 					// Is not flash, skip it
-					if (attribs['class'] != "ltVideoYouTube" && attribs['class'] != "ltVideoGoogleVideo" && attribs['class'] != "ltVideoMetacafe" && attribs['class'] != "ltVideoIfilm" && attribs['class'] != "ltVideoGoear" && attribs['class'] != "ltVideoGrouper")
+					if (attribs['class'] != "ltVideoYouTube" && attribs['class'] != "ltVideoGoogleVideo" && attribs['class'] != "ltVideoMetacafe" && attribs['class'] != "ltVideoIfilm" && attribs['class'] != "ltVideoGoear" && attribs['class'] != "ltVideoGrouper" && attribs['class'] != "ltVideoDailymot")
 						continue;
 
 					type = attribs['class'];
@@ -296,8 +299,10 @@
 		return 5;
 	else if( url.substring( 0, 21 ) == "http://www.grouper.com/" )
 		return 6;
+	else if( url.substring( 0, 27 ) == "http://www.dailymotion.com/" )
+		return 7;
 	else
 		return 0;
 }
 
-tinyMCE.addPlugin("insertvideo", TinyMCE_insertvideoPlugin );
\ No newline at end of file
+tinyMCE.addPlugin("insertvideo", TinyMCE_insertvideoPlugin );

Modified: plog/trunk/js/tinymce/plugins/insertvideo/functions.js
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/functions.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertvideo/functions.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -144,13 +144,21 @@
 	return( url );
 }
 
+function getDailymotionLink( url ) 
+{	
+	// check if this is a URL pointing to a dailymotion embedded video link
+	var regexp = /object\swidth="([0-9]+)"\sheight="([0-9]+)".+value="(http:\/\/www\.dailymotion\.com\/swf\/\w*)"/;
+	result = regexp.exec( url );
+	return( result );
+}
+
 function insertVideoCode()
 {
 	// get and check the URL
 	urlField = document.forms[0].url;
 	url = urlField.value;
 	if( url == "" || !isValidUrl( url )) {
-		window.alert( "The URL is not valid" );
+		window.alert( tinyMCE.getLang('lang_insertvideo_badurl', 0) );
 		return( false );
 	}
 	
@@ -160,13 +168,14 @@
 //	dalealplay = document.getElementById("dalealplay");
 	metacafe = document.getElementById("metacafe");
 	ifilm = document.getElementById("ifilm");
-      goear = document.getElementById("goear");
-      grouper = document.getElementById("grouper");
+	goear = document.getElementById("goear");
+	grouper = document.getElementById("grouper");
+	dailymot = document.getElementById("dailymot");
 
 //	bolt = document.getElementById("bolt");
 
-	if( youtube.checked==false && gvideo.checked==false && metacafe.checked==false && ifilm.checked==false && goear.checked==false && grouper.checked==false ) {
-		window.alert( "You must select the right video site." );
+	if( youtube.checked==false && gvideo.checked==false && metacafe.checked==false && ifilm.checked==false && goear.checked==false && grouper.checked==false && dailymot.checked==false ) {
+		window.alert( tinyMCE.getLang('lang_insertvideo_selectiontype', 0) );
 		return( false );	
 	}
 	
@@ -188,7 +197,7 @@
 		width=400;
 		height=345;		
 	}
-  if( ifilm.checked == true ) {
+	if( ifilm.checked == true ) {
 		link = getiFilmVideoLink( url );
 		css="ltVideoIfilm";
 		width=448;
@@ -205,7 +214,14 @@
 		css="ltVideoGrouper";
 		width=496;
 		height=398;		
-	}	
+	}
+	if( dailymot.checked == true ) {
+		result = getDailymotionLink( url );
+		width = result[1];
+		height = result[2];
+		link = result[3];
+		css="ltVideoDailymot";		
+	}
 	insertFlash( link, css, width, height );
 }
 

Copied: plog/trunk/js/tinymce/plugins/insertvideo/images/dailymotion.png (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertvideo/images/dailymotion.png)
===================================================================
(Binary files differ)

Modified: plog/trunk/js/tinymce/plugins/insertvideo/langs/en.js
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/langs/en.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertvideo/langs/en.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,5 +1,11 @@
 // UK lang variables
 
 tinyMCE.addToLang('',{
-lang_insertvideo_desc : 'Insert Video'
+lang_insertvideo_desc : 'Insert Video',
+lang_insertvideo_linklegend : 'Please provide a link to a video file.',
+lang_insertvideo_link : 'Video URL:',
+lang_insertvideo_selsource : 'Select Source:',
+lang_insertvideo_dailymotembeddableplayer : 'Embeddable Player',
+lang_insertvideo_badurl : 'Invalid URL',
+lang_insertvideo_selectiontype : 'You must select the right video site.',
 });

Copied: plog/trunk/js/tinymce/plugins/insertvideo/langs/fr.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/insertvideo/langs/fr.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/langs/fr.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/insertvideo/langs/fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,11 @@
+// FR lang variables
+
+tinyMCE.addToLang('',{
+lang_insertvideo_desc : 'Ins&eacute;rer vid&eacute;o',
+lang_insertvideo_linklegend : 'Veuillez indiquer un lien vers un fichier ou une page vid&eacute;o.',
+lang_insertvideo_link : 'URL de la vid&eacute;o :',
+lang_insertvideo_selsource : 'S&eacute;lectionnez une source :',
+lang_insertvideo_dailymotembeddableplayer : 'Lecteur Exportable',
+lang_insertvideo_badurl : 'L’URL indiqu&eacute;e n’est pas valide',
+lang_insertvideo_selectiontype : 'Vous devez choisir le bon site vid&eacuteo.',
+});

Modified: plog/trunk/js/tinymce/plugins/insertvideo/videoinput.html
===================================================================
--- plog/trunk/js/tinymce/plugins/insertvideo/videoinput.html	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/plugins/insertvideo/videoinput.html	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,6 +1,6 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>Insert Video</title>
+	<title>{$lang_insertvideo_desc}</title>
 	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
 	<script language="javascript" type="text/javascript" src="functions.js"></script>	
 	<base target="_self" />
@@ -9,19 +9,19 @@
 	<form name="video" id="video" method="post" action="#">
 	<div class="tabs">
 	  <ul>
-	   <li id="general_tab" class="current"><span>Insert Video</span></li>
+	   <li id="general_tab" class="current"><span>{$lang_insertvideo_desc}</span></li>
 	  </ul>
 	</div>
 	<div class="panel_wrapper">
 	  <div id="general_panel" class="panel_current">
-	     <legend>Please provide a link to a video file.</legend>	     	     
+	     <legend>{$lang_insertvideo_linklegend}</legend>	     	     
 	     <table border="0" cellpadding="4" cellspacing="0">
 	      <tr>
-	       <td nowrap="nowrap">Video URL:</td>
+	       <td nowrap="nowrap">{$lang_insertvideo_link}</td>
 	       <td><input type="text" id="url" name="url" value="" style="width:350px" /></td>
 	      </tr>
 	      <tr>
-	       <td nowrap="nowrap">Select Source:</td>
+	       <td nowrap="nowrap">{$lang_insertvideo_selsource}</td>
 	       <td>
 		    <input type="radio" id="youtube" style="border:0px" name="type" value="1"><img src="images/youtube.png" alt="YouTube" /> YouTube<br />
 		    <input type="radio" id="gvideo" style="border:0px"name="type" value="2"><img src="images/gvideo.png" alt="Google Video" /> Google Video<br />
@@ -29,7 +29,7 @@
 		    <input type="radio" id="ifilm" style="border:0px"name="type" value="4"><img src="images/ifilm.png" alt="iFilm" /> iFilm<br />
 		    <input type="radio" id="goear" style="border:0px"name="type" value="5"><img src="images/goear.png" alt="Goear" /> Goear<br />
 		    <input type="radio" id="grouper" style="border:0px"name="type" value="6"><img src="images/grouper.png" alt="Grouper" /> Grouper<br />
-
+		    <input type="radio" id="dailymot" style="border:0px"name="type" value="7"><img src="images/dailymotion.png" alt="dailymotion" /> dailymotion <span style="color: grey; font-style: oblique;">({$lang_insertvideo_dailymotembeddableplayer})</span><br />
 		   </td>
 		  </tr> 			
 		 </table>		    
@@ -37,10 +37,10 @@
 		</div>
 		<div class="mceActionPanel">
 		  <div style="float:left">		
-			<input type="button" name="insert" value="Insert Code" onClick="insertVideoCode()" id="insert" />
+			<input type="button" name="insert" value="{$lang_insert}" onClick="insertVideoCode()" id="insert" />
 		  </div>
 		  <div style="float:right">
-		    <input type="button" name="cancel" value="Close" onclick="tinyMCEPopup.close();" id="cancel" />
+		    <input type="button" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" id="cancel" />
 		  </div>
 		</div>
 	 </div>

Copied: plog/trunk/js/tinymce/plugins/more/langs/fr.js (from rev 5487, plog/branches/lifetype-1.2/js/tinymce/plugins/more/langs/fr.js)
===================================================================
--- plog/trunk/js/tinymce/plugins/more/langs/fr.js	                        (rev 0)
+++ plog/trunk/js/tinymce/plugins/more/langs/fr.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,6 @@
+// EN lang variables
+
+tinyMCE.addToLang('',{
+more_more_button : 'S&eacute;parer l’article avec la balise Plus',
+more_more_alt : 'Plus...'
+});

Modified: plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js
===================================================================
--- plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -75,4 +75,27 @@
 
 function onCancel() {
 	tinyMCE.closeWindow(window);
-};
\ No newline at end of file
+};
+
+/**
+ * Generates the correct markup code for the Flash MP3 and video player
+ * depending on whether TinyMCE is enabled or not
+ *
+ * @param url
+ * @param tinyMCE
+ */
+function insertMediaPlayer( url, tinyMCEEnabled, height, width )
+{
+	if( tinyMCEEnabled ) {
+		var htmlCode = '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" ' + 'width="' + width + '" height="' + height + '" ' + 'border="0" alt="' + url + '" title="' + url + '" class="ltFlashPlayer" />';
+
+	   	tinyMCE.execCommand( "mceInsertContent", true, htmlCode );
+		tinyMCE.selectedInstance.repaint();	
+
+		// Close the dialog
+		tinyMCE.closeWindow(window);
+	}
+	else {
+		addText( parent.opener.document.newPost.postText, getFlashPlayerHTML( url, height, width ));
+	}
+}
\ No newline at end of file

Modified: plog/trunk/js/tinymce/tiny_mce-plog.js
===================================================================
--- plog/trunk/js/tinymce/tiny_mce-plog.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/tinymce/tiny_mce-plog.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -2,14 +2,14 @@
 	mode : "exact",
 	elements : "postText,postExtendedText",
 	theme : "advanced",
-	plugins : "fullscreen,table,inlinepopups,insertdatetime,emotions,insertresource,insertvideo,more",
+	plugins : "fullscreen,table,inlinepopups,insertdatetime,emotions,insertresource,insertvideo,insertaudio,more",
 	relative_urls : false,
     fix_list_elements : true,
 	remove_script_host : false,
 	force_p_newlines : true,
 	cleanup_on_startup : true,	
 	theme_advanced_buttons1 : "fontsizeselect,fontselect,forecolor,backcolor,bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull",
-	theme_advanced_buttons2 : "bullist,numlist,indent,outdent,separator,link,unlink,image,insertresource,insertvideo,emotions,separator,hr,insertdate,inserttime,separator,fullscreen,separator,code,more",
+	theme_advanced_buttons2 : "bullist,numlist,indent,outdent,separator,link,unlink,image,insertresource,insertvideo,insertaudio,emotions,separator,hr,insertdate,inserttime,separator,fullscreen,separator,code,more",
 	theme_advanced_buttons3 : "",
 	fullscreen_settings : {
                 theme_advanced_buttons3 : "tablecontrols"
@@ -20,6 +20,7 @@
 	theme_advanced_resizing : true,
 	theme_advanced_resize_horizontal : false,
 	convert_fonts_to_spans: true,
+    remove_linebreaks: false,
 	extended_valid_elements : "a[class|name|id|href|target|title|onclick|rel],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
 	verify_html : true,
 	valid_elements : ""

Modified: plog/trunk/js/ui/common.js
===================================================================
--- plog/trunk/js/ui/common.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/ui/common.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -302,4 +302,73 @@
 function MM_jumpMenu(targ,selObj,restore){ //v3.0 
     eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); 
     if (restore) selObj.selectedIndex=0; 
-}
\ No newline at end of file
+}
+
+function getPostEditFormElements( formId )
+{
+	var formData = '';
+	
+	form = document.getElementById( formId );
+	
+	for(i = 0; i < form.elements.length; i++ ) {
+		itemName = form.elements[i].name;
+		itemValue = form.elements[i].value;
+		
+		if( itemName != "op" ) {
+			// we don't want to send more than one "op" parameter... do we?
+			if( itemName == "postCategories[]" ) {
+				// we need to have a special case for this one because it's a list that
+				// allows multiple selection... only using the "value" attribute will
+				// return one of the items and we would like to have them all
+				for (var j = 0; j < form.elements[i].options.length; j++) {
+					if (form.elements[i].options[j].selected) 
+						formData = formData + itemName + "=" + form.elements[i].options[j].value + "&";
+				}
+			}
+			else if( itemName == "postText" && htmlAreaEnabled ) {
+			    if ( blogLocale == "UTF-8" ) {
+				    formData = formData + itemName + "=" + encodeURIComponent(tinyMCE.getContent('postText')) + "&";
+				} else {
+				    formData = formData + itemName + "=" + escape(tinyMCE.getContent('postText')) + "&";
+				}
+			}
+			else if( itemName == "postExtendedText" && htmlAreaEnabled ) {
+				if ( blogLocale == "UTF-8" ) {
+				    formData = formData + itemName + "=" + encodeURIComponent(tinyMCE.getContent('postExtendedText')) + "&";
+			    } else {
+				    formData = formData + itemName + "=" + escape(tinyMCE.getContent('postExtendedText')) + "&";
+                }
+			}
+			else {
+				// for all other elements, normal handling
+				if ( blogLocale == "UTF-8" ) {
+				    formData = formData + itemName + "=" + encodeURIComponent(itemValue) + "&";
+				} else {
+				    formData = formData + itemName + "=" + escape(itemValue) + "&";
+			    }
+			}
+		}
+    }	
+    
+    return formData;
+}
+
+/**
+ * Returns the HTML code required to embed the Flash MP3 and video player, given
+ * a URL to a playable media file.
+ *
+ * @param url
+ * @return
+ */
+function getFlashPlayerHTML( url, height, width ) 
+{
+    var playerUrl = plogBaseUrl + "/flash/mp3player/mp3player.swf";
+	var htmlCode = "<object data=\"" + playerUrl + "\" type=\"application/x-shockwave-flash\" width=\"" + width +"\" height=\"" + height + "\" class=\"ltPlayer\">"+
+		"<param name=\"quality\" value=\"best\" />"+
+		"<param name=\"bgcolor\" value=\"#FFFFFF\" />" +
+        "<param name=\"movie\" value=\"" + playerUrl + "\" />" +
+		"<param name=\"FlashVars\" value=\"&file="+ url + "&height=" + height + "&width=" + width + "\" />" +
+    	"</object>";	
+
+	return htmlCode;
+}

Modified: plog/trunk/js/ui/default.js
===================================================================
--- plog/trunk/js/ui/default.js	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/js/ui/default.js	2007-06-05 13:51:03 UTC (rev 5488)
@@ -112,7 +112,7 @@
 	i = 0;
     while (e = f.elements[i])
     {
-        if (e.type == "checkbox")
+        if (e.type == "checkbox" && e.id != "sendNotification")
         {
             if( inArray(permissionSets[permissionSet], e.value) )
             	e.checked = 1;
@@ -190,4 +190,4 @@
     {
         window.location.href = l;
     }
-}
\ No newline at end of file
+}

Modified: plog/trunk/locale/admin/locale_ca_ES.php
===================================================================
--- plog/trunk/locale/admin/locale_ca_ES.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_ca_ES.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -377,6 +377,8 @@
 $messages['enable_comments_help'] = 'Activa comentaris per defecte a tots els articles. Els comentaris poden activar-se o desactivar-se per a certs articles, creant-ne de nous o editant-los';
 $messages['show_future_posts'] = 'Visualitza els articles futurs al calendari';
 $messages['show_future_posts_help'] = 'Els articles que tinguin una data futura seran visibles pels usuaris';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['comments_order'] = 'Ordre dels comentaris';
 $messages['comments_order_help'] = 'Ordre amb què els comentaris es mostraran a la pàgina principal';
 $messages['oldest_first'] = 'Els més antic primer';
@@ -1185,5 +1187,19 @@
 $messages['error_template_exist'] = 'Hi ha hagut un error afegint la nova plantilla, ja hi ha una plantilla anomenada "%s".';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
+$messages['posted_by_help'] = 'Esculli autor';
+$messages['insert_player'] = 'Afegir reproductor';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Permet l\'us de codi Javascript en els articles mitjançant blocs &lt;script&gt; [ Valor per defecte = No ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'La versió dels següents fitxers no és la correcta:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'La versió actual de LifeType és:';
+$messages['file_version_check'] = 'Comprovació de versió de fitxers';
+$messages['file_version_check_help'] = 'Aquest botó executarà una comprovació de la versió actual dels fitxers bàsics de LifeType per a verificar que les versions són les correctes. Si no s\'han efectuat canvis o adaptacions en aquest servidor, la versió dels fitxers hauria de
+correspondre amb la versió esperada. Aquest procés pot trigar una estona, no intenti tornar a carregar aquesta pàgina.';
+$messages['check'] = 'Comprovar';
+$messages['all_files_ok'] = 'Tots els fitxers són correctes';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_de_DE.php
===================================================================
--- plog/trunk/locale/admin/locale_de_DE.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_de_DE.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -396,6 +396,8 @@
 $messages['enable_comments_help'] = 'Erlaubt oder verbietet das Kommentieren f&uuml;r alle Artikel dieses Blogs.';
 $messages['show_future_posts'] = 'Zuk&uuml;nftige Artikel im Kalender anzeigen.';
 $messages['show_future_posts_help'] = 'W&auml;hlen Sie, ob Artikel mit in der Zukunft liegendem Ver&ouml;ffentlichungsdatum im Kalender angezeigt und so f&uuml;r jeden Besucher sichtbar sein sollen.';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['comments_order'] = 'Reihenfolge der Kommentare';
 $messages['comments_order_help'] = 'Reihenfolge, in der die Kommentare auf der &Uuml;bersichtsseite angezeigt werden.';
 $messages['oldest_first'] = '&auml;lteste zuerst';
@@ -1172,5 +1174,18 @@
 $messages['error_template_exist'] = 'Fehler beim Hochladen des Templates. Template "%s" existiert bereits.';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
+$messages['posted_by_help'] = 'W&auml;hlen Sie den Autor';
+$messages['insert_player'] = 'MP3-Player einf&uuml;gen';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Javascript Code in Artikeln mittels &lt;script&gt;-Tag erlauben. Diese Option birgt Sicherheitsrisiken und darf nur aktiviert werden, wenn allen Benutzern der Blog Plattform vertraut wird. [ Standard = Nein ]';
+
+$messages['Versions'] = 'Versionen';
+$messages['incorrect_file_version_error'] = 'Die folgenden Dateien enthalten nicht den erwarteten Inhalt:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'Die aktuell installierte Version von LifeType lautet:';
+$messages['file_version_check'] = 'Datei Versionspr&uuml;fung';
+$messages['file_version_check_help'] = 'Die Versionspr&uuml;fung pr&uuml;ft, ob die wichtigsten Dateien der installierten LifeType Version  mit den erwarteten Inhalten &uuml;bereinstimmen. Solange Sie an den Dateien keine manuellen &Auml;nderungen vorgenommen haben, sollte dieser Test erfolgreich beenden. Diese Pr&uuml;fung kann eine Weile dauern, bitte haben Sie Geduld.';
+$messages['check'] = 'Pr&uuml;fen';
+$messages['all_files_ok'] = 'Die Pr&uuml;fung war erfolgreich. Alle Dateien sind korrekt.';
 ?>

Modified: plog/trunk/locale/admin/locale_en_UK.php
===================================================================
--- plog/trunk/locale/admin/locale_en_UK.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_en_UK.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -101,7 +101,7 @@
 $messages['extended_text'] = 'Extended Text';
 $messages['extended_text_help'] = 'Extended text of the post. This part can optionally appear only in the post page or in the main page. See the blog settings for more information.';
 $messages['trackback_urls'] = 'Real Trackback Urls';
-$messages['trackback_urls_help'] = 'If the article you want to send the trackback to does not support Trackback Auto-Discover mechanism, you may put its real trackback url here and use new a line for each url.';
+$messages['trackback_urls_help'] = 'If the article you want to send the trackback to does not support Trackback Auto-Discover mechanism, you may put its real trackback url here and use a new line for each url.';
 $messages['post_slug'] = 'Slug';
 $messages['post_slug_help'] = 'The slug will be used to generate nice permanent links.';
 $messages['date'] = 'Date';
@@ -398,6 +398,8 @@
 $messages['show_future_posts_help'] = 'Whether posts which have a date in the future should appear in the calendar and visible to users.';
 $messages['comments_order'] = 'Comments order';
 $messages['comments_order_help'] = 'Order in which comments should be displayed in the front page.';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['oldest_first'] = 'Oldest first';
 $messages['newest_first'] = 'Newest first';
 $messages['categories_order'] = 'Categories order';
@@ -718,7 +720,7 @@
 
 // blog list
 $messages['updated'] = 'Updated';
-$messages['total_reads'] = 'tota';
+$messages['total_reads'] = 'total';
 
 // blog profile
 $messages['blog'] = 'Blog';
@@ -1168,4 +1170,18 @@
 
 /// new strings in LT 1.2.2 ///
 $messages['posted_by_help'] = 'Select article owner';
-?>
+$messages['insert_player'] = 'Insert Player';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Allow blocks of Javascript code in posts via &lt;script&gt; tags. Please be aware that it may pose a security risk to your blog(s) [ Default = No ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'The following files do not match the expected contents:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'The currently installed version of LifeType is:';
+$messages['file_version_check'] = 'File Version Check';
+$messages['file_version_check_help'] = 'This will perform a basic check on most of LifeType\'s core files, in order to ensure that the current version of the files matches the expected contents according to the installed version. If you have not performed any customizations or changes,
+all files should match the expected version. Please be patient, this process may take a while.';
+$messages['check'] = 'Check';
+$messages['all_files_ok'] = 'All files are correct';
+?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_es_ES.php
===================================================================
--- plog/trunk/locale/admin/locale_es_ES.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_es_ES.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -387,6 +387,8 @@
 $messages['enable_comments_help'] = 'Permite comentarios en todos los artículos por defecto, aunque los comentarios se pueden activar o desactivar a voluntad específicamente para cada artículo';
 $messages['show_future_posts'] = 'Mostrar los artículos con fecha en el futuro';
 $messages['show_future_posts_help'] = 'Muestra los artículos que tengan fetcha futura en el calendario y en la página principal';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['comments_order'] = 'Ordern de los comentarios';
 $messages['comments_order_help'] = 'Orden en que los comentarios de un artículo deben ser mostrados';
 $messages['oldest_first'] = 'Los antiguos primero';
@@ -1179,5 +1181,19 @@
 $messages['error_template_exist'] = 'Hubo un error añadiendo la nueva plantilla, ya hay una plantilla llamada "%s".';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
-?>
+$messages['posted_by_help'] = 'Elija autor';
+$messages['insert_player'] = 'Añadir Reproductor';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Permite el uso de código Javascript en los artículos mediante bloques &lt;script&gt; [ Valor por defecto = No ]';
+
+$messages['Versions'] = 'Versiones';
+$messages['incorrect_file_version_error'] = 'La versión de los siguientes ficheros no es la correcta:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'La versión actual de LifeType es:';
+$messages['file_version_check'] = 'Comprobación de versión de ficheros';
+$messages['file_version_check_help'] = 'Este botón ejecutará una comprobación de la versión actual de los ficheros básicos de LifeType para verificar que las versiones són las correctas. Si no se han efectuado cambios o adaptaciones en este servidor, la versión de los ficheros debería 
+corresponder con la versión esperada. Este proceso puede tardar un rato, por favor no intente recargar la página mientres esté procesando..';
+$messages['check'] = 'Comprobar';
+$messages['all_files_ok'] = 'Todos los ficheros son correctos';
+?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_fr_FR.php
===================================================================
--- plog/trunk/locale/admin/locale_fr_FR.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_fr_FR.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,1352 +1,1163 @@
-<?php
-
-// done by Nino NJOPKOU ( benoue at gmail.com ) and Loïc Pietrzak (new strings for LifeType 1.2)
-
-/////////////////                                          //////////////////
-///////////////// STRINGS FOR THE ADMINISTRATION INTERFACE //////////////////
-/////////////////                                          //////////////////
-
-// login page
-$messages["login"] = "Connexion";
-$messages["welcome_message"] = "Bienvenue sur LifeType";
-$messages["error_incorrect_username_or_password"] = "Désolé, pseudo ou mot de passe incorrect.";
-$messages["error_dont_belong_to_any_blog"] = " Désolé, vous n'êtes encore membre d'aucun blog";
-$messages["logout_message"] = "Déconnexion réussie.";
-$messages["logout_message_2"] = "<a href=\"admin.php\">Cliquez ici</a>pour vous reconnecter,
-ou <a href=\"%1\$s\">ici pour aller %2\$s.";
-$messages["error_access_forbidden"] = "Accès interdit, vous devez vous identifier <a href=\"admin.php\">ici</a> avant .";
-$messages["username"] = "Pseudo";
-$messages["password"] = "Mot de passe";
-
-// dashboard
-$messages["dashboard"] = "Panneau de Configuration";
-$messages['recent_articles'] = 'Les derniers articles';
-$messages['recent_comments'] = 'Les derniers commentaires';
-$messages['recent_trackbacks'] = 'Les derniers trackbacks';
-$messages['blog_statistics'] = 'Statistiques';
-$messages['total_posts'] = 'Nombre d\'articles';
-$messages['total_comments'] = 'Nombre de commentaires';
-$messages['total_trackbacks'] = 'Nombre de trackbacks';
-$messages['total_viewed'] = 'Nombre d\'articles lus';
-$messages['in'] = 'Dans';
-
-// menu options
-$messages["newPost"] = "Nouveau";
-$messages["Manage"] = "Editer";
-$messages["managePosts"] = "Articles";
-$messages["editPosts"] = "Articles";
-$messages["editArticleCategories"] = "Catégories";
-$messages["newArticleCategory"] = "Nouvelle catégorie";
-$messages["manageLinks"] = "Liens";
-$messages["editLinks"] = "Liens";
-$messages["newLink"] = "Nouveau lien";
-$messages["editLink"] = "Editer un lien";
-$messages["editLinkCategories"] = "Catégorie de liens";
-$messages["newLinkCategory"] = "Nouvelle catégorie de liens";
-$messages["editLinkCategory"] = "Editer une catégorie de liens";
-$messages["manageCustomFields"] = "Champs personnalisés";
-$messages["blogCustomFields"] = "Champs personnalisés";
-$messages["newCustomField"] = "Nouveau champ personnalisé";
-$messages["resourceCenter"] = "Gestion des ressources";
-$messages["resources"] = "Ressources";
-$messages["newResourceAlbum"] = "Nouvel album";
-$messages["newResource"] = "Nouvelle ressource";
-$messages["controlCenter"] = "Réglages";
-$messages["manageSettings"] = "Paramètres";
-$messages["blogSettings"] = "Paramètres du blog";
-$messages["userSettings"] = "Paramètres du membre";
-$messages["pluginCenter"] = "Gestion des plugins";
-$messages["Stats"] = "Statistiques";
-$messages["manageBlogUsers"] = "Gerer les membres";
-$messages["newBlogUser" ] = "Nouveau membre";
-$messages["showBlogUsers"] = "Membres";
-$messages["manageBlogTemplates"] = "Gabarits";
-$messages["newBlogTemplate"] = "Nouveau gabarit";
-$messages["blogTemplates"] = "Gabarits";
-$messages["adminSettings"] = "Administration";
-$messages["Users"] = "Membres";
-$messages["createUser"] = "Créer membre";
-$messages["editSiteUsers"] = "Membres";
-$messages["Blogs"] = "Blogs";
-$messages["createBlog"] = "Créer un blog";
-$messages["editSiteBlogs"] = "Blogs";
-$messages["Locales"] = "Traductions";
-$messages["newLocale"] = "Nouvelle traduction";
-$messages["siteLocales"] = "Traductions";
-$messages["Templates"] = "Gabarits";
-$messages["newTemplate"] = "Nouveau gabarit";
-$messages["siteTemplates"] = "Gabarits";
-$messages["GlobalSettings"] = "Paramètres";
-$messages["editSiteSettings"] = "Général";
-$messages["summarySettings"] = "Portail";
-$messages["templateSettings"] = "Gabarits";
-$messages["urlSettings"] = "URLs";
-$messages["emailSettings"] = "Email";
-$messages["uploadSettings"] = "Uploads";
-$messages["helpersSettings"] = "Chemins externes";
-$messages["interfacesSettings"] = "Interfaces";
-$messages["securitySettings"] = "Securité";
-$messages["bayesianSettings"] = "Filtre Bayesien";
-$messages["resourcesSettings"] = "Ressources";
-$messages["searchSettings"] = "Recherche";
-$messages["cleanUpSection"] = "Nettoyer";
-$messages["cleanUp"] = "Nettoyer";
-$messages["editResourceAlbum"] = "Editer un album";
-$messages["resourceInfo"] = "Editer une ressource";
-$messages["editBlog"] = "Editer un blog";
-$messages["hours"] = "heures";
-
-// new post
-$messages["topic"] = "Sujet";
-$messages["topic_help"] = "Titre de l'article";
-$messages["text"] = "Texte";
-$messages["text_help"] = "Texte de l'article. Cette partie apparaîtra sur la page principale";
-$messages["extended_text"] = "Texte étendu";
-$messages["extended_text_help"] = "Texte étendu de l'article. Cette partie peut optionellement apparaître sur la page des articles ou sur la page principale. Voir les paramètres du blog pour plus d'informations.";
-$messages['trackback_urls'] = 'URLs réelles de Trackback';
-$messages['trackback_urls_help'] = "Si l'article auquel vous voulez envoyer le tracback ne supporte le mécanisme de reconnaissance des trackback, merci de préciser ici l'URL réelle de trackback et d'utiliser le saut de ligne pour séparer des URLs différentes";
-$messages["post_slug"] = "Slug";
-$messages["post_slug_help"] = "Le slug sera utilisé pour généré de beaux liens permanents";
-$messages["date"] = "Date";
-$messages["post_date_help"] = "Date à laquelle l'article a été posté";
-$messages["status"] = "Statut";
-$messages["post_status_help"] = "Selectionner un de ces statuts";
-$messages["post_status_published"] = "Publié";
-$messages["post_status_draft"] = "Brouillon";
-$messages["post_status_deleted"] = "Supprimé";
-$messages["categories"] = "Catégories";
-$messages["post_categories_help"] = "Sélectionnez une ou plusieurs catégories";
-$messages["post_comments_enabled_help"] = "Commentaires autorisés";
-$messages["send_notification_help"] = "Notification de nouveaux commentaires";
-$messages["send_trackback_pings_help"] = "Envoyer des trackbacks";
-$messages["send_xmlrpc_pings_help"] = "Envoyer des pings XML-RPC";
-$messages["save_draft_and_continue"] = "Sauvegarder le brouillon";
-$messages["preview"] = "Prévisualiser";
-$messages["add_post"] = "Poster!";
-$messages["error_saving_draft"] = "Il y a eu une erreur lors de la saugarde du brouillon";
-$messages["draft_saved_ok"] = "Brouillon sauvegardé";
-$messages["error_sending_request"] = "Il y a eu une erreur lors de l'envoi de la requête.";
-$messages["error_no_category_selected"] = "Veuillez choisir au moins une catégorie.";
-$messages["error_missing_post_topic"] = "Veuillez entrer un titre";
-$messages["error_missing_post_text"] = "Article vide";
-$messages["error_adding_post"] = "Il y a eu une erreur lors de la publication de l'article.";
-$messages["post_added_not_published"] = "Article correctement ajouté, mais pas encore publié.";
-$messages["post_added_ok"] = "Article correctement ajouté.";
-$messages["send_notifications_ok"] = "Une notification vous sera envoyée par mail à chaque nouveau commentaire ou trackback.";
-$messages['bookmarklet'] = "Bookmarklet";
-$messages['bookmarklet_help'] = "Copier ce lien dans votre barre d'outils ou cliquer droit dessus pour l'ajouter à vos favoris ou votre bookmark";
-$messages['blogit_to_lifetype'] = "Bloguer le sur LifeType!";
-$messages['original_post'] = "(Post original)";
-
-// send trackbacks
-$messages["error_sending_trackbacks"] = "Il y a eu une erreur en envoyant les trackbacks suivants :";
-$messages["send_trackbacks_help"] = "Veuillez sélectionner les URLs où vous souhaitez envoyer des Trackback pings. Veuillez vérifier que ces sites supportent les trackbacks.";
-$messages["send_trackbacks"] = "Envoyer des trackbacks";
-$messages["ping_selected"] = "Faire un ping vers les sites sélectionnés";
-$messages["trackbacks_sent_ok"] = "Trackbacks correctement envoyés aux URLs sélectionnées";
-
-// posts page
-$messages["show_by"] = "Trier par";
-$messages["category"] = "Catégorie";
-$messages["author"] = "Auteur";
-$messages["post_status_all"] = "Tous";
-$messages["author_all"] = "Tous";
-$messages["search_terms"] = "Recherche";
-$messages["show"] = "Montrer";
-$messages["delete"] = "Supprimer";
-$messages["actions"] = "Actions";
-$messages["all"] = "Tous";
-$messages["category_all"] = "Tous";
-$messages["error_incorrect_article_id"] = "ID d'article incorrect";
-$messages["error_deleting_article"] = "Il y a eu une erreur en supprimant l'article \"%s\"";
-$messages["article_deleted_ok"] = "Article \"%s\" supprimé";
-$messages["articles_deleted_ok"] = "%s articles supprimés";
-$messages["error_deleting_article2"] = "Il y a eu une erreur en supprimant l'article d'ID \"%s\"";
-
-// edit post page
-$messages["update"] = "Mettre à jour";
-$messages["editPost"] = "Editer l'article";
-$messages["post_updated_ok"] = "Article \"%s\" mis à jour";
-$messages["error_updating_post"] = "Il y a eu une erreur en mettant à jour l'article";
-$messages["notification_added"] = "Une notification vous sera envoyée par mail à chaque nouveau commentaire ou trackback.";
-$messages["notification_removed"] = "Aucune notification ne vous sera envoyée par mail à chaque nouveau commentaire ou trackback.";
-
-// post comments
-$messages["url"] = "URL";
-$messages["comment_status_all"] = "Tous";
-$messages["comment_status_spam"] = "Spam";
-$messages["comment_status_nonspam"] = "Pas de Spam";
-$messages["error_fetching_comments"] = "Erreur en récupérant les commentaires.";
-$messages["error_deleting_comments"] = "Erreur en supprimant les commentaires ou il n'y avait pas de commentaire sélectionné";
-$messages["comment_deleted_ok"] = "Commentaire \"%s\" supprimé";
-$messages["comments_deleted_ok"] = "%s commentaires supprimés";
-$messages["error_deleting_comment"] = "Erreur en supprimant le commentaire \"%s\"";
-$messages["error_deleting_comment2"] = "Erreur en supprimant le commentaire d'ID %s";
-$messages["editComments"] = "Commentaires";
-$messages["mark_as_spam"] = "Marquer comme spam";
-$messages["mark_as_no_spam"] = "Marquer comme non-spam";
-$messages["error_incorrect_comment_id"] = "ID du commentaire incorrect.";
-$messages["error_marking_comment_as_spam"] = "Erreur de marquage du commentaire comme spam.";
-$messages["comment_marked_as_spam_ok"] = "Commentaire bien marqué comme spam.";
-$messages["error_marking_comment_as_nonspam"] = "Erreur de marquage du commentaire comme non-spam.";
-$messages["comment_marked_as_nonspam_ok"] = "Commentaire bien marqué comme non-spam.";
-
-// post trackbacks
-$messages["blog"] = "Blog";
-$messages["excerpt"] = "Extrait";
-$messages["error_fetching_trackbacks"] = "Erreur en récupérant les trackbacks";
-$messages["error_deleting_trackbacks"] = "Erreur en supprimant les trackbacks ou il n'y avait pas d'élément sélectionné";
-$messages["error_deleting_trackback"] = "Erreur en supprimant le trackback \"%s\"";
-$messages["error_deleting_trackback2"] = "Erreur en supprimant le trackback d'ID \"%s\"";
-$messages["trackback_deleted_ok"] = "Trackback \"%s\" supprimé";
-$messages["trackbacks_deleted_ok"] = "%s trackbacks supprimés";
-$messages["editTrackbacks"] = "Trackbacks";
-
-// post statistics
-$messages["referrer"] = "Referrer";
-$messages["hits"] = "Clics";
-$messages["error_no_items_selected"] = "Aucun élément sélectionné pour suppression";
-$messages["error_deleting_referrer"] = "Erreur en supprimant le referrer \"%s\"";
-$messages["error_deleting_referrer2"] = "Erreur en supprimant le referrer d'ID \"%s\"";
-$messages["referrer_deleted_ok"] = "Referrer \"%s\" supprimé";
-$messages["referrers_deleted_ok"] = "%s referrers supprimés";
-
-// categories
-$messages["posts"] = "Article";
-$messages["show_in_main_page"] = "Montrer sur la page principale ?";
-$messages["error_category_has_articles"] = "La categorie \"%s\" est utilisée par plusieurs articles. Editez les articles d'abord.";
-$messages["category_deleted_ok"] = "Categorie \"%s\" supprimée";
-$messages["categories_deleted_ok"] = "%s categories supprimées";
-$messages["error_deleting_category"] = "Erreur en supprimant la catégorie \"%s\"";
-$messages["error_deleting_category2"] = "Erreur en supprimant la catégorie d'ID \"%s\"";
-$messages["yes"] = "Oui";
-$messages["no"] = "Non";
-
-// new category
-$messages["name"] = "Nom";
-$messages["category_name_help"] = "Ecrire ci-dessous le nom de la catégorie";
-$messages["description"] = "Description";
-$messages["category_description_help"] = "Ecrire ci-dessous la description longue pour cette catégorie";
-$messages["show_in_main_page_help"] = "Montrer les articles sur la page principale ou seulement quand cette categorie particulière est passée en revue.";
-$messages["error_empty_name"] = "Vous devez choisir un nom";
-$messages["error_empty_description"] = "Vous devez entrer une description longue pour cette catégorie";
-$messages["error_adding_article_category"] = "Erreur en ajoutant la catégorie. Verifiez les données entrées et recommencez.";
-$messages["category_added_ok"] = "Categorie \"%s\" correctement ajoutée au blog";
-$messages["add"] = "Ajouter";
-$messages["reset"] = "Effacer";
-
-// update category
-$messages["error_updating_article_category"] = "Erreur en mettant à jour la catégorie de l'article.";
-$messages["error_fetching_category"] = "Erreur en récupérant la catégorie.";
-$messages["article_category_updated_ok"] = "Categorie \"%s\" correctement mise à jour";
-
-// links
-$messages["feed"] = "Flux";
-$messages["error_no_links_selected"] = "L'ID du lien est incorrect ou aucun élément sélectionné pour être supprimé";
-$messages["error_incorrect_link_id"] = "L'ID du lien est incorrect";
-$messages["error_removing_link"] = "Erreur en supprimant le lien \"%s\"";
-$messages["error_removing_link2"] = "Erreur en supprimant le lien d'ID \"%s\"";
-$messages["link_deleted_ok"] = "Lien \"%s\" supprimé";
-$messages["links_deleted_ok"] = "%s liens supprimés";
-
-// new link
-$messages["link_name_help"] = "Nom donné à ce lien";
-$messages["link_url_help"] = "Adresse vers laquelle ce lien pointe";
-$messages["link_description_help"] = "Brève description du lien";
-$messages["link_feed_help"] = "Un lien vers un flux RSS or Atom peut être ajouté";
-$messages["link_category_help"] = "Choisissez une catégorie de lien valide";
-$messages["error_adding_link"] = "Erreur en ajoutant le lien. Vérifiez les données entrées et recommencez.";
-$messages["error_invalid_url"] = "Adresse incorrecte";
-$messages["link_added_ok"] = "Lien \"%s\" ajouté";
-//*$messages['bookmarkit_to_lifetype'] = "Bookmark It to LifeType!";
-
-// update link
-$messages["error_updating_link"] = "Erreur en mettant à jour le lien. Vérifiez les données entrées et recommencez.";
-$messages["error_fetching_link"] = "Erreur en récupérant le lien";
-$messages["link_updated_ok"] = "Lien \"%s\" mis à jour";
-
-// link categories
-$messages["links"] = "Liens";
-$messages["error_invalid_link_category_id"] = "Catégorie de lien incorrecte ou aucune catégorie de liens sélectionnée.";
-$messages["error_links_in_link_category"] = "Catégorie \"%s\" ne peut être supprimée parce qu'elle contient des liens.";
-$messages["error_removing_link_category"] = "Erreur de suppression de la catégorie \"%s\".";
-$messages["link_category_deleted_ok"] = "Catégorie \"%s\" supprimée.";
-$messages["link_categories_deleted_ok"] = "%s catégories supprimées.";
-$messages["error_removing_link_category2"] = "Erreur suppression catégorie ID = %d";
-
-// new link category
-$messages["link_category_name_help"] = "Nom donné à cette catégorie de lien";
-$messages["error_adding_link_category"] = "Erreur en ajoutant la nouvelle catégorie";
-$messages["link_category_added_ok"] = "Catégorie \"%s\" ajoutée.";
-
-// edit link category
-$messages["error_updating_link_category"] = "Erreur en mettant à jour la catégorie de liens. Vérifiez les données entrées et recommencez.";
-$messages["link_category_updated_ok"] = "Catégorie de liens \"%s\" bien mise à jour.";
-$messages["error_fetching_link_category"] = "Erreur en récupérant la catégorie de liens.";
-
-// custom fields
-$messages["type"] = "Type";
-$messages["hidden"] = "Caché";
-$messages["fields_deleted_ok"] = "%s champs personnalisés supprimés";
-$messages["field_deleted_ok"] = "Champ personnalisé \"%s\" supprimé";
-$messages["error_deleting_field"] = "Erreur en suprimant le champ \"%s\"";
-$messages["error_deleting_field2"] = "Erreur en suprimant le champ d'ID \"%s\"";
-$messages["error_incorrect_field_id"] = "ID du champ non valide.";
-
-// new custom field
-$messages["field_name_help"] = "Nom du champ dans l'article";
-$messages["field_description_help"] = "Courte description du champ.";
-$messages["field_type_help"] = "Selectionnez un type de champ";
-$messages["field_hidden_help"] = "Si ce champ est caché, il ne sera pas visible lors de l'ajout ou de l'édition d'un article. Fonction principalement utilisée par les plugins.";
-$messages["error_adding_custom_field"] = "Erreur en ajoutant un champ. Vérifiez les données entrées et recommencez.";
-$messages["custom_field_added_ok"] = "Champ personnalisé \"%s\" ajouté";
-$messages["text_field"] = "Champ texte";
-$messages["text_area"] = "Boîte texte";
-$messages["checkbox"] = "Case à cocher";
-$messages["date_field"] = "Date";
-
-// edit custom field
-$messages["error_fetching_custom_field"] = "Erreur en récupérant le champ.";
-$messages["error_updating_custom_field"] = "Erreur en mettant à jour le champ. Vérifiez les données entrées et recommencez.";
-$messages["custom_field_updated_ok"] = "Champ personnalisé \"%s\" mis à jour.";
-
-// resources
-$messages["root_album"] = "Album principal";
-$messages["num_resources"] = "Nombre de ressources";
-$messages["total_size"] = "Taille totale";
-$messages["album"] = "Album";
-$messages["error_incorrect_album_id"] = "ID de l'album invalide";
-$messages["error_base_storage_folder_missing_or_unreadable"] = "Le système n'a pas pu créer les dossiers nécessaires où déposer les ressources. Plusieurs causes possibles : installation PHP en safe mode, droits insuffisants, ... Vous pouvez toujours procéder manuellement à la création des dossiers: <br/><br/>%s<br/><br/> Si ces dossiers existent déjà, veuillez vérifier que l'utilisateur du serveur web a les droits de lecture/écriture sur ceux-ci.";
-$messages["items_deleted_ok"] = "%s éléments supprimés";
-$messages["error_album_has_children"] = "L'album \"%s\" a des sous-albums. Veuillez d'abord éditer les albums fils.";
-$messages["item_deleted_ok"] = "Elément \"%s\" supprimé";
-$messages["error_deleting_album"] = "Erreur en supprimant l'album \"%s\"";
-$messages["error_deleting_album2"] = "Erreur en supprimant l'album d'ID \"%s\"";
-$messages["error_deleting_resource"] = "Erreur en supprimant la ressource \"%s\"";
-$messages["error_deleting_resource2"] = "Erreur en supprimant la ressource d'ID \"%s\"";
-$messages["error_no_resources_selected"] = "Aucun élément sélectionné pour être supprimé";
-$messages["resource_deleted_ok"] = "Ressource \"%s\" supprimée";
-$messages["album_deleted_ok"] = "Album \"%s\" supprimé";
-$messages["add_resource"] = "Ajouter la ressource";
-$messages["add_resource_preview"] = "Aperçu de la ressource";
-//*$messages['add_resource_medium'] = 'Add medium preview';
-$messages["add_album"] = "Ajouter l'album";
-
-// new album
-$messages["album_name_help"] = "Nom court du nouvel album";
-$messages["parent"] = "Parent";
-$messages["no_parent"] = "Pas de parent";
-$messages["parent_album_help"] = "Utilisez ceci pour imbriquer des albums les uns dans les autres afin de mieux organiser vos fichiers.";
-$messages["album_description_help"] = "Description longue du contenu de l'album";
-$messages["error_adding_album"] = "Erreur en ajoutant le nouvel album. Vérifiez les données entrées et recommencez.";
-$messages["album_added_ok"] = "Album \"%s\" ajouté";
-
-// edit album
-$messages["error_incorrect_album_id"] = "Id de l'album incorrect.";
-$messages["error_fetching_album"] = "Erreur en récupérant l'album.";
-$messages["error_updating_album"] = "Erreur en mettant l'album à jour. Vérifiez les données entrées et recommencez.";
-$messages["album_updated_ok"] = "Album \"%s\" mis à jour";
-$messages["show_album_help"] = "Si cette case est décochée, l'album ne sera pas visible dans la liste des album disponibles sur ce blog.";
-
-// new resource
-$messages["file"] = "Fichier";
-$messages["resource_file_help"] = "Fichier qui sera ajouté au blog. Utilisez le lien \"Ajouter\" pour ajouter plusieurs fichiers en même temps.";
-$messages["add_field"] = "Ajouter";
-$messages["resource_description_help"] = "Description longue du fichier";
-$messages["resource_album_help"] = "Sélectionnez l'album auquel le fichier sera ajouté.";
-$messages["error_no_resource_uploaded"] = "Aucun fichier sélectionné pour être ajouté.";
-$messages["resource_added_ok"] = "Ressource \"%s\" ajoutée";
-$messages["error_resource_forbidden_extension"] = "Type de fichier interdit";
-$messages["error_resource_too_big"] = "Fichier trop volumineux";
-$messages["error_uploads_disabled"] = "Uploads désactivés";
-$messages["error_quota_exceeded"] = "Quota dépassé !";
-$messages["error_adding_resource"] = "Erreur en ajoutant le fichier";
-
-// edit resource
-$messages["editResource"] = "Editer la ressource";
-$messages["resource_information_help"] = "Quelques informations à propos du fichier";
-$messages["information"] = "Information";
-$messages["size"] = "Taille";
-$messages["format"] = "Format";
-$messages["dimensions"] = "Dimensions";
-$messages["bits_per_sample"] = "Bits par échantillon";
-$messages["sample_rate"] = "Taux de l'échantillonnage";
-$messages["number_of_channels"] = "Nombre de canaux";
-$messages["legnth"] = "Longueur";
-$messages["thumbnail_format"] = "Taille de l'aperçu";
-$messages["regenerate_preview"] = "Regénérer l'aperçu";
-$messages["error_fetching_resource"] = "Erreur en récupérant la ressource";
-$messages["error_updating_resource"] = "Erreur en mettant à jour la ressource";
-$messages["resource_updated_ok"] = "Ressource \"%s\" mise à jour";
-
-// blog settings
-$messages["blog_link"] = "Lien vers le blog";
-$messages["blog_link_help"] = "Lien permanent vers ce blog";
-$messages["blog_name_help"] = "Titre du blog";
-$messages["blog_description_help"] = "Description longue du contenu de ce blog";
-$messages["language"] = "Langue";
-$messages["blog_language_help"] = "Langue utilisée pour afficher les textes dans le blog et dans la partie administration.";
-$messages["max_main_page_items"] = "Nombre d'articles sur la page principale";
-$messages["max_main_page_items_help"] = "Nombre d'articles qui peuvent être affichés à la fois sur la page principale de ce blog.";
-$messages["max_recent_items"] = "Nombre d'articles recents";
-$messages["max_recent_items_help"] = "Nombre maximum d'articles affichés comment récents sur la page principale.";
-$messages["template"] = "Gabarit";
-$messages["choose"] = "Choisir..";
-$messages["blog_template_help"] = "Gabarit qui sera utilisé pour afficher le contenu de ce blog. Cette liste contient les gabarits généraux et ceux installés uniquement pour ce blog";
-$messages["use_read_more"] = 'Utiliser le lien "suite..." dans les articles';
-$messages["use_read_more_help"] = 'Si cette case est cochée, seul le texte tapé dans "Texte" sera affiché sur la page principale. Et pour afficher le texte tapé dans "Texte étendu", un lien "suite..." sera ajouté à chaque article.';
-$messages["enable_wysiwyg"] = "Activer l'éditeur riche pour les articles";
-$messages["enable_wysiwyg_help"] = "Active un éditeur HTML complet pour l'édition des articles. L'éditeur fonctionne seulement sur Mozilla 1.3 et ultérieurs, IE 5.5 et ultérieurs.";
-$messages["enable_comments"] = "Active les commentaires par défaut.";
-$messages["enable_comments_help"] = "Active les commentaires pour tous les articles par défaut. Les commentaires pourront être activés ou désactivés pour un article particulier à sa création ou à son édition.";
-$messages["show_future_posts"] = "Montre les articles futurs dans le calendrier.";
-$messages["show_future_posts_help"] = "Les articles dont la date de publication n'est pas passée pourront apparaître dans le calendrier et donc seront visibles par les visiteurs.";
-$messages["comments_order"] = "Ordre des commentaires";
-$messages["comments_order_help"] = "Ordre dans lequel les commentaires apparaîtront sur la page principale.";
-$messages["oldest_first"] = "Les plus anciens en premier";
-$messages["newest_first"] = "Les plus recents en premier";
-$messages["categories_order"] = "Ordre des catégories";
-$messages["categories_order_help"] = "Ordre dans lequel les catégories apparaîtront sur la page principale.";
-$messages["most_recent_updated_first"] = "Les plus récemment mis à jour en premier";
-$messages["alphabetical_order"] = "Ordre alphabétique";
-$messages["reverse_alphabetical_order"] = "Ordre alphabétique inverse";
-$messages["most_articles_first"] = "Le plus lus en premier";
-$messages["link_categories_order"] = "Ordre des catégories de liens";
-$messages["link_categories_order_help"] = "Ordre dans lequel les catégories de liens apparaîtront sur la page principale.";
-$messages["most_links_first"] = "Le plus de liens en premier";
-$messages["most_links_last"] = "Le plus de liens en dernier";
-$messages["time_offset"] = "Fuseau horaire";
-$messages["time_offset_help"] = "Décalage horaire qui sera ajouté dynamiquement à toutes les dates et heures dans le blog";
-$messages["close"] = "Fermer";
-$messages["select"] = "Selectionner";
-$messages["error_updating_settings"] = "Erreur en mettant à jour les paramètres du blog. Vérifiez les données entrées et recommencez";
-$messages["error_invalid_number"] = "Nombre incorrect";
-$messages["error_incorrect_time_offset"] = "Fuseau horaire invalide";
-$messages["blog_settings_updated_ok"] = "Paramètres mis à jour";
-$messages['hours'] = 'Heures';
-
-// user settings
-$messages["username_help"] = "Pseudonyme public. Ce pseudonyme ne pourra être changé par la suite.";
-$messages["full_name"] = "Nom complet";
-$messages["full_name_help"] = "Nom complet de l'utilisateur";
-$messages["password_help"] = "Tapez et confirmez un nouveau mot de passe. Laissez vide pour ne pas le changer.";
-$messages["confirm_password"] = "Confirmez le mot de passe";
-$messages["email"] = "Email";
-$messages["email_help"] = "Email à laquelle les notifications seront envoyées";
-$messages["bio"] = "Votre bio";
-$messages["bio_help"] = "Votre portrait. Description de vous-même.";
-$messages["picture"] = "Photo";
-$messages["user_picture_help"] = "Sélectionnez une photo comme photo personnelle (parmi celles ajoutées à ce blog)";
-$messages["error_invalid_password"] = "Mot de passe inccorect. Vérifiez qu'il n'est pas trop court.";
-$messages["error_passwords_dont_match"] = "Désolé, mot de passe incorrect";
-$messages["error_updating_user_settings"] = "Erreur en mettant à jour les paramètres du membre. Vérifiez les données entrées et recommencez.";
-$messages["user_settings_updated_ok"] = "Paramètres membre mis à jour";
-$messages["resource"] = "Ressource";
-
-// plugin center
-$messages["identifier"] = "ID";
-//*$messages['error_plugins_disabled'] = 'Sorry, Plugins are disabled.';
-
-// blog users
-$messages["revoke_permissions"] = "Retirer des permissions";
-$messages["error_no_users_selected"] = "Aucun membre sélectionné.";
-$messages["user_removed_from_blog_ok"] = "Membre \"%s\" bien supprimé du blog.";
-$messages["users_removed_from_blog_ok"] = "%s membres supprimés";
-$messages["error_removing_user_from_blog"] = "Erreur en supprimant le membre \"%s\" du blog.";
-$messages["error_removing_user_from_blog2"] = "Erreur en supprimant le membre à l'ID \"%s\" du blog.";
-
-// new blog user
-$messages["new_blog_username_help"] = "Pseudo du membre qui aura accès à ce blog. Les nouveaux membres ont seulement accès aux sections \"Réglages\" et \"Gestion des ressources\".";
-$messages["send_notification"] = "Envoyer une notification";
-$messages["send_user_notification_help"] = "Envoyer un email de notification à ce membre";
-$messages["notification_text"] = "Texte de la notification";
-$messages["notification_text_help"] = "Texte qui sera inclu dans le message de notification";
-$messages["error_adding_user"] = "Erreur lors de l'autorisation d'accès. Vérifiez les données entrées et recommencez.";
-$messages["error_empty_text"] = "Vous devez entrer un texte";
-$messages["error_adding_user"] = "Erreur en ajoutant le membre. Vérifiez les données entrées et recommencez.";
-$messages["error_invalid_user"] = "Le membre \"%s\" n'est pas valide ou n'existe pas.";
-$messages["user_added_to_blog_ok"] = "Le membre \"%s\" peut désormais accéder à ce blog.";
-
-// blog templates
-$messages["error_no_templates_selected"] = "Aucun gabarit sélectionné";
-$messages["error_template_is_current"] = "Le gabarit \"%s\" ne peut être supprimé car c'est celui qui est utilisé.";
-$messages["error_removing_template"] = "Erreur en supprimant le gabarit \"%s\"";
-$messages["template_removed_ok"] = "Gabarit \"%s\" supprimé";
-$messages["templates_removed_ok"] = "%s gabarits supprimés";
-
-// new blog template
-$messages["template_installed_ok"] = "Gabarit \"%s\" ajouté";
-$messages["error_installing_template"] = "Erreur durant l'installation du gabarit \"%s\"";
-$messages["error_missing_base_files"] = "Fichier(s) manquant(s)";
-$messages["error_add_template_disabled"] = "Aucun gabarit ne peut être ajouté car cette fonction a été désactivée.";
-$messages["error_must_upload_file"] = "Pas de gabarit à télécharger";
-$messages["error_uploads_disabled"] = "Les uploads ont été désactivés";
-$messages["error_no_new_templates_found"] = "Pas de nouveau gabarit trouvé";
-$messages["error_template_not_inside_folder"] = "Les fichiers du gabarit doivent être dans un répertoire du même nom que le gabarit.";
-$messages["error_missing_base_files"] = "Fichier(s) du gabarit basique manquant(s)";
-$messages["error_unpacking"] = "Erreur en décompressant le fichier";
-$messages["error_forbidden_extensions"] = "Des fichiers d'extensions interdites sont inclus dans le gabarit";
-$messages["error_creating_working_folder"] = "Erreur durant la création du répertoire temporaire nécessaire à la décompression.";
-$messages["error_checking_template"] = "Erreur en vérifiant le gabarit : %s";
-$messages["template_package"] = "Package du gabarit";
-$messages["blog_template_package_help"]  = "Utilisez ce formulaire pour uploader un nouvau gabarit, qui ne sera utilisable que sur votre blog. Si vous ne pouvez pas uploader un gabarit par ce formulaire, uploadez-le à la main dans le répertoire <b>%s</b>, qui est le dossier où les gabarits de blog sont stockés et cliquez sur \"<b>Scanner les gabarits</b>\" . LifeType scannera le dossier et ajoutera automatiquement les nouveaux gabarits.";
-$messages["scan_templates"] = "Scanner les gabarits";
-
-// site users
-$messages["user_status_active"] = "Actif";
-$messages["user_status_disabled"] = "Inactif";
-$messages["user_status_all"] = "Tous";
-$messages["user_status_unconfirmed"] = "non confirmé";
-$messages["error_invalid_user2"] = "Le membre d'ID \"%s\" n'existe pas";
-$messages["error_deleting_user"] = "Erreur en supprimant le membre \"%s\"";
-$messages["user_deleted_ok"] = "Membre \"%s\" supprimé";
-$messages["users_deleted_ok"] = "%s membres supprimés";
-
-// create user
-$messages["user_added_ok"] = "Membre \"%s\" ajouté";
-$messages["error_incorrect_username"] = "Pseudo invalide ou déjà utilisé";
-$messages["user_status_help"] = "Statut actuel du membre";
-$messages["user_blog_help"] = "Blog avec lequel ce membre est initialisé";
-$messages["none"] = "Aucun";
-
-// edit user
-$messages["error_invalid_user"] = "ID du membre invalide ou le membre n'exite pas.";
-$messages["error_updating_user"] = "Erreur en mettant à jour les paramètres du membre. Vérifiez les données entrées et recommencez.";
-$messages["blogs"] = "Blogs";
-$messages["user_blogs_help"] = "Blogs du membre ou de ceux auxquels il a accès";
-$messages["site_admin"] = "Administrateur";
-$messages["site_admin_help"] = "Si ce membre est administrateur, il pourra accéder à la partie \"Administration\" et accomplir des tâches administratives.";
-$messages["user_updated_ok"] = "Membre \"%s\" mis à jour";
-
-// site blogs
-$messages["blog_status_all"] = "Tous";
-$messages["blog_status_active"] = "Actif";
-$messages["blog_status_disabled"] = "Inactif";
-$messages["blog_status_unconfirmed"] = "Non-validé";
-$messages["owner"] = "Propriétaire";
-$messages["quota"] = "Quota";
-$messages["bytes"] = "octets";
-$messages["error_no_blogs_selected"] = "Aucun blog sélectionné pour être désactivé";
-$messages["error_blog_is_default_blog"] = "Ce blog \"%s\" ne peut être supprimé car il s'agit du blog par défaut.";
-$messages["blog_deleted_ok"] = "Blog \"%s\" désactivé";
-$messages["blogs_deleted_ok"] = "%s blogs supprimés";
-$messages["error_deleting_blog"] = "Erreur en désactivant le blog \"%s\"";
-$messages["error_deleting_blog2"] = "Erreur en désactivant le blog d'ID \"%s\"";
-
-// create blog
-$messages["error_adding_blog"] = "Erreur en ajoutant le blog. Vérifiez les données entrées et recommencez";
-$messages["blog_added_ok"] = "Blog \"%s\" ajouté";
-
-// edit blog
-$messages["blog_status_help"] = "Status du blog";
-$messages["blog_owner_help"] = "Membre considéré comme propriétaire du blog, qui aura un contrôle total des paramètres du blog";
-$messages["users"] = "Membres";
-$messages["blog_quota_help"] = "Quota de ressource en octets. Mettre à 0 pour illimité, ou laisser vide pour utiliser le quota par défaut";
-$messages["blog_users_help"] = "Membres qui ont accès à ce blog. Sélectionner un membre à gauche et le mettre à droite pour qu'il ait des droits d'accès au blog";
-$messages["edit_blog_settings_updated_ok"] = "Blog \"%s\"mis à jour";
-$messages["error_updating_blog_settings"] = "Erreur en mettant à jour le blog \"%s\"";
-$messages["error_incorrect_blog_owner"] = "Membre sélectionné comme propriétaire, incorrect.";
-$messages["error_fetching_blog"] = "Erreur en récupérant le blog";
-$messages["error_updating_blog_settings2"] = "Erreur en mettant à jour le blog. Vérifiez les données entrées et recommencez.";
-$messages["add_or_remove"] = "Ajouter ou supprimer des membres";
-
-// site locales
-$messages["locale"] = "Traduction";
-$messages["locale_encoding"] = "Encodage";
-$messages["locale_deleted_ok"] = "Traduction \"%s\" supprimée";
-$messages["error_no_locales_selected"] = "Aucune traduction sélectionnée pour être supprimée";
-$messages["error_deleting_only_locale"] = "Cette traduction ne peut être supprimée car c'est la seule présente sur le système.";
-$messages["locales_deleted_ok"]= "%s traductions supprimées";
-$messages["error_deleting_locale"] = "Erreur en supprimant la traduction \"%s\"";
-$messages["error_locale_is_default"] = "La traduction \"%s\" ne peut être supprimée car il s'agit de la traduction par défaut pour les nouveaux blogs.";
-
-// add locale
-$messages["error_invalid_locale_file"] = "Fichier de traduction invalide";
-$messages["error_no_new_locales_found"] = "Pas de nouveau fichier de traduction trouvé";
-$messages["locale_added_ok"] = "Traduction \"%s\" ajouté";
-$messages["error_saving_locale"] = "Erreur en sauvegardant la nouvelle traduction";
-$messages["scan_locales"] = "Scanner les traductions";
-$messages["add_locale_help"] = "Utilisez ce formulaire pour uploader une nouvelle traduction. Si vous ne pouvez pas uploader de traduction par ce formulaire, uploadez-le manuellement dans le répertoire <b>%s</b>, qui est le dossier où les gabarits de blog sont stockés et cliquez sur \"<b>Scanner les traductions</b>\" . LifeType scannera le dossier et ajoutera automatiquement les nouvelles traductions.";
-
-// site templates
-$messages["error_template_is_default"] = "Le gabarit \"%s\" ne peut être supprimée car il s'agit du gabarit par défaut";
-
-// add template
-$messages["global_template_package_help"] = "Utilisez ce formulaire pour uploader un nouvau gabarit, qui sera utilisable sur tous les nouveaux blogs. Si vous ne pouvez pas uploader un gabarit par ce formulaire, uploadez-le manuellement dans le répertoire <b>%s</b>, qui est le dossier où les gabarits de blog sont stockés et cliquez sur \"<b>Scanner les gabarits</b>\" . LifeType scannera le dossier et ajoutera automatiquement les nouveaux gabarits.";
-
-// global settings
-$messages["site_config_saved_ok"] = "Paramètres de site sauvegardés";
-$messages["error_saving_site_config"] = "Erreur en sauvegardant les paramètres de site";
-
-/// general settings
-$messages["help_comments_enabled"] = "Par défaut, activer ou désactiver les commentaires sur les nouveaux blogs";
-$messages["help_beautify_comments_text"] = "Si activé, les commentaires postés seront formatés en ajoutant des paragraphes et des liens automatiques pour toutes les URLs";
-$messages["help_temp_folder"] = "Répertoire que LifeType peut utiliser pour écrire les données temporaires comme les templates compilés, etc. Utiliser un répertoire hors de cette partie du serveur pour augmenter la sécurité.";
-$messages["help_base_url"] = "URL de base où ce blog est installé";
-$messages["help_subdomains_enabled"] = "Activer ou désactiver les sous-domaines. Veuillez lire la documentation au sujet des sous-domaines pour plus d'informations.";
-$messages["help_subdomains_base_url"] = "Quand les sous-domaines sont activés, cette URL est utilisée à la place de l'URL de base (base_url). Utiliser {blogname} pour donner le nom du blog et {username} pour donner le nom du propriétaire du Blog afin de générer un lien vers le Blog";
-$messages["help_include_blog_id_in_url"] = "Si les sous-domaines sont activés et ques les URLs sont en mode \"normal\", force les URL générées à ne pas utiliser l'identifiant de blog. Ne changez ce paramètre que si vous savez exactement ce que vous faites.";
-$messages["help_script_name"] = "Changez ceci si vous souhaitez renommer index.php en autre chose.";
-$messages["help_show_posts_max"] = "Nombre maximum d'articles affichés sur la page principale. S'applique aux nouveaux blogs uniquement.";
-$messages["help_recent_posts_max"] = "Nombre maximum d'articles récents affichés sur la page principale. S'applique aux nouveaux blogs uniquement.";
-$messages["help_save_drafts_via_xmlhttprequest_enabled"] = "Active ou désactive la fonctionnalité de sauvegarde des brouillons par Ajax";
-$messages["help_locale_folder"] = "Répertoire où sont stockées les traductions";
-$messages["help_default_locale"] = "Langue par défaut des nouveaux blogs.";
-$messages["help_default_blog_id"] = "Blog affiché par défaut si aucun n'est spécifié";
-$messages["help_default_time_offset"] = "Zone horaire par défaut pour les nouveaux blogs";
-$messages["help_html_allowed_tags_in_comments"] = "Tags HTML autorisés dans les commentaires, séparés par des espaces.";
-$messages["help_referer_tracker_enabled"] = "Activer ou désactiver la fonctionnalité de sauvegarde des referers en base de données. Désactivez-la pour améliorer les performances.";
-$messages["help_show_more_enabled"] = "Activer ou désactiver par défaut le lien \"suite\" des articles pour les nouveaux blogs.";
-$messages["help_update_article_reads"] = "Activer ou désactiver le compteur de lectures. Désactivez pour améliorer les performances.";
-$messages["help_update_cached_article_reads"] = "Activer ou désactiver le compteur de lectures des articles mis en cache. Désactivez pour améliorer les performances.";
-$messages["help_xmlrpc_ping_enabled"] = "Activer ou désactiver les pings XML-RPC pour les sites qui les supportent";
-$messages["help_send_xmlrpc_pings_enabled_by_default"] = "Activer ou désactiver cette fonctionnalité par défaut lors de l'ajout ou de la modification d'articles";
-$messages["help_xmlrpc_ping_hosts"] = "URLs des sites disposant d'une interface XML-RPC. Une URL par ligne";
-$messages["help_trackback_server_enabled"] = "Activer ou désactiver la possibilité de recevoir des trackbacks";
-$messages["help_htmlarea_enabled"] = "Activer ou désactiver l'éditeur de texte riche par défaut";
-$messages["help_plugin_manager_enabled"] = "Activer ou désactiver les plugins";
-$messages["help_minimum_password_length"] = "Taille minimale des mots de passe";
-$messages["help_xhtml_converter_enabled"] = "Si cette case est cochée, le système convertira tous le code HTML en code XHTML valide";
-$messages["help_xhtml_converter_aggressive_mode_enabled"] = "Si cette case est cochée, le système essayera encore plus de convertir le code HTML en XHTML valide, mais il n'y aura plus d'erreurs";
-$messages["help_session_save_path"] = "Utilisez ce champ pour spécifier où LifeType sauvegarde des données de session, via la fonction PHP session_save_path(). Veuillez vous assurer que ce dossier est en lecture/écriture pour l'utilisateur du serveur web. Laissez vide pour conserver le dossier PHP par défaut.";
-
-// summary settings
-$messages["help_summary_page_show_max"] = "Nombre d'articles qui seront affichés sur la page résumé. Ce paramètre contrôle toutes les listes de la page de résumé.";
-$messages["help_summary_items_per_page"] = "Nombre de blogs par page dans la section \"Liste de blogs\"";
-$messages["help_forbidden_usernames"] = "Liste de noms d'utilisateur non autorisés à s'inscrire";
-$messages["help_force_one_blog_per_email_account"] = "Restreindre à seulement un blog par adresse email";
-$messages["help_summary_show_agreement"] = "Afficher un message d'avertissement et demander l'acceptation aux utilisateurs qui s'inscrivent";
-$messages["help_need_email_confirm_registration"] = "Obliger les utilisateurs à confirmer leur inscription en cliquant sur un lien envoyé par email (recommandé)";
-$messages["help_summary_disable_registration"] = "Refuser aux utilisateurs de créer des blogs";
-
-// templates
-$messages["help_template_folder"] = "Dossier où sont stockés les gabarits";
-$messages["help_default_template"] = "Gabarit par défaut des nouveaux blogs";
-$messages["help_users_can_add_templates"] = "Autoriser les utilisateurs à uploader leurs propres gabarits";
-$messages["help_template_compile_check"] = "Si décoché, le moteur de gabarits vérifiera à chaque fois si le gabarit a été modifié, et modifiera en conséquence les pages. Ne vérifiez pas pour améliorer les performances";
-$messages["help_template_cache_enabled"] = "Activer le cache de gabarits. Les gabarits seront précompilés, et aucun accès BDD ne sera nécessaire. Recommandé.";
-$messages["help_template_cache_lifetime"] = "Durée de vie du cache en secondes. Mettez -1 pour que le cache n'expire jamais. Si vous mettez à 0, le cache sera désactivé, mais préférez l'option \"Désactiver le cache\" pour réaliser cette fonctionnalité.";
-$messages["help_template_http_cache_enabled"] = "Activer le support des requêtes HTTP conditionnelles. Si activé, LifeType vérifiera le champ \"If-Modified-Since\" de l'en-tête HTTP et n'enverra une réponse que s'il y a lieu. Utilisez ceci pour sauvegarder de la bande passante.";
-$messages["help_allow_php_code_in_templates"] = "Autoriser l'utilisation de code PHP dans les gabarits Smarty ({php}...{/php}). Pour des raisons de sécurité, fortement déconseillé.";
-
-// urls
-$messages["help_request_format_mode"] = "Sélectionner un des formats d'URL disponibles. Si vous utlisez les URLs personnalisées, configurez les paramètres ci-dessous";
-$messages["plain"] = "Simple";
-$messages["search_engine_friendly"] = "Moteur de recherches";
-$messages["custom_url_format"] = "URLs personnalisées";
-$messages["help_permalink_format"] = "Format des liens permanents lors de l'utilisation des URLs personnalisées";
-$messages["help_category_link_format"] = "Format des liens vers les catégories lors de l'utilisation des URLs personnalisées";
-$messages["help_blog_link_format"] = "Format des liens vers les blogs lors de l'utilisation des URLs personnalisées";
-$messages["help_archive_link_format"] = "Format des liens vers les archives lors de l'utilisation des URLs personnalisées";
-$messages["help_user_posts_link_format"] = "Format des liens vers des articles postés par certains membres lors de l'utilisation des URLs personnalisées";
-$messages["help_post_trackbacks_link_format"] = "Format vers les trackbacks page lors de l'utilisation des URLs personnalisées";
-$messages["help_template_link_format"] = "Format des liens vers les pages de templates classiques personnalisées lors de l'utilisation des URLs personnalisées";
-$messages["help_album_link_format"] = "Format des liens vers les albums lors de l'utilisation des URLs personnalisées";
-$messages["help_resource_link_format"] = "format des liens vers les pages de ressources avec des fichiers lors de l'utilisation des URLs personnalisées";
-$messages["help_resource_preview_link_format"] = "Format des liens vers les aperçus des ressources lors de l'utilisation des URLs pérsonnalisées";
-$messages["help_resource_medium_size_preview_link_format"] = "Format des liens vers les aperçus de moyenne taille des ressources lors de l'utilisation des URLs pérsonnalisées";
-$messages["help_resource_download_link_format"] = "Format des liens vers les fichiers lors de l'utilisation des URLs pérsonnalisées";
-
-// email
-$messages["help_check_email_address_validity"] = "Vérifier l'adresse email des nouveaux membres.";
-$messages["help_email_service_enabled"] = "Activer/Désactiver service email.";
-$messages["post_notification_source_address"] = "Adresse email de l'expéditeur des notifications d'article.";
-$messages["help_email_service_type"] = "Méthode d'envoi des emails. A bien configurer.";
-$messages["help_smtp_host"] = "Hôte SMTP.";
-$messages["help_smtp_port"] = "Port SMTP.";
-$messages["help_smtp_use_authentication"] = "Si SMTPS compléter la suite.";
-$messages["help_smtp_username"] = "Pseudo pour SMTPS.";
-$messages["help_smtp_password"] = "MDP pour SMTPS.";
-
-// helpers
-$messages["help_path_to_tar"] = "Chemin vers 'tar'.";
-$messages["help_path_to_gzip"] = "Chemin vers  'gzip'.";
-$messages["help_path_to_bz2"] = "Chemin vers 'bzip2'.";
-$messages["help_path_to_unzip"] = "Chemin vers 'unzip'.";
-$messages["help_unzip_use_native_version"] = "Utiliser les fonctions PHP natives pour décompresser les fichiers .zip";
-
-// uploads
-$messages["help_uploads_enabled"] = "Activer/Désactiver l'upload de TOUS fichiers.";
-$messages["help_maximum_file_upload_size"] = "Taille maximale en octets des fichiers uploadés.";
-$messages["help_upload_forbidden_files"] = "Liste des extensions de fichiers interdits, séparés par un espace.";
-
-// interfaces
-$messages["help_xmlrpc_api_enabled"] = "Activer/Désactiver XMLRPC pour poster depuis votre bureau.";
-$messages["help_rdf_enabled"] = "Activer la syndication des contenus via Atom ou RSS";
-$messages["help_default_rss_profile"] = "Flux RSS/RDF généré par défaut";
-
-// security
-$messages["help_security_pipeline_enabled"] = "Activer les fonctions de sécurité.";
-$messages["help_maximum_comment_size"] = "Taille maximum en octets des commentaires.";
-
-// bayesian filter
-$messages["help_bayesian_filter_enabled"] = "Activer/Désactiver le filtrage Bayesien (spam).";
-$messages["help_bayesian_filter_spam_probability_treshold"] = "Valeur min pour spam (0.01 > 0.99)";
-$messages["help_bayesian_filter_nonspam_probability_treshold"] = "Valeur max pour non-spam.";
-$messages["help_bayesian_filter_min_length_token"] = "Taille minimum d'un token pour être parsé correctement.";
-$messages["help_bayesian_filter_max_length_token"] = "Taille maximum d'un token.";
-$messages["help_bayesian_filter_number_significant_tokens"] = "Nombre de token par commentaire";
-$messages["help_bayesian_filter_spam_comments_action"] = "Enregistrer dans la BDD les commentaires spam pour entraîner le filtre,  ou les rejeter.";
-$messages["keep_spam_comments"] = "Garder dans la base de données marqués comme \"Spam\"";
-$messages["throw_away_spam_comments"] = "Ne pas les sauvegarder";
-
-// resources
-$messages["help_resources_enabled"] = "Activer ou non les ressources";
-$messages["help_resources_folder"] = "Répertoire où les ressources sont stockées. Mettre hors de la partie du serveur utilisée pour augmenter la sécurité";
-$messages["help_thumbnail_method"] = "Méthode de génération d'aperçu. Si vous utilisez PHP, le support de GD est nécessaire.";
-$messages["help_path_to_convert"] = "Répertoire de l'outil \"convert\" du package ImageMagick. Obligatoire si la méthode de génération d'aperçu est \"ImageMagick\"";
-$messages["help_thumbnail_format"] = "Format dans lequel les aperçus seront sauvegardés";
-$messages["help_thumbnail_height"] = "Hauteur par défaut des petits aperçus";
-$messages["help_thumbnail_width"] = "Largeur par défaut des petits aperçus";
-$messages["help_medium_size_thumbnail_height"] = "Hauteur par défaut des aperçus de taille moyenne";
-$messages["help_medium_size_thumbnail_width"] = "Largeur par défaut des aperçus de taille moyenne";
-$messages["help_thumbnails_keep_aspect_ratio"] = "Garde les dimensions de l'aperçu propotionnelles. Pourrait généré des aperçus plus grand que la taille spécifiée au-dessus mais de meilleure qualité.";
-$messages["help_thumbnail_generator_force_use_gd1"] = "Forcer LifeType à utiliser uniquement les fontions GD1";
-$messages["help_thumbnail_generator_user_smoothing_algorithm"] = "Algorithme utilisé pour lisser les aperçus. Utilisé uniquement quand la méthode de génération d'aperçu est GD";
-$messages["help_resources_quota"] = "Quota de ressources pour les blogs par défaut";
-$messages["help_resource_server_http_cache_enabled"] = "Active le support des requêtes HTTP conditionnelles. A activer pour réduire l'utilisation de bande passante.";
-$messages["help_resource_server_http_cache_lifetime"] = "Temps en microsecondes pendant lequel les ressources sont mises en cache";
-//*$messages['same_as_image'] = 'Same as original image';
-
-// search
-$messages["help_search_engine_enabled"] = "Activer ou non le moteur de recherche";
-$messages["help_search_in_custom_fields"] = "Rechercher aussi dans les champs personnalisés";
-$messages["help_search_in_comments"] = "Rechercher aussi dans les commentaires";
-
-// cleanup
-$messages["purge"] = "Nettoyer";
-$messages["cleanup_spam"] = "Nettoyage des spams";
-$messages["cleanup_spam_help"] = "Ceci supprimera définitivement tous les commentaires marqués comme spam. Ils ne sera pas possible de revenir en arrière.";
-$messages["spam_comments_purged_ok"] = "Commentaires spam nettoyés";
-$messages["cleanup_posts"] = "Nettoyer les articles";
-$messages["cleanup_posts_help"] = "Ceci supprimera physiquement tous les articles supprimés (marqué comme \"supprimé\"). Il sera impossible de les récupérer après !";
-$messages["posts_purged_ok"] = "Articles nettoyés";
-
-/// summary ///
-// front page
-$messages["summary"] = "Portail";
-$messages["register"] = "S'inscrire";
-$messages["summary_welcome"] = "Bienvenue !";
-$messages["summary_most_active_blogs"] = "Blogs les plus actifs";
-$messages["summary_most_commented_articles"] = "Articles les plus commentés";
-$messages["summary_most_read_articles"] = "Articles les plus lus";
-$messages["password_forgotten"] = "Vous avez perdu votre mot de passe ?";
-$messages["summary_newest_blogs"] = "Nouveaux blogs";
-$messages["summary_latest_posts"] = "Derniers articles";
-$messages["summary_search_blogs"] = "Recherche d'un blog";
-
-// blog list
-$messages["updated"] = "Mis à jour";
-$messages["total_reads"] = "Total";
-
-// blog profile
-$messages["blog"] = "Blog";
-$messages["latest_posts"] = "Derniers articles";
-
-// registration
-$messages["register_step0_title"] = "Acceptation des conditions d'utilisation";
-//*$messages['agreement'] = 'Agreement';
-$messages["decline"] = "Refuser";
-$messages["accept"] = "Accepter";
-$messages["read_service_agreement"] = "Veuillez lire les termes de ce service et cliquer sur le bouton \"Accepter\" si vous êtes d'accord";
-$messages["register_step1_title"] = "Créer votre compte [1/4]";
-$messages["register_step1_help"] = "Vous devez créer un compte pour ensuite avoir un blog. Ce compte sera le compte principal de ce blog et aura accès à toutes ses fonctionnalités";
-$messages["register_next"] = "Suivant";
-$messages["register_back"] = "Retour";
-$messages["register_step2_title"] = "Créer votre Blog [2/4]";
-$messages["register_blog_name_help"] = "Nom du nouveau blog";
-$messages["register_step3_title"] = "Choisir un gabarit [3/4]";
-$messages["step1"] = "Etape 1";
-$messages["step2"] = "Etape 2";
-$messages["step3"] = "Etape 3";
-$messages["register_step3_help"] = "Sélectionnez un des gabarits disponibles qui sera celui par défaut de votre blog. Vous pourrez le changer ultérieurement";
-$messages["error_must_choose_template"] = "Vous devez choisir un gabarit";
-$messages["select_template"] = "Sélectionner un gabarit";
-$messages["register_step5_title"] = "Merci ! [4/4]";
-$messages["finish"] = "Fin";
-$messages["register_need_confirmation"] = "Un email de confirmation vous a été envoyé, cliquez sur le lien dès que vous recevrez ce message pour démarrer l'édition du blog";
-$messages["register_step5_help"] = "Merci, votre compte et votre blog ont été créés !";
-$messages["register_blog_link"] = 'Si vous voulez voir votre Blog, Vous pouvez aller ici : <a href="%2$s">%1$s</a>';
-$messages["register_blog_admin_link"] = "Si vous préférez rédiger et publier des articles sur votre blog, cliquez ici pour accéder à <a href=\"admin.php\">l'interface d'administration</a>";
-$messages["register_error"] = "Erreur durant la procédure";
-$messages["error_registration_disabled"] = "Désolé, les inscriptions sont momentanément suspendues";
-
-// registration article topic and text
-$messages["register_default_article_topic"] = "Félicitations !";
-$messages["register_default_article_text"] = "Si vous pouvez lire cet article, cela signifie que votre enregistrement s'est déroulé correctement et que vous pouvez démarrer l'édition et la publication d'articles.";
-$messages["register_default_category"] = "Général";
-
-// confirmation email
-$messages["register_confirmation_email_text"] = "Bonjour,
-Vous avez entamé la procédure de création d'un blog.
-Veuillez cliquer sur ce lien pour achever cette procédure et activer votre compte :
-
-%s
-
-Cordialement ";
-$messages["error_invalid_activation_code"] = "Désolé, votre numéro de confirmation est invalide.";
-$messages["blog_activated_ok"] = "Félicitations, votre compte et votre blog ont été activés !";
-
-// forgot your password?
-$messages["reset_password"] = "Réinitialiser votre mot de passe";
-$messages["reset_password_username_help"] = "Nom d'utilisateur (pour qui le mot de passe doit être réinitialisé)";
-$messages["reset_password_email_help"] = "Adresse email utilisée pour l'inscription de cet utilisateur";
-$messages["reset_password_help"] = "Utilisez ce formulaire pour réinitialiser votre mot de passe perdu. Entrez à la fois le nom d'utilisateur et l'adresse email utilisée pour l'inscription.";
-$messages["error_resetting_password"] = "Il y a eu une erreur lors de la réinitialisation du mot de passe. Vérifiez les données entrées et recommencez.";
-$messages["reset_password_error_incorrect_email_address"] = "L'adresse email spécifiée est incorrecte, ou ne correspond pas à celle utilisée pour l'inscription.";
-$messages["password_reset_message_sent_ok"] = "Un email vous a été envoyé. Cliquez sur le lien qu'il contient pour réinitialiser votre mot de passe.";
-$messages["error_incorrect_request"] = "Les paramètres d'URL sont incorrects.";
-$messages["change_password"] = "Nouveau mot de passe";
-$messages["change_password_help"] = "Confirmez votre nouveau mot de passe";
-$messages["new_password"] = "Nouveau mot de passe";
-$messages["new_password_help"] = "Entrez ici votre nouveau mot de passe";
-$messages["password_updated_ok"] = "Votre mot de passe a bien été mis à jour";
-
-// Suggested by BCSE, some useful messages that not available in official locale
-$messages["upgrade_information"] = "Cette page apparait brute et non stylée parce que vous utilisez un navigateur non conforme. Mettez à jour votre navigateur pour la voir dans les meilleures conditions.";
-$messages["jump_to_navigation"] = "Aller au menu";
-$messages["comment_email_never_display"] = "Retours à la ligne automatiques, adresse email jamais affichée.";
-$messages["comment_html_allowed"] = "<acronym title=\"Hypertext Markup Language\">HTML</acronym> allowed: &lt;<acronym title=\"Hyperlink\">a</acronym> href=&quot;&quot; title=&quot;&quot; rel=&quot;&quot;&gt; &lt;<acronym title=\"Acronym Description\">acronym</acronym> title=&quot;&quot;&gt; &lt;<acronym title=\"Quote\">blockquote</acronym> cite=&quot;&quot;&gt; &lt;<acronym title=\"Strike\">del</acronym>&gt; &lt;<acronym title=\"Italic\">em</acronym>&gt; &lt;<acronym title=\"Underline\">ins</acronym>&gt; &lt;<acronym title=\"Bold\">strong</acronym>&gt;";
-$messages["trackback_uri"] = "L'<acronym title=\"Uniform Resource Identifier\">URI</acronym> de trackback pour cet article est : ";
-$messages["previous_post"] = "Précédent";
-$messages["next_post"] = "Suivant";
-$messages["comment_default_title"] = "(Sans titre)";
-$messages["guestbook"] = "Livre d'or";
-$messages["trackbacks"] = "Trackbacks";
-$messages["menu"] = "Menu";
-$messages["albums"] = "Albums";
-$messages['admin'] = 'Administrateur';
-$messages['xmlrpc_ping_ok'] = 'Ping XMLRPC envoyer avec succès';
-$messages['error_sending_xmlrpc_ping'] = "Erreur lors de l'envoi du ping XMLRPC vers : ";
-$messages['error_sending_xmlrpc_ping_message'] = "Erreur lors de l'envoi du ping XMLRPC : ";
-
-//
-// new strings for 1.1 -- no need to translate yet!
-//
-$messages['error_incorrect_trackback_id'] = "L'identifiant du trackback est incorrect"; // 'The trackback identifier is not correct';
-$messages['error_marking_trackback_as_spam'] = "Erreur lors du marquage du trackback comme spam"; //'There was an error marking the trackback as spam';
-$messages['trackback_marked_as_spam_ok'] = "Succès du marquage du trackback comme spam"; // 'The trackback was marked as successfully as spam';
-$messages['error_marking_trackback_as_nonspam'] = "Erreur lors du marquage du trackback comme non spam"; // 'There was an error marking the trackback as non-spam';
-$messages['trackback_marked_as_nonspam_ok'] = "Succès du marquage du trackback comme non spam"; //'The trackback was marked successfully as non-spam';
-$messages['upload_here'] = "Téléchargement ici"; //'Upload here';
-$messages['reply_string'] = 'Re: ';
-$messages['cleanup_users'] = "Purge des utilisateurs"; //'Purge Users';
-$messages['cleanup_users_help'] = "Cette action purge tous les utilisateurs qui avaient été supprimés par l'administrateur (marqué comme \"supprimé\"). Il enlèvera également tous les blogs et leurs contenus de cet utilisateur. Si un utilisateur avait des droits pour poster dans d'autres blogs, tous ces posts seront supprimés. Il n'est pas possible de revenir en arrière après la purge.";  //'This will remove all users that have been deleted by administrator (marked as "Deleted"). It will also remove any blogs that user own including everything in that blog. If user has permission to post in other blog, all posts made by them will be deleted as well.  It will not be possible to recover once users have been removed';
-$messages['users_purged_ok'] = "Purge des utilisateurs réussie"; //'Users purged successfully';
-$messages['cleanup_blogs'] = "Purge des blogs"; //'Purge Blogs';
-$messages['cleanup_blogs_help'] = "Cette action purge tous les blogs qui avaient été supprimés par l'administrateur (marqué comme \"supprimé\"). Il supprime tout le contenu de ces blogs. Il n'est pas possible de revenir en arrière après la purge."; //'This will remove all blogs that have been deleted by administrator (marked as "Deleted"). It will remove everthing in that blog.  It will not be possible to recover once users have been removed';
-$messages['blogs_purged_ok'] = "Purge des blogs réussite"; //'Blogs purged successfully';
-$messages['help_use_http_accept_language_detection'] = "La plupart des navigateurs, comme Mozilla Firefox, Safari ou Internet Explorer, envoie le code de la langue que de l'utilisateur est <i>sensé</i> comprendre. Si cette fonctionnalité est activée, LifeType essaye, si possible, de servir l'utilisateur avec la langue demandée. [Non par défaut]"; //'Most web browsers such as Mozilla Firefox, Safari or Internet Explorer send at least one language code the user <i>should</i> understand. If this feature is activated, pLog tries to serve the user with the requested language if it\'s available. [Default = No]';
-
-$messages['error_invalid_blog_category'] = "Catégorie de blog invalide"; //'Invalid blog category';
-$messages['error_adding_blog_category'] = "Erreur lors de l'ajout d'une catégorie de blog"; //'There was an error adding the blog category';
-$messages['newBlogCategory'] = "Nouvelle catégorie de blog"; //'New Blog Category';
-$messages['editBlogCategories'] = "catégorie de blog"; //'Blog Categories';
-$messages['blog_category_added_ok'] = "Succès de l'ajout de la catégorie de blog"; //'Blog category added successfully';
-$messages['error_blog_category_has_blogs'] = 'La catégorie de blog "%s" est assignée à certains blogs. Editer ces blogs et réessayer à nouveau.'; //'The blog category "%s" has some blogs assigned to it. Please edit first the blogs and then try again.';
-$messages['error_deleting_blog_category'] = 'Une erreur s\'est produite lors de la suppression de la catégorie de blog "%s".'; //'There was an error deleting blog category "%s"';
-$messages['blog_category_deleted_ok'] = 'La catégorie de blog "%s" a été supprimée avec succès'; //'Blog category "%s" was deleted successfully';
-$messages['blog_categories_deleted_ok'] = 'Catégorie de blog "%s" supprimée avec succès'; //'%s blog categories deleted successfully';
-$messages['error_deleting_blog_category2'] = 'Une erreur s\'est produite lors de la suppression de la catégorie de blog ayant comme identifiant %s.'; //'There was an error removing the blog category with id %s';
-$messages['blog_category'] = 'Catégorie de blog'; //'Blog Category';
-$messages['blog_category_help'] = "Catégorie générale de blog assignée à ce blog"; //'Global blog category assigned to this blog';
-
-$messages['help_use_captcha_auth'] = "Utiliser un mécanisme de CAPTCHA lors de processus d'inscription pour éviter automatiquement l'inscription des scripts robots"; //'Use a CAPTCHA mechanism in the registration process to prevent automatic registration by robotic scripts';
-$messages['help_skip_dashboard'] = "La page de tableau de bord ne sera plus affichée à la connection des utilisateurs qui seront dirigés vers le premier blog auquel ils appartiennent."; //'The dashboard page will not be shown anymore and instead users will be taken to the first blog to which they belong right away';
-
-$messages['manageGlobalArticleCategory'] = "Catégories globales d'article"; //'Global Article Categories';
-$messages['newGlobalArticleCategory'] = "Nouvelle catégorie globale d'article"; //'New Global Article Category';
-$messages['editGlobalArticleCategories'] = "Editer les catégories globales d'article"; //'Global Article Categories';
-$messages['global_category_name_help'] = "Nom de la nouvelle catégorie globale d'article"; //'Name of the new global article category';
-$messages['global_category_description_help'] = "Description de la nouvelle catégorie globale d'article"; //'Description of the new global article category';
-$messages['error_incorrect_global_category_id'] = "Catégorie globale d'article invalide"; //'Invalid global article category';
-$messages['global_category_deleted_ok'] = 'Catégorie d\'article "%s" supprimée avec succès'; //'Article category "%s" deleted successfully';
-$messages['global_category_added_ok'] = 'Catégorie d\'article "%s" ajoutée avec succès'; //'Global category "%s" added successfully';
-$messages['error_deleting_global_category2'] = 'Erreur lors de la suppression de la catégorie d\'article ayant comme ID "%s".'; //'There was an error removing article category with id = %s';
-
-$messages['help_page_suffix_format'] = "Suffixe qui sera apposé aux URLs qui supportent la pagination."; //'Suffix that will be appended to URLs that support paging';
-
-$messages['help_final_size_thumbnail_width'] = "Largeur finale des images téléchargées. Laisser vide ou à zéro pour stocker l'image originale"; //'Final width of uploaded images. Leave empty or as zero to store the full size image';
-$messages['help_final_size_thumbnail_height'] = "Hauteur finale des images téléchargées. Laisser vide ou à zéro pour stocker l'image originale"; //'Final height of uploaded images. Leave empty or as zero to store the full size image';
-$messages['error_comment_too_big'] = "Ce commentaire est trop long."; //'The comment is too big';
-$messages['error_you_have_been_blocked'] = "Bloqué : cette demande n'a pas été accomplie."; //'Blocked: this request was not completed.';
-$messages['created'] = "Créé"; //'Created';
-$messages['view'] = "Vue"; //'View';
-$messages['editUser'] = "Editer l'utilisateur"; //'Edit User';
-$messages['help_urlize_word_separator'] = "Caractère qui sera employé comme séparateur de mot pour les URLs des pages LifeType. Il sera aussi utilisé pour la génération des noms de blogs si le support des sous-domaines est activé. [\"_\" par défaut]"; //'Character that will be used as the word separator when generating URLs pointing to LifeType pages. This will also be used when generating hostnames from blog names if support for subdomains is activated. [Default = _]';
-$messages['help_summary_template_cache_lifetime'] = "Temps en secondes de mise en cache des pages sommaires. Si différent de 0, le cache sera conservé le temps indiqué au lieu d'être généré à chaque changement des données. [0 par défaut]"; //'Life time in seconds of the summary cached pages. If set to something else than \'0\' the summary pages will be kept for as long as indicated here insted of being refreshed every time data changes. [Default = 0]';
-$messages['register_default_album_name'] = "Général"; //'General';
-$messages['register_default_album_description'] = "Utiliser cet album pour télécharger de nouvelles images"; //'Use this album to upload new pictures.';
-$messages['show_in_summary'] = "Montrer dans le sommaire"; //'Show in Summary';
-$messages['show_in_summary_help'] = "Inclure ce blog dans le sommaire du site"; //'Include this blog in the summary page of this site.';
-
-$messages['saving_message'] = "Sauvegarde..."; //'Saving ...';
-$messages['show_option_panel'] = "Montrer les options"; //'Show Options';
-$messages['hide_option_panel'] = "Cacher les options"; //'Hide Options';
-
-$messages['quick_launches'] = "Lancement rapide"; //'Quick Launches';
-$messages['confirmation_message_resent_ok'] = "Message de confirmation renvoyé avec succès."; //'Confirmation message resent successfully.';
-$messages['goto_blog_page'] = "Aller à %s"; //'Go to %s';
-$messages['help_num_blogs_per_user'] = "Nombre de blog qu'un utilisateur peux créer par l'interface d'administration."; //'Number of blogs that an owner can create through the administration interface';
-
-$messages['massive_change_option'] = "Options d'édition en masse"; //'Bulk Edit Options';
-$messages['show_massive_change_option'] = "Montrer les options d'édition en masse"; //'Show Bulk Edit Options';
-$messages['hide_massive_change_option'] = "Cacher les options d'édition en masse"; //'Hide Bulk Edit Options';
-$messages['change_status'] = "Changer le statut"; //'Change Status';
-$messages['change_category'] = "Changer la catégorie"; //'Change Category';
-
-$messages['error_post_status'] = "Sélectionner les status du post."; //'Please select post status.';
-$messages['error_comment_status'] = "Sélectionner les status du commentaire."; //'Please select comment status.';
-$messages['admin_mode'] = "Mode d'administration"; //'Admin Mode';
-$messages['administrate_user_blog'] = "Administrer ce blog"; //'Administrate this blog';
-$messages['trackbacks_updated_ok'] = "%s Trackbacks misent à jour avec succès"; //'%s trackbacks updated successfully';
-$messages['trackback_updated_ok'] = "Trackback mis à jour avec succès"; //''Trackback updated successfully';
-$messages['error_trackback_status'] = "Sélectionner un statut valide"; //'Please select a valid status';
-$messages['select'] = "Sélectionner"; //'Select';
-$messages['remove_selected'] = "Choix supprimés"; //'Remove Selected';
-
-$messages['notification_subject'] = "Système de notification de LifeType"; //'LifeType Notification System';
-$messages['error_no_trackback_links_sent'] = "Alerte: Aucun trackback n'a été envoyé."; //'Warning: No Trackbacks were sent.';
-
-$messages['help_logout_destination_url'] = "URL vers laquelle les utilisateurs sont renvoyés quand ils se déconnectent (par exemple, la page d'accueil du site). Si laisser vide, alors la URL sera celle de la page de connection. [vide par défaut]"; //'URL where users will be sent when logging out, like for example the front page of your service. Leave empty in order to use the default value (the login page) [Default = empty]';
-
-$messages['help_http_cache_lifetime'] = "Temps de vie, en secondes, des pages dans le cache côté client (Les navigateurs n'interrogeront pas le serveur, et donneront la page qu'ils auront conservés dans leur cache). Cela augmente la vitesse de chargement des pages lors de la navigation, mais les nouveaux posts ou commentaires ne seront pas tout de suite visible. [1800 par défaut]"; //'Lifetime in seconds of the client side cache (browsers will not return to the server for this long, and pages will be served from the local cache.  This greatly speeds up the browsing experience, but will delay post and comment visibility. [Default = 1800]';
-
-$messages['trackbacks_no_trackback'] = "L'envoi d'un trackback à l'URL suivante a échoué : "; //'Sending a trackback to the following URL failed: ';
-
-$messages['error_comment_spam_throw_away'] = "Vous ne pouvez pas poster ce message car le filtre anti-spam l'a bloqué."; //'You cannot post this message. Anti-spam filter has blocked it.';
-$messages['error_comment_spam_keep'] = "Le filtre anti-spam a placé votre commentaire dans une liste de modération dans l'attente de sa validation par le propriétaire de ce blog."; //'The anti-spam filter has put your comment in the moderation queue and it will have to be approved by the blog owner.';
-
-$messages['blog_categories'] = "Catégories de blog"; //'Blog Categories';
-$messages['global_article_categories'] = "Catégories globales d'article"; //'Global Article Categories';
-
-$messages['help_force_posturl_unique'] = "Forcer l'unicité des URLs de post d'un blog. Cela n'est nécessaire que si vous changez les URLs et enlevez l'indication des dates dans celles-ci. [Non par défaut]"; //'Force all post URLs within a blog to be unique.  This is only needed if you are changing the URLs and are removing the date portions of the URL. [Default = no]';
-
-$messages['default_send_notification'] = "Notification par défaut envoyée"; //'Default Send Notification';
-
-$messages['enable_pull_down_menu'] = "Abaisser le menu"; //'Pull Down Menu';
-$messages['enable_pull_down_menu_help'] = "Activer ou désactiver l'abaissement du menu."; //'Enable or disable the pull down menu.';
-
-$messages['change_album'] = "Changer l'album"; //'Change Album';
-
-$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Erreur" class="InfoIcon"/><p class="ErrorText">Vous semblez vouloir quitter cette page sans avoir sauver votre post.  Si oui, vous pouvez <a href="#" onclick="restoreAutoSave();">Cliquer ici pour le restaurer</a> ou <a href="#" onclick="eraseAutoSave();">le supprimer</a>.</p>'; //'<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">You seem to have left here without saving your post. If so, you may <a href="#" onclick="restoreAutoSave();">click here to restore it</a> or <a href="#" onclick="eraseAutoSave();">delete it</a>.</p>';
-
-$messages['before_unload_message'] = "Il semble que vous avez un post non sauvé. Etes vous sûre de vouloir quitter ?\n (Si vous ne cliquer pas sur OK dans les secondes du rédémarrage, le système d'auto-sauvegarde rédémarrera de nouveau)."; //'It seems you have unsaved post, are you sure you want to leave?\n (If you don\\\'t press the "Ok" button in restart-seconds seconds, the auto save mechanisim will restart again.)';
-
-$messages['check_username'] = "Vérifier votre nom d'utilisateur"; //'Check User Name';
-$messages['check_username_ok'] = "Félicitation! Votre nom d'utilisateur est disponible."; //'Congradulations! The user name is available!';
-$messages['error_username_exist'] = "Désolé! Votre nom d'utilisateur n'est pas disponible. Essayer en d'autres."; //'Sorry! The user name is not available, please try others.';
-
-$messages['error_rule_email_dns_server_temp_fail'] = "Echec temporaire - Essayer plus tard."; //'Temporary failure - try again later.';
-$messages['error_rule_email_dns_server_unreachable'] = "Serveur de mail inacessible."; //'Email server unreachable.';
-$messages['error_rule_email_dns_not_permitted'] = "Email interdit."; //'E-mail not permitted.';
-
-$messages['blog_users_help'] = "Utilisateurs qui ont accès à ce blog."; //'Users who have access to this blog.';
-
-$messages['summary_welcome_paragraph'] = "Vous devez écrire ici le message de bienvenue que vous voulez que vos utilisateurs voient. Ou enlever celui-ci complètement et réarranger la page entière. Ou prenez le temps :) de jeter un coup d'oeil à templates/summary où sont stockés les templates de cette page. Vous êtes libre de les changer."; // 'You should place here whatever welcome message you would like your users to see. Or remove this one completely and rearrange the whole page. Or something :) Take a look at templates/summary, that is where all template files that make up this page are stored. You are free to change them in any way you like.';
-
-$messages['first_day_of_week'] = 0;
-$messages['first_day_of_week_label'] = "Premier jour de la semaine"; //'First Day of Week';
-$messages['first_day_of_week_help'] = "Premier jour de la semaine dans le calendrier."; //'First Day of Week in calendar';
-
-$message['help_default_global_article_category_id'] = "Id par défaut de la catégorie globale d'article.";
-$message['help_blog_does_not_exist_url'] = "URl de renvoi en cas de blog inexistant.";
-$message['help_post_notification_source_address'] = "Adresse d'envoi des notifications";
-
-//
-// new strings for 1.1
-//
-$messages['error_incorrect_trackback_id'] = "L'identifiant du trackback est incorrect"; //'The trackback identifier is not correct';
-$messages['error_marking_trackback_as_spam'] = "Erreur lors du marquage du trackback comme spam"; //'There was an error marking the trackback as spam';
-$messages['trackback_marked_as_spam_ok'] ="Trackback marqué comme spam"; // 'The trackback was marked as successfully as spam';
-$messages['error_marking_trackback_as_nonspam'] = "Erreur lors du marquage du trackback comme non spam"; //'There was an error marking the trackback as non-spam';
-$messages['trackback_marked_as_nonspam_ok'] = "Trackback marqué comme non spam"; //'The trackback was marked successfully as non-spam';
-$messages['upload_here'] = "Télécharger ici"; //'Upload here';
-$messages['reply_string'] = "A"; //'Re: ';
-$messages['cleanup_users'] = "Purge des utilisateurs"; //'Purge Users';
-$messages['cleanup_users_help'] = "Cette action purge tous les utilisateurs qui avaient été supprimés par l'administrateur (marqué comme \"supprimé\"). Il enlèvera également tous les blogs et leurs contenus de cet utilisateur. Si un utilisateur avait des droits pour poster dans d'autres blogs, tous ces posts seront supprimés. Il n'est pas possible de revenir en arrière après la purge.";  //'This will remove all users that have been deleted by administrator (marked as "Deleted"). It will also remove any blogs that user own including everything in that blog. If user has permission to post in other blog, all posts made by them will be deleted as well.  It will not be possible to recover once users have been removed';
-$messages['users_purged_ok'] = "Purge des utilisateurs réussie"; //'Users purged successfully';
-$messages['cleanup_blogs'] = "Purge des blogs"; //'Purge Blogs';
-$messages['cleanup_blogs_help'] = "Cette action purge tous les blogs qui avaient été supprimés par l'administrateur (marqué comme \"supprimé\"). Il supprime tout le contenu de ces blogs. Il n'est pas possible de revenir en arrière après la purge."; //'This will remove all blogs that have been deleted by administrator (marked as "Deleted"). It will remove everthing in that blog.  It will not be possible to recover once users have been removed';
-$messages['blogs_purged_ok'] = "Purge des blogs réussie"; //'Blogs purged successfully';
-$messages['help_use_http_accept_language_detection'] = "La plupart des navigateurs, comme Mozilla Firefox, Safari ou Internet Explorer, envoie le code de la langue que de l'utilisateur est <i>supposé</i> comprendre. Si cette fonctionnalité est activée, LifeType essaye, si possible, de servir l'utilisateur avec la langue demandée. [Non par défaut]"; //'Most web browsers such as Mozilla Firefox, Safari or Internet Explorer send at least one language code the user <i>should</i> understand. If this feature is activated, LifeType tries to serve the user with the requested language if it\'s available. [Default = No]';
-
-$messages['error_invalid_blog_category'] = "Catégorie de blog invalide"; //'Invalid blog category';
-$messages['error_adding_blog_category'] = "Erreur lors de l'ajout de la catégorie de blogs"; //'There was an error adding the blog category';
-$messages['newBlogCategory'] = "Nouvelle catégorie de blogs"; //'New Blog Category';
-$messages['editBlogCategories'] = "Catégorie de blogs"; //'Blog Categories';
-$messages['blog_category_added_ok'] = "Nouvelle catégorie de blogs ajoutée avec succès"; //'Blog category added successfully';
-$messages['error_blog_category_has_blogs'] = 'La catégorie de blogs "%s" a des blogs qui lui sont assignés. Editez d\'abord ces blogs et reéssayer ensuite.'; //'The blog category "%s" has some blogs assigned to it. Please edit first the blogs and then try again.';
-$messages['error_deleting_blog_category'] = "Une erreur s'est produite lors de la suppression de la catégorie de blogs"; //'There was an error deleting blog category "%s"';
-$messages['blog_category_deleted_ok'] = 'La catégorie de blogs "%s" a été supprimé avec succès'; // 'Blog category "%s" was deleted successfully';
-$messages['blog_categories_deleted_ok'] = 'Catégorie de blogs "%s" supprimée avec succès'; // '%s blog categories deleted successfully';
-$messages['error_deleting_blog_category2'] = 'Une erreur s\'est produite lors de la suppression de la catégorie de blogs dont l\'identifiant est "%s" '; //'There was an error removing the blog category with id %s';
-$messages['blog_category'] = "Catégorie de blogs"; //'Blog Category';
-$messages['blog_category_help'] = "Catégorie générale de blog assignée à ce blog"; //'Global blog category assigned to this blog';
-
-$messages['help_use_captcha_auth'] = "Utiliser un mécanisme de CAPTCHA lors de processus d'inscription pour éviter automatiquement l'inscription des scripts robots"; //'Use a CAPTCHA mechanism in the registration process to prevent automatic registration by robotic scripts [ Default = No ]';
-$messages['help_skip_dashboard'] = "La page de tableau de bord ne sera plus affichée à la connection des utilisateurs qui seront dirigés vers le premier blog auquel ils appartiennent."; //'The dashboard page will not be shown anymore and instead users will be taken to the first blog to which they belong right away [ Default = No ]';
-
-$messages['manageGlobalArticleCategory'] = "Catégories globales d'articles"; //'Global Article Categories';
-$messages['newGlobalArticleCategory'] = "Nouvelle catégorie globale d'articles"; //'New Global Article Category';
-$messages['editGlobalArticleCategories'] = "Editer les catégories globales d'articles"; //''Global Article Categories';
-$messages['global_category_name_help'] = "Nom de la nouvelle catégorie globale d'article"; //'Name of the new global article category';
-$messages['global_category_description_help'] = "Description de la nouvelle catégorie globale d'article"; //'Description of the new global article category';
-$messages['error_incorrect_global_category_id'] = "Catégorie globale d'article invalide"; //'Invalid global article category';
-$messages['global_category_deleted_ok'] = "La catégorie d'article \" %s \" a été supprimée avec succès"; //Article category \"%s\" deleted successfully';
-$messages['global_category_added_ok'] = "La catégorie globale \" %s \" a été ajoutée avec succès"; //'Global category "%s" added successfully';
-$messages['error_deleting_global_category2'] = "Une erreur s'est produite lors du reetrait de la catégorie d'articles avec l'id=%s"; //'There was an error removing article category with id = %s';
-
-$messages['help_page_suffix_format'] = "Suffixe qui sera rajouté aux URLs supportant le paging [Default = \page\{page}]"; //'Suffix that will be appended to URLs that support paging [ Default = /page/{page} ]';
-
-$messages['help_final_size_thumbnail_width'] = "Largeur finale des images uploadées. Laisser vide ou égal à 0 pour stocker les images en taille initiale [ Default=0 ]"; //'Final width of uploaded images. Leave empty or as zero to store the full size image [ Default = 0 ]';
-
-$messages['help_final_size_thumbnail_height'] = "Hauteur finale des images téléchargées. Laisser vide ou égal à 0 pour stocker les images en taille initiale. [ Default = 0 ]"; //'Final height of uploaded images. Leave empty or as zero to store the full size image [ Default = 0 ]';
-
-$messages['error_comment_too_big'] = "Ce commentaire est trop long"; //'The comment is too big';
-
-$messages['error_you_have_been_blocked'] = "Interdit: cette requête n'a pas abouti"; //'Blocked: this request was not completed.';
-
-$messages['created'] = "Créé"; //'Created';
-
-$messages['view'] = "Voir"; //'View';
-
-$messages['editUser'] = "Paramètres de l'utilisateur"; //'Edit User';
-$messages['help_urlize_word_separator'] = 'Caractère qui sera employé comme séparateur de mot pour les URLs des pages LifeType. Il sera aussi utilisé pour la génération des noms de blogs si le support des sous-domaines est activé. [ _ par défaut (underscore)]'; //'Character that will be used as the word separator when generating URLs pointing to LifeType pages. This will also be used when generating hostnames from blog names if support for subdomains is activated. [ Default = _ ]';
-$messages['help_summary_template_cache_lifetime'] ="Durée de vie en secondes du sommaire du cache des pages. Si vous parémétrez une valur autre que \' 0 \' , le sommaire des pages sera conservé aussi longtemps qu'indiqué ici, au lieu d'être mis à jour à chaque changement de données."; // 'Life time in seconds of the summary cached pages. If set to something else than \'0\' the summary pages will be kept for as long as indicated here insted of being refreshed every time data changes. [ Default = 0 ]';
-$messages['register_default_album_name'] ="Général"; // 'General';
-$messages['register_default_album_description'] = "Utiliser cet album pour uploader les nouvelles images"; //'Use this album to upload new pictures.';
-$messages['show_in_summary'] ="Montrer dans le sommaire"; // 'Show in Summary';
-$messages['show_in_summary_help'] = "Inclure ce blog dans le sommaire du site"; //'Include this blog in the summary page of this site.';
-
-$messages['saving_message'] = "Enregistrement en cours..."; //'Saving ...';
-$messages['show_option_panel'] = "Montrer les options"; //'Show Options';
-$messages['hide_option_panel'] = "Masquer les options"; //'Hide Options';
-
-$messages['quick_launches'] = "Lancements rapides"; //'Quick Launches';
-
-$messages['confirmation_message_resent_ok'] = "Message de confirmation réenvoyé vec succès."; //'Confirmation message resent successfully.';
-
-$messages['goto_blog_page'] = "Aller à %s"; //'Go to %s';
-
-$messages['help_num_blogs_per_user'] = "Nombre de blogs que l'utilisateur peut créer à travers cette interface d'administration"; //'Number of blogs that an owner can create through the administration interface';
-
-$messages['massive_change_option'] = "Editer les options en masse"; //'Bulk Edit Options';
-$messages['show_massive_change_option'] ="Voir l'édition des options en masse"; // 'Show Bulk Edit Options';
-$messages['hide_massive_change_option'] ="Masquer l'édition des options en masse"; // 'Hide Bulk Edit Options';
-$messages['change_status'] = "Changer de statut"; //'Change Status';
-$messages['change_category'] = "Changer de catégorie"; //'Change Category';
-$messages['error_updating_comment_no_comment'] = "Une erreur s'est produite lors de la mise à jour du commentaire. Commentaire #%s introuvable."; //'There was an error updating the comment. Comment #%s could not be found';
-$messages['error_updating_comment_wrong_blog'] = "Une erreur s'est produite lors de la mise à jour du commentaire. Le commentaire (%s) n'a pas été posté sur ce blog."; //'There was an error updating the comment. Comment (%s) is not posted on this blog.';
-$messages['error_updating_comment'] = "Une erreur s'est produite lors de la mise à jour de (%s)"; //'There was an error updating (%s)';
-$messages['error_updating_comment_already_updated'] = "Aucun changement fait à (%s)"; //'No change made to (%s)';
-$messages['comment_updated_ok'] = "Commentaire mis à jour avec succès"; //'Comment successfully updated.';
-$messages['comments_updated_ok'] = "%s commentaires mis à jour avec succès"; //'%s comments successfully updated.';
-
-$messages['error_post_status'] ="SVP, sélectionnez le statut du post"; // 'Please select post status.';
-$messages['error_comment_status'] = "SVP, sélectionnez le statut du commentaire"; //'Please select comment status.';
-$messages['admin_mode'] ="Mode Administrateur"; // 'Admin Mode';
-$messages['administrate_user_blog'] = "Administrer ce blog"; //'Administrate this blog';
-$messages['trackbacks_updated_ok'] = "%s trackbacks mis à jour avec succès"; //'%s trackbacks updated successfully';
-$messages['trackback_updated_ok'] = "Trackback mis à jou ravec succès"; //'Trackback updated successfully';
-$messages['error_trackback_status'] = "Veuillez sélectionner un statut valide"; //Please select a valid status';
-$messages['error_incorrect_user'] = "User non valide"; //'User is not valid';
-$messages['select'] ="Sélectionnez"; //'Select';
-$messages['remove_selected'] = "Supprimer la sélection"; //'Remove Selected';
-
-$messages['notification_subject'] = "Système de notification"; //'LifeType Notification System';
-$messages['error_no_trackback_links_sent'] = "Attention: Aucun trackback envoyé"; //'Warning: No Trackbacks were sent.';
-
-$messages['logout_destination_url'] ="URL où les utilisateurs seront dirigés à la déconnexion, comme par exemple la page d'accueil de votre site. Laisser vide pour utiliser la valeur par défaut [Vide par défaut]"; //'URL where users will be sent when logging out, like for example the front page of your service. Leave empty in order to use the default value (the login page) [ Default = empty ]';
-
-$messages['help_http_cache_lifetime'] ="Durée de vie en secondes du cache coté client. Les navigateurs ne feront pas de requête vers le serveur pendant ce laps de temps, et les pages viendront du cache local. La navigation sera plus rapide, mais les posts et les commentaires ne seront pas immédiatemnt visibles."; //'Lifetime in seconds of the client side cache (browsers will not return to the server for this long, and pages will be served from the local cache.  This greatly speeds up the browsing experience, but will delay post and comment visibility. [Default = 1800]';
-
-$messages['trackbacks_no_trackback'] = "L'envoi d'un trackback à l'URL suivante a échoué"; //'Sending a trackback to the following URL failed: ';
-
-$messages['error_comment_spam_throw_away'] ="Vous ne pouvez pas poster ce message.Le filtre anti-spam l'a bloqué"; // 'You cannot post this message. Anti-spam filter has blocked it.';
-$messages['error_comment_spam_keep'] ="L'anti-spam a mis votre commentaire dans la file de modération,et il devra être approuvé par le propriétaire du blog."; // 'The anti-spam filter has put your comment in the moderation queue and it will have to be approved by the blog owner.';
-
-$messages['blog_categories'] = "Catégories de blogs"; //'Blog Categories';
-$messages['global_article_categories'] ="Catégories d'article global"; // 'Global Article Categories';
-
-$messages['help_force_posturl_unique'] = "Forcer l'unicité de toutes les URLs d'articles dans un blog. Nécessaire uniquement si vous changer les URLs et supprimer les dates dans les URLs"; //'Force all post URLs within a blog to be unique.  This is only needed if you are changing the URLs and are removing the date portions of the URL. [ Default = no ]';
-
-$messages['default_send_notification'] = "Notification d'envoi par défaut"; //'Default Send Notification';
-
-$messages['enable_pull_down_menu'] = "Menu Pull Down"; //'Pull Down Menu';
-$messages['enable_pull_down_menu_help'] = "Activer ou désactiver le melu pull down"; //'Enable or disable the pull down menu.';
-
-$messages['change_album'] = "Changer d'album"; //'Change Album';
-
-$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Erreur" class="InfoIcon"/><p class="ErrorText">Vous avez quitté cette page sans sauvegrder votre article. Si c\'est le cas,<a href="#" onclick="restoreAutoSave();">Cliquez ici pour le récupérer</a> ou <a href="#" onclick="eraseAutoSave();"> supprimez le </a></p> '; // '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">You seem to have left here without saving your post. If so, you may <a href="#" onclick="restoreAutoSave();">click here to restore it</a> or <a href="#" onclick="eraseAutoSave();">delete it</a>.</p>';
-
-$messages['check_username'] = "Vérifier le pseudo"; //'Check User Name';
-$messages['check_username_ok'] = "Le pseudo est disponible"; //'The user name is available!';
-$messages['error_username_exist'] = "Désolé, le pseudo n'est pas disponible. Essayez-en d'autres."; //'Sorry! The user name is not available, please try others.';
-
-$messages['error_rule_email_dns_server_temp_fail'] = "Echec temporaire - essayez plus tard"; //'Temporary failure - try again later.';
-$messages['error_rule_email_dns_server_unreachable'] = "Echec de la connexion au serveur mail"; //'Email server unreachable.';
-$messages['error_rule_email_dns_not_permitted'] = "Emails interdits"; //'E-mail not permitted.';
-
-$messages['blog_users_help'] = "Utilisateurs autorisés sur ce blog"; //'Users who have access to this blog.';
-
-$messages['summary_welcome_paragraph'] = "Placez ici le message de bienvenue que verrons vos utilisateurs. Ou supprimer complètement le message actuel et réorganiser la page entière. Ou autre chose ;-) Jetez un coup d'oeil dans templates/summary , c'est l'endroit où les fichiers qui constituent cette page sont stockés. Vous êtes libre de les modifier à votre guise."; //'You should place here whatever welcome message you would like your users to see. Or remove this one completely and rearrange the whole page. Or something :) Take a look at templates/summary, that is where all template files that make up this page are stored. You are free to change them in any way you like.';
-
-$messages['first_day_of_week'] = 0;
-$messages['first_day_of_week_label'] = "Premier jour de la semaine"; //'First Day of Week';
-$messages['first_day_of_week_help'] = "Premier jour de la semaine sur le calendrier"; //'First Day of Week in calendar';
-
-$messages['help_subdomains_base_url'] ="Quand les sous-domaines sont activés, cette URL ets utilisé à la place de base_url. Utilisez {blogname} pour obtenir le nom du blog, {username} pour obtenir le nom du propriétaire du blog et {blogdomain} pour permettre à l'utilisateur de spécifier un sous-domaine pour générer un lien vers un blog. ( Exple: http://{blogname}.yourdomain.com )"; //  'When subdomains are enabled, this base URL is used instead of base_url. Use {blogname} to get the blog name, {username} to get the name of the user owner of the blog and {blogdomain} to allow the user to specify any subdomain in order to generate a link to a blog. (e.g.. http://{blogname}.yourdomain.com)';
-
-$messages['registration_default_subject'] = "Confirmation d'enregistrement"; //'LifeType registration confirmation';
-
-$messages['error_invalid_subdomain'] = "Le nom du sous-domaine est invalide ou n'est pas unique"; //'The subdomain name is not valid or it is not unique';
-$messages['register_blog_domain_help'] = "Nom et sous-domaine que vous souhaitez utiliser pour votre nouveau blog"; //'Name and subdomain that you would like to use for your new blog';
-$messages['domain'] = 'Domain';
-$messages['help_subdomains_available_domains'] = "Entrer un ensemble des domaines pricnipaux autorisés en les séparant par des espaces. L'utilisateur verra une liste déroulante de ces valeurs et pourra ajouter le sous-domaine de son choix. Ceci est utilisé uniquement si vous activez les sous-domaines et utilisez {blogdomain} dans le subdomain_base_url du dessus. Utilisez un point d'interrogation \" ? \" si vous voulez autoriser un domaine. "; //'Enter a space delimited set of main domains allowed.  The user will be presented with a dropdown list of these values, and can add any subdomain he wants.  This is only used if you enabled subdomains and used {blogdomain} in the subdomain_base_url above. Use a \'?\' if you want to allow any domain.';
-$messages['subdomains_any_domain'] = "Multi domaine activé. Tapez le domaine complet"; //'<- Multi-domain enabled. Type in the full domain.';
-$messages['error_updating_blog_subdomain'] = "Une erreur s'est produite lors de la mise à jour du sous-domaine. Vérifiez encore les données et reéssayez"; //'There was an error updating the subdomain.  Please check the data and try again.';
-$messages['error_updating_blog_main_domain'] = "Une erreur s'est produite lors de la mise à à jour les paramètres du site. L'adminsitrateur a probablement mal configuré un paramètre"; //'There was an error updating the main domain setting. This probably means the site administrator has configured something incorrectly.';
-
-$messages['monthsshort'] = Array('Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'); //Array( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
-$messages['weekdaysshort'] = Array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam' ); //Array( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
-
-$messages['search_type'] = "Chercher dans"; //'Search in';
-$messages['posts'] = "Articles"; //'Posts';
-$messages['blogs'] = "Blogs"; //'Blogs';
-$messages['resources'] = "Ressources"; //'Resources';
-$messages['upload_in_progress'] = "Téléchargement en cours. Veuillez patienter"; //'Uploading. Please wait...';
-$messages['error_incorrect_username'] = "Le pseudo est incorrect. Il est déjà utilisé ou est trop long (maximum de 15 caractères)"; //'The username is not correct, it is already in use or it is too long (maximum 15 characters)';
-
-$messages['Miscellaneous'] = "Divers"; //'Miscellaneous';
-$messages['Plugins'] = "Plugins"; //'Plugins';
-
-$messages['auth_img'] = "Code d'authentification"; //'Authentication code';
-$messages['auth_img_help'] = "SVP, tapez le code que vous voyez dans l'image ci-dessous"; //'Please type the code you see in the image below for .';
-
-$messages['global_category'] = "Catégorie générale"; //'Global category';
-$messages['global_article_category_help'] = "Catégorie globale du site pour cet article"; //'Site wide category for this post';
-
-$messages['password_reset_subject'] = "Demande de réinitialisation du mot de passe"; //'LifeType Password Request';
-
-
-
-//
-// new strings for LifeType 1.2
-//
-$messages['auth'] = 'Auth';
-$messages['authenticated'] = 'Authentifié';
-$messages['dropdown_list_field'] = 'Liste déroulante';
-$messages['values'] = 'Valeurs des champs';
-$messages['field_values'] = 'Valeurs qui seront montrés en tant qu\'options dans ce champs. La première sera utilisée comme l\'option par défaut.';
-
-$messages['permission_added_ok'] = 'Permission ajoutée avec succès';
-$messages['core_perm'] = 'Permission de coeur.';
-$messages['admin_only'] = 'Admin-only';
-$messages['permissionsList'] = 'Permissions';
-$messages['newPermission'] = 'Nouvelle Permission';
-$messages['permission_name_help'] = 'Nom unique pour la permission';
-$messages['permission_description_help'] = 'Description de la permisson';
-$messages['core_perm_help'] = 'Si cette permission fait partie des permissions de coeur, il ne sera pas possible de l\'effacer';
-$messages['admin_only_help'] = 'Si cette permission peut être donnée par l\'utilisateur administrateur seulement';
-$messages['error_adding_new_permission'] = 'La nouvelle permission n\'a pas pu etre ajoutée, merci de vérifier vos données';
-$messages['error_incorrect_permission_id'] = 'L\'identifiant de permisson n\'est pas correct';
-$messages['error_permission_cannot_be_deleted'] = 'La permission "%s" n\'a  pas pu être effacée car soit elle a été donnée à au moins un utilisateur soit il s\'agit d\'une autorisation de coeur.';
-$messages['error_deleting_permission'] = 'Une erreur s\'est produite lors de l\'effacement de la permission "%s"';
-$messages['permission_deleted_ok'] = 'La permission "%s" a été supprimée avec succès';
-$messages['permissions_deleted_ok'] = 'Les permissions "%s" ont été supprimées avec succès';
-$messages['error_deleting_permission2'] = 'Il y a eu une erreur en supprimant la permission avec l\'identifiant "%s"';
-
-$messages['help_hard_show_posts_max'] = 'Nombre maximum possible d\'articles affichés sur les pages du blog. Si l\'utilisateur choisi une valeur au dessus de cette limite, ce nombre sera ignoré et remplacé par cette valeur. [ Défaut = 50 ]';
-$messages['help_hard_recent_posts_max'] = 'Nombre maximum possible d\'articles récents affichés sur les pages du blog. Si l\'utilisateur choisi une valeur au dessus de cette limite, ce nombre sera ignoré et remplacé par cette valeur. [ Défaut = 25 ]';
-
-$messages['error_permission_required'] = 'Vous n\'avez pas assez de permissions pour effectuer l\'action demandée';
-$messages['user_permissions_updated_ok'] = 'Permissions des utilisateurs mise à jour avec succès';
-
-// blog permissions
-$messages['add_album_desc'] = 'Ajouter de nouveaux albums';
-$messages['add_blog_template_desc'] = 'Ajouter de nouveaux gabarits';
-$messages['add_blog_user_desc'] = 'Ajouter de nouveaux utilisateurs';
-$messages['add_category_desc'] = 'Ajouter de nouvelles catégories';
-$messages['add_custom_field_desc'] = 'Ajouter de nouveaux champs personnalisés';
-$messages['add_link_desc'] = 'Ajouter de nouveaux liens';
-$messages['add_link_category_desc'] = 'Ajouter de nouvelles catégories de liens';
-$messages['add_post_desc'] = 'Ajouter de nouveaux articles';
-$messages['add_resource_desc'] = 'Ajouter de nouvelles ressources';
-$messages['blog_access_desc'] = 'Permettre l\'accès à ce blog';
-$messages['update_album_desc'] = 'Mettre à jour les albums existants';
-$messages['update_blog_desc'] = 'Mettre à jour les réglages du blog';
-$messages['update_blog_template_desc'] = 'Mettre à jour le gabarit d\'un blog';
-$messages['update_blog_user_desc'] = 'Mettre à jour les permissions des utilisateurs';
-$messages['update_category_desc'] = 'Mettre à jour les catégories existantes';
-$messages['update_comment_desc'] = 'Mettre à jour les commentaires existants';
-$messages['update_custom_field_desc'] = 'Mettre à jour les champs personnalisés existants';
-$messages['update_link_desc'] = 'Mettre à jour les liens existants';
-$messages['update_link_category_desc'] = 'Mettre à jour les catégories de liens existantes';
-$messages['update_post_desc'] = 'Mettre à jour les articles existants';
-$messages['update_resource_desc'] = 'Mettre à jour les ressources existantes';
-$messages['update_trackback_desc'] = 'Mettre à jour les trackbacks existants';
-$messages['view_blog_templates_desc'] = 'Voir les gabarits du blogs';
-$messages['view_blog_users_desc'] = 'Voir les utilisateurs du blog';
-$messages['view_categories_desc'] = 'Voir les catégories du blog';
-$messages['view_comments_desc'] = 'Voir les commentaires du blogs';
-$messages['view_custom_fields_desc'] = 'Voir les champs personnalisés du blog';
-$messages['view_links_desc'] = 'Voir les liens du blog';
-$messages['view_link_categories_desc'] = 'Voir les catégories de liens du blog';
-$messages['view_posts_desc'] = 'Voir les articles du blog';
-$messages['view_resources_desc'] = 'Voir les ressources du blog';
-$messages['view_trackbacks_desc'] = 'Voir les trackbacks du blog';
-$messages['login_perm_desc'] = 'L\'utilisateur est autorisé à se connecter';
-// admin permissions
-$messages['add_blog_category_desc'] = 'L\'utilisateur peut ajouter des catégories de blog';
-$messages['add_global_article_category_desc'] = 'L\'utilisateur peut ajouter des catégories d\'article globales';
-$messages['add_locale_desc'] = 'L\'utilisateur peut ajouter de nouvelles traductions';
-$messages['add_permission_desc'] = 'L\'utilisateur peut ajouter de nouvelles permissions';
-$messages['add_site_blog_desc'] = 'L\'utilisateur peut ajouter de nouveaux blogs';
-$messages['add_template_desc'] = 'L\'utilisateur peut ajouter de nouveau gabarits';
-$messages['add_user_desc'] = 'L\'utilisateur peut ajouter de nouveaux utilisateurs' ;
-$messages['edit_blog_admin_mode_desc'] = 'L\'utilisateur peut administrer d\'autres blogs (mode admin)';
-$messages['purge_data_desc'] = 'L\'utilisateur peut purger les données';
-$messages['update_blog_category_desc'] = 'L\'utilisateur peut mettre à jour et effacer les catégories de blogs';
-$messages['update_global_article_category_desc'] = 'L\'utilisateur peut mettre à jour et effacer les catégories d\'articles globales';
-$messages['update_global_settings_desc'] = 'L\'utilisateur peut mettre à jour les réglages du site';
-$messages['update_locale_desc'] = 'L\'utilisateur peut mettre à jour et effacer les traductions';
-$messages['update_permission_desc'] = 'L\'utilisateur peut mettre à jour et effacer les permissions';
-$messages['update_plugin_settings_desc'] = 'L\'utilisateur peut mettre à jour les réglages des plugins';
-$messages['update_site_blog_desc'] = 'L\'utilisateur peut mettre à jour et effacer les blogs';
-$messages['update_template_desc'] = 'L\'utilisateur peut mettre à jour et effacer les gabarits';
-$messages['update_user_desc'] = 'L\'utilisateur peut mettre à jour et effacer les utilisateurs';
-$messages['view_blog_categories'] = 'L\'utilisateur peut voir les catégories de blogs';
-$messages['view_global_article_categories_desc'] = 'L\'utilisateur peut voir les catégories d\'articles globales';
-$messages['view_global_settings_desc'] = 'L\'utilisateur peut voir les réglages du site';
-$messages['view_locales_desc'] = 'L\'utilisateur peut voir les traductions';
-$messages['view_permissions_desc'] = 'L\'utilisateur peut voir les permissions';
-$messages['view_plugins_desc'] = 'L\'utilisateur peut voir les plugins installés';
-$messages['view_site_blogs_desc'] = 'L\'utilisateur peut voir les blogs du site';
-$messages['view_templates_desc'] = 'L\'utilisateur peut voir les gabarits';
-$messages['view_users_desc'] = 'L\'utilisateur peut voir les utilisateurs';
-$messages['update_blog_stats_desc'] = 'L\'utilisateur peut effacer les referrers';
-$messages['manage_admin_plugins_desc'] = 'Gérer les caractéristiques admin-only des plugins';
-
-$messages['summary_welcome_msg'] = 'Bienvenue, %s!';
-$messages['summary_go_to_admin'] = "Aller à l'interface d'administration";
-
-$messages['error_can_only_update_own_articles'] = 'Vos permissions vous permettent seulement de modifier vos propres articles.';
-$messages['update_all_user_articles_desc'] = 'Permettre de modifier les articles des autres utilisateurs';
-$messages['error_can_only_view_own_articles'] = 'Vos permissions vous permettent seulement de voir vos propres articles.';
-$messages['view_all_user_articles_desc'] = 'Permettre de voir les articles des autres utilisateurs';
-$messages['error_fetching_permission'] = 'Une erreur s\'est produite lors du chargement de la permission';
-$messages['editPermission'] = 'Editer la permission';
-$messages['error_updating_permission'] = 'Une erreur s\'est produite lors de la mise à jour de la permission';
-$messages['permission_updated_ok'] = 'Permission ajoutée avec succès';
-$messages['error_adding_permission'] = 'Une erreur s\'est produite lors de l\'ajout de la permission';
-$messages['error_cannot_login'] = 'Désolé, vous n\'êtes pas autorisé à vous connecter';
-$messages['admin_user_permissions_help'] = 'Permission Site-wide accordée à cet utilisateur';
-
-$messages['permissions'] = 'Permissions';
-$messages['blog_user_permissions_help'] = 'Permissions accordées à cet utilisateur pour ce blog';
-$messages['pluginSettings'] = 'Réglages du Plugin';
-$messages['user_can_override'] = 'Les utilisateurs peuvent faire des modifications';
-$messages['user_cannot_override'] = 'Les utilisateurs ne peuvent pas faire de modifications';
-$messages['global_plugin_settings_saved_ok'] = 'Réglages globals des plugins sauvegardés avec succès';
-$messages['error_updating_global_plugin_settings'] = 'Une erreur s\'est produite lors de la sauvegarde des réglages globals des plugins';
-$messages['error_incorrect_value'] = 'La valeur n\'est pas correcte';
-$messages['parameter'] = 'Paramètre';
-$messages['value'] = 'Valeur';
-$messages['override'] = 'Override';
-$messages['editCustomField'] = 'Editer les champs personnalisés';
-$messages['view_blog_stats_desc'] = 'Voir les statistiques des blogs';
-$messages['manage_plugins_desc'] = 'Gérer les plugins du blog';
-
-$messages['error_global_category_has_articles'] = 'La catégorie d\'article globale n\'a pas pu être effacée car elle contient encore des articles';
-$messages['error_adding_global_article_category'] = 'Une erreur s\'est produite lors de l\'ajout de la catégorie d\'article globale';
-
-$messages['temp_folder_reset_ok'] = 'Le dossier contenant les fichiers temporaires a été nettoyé avec succès';
-$messages['cleanup_temp_help'] = 'Ceci va entrainer un nettoyage du dossier contenant les fichiers temporaires, forçant le cache des données et des gabarits à être mis à jour pour tous les blogs.';
-$messages['cleanup_temp'] = 'Purger le dossier temporaire';
-
-$messages['comment_only_auth_users'] = 'Seuls les utilisateurs authentifiés peuvent ajouter un commentaire';
-$messages['comment_only_auth_users_help'] = 'Seuls les utilisateurs qui ont un identifiant et un mot de passe valides et qui sont connectés pourront laisser un commentaire';
-$messages['show_comments_max'] = 'Nombre de commentaires par page';
-$messages['show_comments_max_help'] = 'Nombre maximum de commentaires par page [ Défaut = 20 ]';
-$messages['hard_show_comments_max_help'] = 'Limite maximum pour le nombre de commentaires par page [ Défaut = 50 ]';
-
-$messages['error_resource_not_whitelisted_extension'] = 'Le type de fichier n\'est pas autorisé.';
-$messages['help_upload_allowed_files'] = 'Liste de mots séparés d\'un espace représentant les types de fichiers qui peuvent être chargés. L\'utilisation de \'*\' et \'?\' est authorisée. Si la liste des fichiers interdits ainsi que cette option sont actives, la whitelist (fichiers autorisés à être téléchargés) sera prise en compte et la blacklist ignorée [Défaut = Aucun]';
-
-$messages['help_template_load_order'] = 'Défini dans quel ordre les fichiers de gabarits sont recherchés et chargés. Si le réglage est sur \'charger le gabarit par défaut en premier\', Lifetype essaiera de charger en premier les fichiers du dossier templates/default/ et s\'il ne sont pas présents dans ce dossier, essaiera de charger les fichiers de gabarit de l\'utilisateur. Si un même fichier de gabarit est présent au deux endroits, celui du gabarit par défaut sera choisi. Si le réglage est sur \'charger le gabarit de l\'utilisateur en premier\', le gabarit de l\'utilisateur sera toujours choisi en premier et s\'il n\'est pas disponible, le gabarit par défaut sera choisi. Si un même fichier de gabarit est présent au deux endroits, celui de l\'utilisateur sera choisi.';
-$messages['template_load_order_user_first'] = 'Charger le gabarit par défaut en premier';
-$messages['template_load_order_default_first'] = 'Charger le gabarit de l\'utilisateur en premier';
-
-$messages['editBlogUser'] = 'Editer l\'utilisateur du blog';
-
-$messages['help_summary_service_name'] = 'Nom de votre site/service qui apparaîtra  à plusieurs endroits sur la première page ainsi que sur les RSS feeds [ Défaut = vide ]';
-
-$messages['register_step2_help'] = 'Merci de fournir maintenant les informations requisent afin de créer un blog.';
-
-$messages['create_date'] = 'Date créé';
-
-$messages['insert_media'] = 'Inserer un média';
-$messages['insert_more'] = 'Toggle "More..." link';
-
-$messages['purging_please_wait'] = 'Merci de patienter pendant que les données sont purgées. Cette page sera automatiquement rafraîchie jusqu\'à la fin de l\'opération, merci de ne pas essayer d\'arrêter les procédure';
-
-$messages['error_cannot_delete_last_blog_category'] = 'Vous ne pouvez pas effacer la dernière catégorie de blogs.';
-
-$messages['help_logout_destination_url'] = 'URL où les utilisateurs seront dirigés quand ils se déconnecteront, au lieu de la page de connection de l\'interface d\'administration [ Valeur par défaut = vide ]';
-$messages['help_default_global_article_category_id'] = 'Identifiant de la catégorie d\'articles globale [ Défaut = vide ]';
-$messages['help_blog_does_not_exist_url'] = 'URL où les utilisateurs seront dirigés quand ils essaieront d\'accéder un blog qui n\'existe pas sur ce site, au lieu d\être dirigés vers la page par défaut du site [ Défaut = vide ]';
-
-$messages['error_invalid_blog_name'] = 'Le nom du blog n\'est pas valide';
-
-/* strings for /default/ templates */
-$messages['help_forbidden_blognames'] = 'Liste des chaînes de caractères séparées par un espace qui ne peuvent pas être utilisées comme nom de blog. Il est possible d\'utiliser des expressions régulières au lieu de chaînes de caractères pleines. [ Défault = (vide) ]';
-
-$messages['posts_updated_ok'] = 'L\'article %s a été mis à jour avec succès';
-$messages['error_updating_post2'] = 'Une erreur s\'est produite lors de la mise à jour de l\'article avec l\'identifiant %s';
-$messages['resources_updated_ok'] = 'Les ressources %s ont été mis à jour avec succès';
-$messages['error_updating_resource2'] = 'Une erreur s\'est produite lors de la mise àjour de la ressource avec l\'identifiant %s';
-$messages['albums_updated_ok'] = 'Les albums %s ont été mis à jour avec succès';
-$messages['error_updating_album2'] = 'Une erreur s\'est produite lors de la mise à jour de l\'album avec l\'identifiant %s';
-$messages['links_updated_ok'] = 'Les liens %s ont été mis à jour avec succès';
-$messages['error_updating_link2'] = 'Une erreur s\'est produite lors de la mise àjour du lien avec l\'identifiant %s';
-
-$messages['version'] = 'Version';
-
-$messages['error_resources_disabled'] = 'Désolé, mais le chargement de nouvelles ressources  à été désactivé pour ce site';
-$messages['help_login_admin_panel'] = 'Cliquez sur le nom du blog pour accéder à l\'interface d\'administration.';
-
-$messages['Logout'] = 'Déconnexion';
-$messages['bookmarkit_to_lifetype'] = "Mettre en favori sur LifeType!";
-$messages['add_resource_medium'] = 'Ajouter une prévisualisation moyenne';
-$messages['error_plugins_disabled'] = 'Désolé, les plugins sont désactivés.';
-$messages['help_post_notification_source_address'] = 'Adresse e-mail qui apparaitra dans le champs "From:" lors de l\'envoi de mails depuis LifeType. [Défaut = noreply at your.host.com]';
-$messages['same_as_image'] = 'Même que l\'image originale';
-$messages['agreement'] = 'Acceptation des conditions'; 
-
-$messages['blog_updated_ok'] = 'Blog "%s" was successfully updated';
-$messages['blogs_updated_ok'] = '%s blogs were successfully updated';
-$messages['error_updating_blog2'] = 'There was an error updating the blog whose identifier is "%s"';
-$messages['error_updating_blog'] = 'There was an error updating blog "%s"';
-
-$messages['error_updating_user'] = 'There was an error updating user "%s".';
-$messages['user_updated_ok'] = 'User "%s" was successfully updated.';
-$messages['users_updated_ok'] = '%s users were successfully updated';
-$messages['eror_updating_user2'] = 'There was an error updating user with identifier "%s"';
-
-$messages['error_select_status'] = 'Please select a valid status';
-$messages['error_invalid_blog_name'] = 'Sorry, the blog name is not valid';
-
-$messages['help_resources_naming_rule'] = 'The file naming rules for uploaded resources. \'Original File Name\' use original file for uploaded resources. \'Encoded File Name\' use the encoded file name for uploaded resources, the naming rule is [BlogId]-[ResourceId].[Ext]. Please use \'Encoded File Name\' if you install LifeType under Multi-Byte Microsoft Windows environment. <strong>And please don\'t change this option after users start uploading the files into LifeType. It will make uploaded files can\'t be accessed anymore.</strong> [Default = Original File Name]';
-$messages['original_file_name'] = 'Original File Name';
-$messages['encoded_file_name'] = 'Encoded File Name';
-
-$messages['quick_permission_selection'] = 'Quick permission selection';
-$messages['basic_blog_permission'] = 'Allow blog user add, update and delete posts, links and resources';
-$messages['full_blog_permission'] = 'Allow blog user access all blog functions as blog owner';
-
-$messages['error_template_exist'] = 'There was an error upload the template, template "%s" already exist.';
-
-/// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
-?>
+<?php
+
+//Done by Nino NJOPKOU  (nino at akopo.com)
+// My website at http://nino.akopo.com
+// Yaoundé - CAMEROUN (Africa)
+
+/////////////////////////////////////////////////////////////////////////////////////////
+///////////////// STRINGS FOR THE ADMINISTRATION INTERFACE //////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+// login page
+$messages['login'] = 'Connexion';
+$messages['welcome_message'] = 'Bienvenue dans LifeType';
+$messages['error_incorrect_username_or_password'] = 'Désolé, login ou mot de passe incorrect.';
+$messages['error_dont_belong_to_any_blog'] = 'Désolé, vous n\'êtes encore membre d\'aucun blog.';
+$messages['logout_message'] = 'Déconnexion réussie.';
+$messages['logout_message_2'] = 'Cliquer <a href="%1$s">ici</a> pour aller sur %2$s </a>.';
+$messages['error_access_forbidden'] = 'Accès refusé. Vous devez d\'abord vous identifier.';
+$messages['username'] = 'Pseudo';
+$messages['password'] = 'Mot de passe';
+
+// dashboard
+$messages['dashboard'] = 'Tableau de bord';
+$messages['recent_articles'] = 'Les derniers articles';
+$messages['recent_comments'] = 'Les derniers commentaires';
+$messages['recent_trackbacks'] = 'Les derniers trackbacks';
+$messages['blog_statistics'] = 'Stats';
+$messages['total_posts'] = 'Nombre d\'articles';
+$messages['total_comments'] = 'Commentaires';
+$messages['total_trackbacks'] = 'Trackbacks';
+$messages['total_viewed'] = 'Articles lus';
+$messages['in'] = 'dans';
+
+// menu options
+$messages["newPost"] = "Nouveau";
+$messages['Manage'] = 'Gérer';
+$messages['managePosts'] = 'Gérer les articles';
+$messages['editPosts'] = 'Articles';
+$messages['editArticleCategories'] = 'Catégories';
+$messages['newArticleCategory'] = 'Nouvelle catégorie';
+$messages['manageLinks'] = 'Gérer les liens';
+$messages['editLinks'] = 'Liens';
+$messages['newLink'] = 'Nouveau lien';
+$messages['editLink'] = 'Editer les liens';
+$messages['editLinkCategories'] = 'Catégories de liens';
+$messages['newLinkCategory'] = 'Nouvelle catégorie de liens';
+$messages['editLinkCategory'] = 'Editer la catégorie de liens';
+$messages['manageCustomFields'] = 'Gérer les champs personnalisables';
+$messages['blogCustomFields'] = 'Champs personnalisables';
+$messages['newCustomField'] = 'Nouveau champ personnalisable';
+$messages['resourceCenter'] = 'Centre des ressources';
+$messages['resources'] = 'Ressources';
+$messages['newResourceAlbum'] = 'Nouvel album';
+$messages['newResource'] = 'Nouvelle ressource';
+$messages['controlCenter'] = 'Réglages';
+$messages['manageSettings'] = 'Propriétés';
+$messages['blogSettings'] = 'Propriétés du blog';
+$messages['userSettings'] = 'Paramètres utilisateur';
+$messages['pluginCenter'] = 'Gestion des plugins';
+$messages['Stats'] = 'Stats';
+$messages['manageBlogUsers'] = 'Gérer les membres';
+$messages['newBlogUser'] = 'Nouveau membre';
+$messages['showBlogUsers'] = 'Membres';
+$messages['manageBlogTemplates'] = 'Templates';
+$messages['newBlogTemplate'] = 'Nouveau template';
+$messages['blogTemplates'] = 'Templates';
+$messages['adminSettings'] = 'Administration';
+$messages["Users"] = "Membres";
+$messages["createUser"] = "Créer membre";
+$messages["editSiteUsers"] = "Membres";
+$messages["Blogs"] = "Blogs";
+$messages['createBlog'] = 'Créer un blog';
+$messages['editSiteBlogs'] = 'Blogs';
+$messages["Locales"] = "Traductions";
+$messages['newLocale'] = 'Nouvelle traduction';
+$messages["siteLocales"] = "Traductions";
+$messages['Templates'] = 'Templates';
+$messages['newTemplate'] = 'Nouveau template';
+$messages['siteTemplates'] = 'Templates du site';
+$messages["GlobalSettings"] = "Paramètres";
+$messages['editSiteSettings'] = 'Index';
+$messages['summarySettings'] = 'Accueil';
+$messages['templateSettings'] = 'Templates';
+$messages['urlSettings'] = 'URLs';
+$messages['emailSettings'] = 'Email';
+$messages['uploadSettings'] = 'Uploads';
+$messages['helpersSettings'] = 'Aides externes';
+$messages['interfacesSettings'] = 'Interfaces';
+$messages['securitySettings'] = 'Securité';
+$messages['bayesianSettings'] = 'Filtre baysien';
+$messages['resourcesSettings'] = 'Ressources';
+$messages['searchSettings'] = 'Recherche';
+$messages['cleanUpSection'] = 'Nettoyer';
+$messages['cleanUp'] = 'Nettoyer';
+$messages['editResourceAlbum'] = 'Editer l\'album';
+$messages['resourceInfo'] = 'Infos ressources';
+$messages['editBlog'] = 'Editer le blog';
+$messages['Logout'] = 'Déconnexion';
+
+// new post
+$messages['topic'] = 'Sujet';
+$messages['topic_help'] = 'Titre article';
+$messages['text'] = 'Texte';
+$messages['text_help'] = 'Texte de l\'article. Cette partie apparaîtra dans la page d\'accueil.';
+$messages['extended_text'] = 'Texte étendu';
+$messages["extended_text_help"] = "Texte étendu de l'article. Cette partie peut optionellement apparaître sur la page des articles ou sur la page principale. Voir les paramètres du blog pour plus d'informations.";
+$messages['trackback_urls'] = 'URLs réelles des trackbacks';
+$messages['trackback_urls_help'] = "Si l'article auquel vous voulez envoyer le tracback ne supporte le mécanisme de reconnaissance des trackback, merci de préciser ici l'URL réelle de trackback et d'utiliser le saut de ligne pour séparer des URLs différentes";
+$messages['post_slug'] = 'Slug';
+$messages['post_slug_help'] = 'Le slug est utilisé pour générer des liens permanents agréables.';
+$messages['date'] = 'Date';
+$messages["post_date_help"] = "Date à  laquelle l'article a été posté";
+$messages['status'] = 'Statut';
+$messages['post_status_help'] = 'Choisir un statut.';
+$messages['post_status_published'] = 'Publié';
+$messages['post_status_draft'] = 'Brouillon';
+$messages['post_status_deleted'] = 'Supprimé';
+$messages['post_categories_help'] = 'Choisir une ou plusieurs catégories.';
+$messages['post_comments_enabled_help'] = 'Autoriser commentaires';
+$messages['send_notification_help'] = 'Notification des commentaires.';
+$messages['send_trackback_pings_help'] = 'Trackbacks';
+$messages['send_xmlrpc_pings_help'] = 'Pings XMLRPC';
+$messages["save_draft_and_continue"] = "Sauvegarder le brouillon";
+$messages['preview'] = 'Prévisualiser';
+$messages['add_post'] = 'Bloguer!';
+$messages['error_saving_draft'] = 'Une erreur est survenue lors de la sauvegarde de la copie';
+$messages["draft_saved_ok"] = "Brouillon sauvegardé";
+$messages['error_sending_request'] = 'Erreur en envoyant la requête';
+$messages['error_no_category_selected'] = 'Choisissez au moins une catégorie';
+$messages['error_missing_post_topic'] = 'Article manquant';
+$messages['error_missing_post_text'] = 'Texte manquant';
+$messages['error_adding_post'] = 'Erreur en ajoutant l\'article';
+$messages['post_added_not_published'] = 'Article ajouté, mais non publié';
+$messages['post_added_ok'] = 'Article ajouté!';
+$messages['send_notifications_ok'] = 'Une notification sera envoyée pour chaque nouveau commentaire ou trackback.';
+$messages['bookmarklet'] = "Marque-pages";
+$messages['bookmarklet_help'] = "Glisser ce lien dans votre barre d'outils ou faites un clic droit et choisissez -Ajouter aux favoris-.";
+$messages['blogit_to_lifetype'] = "Bloguer!";
+$messages['original_post'] = "<br />(Article d'origine)";
+
+// send trackbacks
+$messages['error_sending_trackbacks'] = 'Erreur lors de l\'ajout des trackbacks suivants';
+$messages['send_trackbacks_help'] = 'Sélectionnez les liens auxquels vous voulez envoyé les trackback. Assurez vous que ces sites supportent les trackbacks.';
+$messages['send_trackbacks'] = 'Envoyer les trackbacks';
+$messages['ping_selected'] = 'Pinguer la sélection';
+$messages['trackbacks_sent_ok'] = 'Trackbacks envoyés  aux URLs sélectionnés';
+
+// posts page
+$messages['show_by'] = 'Classer par';
+$messages['category'] = 'Catégorie';
+$messages['author'] = 'Auteur';
+$messages['post_status_all'] = 'Tous';
+$messages['author_all'] = 'Tous';
+$messages['search_terms'] = 'Chercher';
+$messages['show'] = 'Montrer';
+$messages['delete'] = 'Effacer';
+$messages['actions'] = 'Actions';
+$messages['all'] = 'Tous';
+$messages['category_all'] = 'Toutes';
+$messages['error_incorrect_article_id'] = 'Identifiant de l\'article incorrect';
+$messages['error_deleting_article'] = 'Erreur lors de la suppression de l\'article "%s"';
+$messages['article_deleted_ok'] = 'Article "%s" supprimé';
+$messages['articles_deleted_ok'] = '%s articles supprimés';
+$messages['error_deleting_article2'] = 'Erreur lors de la suppression de l\'article avec identifiant "%s"';
+
+// edit post page
+$messages['update'] = 'Mettre à jour';
+$messages['editPost'] = 'Editer l\'article';
+$messages['error_fetching_post'] = 'Erreur lors de la requête vers l\'article';
+$messages['post_updated_ok'] = 'Article "%s" mis à jour .';
+$messages['error_updating_post'] = 'Erreur lors de la mise à jour de l\'article';
+$messages['notification_added'] = 'Vous recevrez des notifications lors de nouveaux commentaires ou trackbacks';
+$messages['notification_removed'] = 'Aucune notification ne sera envoyée lors des nouveaux commentaires ou trackbacks';
+
+// post comments
+$messages['url'] = 'URL';
+$messages['comment_status_all'] = 'Tous';
+$messages['comment_status_spam'] = 'Spam';
+$messages['comment_status_nonspam'] = 'Pas un spam';
+$messages['error_fetching_comments'] = 'Erreur lors de la requête vers les commentaires des articles';
+$messages['error_deleting_comments'] = 'Erreur lors de la suppression des commentaires, ou aucun commentaire sélectionné au préalable';
+$messages['comment_deleted_ok'] = 'Commentaire "%s" supprimé ';
+$messages['comments_deleted_ok'] = '%s commentaires supprimés ';
+$messages['error_deleting_comment'] = 'Erreur lors de la suppression du commentaire "%s"';
+$messages['error_deleting_comment2'] = 'Erreur lors de la suppression du commentaire avec l\'identifiant %s';
+$messages['editComments'] = 'Commentaires';
+$messages['mark_as_spam'] = 'Marquer comme spam';
+$messages['mark_as_no_spam'] = 'Marquer comme non-spam';
+$messages['error_incorrect_comment_id'] = 'Identifiant du commentaire incorrect';
+$messages['error_marking_comment_as_spam'] = 'Erreur lors du marquage du commentaire comme spam';
+$messages['comment_marked_as_spam_ok'] = 'Commentaire marqué comme spam ';
+$messages['error_marking_comment_as_nonspam'] = 'Erreur lors du marquage du commentaire comme non-spam';
+$messages['comment_marked_as_nonspam_ok'] = 'Commentaire marqué comme non-spam ';
+
+
+// post trackbacks
+$messages['blog'] = 'Blog';
+$messages['excerpt'] = 'Excerpt';
+$messages['error_fetching_trackbacks'] = 'Erreur lors de la requête vers les trackbacks';
+$messages['error_deleting_trackbacks'] = 'Erreur lors de la suppression des trackbacks, ou aucune entrée n\'a été sélectionnée';
+$messages['error_deleting_trackback'] = 'Erreur lors de la suppression du trackback "%s"';
+$messages['error_deleting_trackback2'] = 'Erreur lors de la suppression du trackback avec l\'identifiant "%s"';
+$messages['trackback_deleted_ok'] = 'Trackback "%s" supprimé';
+$messages['trackbacks_deleted_ok'] = '%s trackbacks supprimmés';
+$messages['editTrackbacks'] = 'Trackbacks';
+
+// post statistics
+$messages['referrer'] = 'Referrer';
+$messages['hits'] = 'Clics';
+$messages['error_no_items_selected'] = 'Aucune entrée sélectionnée pour suppression';
+$messages['error_deleting_referrer'] = 'Erreur lors de la suppression du referrer "%s"';
+$messages['error_deleting_referrer2'] = 'Erreur lors de la suppression du referrer avec identifiant "%s"';
+$messages['referrer_deleted_ok'] = 'Referrer "%s" supprimé';
+$messages['referrers_deleted_ok'] = '%s referrers supprimés';
+
+// categories
+$messages['posts'] = 'Articles';
+$messages['show_in_main_page'] = 'Montrer dans la page d\'accueil';
+$messages['error_category_has_articles'] = 'La catégorie "%s" est utilisée par des articles. Editez d\'abord les articles, et ensuite supprimer la catégorie';
+$messages['category_deleted_ok'] = 'Catégorie "%s" supprimée';
+$messages['categories_deleted_ok'] = '%s catégories supprimées';
+$messages['error_deleting_category'] = 'Erreur lors de la suppression de la catégorie "%s"';
+$messages['error_deleting_category2'] = 'Erreur lors de la suppression de la catégorie avec l\'identifiant "%s"';
+$messages['yes'] = 'Oui';
+$messages['no'] = 'Non';
+
+// new category
+$messages['name'] = 'Nom';
+$messages['category_name_help'] = 'Nom utilisée pour afficher la catégorie.';
+$messages['description'] = 'Description';
+$messages['category_description_help'] = 'Description longue de cette catégorie.';
+$messages['show_in_main_page_help'] = 'Sélectionnez pour afficher les articles de cette catégorie sur la page d\'accueil, ou seulement quand on surfe dans cette catégorie particulière.';
+$messages['error_empty_name'] = 'Fournir un nom';
+$messages['error_empty_description'] = 'Fournir une description';
+$messages['error_adding_article_category'] = 'Erreur lors de l\'ajout d\'une nouvelle catégorie. Veuillez vérifier les informations et re-essayer';
+$messages['category_added_ok'] = 'Catégorie "%s" ajouté au blog';
+$messages['add'] = 'Ajouter';
+$messages['reset'] = 'Réinitialiser';
+
+// update category
+$messages['error_updating_article_category'] = 'Erreur lors de la mise à jour de la catégorie de l\'article';
+$messages['error_fetching_category'] = 'Erreur lors de la requête vers la catégorie';
+$messages['article_category_updated_ok'] = 'Catégorie "%s" mise à jour';
+
+// links
+$messages['feed'] = 'Alimenter';
+$messages['error_no_links_selected'] = 'Identifiant du lien incorrect, ou aucune entrée n\'a été sélectionnée pour êter supprimée';
+$messages['error_incorrect_link_id'] = 'Identifiant du lien incorrect';
+$messages['error_removing_link'] = 'Erreur lors de la suppression du lien "%s"';
+$messages['error_removing_link2'] = 'Erreur lors de la suppression du lien avec identifiant "%s"';
+$messages['link_deleted_ok'] = 'Le lien "%s" a été supprimé ';
+$messages['links_deleted_ok'] = 'Liens %s supprimés ';
+
+// new link
+$messages['link_name_help'] = 'Nom du lien';
+$messages['link_url_help'] = 'Adresse vers laquelle pointe ce lien. Exemple: http://www.domaine.com/ (ATTENTION: http:// doit être inclus dans le lien)';
+$messages['link_description_help'] = 'Brève description du lien.';
+$messages['link_feed_help'] = 'Un lien vers un flux RSS ou Atom du lien peut aussi être fourni';
+$messages['link_category_help'] = 'Choisir une parmi les catégories de liens disponibles';
+$messages['error_adding_link'] = 'Erreur lors du rajout du lien. Vérifier les informations et re-essayer';
+$messages['error_invalid_url'] = 'Adresse incorrecte';
+$messages['link_added_ok'] = 'Le lien "%s" a été ajouté ';
+$messages['bookmarkit_to_lifetype'] = 'Rajouter à vos marque-pages';
+
+// update link
+$messages['error_updating_link'] = 'Erreur lors de la mise à jour du lien. Vérifier les informations et re-essayer';
+$messages['error_fetching_link'] = 'Erreur lors de la requête vers le lien';
+$messages['link_updated_ok'] = 'Le lien "%s" a été mis à jour ';
+
+// link categories
+$messages['error_invalid_link_category_id'] = 'L\'identifiant de la catégorie de liens est incorrecte, ou aucune catégorie de lien n\'a été sélectionnée';
+$messages['error_links_in_link_category'] = 'La catégorie de liens "%s" est utilisée par des liens. Modifier d\'abord ces liens et re-essayer';
+$messages['error_removing_link_category'] = 'Erreur lors de la suppression de la catégorie de liens "%s"';
+$messages['link_category_deleted_ok'] = 'La catégorie de liens "%s" a été supprimée ';
+$messages['link_categories_deleted_ok'] = 'Les catégories de liens %s ont été supprimées ';
+$messages['error_removing_link_category2'] = 'Erreur lors de la suppression de la catégorie de liens dont d\'identifiant "%s"';
+
+// new link category
+$messages['link_category_name_help'] = 'Nom donné à cette catégorie de liens';
+$messages['error_adding_link_category'] = 'Erreur lors de l\'ajout de la nouvelle catégorie de liens';
+$messages['link_category_added_ok'] = 'La catégorie de liens "%s" a été ajoutée ';
+
+// edit link category
+$messages['error_updating_link_category'] = 'Erreur lors de la mise à jour de la catégorie de liens. Vérifier les données et re-essayer';
+$messages['link_category_updated_ok'] = 'La catégorie de liens "%s" a été mise à jour ';
+$messages['error_fetching_link_category'] = 'Erreur lors de la requête vers la catégorie de liens';
+
+// custom fields
+$messages['type'] = 'Type';
+$messages['hidden'] = 'Caché';
+$messages['fields_deleted_ok'] = 'Les champs personnalisables %s ont été supprimés ';
+$messages['field_deleted_ok'] = 'Le champ personnalisable "%s" a été supprimé ';
+$messages['error_deleting_field'] = 'Erreur lors de la suppression du champ personnalisable "%s" ';
+$messages['error_deleting_field2'] = 'Erreur lors de la suppression du champ personnalisable avec l\'identifiant "%s" ';
+$messages['error_incorrect_field_id'] = 'Identifiant du champ personnalisable invalide';
+
+// new custom field
+$messages['field_name_help'] = 'Identifiant qui sera utilisé en référence à la valeur de ce champ dans les articles.';
+$messages['field_description_help'] = 'Brève description du champ, qui sera préesenté lors de l\'ajout ou l\'édition d\'articles.';
+$messages['field_type_help'] = 'Choisir l\'un des types de champs disponibles.';
+$messages['field_hidden_help'] = 'Si un champ est caché, il ne sera pas montré lors de l\'ajout ou l\'édition d\'articles. Cette fonctionnalité est surtout utilisée par les plugins.';
+$messages['error_adding_custom_field'] = 'Erreur lors de l\'ajout du champ personnalisable. Vérifier les données et re-essayer';
+$messages['custom_field_added_ok'] = 'Champ personnalisable "%s" ajouté ';
+$messages['text_field'] = 'Texte';
+$messages['text_area'] = 'Boite texte';
+$messages['checkbox'] = 'Case à cocher';
+$messages['date_field'] = 'Date';
+
+// edit custom field
+$messages['error_fetching_custom_field'] = 'Erreur lors de la requête vers le champ personnalisable';
+$messages['error_updating_custom_field'] = 'Erreur lors de la mise à jour du champ personnalisable/ Vérifier les données et re-essayer';
+$messages['custom_field_updated_ok'] = 'Champ personnalisable "%s" mis à jour ';
+
+// resources
+$messages["root_album"] = "Album principal";
+$messages['num_resources'] = 'Nombre de ressources';
+$messages['total_size'] = 'Taille totale';
+$messages['album'] = 'Album';
+$messages['error_incorrect_album_id'] = 'Identifiant de l\'album incorrect';
+$messages["error_base_storage_folder_missing_or_unreadable"] = "Le système n'a pas pu créer les dossiers nécessaires où déposer les ressources. Plusieurs causes possibles : installation PHP en safe mode, droits insuffisants, ... Vous pouvez toujours procéder manuellement à  la création des dossiers: <br/><br/>%s<br/><br/> Si ces dossiers existent déjà , veuillez vérifier que l'utilisateur du serveur web a les droits de lecture/écriture sur ceux-ci.";
+$messages["items_deleted_ok"] = "%s éléments supprimés";
+$messages["error_album_has_children"] = "L'album \"%s\" a des sous-albums. Veuillez d'abord éditer les albums fils.";
+$messages["item_deleted_ok"] = "Elément \"%s\" supprimé";
+$messages["error_deleting_album"] = "Erreur en supprimant l'album \"%s\"";
+$messages["error_deleting_album2"] = "Erreur en supprimant l'album d'ID \"%s\"";
+$messages["error_deleting_resource"] = "Erreur en supprimant la ressource \"%s\"";
+$messages["error_deleting_resource2"] = "Erreur en supprimant la ressource d'ID \"%s\"";
+$messages["error_no_resources_selected"] = "Aucun élément sélectionné pour être supprimé";
+$messages["resource_deleted_ok"] = "Ressource \"%s\" supprimée";
+$messages["album_deleted_ok"] = "Album \"%s\" supprimé";
+$messages["add_resource"] = "Ajouter la ressource";
+$messages["add_resource_preview"] = "Aperçu de la ressource";
+$messages['add_resource_medium'] = 'Aperçu moyenne de la ressource';
+$messages["add_album"] = "Ajouter l'album";
+
+// new album
+$messages["album_name_help"] = "Nom court du nouvel album";
+$messages["parent"] = "Parent";
+$messages["no_parent"] = "Pas de parent";
+$messages["parent_album_help"] = "Utilisez ceci pour imbriquer des albums les uns dans les autres afin de mieux organiser vos fichiers.";
+$messages["album_description_help"] = "Description longue du contenu de l'album";
+$messages["error_adding_album"] = "Erreur en ajoutant le nouvel album. Vérifiez les données entrées et recommencez.";
+$messages["album_added_ok"] = "Album \"%s\" ajouté";
+
+// edit album
+$messages["error_incorrect_album_id"] = "Id de l'album incorrect.";
+$messages["error_fetching_album"] = "Erreur en récupérant l'album.";
+$messages["error_updating_album"] = "Erreur en mettant l'album à  jour. Vérifiez les données entrées et recommencez.";
+$messages["album_updated_ok"] = "Album \"%s\" mis à  jour";
+$messages["show_album_help"] = "Si cette case est décochée, l'album ne sera pas visible dans la liste des album disponibles sur ce blog.";
+
+// new resource
+$messages["file"] = "Fichier";
+$messages["resource_file_help"] = "Fichier qui sera ajouté au blog. Utilisez le lien \"Ajouter\" pour ajouter plusieurs fichiers en même temps.";
+$messages["add_field"] = "Ajouter";
+$messages["resource_description_help"] = "Description longue du fichier";
+$messages["resource_album_help"] = "Sélectionnez l'album auquel le fichier sera ajouté.";
+$messages["error_no_resource_uploaded"] = "Aucun fichier sélectionné pour être ajouté.";
+$messages["resource_added_ok"] = "Ressource \"%s\" ajoutée";
+$messages["error_resource_forbidden_extension"] = "Type de fichier interdit";
+$messages["error_resource_too_big"] = "Fichier trop volumineux";
+$messages["error_uploads_disabled"] = "Uploads désactivés";
+$messages["error_quota_exceeded"] = "Quota dépassé !";
+$messages["error_adding_resource"] = "Erreur en ajoutant le fichier";
+
+// edit resource
+$messages["editResource"] = "Editer la ressource";
+$messages["resource_information_help"] = "Quelques informations à  propos du fichier";
+$messages["information"] = "Information";
+$messages["size"] = "Taille";
+$messages["format"] = "Format";
+$messages["dimensions"] = "Dimensions";
+$messages["bits_per_sample"] = "Bits par échantillon";
+$messages["sample_rate"] = "Taux de l'échantillonnage";
+$messages["number_of_channels"] = "Nombre de canaux";
+$messages["legnth"] = "Longueur";
+$messages["thumbnail_format"] = "Taille de l'aperçu";
+$messages["regenerate_preview"] = "Regénérer l'aperçu";
+$messages["error_fetching_resource"] = "Erreur en récupérant la ressource";
+$messages["error_updating_resource"] = "Erreur en mettant à  jour la ressource";
+$messages["resource_updated_ok"] = "Ressource \"%s\" mise à  jour";
+
+// blog settings
+$messages["blog_link"] = "Lien vers le blog";
+$messages["blog_link_help"] = "Lien permanent vers ce blog";
+$messages["blog_name_help"] = "Titre du blog";
+$messages["blog_description_help"] = "Description longue du contenu de ce blog";
+$messages["language"] = "Langue";
+$messages["blog_language_help"] = "Langue utilisée pour afficher les textes dans le blog et dans la partie administration.";
+$messages["max_main_page_items"] = "Nombre d'articles sur la page principale";
+$messages["max_main_page_items_help"] = "Nombre d'articles qui peuvent être affichés à  la fois sur la page principale de ce blog.";
+$messages["max_recent_items"] = "Nombre d'articles recents";
+$messages["max_recent_items_help"] = "Nombre maximum d'articles affichés comment récents sur la page principale.";
+$messages["template"] = "Template";
+$messages["choose"] = "Choisir..";
+$messages["blog_template_help"] = "Template qui sera utilisé pour afficher le contenu de ce blog. Cette liste contient les Templates généraux et ceux installés uniquement pour ce blog";
+$messages["use_read_more"] = 'Utiliser le lien "suite..." dans les articles';
+$messages["use_read_more_help"] = 'Si cette case est cochée, seul le texte tapé dans "Texte" sera affiché sur la page principale. Et pour afficher le texte tapé dans "Texte étendu", un lien "suite..." sera ajouté à  chaque article.';
+$messages["enable_wysiwyg"] = "Activer l'éditeur riche pour les articles";
+$messages["enable_wysiwyg_help"] = "Active un éditeur HTML complet pour l'édition des articles. L'éditeur fonctionne seulement sur Mozilla 1.3 et ultérieurs, IE 5.5 et ultérieurs.";
+$messages["enable_comments"] = "Active les commentaires par défaut.";
+$messages["enable_comments_help"] = "Active les commentaires pour tous les articles par défaut. Les commentaires pourront être activés ou désactivés pour un article particulier à  sa création ou à  son édition.";
+$messages["show_future_posts"] = "Montre les articles futurs dans le calendrier.";
+$messages["show_future_posts_help"] = "Les articles dont la date de publication n'est pas passée pourront apparaître dans le calendrier et donc seront visibles par les visiteurs.";
+$messages["comments_order"] = "Ordre des commentaires";
+$messages["comments_order_help"] = "Ordre dans lequel les commentaires apparaîtront sur la page principale.";
+$messages["oldest_first"] = "Les plus anciens en premier";
+$messages["newest_first"] = "Les plus recents en premier";
+$messages["categories_order"] = "Ordre des catégories";
+$messages["categories_order_help"] = "Ordre dans lequel les catégories apparaîtront sur la page principale.";
+$messages["most_recent_updated_first"] = "Les plus récemment mis à  jour en premier";
+$messages["alphabetical_order"] = "Ordre alphabétique";
+$messages["reverse_alphabetical_order"] = "Ordre alphabétique inverse";
+$messages["most_articles_first"] = "Le plus lus en premier";
+$messages["link_categories_order"] = "Ordre des catégories de liens";
+$messages["link_categories_order_help"] = "Ordre dans lequel les catégories de liens apparaîtront sur la page principale.";
+$messages["most_links_first"] = "Le plus de liens en premier";
+$messages["most_links_last"] = "Le plus de liens en dernier";
+$messages["time_offset"] = "Fuseau horaire";
+$messages["time_offset_help"] = "Décalage horaire qui sera ajouté dynamiquement à  toutes les dates et heures dans le blog";
+$messages["close"] = "Fermer";
+$messages["select"] = "Selectionner";
+$messages["error_updating_settings"] = "Erreur en mettant à  jour les paramètres du blog. Vérifiez les données entrées et recommencez";
+$messages["error_invalid_number"] = "Nombre incorrect";
+$messages["error_incorrect_time_offset"] = "Fuseau horaire invalide";
+$messages["blog_settings_updated_ok"] = "Paramètres mis à  jour";
+$messages['hours'] = 'Heures';
+
+// user settings
+$messages["username_help"] = "Pseudonyme public. Ce pseudonyme ne pourra être changé par la suite.";
+$messages["full_name"] = "Nom complet";
+$messages["full_name_help"] = "Nom complet de l'utilisateur";
+$messages["password_help"] = "Tapez et confirmez un nouveau mot de passe. Laissez vide pour ne pas le changer.";
+$messages["confirm_password"] = "Confirmez le mot de passe";
+$messages["email"] = "Email";
+$messages["email_help"] = "Email à  laquelle les notifications seront envoyées";
+$messages["bio"] = "Votre bio";
+$messages["bio_help"] = "Votre portrait. Description de vous-même.";
+$messages["picture"] = "Photo";
+$messages["user_picture_help"] = "Sélectionnez une photo comme photo personnelle (parmi celles ajoutées à  ce blog)";
+$messages["error_invalid_password"] = "Mot de passe inccorect. Vérifiez qu'il n'est pas trop court.";
+$messages["error_passwords_dont_match"] = "Désolé, mot de passe incorrect";
+$messages["error_incorrect_email_address"] = "Adresse email incorrecte";
+$messages["error_updating_user_settings"] = "Erreur en mettant à  jour les paramètres du membre. Vérifiez les données entrées et recommencez.";
+$messages["user_settings_updated_ok"] = "Paramètres membre mis à  jour";
+$messages["resource"] = "Ressource";
+
+// plugin centre
+$messages['identifier'] = 'Identifiant';
+$messages['error_plugins_disabled'] = 'Plugins désactivés';
+
+// blog users
+$messages["revoke_permissions"] = "Retirer des permissions";
+$messages["error_no_users_selected"] = "Aucun membre sélectionné.";
+$messages["user_removed_from_blog_ok"] = "Membre \"%s\" bien supprimé du blog.";
+$messages["users_removed_from_blog_ok"] = "%s membres supprimés";
+$messages["error_removing_user_from_blog"] = "Erreur en supprimant le membre \"%s\" du blog.";
+$messages["error_removing_user_from_blog2"] = "Erreur en supprimant le membre à  l'ID \"%s\" du blog.";
+
+// new blog user
+$messages["new_blog_username_help"] = "Pseudo du membre qui aura accès à  ce blog. Les nouveaux membres ont seulement accès aux sections \"Réglages\" et \"Gestion des ressources\".";
+$messages["send_notification"] = "Envoyer une notification";
+$messages["send_user_notification_help"] = "Envoyer un email de notification à  ce membre";
+$messages["notification_text"] = "Texte de la notification";
+$messages["notification_text_help"] = "Texte qui sera inclu dans le message de notification";
+$messages["error_adding_user"] = "Erreur lors de l'autorisation d'accès. Vérifiez les données entrées et recommencez.";
+$messages["error_empty_text"] = "Vous devez entrer un texte";
+$messages["error_adding_user"] = "Erreur en ajoutant le membre. Vérifiez les données entrées et recommencez.";
+$messages["error_invalid_user"] = "Le membre \"%s\" n'est pas valide ou n'existe pas.";
+$messages["user_added_to_blog_ok"] = "Le membre \"%s\" peut désormais accéder à  ce blog.";
+
+// blog templates
+$messages["error_no_templates_selected"] = "Aucun Template sélectionné";
+$messages["error_template_is_current"] = "Le Template \"%s\" ne peut être supprimé car c'est celui qui est utilisé.";
+$messages["error_removing_template"] = "Erreur en supprimant le Template \"%s\"";
+$messages["template_removed_ok"] = "Template \"%s\" supprimé";
+$messages["templates_removed_ok"] = "%s Templates supprimés";
+
+// new blog template
+$messages["template_installed_ok"] = "Template \"%s\" ajouté";
+$messages["error_installing_template"] = "Erreur durant l'installation du Template \"%s\"";
+$messages["error_missing_base_files"] = "Fichier(s) manquant(s)";
+$messages["error_add_template_disabled"] = "Aucun Template ne peut être ajouté car cette fonction a été désactivée.";
+$messages["error_must_upload_file"] = "Pas de Template à  télécharger";
+$messages["error_uploads_disabled"] = "Les uploads ont été désactivés";
+$messages["error_no_new_templates_found"] = "Pas de nouveau Template trouvé";
+$messages["error_template_not_inside_folder"] = "Les fichiers du Template doivent être dans un répertoire du même nom que le Template.";
+$messages["error_missing_base_files"] = "Fichier(s) du Template basique manquant(s)";
+$messages["error_unpacking"] = "Erreur en décompressant le fichier";
+$messages["error_forbidden_extensions"] = "Des fichiers d'extensions interdites sont inclus dans le Template";
+$messages["error_creating_working_folder"] = "Erreur durant la création du répertoire temporaire nécessaire à  la décompression.";
+$messages["error_checking_template"] = "Erreur en vérifiant le Template : %s";
+$messages["template_package"] = "Package du Template";
+$messages["blog_template_package_help"]  = "Utilisez ce formulaire pour uploader un nouvau Template, qui ne sera utilisable que sur votre blog. Si vous ne pouvez pas uploader un Template par ce formulaire, uploadez-le à  la main dans le répertoire <b>%s</b>, qui est le dossier où les Templates de blog sont stockés et cliquez sur \"<b>Scanner les Templates</b>\" . Le système scannera le dossier et ajoutera automatiquement les nouveaux Templates.";
+$messages["scan_templates"] = "Scanner les Templates";
+
+// site users
+$messages["user_status_active"] = "Actif";
+$messages["user_status_disabled"] = "Inactif";
+$messages["user_status_all"] = "Tous";
+$messages["user_status_unconfirmed"] = "non confirmé";
+$messages["error_invalid_user2"] = "Le membre d'ID \"%s\" n'existe pas";
+$messages["error_deleting_user"] = "Erreur en supprimant le membre \"%s\"";
+$messages["user_deleted_ok"] = "Membre \"%s\" supprimé";
+$messages["users_deleted_ok"] = "%s membres supprimés";
+
+// create user
+$messages["user_added_ok"] = "Membre \"%s\" ajouté";
+$messages["user_status_help"] = "Statut actuel du membre";
+$messages["user_blog_help"] = "Blog avec lequel ce membre est initialisé";
+$messages["none"] = "Aucun";
+
+
+// edit user
+$messages["error_invalid_user"] = "ID du membre invalide ou le membre n'exite pas.";
+$messages["error_updating_user"] = "Erreur en mettant à  jour les paramètres du membre. Vérifiez les données entrées et recommencez.";
+$messages["blogs"] = "Blogs";
+$messages["user_blogs_help"] = "Blogs du membre ou de ceux auxquels il a accès";
+$messages["site_admin"] = "Administrateur";
+$messages["site_admin_help"] = "Si ce membre est administrateur, il pourra accéder à  la partie \"Administration\" et accomplir des tà¢ches administratives.";
+$messages["user_updated_ok"] = "Membre \"%s\" mis à  jour";
+
+// site blogs
+$messages["blog_status_all"] = "Tous";
+$messages["blog_status_active"] = "Actif";
+$messages["blog_status_disabled"] = "Inactif";
+$messages["blog_status_unconfirmed"] = "Non-validé";
+$messages["owner"] = "Propriétaire";
+$messages["quota"] = "Quota";
+$messages["bytes"] = "octets";
+$messages["error_no_blogs_selected"] = "Aucun blog sélectionné pour être désactivé";
+$messages["error_blog_is_Défaut_blog"] = "Ce blog \"%s\" ne peut être supprimé car il s'agit du blog par défaut.";
+$messages["blog_deleted_ok"] = "Blog \"%s\" désactivé";
+$messages["blogs_deleted_ok"] = "%s blogs supprimés";
+$messages["error_deleting_blog"] = "Erreur en désactivant le blog \"%s\"";
+$messages["error_deleting_blog2"] = "Erreur en désactivant le blog d'ID \"%s\"";
+
+// create blog
+$messages["error_adding_blog"] = "Erreur en ajoutant le blog. Vérifiez les données entrées et recommencez";
+$messages["blog_added_ok"] = "Blog \"%s\" ajouté";
+
+// edit blog
+$messages["blog_status_help"] = "Status du blog";
+$messages["blog_owner_help"] = "Membre considéré comme propriétaire du blog, qui aura un contrôle total des paramètres du blog";
+$messages["users"] = "Membres";
+$messages["blog_quota_help"] = "Quota de ressource en octets. Mettre à  0 pour illimité, ou laisser vide pour utiliser le quota par défaut";
+$messages["edit_blog_settings_updated_ok"] = "Blog \"%s\"mis à  jour";
+$messages["error_updating_blog_settings"] = "Erreur en mettant à  jour le blog \"%s\"";
+$messages["error_incorrect_blog_owner"] = "Membre sélectionné comme propriétaire, incorrect.";
+$messages["error_fetching_blog"] = "Erreur en récupérant le blog";
+$messages["error_updating_blog_settings2"] = "Erreur en mettant à  jour le blog. Vérifiez les données entrées et recommencez.";
+$messages["add_or_remove"] = "Ajouter ou supprimer des membres";
+
+// site locales
+$messages["locale"] = "Traduction";
+$messages["locale_encoding"] = "Encodage";
+$messages["locale_deleted_ok"] = "Traduction \"%s\" supprimée";
+$messages["error_no_locales_selected"] = "Aucune traduction sélectionnée pour être supprimée";
+$messages["error_deleting_only_locale"] = "Cette traduction ne peut être supprimée car c'est la seule présente sur le système.";
+$messages["locales_deleted_ok"]= "%s traductions supprimées";
+$messages["error_deleting_locale"] = "Erreur en supprimant la traduction \"%s\"";
+$messages["error_locale_is_Défaut"] = "La traduction \"%s\" ne peut être supprimée car il s'agit de la traduction par défaut pour les nouveaux blogs.";
+
+// add locale
+$messages["error_invalid_locale_file"] = "Fichier de traduction invalide";
+$messages["error_no_new_locales_found"] = "Pas de nouveau fichier de traduction trouvé";
+$messages["locale_added_ok"] = "Traduction \"%s\" ajouté";
+$messages["error_saving_locale"] = "Erreur en sauvegardant la nouvelle traduction";
+$messages["scan_locales"] = "Scanner les traductions";
+$messages["add_locale_help"] = "Utilisez ce formulaire pour uploader une nouvelle traduction. Si vous ne pouvez pas uploader de traduction par ce formulaire, uploadez-le manuellement dans le répertoire <b>%s</b>, qui est le dossier où les gabarits de blog sont stockés et cliquez sur \"<b>Scanner les traductions</b>\" . LifeType scannera le dossier et ajoutera automatiquement les nouvelles traductions.";
+
+// site templates
+$messages["error_template_is_Défaut"] = "Le template \"%s\" ne peut être supprimée car il s'agit du template par défaut";
+
+// add template
+$messages["global_template_package_help"] = "Utilisez ce formulaire pour uploader un nouvau template, qui sera utilisable sur tous les nouveaux blogs. Si vous ne pouvez pas uploader un template par ce formulaire, uploadez-le manuellement dans le répertoire <b>%s</b>, qui est le dossier où les templates de blog sont stockés et cliquez sur \"<b>Scanner les templates</b>\" . LifeType scannera le dossier et ajoutera automatiquement les nouveaux templates.";
+
+// global settings
+$messages["site_config_saved_ok"] = "Paramètres de site sauvegardés";
+$messages["error_saving_site_config"] = "Erreur en sauvegardant les paramètres de site";
+
+/// general settings
+$messages["help_comments_enabled"] = "Activer ou désactiver les commentaires sur les nouveaux blogs. [Défaut: Activer]";
+$messages["help_beautify_comments_text"] = "Si activé, les commentaires postés seront formatés en ajoutant des paragraphes et des liens automatiques pour toutes les URLs. [Défaut: Activer]";
+$messages["help_temp_folder"] = "Répertoire que LifeType peut utiliser pour écrire les données temporaires comme les templates compilés, etc. Utiliser un répertoire hors de cette partie du serveur pour augmenter la sécurité. [Défaut: ./tmp]";
+$messages["help_base_url"] = "URL de base où ce blog est installé";
+$messages["help_subdomains_enabled"] = "Activer ou désactiver les sous-domaines. Veuillez lire la documentation au sujet des sous-domaines pour plus d'informations. [Défaut: Non]";
+$messages["help_include_blog_id_in_url"] = "Si les sous-domaines sont activés et ques les URLs sont en mode \"normal\", force les URL générées à  ne pas utiliser l'identifiant de blog. Ne changez ce paramètre que si vous savez exactement ce que vous faites. [Défaut: Oui]";
+$messages["help_script_name"] = 'Changez ceci si vous souhaitez renommer index.php en autre chose. [Défaut = index.php]';
+$messages["help_show_posts_max"] = 'Nombre maximum d\'articles affichés sur la page principale. S\'applique aux nouveaux blogs uniquement. [Défaut = 15]';
+$messages["help_recent_posts_max"] = "Nombre maximum d'articles récents affichés sur la page principale. S'applique aux nouveaux blogs uniquement. [Défaut = 10]";
+$messages["help_save_drafts_via_xmlhttprequest_enabled"] = "Active ou désactive la fonctionnalité de sauvegarde des brouillons par Ajax. [Défaut = Oui]";
+$messages["help_locale_folder"] = "Répertoire où sont stockées les traductions. [Défaut = ./locale]";
+$messages["help_Défaut_locale"] = "Langue par défaut des nouveaux blogs. [Défaut = en_UK]";
+$messages["help_Défaut_blog_id"] = "Blog affiché par défaut si aucun n'est spécifié. [Défaut = 1]";
+$messages["help_Défaut_time_offset"] = "Zone horaire par défaut pour les nouveaux blogs. [Défaut = 0]";
+$messages["help_html_allowed_tags_in_comments"] = "Tags HTML autorisés dans les commentaires, séparés par des espaces. [Défaut = &lt;a&gt;&lt;i&gt;&lt;br&gt;&lt;br/&gt;&lt;b&gt;]";
+$messages["help_referer_tracker_enabled"] = 'Activer ou désactiver la fonctionnalité de sauvegarde des referers en base de données. Désactivez-la pour améliorer les performances. [Défaut = Oui]';
+$messages['help_show_more_enabled'] = 'Activer ou désactiver par défaut le lien \"(Lire la suite de l\'article)\" des articles pour les nouveaux blogs. [Défaut = Oui]';
+$messages['help_update_article_reads'] = 'Activer ou désactiver le compteur de lectures. Désactivez pour améliorer les performances. [Défaut = Oui]';
+$messages['help_update_cached_article_reads'] = 'Activer ou désactiver le compteur de lectures des articles mis en cache. Désactivez pour améliorer les performances. [Défaut = Oui]';
+$messages['help_xmlrpc_ping_enabled'] = 'Activer ou désactiver les pings XML-RPC pour les sites qui les supportent. [Défaut = Oui]';
+$messages['help_send_xmlrpc_pings_enabled_by_Défaut'] = "Activer ou désactiver cette fonctionnalité par défaut lors de l'ajout ou de la modification d'articles. [Défaut = Oui]";
+$messages['help_xmlrpc_ping_hosts'] = 'URLs des sites disposant d\'une interface XML-RPC. Une URL par ligne. [Défaut = http://rpc.weblogs.com/RPC2]';
+$messages['help_trackback_server_enabled'] = 'Activer ou désactiver la possibilité de recevoir des trackbacks. [Défaut = Oui]';
+$messages['help_htmlarea_enabled'] = 'Activer ou désactiver l\'éditeur enrichi de texte. [Défaut = Oui]';
+$messages['help_plugin_manager_enabled'] = 'Enable or disable plugins. [Défaut = Oui]';
+$messages['help_minimum_password_length'] = 'Taille minimale des mots de passe. [Défaut = 4]';
+$messages['help_xhtml_converter_enabled'] = 'If enabled, LifeType will try to convert all HTML code into proper XHTML code. [Défaut = Oui]';
+$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'Si cette case est cochée, le système essayera encore plus de convertir le code HTML en XHTML valide, mais il n\'y aura plus d\'erreurs. [Défaut = Non]';
+$messages['help_session_save_path'] = 'Utilisez ce champ pour spécifier où LifeType sauvegarde des données de session, via la fonction PHP session_save_path(). Veuillez vous assurer que ce dossier est en lecture/écriture pour l\'utilisateur du serveur web. Laissez vide pour conserver le dossier PHP par défaut. [Défaut = (vide)]';
+
+
+// summary settings
+$messages['help_summary_page_show_max'] = 'Nombre d\'articles qui seront affichés sur la page résumé. Ce paramètre contrôle toutes les listes de la page du sommaire. [Défaut = 10]';
+$messages['help_summary_items_per_page'] = 'Nombre de blogs par page dans la section \"Liste de blogs\". [Défaut = 25]';
+$messages['help_forbidden_usernames'] = 'Liste de noms d\'utilisateur non autorisés à  s\'inscrire. [Défaut = admin www blog ftp]';
+$messages['help_force_one_blog_per_email_account'] = 'Restreindre à  seulement un blog par adresse email. [Défaut = Non]';
+$messages['help_summary_show_agreement'] = 'Afficher un message d\'avertissement et demander l\'acceptation aux utilisateurs qui s\'inscrivent. [Défaut = Oui]';
+$messages['help_need_email_confirm_registration'] = 'Obliger les utilisateurs à  confirmer leur inscription en cliquant sur un lien envoyé par email (recommandé). [Défaut = Oui]';
+$messages['help_summary_disable_registration'] = 'Désactiver l\'inscription à de nouveaux blogs sur ce site. [Défaut = Non]';
+
+// templates
+$messages['help_template_folder'] = 'Dossier où sont stockés les templates. [Défaut = ./templates]';
+$messages['help_Défaut_template'] = 'Template par défaut des nouveaux blogs. [Défaut = standard]';
+$messages['help_users_can_add_templates'] = 'Autoriser les utilisateurs à  uploader leurs propres templates. [Défaut = Oui]';
+$messages['help_template_compile_check'] = 'Si activé, le moteur de templates vérifiera à  chaque fois si le template a été modifié, et modifiera en conséquence les pages. Ne vérifiez pas pour améliorer les performances. [Défaut = Oui]';
+$messages['help_template_cache_enabled'] = 'Activer le cache de templates. Les templates seront précompilés, et aucun accès à la base de données ne sera nécessaire. Recommandé. [Défaut = Oui]';
+$messages['help_template_cache_lifetime'] = 'Durée de vie du cache en secondes. Mettez -1 pour que le cache n\'expire jamais. Si vous mettez à  0, le cache sera désactivé, mais préférez l\'option \"Désactiver le cache\" pour réaliser cette fonctionnalité. [Défaut = -1]';
+$messages['help_template_http_cache_enabled'] = 'Activer le support des requêtes HTTP conditionnelles. Si activé, LifeType vérifiera le champ \"If-Modified-Since\" de l\'en-tête HTTP et n\'enverra une réponse que s\'il y a lieu. Utilisez ceci pour sauvegarder de la bande passante. [Défaut = Non]';
+$messages['help_allow_php_code_in_templates'] = 'Autoriser l\'utilisation de code PHP dans les templates Smarty ({php}...{/php}). Pour des raisons de sécurité, fortement déconseillé.. [Défaut = Non]';
+
+// urls
+$messages['help_request_format_mode'] = 'Sélectionner un des formats d\'URL disponibles. Si vous utlisez les URLs personnalisées, configurez les paramètres ci-dessous. [Défaut = Plain]';
+$messages['plain'] = 'Plain';
+$messages["search_engine_friendly"] = "Moteur de recherches";
+$messages["custom_url_format"] = "URLs personnalisées";
+$messages['help_permalink_format'] = 'Format des liens permanents lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/{catname}/{year}/{month}/{day}/{postname}$]';
+$messages['help_category_link_format'] = 'Format des liens vers les catégories lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/{catname}$]';
+$messages['help_blog_link_format'] = 'Format des liens vers les blogs lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}$]';
+$messages['help_archive_link_format'] = 'Format des liens vers les archives lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/archives/{year}/?{month}/?{day}]';
+$messages['help_user_posts_link_format'] = 'Format des liens vers des articles postés par certains membres lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/user/{username}$]';
+$messages['help_post_trackbacks_link_format'] = 'Format vers les trackbacks page lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/post/trackbacks/{postname}$]';
+$messages['help_template_link_format'] = 'Format des liens vers les pages de templates classiques personnalisées lors de l\'utilisation des URLs personnaliséess. [Défaut = /blog/{blogname}/page/{templatename}$]';
+$messages['help_album_link_format'] = 'Format des liens vers les albums lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/album/{albumname}$]';
+$messages['help_resource_link_format'] = 'Format des liens vers les pages de ressources avec des fichiers lors de l\'utilisation des URLs personnalisées. [Défaut = /blog/{blogname}/resource/{albumname}/{resourcename}$]';
+$messages['help_resource_preview_link_format'] = 'Format des liens vers les aperçus des ressources lors de l\'utilisation des URLs pérsonnalisées. [Défaut = /blog/{blogname}/resource/{albumname}/preview/{resourcename}$]';
+$messages['help_resource_medium_size_preview_link_format'] = 'Format des liens vers les aperçus de moyenne taille des ressources lors de l\'utilisation des URLs pérsonnalisées. [Défaut = /blog/{blogname}/resource/{albumname}/preview-med/{resourcename}$]';
+$messages['help_resource_download_link_format'] = 'Format des liens vers les fichiers lors de l\'utilisation des URLs pérsonnalisées. [Défaut = /blog/{blogname}/resource/{albumname}/download/{resourcename}$]';
+
+// email
+$messages['help_check_email_address_validity'] = 'Vérifier l\'adresse email des nouveaux membres. [Défaut = Non]';
+$messages['help_email_service_enabled'] = 'Activer/Désactiver service email. [Défaut = Oui]';
+$messages["post_notification_source_address"] = "Adresse email qui apparaîtra dans le champ \'De\' lors de l\'envoi de mail via LifeType. [Défaut = Nonreply at your.host.com]";
+$messages['help_email_service_type'] = 'Méthode d\'envoi des emails. [Défaut = PHP]';
+$messages['help_smtp_host'] = 'Si vous utilisez SMTP, remplir ici le serveur qui sera utilisé pour l\'envoi de mails. [Défaut = (vide)]';
+$messages['help_smtp_port'] = 'Si le serveur SMTP fonctionne sur un port autre que le 25, configurer la bonne valeur. [Défaut = (vide)]';
+$messages['help_smtp_use_authentication'] = 'Activer si le serveur SMTP requiert une authentification.  [Défaut = Non]';
+$messages['help_smtp_username'] = 'Si le SMTP requiert une authentification, remplir le username. [Défaut = (vide)]';
+$messages['help_smtp_password'] = 'Si le SMTP requiert une authentification, remplir le mot de passe de l\'utilisateur ci-dessus. [Défaut = (vide)]';
+
+// helpers
+$messages['help_path_to_tar'] = 'Chemin vers "tar", nécessaire pour décompresser les formats tar.bz ou tar.bz2. [Défaut = /bin/tar]';
+$messages['help_path_to_gzip'] = 'Chemin vers "gzip", nécessaire pour décompresser les formats tar.gz. [Défaut = /bin/gzip]';
+$messages['help_path_to_bz2'] = 'Chemin vers "gzip"2, nécessaire pour décompresser les formats tar.gz2. [Défaut = /usr/bin/bzip2]';
+$messages['help_path_to_unzip'] = 'Chemin vers "unzip", nécessaire pour décompresser le format .zip. [Défaut = /usr/bin/unzip]';
+$messages['help_unzip_use_native_version'] = 'Utiliser les fonctions PHP natives pour décompresser les fichiers .zip. [Défaut = Non]';
+
+// uploads
+$messages['help_uploads_enabled'] = 'Activer/Désactiver l\'upload de TOUS fichiers. [Défaut = Oui]';
+$messages['help_maximum_file_upload_size'] = 'Taille maximale en octets des fichiers uploadés; ne doit jamais être supérieure à la limite interne de PHP. [Défaut = 2000000]';
+$messages['help_upload_forbidden_files'] = 'Liste des extensions de fichiers interdits, séparés par un espace. Vous pouvez utiliser \'*\' ou \'?\' . [Défaut = *.php *.php3 *.php4 *.phtml]';
+
+// interfaces
+$messages['help_xmlrpc_api_enabled'] = 'Activer/Désactiver XMLRPC. [Défaut = Oui]';
+$messages['help_rdf_enabled'] = 'Activer la syndication des contenus via Atom ou RSS. [Défaut = Oui]';
+$messages['help_Défaut_rss_profile'] = 'Version par défaut de RSS ou d\'Atom utilisé pour syndiquer les flux sauf si quelque chose d\'autre est spécifié. [Défaut = RSS 1.0]';
+
+// security
+$messages['help_security_pipeline_enabled'] = 'Activer les fonctions de sécurité et tous les filtres associés. Ceci affecte aussi les plugins qui enregistrent de nouveaux filtres. [Défaut = Oui]';
+$messages['help_maximum_comment_size'] = 'Taille maximum en octets des commentaires, mettre à 0 pour désactiver cette fonctionnalité. [Défaut = 0]';
+
+// bayesian filter
+$messages['help_bayesian_filter_enabled'] = 'Activer/Désactiver le filtrage Bayesien (spam) pour améliorer l\'antispam. [Défaut = Oui]';
+$messages['help_bayesian_filter_spam_probability_treshold'] = 'Valeur maximale avant qu\'un commentaire soit considéré comme spam. [Défaut = 0.9]';
+$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Valeur minimale au dessus de laquelle un commentaire est considéré comme spam. [Défaut = 0.2]';
+$messages['help_bayesian_filter_min_length_token'] = 'Longueur minimale d\'un jeton pour être considéré comme pertinent pour le filtre bayesien. [Défaut = 3]';
+$messages['help_bayesian_filter_max_length_token'] = 'Longueur maximale d\'un jeton pour être considéré comme pertinent pour le filtre bayesien. [Défaut = 100]';
+$messages['help_bayesian_filter_number_significant_tokens'] = 'Nombre de jetons significatifs. [Défaut = 15]';
+$messages['help_bayesian_filter_spam_comments_action'] = 'Que faire des commentaires marqués comme spam. Les supprimer quand le filtre sera suffisamment entraîné. [Défaut = Sauvegarder]';
+$messages['keep_spam_comments'] = 'Garder dans la base de données marqués comme \"Spam\" ';
+$messages['throw_away_spam_comments'] = 'Les supprimer directement (ne pas les sauvegarder)';
+
+// resources
+$messages['help_resources_enabled'] = 'Activer ou non les ressources. [Défaut = Oui]';
+$messages['help_resources_folder'] = 'Chemin vers le répertoire où les ressources sont stockées (images, vidéos, etc..). [Défaut = ./gallery]';
+$messages['help_thumbnail_method'] = 'Méthode de génération des aperçus. Avec PHP, le support GD est nécessaire. [Défaut = PHP]';
+$messages['help_path_to_convert'] = 'Répertoire de l\'outil \"convert\" du package ImageMagick. Obligatoire si la méthode de génération d\'aperçu est \"ImageMagick\". [Défaut = /usr/bin/convert]';
+$messages['help_thumbnail_format'] = 'Format dans lequel les aperçus seront sauvegardés. [Défaut = Same as image]';
+$messages['help_thumbnail_height'] = 'Hauteur par défaut des petits aperçus. [Défaut = 120]';
+$messages['help_thumbnail_width'] = 'Largeur par défaut des petits aperçus. [Défaut = 120]';
+$messages['help_medium_size_thumbnail_height'] = 'Hauteur par défaut des aperçus de taille moyenne. [Défaut = 480]';
+$messages['help_medium_size_thumbnail_width'] = 'Largeur par défaut des aperçus de taille moyenne. [Défaut = 640]';
+$messages['help_thumbnails_keep_aspect_ratio'] = 'Conserver les proportions lors de la génération des aperçus. Peut générer des aperçus plus grands que la taille spécifiée au dessus, mais de qualité meilleure. [Défaut = Oui]';
+$messages['help_thumbnail_generator_force_use_gd1'] = 'Forcer LifeType à  utiliser uniquement les fontions GD1. [Défaut = Non]';
+$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Algorithme utilisé pour lisser les aperçus. Utilisé uniquement quand la méthode de génération d\'aperçu est GD. [Défaut = PHP Imagecopyresampled]';
+$messages['help_resources_quota'] = 'Quota de ressources pour les blogs par défaut en bytes (i.e. 5242880 Bytes = 5MB), ou laisser à 0 pour ne pas limiter le quota. [Défaut = 0]';
+$messages['help_resource_server_http_cache_enabled'] = 'Activer le support des requêtes HTTP conditionnelles. A activer pour réduire l\'utilisation de bande passante.. [Défaut = Non]';
+$messages['help_resource_server_http_cache_lifetime'] = 'Temps en secondes pendant lequel les ressources sont mises en cache. [Défaut = 86400]';
+$messages['same_as_image'] = 'Pareille que l\'image originale';
+
+// search
+$messages['help_search_engine_enabled'] = 'Activer ou non le moteur de recherche. [Défaut = Oui]';
+$messages['help_search_in_custom_fields'] = 'Rechercher dans les champs personnalisés. [Défaut = Oui]';
+$messages['help_search_in_comments'] = 'Rechercher dans les commentaires. [Défaut = Oui]';
+
+// cleanup
+$messages['purge'] = 'Nettoyer';
+$messages['cleanup_spam'] = 'Nettoyer les spams';
+$messages['cleanup_spam_help'] = 'Ceci supprimera définitivement tous les commentaires marqués comme spam. Ils ne sera pas possible de revenir en arrière.';
+$messages['spam_comments_purged_ok'] = 'Commentaires spam nettoyés';
+$messages['cleanup_posts'] = 'Nettoyer les articles';
+$messages['cleanup_posts_help'] = 'Ceci supprimera définitivement tous les articles supprimés (marqué comme \"supprimés\"). Il sera impossible de les récupérer après!';
+$messages['posts_purged_ok'] = 'Articles nettoyés ';
+$messages['purging_error'] = 'Erreur lors du nettoyage des données';
+
+/// summary ///
+// front page
+$messages["summary"] = "Accueil";
+$messages["register"] = "S'inscrire";
+$messages["summary_welcome"] = "Bienvenue !";
+$messages["summary_most_active_blogs"] = "Blogs les plus actifs";
+$messages["summary_most_commented_articles"] = "Articles les plus commentés";
+$messages["summary_most_read_articles"] = "Articles les plus lus";
+$messages["password_forgotten"] = "Vous avez perdu votre mot de passe ?";
+$messages["summary_newest_blogs"] = "Nouveaux blogs";
+$messages["summary_latest_posts"] = "Derniers articles";
+$messages["summary_search_blogs"] = "Recherche d'un blog";
+
+// blog list
+$messages["updated"] = "Mis à  jour";
+$messages["total_reads"] = "lectures";
+
+// blog profile
+$messages["blog"] = "Blog";
+$messages["latest_posts"] = "Derniers articles";
+
+// registration
+$messages["register_step0_title"] = "Accepter les conditions d'utilisation";
+$messages['agreement'] = 'Conditions d\'utilisation'; 
+$messages["decline"] = "Refuser";
+$messages["accept"] = "Accepter";
+$messages["read_service_agreement"] = "Veuillez lire les termes de ce service et cliquer sur le bouton \"Accepter\" si vous êtes d'accord";
+$messages["register_step1_title"] = "Créer votre compte [1/4]";
+$messages["register_step1_help"] = "Vous devez créer un compte pour ensuite avoir un blog. Ce compte sera le compte principal de ce blog et aura accès à  toutes ses fonctionnalités";
+$messages["register_next"] = "Suivant";
+$messages["register_back"] = "Retour";
+$messages["register_step2_title"] = "Créer votre Blog [2/4]";
+$messages["register_blog_name_help"] = "Nom du nouveau blog";
+$messages["register_step3_title"] = "Choisir un template [3/4]";
+$messages["step1"] = "Etape 1";
+$messages["step2"] = "Etape 2";
+$messages["step3"] = "Etape 3";
+$messages["register_step3_help"] = "Sélectionnez un des templates disponibles qui sera celui par défaut de votre blog. Vous pourrez le changer ultérieurement";
+$messages["error_must_choose_template"] = "Vous devez choisir un template";
+$messages["select_template"] = "Sélectionner un template";
+$messages["register_step5_title"] = "Merci ! [4/4]";
+$messages["finish"] = "Fin";
+$messages["register_need_confirmation"] = "Un email de confirmation vous a été envoyé, cliquez sur le lien dès que vous recevrez ce message pour démarrer l'édition du blog";
+$messages["register_step5_help"] = "Merci, votre compte et votre blog ont été créés !";
+$messages["register_blog_link"] = 'Si vous voulez voir votre Blog, Vous pouvez aller ici : <a href="%2$s">%1$s</a>';
+$messages["register_blog_admin_link"] = "Si vous préférez rédiger et publier des articles sur votre blog, cliquez ici pour accéder à  <a href=\"admin.php\">l'interface d'administration</a>";
+$messages["register_error"] = "Erreur durant la procédure";
+$messages["error_registration_disabled"] = "Désolé, les inscriptions sont momentanément suspendues";
+
+
+// registration article topic and text
+$messages["register_default_article_topic"] = "Félicitations !";
+$messages["register_default_article_text"] = "Si vous pouvez lire cet article, cela signifie que votre enregistrement s'est déroulé correctement et que vous pouvez démarrer l'édition et la publication d'articles.";
+$messages["register_default_category"] = "Général";
+
+// confirmation email
+$messages["register_confirmation_email_text"] = "Bonjour,
+Veuillez cliquer sur ce lien pour activer votre blog:
+
+%s
+
+Bonne journée.";
+$messages["error_invalid_activation_code"] = "Désolé, votre numéro de confirmation est invalide.";
+$messages["blog_activated_ok"] = "Félicitations, votre compte et votre blog ont été activés !";
+
+// forgot your password?
+$messages["reset_password"] = "Réinitialiser votre mot de passe";
+$messages["reset_password_username_help"] = "Nom d'utilisateur (pour qui le mot de passe doit être réinitialisé)";
+$messages["reset_password_email_help"] = "Adresse email utilisée pour l'inscription de cet utilisateur";
+$messages["reset_password_help"] = "Utilisez ce formulaire pour réinitialiser votre mot de passe perdu. Entrez à  la fois le nom d'utilisateur et l'adresse email utilisée pour l'inscription.";
+$messages["error_resetting_password"] = "Il y a eu une erreur lors de la réinitialisation du mot de passe. Vérifiez les données entrées et recommencez.";
+$messages["reset_password_error_incorrect_email_address"] = "L'adresse email spécifiée est incorrecte, ou ne correspond pas à  celle utilisée pour l'inscription.";
+$messages["password_reset_message_sent_ok"] = "Un email vous a été envoyé. Cliquez sur le lien qu'il contient pour réinitialiser votre mot de passe.";
+$messages["error_incorrect_request"] = "Les paramètres d'URL sont incorrects.";
+$messages["change_password"] = "Nouveau mot de passe";
+$messages["change_password_help"] = "Confirmez votre nouveau mot de passe";
+$messages["new_password"] = "Nouveau mot de passe";
+$messages["new_password_help"] = "Entrez ici votre nouveau mot de passe";
+$messages["password_updated_ok"] = "Votre mot de passe a bien été mis à  jour";
+
+// Suggested by BCSE, some useful messages that not available in official locale
+$messages["upgrade_information"] = "Cette page apparait brute et non stylée parce que vous utilisez un navigateur non conforme. Mettez à  jour votre navigateur pour la voir dans les meilleures conditions.";
+$messages["jump_to_navigation"] = "Aller au menu";
+$messages["comment_email_never_display"] = "Retours à  la ligne automatiques, adresse email jamais affichée.";
+$messages["comment_html_allowed"] = "<acronym title=\"Hypertext Markup Language\">HTML</acronym> allowed: &lt;<acronym title=\"Hyperlink\">a</acronym> href=&quot;&quot; title=&quot;&quot; rel=&quot;&quot;&gt; &lt;<acronym title=\"Acronym Description\">acronym</acronym> title=&quot;&quot;&gt; &lt;<acronym title=\"Quote\">blockquote</acronym> cite=&quot;&quot;&gt; &lt;<acronym title=\"Strike\">del</acronym>&gt; &lt;<acronym title=\"Italic\">em</acronym>&gt; &lt;<acronym title=\"Underline\">ins</acronym>&gt; &lt;<acronym title=\"Bold\">strong</acronym>&gt;";
+$messages["trackback_uri"] = "L'<acronym title=\"Uniform Resource Identifier\">URI</acronym> de trackback pour cet article est : ";
+$messages["previous_post"] = "Précédent";
+$messages["next_post"] = "Suivant";
+$messages["comment_default_title"] = "(Sans titre)";
+$messages["guestbook"] = "Livre d'or";
+$messages["trackbacks"] = "Trackbacks";
+$messages["menu"] = "Menu";
+$messages["albums"] = "Albums";
+$messages['admin'] = 'Administrateur';
+$messages['xmlrpc_ping_ok'] = 'Ping XMLRPC envoyer avec succès';
+$messages['error_sending_xmlrpc_ping'] = "Erreur lors de l'envoi du ping XMLRPC vers : ";
+$messages['error_sending_xmlrpc_ping_message'] = "Erreur lors de l'envoi du ping XMLRPC : ";
+
+//
+// new strings for 1.1
+//
+$messages['error_incorrect_trackback_id'] = "L'identifiant du trackback est incorrect"; 
+$messages['error_marking_trackback_as_spam'] = "Erreur lors du marquage du trackback comme spam"; 
+$messages['trackback_marked_as_spam_ok'] ="Trackback marqué comme spam";
+$messages['error_marking_trackback_as_nonspam'] = "Erreur lors du marquage du trackback comme non spam";
+$messages['trackback_marked_as_nonspam_ok'] = "Trackback marqué comme non spam"; 
+$messages['upload_here'] = "Télécharger ici"; 
+$messages['reply_string'] = "A"; 
+$messages['cleanup_users'] = "Purge des utilisateurs"; 
+$messages['cleanup_users_help'] = "Cette action purge tous les utilisateurs qui avaient été supprimés par l'administrateur (marqué comme \"supprimé\"). Il enlèvera également tous les blogs et leurs contenus de cet utilisateur. Si un utilisateur avait des droits pour poster dans d'autres blogs, tous ces posts seront supprimés. Il n'est pas possible de revenir en arrière après la purge.";
+$messages['users_purged_ok'] = "Purge des utilisateurs réussie"; 
+$messages['cleanup_blogs'] = "Purge des blogs";
+
+$messages['cleanup_blogs_help'] = "Cette action purge tous les blogs qui avaient été supprimés par l'administrateur (marqué comme \"supprimé\"). Il supprime tout le contenu de ces blogs. Il n'est pas possible de revenir en arrière après la purge."; 
+$messages['blogs_purged_ok'] = "Purge des blogs réussie"; 
+$messages['help_use_http_accept_language_detection'] = "La plupart des navigateurs, comme Mozilla Firefox, Safari ou Internet Explorer, envoie le code de la langue que de l'utilisateur est <i>supposé</i> comprendre. Si cette fonctionnalité est activée, LifeType essaye, si possible, de servir l'utilisateur avec la langue demandée. [Non par défaut]"; 
+$messages['error_invalid_blog_category'] = "Catégorie de blog invalide";
+$messages['error_adding_blog_category'] = "Erreur lors de l'ajout de la catégorie de blogs"; 
+$messages['newBlogCategory'] = "Nouvelle catégorie de blogs";
+$messages['editBlogCategories'] = "Catégorie de blogs"; 
+$messages['blog_category_added_ok'] = "Nouvelle catégorie de blogs ajoutée avec succès"; 
+$messages['error_blog_category_has_blogs'] = 'La catégorie de blogs "%s" a des blogs qui lui sont assignés. Editez d\'abord ces blogs et reéssayer ensuite.';
+$messages['error_deleting_blog_category'] = "Une erreur s'est produite lors de la suppression de la catégorie de blogs"; 
+$messages['blog_category_deleted_ok'] = 'La catégorie de blogs "%s" a été supprimé avec succès';
+$messages['blog_categories_deleted_ok'] = 'Catégorie de blogs "%s" supprimée avec succès'; 
+$messages['error_deleting_blog_category2'] = 'Une erreur s\'est produite lors de la suppression de la catégorie de blogs dont l\'identifiant est "%s" '; 
+$messages['blog_category'] = "Catégorie de blogs";
+$messages['blog_category_help'] = "Catégorie générale de blog assignée à  ce blog"; 
+$messages['help_use_captcha_auth'] = "Utiliser un mécanisme de CAPTCHA lors de processus d'inscription pour éviter automatiquement l'inscription des scripts robots. [Défaut= Non]";
+$messages['help_skip_dashboard'] = "La page de tableau de bord ne sera plus affichée à  la connection des utilisateurs qui seront dirigés vers le premier blog auquel ils appartiennent.[Défaut= Non]";
+$messages['manageGlobalArticleCategory'] = "Catégories globales d'articles"; 
+$messages['newGlobalArticleCategory'] = "Nouvelle catégorie globale d'articles"; 
+$messages['editGlobalArticleCategories'] = "Editer les catégories globales d'articles"; 
+$messages['global_category_name_help'] = "Nom de la nouvelle catégorie globale d'article"; 
+$messages['global_category_description_help'] = "Description de la nouvelle catégorie globale d'article"; 
+$messages['error_incorrect_global_category_id'] = "Catégorie globale d'article invalide"; 
+$messages['global_category_deleted_ok'] = "La catégorie d'article \" %s \" a été supprimée"; 
+$messages['global_category_added_ok'] = "La catégorie globale \" %s \" a été ajoutée";
+$messages['error_deleting_global_category2'] = "Une erreur s'est produite lors du retrait de la catégorie d'articles avec l'id=%s"; 
+$messages['help_page_suffix_format'] = "Suffixe qui sera rajouté aux URLs supportant le paging [Default = \page\{page}]"; 
+$messages['help_final_size_thumbnail_width'] = "Largeur finale des images uploadées. Laisser vide ou égal à  0 pour stocker les images en taille initiale [ Default=0 ]";
+$messages['help_final_size_thumbnail_height'] = "Hauteur finale des images téléchargées. Laisser vide ou égal à  0 pour stocker les images en taille initiale. [ Default = 0 ]"; 
+$messages['error_comment_too_big'] = "Ce commentaire est trop long";
+$messages['error_you_have_been_blocked'] = "Interdit: cette requête n'a pas abouti";
+$messages['created'] = "Créé"; 
+$messages['view'] = "Voir";
+$messages['editUser'] = "Paramètres de l'utilisateur"; 
+$messages['help_urlize_word_separator'] = 'Caractère qui sera employé comme séparateur de mot pour les URLs des pages LifeType. Il sera aussi utilisé pour la génération des noms de blogs si le support des sous-domaines est activé. [ _ par défaut (underscore)]'; 
+$messages['help_summary_template_cache_lifetime'] ="Durée de vie en secondes du sommaire du cache des pages. Si vous parémétrez une valur autre que \' 0 \' , le sommaire des pages sera conservé aussi longtemps qu'indiqué ici, au lieu d'être mis à  jour à  chaque changement de données."; 
+$messages['register_default_album_name'] ="Général"; 
+$messages['register_default_album_description'] = "Utiliser cet album pour uploader les nouvelles images"; 
+$messages['show_in_summary'] ="Montrer dans le sommaire"; 
+$messages['show_in_summary_help'] = "Inclure ce blog dans le sommaire du site"; 
+$messages['saving_message'] = "Enregistrement en cours..."; 
+$messages['show_option_panel'] = "Montrer les options"; 
+$messages['hide_option_panel'] = "Masquer les options";
+$messages['quick_launches'] = "Lancements rapides";
+$messages['confirmation_message_resent_ok'] = "Message de confirmation réenvoyé vec succès."; 
+$messages['goto_blog_page'] = "Aller à  %s"; 
+$messages['help_num_blogs_per_user'] = "Nombre de blogs que l'utilisateur peut créer à  travers cette interface d'administration"; 
+$messages['massive_change_option'] = "Editer les options en masse"; 
+$messages['show_massive_change_option'] ="Voir l'édition des options en masse";
+$messages['hide_massive_change_option'] ="Masquer l'édition des options en masse"; 
+$messages['change_status'] = "Changer de statut"; 
+$messages['change_category'] = "Changer de catégorie"; 
+$messages['error_updating_comment_no_comment'] = "Une erreur s'est produite lors de la mise à  jour du commentaire. Commentaire #%s introuvable."; 
+$messages['error_updating_comment_wrong_blog'] = "Une erreur s'est produite lors de la mise à  jour du commentaire. Le commentaire (%s) n'a pas été posté sur ce blog."; 
+$messages['error_updating_comment'] = "Une erreur s'est produite lors de la mise à  jour de (%s)";
+$messages['error_updating_comment_already_updated'] = "Aucun changement fait à  (%s)";
+$messages['comment_updated_ok'] = "Commentaire mis à  jour avec succès";
+$messages['comments_updated_ok'] = "%s commentaires mis à  jour avec succès";
+$messages['error_post_status'] ="SVP, sélectionnez le statut du post"; 
+$messages['error_comment_status'] = "SVP, sélectionnez le statut du commentaire"; 
+$messages['admin_mode'] ="Mode Administrateur";
+$messages['administrate_user_blog'] = "Administrer ce blog";
+$messages['trackbacks_updated_ok'] = "%s trackbacks mis à  jour avec succès";
+$messages['trackback_updated_ok'] = "Trackback mis à  jou ravec succès";
+$messages['error_trackback_status'] = "Veuillez sélectionner un statut valide";
+$messages['error_incorrect_user'] = "User non valide";
+$messages['select'] ="Sélectionnez";
+$messages['remove_selected'] = "Supprimer la sélection";
+
+
+
+$messages['notification_subject'] = "Système de notification de LifeType"; 
+$messages['error_no_trackback_links_sent'] = "Attention: Aucun trackback envoyé";
+$messages['logout_destination_url'] ="URL où les utilisateurs seront dirigés à  la déconnexion, comme par exemple la page d'accueil de votre site. Laisser vide pour utiliser la valeur par défaut [Vide par défaut]";
+$messages['help_http_cache_lifetime'] ="Durée de vie en secondes du cache coté client. Les navigateurs ne feront pas de requête vers le serveur pendant ce laps de temps, et les pages viendront du cache local. La navigation sera plus rapide, mais les posts et les commentaires ne seront pas immédiatemnt visibles. [Défaut=1800]";
+$messages['trackbacks_no_trackback'] = "L'envoi d'un trackback à  l'URL suivante a échoué";
+$messages['error_comment_spam_throw_away'] ="Vous ne pouvez pas poster ce message.Le filtre anti-spam l'a bloqué"; 
+$messages['error_comment_spam_keep'] ="L'anti-spam a mis votre commentaire dans la file de modération,et il devra être approuvé par le propriétaire du blog."; 
+$messages['blog_categories'] = "Catégories de blogs"; 
+$messages['global_article_categories'] ="Catégories d'article global";
+$messages['help_force_posturl_unique'] = "Forcer l'unicité de toutes les URLs d'articles dans un blog. Nécessaire uniquement si vous changer les URLs et supprimer les dates dans les URLs";
+$messages['default_send_notification'] = "Notification d'envoi par défaut";
+$messages['enable_pull_down_menu'] = "Menu Pull Down"; 
+$messages['enable_pull_down_menu_help'] = "Activer ou désactiver le melu pull down";
+$messages['change_album'] = "Changer d'album";
+$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Erreur" class="InfoIcon"/><p class="ErrorText">Vous avez quitté cette page sans sauvegrder votre article. Si c\'est le cas,<a href="#" onclick="restoreAutoSave();">Cliquez ici pour le récupérer</a> ou à href="#" onclick="eraseAutoSave();">supprimez le</a></p> ';
+
+$messages['check_username'] = "Vérifier le pseudo";
+$messages['check_username_ok'] = "Le pseudo est disponible"; 
+$messages['error_username_exist'] = "Désolé, le pseudo n'est pas disponible. Essayez-en d'autres.";
+$messages['error_rule_email_dns_server_temp_fail'] = "Echec temporaire - essayez plus tard";
+$messages['error_rule_email_dns_server_unreachable'] = "Echec de la connexion au serveur mail";
+$messages['error_rule_email_dns_not_permitted'] = "Emails interdits"; 
+$messages['blog_users_help'] = "Utilisateurs autorisés sur ce blog"; 
+$messages['summary_welcome_paragraph'] = "Placez ici le message de bienvenue que verrons vos utilisateurs. Ou supprimer complètement le message actuel et réorganiser la page entière. Ou autre chose ;-) Jetez un coup d'oeil dans templates/summary , c'est l'endroit où les fichiers qui constituent cette page sont stockés. Vous êtes libre de les modifier à  votre guise.";
+$messages['first_day_of_week'] = 0;
+$messages['first_day_of_week_label'] = "Premier jour de la semaine"; 
+$messages['first_day_of_week_help'] = "Premier jour de la semaine sur le calendrier";
+$messages['help_subdomains_base_url'] ="Quand les sous-domaines sont activés, cette URL ets utilisé à  la place de base_url. Utilisez {blogname} pour obtenir le nom du blog, {username} pour obtenir le nom du propriétaire du blog et {blogdomain} pour permettre à  l'utilisateur de spécifier un sous-domaine pour générer un lien vers un blog. ( Exple: http://{blogname}.yourdomain.com )";
+$messages['registration_default_subject'] = "Confirmation d'enregistrement sur LifeType";
+$messages['error_invalid_subdomain'] = "Le nom du sous-domaine est invalide ou n'est pas unique";
+$messages['register_blog_domain_help'] = "Nom et sous-domaine que vous souhaitez utiliser pour votre nouveau blog";
+$messages['domain'] = 'Domain';
+$messages['help_subdomains_available_domains'] = "Entrer un ensemble des domaines pricnipaux autorisés en les séparant par des espaces. L'utilisateur verra une liste déroulante de ces valeurs et pourra ajouter le sous-domaine de son choix. Ceci est utilisé uniquement si vous activez les sous-domaines et utilisez {blogdomain} dans le subdomain_base_url du dessus. Utilisez un point d'interrogation \" ? \" si vous voulez autoriser un domaine. "; 
+$messages['subdomains_any_domain'] = "Multi domaine activé. Tapez le domaine complet"; 
+$messages['error_updating_blog_subdomain'] = "Une erreur s'est produite lors de la mise à  jour du sous-domaine. Vérifiez encore les données et reéssayez";
+$messages['error_updating_blog_main_domain'] = "Une erreur s'est produite lors de la mise à  à  jour les paramètres du site. L'adminsitrateur a probablement mal configuré un paramètre";
+$messages['monthsshort'] = Array('Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'); 
+$messages['weekdaysshort'] = Array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam' );
+$messages['search_type'] = "Chercher dans";
+$messages['posts'] = "Articles";
+$messages['blogs'] = "Blogs"; 
+$messages['resources'] = "Ressources"; 
+$messages['upload_in_progress'] = "Téléchargement en cours. Veuillez patienter";
+$messages['error_incorrect_username'] = "Le pseudo est incorrect. Il est déjà  utilisé ou est trop long (maximum de 15 caractères)";
+$messages['Miscellaneous'] = "Divers";
+$messages['Plugins'] = "Plugins";
+$messages['auth_img'] = "Code d'authentification";
+$messages['auth_img_help'] = "SVP, tapez le code que vous voyez dans l'image ci-dessous";
+$messages['global_category'] = "Catégorie générale";
+$messages['global_article_category_help'] = "Catégorie globale du site pour cet article";
+$messages['password_reset_subject'] = "Demande de réinitialisation du mot de passe";
+
+//
+// new strings for LifeType 1.2
+//
+$messages['auth'] = 'Authentification';
+$messages['authenticated'] = 'Authentifié';
+$messages['dropdown_list_field'] = 'Menu déroulant';
+$messages['values'] = 'Champ de valeurs';
+$messages['field_values'] = 'Valeurs qui seront montrées en option dans ce champ. La première sera utilisée comme option par défaut.';
+
+$messages['permission_added_ok'] = 'Permission ajoutée';
+$messages['core_perm'] = 'Permission système';
+$messages['admin_only'] = 'Admin Seulement';
+$messages['permissionsList'] = 'Permissions';
+$messages['newPermission'] = 'Nouvelle Permission';
+$messages['permission_name_help'] = 'Nom unique de la permission';
+$messages['permission_description_help'] = 'Description donné à la permission';
+$messages['core_perm_help'] = 'Si cette permission fait partie du système, il sera impossible de la supprimer';
+$messages['admin_only_help'] = 'Déterminer si la permission peut seulement être assignée par les administrateurs';
+$messages['error_adding_new_permission'] = 'Erreur lors de l\'ajout de la nouvelle permission, veuillez vérifier vos données.';
+$messages['error_incorrect_permission_id'] = 'Identifiant de la permission incorrect';
+$messages['error_permission_cannot_be_deleted'] = 'La permission "%s" ne peut être supprimée parce que soit elle est attribuée à au moins un utilisateur, soit fait partie du système.';
+$messages['error_deleting_permission'] = 'Erreur lors de la suppression de la permission "%s"';
+$messages['permission_deleted_ok'] = 'Permission "%s" supprimée';
+$messages['permissions_deleted_ok'] = '%s permissions  supprimées';
+$messages['error_deleting_permission2'] = 'Erreur lors de la suppression de la permission avec identifiant "%s"';
+
+$messages['help_hard_show_posts_max'] = 'Limite supérieure maximale du nombre d\'articles sur les pages du blog. Si un utilisateur paramètre une valeur au-delà, elle sera ignorée et la valeur ici spécifiée sera utilisée. [ Défaut = 50 ]';
+$messages['help_hard_recent_posts_max'] = 'Limite supérieure maximale du nombre d\'articles récents sur les pages du blog. Si un utilisateur paramètre une valeur au-delà, elle sera ignorée et la valeur ici spécifiée sera utilisée [ Défaut = 25 ]';
+
+$messages['error_permission_required'] = 'Vous n\'avez pas suffisamment de permissions pour réaliser l\'action demandée';
+$messages['user_permissions_updated_ok'] = 'Permissions utilisateur mises à jour';
+
+// blog permissions
+$messages['add_album_desc'] = 'Ajouter de nouveaux albums';
+$messages['add_blog_template_desc'] = 'Ajouter de nouveaux templates au blog';
+$messages['add_blog_user_desc'] = 'Ajouter de nouveaux utilisateurs du blog';
+$messages['add_category_desc'] = 'Ajouter de nouvelles catégories';
+$messages['add_custom_field_desc'] = 'Ajouter de nouveaux champs personnalisables';
+$messages['add_link_desc'] = 'Ajouter de nouveaux liens';
+$messages['add_link_category_desc'] = 'Ajouter de nouvelles catégories de liens';
+$messages['add_post_desc'] = 'Ajouter de nouveaux articles';
+$messages['add_resource_desc'] = 'Autoriser les nouvelles ressources';
+$messages['blog_access_desc'] = 'Autoriser l\'accès à ce blog';
+$messages['update_album_desc'] = 'Mettre à jour les blogs existants';
+$messages['update_blog_desc'] = 'Mettre à jour les propriétés du blog';
+$messages['update_blog_template_desc'] = 'Mettre à jour le template du jour';
+$messages['update_blog_user_desc'] = 'Mettre à jour les permissions des utilisateurs';
+$messages['update_category_desc'] = 'Mettre à jour les catégories existantes';
+$messages['update_comment_desc'] = 'Mettre à jour les commentaires existants';
+$messages['update_custom_field_desc'] = 'Mettre à jour les champs personnalisables existants';
+$messages['update_link_desc'] = 'Mettre à jour les liens existants';
+$messages['update_link_category_desc'] = 'Mettre à jour les catégories de liens';
+$messages['update_post_desc'] = 'Mettre à jour les posts existants';
+$messages['update_resource_desc'] = 'Mettre à jour les ressources existantes';
+$messages['update_trackback_desc'] = 'Mettre à jour les trackbacks existants';
+$messages['view_blog_templates_desc'] = 'Voir les templates du blog';
+$messages['view_blog_users_desc'] = 'Voir les utilisateurs du blog';
+$messages['view_categories_desc'] = 'Voir les catégories du blog';
+$messages['view_comments_desc'] = 'Voir les commentaires du blog';
+$messages['view_custom_fields_desc'] = 'Voir les champs personnalisables du blog';
+$messages['view_links_desc'] = 'Voir les liens du blog';
+$messages['view_link_categories_desc'] = 'Voir les catégories de liens du blog';
+$messages['view_posts_desc'] = 'Voir les articles du blog';
+$messages['view_resources_desc'] = 'Voir les ressources du blog';
+$messages['view_trackbacks_desc'] = 'Voir les trackblacks du blog';
+$messages['login_perm_desc'] = 'Le membre est autorisé à se connecter';
+
+
+
+// admin permissions
+$messages['add_blog_category_desc'] = 'Le membre peut ajouter des catégories de blogs';
+$messages['add_global_article_category_desc'] = 'Le membre peut ajouter des catégories globales d\'articles';
+$messages['add_locale_desc'] = 'Le membre peut ajouter des locales';
+$messages['add_permission_desc'] = 'Le membre peut ajouter de nouvelles permissions';
+$messages['add_site_blog_desc'] = 'Le membre peut ajouter de nouveaux blogs';
+$messages['add_template_desc'] = 'Le membre peut ajouter des nouveaux templates';
+$messages['add_user_desc'] = 'Le membre peut ajouter de nouveaux utilisateurs';
+$messages['edit_blog_admin_mode_desc'] = 'Le membre peut administrer d\'autres blogs (mode administrateur)';
+$messages['purge_data_desc'] = 'Le membre peut nettoyer les données';
+$messages['update_blog_category_desc'] = 'Le membre peut mettre à jour et supprimer les catégories de blogs';
+$messages['update_global_article_category_desc'] = 'Le membre peut mettre à jour et supprimer les catégories globales d\'articles';
+$messages['update_global_settings_desc'] = 'Le membre peut mettre à jour les paramètres du site';
+$messages['update_locale_desc'] = 'Le membre peut mettre à jour et supprimer des locales';
+$messages['update_permission_desc'] = 'Le membre peut mettre à jour et supprimer des permissions';
+$messages['update_plugin_settings_desc'] = 'Le membre peut mettre à jour les plugins';
+$messages['update_site_blog_desc'] = 'Le membre peut mettre à jour et supprimer des blogs';
+$messages['update_template_desc'] = 'Le membre peut mettre à jour et supprimer des templates';
+$messages['update_user_desc'] = 'Le membre peut mettre à jour et supprimer des utilisateurs';
+$messages['view_blog_categories'] = 'Le membre peut voir les catégories de blogs';
+$messages['view_global_article_categories_desc'] = 'Le membre peut voir les catégories globales d\'articles';
+$messages['view_global_settings_desc'] = 'Le membre peut voir la configuration du site';
+$messages['view_locales_desc'] = 'Le membre peut voir les locales';
+$messages['view_permissions_desc'] = 'Le membre peut voir les permissions';
+$messages['view_plugins_desc'] = 'Le membre peut installer les plugins';
+$messages['view_site_blogs_desc'] = 'Le membre peut voir tous les blogs du site';
+$messages['view_templates_desc'] = 'Le membre peut voir les templates';
+$messages['view_users_desc'] = 'Le membre peut voir les utilisateurs';
+$messages['update_blog_stats_desc'] = 'L\'utilisateur peut supprimer les referrers';
+$messages['manage_admin_plugins_desc'] = 'Gérer les propriétés d\'administration des plugins';
+
+$messages['summary_welcome_msg'] = 'Vous êtes connectés, %s !';
+$messages['summary_go_to_admin'] = 'Partie administration';
+
+$messages['error_can_only_update_own_articles'] = 'Vos habilitations vous permettent de modifier uniquement vos propres articles.';
+$messages['update_all_user_articles_desc'] = 'Autoriser à modifier les articles des autres utilisateurs';
+$messages['error_can_only_view_own_articles'] = 'Votre habilitation ne vous permet de voir que vos propres articles';
+$messages['view_all_user_articles_desc'] = 'Autoriser à voir tous les articles des autres utilisateurs';
+$messages['error_fetching_permission'] = 'Erreur lors du chargement de la permission';
+$messages['editPermission'] = 'Editer la permission';
+$messages['error_updating_permission'] = 'Erreur lors de la mise à jour de la permission';
+$messages['permission_updated_ok'] = 'Permission mise à jour ';
+$messages['error_adding_permission'] = 'Une erreur est survenue lors de l\'ajout de la permission';
+$messages['error_cannot_login'] = 'Désolé, vous n\'êtes pas habilité à vous connecter';
+$messages['admin_user_permissions_help'] = 'Permissions globales du site ouvertes à cet utilisateur';
+
+$messages['permissions'] = 'Permissions';
+$messages['blog_user_permissions_help'] = 'Permissions assignées à cet utilisateur sur ce blog';
+$messages['pluginSettings'] = 'Paramètres des plugins';
+$messages['user_can_override'] = 'Modifiable par les utilisateurs';
+$messages['user_cannot_override'] = 'Non modifiable par les utilisateurs';
+$messages['global_plugin_settings_saved_ok'] = 'Paramètres des plugins sauvegardés ';
+$messages['error_updating_global_plugin_settings'] = 'Erreur lors de la sauvegarde des paramètres des plugins';
+$messages['error_incorrect_value'] = 'La valeur est incorrecte';
+$messages['parameter'] = 'Paramètre';
+$messages['value'] = 'Valeur';
+$messages['override'] = 'Modifier';
+$messages['editCustomField'] = 'Editer le champ personnalisable';
+$messages['view_blog_stats_desc'] = 'Voir les stats du blog';
+$messages['manage_plugins_desc'] = 'Gérer les plugins';
+
+$messages['error_global_category_has_articles'] = 'La catégorie ne peut pas être supprimée car elle contient encore des articles';
+$messages['error_adding_global_article_category'] = 'Erreur lors de l\'ajout d\'une catégorie globale d\'articles';
+
+$messages['temp_folder_reset_ok'] = 'Le répertoire temporaire a été vidé ';
+$messages['cleanup_temp_help'] = 'Ceci déclenchera la purge du répertoire temporaire, obligeant les caches à être réinitialisés pour tous les blogs';
+$messages['cleanup_temp'] = 'Vider le répertoire temporaire';
+
+$messages['comment_only_auth_users'] = 'Seuls les authentifiés laissent des commentaires';
+$messages['comment_only_auth_users_help'] = 'Seuls les utilisateurs qui ont un login et un mot de passe valides, et qui ne sont loggués seront aurorisés à laisser des commentaires';
+$messages['show_comments_max'] = 'Commentaires par page';
+$messages['show_comments_max_help'] = 'Nombre maximum de comantaires par page [ 20 par défaut ]';
+$messages['hard_show_comments_max_help'] = 'Limite supérieure du nombre de comentaires par pages [ 50 par défaut ]';
+
+$messages['error_resource_not_whitelisted_extension'] = 'Le type de fichier n\'est pas l\'un des types autorisés.';
+
+$messages['upload_allowed_files']='Formats des fichiers autorisés à être téléchargés';
+$messages['help_upload_allowed_files'] = 'Liste des types de fichiers autorisés à être uploadés. L\'utilisation de \'*\' and \'?\' est autorisée. Si upload_forbidden_file et cette option sont activées, la liste des types de fichiers autorisés (upload_allowed_files) est prioritaire sur la liste des types interdits.[Aucun par défaut]';
+
+$messages['help_template_load_order'] = 'Définit dans quel ordre les templates sont recherchés et chargés. Si vous utilisez "Charger les templates par défaut d\'abord", LifeType essaiera d\'abord de trouver les fichiers dans le dossier \templates\Défaut, ensuite dans le dossier templates de l\'utilisateur. Si le même fichier de templates existe dans les 2 répertoires, ceux par défaut sont prioritaires.<br />
+Si vous utilisez "Charger d\'abord les templates des utilisateurs", les templates des utilisateurs sont toujours chargés en premier, et s\'ils ne sont pas disponibles, les templates par défaut sont utilisés. Si le même fichier existe dans les 2 répertoires, ceux de l\'utilisateur sont prioritaires.';
+$messages['template_load_order_user_first'] = 'Charger les templates par défaut d\'abord';
+$messages['template_load_order_Défaut_first'] = 'Charger d\'abord les templates des utilisateurs';
+
+$messages['editBlogUser'] = 'Editer l\'utilisateur du blog';
+
+$messages['help_summary_service_name'] = 'Nom de votre site/service qui apparaitra à plusieurs endroits comme dans la page d\'accueil et les flux RSS [Vide par défaut ]';
+
+$messages['register_step2_help'] = 'Veuillez fournir les informations pour créer un blog.';
+
+$messages['create_date'] = 'Date créée';
+
+$messages['insert_media'] = 'Insérer un fichier média';
+$messages['insert_more'] = 'Rajouter le lien "Lire la suite de l\'article" ';
+
+$messages['purging_please_wait'] = 'Patientez pendant que les données sont purgées. Cette page se rafrichit automatiquement quand les données seront nettoyées, n\'essayez pas d\'arrêter le processus';
+
+$messages['error_cannot_delete_last_blog_category'] = 'Impossible de supprimer la dernière catégorie de blogs.';
+
+$messages['help_logout_destination_url'] = 'URL où les utilisateurs seront redirigés quand ils se déconenctent du service, à la place de la page de connexion de l\'interface d\'administration [ Vide par défaut ]';
+$messages['help_Défaut_global_article_category_id'] = 'Identifiant de la catégorie globale d\'articles par défaut [Vide par défaut ]';
+$messages['help_blog_does_not_exist_url'] = 'URL où les utilisateurs seront renvoyés s\'ils essaient d\'atteindre un blog inexistant sur le site, à la place d\'être renvoyé vers le blog par défaut du site [ Vide par défaut ]';
+
+$messages['error_invalid_blog_name'] = 'Le nom du blog est invalide';
+
+/* strings for /Défaut/ templates */
+$messages['help_forbidden_blognames'] = 'Liste des mots non utilisables comme noms de blogs séparés par un espace. Il est possible d\'utiliser des expressions normales à laplace des chaines de caractères. [ Vide par défaut ]';
+
+$messages['posts_updated_ok'] = 'Les articles %s ont été mis à jour ';
+$messages['error_updating_post2'] = 'Erreur lors de la mise à jour de l\'article d\'identifiant %s';
+$messages['resources_updated_ok'] = 'Les ressources %s ont été mises à jour ';
+$messages['error_updating_resource2'] = 'Erreur lors de la mise à jour de la ressource d\'identifiant %s';
+$messages['albums_updated_ok'] = 'Les albums %s ont été mis à jour ';
+$messages['error_updating_album2'] = 'Erreur lors de la mise à jour de l\'album d\'identifiant %s';
+$messages['links_updated_ok'] = 'Les liens %s ont été mis à jour ';
+$messages['error_updating_link2'] = 'Erreur lors de la mise à jour du lien d\'identifiant %s';
+$messages['version'] = 'Version';
+$messages['error_resources_disabled'] = 'Désolé, le téléchargement de nouveaux fichiers a été désactivé sur ce site';
+$messages['help_login_admin_panel'] = 'Cliquer sur le nom du blog pour entrer dans la zone d\'administration.';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Autoriser des blocs de code JavaScript dans les articles par les tags &lt;script&gt;. Veuillez noter que ceci cause des risques de sécurité dans vos blogs [ Défaut = Non ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'Les fichiers suivants ne correspondent pas aux contenus attendus:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'La version actuellement installée de LifeType est:';
+$messages['file_version_check'] = 'Vérification de la version du fichier';
+$messages['file_version_check_help'] = 'Ceci déclenchera une vérification basique de la plupart des fichiers systèmes de LifeType, afin de vérifier que la version courante des fichiers correspond aux contenus attendus en accord avec la version installée. Veuillez patienter, le processus peut prendre un certain temps.';
+$messages['check'] = 'Vérifier';
+$messages['all_files_ok'] = 'Tous les fichiers sont corrects';
+?>
\ No newline at end of file

Copied: plog/trunk/locale/admin/locale_gl_ES.php (from rev 5487, plog/branches/lifetype-1.2/locale/admin/locale_gl_ES.php)
===================================================================
--- plog/trunk/locale/admin/locale_gl_ES.php	                        (rev 0)
+++ plog/trunk/locale/admin/locale_gl_ES.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,1209 @@
+<?php
+// Traducción o galego de lifetype 1.2.2, realizada por Víctor Julio Quesada Varela, 2007. egalego at gmail.com, www.egalego.com
+
+// login page
+$messages['login'] = 'Entrar';
+$messages['welcome_message'] = 'Benvido a Lifetype en Galego - egalego.com';
+$messages['error_incorrect_username_or_password'] = 'O nome de usuario ou password e incorrecto.';
+$messages['error_dont_belong_to_any_blog'] = 'O Seu usuario non pertence a ningunha bitácora todavía.';
+$messages['logout_message'] = 'Foi desconectado correctamente';
+$messages['logout_message_2'] = 'Faga clic <a href="%1$s">aquí</a> para ir a %2$s</a>.';
+$messages['error_access_forbidden'] = 'Acceso non permitido. Debe primeiro verificar o seu usuario aquí';
+$messages['username'] = 'Usuario';
+$messages['password'] = 'Password';
+
+// dashboard
+$messages['dashboard'] = 'Perspectiva';
+$messages['recent_articles'] = 'artigos recentes';
+$messages['recent_comments'] = 'Comentarios recentes';
+$messages['recent_trackbacks'] = 'Retroenlaces recentes';
+$messages['blog_statistics'] = 'Estatísticas';
+$messages['total_posts'] = 'Número de artigos';
+$messages['total_comments'] = 'Número de comentarios';
+$messages['total_trackbacks'] = 'Número de trackbacks';
+$messages['total_viewed'] = 'artigos lidos';
+$messages['in'] = 'En';
+
+// menu options
+$messages['newPost'] = 'Novo artigo';
+$messages['Manage'] = 'Contido';
+$messages['managePosts'] = 'artigos';
+$messages['editPosts'] = 'artigos';
+$messages['editArticleCategories'] = 'Categorias';
+$messages['newArticleCategory'] = 'Nova Categoria';
+$messages['manageLinks'] = 'Enlaces';
+$messages['editLinks'] = 'Enlaces';
+$messages['newLink'] = 'Novo Enlace';
+$messages['editLink'] = 'Editar Enlace';
+$messages['editLinkCategories'] = 'Editar Categorías de Enlaces';
+$messages['newLinkCategory'] = 'Nova Categoría de Enlaces';
+$messages['editLinkCategory'] = 'Editar Categoría de Enlace';
+$messages['manageCustomFields'] = 'Campos';
+$messages['blogCustomFields'] = 'Campos';
+$messages['newCustomField'] = 'Novo Campo';
+$messages['resourceCenter'] = 'Ficheiros';
+$messages['resources'] = 'Ficheiros';
+$messages['newResourceAlbum'] = 'Novo Álbum';
+$messages['newResource'] = 'Novo Ficheiro';
+$messages['controlCenter'] = 'Configuración';
+$messages['manageSettings'] = 'Configuración';
+$messages['blogSettings'] = 'Configuración da Bitácora';
+$messages['userSettings'] = 'Configuración do Usuario';
+$messages['pluginCenter'] = 'Plugins';
+$messages['Stats'] = 'Estatísticas';
+$messages['manageBlogUsers'] = 'Usuarios da Bitácora';
+$messages['newBlogUser'] = 'Invitar Usuario';
+$messages['showBlogUsers'] = 'Usuarios da Bitácora';
+$messages['manageBlogTemplates'] = 'Plantillas';
+$messages['newBlogTemplate'] = 'Engadir Plantilla';
+$messages['blogTemplates'] = 'Plantillas da Bitácora';
+$messages['adminSettings'] = 'Administración';
+$messages['Users'] = 'Usuarios';
+$messages['createUser'] = 'Novo Usuario';
+$messages['editSiteUsers'] = 'Usuarios';
+$messages['Blogs'] = 'Bitácoras';
+$messages['createBlog'] = 'Nova Bitácora';
+$messages['editSiteBlogs'] = 'Bitácoras';
+$messages['Locales'] = 'Traduccions';
+$messages['newLocale'] = 'Nova Traducción';
+$messages['siteLocales'] = 'Traduccions';
+$messages['Templates'] = 'Plantillas';
+$messages['newTemplate'] = 'Engadir Plantilla';
+$messages['siteTemplates'] = 'Plantillas';
+$messages['GlobalSettings'] = 'Configuración Xeral';
+$messages['editSiteSettings'] = 'Xeral';
+$messages['summarySettings'] = 'Portal';
+$messages['templateSettings'] = 'Plantillas';
+$messages['urlSettings'] = 'Direccions';
+$messages['emailSettings'] = 'Email';
+$messages['uploadSettings'] = 'Transferencias';
+$messages['helpersSettings'] = 'Ferramentas';
+$messages['interfacesSettings'] = 'Interfaces';
+$messages['securitySettings'] = 'Seguridade';
+$messages['bayesianSettings'] = 'Filtro Bayesiano';
+$messages['resourcesSettings'] = 'Ficheiros';
+$messages['searchSettings'] = 'Búsquedas';
+$messages['cleanUpSection'] = 'Limpeza';
+$messages['cleanUp'] = 'Limpeza';
+$messages['editResourceAlbum'] = 'Editar Álbum';
+$messages['resourceInfo'] = 'Editar Ficheiro';
+$messages['editBlog'] = 'Editar Plantilla';
+$messages['Logout'] = 'Sair';
+
+// new post
+$messages['topic'] = 'Título';
+$messages['topic_help'] = 'Título do artigo';
+$messages['text'] = 'Texto';
+$messages['text_help'] = 'Texto do artigo. Esta parte sempre aparecerá na páxina principal da bitácora';
+$messages['extended_text'] = 'Texto extra';
+$messages['extended_text_help'] = 'Texto extra do artigo. Esta parte Pode aparecer o ben siempre na primera paxina o na paxina do artigo. Esto é configurable na paxina de configuración da bitácora';
+$messages['post_slug'] = 'Título URL';
+$messages['post_slug_help'] = 'O título URL será usado para xerar enlaces permanentes con maior significado semántico';
+$messages['date'] = 'Data';
+$messages['post_date_help'] = 'Data cando este artigo debería ser publicado';
+$messages['status'] = 'Estado';
+$messages['post_status_help'] = 'Elixa un dos seguintes estados';
+$messages['post_status_published'] = 'Publicado';
+$messages['post_status_draft'] = 'Borrador';
+$messages['post_status_deleted'] = 'Eliminado';
+$messages['categories'] = 'Categorías';
+$messages['post_categories_help'] = 'Seleccione unha ou máis categorías';
+$messages['post_comments_enabled_help'] = 'Activar comentarios';
+$messages['send_notification_help'] = 'Enviar unha notificación cando se reciban novos comentarios ou retroenlaces';
+$messages['send_trackback_pings_help'] = 'Envíar retroenlaces';
+$messages['send_xmlrpc_pings_help'] = 'Enviar pings vía XMLRPC';
+$messages['save_draft_and_continue'] = 'Gardar Borrador';
+$messages['preview'] = 'Vista Previa';
+$messages['add_post'] = 'Engadir!';
+$messages['error_saving_draft'] = 'Houbo un erro gardando o borrador';
+$messages['draft_saved_ok'] = 'Borrador gardado correctamente';
+$messages['error_sending_request'] = 'Houbo un erro enviando a petición';
+$messages['error_no_category_selected'] = 'Debe seleccionar polo menos unha categoría';
+$messages['error_missing_post_topic'] = 'O título do artigo está baleiro';
+$messages['error_missing_post_text'] = 'O texto do artigo está baleiro';
+$messages['error_adding_post'] = 'Houbo un erro gardando o artigo';
+$messages['post_added_not_published'] = 'O artigo foi gardado correctamente pero non aparecerá na páxina principal';
+$messages['post_added_ok'] = 'O artigo foi gardado correctamente.';
+$messages['send_notifications_ok'] = 'Enviaráse unha mensaxe cada vez que se reciba un comentario ou retroenlace';
+
+// send trackbacks
+$messages['error_sending_trackbacks'] = 'Houbo un erro enviando un retroenlace os seguintes sitios';
+$messages['send_trackbacks_help'] = 'Seleccione as direccions as que quere enviar un retroenlace. Asegúrese de que as direccions soportan retroenlaces.';
+$messages['send_trackbacks'] = 'Enviar retroenlaces';
+$messages['ping_selected'] = 'Enviar retroenlaces';
+$messages['trackbacks_sent_ok'] = 'Os retroenlaces foron enviados correctamente as direccions seleccionadas';
+
+// posts page
+$messages['show_by'] = 'Amosar';
+$messages['category'] = 'Categoría';
+$messages['author'] = 'Autor';
+$messages['post_status_all'] = 'Todos';
+$messages['author_all'] = 'Todos';
+$messages['search_terms'] = 'Búsqueda';
+$messages['show'] = 'Amosar';
+$messages['delete'] = 'Eliminar';
+$messages['actions'] = 'Accions';
+$messages['all'] = 'Todos';
+$messages['category_all'] = 'Todas';
+$messages['error_incorrect_article_id'] = 'O identificador de artigo e incorrecto.';
+$messages['error_deleting_article'] = 'Houbo un erro eliminando o artigo "%s"';
+$messages['article_deleted_ok'] = 'O artigo "%s" foi eliminado correctamente';
+$messages['articles_deleted_ok'] = '%s articulos foron eliminados correctamente';
+$messages['error_deleting_article2'] = 'Houbo un erro eliminando o artigo con identificador  "%s"';
+
+// edit post page
+$messages['update'] = 'Actualizar';
+$messages['editPost'] = 'Editar artigo';
+$messages['error_fetching_post'] = 'Houbo un erro cargando o artigo';
+$messages['post_updated_ok'] = 'O artigo "%s" foi actualizado corrrectamente';
+$messages['error_updating_post'] = 'Houbo un erro actualizando o artigo';
+$messages['notification_added'] = 'Enviaráse unha mensaxe cada vez que se reciba un comentario ou retroenlace';
+$messages['notification_removed'] = 'Non se enviarán mensaxes en caso de comentarios ou retroenlaces';
+
+// post comments
+$messages['url'] = 'enderezo';
+$messages['comment_status_all'] = 'Todos';
+$messages['comment_status_spam'] = 'Spam';
+$messages['comment_status_nonspam'] = 'Non Spam';
+$messages['error_fetching_comments'] = 'Houbo un erro cargando os artigos do comentario';
+$messages['error_deleting_comments'] = 'Houbo un erro eliminando os comentarios ou non se seleccionou ningún comentario a eliminar';
+$messages['comment_deleted_ok'] = 'O comentario "%s" foi eliminado correctamente';
+$messages['comments_deleted_ok'] = '%s comentarios eliminados correctamente';
+$messages['error_deleting_comment'] = 'Houbo un erro eliminando o comentario "%s"';
+$messages['error_deleting_comment2'] = 'Houbo un erro eliminando o comentario con identificador  %s';
+$messages['editComments'] = 'Comentarios';
+$messages['mark_as_spam'] = 'Marcar como spam';
+$messages['mark_as_no_spam'] = 'Marcar como non spam';
+$messages['error_incorrect_comment_id'] = 'O identificador do comentario non e correcto';
+$messages['error_marking_comment_as_spam'] = 'Houbo un erro marcando o comentario como spam';
+$messages['comment_marked_as_spam_ok'] = 'O comentario foi marcado como spam correctamente';
+$messages['error_marking_comment_as_nonspam'] = 'Houbo un erro marcando o comentario como non spam';
+$messages['comment_marked_as_nonspam_ok'] = 'O comentario foi marcado como non spam correctamente';
+
+// post trackbacks
+$messages['blog'] = 'Bitácora';
+$messages['excerpt'] = 'Fragmento';
+$messages['error_fetching_trackbacks'] = 'Houbo un erro cargando os retroenlaces recibidos';
+$messages['error_deleting_trackbacks'] = 'Houbo un erro eliminando os retroenlaces ou non seleccionou ningún retroenlace a eliminar';
+$messages['error_deleting_trackback'] = 'Houbo un erro borrando o retroenlace "%s"';
+$messages['error_deleting_trackback2'] = 'Houbo un error eliminando o retroenlace cuycono identificador  "%s"';
+$messages['trackback_deleted_ok'] = 'Retroenlace "%s" eliminado correctamente';
+$messages['trackbacks_deleted_ok'] = '%s retroenlaces eliminados correctamente';
+$messages['editTrackbacks'] = 'Retroenlaces';
+
+// post statistics
+$messages['referrer'] = 'Referencia';
+$messages['hits'] = 'Hits';
+$messages['error_no_items_selected'] = 'Non se seleccionaron referencias a eliminar';
+$messages['error_deleting_referrer'] = 'Houbo un erro eliminando a referencia "%s"';
+$messages['error_deleting_referrer2'] = 'Houbo un erro eliminando a referencia con identificador  "%s"';
+$messages['referrer_deleted_ok'] = 'A referencia "%s" foi eliminada correctamente';
+$messages['referrers_deleted_ok'] = '%s referencias eliminadas correctamente';
+
+// categories
+$messages['posts'] = 'artigos';
+$messages['show_in_main_page'] = 'Incluir na páxina principal';
+$messages['error_incorrect_category_id'] = 'O identificador da categoría non e correcto ou non se seleccionaron categorías a borrar';
+$messages['error_category_has_articles'] = 'A categoría "%s" non se pode borrar porque está sendo usada por alguns artigos. Edite primeiro os artigos e volva a intentar eliminar a categoría.';
+$messages['category_deleted_ok'] = 'A categoría "%s" foi eliminada correctamente';
+$messages['categories_deleted_ok'] = '%s categorías eliminadas correctamente';
+$messages['error_deleting_category'] = 'Houbo un erro eliminando a categoría "%s"';
+$messages['error_deleting_category2'] = 'Houbo un erro eliminando a categoría con identificador  "%s"';
+$messages['yes'] = 'Sí';
+$messages['no'] = 'Non';
+
+// new category
+$messages['name'] = 'Nome';
+$messages['category_name_help'] = 'Nome da categoría tal e como aparecerá na bitácora';
+$messages['description'] = 'Descripción';
+$messages['category_description_help'] = 'Descripción da categoría';
+$messages['show_in_main_page_help'] = 'Se se desactiva, os artigos categorizados baixo esta categoría non serán mostrados na páxina principal e so serán visibles na páxina propia da categoría';
+$messages['error_empty_name'] = 'O nome non pode estar baleiro';
+$messages['error_empty_description'] = 'A descripción non pode estar vacía';
+$messages['error_adding_article_category'] = 'Houbo un erro engadindo a categoría. Verifique os datos e intenteo de novo';
+$messages['category_added_ok'] = 'A categoría "%s" foi engadida correctamente a bitácora';
+$messages['add'] = 'Engadir';
+$messages['reset'] = 'Limpar';
+
+// update category
+$messages['error_updating_article_category'] = 'Houbo un erro actualizando a categoría';
+$messages['error_fetching_category'] = 'Houbo un erro cargando a categoría';
+$messages['article_category_updated_ok'] = 'A categoría "%s" foi actualizada correctamente';
+
+// links
+$messages['feed'] = 'Contidos RSS';
+$messages['error_no_links_selected'] = 'O identificador do enlace non e correcto ou non se seleccionaron enlaces a eliminar';
+$messages['error_incorrect_link_id'] = 'O identificador do enlace non e correcto';
+$messages['error_removing_link'] = 'Houbo un erro eliminando o enlace "%s"';
+$messages['error_removing_link2'] = 'Houbo un erro eliminando o enlace con identificador  "%s"';
+$messages['link_deleted_ok'] = 'O enlace "%s" foi eliminado correctamente';
+$messages['links_deleted_ok'] = '%s enlaces foron eliminados correctamente';
+
+// new link
+$messages['link_name_help'] = 'Nome para o enlace';
+$messages['link_url_help'] = 'enderezo do enlace';
+$messages['link_description_help'] = 'Breve descripción do enlace';
+$messages['link_feed_help'] = 'Enlace unha fonte de contidos RSS ou Atom do enlace';
+$messages['link_category_help'] = 'Elixa unha das categorías de enlace dispoñibles';
+$messages['error_adding_link'] = 'Houbo un erro engadindo o enlace. Verifique os datos e volvao intentar';
+$messages['error_invalid_url'] = 'A enderezo non e correcta';
+$messages['link_added_ok'] = 'O enlace "%s" foi engadido correctamente';
+
+// update link
+$messages['error_updating_link'] = 'Houbo un erro actualizando o enlace. Verifique os datos e volvao intentar';
+$messages['error_fetching_link'] = 'Houbo un erro o cargar o enlace';
+$messages['link_updated_ok'] = 'O enlace "%s" foi actualizado correctamente';
+
+// link categories
+$messages['links'] = 'Enlaces';
+$messages['error_invalid_link_category_id'] = 'O identificador da categoría de enlaces non e correcto ou non escolleu ningunha categoría de enlaces';
+$messages['error_links_in_link_category'] = 'Hai alguns enlaces clasificados baixo a categoría "%s". Modifique os enlaces primeiro e volvao intentar.';
+$messages['error_removing_link_category'] = 'Houbo un erro eliminando a categoría de enlaces "%s"';
+$messages['link_category_deleted_ok'] = 'A categoría de enlaces "%s" foi eliminada correctamente';
+$messages['link_categories_deleted_ok'] = '%s categorías de enlaces foron eliminadas correctamente';
+$messages['error_removing_link_category2'] = 'Houbo un erro eliminando a categoría de enlaces con identificador  "%s"';
+
+// new link category
+$messages['link_category_name_help'] = 'Nome dado a esta categoría de enlaces';
+$messages['error_adding_link_category'] = 'Houbo un erro engadindo a nova categoría de enlaces';
+$messages['link_category_added_ok'] = 'A categoría de enlaces "%s" foi engadida correctamente';
+
+// edit link category
+$messages['error_updating_link_category'] = 'Houbo un erro actualizando a categoría de enlace. Comprobe os datos e volvao intentar.';
+$messages['link_category_updated_ok'] = 'A categoría de enlaces "%s" foi actualizada correctamente';
+$messages['error_fetching_link_category'] = 'Houbo un erro cargando a categoría de enlaces';
+
+// custom fields
+$messages['type'] = 'Tipo';
+$messages['hidden'] = 'Oculto';
+$messages['fields_deleted_ok'] = '%s campos eliminados correctamente';
+$messages['field_deleted_ok'] = 'O campo "%s" foi borrado correctamente';
+$messages['error_deleting_field'] = 'Houbo un erro eliminando o campo "%s"';
+$messages['error_deleting_field2'] = 'Houbo un erro eliminando o campo con identificador  "%s"';
+$messages['error_incorrect_field_id'] = 'O identificador do campo non e correcto';
+
+// new custom field
+$messages['field_name_help'] = 'Nome do campo que será usado para obter o seu valor nos artigos';
+$messages['field_description_help'] = 'Descripción do campo que será amosada o engadir ou editar un artigo';
+$messages['field_type_help'] = 'Escolla  un dos seguintes tipos de campo';
+$messages['field_hidden_help'] = 'Se o campo está marcado como oculto, non será mostrado nas pantallas de edición o novo artigo. Este atributo e usado casi únicamente por plugins que engaden novos campos para o seu uso';
+$messages['error_adding_custom_field'] = 'Houbo un erro engadindo o campo. Comprobe os datos e volvao intentar';
+$messages['custom_field_added_ok'] = 'O campo "%s" foi engadido correctamente';
+$messages['text_field'] = 'Campo de texto';
+$messages['text_area'] = 'Caixa de texto';
+$messages['checkbox'] = 'Casilla';
+$messages['date_field'] = 'Campo de data';
+
+// edit custom field
+$messages['error_fetching_custom_field'] = 'Houbo un erro cargando o campo';
+$messages['error_updating_custom_field'] = 'Houbo un erro actualizando o capmo. Comprobe os datos e volvao intentar';
+$messages['custom_field_updated_ok'] = 'O campo "%s" foi actualizado correctamente';
+
+// resources
+$messages['root_album'] = 'Álbum raíz';
+$messages['num_resources'] = 'Número de ficheiros';
+$messages['total_size'] = 'Tamaño total';
+$messages['album'] = 'Álbum';
+$messages['error_incorrect_album_id'] = 'O identificador do álbum non e válido';
+$messages['error_base_storage_folder_missing_or_unreadable'] = 'Non foi posible crear os directorios necesarios onde os ficheiros van a ser gardados. Esto pode ser debido a varias razons, como por exemplo que o "safe mode" esté activado na sua configuración do PHP ou que o usuario usado para executar PHP non teña suficientes permisos. Tamen se pode intentar crear os seguintes directorios manualmente: <br/><br/>%s<br/><br/>Se os directorios xa existen, asegúrese de que poidan ser leídos e escritos polo usuario que se está usando para ejecutar o servidor de web/PHP';
+$messages['items_deleted_ok'] = '%s ficheiros eliminados correctamente';
+$messages['error_album_has_children'] = 'O álbum "%s" ten subálbums. Modifique primeiro os subálbums e volvao intentar';
+$messages['item_deleted_ok'] = 'O ficheiro "%s" foi borrado correctamente';
+$messages['error_deleting_album'] = 'Houbo un error eliminando o campo "%s"';
+$messages['error_deleting_album2'] = 'Houbo un erro eliminando o campo con identificador  "%s"';
+$messages['error_deleting_resource'] = 'Houbo un erro eliminando o ficheiro "%s"';
+$messages['error_deleting_resource2'] = 'Houbo un erro eliminando o ficheiro con identificador  "%s"';
+$messages['error_no_resources_selected'] = 'Non se seleccionaron ficheiros ou álbums para eliminar';
+$messages['resource_deleted_ok'] = 'O ficheiro "%s" foi eliminado correctamente';
+$messages['album_deleted_ok'] = 'O álbum "%s" foi eliminado correctamente';
+$messages['add_resource'] = 'Engadir ficheiro';
+$messages['add_resource_preview'] = 'Engadir vista previa';
+$messages['add_resource_medium'] = 'Engadir vista mediana';
+$messages['add_album'] = 'Engadir álbum';
+
+// new album
+$messages['album_name_help'] = 'Nome do novo álbum';
+$messages['parent'] = 'Pai';
+$messages['no_parent'] = 'Álbum raíz';
+$messages['parent_album_help'] = 'Albumes poden conter subálbums de forma que poida organiza-los seus contidos mellor';
+$messages['album_description_help'] = 'Descripción dos contidos do álbum';
+$messages['error_adding_album'] = 'Houbo un erro engadindo o novo álbum. Comprobe os datos e volvao a intentar';
+$messages['album_added_ok'] = 'O álbum "%s" foi engadido correctamente';
+
+// edit album
+$messages['error_incorrect_album_id'] = 'O identificador do álbum non e correcto';
+$messages['error_fetching_album'] = 'Houbo un erro cargando o álbum';
+$messages['error_updating_album'] = 'Houbo un erro actualizando o álbum. Comprobe os datos e volvao a intentar';
+$messages['album_updated_ok'] = 'O álbum "%s" foi actualizado correctamente';
+$messages['show_album_help'] = 'Se esta casilla está desactivada, o álbum e os ficheiros que estén incluídos nel non aparecerán na parte pública do blog';
+
+// new resource
+$messages['file'] = 'Ficheiro';
+$messages['resource_file_help'] = 'Ficheiro que desexa engadir. Use o enlace "Engadir Outro" para engadir máis dun ficheiro o mesmo tempo (pero tardará máis tempo en termina-a operación)';
+$messages['add_field'] = 'Engadir outro';
+$messages['resource_description_help'] = 'Descripción sobre os contidos do ficheiro';
+$messages['resource_album_help'] = 'Seleccione o álbum o que se engadirá o ficheiro';
+$messages['error_no_resource_uploaded'] = 'Non seleccionou ningún ficheiro para engadir';
+$messages['resource_added_ok'] = 'O ficheiro "%s" foi engadido correctamente';
+$messages['error_resource_forbidden_extension'] = 'O ficheiro non foi engadido porque e dun tipo non permitido polo administrador';
+$messages['error_resource_too_big'] = 'O ficheiro non foi engadido porque e demasiado grande';
+$messages['error_uploads_disabled'] = 'O ficheiro non foi engadido porque a posibilidade de engadir ficheiros foi desactivada polo administrador';
+$messages['error_quota_exceeded'] = 'O ficheiro non foi engadido porque superou p tamaño máximo total de ficheiros permitido para a sua bitácora';
+$messages['error_adding_resource'] = 'Houbo un erro engadindo o ficheiro';
+
+// edit resource
+$messages['editResource'] = 'Editar ficheiro';
+$messages['resource_information_help'] = 'Información sobre o ficheiro';
+$messages['information'] = 'Información';
+$messages['size'] = 'Tamaño';
+$messages['format'] = 'Formato';
+$messages['dimensions'] = 'Dimensions';
+$messages['bits_per_sample'] = 'Bits por mostra';
+$messages['sample_rate'] = 'Frecuencia de mostreo';
+$messages['number_of_channels'] = 'Número de canles';
+$messages['legnth'] = 'Duración';
+$messages['thumbnail_format'] = 'Formato da vista previa';
+$messages['regenerate_preview'] = 'Rexenerar vista previa';
+$messages['error_fetching_resource'] = 'Houbo un erro cargando o ficheiro';
+$messages['error_updating_resource'] = 'Houbo un erro actualizando o ficheiro';
+$messages['resource_updated_ok'] = 'O ficheiro "%s" foi actualizado correctamente';
+
+// blog settings
+$messages['blog_link'] = 'enderezo';
+$messages['blog_link_help'] = 'Enlace permanente a esta bitácora';
+$messages['blog_name_help'] = 'Título desta bitácora';
+$messages['blog_description_help'] = 'Descripción dos contidos desta bitácora';
+$messages['language'] = 'Idioma';
+$messages['blog_language_help'] = 'Idioma usado para mostra-los textos de tanto a parte pública como a parte privada da bitácora';
+$messages['max_main_page_items'] = 'Artigos mostrados na páxina principal';
+$messages['max_main_page_items_help'] = 'Máximo número de artigos mostrados na páxina principal da bitácora';
+$messages['max_recent_items'] = 'Número de artigos recentes';
+$messages['max_recent_items_help'] = 'Máximo número de artigos recentes mostrados';
+$messages['template'] = 'Plantilla';
+$messages['choose'] = 'Elexir';
+$messages['blog_template_help'] = 'Plantilla usada para mostra-los contidos da bitácora. Esta lista inclue as plantillas globais ademáis das plantillas instaladas exclusivamente para esta bitácora';
+$messages['use_read_more'] = 'Engadir o enlace "Máis..." os artigos';
+$messages['use_read_more_help'] = 'Se se activa, só o texto que introduciu na caixa de texto marcada como "Texto" na páxina de edición de artigos Amosaráse na páxina principal e engadirase un enlace titulado "Máis..." o final do texto. O resto do artigo Amosaráse na páxina propia do artigo. Se se desactiva, o artigo enteiro Amosaráse sempre na páxina principal';
+$messages['enable_wysiwyg'] = 'Activa-lo editor visual de artigos';
+$messages['enable_wysiwyg_help'] = 'Activa-lo editor visual de código HTML, que amosa o contido do artigo tal cual aparecerá na bitácora. Esta funcionalidade require Internet Explorer 5.5 ou Mozilla 1.3 ou superiores';
+$messages['enable_comments'] = 'Permitir comentarios por defecto';
+$messages['enable_comments_help'] = 'Permite comentarios en todolos artigos por defecto, ainda que os comentarios podense activar ou desactivar a vontade específicamente para cada artigo';
+$messages['show_future_posts'] = 'Mostralos artigos con data no futuro';
+$messages['show_future_posts_help'] = 'Amosa os artigos que teñan data futura no calendario e na páxina principal';
+$messages['comments_order'] = 'Orde dos comentarios';
+$messages['comments_order_help'] = 'Orde na que os comentarios dun artigo deben ser amosados';
+$messages['oldest_first'] = 'Os antigos primeiro';
+$messages['newest_first'] = 'Os novos primeiro';
+$messages['categories_order'] = 'Orde das categorías';
+$messages['categories_order_help'] = 'Orde no que as categorías deben ser amosadas na páxina principal';
+$messages['most_recent_updated_first'] = 'As categorías actualizadas máis recentemente primeiro';
+$messages['alphabetical_order'] = 'Orde alfabético';
+$messages['reverse_alphabetical_order'] = 'Orde alfabético inverso';
+$messages['most_articles_first'] = 'As que teñan máis artigos primeiro';
+$messages['link_categories_order'] = 'Orde das categorías de enlaces';
+$messages['link_categories_order_help'] = 'Orde no que as categorías de enlaces deben ser amosadas na páxina principal';
+$messages['most_links_first'] = 'As que teñan máis enlaces primeiro';
+$messages['most_links_last'] = 'As que teñan menos enlaces primeiro';
+$messages['time_offset'] = 'Diferencia horaria';
+$messages['time_offset_help'] = 'Diferencia horaria en número de horas que será engadida dinámicamente a cada data e hora amosada na bitácora';
+$messages['close'] = 'Pechar';
+$messages['select'] = 'Seleccionar';
+$messages['error_updating_settings'] = 'Houbo un erro actualizando a configuración da bitácora. Comprobe os datos e volvao a intentar';
+$messages['error_invalid_number'] = 'O valor non e correcto';
+$messages['error_incorrect_time_offset'] = 'O valor da diferencia horaria non e correcto';
+$messages['blog_settings_updated_ok'] = 'A configuración da bitácora foi gardada correctamente';
+$messages['hours'] = 'Horas';
+
+// user settings
+$messages['username_help'] = 'Nome de usuario, non pode ser cambiado';
+$messages['full_name'] = 'Nome completo';
+$messages['full_name_help'] = 'Nome completo, opcional';
+$messages['password_help'] = 'Cambie o password e confírmeo, ou deixe os campos baleiros se non desexa facer ningun cambio.';
+$messages['confirm_password'] = 'Confirmar o password';
+$messages['email'] = 'Direccion de correo';
+$messages['email_help'] = 'enderezo de correo onde as notificacions serán enviadas';
+$messages['bio'] = 'Descripción persoal';
+$messages['bio_help'] = 'Descripción persoal, opcional';
+$messages['picture'] = 'Foto';
+$messages['user_picture_help'] = 'Pode escoller unha foto das dispoñibles nesta bitácora como ficheiro para que sexa a sua foto persoal';
+$messages['error_invalid_password'] = 'O password non e correcto ou por exemplo, e demasiado curto';
+$messages['error_passwords_dont_match'] = 'O password e a confirmación non son iguais';
+$messages['error_incorrect_email_address'] = 'A enderezo de correo non e válida';
+$messages['error_updating_user_settings'] = 'Houbo un erro gardando os seus datos. Comprobe os datos e volvao  intentar';
+$messages['user_settings_updated_ok'] = 'Os datos de usuario foron gardados correctamente';
+$messages['resource'] = 'Ficheiro';
+
+// plugin centre
+$messages['identifier'] = 'Identificador';
+$messages['error_plugins_disabled'] = 'A funcionalidade de plugins foi desactivada polo administrador.';
+
+// blog users
+$messages['revoke_permissions'] = 'Quitar permisos';
+$messages['error_no_users_selected'] = 'Non seleccionou ningun usuario';
+$messages['user_removed_from_blog_ok'] = 'O usuario "%s" xa non ten permisos para acceder a esta bitácora';
+$messages['users_removed_from_blog_ok'] = '%s usuarios xa non teñen acceso a esta bitácora';
+$messages['error_removing_user_from_blog'] = 'Houbo un erro eliminando o acceso a esta bitácora do usuario "%s"';
+$messages['error_removing_user_from_blog2'] = 'Houbo un erro eliminando o acceso a esta bitácora do usuario con identificador  "%s"';
+
+// new blog user
+$messages['new_blog_username_help'] = 'Nombe do usuario o que se quere dar acceso a esta bitácora. O usuario so terá acceso as seccions "Contido" e "Ficheiros"';
+$messages['send_notification'] = 'Enviar notificación';
+$messages['send_user_notification_help'] = 'Enviar  mensaxe de notificación a este usuario';
+$messages['notification_text'] = 'Texto';
+$messages['notification_text_help'] = 'Texto que será incluido na notificación enviada a este usuario';
+$messages['error_adding_user'] = 'Houbo un erro dando acceso o usuario. Comprobe os datos e volvao intentar';
+$messages['error_empty_text'] = 'O texto da notificación non pode estar baleiro';
+$messages['error_invalid_user'] = 'O usuario "%s" non e válido ou non existe';
+$messages['user_added_to_blog_ok'] = 'O usuario "%s" xa pode acceder a esta bitácora';
+
+// blog templates
+$messages['error_no_templates_selected'] = 'Non se seleccionaron plantillas';
+$messages['error_template_is_current'] = 'A plantilla "%s" non se pode eliminar porque e a que está usando a bitácora';
+$messages['error_removing_template'] = 'Houbo un erro borrando a plantilla "%s"';
+$messages['template_removed_ok'] = 'A plantilla "%s" foi eliminada correctamente';
+$messages['templates_removed_ok'] = '%s plantillas foron eliminadas correctamente';
+
+// new blog template
+$messages['template_installed_ok'] = 'A plantilla "%s" foi engadida correctamente';
+$messages['error_installing_template'] = 'Houbo un erro engadindo a plantilla "%s"';
+$messages['error_missing_base_files'] = 'A plantilla non puido ser engadida porque alguns dos ficheiros básicos da plantilla non están dispoñibles';
+$messages['error_add_template_disabled'] = 'Non se poden engadir novas plantillas porque esta posibilidade foi desactivada polo administrador';
+$messages['error_must_upload_file'] = 'Non se enviou ningun ficheiro con datos dunha plantilla';
+$messages['error_uploads_disabled'] = 'A posibilidade de enviar ficheiros o servidor foi  desactivada polo administrador';
+$messages['error_no_new_templates_found'] = 'Non se atoparon novas plantillas';
+$messages['error_template_not_inside_folder'] = 'Os ficheiros da plantilla debense gardar dentro dun directorio con nome o mesmo que o da plantilla';
+$messages['error_unpacking'] = 'Houbo un erro descomprimindo o ficheiro da plantilla';
+$messages['error_forbidden_extensions'] = 'Alguns dos ficheiros da plantilla contiñan unha extensión non permitida neste sitio';
+$messages['error_creating_working_folder'] = 'Houbo un erro creando un directorio temporal para descomprimi-a plantilla';
+$messages['error_checking_template'] = 'Houbo un erro comprobando que a plantilla e correcta: %s';
+$messages['template_package'] = 'Plantilla';
+$messages['blog_template_package_help']  = 'Use este formulario para enviar novas plantillas o servidor. Éstas plantillas so estarán dispoñibles para esta bitácora. Se non e posible enviar ficheiros, use por exemplo un cliente de FTP para subi-los ficheiros e colóqueos no directorio <b>%s</b> e logo use o botón "<b>Actualizar plantillas</b>" para engadir calquera plantilla nova.Lifetype comprobará o contido do directorio e engadirá automáticamente todalas plantillas novas';
+$messages['scan_templates'] = 'Actualizar plantillas';
+
+// site users
+$messages['user_status_active'] = 'Activo';
+$messages['user_status_disabled'] = 'Desactivado';
+$messages['user_status_all'] = 'Todos';
+$messages['user_status_unconfirmed'] = 'Sen confirmar';
+$messages['error_invalid_user2'] = 'O usuario con identificador  "%s" non existe';
+$messages['error_deleting_user'] = 'Houbo un erro desactivando o usuario "%s"';
+$messages['user_deleted_ok'] = 'O usuario "%s" foi desactivado correctamente';
+$messages['users_deleted_ok'] = '%s usuarios foron desactivados correctamente';
+
+// create user
+$messages['user_added_ok'] = 'O usuario "%s" foi engadido correctamente';
+$messages['error_incorrect_username'] = 'O nome de usuario non e correcto ou xa está asignado';
+$messages['user_status_help'] = 'Estado do usuario';
+$messages['user_blog_help'] = 'Bitácora a  que este usuario será asignado inicialmente';
+$messages['none'] = 'Ningun';
+
+// edit user
+$messages['error_invalid_user'] = 'O nome de usuario non e correcto ou non existe';
+$messages['error_updating_user'] = 'Houbo un erro actualizando o usuario. Comprobe os datos e volvao  intentar';
+$messages['blogs'] = 'Bitácoras';
+$messages['user_blogs_help'] = 'Bitácoras nas que o usuario ten acceso como usuario ou como propietario da bitácora';
+$messages['site_admin'] = 'Administrador';
+$messages['site_admin_help'] = 'Dar permisos de administrador a este usuario de forma que poida acceder a sección de "Administración"';
+$messages['user_updated_ok'] = 'O usuario "%s" foi actualizado correctamente';
+
+// site blogs
+$messages['blog_status_all'] = 'Todas';
+$messages['blog_status_active'] = 'Activas';
+$messages['blog_status_disabled'] = 'Desactivada';
+$messages['blog_status_unconfirmed'] = 'Sen confirmar';
+$messages['owner'] = 'Propietario';
+$messages['quota'] = 'Cuota';
+$messages['bytes'] = 'bytes';
+$messages['error_no_blogs_selected'] = 'Non se seleccionaron bitácoras para desactivar';
+$messages['error_blog_is_default_blog'] = 'A bitácora "%s" non se pode desactivar porque e a bitácora por defecto';
+$messages['blog_deleted_ok'] = 'A bitácora "%s" foi desactivada correctamente';
+$messages['blogs_deleted_ok'] = '%s foron desactivadas correctamente';
+$messages['error_deleting_blog'] = 'Houbo un erro desactivando a bitácora "%s"';
+$messages['error_deleting_blog2'] = 'Houbo un erro desactivando a bitácora con identificador  "%s"';
+
+// create blog
+$messages['error_adding_blog'] = 'Houbo un erro engadindo a bitácora. Comprobe os datos e volvao a intentar';
+$messages['blog_added_ok'] = 'A bitácora "%s" foi engadida correctamente';
+
+// edit blog
+$messages['blog_status_help'] = 'Estado da bitácora';
+$messages['blog_owner_help'] = 'Propietario da bitácora, que terá control sobre a sua configuración';
+$messages['users'] = 'Usuarios';
+$messages['blog_quota_help'] = 'Cuota de ficheiros en bytes. Use un valor de 0 para otorgar espacio ilimitado';
+$messages['blog_users_help'] = 'Usuarios que poden acceder a esta bitácora, pero sen acceso a sua configuración. Asigne os usuarios da esquerda a lista da dereita para engadir novos usuarios, ou viceversa para eliminar usuarios existentes';
+$messages['edit_blog_settings_updated_ok'] = 'A bitácora "%s" foi actualizada correctamente';
+$messages['error_updating_blog_settings'] = 'Houbo un erro actualizando a bitácora "%s"';
+$messages['error_incorrect_blog_owner'] = 'O usuario seleccionado como propietario da bitácora non e correcto';
+$messages['error_fetching_blog'] = 'Houbo un erro cargando a bitácora';
+$messages['error_updating_blog_settings2'] = 'Houbo un erro actualizando a bitácora. Comprobe os datos e inténteo de novo';
+$messages['add_or_remove'] = 'Engadir ou eliminar usuarios';
+
+// site locales
+$messages['locale'] = 'Traducción';
+$messages['locale_encoding'] = 'Condificación';
+$messages['locale_deleted_ok'] = 'A traducción "%s" foi eliminada correctamente';
+$messages['error_no_locales_selected'] = 'Non se seleccionaron traduccions para eliminar';
+$messages['error_deleting_only_locale'] = 'A traducción non puido ser eliminada porque e a única que queda no sistema';
+$messages['locales_deleted_ok']= '%s traduccions foron eliminadas correctamente';
+$messages['error_deleting_locale'] = 'Houbo un erro borrando a traducción "%s"';
+$messages['error_locale_is_default'] = 'A traducción "%s" non puido ser eliminada porque e a que se está usando por defecto para as novas bitácoras';
+
+// add locale
+$messages['error_invalid_locale_file'] = 'O ficheiro coa traducción non e válido';
+$messages['error_no_new_locales_found'] = 'Non se atoparon novos ficheiros con traduccions';
+$messages['locale_added_ok'] = 'A traducción "%s" foi engadida correctamente';
+$messages['error_saving_locale'] = 'Houbo un erro gardando a nova traducción';
+$messages['scan_locales'] = 'Actualizar traduccions';
+$messages['add_locale_help'] = 'Use este formulario para engadir novas traduccions. Se non e posible enviar ficheiros o servidor, suba o ficheiro o servidor manualmente mediante por exemplo FTP, gárdeo no directorio <b>./locales/</b> e use o botón "<b>Actualizar traduccions</b>". Lifetype lerá o directorio e engadira automáticamente calquera nova traducción';
+
+// site templates
+$messages['error_template_is_default'] = 'A plantilla "%s" non puido ser eliminada porque e a que se está usando por defecto para novas bitácoras';
+
+// add template
+$messages['global_template_package_help'] = 'Use este formulario para enviar novas plantillas o servidor. Éstas plantillas estarán dispoñibles para todalas bitácoras do servidor. Se non e posible enviar ficheiros, use por exemplo un cliente de FTP para subilos ficheiros e colóqueos no directorio <b>%s</b> e logo use o botón "<b>Actualizar plantillas</b>" para engadir calquera plantilla nova. Lifetype comprobará o contido do directorio e engadirá automáticamente todalas plantillas novas';
+
+// global settings
+$messages['site_config_saved_ok'] = 'A configuración xeral foi gardada correctamente';
+$messages['error_saving_site_config'] = 'Houbo un erro gardando a configuración xeral';
+/// Xeral settings
+$messages['help_comments_enabled'] = 'Activa-los comentarios en novas bitácoras por defecto [Valor por defecto = Sí]';
+$messages['help_beautify_comments_text'] = 'Se se activa, os comentarios enviados polos usuarios serán formateados automáticamente engadindo párrafos e xerando enlaces automáticamente a partir de direccions [Valor por defecto = Sí]';
+$messages['help_temp_folder'] = 'Cartafol onde o Lifetype pode escribir os seus ficheiros temporais de uso interno. Use unha Cartafol fora da árbore de directorios do servidor da web para maior seguridade [Valor por defecto = ./tmp]';
+$messages['help_base_url'] = 'enderezo base onde o Lifetype está instalado';
+$messages['help_subdomains_enabled'] = 'Activalo soporte para subdominios. Vexa a sección da documentación sobre subdominios para máis información [Valor por defecto = Non]';
+$messages['help_subdomains_base_url'] = 'Cando os subdominios estan activados, empregaráse esta URL base en lugar de base_url. Use {blogname} para obter o nome da bitácora e {username} para obter o nome de usuario, para xerar un enlace permanente a bitácora (p. ex. "http://{blogname}.sudominio.com")';
+$messages['help_include_blog_id_in_url'] = 'Cando os subdominios están activados conxuntamente coas URLs "normales", esto forzará o Blog a non incluir o parámetro "blogId". Non debería alterar este valor se non sabe o que está facendo [Valor por defecto = Sí]';
+$messages['help_script_name'] = 'Configure este parámetro se por algunha razón ten que renomear index.php [Valor por defecto = index.php]';
+$messages['help_show_posts_max'] = 'Número máximo de artigos na páxina principal para novas bitácoras [Valor por defecto = 15]';
+$messages['help_recent_posts_max'] = 'Número máximo de artigos recentes amosados na páxina principal para novas bitácoras [Valor por defecto = 10]';
+$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Activalo soporte para XmlHttpRequest de forma que se poidan gardar borradores de artigos sen ter que refrescar a páxina de edición [Valor por defecto = Sí]';
+$messages['help_locale_folder'] = 'Cartafol onde están gardadas as traduccions. Use un cartafol fora da árbore de directorios do servidor da web para maior seguridade [Valor por defecto = ./locale]';
+$messages['help_default_locale'] = 'Idioma por defecto para as novas bitácoras [Valor por defecto = en_UK]';
+$messages['help_default_blog_id'] = 'Bitácora por defecto que será amosada se non especifica unha bitácora en particular [Valor por defecto = 1]';
+$messages['help_default_time_offset'] = 'Diferencia horaria por defecto das novas bitácoras [Valor por defecto = 0]';
+$messages['help_html_allowed_tags_in_comments'] = 'Lista de entidades HTML, separadas por espacios en branco, que están permitidas nos comentarios [Valor por defecto = &lt;a&gt;&lt;i&gt;&lt;br&gt;&lt;br/&gt;&lt;b&gt;]';
+$messages['help_referer_tracker_enabled'] = 'Gardar os "referrers" na base de datos [Valor por defecto = Sí]';
+$messages['help_show_more_enabled'] = 'Activa-lo enlace "Máis..." por defecto para novas bitácoras [Valor por defecto = Sí]';
+$messages['help_update_article_reads'] = 'O Blog actualizará o contador de veces que un artigo foi lido se se activa [Valor por defecto = Sí]';
+$messages['help_update_cached_article_reads'] = 'Igual que update_article_reads, pero ademáis actualizará o contador ainda que a caché esté activada [Valor por defecto = Sí]';
+$messages['help_xmlrpc_ping_enabled'] = 'Activa-a posibilidade de enviar pings mediante XMLRPC os sitios que o soporten [Valor por defecto = Sí]';
+$messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Activa-lo soporte para pings XMLRPC por defecto en novos artigos [Valor por defecto = Sí]';
+$messages['help_xmlrpc_ping_hosts'] = 'URLs de servicios que implementen soporte para pings XMLRPC. Poña cada enderezo nunha liña nova [Valor por defecto = http://rpc.weblogs.com/RPC2]';
+$messages['help_trackback_server_enabled'] = 'Activa-lo soporte para recibir retroenlaces [Valor por defecto = Sí]';
+$messages['help_htmlarea_enabled'] = 'Activar por defecto o editor visual de artigos para as novas bitácoras [Valor por defecto = Sí';
+$messages['help_plugin_manager_enabled'] = 'Activa-los plugins [Valor por defecto = Sí]';
+$messages['help_minimum_password_length'] = 'Tamaño mínimo, en carácteres, que un password debe ter [Valor por defecto = 4]';
+$messages['help_xhtml_converter_enabled'] = 'Activa un filtro que intentará converti-lo texto dos artigos a XHTML válido automáticamente [Valor por defecto = Sí]';
+$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'O Blog intentará correxir casi todo o que poida para asegurar que os nosos artigos sexan XHTML válido, ainda que activando este modo e posible que se cometan máis errores [Valor por defecto = Non]';
+$messages['help_session_save_path'] = 'Cartafol onde o O Blog garda as suas sesions, mediante a función session_save_path() do PHP. Deixe este campo vacio para empregar o valor por defecto do PHP. Se usa outro cartafol que non sexa o por defecto, asegúrese de que pode ser escrito polo usuario executando o servidor de web [Valor por defecto = (baleiro)]';
+// summary settings
+$messages['help_summary_page_show_max'] = 'Número de artigos que se Amosarán no portal. Este parámetro controla todalas listas do portal (artigos máis recentes, bitácoras máis activas, etc) [Valor por defecto = 10]';
+$messages['help_summary_items_per_page'] = 'Número de bitácoras por páxina na sección "Bitácoras" do portal [Valor por defecto = 25]';
+$messages['help_forbidden_usernames'] = 'Lista de nomes de usuario que non se poden rexistrar [Valor por defecto = admin www blog ftp]';
+$messages['help_force_one_blog_per_email_account'] = 'Non permitir máis dunha bitácora por enderezo de correo [Valor por defecto = Non]';
+$messages['help_summary_show_agreement'] = 'Amosar un texto/licencia coa que os usuarios teñen que estar de acordo antes de continuar co proceso de rexistro [Valor por defecto = Sí]';
+$messages['help_need_email_confirm_registration'] = 'Enviar un email os novos usuarios cun enlace o que teñen que acceder, para confirma-lo rexistro dunha nova bitácora [Valor por defecto = Sí]';
+$messages['help_summary_disable_registration'] = 'Non permiti-lo rexistro de novas bitácoras [Valor por defecto = Non]';
+// templates
+$messages['help_template_folder'] = 'Cartafol onde se gardan as plantillas [Valor por defecto = ./templates]';
+$messages['help_default_template'] = 'Plantilla por defecto para as novas bitácoras [Valor por defecto = standard]';
+$messages['help_users_can_add_templates'] = 'Permitir que os usuarios engadan as suas propias plantillas [Valor por defecto = Sí]';
+$messages['help_template_compile_check'] = 'Se se activa, Smarty comprobará se os ficheiros das plantillas Trocaron e se e así, as recompilará [Valor por defecto = Sí]';
+$messages['help_template_cache_enabled'] = 'Activa a cache de plantillas. Se está activada, as páxinas das bitácoras so se xerarán unha vez e empregaránse ata que haxa algun cambio. Desta forma, non será necesario trae-los datos dende a base de datos cada vez [Valor por defecto = Sí]';
+$messages['help_template_cache_lifetime'] = 'Tempo en segundos de vida da caché. Asigne -1 para que a caché nunca expire';
+$messages['help_template_http_cache_enabled'] = 'Activa-lo soporte para as peticions condicionais vía HTTP. Se se activa, o Blog terá en conta o valor da cabeceira HTTP "If-Modified-Since" e so enviará os datos en caso de que sexa necesario para aforrar ancho de banda [Valor por defecto = Non]';
+$messages['help_allow_php_code_in_templates'] = 'Permite incluir código PHP nas plantillas de Smarty vía {php}...{/php} [Valor por defecto = Non]';
+// urls
+$messages['help_request_format_mode'] = 'Escolla un dos seguintes formatos de URLs. Se pensa empregar "URLs Personales", configure os formatos das URLs se e necesario [Valor por defecto = Plain]';
+$messages['plain'] = 'Normal';
+$messages['search_engine_friendly'] = 'Search engine friendly';
+$messages['custom_url_format'] = 'URLs Personales';
+$messages['help_permalink_format'] = 'Formato dos enlaces permanentes a artigos cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/{catname}/{year}/{month}/{day}/{postname}$]';
+$messages['help_category_link_format'] = 'Formato dos enlaces a categorías de artigos cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/{catname}$]';
+$messages['help_blog_link_format'] = 'Formato dos enlaces permanentes a bitácoras cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}$]';
+$messages['help_archive_link_format'] = 'Formato dos enlaces os archivos cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/archives/{year}/?{month}/?{day}]';
+$messages['help_user_posts_link_format'] = 'Formato dos enlaces permanentes os artigos dun autor en particular cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/user/{username}$]';
+$messages['help_post_trackbacks_link_format'] = 'Formato dos enlaces as páxinas cos retroenlaces recibidos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/post/trackbacks/{postname}$]';
+$messages['help_template_link_format'] = 'Formato dos enlaces a páxinas persoais cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/page/{templatename}$]';
+$messages['help_album_link_format'] = 'Formato dos enlaces a álbums de arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/album/{albumname}$]';
+$messages['help_resource_link_format'] = 'Formato dos enlaces a arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/{resourcename}$]';
+$messages['help_resource_preview_link_format'] = 'Formato dos enlaces as vistas previas de arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview/{resourcename}$]';
+$messages['help_resource_medium_size_preview_link_format'] = 'Formato dos enlaces as vistas previas de tamaño medio cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview-med/{resourcename}$]';
+$messages['help_resource_download_link_format'] = 'Formato dos enlaces para descargar arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/download/{resourcename}$]';
+// email
+$messages['help_check_email_address_validity'] = 'Se se activa, o Blog contactará co servidor de correo especificado no rexistro MX  especificado polo servidor DNS do dominio e comprobará se o usuario é válido [Valor por defecto = Non]';
+$messages['help_email_service_enabled'] = 'Activar o soporte para enviar mensaxes [Valor por defecto = Sí]';
+$messages['help_post_notification_source_address'] = 'enderezo que aparecerá no campo "From:" cando se envíen mensaxes a través do Blog [Valor por defecto = noreply at your.host.com]';
+$messages['help_email_service_type'] = 'Sistema que se empregará para enviar mensaxes [Valor por defecto = PHP]';
+$messages['help_smtp_host'] = 'Se se desexa empregar un servidor SMTP para enviar mensaxes, especifique aquí o nome do servidor [Valor por defecto = (baleiro)]';
+$messages['help_smtp_port'] = 'Se o servidor de SMTP está configurado nun porto distinto o 25 [Valor por defecto = (baleiro)]';
+$messages['help_smtp_use_authentication'] = 'Active este parámetro si o servidor requiere autentificación  [Valor por defecto = Non]';
+$messages['help_smtp_username'] = 'nome de usuario en caso de que o servidor SMTP necesite autentificación [Valor por defecto = (baleiro)]';
+$messages['help_smtp_password'] = 'Password en caso de que o servidor SMTP necesite autentificación [Valor por defecto = (baleiro)]';
+// helpers
+$messages['help_path_to_tar'] = 'Ruta completa o binario "tar", necesario para descomprimir plantillas en formato .tar.gz o tar.bz2 [Valor por defecto = /bin/tar]';
+$messages['help_path_to_gzip'] = 'Ruta completa o binario "gzip", necesario para descomprimir plantillas en formato .tar.gz [Valor por defecto = /bin/gzip]';
+$messages['help_path_to_bz2'] = 'Ruta completa o binario "bz2", necesario para descomprimir plantillas en formato tar.bz2 [Valor por defecto = /usr/bin/bzip2]';
+$messages['help_path_to_unzip'] = 'Ruta completa o binario "unzip", necesario para descomprimir plantillas en formato .zip [Valor por defecto = /usr/bin/unzip]';
+$messages['help_unzip_use_native_version'] = 'empregar unha versión nativa en PHP para descomprimir arquivos .zip, de forma que o binario "unzip" non sexa necesario [Valor por defecto = Non]';
+// uploads
+$messages['help_uploads_enabled'] = 'Permite ós usuarios enviar arquivos o servidor. Este parámetro afecta por exemplo as plantillas personalizadas [Valor por defecto = Sí]';
+$messages['help_maximum_file_upload_size'] = 'Tamaño máximo dos arquivos en bytes. Por razons obvias, este límite nunca será máis alto que o valor configurado na configuración do PHP [Valor por defecto = 2000000]';
+$messages['help_upload_forbidden_files'] = 'Lista separada por espacios en branco de nomes de arquivos non permitidos neste servidor. Pode empregar \'*\' e \'?\' para especificar nomes de arquivos máis complexos [Valor por defecto = *.php *.php3 *.php4 *.phtml]';
+// interfaces
+$messages['help_xmlrpc_api_enabled'] = 'Activar o acceso as bitácoras mediante XMLRPC [Valor por defecto = Sí]';
+$messages['help_rdf_enabled'] = 'Activar a xeracion de contidos mediante RSS ou Atom [Valor por defecto = Sí]';
+$messages['help_default_rss_profile'] = 'Formato por defecto dos contidos [Valor por defecto = RSS 1.0]';
+// security
+$messages['security_pipeline_enabled'] = 'Activar o filtro de seguridade, que é necesario para o filtro Bayesiano e por outros plugins que o usen [Valor por defecto = Sí]';
+$messages['help_maximum_comment_size'] = 'Tamaño máximo dun comentario en bytes, ou use un valor de "0" para permitir un tamaño ilimitado [Valor por defecto = 0]';
+// baSíian filter
+$messages['help_baSíian_filter_enabled'] = 'Activar o filtro Bayesiano anti-spam [Valor por defecto = Sí]';
+$messages['help_baSíian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario sexa considerado spam [Valor por defecto = 0.9]';
+$messages['help_baSíian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un comentario non sexa considerado spam [Valor por defecto = 0.2]';
+$messages['help_baSíian_filter_min_length_token'] = 'Tamaño mínimo en carácteres dun token [Valor por defecto = 3]';
+$messages['help_baSíian_filter_max_length_token'] = 'Tamaño máximo dun token [Valor por defecto = 100]';
+$messages['help_baSíian_filter_number_significant_tokens'] = 'Número mínimo de tokens [Valor por defecto = 15]';
+$messages['help_baSíian_filter_spam_comments_action'] = 'Qué facer cos comentarios que sexan spam. Use "Eliminar" cando o seu filtro Bayesiando fora entrenado correctamente. Manteñaos na base de datos se cree que  o seu filtro Pode cometer todavía algun erro [Valor por defecto = Gardar]';
+$messages['keep_spam_comments'] = 'Gardalos na base de datos, pero marcados como "Spam"';
+$messages['throw_away_spam_comments'] = 'Eliminalos directamente';
+// resources
+$messages['help_resources_enabled'] = 'Activar a sección de "arquivos" [Valor por defecto = Sí]';
+$messages['help_resources_folder'] = 'Cartafol onde los arquivos serán almacenados. Use un Cartafol fora do árbol do servidor de web para maior seguridade [Valor por defecto = ./gallery]';
+$messages['help_thumbnail_method'] = 'Método para xerar as previsualizacions. Se requiere soporte para GD si se selecciona PHP como o método por defecto  [Valor por defecto = PHP]';
+$messages['help_path_to_convert'] = 'Ruta completa o binario "convert" do paquete "ImageMagick". é obligatorio se o método para xerar as previsualizacions é "ImageMagick" [Valor por defecto = /usr/bin/convert]';
+$messages['help_thumbnail_format'] = 'Formato das previsualizacions [Valor por defecto = o mesmo que a imaxe]';
+$messages['help_thumbnail_height'] = 'Altura das previsualizacions en pixels [Valor por defecto = 120]';
+$messages['help_thumbnail_width'] = 'Anchura das previsualizacions en pixels [Valor por defecto = 120]';
+$messages['help_medium_size_thumbnail_height'] = 'Altura das previsualizacions de tamaño medio en pixels [Valor por defecto = 480]';
+$messages['help_medium_size_thumbnail_width'] = 'Anchura das previsualizacions de tamaño medio en pixels [Valor por defecto = 640]';
+$messages['help_thumbnails_keep_aspect_ratio'] = 'xerar as previsualizacions mantendo un aspecto proporcional [Valor por defecto = Sí]';
+$messages['help_thumbnail_generator_force_use_gd1'] = 'empregar so GD1 en lugar de GD2 [Valor por defecto = Non]';
+$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Método usado para suaviza-as vistas previas. So dispoñible se se está usando PHP para xerar as vistas previas [Valor por defecto = PHP ImageCopyResampled]';
+$messages['help_resources_quota'] = 'Cuota de arquivos en bytes para as bitácoras (i.e. 5242880 Bytes = 5MB), ou use "0" para dar cuota ilimitada [Valor por defecto = 0]';
+$messages['help_resource_server_http_cache_enabled'] = 'Activa o soporte para a cabeceira HTTP "If-Modified-Since" cando se fagan peticions para arquivos. Active este parámetro para aforrar ancho de banda [Valor por defecto = Non]';
+$messages['help_resource_server_http_cache_lifetime'] = 'Tempo en milisegundos durante o cal o cliente Pode empregar a versión cacheada dun arquivo. So válido cando o parámetro anterior esté activado [Valor por defecto = 9999999]';
+$messages['same_as_image'] = 'O mesmo que a imaxe orixinal';
+// search
+$messages['help_search_engine_enabled'] = 'Activar o motor de búsqueda  [Valor por defecto = Sí]';
+$messages['help_search_in_custom_fields'] = 'Procurar tamen nos campos persoais [Valor por defecto = Sí]';
+$messages['help_search_in_comments'] = 'Procurar tamen nos comentarios [Valor por defecto = Sí]';
+
+// cleanup
+$messages['purge'] = 'Limpar';
+$messages['cleanup_spam'] = 'Limpar Spam';
+$messages['cleanup_spam_help'] = 'Esto eliminara físicamente da base de datos todos aqueles comentarios que foran marcados como spam polos usuarios. Non será posible recuperalos unha vez foran eliminados';
+$messages['spam_comments_purged_ok'] = 'Spam eliminado correctamente';
+$messages['cleanup_posts'] = 'Limpar Artigos';
+$messages['cleanup_posts_help'] = 'Esto eliminará físicamente da base de datos todos aqueles artigos que foran marcados como "Borrados". Non será posible recuperalos unha vez foran eliminados';
+$messages['posts_purged_ok'] = 'artigos eliminados correctamente';
+
+/// summary ///
+// front page
+$messages['summary'] = 'Portal';
+$messages['register'] = 'Rexistrarse';
+$messages['summary_welcome'] = 'Benvido!';
+$messages['summary_most_active_blogs'] = 'As Bitácoras máis activas';
+$messages['summary_most_commented_articles'] = 'Os máis comentados';
+$messages['summary_most_read_articles'] = 'Os mais lidos';
+$messages['password_forgotten'] = 'Olvidaches o password?';
+$messages['summary_newest_blogs'] = 'Bitácoras novas';
+$messages['summary_latest_posts'] = 'Os máis novos';
+$messages['summary_search_blogs'] = 'Pesquisas';
+
+// blog list
+$messages['updated'] = 'Actualizada';
+$messages['total_reads'] = 'total';
+
+// blog profile
+$messages['blog'] = 'Bitácora';
+$messages['latest_posts'] = 'Os máis novos';
+
+// registration
+$messages['register_step0_title'] = 'Termos de Uso';
+$messages['decline'] = 'Non estou de acordo';
+$messages['accept'] = 'Aceptar';
+$messages['read_service_agreement'] = 'Lea atentamente os térmos de uso e pulse o botón "Aceptar" se está de acordo';
+$messages['register_step1_title'] = 'Crear o usuario [1/4]';
+$messages['register_step1_help'] = 'Primeiro hai que crear un usuario para a bitácora. Este usuario será o propietario da bitácora e terá acceso a todas as suas funcionalidades';
+$messages['register_next'] = 'Seguinte';
+$messages['register_back'] = 'Atrás';
+$messages['register_step2_title'] = 'Crear a bitácora [2/4]';
+$messages['register_blog_name_help'] = 'Nome da bitácora';
+$messages['register_step3_title'] = 'Escolla unha plantilla [3/4]';
+$messages['step1'] = 'Paso 1';
+$messages['step2'] = 'Paso 2';
+$messages['step3'] = 'Paso 3';
+$messages['register_step3_help'] = 'Escolla unha das plantillas dispoñibles para a sua nova bitácora. Se máis tarde non lle gusta, sempre a pode Trocar';
+$messages['error_must_choose_template'] = 'Escolla unha plantilla';
+$messages['select_template'] = 'Seleccionar esta';
+$messages['register_step5_title'] = 'Felicidades! [4/4]';
+$messages['finish'] = 'Terminar';
+$messages['register_need_confirmation'] = 'Unha mensaxe incluindo o enlace para a sua confirmación foi enviado a sua enderezo de correo. En canto reciba a mensaxe, faga clic na direción para empezar a empregar a sua bitácora!';
+$messages['register_step5_help'] = 'Felicidades, a sua nova bitácora foi creada!';
+$messages['register_blog_link'] = 'Se quere, pode ir directamente a sua nova bitácora: <a href="%2$s">%1$s</a>';
+$messages['register_blog_admin_link'] = 'Ou se o desexa, pode empezar a engadir artigos a través da <a href="admin.php">interface de administración</a>';
+$messages['register_error'] = 'Houbo un erro durante o proceso';
+$messages['error_registration_disabled'] = 'Non se poden rexistrar bitácoras neste sitio';
+// registration article topic and text
+$messages['register_default_article_topic'] = 'Felicidades! Instalaches Lifetype en Galego';
+$messages['register_default_article_text'] = 'Se pode ler isto, a sua bitácora está lista para empezar a escribir. Traducción o galego de lifetype, realizada por Víctor Julio Quesada Varela, 2006 - 2007. egalego at gmail.com, www.egalego.com';
+$messages['register_default_category'] = 'Xeral';
+// confirmation email
+$messages['register_confirmation_email_text'] = 'Visite o seguinte enlace para activar a sua nova bitácora:
+
+%s
+
+Que teña un bo día.';
+$messages['error_invalid_activation_code'] = 'O enlace de activación non e correcto';
+$messages['blog_activated_ok'] = 'Felicidades, a sua nova bitácora foi activada!';
+// forgot your password?
+$messages['reset_password'] = 'Trocar o password';
+$messages['reset_password_username_help'] = 'Nome do usuario do que quere cambia-lo password';
+$messages['reset_password_email_help'] = 'enderezo de correo que empregou para rexistrar este usuario';
+$messages['reset_password_help'] = 'Use este formulario para Trocar o password do seu usuario, en caso de que non o recorde. Por favor escriba o nome de usuario do que desexa Trocar o password, así como a enderezo de correo coa que se rexistrou este usuario';
+$messages['error_resetting_password'] = 'Houbo un erro cambiando o password do usuario. Comprobe os datos e volvao a intentar';
+$messages['reset_password_error_incorrect_email_address'] = 'A enderezo de correo non e correcta ou non e a enderezo que se usou para rexistrar este usuario';
+$messages['password_reset_message_sent_ok'] = 'Unha mensaxe de correo foi enviada a enderezo de correo. Por favor faga clic na enderezo incluida no  mensaxe para Trocar o password';
+$messages['error_incorrect_request'] = 'Os parámetros da enderezo non son correctos';
+$messages['change_password'] = 'Novo password';
+$messages['change_password_help'] = 'Por favor dun novo password e a continuación, confírmeo';
+$messages['new_password'] = 'Novo password';
+$messages['new_password_help'] = 'Escriba aquí o seu novo password';
+$messages['password_updated_ok'] = 'O Seu password foi cambiado correctamente!';
+
+// Suggested by BCSE, some useful messages that not available in official locale
+$messages['upgrade_information'] = 'This page looks plain and unstyled because you\'re using a non-standard compliant browser. To see it in its best form, please <a href="http://www.webstandards.org/upgrade/" title="The Web Standards Project\'s Browser Upgrade initiative">upgrade</a> to a browser that supports web standards. It\'s free and painless.';
+$messages['jump_to_navigation'] = 'Ir o menú';
+$messages['comment_email_never_display'] = 'O comentario será formateado automáticamente. A enderezo de correo non será amosada en público.';
+$messages['comment_html_allowed'] = '<acronym title="Hypertext Markup Language">HTML</acronym> allowed: &lt;<acronym title="Hyperlink">a</acronym> href=&quot;&quot; title=&quot;&quot; rel=&quot;&quot;&gt; &lt;<acronym title="Acronym Description">acronym</acronym> title=&quot;&quot;&gt; &lt;<acronym title="Quote">blockquote</acronym> cite=&quot;&quot;&gt; &lt;<acronym title="Strike">do</acronym>&gt; &lt;<acronym title="Italic">em</acronym>&gt; &lt;<acronym title="Underline">ins</acronym>&gt; &lt;<acronym title="Bold">strong</acronym>&gt;';
+$messages['trackback_uri'] = 'O URI <acronym title="Identificador de Recurso Uniforme (URI)">URI</acronym> para enviar retroenlaces a este artigo é: ';
+$messages['previous_post'] = 'Anterior';
+$messages['next_post'] = 'Seguinte';
+$messages['comment_default_title'] = '(Sen título)';
+$messages['guestbook'] = 'Libro de visitas';
+$messages['trackbacks'] = 'Retroenlaces';
+$messages['menu'] = 'Menú';
+$messages['albums'] = 'Albums';
+$messages['admin'] = 'Administración';
+$messages['xmlrpc_ping_ok'] = 'Ping XMLRPC enviado correctamente: ';
+$messages['error_sending_xmlrpc_ping'] = 'Houbo un erro enviando o ping XMLRPC a: ';
+$messages['error_sending_xmlrpc_ping_message'] = 'Houbo un erro enviando o ping XMLRPC: ';
+
+// textos novos para LT 1.1
+
+$messages['error_incorrect_trackback_id'] = 'o identificador do retroenlace no e válido';
+$messages['error_marking_trackback_as_spam'] = 'Houbo un erro marcando o retroenlace como spam';
+$messages['trackback_marked_as_spam_ok'] = 'o retroenlace foi marcado como spam';
+$messages['error_marking_trackback_as_nonspam'] = 'Houbo un erro marcando o retroenlace como non spam';
+$messages['trackback_marked_as_nonspam_ok'] = 'o retroenlace foi marcado como non spam';
+$messages['upload_here'] = 'Subir aquí';
+$messages['reply_string'] = 'Re: ';
+$messages['cleanup_users'] = 'Limpeza de usuarios';
+$messages['cleanup_users_help'] = 'Esta función eliminará todolos usuarios que foran marcados como "Borrados", incluindo calquera
+bitácora que pertenza o usuario e todo o contido da bitácora. Se o usuario ten acceso a outra bitácora, todolos artigos publicados polo usuario tamen serán eliminados. Unha vez o usuario e os seus datos foron eliminados non será posible recuperalos.';
+$messages['users_purged_ok'] = 'Limpeza de usuarios executada correctamente';
+$messages['cleanup_blogs'] = 'Limpeza de blogs';
+$messages['cleanup_blogs_help'] = 'Esta función eliminará todalas bitácoras que foran marcadas como "Borradas" por un administrador, incluindo todo o contido da bitácora. Unha vez a bitácora e os seus datos foron eliminados non será posible recuperalos.';
+$messages['blogs_purged_ok'] = 'Limpeza de blogs executada correctamente';
+$messages['help_use_http_accept_language_detection'] = 'Activa a detección da lingua preferida polo usuario baseandose na información que envia o navigador en cada petición';
+$messages['error_invalid_blog_category'] = 'Categoría de bitácora incorrecta';
+$messages['error_adding_blog_category'] = 'Houbo un erro engadindo a categoría de bitácora';
+$messages['newBlogCategory'] = 'Nova categoría de bitácoras';
+$messages['editBlogCategories'] = 'Categoría de bitácoras';
+$messages['blog_category_added_ok'] = 'Categoría de bitácoras engadida correctamente';
+$messages['error_blog_category_has_blogs'] = 'Hai algunhas bitácoras asignadas a categoría de bitácoras "%s. Por favor modifique primeiro as bitácoras e intenteo de novo.';
+$messages['error_deleting_blog_category'] = 'Houbo un erro borrando a categoría de bitácoras "%s"';
+$messages['blog_category_deleted_ok'] = 'a categoría de bitácoras "%s" foi borrada correctamente';
+$messages['blog_categories_deleted_ok'] = '%s categorías de blog foron eliminadas correctamente';
+$messages['error_deleting_blog_category2'] = 'Houbo un erro eliminando a categoría de bitácora co identificador  %s';
+$messages['blog_category'] = 'Categoría de bitácoras';
+$messages['blog_category_help'] = 'Categoría de bitácoras a que esta bitácora pertence';
+$messages['help_use_captcha_auth'] = 'Requerir a inserción dun código numérico mostrado nunha imaxe o iniciar o proceso de rexistro dunha Nova bitácora e así evitar rexistros de novos usuarios mediante scripts';
+$messages['help_skip_dashboard'] = 'Desactivar a paxina de "perspectiva" como paxina amosada o iniciar Unha sesión, e no seu lugar enviar o usuario o seu primeiro blog';
+$messages['manageGlobalArticleCategory'] = 'Categorías Globais';
+$messages['newGlobalArticleCategory'] = 'Nova categoría Global';
+$messages['editGlobalArticleCategories'] = 'Categorías Globais';
+$messages['global_category_name_help'] = 'Nome da Nova categoría global';
+$messages['global_category_description_help'] = 'Descripción da Nova categoría global';
+$messages['error_incorrect_global_category_id'] = 'Categoría global incorrecta';
+$messages['global_category_deleted_ok'] = 'a categoría global "%s" foi eliminada correctamente';
+$messages['global_category_added_ok'] = 'a categoría global "%s" foi engadida correctamente';
+$messages['error_deleting_global_category2'] = 'Houbo un erro eliminando a categoría global co identificador  %s';
+
+$messages['help_page_suffix_format'] = 'Sufixo que se engadira as URLs das seccions que soportan paxinacion [ Valor por defecto = /page/{page} ]';
+
+$messages['help_final_size_thumbnail_width'] = 'Anchura final en píxels das imaxes subidas por usuarios. Deixar este valor como 0 para empregar o tamaño real da imaxe [ Valor por defecto = 0 ]';
+$messages['help_final_size_thumbnail_height'] = 'Altura final en píxels das imaxes subidas por usuarios. Deixar este valor como 0 para empregar o tamaño real da imaxe [ Valor por defecto = 0 ]';
+$messages['error_comment_too_big'] = 'o comentario e demasiado longo';
+$messages['error_you_have_been_blocked'] = 'Proceso interrumpido: a petición non foi procesada.';
+$messages['created'] = 'Creado';
+$messages['view'] = 'Ver';
+$messages['editUser'] = 'Editar Usuario';
+$messages['help_urlize_word_separator'] = 'Carácter que será usado como separador de verbas en lugar do espacio en branco nas direccions xeradas por LifeType. Este parámetro tamen afecta os nomes de host que serán xerados cando o soporte para subdominios está activado [ Valor por defecto = _ ]';
+$messages['help_summary_template_cache_lifetime'] = 'Duración en segundos das paxinas prexeradas e gardadas na caché da portada. Se se usa un valor maior que 0, a versión dispoñible de cada paxina na caché será usada durante tantos segundos en lugar de rexerala cada vez que se produza un cambio nos datos. Active esta opción para mellorar o rendemento da paxina de portada. [ Valor por defecto = 0 ]';
+$messages['register_default_album_name'] = 'Xeral';
+$messages['register_default_album_description'] = 'Suba aquí as suas imaxes e ficheiros';
+$messages['show_in_summary'] = 'Amosar na portada';
+$messages['show_in_summary_help'] = 'Amosar esta bitácora na portada';
+
+$messages['saving_message'] = 'Gardando...';
+$messages['show_option_panel'] = 'Amosar Opcions';
+$messages['hide_option_panel'] = 'Ocultar Opcions';
+
+$messages['quick_launches'] = 'Acceso rápido';
+
+$messages['confirmation_message_resent_ok'] = 'a mensaxe de confirmación foi reenviada correctamente.';
+
+$messages['goto_blog_page'] = 'Ir a %s';
+
+$messages['help_num_blogs_per_user'] = 'Número máximo de blogs que cada usuario pode crear mediante o enlace dispoñible na paxina de perspectiva. Se o valor e 0, o link non aparecerá [ Valor por defecto = 0 ]';
+
+$messages['massive_change_option'] = 'Edición múltiple';
+$messages['show_massive_change_option'] = 'Amosar edición múltiple';
+$messages['hide_massive_change_option'] = 'Ocultar edición múltiple';
+$messages['change_status'] = 'Modificar estado';
+$messages['change_category'] = 'Modificar categoría';
+
+$messages['error_post_status'] = 'Escolla un estado';
+$messages['error_comment_status'] = 'Escolla un estado';
+$messages['admin_mode'] = 'Modo Administrador';
+$messages['administrate_user_blog'] = 'Administrar esta bitácora';
+$messages['trackbacks_updated_ok'] = '%s retroenlaces actualizados correctamente';
+$messages['trackback_updated_ok'] = 'Retroenlace modificado correctamente';
+$messages['error_trackback_status'] = 'Escolla un estado válido';
+$messages['error_incorrect_user'] = 'o usuario non e válido';
+$messages['select'] = 'Seleccionar';
+$messages['remove_selected'] = 'Eliminar selección';
+
+$messages['notification_subject'] = 'mensaxe dende LifeType';
+$messages['error_no_trackback_links_sent'] = 'Non se enviou ningún retroenlace';
+
+$messages['logout_destination_url'] = 'enderezo onde os usuarios serán redirixidos o sair da interface de administración de LifeType. Pode por exemplo empregar a enderezo da paxina principal do seu servicio [ Valor por defecto = nada ]';
+
+$messages['help_http_cache_lifetime'] = 'Tempo de vida en segundos da caché do navigador. Informaráse o navigador dos usuarios sobre canto Tempo deben empregar a versión actual da paxina en lugar de Obrigar o servidor a enviar a mesma versión cada vez. Este parámetro axuda a aforrar ancho de banda e a alixeirar a carga no servidor, ainda que os usuarios poderian recibir versions desfasadas das paxinas en caso de que este valor sexa demasiado alto. [ Valor por defecto = 1800 ]';
+
+$messages['trackbacks_no_trackback'] = 'Non se puido enviar un retroenlace a seguinte enderezo: ';
+
+$messages['error_comment_spam_throw_away'] = 'o filtro anti-spam rexeitou a sua mensaxe.';
+$messages['error_comment_spam_keep'] = 'o filtro anti-spam marcou o seu comentario como dudoso e deberá ser revisado polo autor desta bitácora.';
+
+$messages['blog_categories'] = 'Categorías de Bitácoras';
+$messages['global_article_categories'] = 'Categorías Globais';
+
+$messages['help_force_posturl_unique'] = 'Obrigar que todolos enlaces a artigos sexan únicos. Este parámetro so e necesario se o formato das direccions cambiou e non está incluindo a data no seu novo formato';
+
+$messages['default_send_notification'] = 'Enviar notificación';
+
+$messages['enable_pull_down_menu'] = 'Menú despregable';
+$messages['enable_pull_down_menu_help'] = 'Activar ou desactivar o menú despregable';
+
+$messages['change_album'] = 'Cambiar álbum';
+
+$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Parece que a sua sesión anterior rematou sen grabar o seu novo artigo. Se e así, <a href="#" onclick="restoreAutoSave();">faga click aquí para recuperalo</a> ou se o prefire, <a href="#" onclick="eraseAutoSave();">faga click aquí para borralo</a>.</p>';
+
+$messages['check_username'] = 'Nome de usuario';
+$messages['check_username_ok'] = 'o Nome de usuario está dispoñible!';
+$messages['error_username_exist'] = 'o Nome de usuario non está dispoñible, intenteo con outro.';
+
+$messages['error_rule_email_dns_server_temp_fail'] = 'Problema temporal - intenteo mais tarde.';
+$messages['error_rule_email_dns_server_unreachable'] = 'Non se puido conectar co servidor de correo.';
+$messages['error_rule_email_dns_not_permitted'] = 'o enderezo de correo non e válido.';
+
+$messages['blog_users_help'] = 'Usuarios que poden acceder a esta bitácora.';
+
+$messages['summary_welcome_paragraph'] = 'inclua aquí o mensaxe que aparecerá na configuración por defecto da portada do seu servicio. Pode cambiar este mensaxe no ficheiro locales/locale_gl_ES.php, ou ben eliminalo por completo editando os ficheiros .template dispoñibles no directorio templates/summary/';
+
+$messages['first_day_of_week'] = 1;
+$messages['first_day_of_week_label'] = 'primeiro día da semana';
+$messages['first_day_of_week_help'] = 'primeiro día da semana no calendario';
+
+$messages['help_subdomains_base_url'] = 'cando o soporte para subdominios está activado, se usa URL como a base para construir o resto de URLs en lugar de base_url. Use {blogname} para incluir o Nome da bitácora, {username} para incluir o Nome do usuario a quen a bitácora pertence, e {blogdomain} para permitir os usuarios introducir o seu propio subdominio [ Valor por defecto = nada ]';
+
+$messages['registration_default_subject'] = 'Confirmación de rexistro de LifeType';
+
+$messages['error_invalid_subdomain'] = 'o subdominio non e válido ou xa se está usando';
+
+$messages['register_blog_domain_help'] = 'Nome e subdominio que desexa empregar para a sua Nova bitácora';
+$messages['domain'] = 'Dominio';
+$messages['help_subdomains_available_domains'] = 'Introduza Unha lista cos nomes dos dominios dispoñibles, separada por espacios en branco. Os usuarios poderan poderan calquera destos mediante Unha lista despregable, e poderan introducir calquera subdominio que desexen. Esta opción so estará dispoñible se o soporte para subdominios está activado e incluiu {blogdomain} como parte do parámetro subdomains_base_url. Tamen pode empregar \'?\' para permitir calquera dominio e subdominio [ Valor por defecto = nada ]';
+
+$messages['subdomains_any_domain'] = '<- o soporte para múltiple dominios está activado, Introduza o Nome do dominio completo';
+$messages['error_updating_blog_subdomain'] = 'Houbo un erro actualizando o subdominio, comprobe os datos e intenteo de novo.';
+$messages['error_updating_blog_main_domain'] = 'Houbo un erro actualizando o dominio principal. Probablemente o administrador configurara algo incorrectamente';
+
+$messages['monthsshort'] = Array( 'Xan', 'Feb', 'Mar', 'Abr', 'Mai', 'Xun', 'Xul', 'Ago', 'Set', 'Out', 'Nov', 'Dec' );
+$messages['weekdaysshort'] = Array( 'Lun', 'Mar', 'Mér', 'Xov', 'Ven', 'Sáb', 'Dom' );
+
+$messages['search_type'] = 'Procurar en';
+$messages['posts'] = 'Artigos';
+$messages['blogs'] = 'Bitácoras';
+$messages['resources'] = 'Ficheiros';
+$messages['error_incorrect_username'] = 'O Nome de usuario non e correcto, ou xa está asignado ou e demasiado longo (máximo 15 carácteres)';
+$messages['upload_in_progress'] = 'Enviando datos. Agarde por favor...';
+
+$messages['auth_img'] = 'Código de seguridade';
+$messages['auth_img_help'] = 'Por favor Introduza o código que aparece na imaxe.';
+
+$messages['global_category'] = 'Categoría global';
+$messages['global_article_category_help'] = 'Categoría global desta comunidade para este artigo';
+
+$messages['password_reset_subject'] = 'Cambio de password en LifeType';
+//
+// new strings for LifeType 1.2
+//
+$messages['auth'] = 'Autenticación';
+$messages['authenticated'] = 'Autenticado';
+$messages['dropdown_list_field'] = 'Lista despregable';
+$messages['values'] = 'Valores';
+$messages['field_values'] = 'Valores que aparecerán como opcións neste novo campo. O primeiro valor será usado como a opción por defecto na lista.';
+
+$messages['permission_added_ok'] = 'Permiso engadido correctamente';
+$messages['core_perm'] = 'Permiso base';
+$messages['admin_only'] = 'Permiso de administrador';
+$messages['permissionsList'] = 'Permisos';
+$messages['newPermission'] = 'Engadir permiso';
+$messages['permission_name_help'] = 'Nome identificador do permiso';
+$messages['permission_description_help'] = 'Descrición do permiso';
+$messages['core_perm_help'] = 'Se este permiso é marcado como \'permiso base\' non será posible eliminalo.';
+$messages['admin_only_help'] = 'Activar se este permiso só debe ser asignado por usuarios con permisos de administración';
+$messages['error_adding_new_permission'] = 'Houbo un erro engadindo o novo permiso, por favor comprobe os datos e tenteo de novo.';
+$messages['error_incorrect_permission_id'] = 'O identificador do permiso non é correcto';
+$messages['error_permission_cannot_be_deleted'] = 'O permiso "%s" non pode ser eliminado porque foi asignado a polo menos un usuario ou é un permiso base.';
+$messages['error_deleting_permission'] = 'Houbo un erro eliminando o permiso "%s"';
+$messages['permission_deleted_ok'] = 'O permiso "%s" foi eliminado correctamente';
+$messages['permissions_deleted_ok'] = '%s permisos eliminados correctamente';
+$messages['error_deleting_permission2'] = 'Houbo un erro eliminando o permiso cuxo nome é "%s"';
+
+$messages['help_hard_show_posts_max'] = 'Limite superior para o parámetro show_posts_max que controla o número de artigos que se amosan por páxina por blog. Se o usuario configura un valor superior a este, o valor definido aquí será usado no seu lugar. [ Valor por defecto = 50 ]';
+$messages['hard_recent_posts_max_help'] = 'Limite superior para o parámetro recent_posts_max que controla o número de artigos que se amosan na lista de artigos recentes. Se o usuario configura un valor superior a este, o valor definido aquí será usado no seu lugar. [ Valor por defecto = 25 ]';
+
+$messages['error_permission_required'] = 'Debe dispor de máis permisos para acceder a esta funcionalidade.';
+$messages['user_permissions_updated_ok'] = 'Permisos do usuario actualizados correctamente';
+
+// blog permissions
+$messages['add_album_desc'] = 'Engadir álbums';
+$messages['add_blog_template_desc'] = 'Engadir plantillas á bitácora';
+$messages['add_blog_user_desc'] = 'Engadir usuarios á bitácora';
+$messages['add_category_desc'] = 'Engadir categorias';
+$messages['add_custom_field_desc'] = 'Engadir campos';
+$messages['add_link_desc'] = 'Engadir enlaces';
+$messages['add_link_category_desc'] = 'Engadir categorías de enlace';
+$messages['add_post_desc'] = 'Engadir artigos';
+$messages['add_resource_desc'] = 'Engadir ficheiros';
+$messages['blog_access_desc'] = 'Permiso para acceder a esta bitácora';
+$messages['update_album_desc'] = 'Actualizar álbums';
+$messages['update_blog_desc'] = 'Actualiza-la configuración da bitácora';
+$messages['update_blog_template_desc'] = 'Actualizar plantillas';
+$messages['update_blog_user_desc'] = 'Actualizar usuarios da bitácora';
+$messages['update_category_desc'] = 'Actualizar categorias';
+$messages['update_comment_desc'] = 'Actualizar comentarios';
+$messages['update_custom_field_desc'] = 'Actualizar campos';
+$messages['update_link_desc'] = 'Actualizar enlaces';
+$messages['update_link_category_desc'] = 'Actualizar categorías de enlaces';
+$messages['update_post_desc'] = 'Actualizar artigos';
+$messages['update_resource_desc'] = 'Actualizar ficheiros';
+$messages['update_trackback_desc'] = 'Actualizar retroenlaces';
+$messages['view_blog_templates_desc'] = 'Ve-las plantillas da bitácora';
+$messages['view_blog_users_desc'] = 'Ve-los usuarios da bitácora';
+$messages['view_categories_desc'] = 'Ve-las categorías';
+$messages['view_comments_desc'] = 'Ve-los comentarios';
+$messages['view_custom_fields_desc'] = 'Ve-los campos';
+$messages['view_links_desc'] = 'Ve-los enlaces';
+$messages['view_link_categories_desc'] = 'Ve-las categorías de enlace';
+$messages['view_posts_desc'] = 'Ve-los artigos';
+$messages['view_resources_desc'] = 'Ve-lo ficheiros';
+$messages['view_trackbacks_desc'] = 'Ve-los retroenlaces';
+// admin permissions
+$messages['login_perm_desc'] = 'O usuario pode acceder á interface de administración';
+$messages['add_blog_category_desc'] = 'Engadir categorías de bitácora';
+$messages['add_global_article_category_desc'] = 'Engadir categorías globais de artigos';
+$messages['add_locale_desc'] = 'Engadir novas traducciones';
+$messages['add_permission_desc'] = 'Engadir novos permisos';
+$messages['add_site_blog_desc'] = 'Engadir novas bitácoras';
+$messages['add_template_desc'] = 'Engadir novas plantillas';
+$messages['add_user_desc'] = 'Engadir novos usuarios';
+$messages['edit_blog_admin_mode_desc'] = 'O usuario pode administrar outras bitácoras';
+$messages['purge_data_desc'] = 'O usuario pode usa-la función de "Limpeza"';
+$messages['update_blog_category_desc'] = 'Actualizar categorías de bitácora';
+$messages['update_global_article_category_desc'] = 'Actualizar categorías globais de artigos';
+$messages['update_global_settings_desc'] = 'Actualiza-la configuración global';
+$messages['update_locale_desc'] = 'Actualiza-las traducciones';
+$messages['update_permission_desc'] = 'Actualizar permissions';
+$messages['update_plugin_settings_desc'] = 'Actualiza-la configuración de plugins';
+$messages['update_site_blog_desc'] = 'Actualizar bitácoras';
+$messages['update_template_desc'] = 'Actualizar plantillas';
+$messages['update_user_desc'] = 'Actualizar usuarios';
+$messages['view_blog_categories'] = 'Ve-las categorías de bitácora';
+$messages['view_global_article_categories_desc'] = 'Ve-las categorías de artigo';
+$messages['view_global_settings_desc'] = 'Ve-la configuración global';
+$messages['view_locales_desc'] = 'Ve-las traducciones';
+$messages['view_permissions_desc'] = 'Ve-los permisos';
+$messages['view_plugins_desc'] = 'Ve-los plugins';
+$messages['view_site_blogs_desc'] = 'Ve-las bitácoras';
+$messages['view_templates_desc'] = 'Ve-las plantillas';
+$messages['view_users_desc'] = 'Ve-los usuarios';
+$messages['update_blog_stats_desc'] = 'Actualizar referencias ("referrers")';
+$messages['manage_admin_plugins_desc'] = 'Administrar plugins a nivel de administrador';
+
+$messages['summary_welcome_msg'] = 'Benvido, %s!';
+$messages['summary_go_to_admin'] = 'Ir á administración';
+
+$messages['error_can_only_update_own_articles'] = 'Os permisos asignados actualmente só permiten modifica-los seus propios artigos.';
+$messages['update_all_user_articles_desc'] = 'Permiti-la modificación de artigos doutros usuarios';
+$messages['error_can_only_view_own_articles'] = 'Os permisos asignados actualmente só permiten ve-los seus propios artigos.';
+$messages['view_all_user_articles_desc'] = 'Permitir ve-los artigos doutros usuarios';
+$messages['error_fetching_permission'] = 'Houbo un error cargando o permiso';
+$messages['editPermission'] = 'Editar permiso';
+$messages['error_updating_permission'] = 'Houbo un error actualizando o permiso';
+$messages['permission_updated_ok'] = 'Permiso actualizado correctamente';
+$messages['error_adding_permission'] = 'Houbo un erro engadindo o permiso';
+$messages['error_cannot_login'] = 'Sentímolo, pero os seus permisos non lle permiten acceder á interface de administración';
+$messages['admin_user_permissions_help'] = 'Permisos globais asignados a este usuario';
+
+$messages['permissions'] = 'Permisos';
+$messages['blog_user_permissions_help'] = 'Permisos asignados a este usuario nesta bitácora';
+$messages['pluginSettings'] = 'Configuración do plugin';
+$messages['user_can_override'] = 'Usuarios poden modificar';
+$messages['user_cannot_override'] = 'Usuarios non poden modificar';
+$messages['global_plugin_settings_saved_ok'] = 'Configuración global de plugins gardada correctamente';
+$messages['error_updating_global_plugin_settings'] = 'Houbo un erro gardando a configuración global dos plugins';
+$messages['error_incorrect_value'] = 'O valor non é correcto';
+$messages['parameter'] = 'Parámetro';
+$messages['value'] = 'Valor';
+$messages['override'] = 'Sobreescribir';
+$messages['editCustomField'] = 'Editar campo';
+$messages['view_blog_stats_desc'] = 'Ve-las estatísticas da bitácora';
+$messages['manage_plugins_desc'] = 'Administra-los plugins da bitácora';
+
+$messages['error_global_category_has_articles'] = 'A categoría global de artigos non pode ser eliminada porque aínda ten artigos.';
+$messages['error_adding_global_article_category'] = 'Houbo un error engadindo a categoría global de artigos';
+
+$messages['temp_folder_reset_ok'] = 'O directorio temporal foi vaciado correctamente.';
+$messages['cleanup_temp_help'] = 'Isto forzará que o directorio temporal usado por LIFETYPE baléirese. Como resultado as cachés de plantillas e datos tamén serán reinicializadas.';
+$messages['cleanup_temp'] = 'Baleira-lo directorio temporal';
+
+$messages['comment_only_auth_users'] = 'Só os usuarios autentificados poden comentar';
+$messages['comment_only_auth_users_help'] = 'Só os usuarios que teñan un usuario e password válido poden deixa-los seus comentarios';
+$messages['show_comments_max'] = 'Comentarios por páxina';
+$messages['show_comments_max_help'] = 'Número máximo de comentarios por páxina [ Valor por defecto = 20 ]';
+$messages['hard_show_comments_max_help'] = 'Valor máximo para o parámetro show_comments_max [ Valor por defecto = 50 ]';
+
+$messages['error_resource_not_whitelisted_extension'] = 'Este tipo de ficheiro non está permitido.';
+$messages['help_upload_allowed_files'] = 'Lista de tipos de ficheiros permitidos, separados por espazos en branco. O uso de \'*\' e \'?\' está permitido. Se ambos upload_forbidden_file e está opción están activadas, esta lista (upload_allowed_files) sempre terá máis prioridade [ Valor por defecto = None]';
+
+$messages['help_template_load_order'] = 'Define o orde en que as plantillas son cargadas. Usando \'Cargar primeiro as plantillas por defecto\', LIFETYPE tentará atopar as plantillas no directorio templates/default/ e se non están dispoñibles alí, entón se buscará a mesma plantilla no directorio do usuario. Se a mesma plantilla existe en ambos lugares, a plantilla por defecto en templates/default/ sempre terá prioridade. Se se selecciona \'Cagar primeiro as plantillas de usuario\', as plantillas de usuario sempre serán cargadas primeiro e se non están dispoñibles, se buscará en dlrectorio das plantillas por defecto. Se a mesma plantilla existe en ambos lugares, a plantilla do usuario sempre terá prioridade';
+$messages['template_load_order_user_first'] = 'Cargar primeiro as plantillas por defecto';
+$messages['template_load_order_default_first'] = 'Cargar primeiro as plantillas de usuario';
+
+$messages['editBlogUser'] = 'Editar usuario da bitácora';
+
+$messages['help_summary_service_name'] = 'Nome do servizo, aparecerá en distintos sitios na páxina princiap e en tódalas fontes RSS xeradas [ Valor por defecto = baleiro]';
+
+$messages['register_step2_help'] = 'Por favor introduza os datos necesarios para rexistrar unha bitácora.';
+
+$messages['create_date'] = 'Data creada';
+
+$messages['insert_media'] = 'Engadir ficheiro';
+$messages['insert_more'] = 'Engadi-lo enlace "Máis..."';
+
+
+
+$messages['purging_please_wait'] = 'Por favor agarde mentres os seus datos son procesados. Esta páxina refrescarase automaticamente mentres os seus datos son procesados, por favor non interrompa este proceso.';
+
+$messages['error_cannot_delete_last_blog_category'] = 'Non é posible elimina-la última categoría de bitácoras.';
+
+$messages['help_logout_destination_url'] = 'Dirección onde os usuarios serán dirixidos cando rematen a súa sesión na interface de administración, en lugar da páxina de acceso á interface de administración [ Valor por defecto = baleiro ]';
+$messages['help_default_global_article_category_id'] = 'Identificador da categoría global de artigo por defecto [ Valor por defecto = baleiro ]';
+$messages['help_blog_does_not_exist_url'] = 'URL onde os usuarios serán envíados cando tenten acceder a unha bitácora que non existe, en lugar de ser envíados á bitácora configurada como a bitácora por defecto neste servidor [ Valor por defecto = baleiro ]';
+
+$messages['help_bayesian_filter_enabled'] = 'Activa-lo filtro de comentarios baseado en técnicas Bayesianas [ Valor por defecto = Si ]';
+$messages['help_bayesian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario poida ser considerado spam. [ Valor por defecto = 0.9]';
+$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un artigo poida ser considerado non spam. [ Valor por defecto = 0.2]';
+$messages['help_bayesian_filter_min_length_token'] = 'Lonxitude mínima dunha palabra para que poida ser tida en conta polo filtro bayesiano. [ Valor por defecto = 3]';
+$messages['help_bayesian_filter_max_length_token'] = 'Lonxitude máxima dunha palabra para que poida ser tida en conta polo filtro bayesiano. [ Valor por defecto = 100]';
+$messages['help_bayesian_filter_number_significant_tokens'] = 'Número de partes significantes. [ Valor por defecto = 15]';
+$messages['help_bayesian_filter_spam_comments_action'] = 'Acción a executar cos comentarios que son marcados como spam polo filtro. [ Valor por defecto = Keep]';
+
+$messages['trackback_urls'] = 'Retroenlaces';
+$messages['trackback_urls_help'] = 'LifeType pode atopar as direccións onde enviar retroenlaces automaticamente se o enlace de destino o soporta. 
+Se los enlace que forman parte do texto do artigo non inclúen esta característica, por favor engada cada unha das direccións de retroenlaces "reais" (unha por liña)';
+
+$messages['error_invalid_blog_name'] = 'O nome da bitácora non é válido';
+
+/* strings for /default/ templates */
+
+
+$messages['help_forbidden_blognames'] = 'Lista de cadeas separadas por un espazo en branco que non se poden usar como nomes de bitácora. É posible usar unha expresión regular en lugar dunha simple cadea. [ Valor por defecto = (baleiro) ]';
+
+$messages['posts_updated_ok'] = '%s artigos foron actualizados correctamente';
+$messages['error_updating_post2'] = 'Houbo un erro actualizando o artigo cuxo identificador é %s';
+$messages['resources_updated_ok'] = '% ficheiros foron actualizados correctamente';
+$messages['error_updating_resource2'] = 'Houbo un erro actualizando o ficheiro cuxo identificador é %s';
+$messages['albums_updated_ok'] = '%s álbums foron actualizados correctamente';
+$messages['error_updating_album2'] = 'Houbo un erro actualizando o álbum cuxo identificador é %s';
+$messages['links_updated_ok'] = '%s enlaces foron actualizados correctamente';
+$messages['error_updating_link2'] = 'Houbo un erro actualizando o enlace cuxo identificador é %s';
+
+$messages['bookmarklet'] = 'Enlazar';
+$messages['bookmarklet_help'] = 'Arrastre este enlace á barra de ferramentas do seu navegador ou facendo clic co botón dereito do seu rato, elixa "Engadir a favoritos" ou "Enlaces" para activar';
+$messages['blogit_to_lifetype'] = "Engadir a Lifetype!";
+$messages['original_post'] = "(Artigo orixinal)";
+$messages['bookmarkit_to_lifetype'] = 'Enlazar en Lifetype';
+$messages['help_security_pipeline_enabled'] = 'Activa-los filtros, incluídos os seguridade e os filtros engadidos dinamicamente mediante plugins. [ Valor por defecto = Si ]';
+$messages['agreement'] = 'Aceptación das normas';
+$messages['error_updating_comment_no_comment'] = 'Houbo un erro actualizando o comentario cuxo identificador é %s';
+$messages['error_updating_comment_wrong_blog'] = 'Houbo un erro actualizando o comentario cuxo identificador é %s';
+$messages['error_updating_comment'] = 'Houbo un erro actualizando o comentario "%s"';
+$messages['error_updating_comment_already_updated'] = 'Non houbo cambios para o comentario "%s"';
+$messages['comment_updated_ok'] = 'O comentario foi actualizado correctamente.';
+$messages['comments_updated_ok'] = '%s comentarios foron actualizados correctamente.';
+$messages['Miscellaneous'] = 'Xeral';
+$messages['Plugins'] = 'Plugins';
+$messages['help_hard_recent_posts_max'] = 'Número máximo para o número de artigos recentes que aparecen en cada bitácora. Se os usuarios configuran un valor por encima deste, o valor do usuario será ignorado e este será usado. [ Valor por defecto = 25 ]';
+$messages['version'] = 'Versión';
+
+$messages['error_resources_disabled'] = 'O soporte para engadir novos ficheiros á súa bitácora foi desactivado neste servidor.';
+
+$messages['help_login_admin_panel'] = 'Faga clic no nome da bitácora para administrala';
+
+$messages['blog_updated_ok'] = 'A bitácora "%s" foi actualizada correctamente.';
+$messages['blogs_updated_ok'] = '%s bitácoras foron actualizadas correctamente';
+$messages['error_updating_blog2'] = 'Houbo un erro actualizando a bitácora cuxo identificador é "%s"';
+$messages['error_updating_blog'] = 'Houbo un erro actualizando a bitácora "%s"';
+
+$messages['error_updating_user'] = 'Houbo un erro modificando o usuario "%s".';
+$messages['user_updated_ok'] = 'O usuario "%s" foi modificado correctamente.';
+$messages['users_updated_ok'] = '%s usuarios foron modificados correctamente';
+$messages['eror_updating_user2'] = 'Houbo un erro modificando o usuario cuxo identificador é "%s"';
+
+$messages['error_select_status'] = 'Seleccione un estado.';
+$messages['error_invalid_blog_name'] = 'O nome da bitácora non é correcto.';
+
+$messages['help_resources_naming_rule'] = 'Nome co que se gardarán os ficheiros. Cando \'Nome orixinal\' está seleccionado, gardarase o ficheiro co seu nome orixinal. Cando \'Nome do ficheiro codificado\' está seleccionado, cambiarase o nome do ficheiro de acuerdo coa regra [BLOGID]-[FICHEROID].[Ext]. Use \'Nome do ficheiro codificado\' se está executando LIFETYPE nun servidor Windows e o xogo de carácteres é multi-byte. Se non está seguro, seguramente non precise usar esta opción e debería lo deixa co valor por defecto [Valor por defecto = Nome orixinal]';
+$messages['original_file_name'] = 'Nome orixinal';
+$messages['encoded_file_name'] = 'Nome do ficheiro codificado';
+
+$messages['quick_permission_selection'] = 'Selector rápido';
+$messages['basic_blog_permission'] = 'Permite ó usuario engadir, actualizar e borrar artigos, enlaces e ficheiros';
+$messages['full_blog_permission'] = 'Permite ó usuaio acceder ó blog como se fóra o propietario';
+
+$messages['error_template_exist'] = 'Houbo un erro engadindo a nova plantilla, xa hai unha plantilla chamada "%s".';
+
+//LT 1.2.2
+$messages['posted_by_help'] = 'Escolla autor'; 
+$messages['insert_player'] = 'Engadir Reproductor';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Allow blocks of Javascript code in posts via &lt;script&gt; tags. Please be aware that it may pose a security risk to your blog(s) [ Default = No ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'The following files do not match the expected contents:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'The currently installed version of LifeType is:';
+$messages['file_version_check'] = 'File Version Check';
+$messages['file_version_check_help'] = 'This will perform a basic check on most of LifeType\'s core files, in order to ensure that the current version of the files matches the expected contents according to the installed version. If you have not performed any customizations or changes,
+all files should match the expected version. Please be patient, this process may take a while.';
+$messages['check'] = 'Check';
+$messages['all_files_ok'] = 'All files are correct';
+?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_it_IT.php
===================================================================
--- plog/trunk/locale/admin/locale_it_IT.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_it_IT.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -394,6 +394,8 @@
 $messages['enable_comments_help'] = 'Abilita i commenti in tutti gli articoli in maniera predefinita. I commenti possono comunque essere abilitati e disabilitati per i singoli articoli, alla loro creazione o modifica';
 $messages['show_future_posts'] = 'Mostra gli articoli nel futuro nel calendario';
 $messages['show_future_posts_help'] = 'Decide se gli articoli che hanno una data nel futuro devono apparire nel calendario ed essere visibili agli utenti';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['comments_order'] = 'Ordine dei commenti';
 $messages['comments_order_help'] = 'Ordine nel quale i commenti devono apparire nella pagina principale';
 $messages['oldest_first'] = 'I più vecchi in cima';
@@ -1167,5 +1169,19 @@
 $messages['error_template_exist'] = 'Si è verificato un errore caricando lo stile, lo stile "%s" esiste già.';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
+$messages['posted_by_help'] = 'Seleziona il proprietario dell\'articolo';
+$messages['insert_player'] = 'Inserisci il Player';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Allow blocks of Javascript code in posts via &lt;script&gt; tags. Please be aware that it may pose a security risk to your blog(s) [ Default = No ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'The following files do not match the expected contents:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'The currently installed version of LifeType is:';
+$messages['file_version_check'] = 'File Version Check';
+$messages['file_version_check_help'] = 'This will perform a basic check on most of LifeType\'s core files, in order to ensure that the current version of the files matches the expected contents according to the installed version. If you have not performed any customizations or changes,
+all files should match the expected version. Please be patient, this process may take a while.';
+$messages['check'] = 'Check';
+$messages['all_files_ok'] = 'All files are correct';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_nl_NL.php
===================================================================
--- plog/trunk/locale/admin/locale_nl_NL.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_nl_NL.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -427,6 +427,8 @@
 $messages['enable_comments_help'] = 'Maak commentaar standaard beschikbaar voor alle berichten. Dit kan later per bericht aan- of uitgeschakeld worden voor nieuwe of bestaande berichten';
 $messages['show_future_posts'] = 'Toon toekomstige berichten in de kalender';
 $messages['show_future_posts_help'] = 'Zorgt ervoor dat berichten met een plaatsingsdatum in de toekomst in de kalender zichtbaar zijn voor gebruikers';
+$messages['articles_order'] = 'Volgorde artikelen';
+$messages['articles_order_help'] = 'Volgorde waarin de artikelen getoond moeten worden.';
 $messages['comments_order'] = 'Volgorde commentaar';
 $messages['comments_order_help'] = 'Volgorde waarop commentaar op de voorpagina getoond wordt';
 $messages['oldest_first'] = 'Oude berichten eerst';
@@ -1246,5 +1248,18 @@
 $messages['error_template_exist'] = 'Er is een fout opgetreden bij het uploaden, template "%s" bestaat al.';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
+$messages['posted_by_help'] = 'Selecteer het artikel van de eigenaar';
+$messages['insert_player'] = 'Voeg Speler Toe';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Sta Javascript blokken toe in berichten via &lt;script&gt; tags. Wees ervan bewust dat dit een veiligheidsprobleem kan zijn voor je blog(s) [ Standaard = Neen ]';
+
+$messages['Versions'] = 'Versies';
+$messages['incorrect_file_version_error'] = 'De volgende documenten komen niet overeen met de verwachte inhoud:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'De huidige versie van LifeType is:';
+$messages['file_version_check'] = 'Versie controle';
+$messages['file_version_check_help'] = 'Dit zal een basiscontole uitvoeren op de meeste documenten van LifeType, om te verzekeren dat de huidige versie van deze documenten overeenkomen met de inhoud die verwacht wordt van de geinstalleerde versie. Indien je geen aanpassingen hebt gedaan zullen alle documenten overeenkomen met de huidige versie. Een ogenblikje geduld, dit proces kan enige tijd in beslag nemen.';
+$messages['check'] = 'Controleer';
+$messages['all_files_ok'] = 'Alles is correct';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_zh_CN.php
===================================================================
--- plog/trunk/locale/admin/locale_zh_CN.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_zh_CN.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -397,6 +397,8 @@
 $messages['enable_comments_help'] = '如果设置为“是”,那么您便可以让其他用户针对您的文章发表评论留言。这个设置会套用到您的全部文章上。';
 $messages['show_future_posts'] = '在日历显示未来文章。';
 $messages['show_future_posts_help'] = '如果设置为“是”,那么发表日期设置在未来的文章将会出现在日历上。';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['comments_order'] = '评论留言排序方式';
 $messages['comments_order_help'] = '如果您设置成“旧的在前”,那么留言就会从旧到新排序,如果设置成“新的在前”,则反之,留言从新到旧排序出现。';
 $messages['oldest_first'] = '旧的在前';
@@ -1168,5 +1170,19 @@
 $messages['error_template_exist'] = '上传模版时发生错误,“%s”模版已经存在。';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
+$messages['posted_by_help'] = '选择文章作者';
+$messages['insert_player'] = '插入播放器';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Allow blocks of Javascript code in posts via &lt;script&gt; tags. Please be aware that it may pose a security risk to your blog(s) [ Default = No ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'The following files do not match the expected contents:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'The currently installed version of LifeType is:';
+$messages['file_version_check'] = 'File Version Check';
+$messages['file_version_check_help'] = 'This will perform a basic check on most of LifeType\'s core files, in order to ensure that the current version of the files matches the expected contents according to the installed version. If you have not performed any customizations or changes,
+all files should match the expected version. Please be patient, this process may take a while.';
+$messages['check'] = 'Check';
+$messages['all_files_ok'] = 'All files are correct';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_zh_TW.php
===================================================================
--- plog/trunk/locale/admin/locale_zh_TW.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/admin/locale_zh_TW.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -397,6 +397,8 @@
 $messages['enable_comments_help'] = '如果設定為「是」,那麼您便可以讓其他使用者針對您的文章發表迴響留言。這個設定會套用到您的全部文章上。';
 $messages['show_future_posts'] = '在日曆顯示未來文章。';
 $messages['show_future_posts_help'] = '如果設定為「是」,那麼發表日期設定在未來的文章將會出現在日曆上。';
+$messages['articles_order'] = 'Articles order';
+$messages['articles_order_help'] = 'Order in which articles should be displayed.';
 $messages['comments_order'] = '迴響留言排序方式';
 $messages['comments_order_help'] = '如果您設定成「舊的在前」,那麼留言就會從舊到新排序,如果設定成「新的在前」,則反之,留言從新到舊排序出現。';
 $messages['oldest_first'] = '舊的在前';
@@ -1168,5 +1170,19 @@
 $messages['error_template_exist'] = '上傳模版時發生錯誤,「%s」模版已經存在。';
 
 /// new strings in LT 1.2.2 ///
-$messages['posted_by_help'] = 'Select article owner';
+$messages['posted_by_help'] = '選擇文章作者';
+$messages['insert_player'] = '插入播放器';
+
+/// new strings in LT 1.2.3 ///
+$messages['help_allow_javascript_blocks_in_posts'] = 'Allow blocks of Javascript code in posts via &lt;script&gt; tags. Please be aware that it may pose a security risk to your blog(s) [ Default = No ]';
+
+$messages['Versions'] = 'Versions';
+$messages['incorrect_file_version_error'] = 'The following files do not match the expected contents:';
+$messages['lifetype_version'] = 'LifeType';
+$messages['lifetype_version_help'] = 'The currently installed version of LifeType is:';
+$messages['file_version_check'] = 'File Version Check';
+$messages['file_version_check_help'] = 'This will perform a basic check on most of LifeType\'s core files, in order to ensure that the current version of the files matches the expected contents according to the installed version. If you have not performed any customizations or changes,
+all files should match the expected version. Please be patient, this process may take a while.';
+$messages['check'] = 'Check';
+$messages['all_files_ok'] = 'All files are correct';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/locale_fr_FR.php
===================================================================
--- plog/trunk/locale/locale_fr_FR.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/locale_fr_FR.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,136 +1,128 @@
-<?php
-
-// done by Nino NJOPKOU ( benoue at gmail.com ) and Loïc Pietrzak (version 1.2 add-on)
+<?php
 // set this to the encoding that should be used to display the pages correctly
-$messages["encoding"] = 'UTF-8';
-$messages["locale_description"] = 'Traduction française';
-// locale format, see Locale::formatDate for more information
-$messages["date_format"] = '%d/%m/%Y %H:%M';
-
-// days of the week
-$messages["days"] = Array( "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" );
-// -- compatibility, do not touch -- //
-$messages["Monday"] = $messages["days"][1];
-$messages["Tuesday"] = $messages["days"][2];
-$messages["Wednesday"] = $messages["days"][3];
-$messages["Thursday"] = $messages["days"][4];
-$messages["Friday"] = $messages["days"][5];
-$messages["Saturday"] = $messages["days"][6];
-$messages["Sunday"] = $messages["days"][0];
-
-// abbreviations
-$messages["daysshort"] = Array( "Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa" );
-// -- compatibility, do not touch -- //
-$messages["Mo"] = $messages["daysshort"][1];
-$messages["Tu"] = $messages["daysshort"][2];
-$messages["We"] = $messages["daysshort"][3];
-$messages["Th"] = $messages["daysshort"][4];
-$messages["Fr"] = $messages["daysshort"][5];
-$messages["Sa"] = $messages["daysshort"][6];
-$messages["Su"] = $messages["daysshort"][0];
-
-// months of the year
-$messages["months"] = Array( "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" );
-// -- compatibility, do not touch -- //
-$messages["January"] = $messages["months"][0];
-$messages["February"] = $messages["months"][1];
-$messages["March"] = $messages["months"][2];
-$messages["April"] = $messages["months"][3];
-$messages["May"] = $messages["months"][4];
-$messages["June"] = $messages["months"][5];
-$messages["July"] = $messages["months"][6];
-$messages["August"] = $messages["months"][7];
-$messages["September"] = $messages["months"][8];
-$messages["October"] = $messages["months"][9];
-$messages["November"] = $messages["months"][10];
-$messages["December"] = $messages["months"][11];
-$messages["message"] = "Message";
-$messages["error"] = "Erreur";
-$messages["date"] = "Date";
-
-// miscellaneous texts
-$messages["of"] = "of";
-$messages["recently"] = "Récemment ...";
-$messages["comments"] = "Commentaires";
-$messages["comment on this"] = "Commenter";
-$messages["my_links"] = "Mes Liens";
-$messages["archives"] = "Archives";
-$messages["search"] = "Recherche";
-$messages["calendar"] = "Calendrier";
-$messages["search_s"] = "Recherches";
-$messages["search_this_blog"] = "Rechercher dans ce Blog:";
-$messages["about_myself"] = "Qui suis-je ?";
-$messages["permalink_title"] = "Lien permanent vers Archives";
-$messages["permalink"] = "Lien permanent";
-$messages["posted_by"] = "Posté par";
-$messages["reply"] = "Répondre";
-
-// add comment form
-$messages["add_comment"] = "Commenter";
-$messages["comment_topic"] = "Sujet";
-$messages["comment_text"] = "Texte";
-$messages["comment_username"] = "Votre nom";
-$messages["comment_email"] = "Votre email (option)";
-$messages["comment_url"] = "Votre page web (option)";
-$messages["comment_send"] = "Envoyer";
-$messages["comment_added"] = "Commentaire ajouté !";
-$messages["comment_add_error"] = "Erreur lors de l'ajout";
-$messages["article_does_not_exist"] = "Article inexistant";
-$messages["no_posts_found"] = "Aucun article trouvé";
-$messages["user_has_no_posts_yet"] = "Ce membre n'a pas encore posté d'article";
-$messages["back"] = "Retour";
-$messages["post"] = "Poster";
-$messages["back_top"] = "Retour haut de page";
-$messages["trackbacks_for_article"] = "TrackBacks de l'article";
-$messages["trackback_excerpt"] = "Extrait";
-$messages["trackback_weblog"] = "Blog";
-$messages["search"] = "Recherche";
-$messages["search_results"] = "Résultats";
-$messages["search_matching_results"] = "Résultats correspondants: ";
-$messages["search_no_matching_posts"] = "Aucun article trouvé";
-$messages["read_more"] = "(Suite)";
-$messages["syndicate"] = "Syndiquer";
-$messages["main"] = "Principal";
-$messages["about"] = "A propos";
-$messages["download"] = "Télécharger";
-
-////// error messages /////
-$messages["error_fetching_article"] = "Article introuvable.";
-$messages["error_fetching_articles"] = "Articles introuvables.";
-$messages['error_fetching_category'] = 'There was an error fetching the category'; // translate
-$messages["error_trackback_no_trackback"] = "Aucun TrackBack.";
-$messages["error_incorrect_article_id"] = "Identifiant d'article incorrect.";
-$messages["error_incorrect_blog_id"] = "Identifiant de blog incorrect.";
-$messages["error_comment_without_text"] = "Texte obligatoire.";
-$messages["error_comment_without_name"] = "Nom et prénom obligatoires..";
-$messages["error_adding_comment"] = "Erreur lors de l'ajout du commentaire à la BDD.";
-$messages["error_incorrect_parameter"] = "Paramètre incorrect.";
-$messages["error_parameter_missing"] = "Paramètre manquant.";
-$messages["error_blog_has_no_links"] = "Le blog n'a pas encore de liens.";
-$messages["error_comments_not_enabled"] = "Commentaires désactivés sur ce site.";
-$messages["error_incorrect_search_terms"] = "Les mots clés ne sont pas valides";
-$messages["error_no_search_results"] = "Recherche infructueuse";
-$messages["error_no_albums_defined"] = "Il n'y a pas d'album dans ce blog";
-$messages['error_incorrect_user'] = "Utilisateur invalide"; //'User is not valid';
-
-$messages['form_authenticated'] = 'Authentifié';
-$messages['posted_in'] = 'Posté dans';
-
-$messages['previous_post'] = 'Précédent';
-$messages['next_post'] = 'Suivant';
-$messages['comment_default_title'] = '(Sans titre)';
-$messages['guestbook'] = "Livre d'or";
-$messages['trackbacks'] = 'Trackbacks';
-$messages['menu'] = 'Menu';
-$messages['albums'] = 'Albums';
-$messages['admin'] = 'Admin';
-$messages['links'] = 'Liens';
-$messages['categories'] = 'Catégories';
-
-$messages['num_reads'] = 'Vus';
-$messages["error_incorrect_category_id"] = "L'ID de la catégorie n'est pas correct ou aucun élément sélectionné";
-$messages["error_incorrect_email_address"] = "Adresse email incorrecte";
-$messages['error_fetching_resource'] = 'The file you specified could not be found.';
-$messages['contact_me'] = 'Contact Me';
-$messages['required'] = 'Required';
-?>
+//Done by Nino NJOPKOU  (nino at akopo.com)
+// Yaoundé - CAMEROUN ( Central Africa)
+
+$messages['encoding'] = 'iso-8859-1';
+$messages['locale_description'] = 'Traduction française de LifeType';
+// locale format, see Locale::formatDate for more information
+$messages['date_format'] = '%d/%m/%Y %H:%M';
+
+// days of the week
+$messages['days'] = Array( 'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi' );
+// -- compatibility, do not touch -- //
+$messages['Monday'] = $messages['days'][1];
+$messages['Tuesday'] = $messages['days'][2];
+$messages['Wednesday'] = $messages['days'][3];
+$messages['Thursday'] = $messages['days'][4];
+$messages['Friday'] = $messages['days'][5];
+$messages['Saturday'] = $messages['days'][6];
+$messages['Sunday'] = $messages['days'][0];
+
+// abbreviations
+$messages['daysshort'] = Array( 'Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa' );
+// -- compatibility, do not touch -- //
+$messages['Mo'] = $messages['daysshort'][1];
+$messages['Tu'] = $messages['daysshort'][2];
+$messages['We'] = $messages['daysshort'][3];
+$messages['Th'] = $messages['daysshort'][4];
+$messages['Fr'] = $messages['daysshort'][5];
+$messages['Sa'] = $messages['daysshort'][6];
+$messages['Su'] = $messages['daysshort'][0];
+
+// months of the year
+$messages['months'] = Array( 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre' );
+// -- compatibility, do not touch -- //
+$messages['January'] = $messages['months'][0];
+$messages['February'] = $messages['months'][1];
+$messages['March'] = $messages['months'][2];
+$messages['April'] = $messages['months'][3];
+$messages['May'] = $messages['months'][4];
+$messages['June'] = $messages['months'][5];
+$messages['July'] = $messages['months'][6];
+$messages['August'] = $messages['months'][7];
+$messages['September'] = $messages['months'][8];
+$messages['October'] = $messages['months'][9];
+$messages['November'] = $messages['months'][10];
+$messages['December'] = $messages['months'][11];
+$messages['message'] = 'Message';
+$messages['error'] = 'Erreur';
+$messages['date'] = 'Date';
+
+// miscellaneous texts
+$messages['of'] = 'de';
+$messages['recently'] = 'Récemment..';
+$messages['comments'] = 'Commentaires';
+$messages['comment on this'] = 'Commenter';
+$messages['my_links'] = 'Mes liens';
+$messages['archives'] = 'Archives';
+$messages['search'] = 'Chercher';
+$messages['calendar'] = 'Calendrier';
+$messages['search_s'] = 'Recherche';
+$messages['search_this_blog'] = 'Chercher dans ce blog:';
+$messages['about_myself'] = 'Qui suis-je ?';
+$messages['permalink_title'] = 'Liens permanents vers les archives';
+$messages['permalink'] = 'Permaliens';
+$messages['posted_by'] = 'Posté par';
+$messages['reply'] = 'Répondre';
+
+// add comment form
+$messages['add_comment'] = 'Commenter';
+$messages['comment_topic'] = 'Sujet';
+$messages['comment_text'] = 'Texte';
+$messages['comment_username'] = 'Votre nom';
+$messages['comment_email'] = 'Email (facultatif)';
+$messages['comment_url'] = 'Page personnelle (facultatif)';
+$messages['comment_send'] = 'Envoyer';
+$messages['comment_added'] = 'Commentaire ajouté!';
+$messages['comment_add_error'] = 'Erreur lors de l\'ajout du commentaire';
+$messages['article_does_not_exist'] = 'L\'article n\'existe pas';
+$messages['no_posts_found'] = 'Aucun article trouvé';
+$messages['user_has_no_posts_yet'] = 'Cet utilisateur n\'a encore posté aucun article';
+$messages['back'] = 'Retour';
+$messages['post'] = 'Poster';
+$messages['trackbacks_for_article'] = 'Trackbacks pour cet article: ';
+$messages['trackback_excerpt'] = 'Excerpt';
+$messages['trackback_weblog'] = 'Blog';
+$messages['search_results'] = 'Résultats de la recherche';
+$messages['search_matching_results'] = 'Résultats correspondants: ';
+$messages['search_no_matching_posts'] = 'Aucun article trouvé';
+$messages['read_more'] = '<br /> (Lire la suite de l\'article)';
+$messages['syndicate'] = 'Syndiquer';
+$messages['main'] = 'Index';
+$messages['about'] = 'A propos';
+$messages['download'] = 'Télécharger';
+
+////// error messages /////
+$messages['error_fetching_article'] = 'Article spécifié non trouvé.';
+$messages['error_fetching_articles'] = 'Erreur: Les articles ne peuvent être affichés.';
+$messages['error_trackback_no_trackback'] = 'Aucun trackback trouvé pour cet article.';
+$messages['error_incorrect_article_id'] = 'Identifiant d\'article incorrect.';
+$messages['error_incorrect_blog_id'] = 'Identifiant du blog incorrect.';
+$messages['error_comment_without_text'] = 'Texte obligatoire.';
+$messages['error_comment_without_name'] = 'Nom et/ou prénom obligatoires';
+$messages['error_adding_comment'] = 'Erreur lors de l\'ajout du commentaire.';
+$messages['error_incorrect_parameter'] = 'Paramètre incorrect.';
+$messages['error_parameter_missing'] = 'Paramètre manquant dans la requête.';
+$messages['error_comments_not_enabled'] = 'Commentaires désactivés sur ce site.';
+$messages['error_incorrect_search_terms'] = 'Termes recherchés invalides';
+$messages['error_no_search_results'] = 'Pas de correspondance trouvée pour les termes recherchés';
+$messages['error_no_albums_defined'] = 'Aucun album n\'est disponible sur ce blog.';
+$messages['error_incorrect_category_id'] = 'Catégorie de l\'identifiant incorrecte, ou aucune entrée sélectionnée';
+
+$messages['form_authenticated'] = 'Authentifié(e)';
+$messages['posted_in'] = 'Posté dans';
+
+$messages['previous_post'] = 'Article précédent';
+$messages['next_post'] = 'Article suivant';
+$messages['comment_default_title'] = '(sans titre)';
+$messages['guestbook'] = 'Livre d\'or';
+$messages['trackbacks'] = 'Trackbacks';
+$messages['menu'] = 'Menu';
+$messages['albums'] = 'Albums';
+$messages['admin'] = 'Admin';
+$messages['links'] = 'Liens';
+$messages['categories'] = 'Catégories';
+
+$messages['num_reads'] = 'Clics';
+?>
\ No newline at end of file

Copied: plog/trunk/locale/locale_gl_ES.php (from rev 5487, plog/branches/lifetype-1.2/locale/locale_gl_ES.php)
===================================================================
--- plog/trunk/locale/locale_gl_ES.php	                        (rev 0)
+++ plog/trunk/locale/locale_gl_ES.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,128 @@
+<?php
+// Traducción o galego de lifetype 121, realizada por Víctor Julio Quesada Varela, 2007. egalego at gmail.com, www.egalego.com
+
+// set this to the encoding that should be used to display the pages correctly
+$messages['encoding'] = 'iso-8859-1';
+$messages['locale_description'] = 'Traducción o galego de LifeType - egalego.com';
+// locale format, see Locale::formatDate for more information
+$messages['date_format'] = '%d/%m/%Y %H:%M';
+
+// days of the week
+$messages['days'] = Array( 'Domingo', 'Luns', 'Martes', 'Mércores', 'Xoves', 'Venres', 'Sábado' );
+// -- compatibility, do not touch -- //
+$messages['Monday'] = $messages['days'][1];
+$messages['Tuesday'] = $messages['days'][2];
+$messages['Wednesday'] = $messages['days'][3];
+$messages['Thursday'] = $messages['days'][4];
+$messages['Friday'] = $messages['days'][5];
+$messages['Saturday'] = $messages['days'][6];
+$messages['Sunday'] = $messages['days'][0];
+
+// abbreviations
+$messages['daysshort'] = Array( 'Do', 'Lu', 'Ma', 'Me', 'Xo', 'Ve', 'Sa' );
+// -- compatibility, do not touch -- //
+$messages['Mo'] = $messages['daysshort'][1];
+$messages['Tu'] = $messages['daysshort'][2];
+$messages['We'] = $messages['daysshort'][3];
+$messages['Th'] = $messages['daysshort'][4];
+$messages['Fr'] = $messages['daysshort'][5];
+$messages['Sa'] = $messages['daysshort'][6];
+$messages['Su'] = $messages['daysshort'][0];
+
+// months of the year
+$messages['months'] = Array( 'Xaneiro', 'Febreiro', 'Marzo', 'Abril', 'Maio', 'Xuño', 'Xullo', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Decembro' );
+// -- compatibility, do not touch -- //
+$messages['January'] = $messages['months'][0];
+$messages['February'] = $messages['months'][1];
+$messages['March'] = $messages['months'][2];
+$messages['April'] = $messages['months'][3];
+$messages['May'] = $messages['months'][4];
+$messages['June'] = $messages['months'][5];
+$messages['July'] = $messages['months'][6];
+$messages['August'] = $messages['months'][7];
+$messages['September'] = $messages['months'][8];
+$messages['October'] = $messages['months'][9];
+$messages['November'] = $messages['months'][10];
+$messages['December'] = $messages['months'][11];
+$messages['message'] = 'Mensaxe';
+$messages['error'] = 'Erro';
+$messages['date'] = 'Data';
+
+// miscellaneous texts
+$messages['of'] = 'de';
+$messages['recently'] = 'recentemente...';
+$messages['comments'] = 'comentarios';
+$messages['comment on this'] = 'Comentario';
+$messages['my_links'] = 'meus enlaces';
+$messages['archives'] = 'arquivos';
+$messages['search'] = 'Procurar';
+$messages['calendar'] = 'calendario';
+$messages['search_s'] = 'Procurar';
+$messages['search_this_blog'] = 'Procurar nesta bitácora:';
+$messages['about_myself'] = 'Quen son?';
+$messages['permalink_title'] = 'Enlace permanente os arquivos';
+$messages['permalink'] = 'Enlace';
+$messages['posted_by'] = 'Escrito por';
+$messages['reply'] = 'Responder';
+
+$messages['add_comment'] = 'Engadir comentario';
+
+$messages['comment_topic'] = 'Título';
+$messages['comment_text'] = 'Texto';
+$messages['comment_username'] = 'O Teu nome';
+$messages['comment_email'] = 'enderezo de correo (opcional)';
+$messages['comment_url'] = 'Páxina persoal (opcional)';
+$messages['comment_send'] = 'Enviar';
+$messages['comment_added'] = 'Comentario engadido!';
+$messages['comment_add_error'] = 'Houbo un erro engadindo o comentario';
+$messages['article_does_not_exist'] = 'O artigo non existe';
+$messages['no_posts_found'] = 'Non se atoparon artigos';
+$messages['user_has_no_posts_yet'] = 'O usuario todavía non escribiu ningun artigo';
+$messages['back'] = 'Atrás';
+$messages['post'] = 'artigo';
+$messages['trackbacks_for_article'] = 'Retroenlaces do artigo: ';
+$messages['trackback_excerpt'] = 'Fragmento';
+$messages['trackback_weblog'] = 'Bitácora';
+$messages['search_results'] = 'Resultados da búsqueda';
+$messages['search_matching_results'] = 'Os seguintes artigos foron atopados: ';
+$messages['search_no_matching_posts'] = 'Non se atoparon artigos';
+$messages['read_more'] = '(Máis)';
+$messages['syndicate'] = 'Agregar';
+$messages['main'] = 'Principal';
+$messages['about'] = 'Acerca de';
+$messages['download'] = 'Descargar';
+$messages['error_incorrect_email_address'] = 'O enderezo de correo non é válido';
+
+
+$messages['error_fetching_article'] = 'O artigo especificado non existe.';
+$messages['error_fetching_articles'] = 'Non se atoparon artigos';
+$messages['error_trackback_no_trackback'] = 'O artigo non recibiu ningun retroenlace';
+$messages['error_incorrect_article_id'] = 'O identificador do artigo non e correcto';
+$messages['error_incorrect_blog_id'] = 'O identificador da bitácora non e correcto';
+$messages['error_comment_without_text'] = 'O texto do comentario está baleiro.';
+$messages['error_comment_without_name'] = 'E necesario que dé o seu nome ou apodo.';
+$messages['error_adding_comment'] = 'Houbo un erro engadindo o comentario.';
+$messages['error_incorrect_parameter'] = 'Parámetro incorrecto.';
+$messages['error_parameter_missing'] = 'Falta un parámetro.';
+$messages['error_comments_not_enabled'] = 'Os comentarios foron desactivados nesta bitácora.';
+$messages['error_incorrect_search_terms'] = 'Os térmos da búsqueda son incorrectos.';
+$messages['error_no_search_results'] = 'Non se atoparon artigos que correspondan cos térmos da búsqueda.';
+$messages['error_no_albums_defined'] = 'Non hai ningun álbum dispoñible nesta bitácora.';
+$messages['error_incorrect_category_id'] = 'O identificador da categoría non é correcto ou non se seleccionaron categorías a borrar';
+
+$messages['posted_in'] = 'Publicado en';
+$messages['form_authenticated'] = 'Autentificado';
+$messages['previous_post'] = 'Anterior';
+$messages['next_post'] = 'Seguinte';
+$messages['comment_default_title'] = '(Sen título)';
+$messages['trackbacks'] = 'Retroenlaces';
+$messages['menu'] = 'Menú';
+$messages['albums'] = 'Albums';
+$messages['admin'] = 'Administración';
+$messages['guestbook'] = 'Libro de visitas';
+$messages['num_reads'] = 'Lecturas';
+
+$messages['error_fetching_resource'] = 'O ficheiro non se puido encontrar.';
+$messages['contact_me'] = 'Contactar';
+$messages['required'] = 'Obrigatorio';
+?>
\ No newline at end of file

Deleted: plog/trunk/locale/unported/locale_gl_ES.php
===================================================================
--- plog/trunk/locale/unported/locale_gl_ES.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/locale/unported/locale_gl_ES.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,1062 +0,0 @@
-<?php
-// set this to the encoding that should be used to display the pages correctly
-// Traducción o galego de lifetype 102, realizada por Víctor Julio Quesada Varela, 2006. egalego at gmail.com, www.egalego.com
-$messages['encoding'] = 'iso-8859-1';
-$messages['locale_description'] = 'Traducción o galego de LifeType';
-// locale format, see Locale::formatDate for more information
-$messages['date_format'] = '%d/%m/%Y %H:%M';
-
-// days of the week
-$messages['days'] = Array( 'Domingo', 'Luns', 'Martes', 'Mércores', 'Xoves', 'Venres', 'Sábado' );
-// -- compatibility, do not touch -- //
-$messages['Monday'] = $messages['days'][1];
-$messages['Tuesday'] = $messages['days'][2];
-$messages['Wednesday'] = $messages['days'][3];
-$messages['Thursday'] = $messages['days'][4];
-$messages['Friday'] = $messages['days'][5];
-$messages['Saturday'] = $messages['days'][6];
-$messages['Sunday'] = $messages['days'][0];
-
-// abbreviations
-$messages['daysshort'] = Array( 'Do', 'Lu', 'Ma', 'Me', 'Xo', 'Ve', 'Sa' );
-// -- compatibility, do not touch -- //
-$messages['Mo'] = $messages['daysshort'][1];
-$messages['Tu'] = $messages['daysshort'][2];
-$messages['We'] = $messages['daysshort'][3];
-$messages['Th'] = $messages['daysshort'][4];
-$messages['Fr'] = $messages['daysshort'][5];
-$messages['Sa'] = $messages['daysshort'][6];
-$messages['Su'] = $messages['daysshort'][0];
-
-// months of the year
-$messages['months'] = Array( 'Xaneiro', 'Febreiro', 'Marzo', 'Abril', 'Maio', 'Xuño', 'Xullo', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Decembro' );
-// -- compatibility, do not touch -- //
-$messages['January'] = $messages['months'][0];
-$messages['February'] = $messages['months'][1];
-$messages['March'] = $messages['months'][2];
-$messages['April'] = $messages['months'][3];
-$messages['May'] = $messages['months'][4];
-$messages['June'] = $messages['months'][5];
-$messages['July'] = $messages['months'][6];
-$messages['August'] = $messages['months'][7];
-$messages['September'] = $messages['months'][8];
-$messages['October'] = $messages['months'][9];
-$messages['November'] = $messages['months'][10];
-$messages['December'] = $messages['months'][11];
-$messages['message'] = 'Mensaxe';
-$messages['error'] = 'Erro';
-$messages['date'] = 'Data';
-
-// miscellaneous texts
-$messages['of'] = 'de';
-$messages['recently'] = 'recentemente...';
-$messages['comments'] = 'comentarios';
-$messages['comment on this'] = 'Comentario';
-$messages['my_links'] = 'meus enlaces';
-$messages['archives'] = 'arquivos';
-$messages['search'] = 'Procurar';
-$messages['calendar'] = 'calendario';
-$messages['search_s'] = 'Procurar';
-$messages['search_this_blog'] = 'Procurar nesta bitácora:';
-$messages['about_myself'] = 'Quen son?';
-$messages['permalink_title'] = 'Enlace permanente os arquivos';
-$messages['permalink'] = 'Enlace';
-$messages['posted_by'] = 'Escrito por';
-$messages['reply'] = 'Responder';
-
-// add comment form
-$messages['add_comment'] = 'Engadir comentario';
-$messages['comment_topic'] = 'Título';
-$messages['comment_text'] = 'Texto';
-$messages['comment_username'] = 'O Teu nome';
-$messages['comment_email'] = 'enderezo de correo (opcional)';
-$messages['comment_url'] = 'Páxina persoal (opcional)';
-$messages['comment_send'] = 'Enviar';
-$messages['comment_added'] = 'Comentario engadido!';
-$messages['comment_add_error'] = 'Houbo un erro engadindo o comentario';
-$messages['article_does_not_exist'] = 'O artigo non existe';
-$messages['no_posts_found'] = 'Non se atoparon artigos';
-$messages['user_has_no_posts_yet'] = 'O usuario todavía non escribiu ningun artigo';
-$messages['back'] = 'Atrás';
-$messages['post'] = 'artigo';
-$messages['trackbacks_for_article'] = 'Retroenlaces do artigo: ';
-$messages['trackback_excerpt'] = 'Fragmento';
-$messages['trackback_weblog'] = 'Bitácora';
-$messages['search_results'] = 'Resultados da búsqueda';
-$messages['search_matching_results'] = 'Os seguintes artigos foron atopados: ';
-$messages['search_no_matching_posts'] = 'Non se atoparon artigos';
-$messages['read_more'] = '(Máis)';
-$messages['syndicate'] = 'Agregar';
-$messages['main'] = 'Principal';
-$messages['about'] = 'Acerca de';
-$messages['download'] = 'Descargar';
-
-////// error messages /////
-$messages['error_fetching_article'] = 'O artigo especificado non existe.';
-$messages['error_fetching_articles'] = 'Non se atoparon artigos';
-$messages['error_trackback_no_trackback'] = 'O artigo non recibiu ningun retroenlace';
-$messages['error_incorrect_article_id'] = 'O identificador do artigo non e correcto';
-$messages['error_incorrect_blog_id'] = 'O identificador da bitácora non e correcto';
-$messages['error_comment_without_text'] = 'O texto do comentario está baleiro.';
-$messages['error_comment_without_name'] = 'E necesario que dé o seu nome ou apodo.';
-$messages['error_adding_comment'] = 'Houbo un erro engadindo o comentario.';
-$messages['error_incorrect_parameter'] = 'Parámetro incorrecto.';
-$messages['error_parameter_missing'] = 'Falta un parámetro.';
-$messages['error_comments_not_enabled'] = 'Os comentarios foron desactivados nesta bitácora.';
-$messages['error_incorrect_search_terms'] = 'Os térmos da búsqueda son incorrectos.';
-$messages['error_no_search_results'] = 'Non se atoparon artigos que correspondan cos térmos da búsqueda.';
-$messages['error_no_albums_defined'] = 'Non hai ningun álbum dispoñible nesta bitácora.';
-
-/////////////////                                          //////////////////
-///////////////// STRINGS FOR THE ADMINISTRATION INTERFACE //////////////////
-/////////////////                                          //////////////////
-
-// login page
-$messages['login'] = 'Entrar';
-$messages['welcome_message'] = 'Benvido a Lifetype en Galego';
-$messages['error_incorrect_username_or_password'] = 'O nombe de usuario ou password e incorrecto.';
-$messages['error_dont_belong_to_any_blog'] = 'O Seu usuario non pertence a ningunha bitácora todavía.';
-$messages['logout_message'] = 'Foi desconectado correctamente';
-$messages['logout_message_2'] = 'Faga clic <a href="%1$s">aquí</a> para ir a %2$s</a>.';
-$messages['error_access_forbidden'] = 'Acceso non permitido. Debe primeiro verificar o seu usuario aquí';
-$messages['username'] = 'Usuario';
-$messages['password'] = 'Password';
-
-// dashboard
-$messages['dashboard'] = 'Perspectiva';
-$messages['recent_articles'] = 'artigos recentes';
-$messages['recent_comments'] = 'Comentarios recentes';
-$messages['recent_trackbacks'] = 'Retroenlaces recentes';
-$messages['blog_statistics'] = 'Estatísticas';
-$messages['total_posts'] = 'Número de artigos';
-$messages['total_comments'] = 'Número de comentarios';
-$messages['total_trackbacks'] = 'Número de trackbacks';
-$messages['total_viewed'] = 'artigos lidos';
-$messages['in'] = 'En';
-
-// menu options
-$messages['newPost'] = 'Novo artigo';
-$messages['Manage'] = 'Contido';
-$messages['managePosts'] = 'artigos';
-$messages['editPosts'] = 'artigos';
-$messages['editArticleCategories'] = 'Categorias';
-$messages['newArticleCategory'] = 'Nova Categoria';
-$messages['manageLinks'] = 'Enlaces';
-$messages['editLinks'] = 'Enlaces';
-$messages['newLink'] = 'Novo Enlace';
-$messages['editLink'] = 'Editar Enlace';
-$messages['editLinkCategories'] = 'Editar Categorías de Enlaces';
-$messages['newLinkCategory'] = 'Nova Categoría de Enlaces';
-$messages['editLinkCategory'] = 'Editar Categoría de Enlace';
-$messages['manageCustomFields'] = 'Campos';
-$messages['blogCustomFields'] = 'Campos';
-$messages['newCustomField'] = 'Novo Campo';
-$messages['resourceCenter'] = 'Ficheiros';
-$messages['resources'] = 'Ficheiros';
-$messages['newResourceAlbum'] = 'Novo Álbum';
-$messages['newResource'] = 'Novo Ficheiro';
-$messages['controlCenter'] = 'Configuración';
-$messages['manageSettings'] = 'Configuración';
-$messages['blogSettings'] = 'Configuración da Bitácora';
-$messages['userSettings'] = 'Configuración do Usuario';
-$messages['pluginCenter'] = 'Plugins';
-$messages['Stats'] = 'Estatísticas';
-$messages['manageBlogUsers'] = 'Usuarios da Bitácora';
-$messages['newBlogUser'] = 'Invitar Usuario';
-$messages['showBlogUsers'] = 'Usuarios da Bitácora';
-$messages['manageBlogTemplates'] = 'Plantillas';
-$messages['newBlogTemplate'] = 'Engadir Plantilla';
-$messages['blogTemplates'] = 'Plantillas da Bitácora';
-$messages['adminSettings'] = 'Administración';
-$messages['Users'] = 'Usuarios';
-$messages['createUser'] = 'Novo Usuario';
-$messages['editSiteUsers'] = 'Usuarios';
-$messages['Blogs'] = 'Bitácoras';
-$messages['createBlog'] = 'Nova Bitácora';
-$messages['editSiteBlogs'] = 'Bitácoras';
-$messages['Locales'] = 'Traduccions';
-$messages['newLocale'] = 'Nova Traducción';
-$messages['siteLocales'] = 'Traduccions';
-$messages['Templates'] = 'Plantillas';
-$messages['newTemplate'] = 'Engadir Plantilla';
-$messages['siteTemplates'] = 'Plantillas';
-$messages['GlobalSettings'] = 'Configuración Xeral';
-$messages['editSiteSettings'] = 'Xeral';
-$messages['summarySettings'] = 'Portal';
-$messages['templateSettings'] = 'Plantillas';
-$messages['urlSettings'] = 'Direccions';
-$messages['emailSettings'] = 'Email';
-$messages['uploadSettings'] = 'Transferencias';
-$messages['helpersSettings'] = 'Ferramentas';
-$messages['interfacesSettings'] = 'Interfaces';
-$messages['securitySettings'] = 'Seguridade';
-$messages['bayesianSettings'] = 'Filtro Bayesiano';
-$messages['resourcesSettings'] = 'Ficheiros';
-$messages['searchSettings'] = 'Búsquedas';
-$messages['cleanUpSection'] = 'Limpeza';
-$messages['cleanUp'] = 'Limpeza';
-$messages['editResourceAlbum'] = 'Editar Álbum';
-$messages['resourceInfo'] = 'Editar Ficheiro';
-$messages['editBlog'] = 'Editar Plantilla';
-$messages['Logout'] = 'Sair';
-
-// new post
-$messages['topic'] = 'Título';
-$messages['topic_help'] = 'Título do artigo';
-$messages['text'] = 'Texto';
-$messages['text_help'] = 'Texto do artigo. Esta parte sempre aparecerá na páxina principal da bitácora';
-$messages['extended_text'] = 'Texto extra';
-$messages['extended_text_help'] = 'Texto extra do artigo. Esta parte Pode aparecer o ben siempre na primera paxina o na paxina do artigo. Esto é configurable na paxina de configuración da bitácora';
-$messages['post_slug'] = 'Título URL';
-$messages['post_slug_help'] = 'O título URL será usado para xerar enlaces permanentes con maior significado semántico';
-$messages['date'] = 'Data';
-$messages['post_date_help'] = 'Data cando este artigo debería ser publicado';
-$messages['status'] = 'Estado';
-$messages['post_status_help'] = 'Elixa un dos seguintes estados';
-$messages['post_status_published'] = 'Publicado';
-$messages['post_status_draft'] = 'Borrador';
-$messages['post_status_deleted'] = 'Eliminado';
-$messages['categories'] = 'Categorías';
-$messages['post_categories_help'] = 'Seleccione unha ou máis categorías';
-$messages['post_comments_enabled_help'] = 'Activar comentarios';
-$messages['send_notification_help'] = 'Enviar unha notificación cando se reciban novos comentarios ou retroenlaces';
-$messages['send_trackback_pings_help'] = 'Envíar retroenlaces';
-$messages['send_xmlrpc_pings_help'] = 'Enviar pings vía XMLRPC';
-$messages['save_draft_and_continue'] = 'Gardar Borrador';
-$messages['preview'] = 'Vista Previa';
-$messages['add_post'] = 'Engadir!';
-$messages['error_saving_draft'] = 'Houbo un erro gardando o borrador';
-$messages['draft_saved_ok'] = 'Borrador gardado correctamente';
-$messages['error_sending_request'] = 'Houbo un erro enviando a petición';
-$messages['error_no_category_selected'] = 'Debe seleccionar polo menos unha categoría';
-$messages['error_missing_post_topic'] = 'O título do artigo está baleiro';
-$messages['error_missing_post_text'] = 'O texto do artigo está baleiro';
-$messages['error_adding_post'] = 'Houbo un erro gardando o artigo';
-$messages['post_added_not_published'] = 'O artigo foi gardado correctamente pero non aparecerá na páxina principal';
-$messages['post_added_ok'] = 'O artigo foi gardado correctamente.';
-$messages['send_notifications_ok'] = 'Enviaráse unha mensaxe cada vez que se reciba un comentario ou retroenlace';
-
-// send trackbacks
-$messages['error_sending_trackbacks'] = 'Houbo un erro enviando un retroenlace os seguintes sitios';
-$messages['send_trackbacks_help'] = 'Seleccione as direccions as que quere enviar un retroenlace. Asegúrese de que as direccions soportan retroenlaces.';
-$messages['send_trackbacks'] = 'Enviar retroenlaces';
-$messages['ping_selected'] = 'Enviar retroenlaces';
-$messages['trackbacks_sent_ok'] = 'Os retroenlaces foron enviados correctamente as direccions seleccionadas';
-
-// posts page
-$messages['show_by'] = 'Amosar';
-$messages['category'] = 'Categoría';
-$messages['author'] = 'Autor';
-$messages['post_status_all'] = 'Todos';
-$messages['author_all'] = 'Todos';
-$messages['search_terms'] = 'Búsqueda';
-$messages['show'] = 'Amosar';
-$messages['delete'] = 'Eliminar';
-$messages['actions'] = 'Accions';
-$messages['all'] = 'Todos';
-$messages['category_all'] = 'Todas';
-$messages['error_incorrect_article_id'] = 'O identificador de artigo e incorrecto.';
-$messages['error_deleting_article'] = 'Houbo un erro eliminando o artigo "%s"';
-$messages['article_deleted_ok'] = 'O artigo "%s" foi eliminado correctamente';
-$messages['articles_deleted_ok'] = '%s articulos foron eliminados correctamente';
-$messages['error_deleting_article2'] = 'Houbo un erro eliminando o artigo con identificador  "%s"';
-
-// edit post page
-$messages['update'] = 'Actualizar';
-$messages['editPost'] = 'Editar artigo';
-$messages['error_fetching_post'] = 'Houbo un erro cargando o artigo';
-$messages['post_updated_ok'] = 'O artigo "%s" foi actualizado corrrectamente';
-$messages['error_updating_post'] = 'Houbo un erro actualizando o artigo';
-$messages['notification_added'] = 'Enviaráse unha mensaxe cada vez que se reciba un comentario ou retroenlace';
-$messages['notification_removed'] = 'Non se enviarán mensaxes en caso de comentarios ou retroenlaces';
-
-// post comments
-$messages['url'] = 'enderezo';
-$messages['comment_status_all'] = 'Todos';
-$messages['comment_status_spam'] = 'Spam';
-$messages['comment_status_nonspam'] = 'Non Spam';
-$messages['error_fetching_comments'] = 'Houbo un erro cargando os artigos do comentario';
-$messages['error_deleting_comments'] = 'Houbo un erro eliminando os comentarios ou non se seleccionou ningún comentario a eliminar';
-$messages['comment_deleted_ok'] = 'O comentario "%s" foi eliminado correctamente';
-$messages['comments_deleted_ok'] = '%s comentarios eliminados correctamente';
-$messages['error_deleting_comment'] = 'Houbo un erro eliminando o comentario "%s"';
-$messages['error_deleting_comment2'] = 'Houbo un erro eliminando o comentario con identificador  %s';
-$messages['editComments'] = 'Comentarios';
-$messages['mark_as_spam'] = 'Marcar como spam';
-$messages['mark_as_no_spam'] = 'Marcar como non spam';
-$messages['error_incorrect_comment_id'] = 'O identificador do comentario non e correcto';
-$messages['error_marking_comment_as_spam'] = 'Houbo un erro marcando o comentario como spam';
-$messages['comment_marked_as_spam_ok'] = 'O comentario foi marcado como spam correctamente';
-$messages['error_marking_comment_as_nonspam'] = 'Houbo un erro marcando o comentario como non spam';
-$messages['comment_marked_as_nonspam_ok'] = 'O comentario foi marcado como non spam correctamente';
-
-// post trackbacks
-$messages['blog'] = 'Bitácora';
-$messages['excerpt'] = 'Fragmento';
-$messages['error_fetching_trackbacks'] = 'Houbo un erro cargando os retroenlaces recibidos';
-$messages['error_deleting_trackbacks'] = 'Houbo un erro eliminando os retroenlaces ou non seleccionou ningún retroenlace a eliminar';
-$messages['error_deleting_trackback'] = 'Houbo un erro borrando o retroenlace "%s"';
-$messages['error_deleting_trackback2'] = 'Houbo un error eliminando o retroenlace cuycono identificador  "%s"';
-$messages['trackback_deleted_ok'] = 'Retroenlace "%s" eliminado correctamente';
-$messages['trackbacks_deleted_ok'] = '%s retroenlaces eliminados correctamente';
-$messages['editTrackbacks'] = 'Retroenlaces';
-
-// post statistics
-$messages['referrer'] = 'Referencia';
-$messages['hits'] = 'Hits';
-$messages['error_no_items_selected'] = 'Non se seleccionaron referencias a eliminar';
-$messages['error_deleting_referrer'] = 'Houbo un erro eliminando a referencia "%s"';
-$messages['error_deleting_referrer2'] = 'Houbo un erro eliminando a referencia con identificador  "%s"';
-$messages['referrer_deleted_ok'] = 'A referencia "%s" foi eliminada correctamente';
-$messages['referrers_deleted_ok'] = '%s referencias eliminadas correctamente';
-
-// categories
-$messages['posts'] = 'artigos';
-$messages['show_in_main_page'] = 'Incluir na páxina principal';
-$messages['error_incorrect_category_id'] = 'O identificador da categoría non e correcto ou non se seleccionaron categorías a borrar';
-$messages['error_category_has_articles'] = 'A categoría "%s" non se pode borrar porque está sendo usada por alguns artigos. Edite primeiro os artigos e volva a intentar eliminar a categoría.';
-$messages['category_deleted_ok'] = 'A categoría "%s" foi eliminada correctamente';
-$messages['categories_deleted_ok'] = '%s categorías eliminadas correctamente';
-$messages['error_deleting_category'] = 'Houbo un erro eliminando a categoría "%s"';
-$messages['error_deleting_category2'] = 'Houbo un erro eliminando a categoría con identificador  "%s"';
-$messages['yes'] = 'Sí';
-$messages['no'] = 'Non';
-
-// new category
-$messages['name'] = 'Nome';
-$messages['category_name_help'] = 'Nome da categoría tal e como aparecerá na bitácora';
-$messages['description'] = 'Descripción';
-$messages['category_description_help'] = 'Descripción da categoría';
-$messages['show_in_main_page_help'] = 'Se se desactiva, os artigos categorizados baixo esta categoría non serán mostrados na páxina principal e so serán visibles na páxina propia da categoría';
-$messages['error_empty_name'] = 'O nome non pode estar baleiro';
-$messages['error_empty_description'] = 'A descripción non pode estar vacía';
-$messages['error_adding_article_category'] = 'Houbo un erro engadindo a categoría. Verifique os datos e intenteo de novo';
-$messages['category_added_ok'] = 'A categoría "%s" foi engadida correctamente a bitácora';
-$messages['add'] = 'Engadir';
-$messages['reset'] = 'Limpar';
-
-// update category
-$messages['error_updating_article_category'] = 'Houbo un erro actualizando a categoría';
-$messages['error_fetching_category'] = 'Houbo un erro cargando a categoría';
-$messages['article_category_updated_ok'] = 'A categoría "%s" foi actualizada correctamente';
-
-// links
-$messages['feed'] = 'Contidos RSS';
-$messages['error_no_links_selected'] = 'O identificador do enlace non e correcto ou non se seleccionaron enlaces a eliminar';
-$messages['error_incorrect_link_id'] = 'O identificador do enlace non e correcto';
-$messages['error_removing_link'] = 'Houbo un erro eliminando o enlace "%s"';
-$messages['error_removing_link2'] = 'Houbo un erro eliminando o enlace con identificador  "%s"';
-$messages['link_deleted_ok'] = 'O enlace "%s" foi eliminado correctamente';
-$messages['links_deleted_ok'] = '%s enlaces foron eliminados correctamente';
-
-// new link
-$messages['link_name_help'] = 'Nome para o enlace';
-$messages['link_url_help'] = 'enderezo do enlace';
-$messages['link_description_help'] = 'Breve descripción do enlace';
-$messages['link_feed_help'] = 'Enlace unha fonte de contidos RSS ou Atom do enlace';
-$messages['link_category_help'] = 'Elixa unha das categorías de enlace dispoñibles';
-$messages['error_adding_link'] = 'Houbo un erro engadindo o enlace. Verifique os datos e volvao intentar';
-$messages['error_invalid_url'] = 'A enderezo non e correcta';
-$messages['link_added_ok'] = 'O enlace "%s" foi engadido correctamente';
-
-// update link
-$messages['error_updating_link'] = 'Houbo un erro actualizando o enlace. Verifique os datos e volvao intentar';
-$messages['error_fetching_link'] = 'Houbo un erro o cargar o enlace';
-$messages['link_updated_ok'] = 'O enlace "%s" foi actualizado correctamente';
-
-// link categories
-$messages['links'] = 'Enlaces';
-$messages['error_invalid_link_category_id'] = 'O identificador da categoría de enlaces non e correcto ou non escolleu ningunha categoría de enlaces';
-$messages['error_links_in_link_category'] = 'Hai alguns enlaces clasificados baixo a categoría "%s". Modifique os enlaces primeiro e volvao intentar.';
-$messages['error_removing_link_category'] = 'Houbo un erro eliminando a categoría de enlaces "%s"';
-$messages['link_category_deleted_ok'] = 'A categoría de enlaces "%s" foi eliminada correctamente';
-$messages['link_categories_deleted_ok'] = '%s categorías de enlaces foron eliminadas correctamente';
-$messages['error_removing_link_category2'] = 'Houbo un erro eliminando a categoría de enlaces con identificador  "%s"';
-
-// new link category
-$messages['link_category_name_help'] = 'Nome dado a esta categoría de enlaces';
-$messages['error_adding_link_category'] = 'Houbo un erro engadindo a nova categoría de enlaces';
-$messages['link_category_added_ok'] = 'A categoría de enlaces "%s" foi engadida correctamente';
-
-// edit link category
-$messages['error_updating_link_category'] = 'Houbo un erro actualizando a categoría de enlace. Comprobe os datos e volvao intentar.';
-$messages['link_category_updated_ok'] = 'A categoría de enlaces "%s" foi actualizada correctamente';
-$messages['error_fetching_link_category'] = 'Houbo un erro cargando a categoría de enlaces';
-
-// custom fields
-$messages['type'] = 'Tipo';
-$messages['hidden'] = 'Oculto';
-$messages['fields_deleted_ok'] = '%s campos eliminados correctamente';
-$messages['field_deleted_ok'] = 'O campo "%s" foi borrado correctamente';
-$messages['error_deleting_field'] = 'Houbo un erro eliminando o campo "%s"';
-$messages['error_deleting_field2'] = 'Houbo un erro eliminando o campo con identificador  "%s"';
-$messages['error_incorrect_field_id'] = 'O identificador do campo non e correcto';
-
-// new custom field
-$messages['field_name_help'] = 'Nome do campo que será usado para obter o seu valor nos artigos';
-$messages['field_description_help'] = 'Descripción do campo que será amosada o engadir ou editar un artigo';
-$messages['field_type_help'] = 'Escolla  un dos seguintes tipos de campo';
-$messages['field_hidden_help'] = 'Se o campo está marcado como oculto, non será mostrado nas pantallas de edición o novo artigo. Este atributo e usado casi únicamente por plugins que engaden novos campos para o seu uso';
-$messages['error_adding_custom_field'] = 'Houbo un erro engadindo o campo. Comprobe os datos e volvao intentar';
-$messages['custom_field_added_ok'] = 'O campo "%s" foi engadido correctamente';
-$messages['text_field'] = 'Campo de texto';
-$messages['text_area'] = 'Caixa de texto';
-$messages['checkbox'] = 'Casilla';
-$messages['date_field'] = 'Campo de data';
-
-// edit custom field
-$messages['error_fetching_custom_field'] = 'Houbo un erro cargando o campo';
-$messages['error_updating_custom_field'] = 'Houbo un erro actualizando o capmo. Comprobe os datos e volvao intentar';
-$messages['custom_field_updated_ok'] = 'O campo "%s" foi actualizado correctamente';
-
-// resources
-$messages['root_album'] = 'Álbum raíz';
-$messages['num_resources'] = 'Número de ficheiros';
-$messages['total_size'] = 'Tamaño total';
-$messages['album'] = 'Álbum';
-$messages['error_incorrect_album_id'] = 'O identificador do álbum non e válido';
-$messages['error_base_storage_folder_missing_or_unreadable'] = 'Non foi posible crear os directorios necesarios onde os ficheiros van a ser gardados. Esto pode ser debido a varias razons, como por exemplo que o "safe mode" esté activado na sua configuración do PHP ou que o usuario usado para executar PHP non teña suficientes permisos. Tamen se pode intentar crear os seguintes directorios manualmente: <br/><br/>%s<br/><br/>Se os directorios xa existen, asegúrese de que poidan ser leídos e escritos polo usuario que se está usando para ejecutar o servidor de web/PHP';
-$messages['items_deleted_ok'] = '%s ficheiros eliminados correctamente';
-$messages['error_album_has_children'] = 'O álbum "%s" ten subálbums. Modifique primeiro os subálbums e volvao intentar';
-$messages['item_deleted_ok'] = 'O ficheiro "%s" foi borrado correctamente';
-$messages['error_deleting_album'] = 'Houbo un error eliminando o campo "%s"';
-$messages['error_deleting_album2'] = 'Houbo un erro eliminando o campo con identificador  "%s"';
-$messages['error_deleting_resource'] = 'Houbo un erro eliminando o ficheiro "%s"';
-$messages['error_deleting_resource2'] = 'Houbo un erro eliminando o ficheiro con identificador  "%s"';
-$messages['error_no_resources_selected'] = 'Non se seleccionaron ficheiros ou álbums para eliminar';
-$messages['resource_deleted_ok'] = 'O ficheiro "%s" foi eliminado correctamente';
-$messages['album_deleted_ok'] = 'O álbum "%s" foi eliminado correctamente';
-$messages['add_resource'] = 'Engadir ficheiro';
-$messages['add_resource_preview'] = 'Engadir vista previa';
-$messages['add_resource_medium'] = 'Engadir vista mediana';
-$messages['add_album'] = 'Engadir álbum';
-
-// new album
-$messages['album_name_help'] = 'Nome do novo álbum';
-$messages['parent'] = 'Pai';
-$messages['no_parent'] = 'Álbum raíz';
-$messages['parent_album_help'] = 'Albumes poden conter subálbums de forma que poida organiza-los seus contidos mellor';
-$messages['album_description_help'] = 'Descripción dos contidos do álbum';
-$messages['error_adding_album'] = 'Houbo un erro engadindo o novo álbum. Comprobe os datos e volvao a intentar';
-$messages['album_added_ok'] = 'O álbum "%s" foi engadido correctamente';
-
-// edit album
-$messages['error_incorrect_album_id'] = 'O identificador do álbum non e correcto';
-$messages['error_fetching_album'] = 'Houbo un erro cargando o álbum';
-$messages['error_updating_album'] = 'Houbo un erro actualizando o álbum. Comprobe os datos e volvao a intentar';
-$messages['album_updated_ok'] = 'O álbum "%s" foi actualizado correctamente';
-$messages['show_album_help'] = 'Se esta casilla está desactivada, o álbum e os ficheiros que estén incluídos nel non aparecerán na parte pública do blog';
-
-// new resource
-$messages['file'] = 'Ficheiro';
-$messages['resource_file_help'] = 'Ficheiro que desexa engadir. Use o enlace "Engadir Outro" para engadir máis dun ficheiro o mesmo tempo (pero tardará máis tempo en termina-a operación)';
-$messages['add_field'] = 'Engadir outro';
-$messages['resource_description_help'] = 'Descripción sobre os contidos do ficheiro';
-$messages['resource_album_help'] = 'Seleccione o álbum o que se engadirá o ficheiro';
-$messages['error_no_resource_uploaded'] = 'Non seleccionou ningún ficheiro para engadir';
-$messages['resource_added_ok'] = 'O ficheiro "%s" foi engadido correctamente';
-$messages['error_resource_forbidden_extension'] = 'O ficheiro non foi engadido porque e dun tipo non permitido polo administrador';
-$messages['error_resource_too_big'] = 'O ficheiro non foi engadido porque e demasiado grande';
-$messages['error_uploads_disabled'] = 'O ficheiro non foi engadido porque a posibilidade de engadir ficheiros foi desactivada polo administrador';
-$messages['error_quota_exceeded'] = 'O ficheiro non foi engadido porque superou p tamaño máximo total de ficheiros permitido para a sua bitácora';
-$messages['error_adding_resource'] = 'Houbo un erro engadindo o ficheiro';
-
-// edit resource
-$messages['editResource'] = 'Editar ficheiro';
-$messages['resource_information_help'] = 'Información sobre o ficheiro';
-$messages['information'] = 'Información';
-$messages['size'] = 'Tamaño';
-$messages['format'] = 'Formato';
-$messages['dimensions'] = 'Dimensions';
-$messages['bits_per_sample'] = 'Bits por mostra';
-$messages['sample_rate'] = 'Frecuencia de mostreo';
-$messages['number_of_channels'] = 'Número de canles';
-$messages['legnth'] = 'Duración';
-$messages['thumbnail_format'] = 'Formato da vista previa';
-$messages['regenerate_preview'] = 'Rexenerar vista previa';
-$messages['error_fetching_resource'] = 'Houbo un erro cargando o ficheiro';
-$messages['error_updating_resource'] = 'Houbo un erro actualizando o ficheiro';
-$messages['resource_updated_ok'] = 'O ficheiro "%s" foi actualizado correctamente';
-
-// blog settings
-$messages['blog_link'] = 'enderezo';
-$messages['blog_link_help'] = 'Enlace permanente a esta bitácora';
-$messages['blog_name_help'] = 'Título desta bitácora';
-$messages['blog_description_help'] = 'Descripción dos contidos desta bitácora';
-$messages['language'] = 'Idioma';
-$messages['blog_language_help'] = 'Idioma usado para mostra-los textos de tanto a parte pública como a parte privada da bitácora';
-$messages['max_main_page_items'] = 'Artigos mostrados na páxina principal';
-$messages['max_main_page_items_help'] = 'Máximo número de artigos mostrados na páxina principal da bitácora';
-$messages['max_recent_items'] = 'Número de artigos recentes';
-$messages['max_recent_items_help'] = 'Máximo número de artigos recentes mostrados';
-$messages['template'] = 'Plantilla';
-$messages['choose'] = 'Elexir';
-$messages['blog_template_help'] = 'Plantilla usada para mostra-los contidos da bitácora. Esta lista inclue as plantillas globais ademáis das plantillas instaladas exclusivamente para esta bitácora';
-$messages['use_read_more'] = 'Engadir o enlace "Máis..." os artigos';
-$messages['use_read_more_help'] = 'Se se activa, só o texto que introduciu na caixa de texto marcada como "Texto" na páxina de edición de artigos Amosaráse na páxina principal e engadirase un enlace titulado "Máis..." o final do texto. O resto do artigo Amosaráse na páxina propia do artigo. Se se desactiva, o artigo enteiro Amosaráse sempre na páxina principal';
-$messages['enable_wysiwyg'] = 'Activa-lo editor visual de artigos';
-$messages['enable_wysiwyg_help'] = 'Activa-lo editor visual de código HTML, que amosa o contido do artigo tal cual aparecerá na bitácora. Esta funcionalidade require Internet Explorer 5.5 ou Mozilla 1.3 ou superiores';
-$messages['enable_comments'] = 'Permitir comentarios por defecto';
-$messages['enable_comments_help'] = 'Permite comentarios en todolos artigos por defecto, ainda que os comentarios podense activar ou desactivar a vontade específicamente para cada artigo';
-$messages['show_future_posts'] = 'Mostralos artigos con data no futuro';
-$messages['show_future_posts_help'] = 'Amosa os artigos que teñan data futura no calendario e na páxina principal';
-$messages['comments_order'] = 'Orde dos comentarios';
-$messages['comments_order_help'] = 'Orde na que os comentarios dun artigo deben ser amosados';
-$messages['oldest_first'] = 'Os antigos primeiro';
-$messages['newest_first'] = 'Os novos primeiro';
-$messages['categories_order'] = 'Orde das categorías';
-$messages['categories_order_help'] = 'Orde no que as categorías deben ser amosadas na páxina principal';
-$messages['most_recent_updated_first'] = 'As categorías actualizadas máis recentemente primeiro';
-$messages['alphabetical_order'] = 'Orde alfabético';
-$messages['reverse_alphabetical_order'] = 'Orde alfabético inverso';
-$messages['most_articles_first'] = 'As que teñan máis artigos primeiro';
-$messages['link_categories_order'] = 'Orde das categorías de enlaces';
-$messages['link_categories_order_help'] = 'Orde no que as categorías de enlaces deben ser amosadas na páxina principal';
-$messages['most_links_first'] = 'As que teñan máis enlaces primeiro';
-$messages['most_links_last'] = 'As que teñan menos enlaces primeiro';
-$messages['time_offset'] = 'Diferencia horaria';
-$messages['time_offset_help'] = 'Diferencia horaria en número de horas que será engadida dinámicamente a cada data e hora amosada na bitácora';
-$messages['close'] = 'Pechar';
-$messages['select'] = 'Seleccionar';
-$messages['error_updating_settings'] = 'Houbo un erro actualizando a configuración da bitácora. Comprobe os datos e volvao a intentar';
-$messages['error_invalid_number'] = 'O valor non e correcto';
-$messages['error_incorrect_time_offset'] = 'O valor da diferencia horaria non e correcto';
-$messages['blog_settings_updated_ok'] = 'A configuración da bitácora foi gardada correctamente';
-$messages['hours'] = 'Horas';
-
-// user settings
-$messages['username_help'] = 'Nome de usuario, non pode ser cambiado';
-$messages['full_name'] = 'Nome completo';
-$messages['full_name_help'] = 'Nome completo, opcional';
-$messages['password_help'] = 'Cambie o password e confírmeo, ou deixe os campos baleiros se non desexa facer ningun cambio.';
-$messages['confirm_password'] = 'Confirmar o password';
-$messages['email'] = 'Direccion de correo';
-$messages['email_help'] = 'enderezo de correo onde as notificacions serán enviadas';
-$messages['bio'] = 'Descripción persoal';
-$messages['bio_help'] = 'Descripción persoal, opcional';
-$messages['picture'] = 'Foto';
-$messages['user_picture_help'] = 'Pode escoller unha foto das dispoñibles nesta bitácora como ficheiro para que sexa a sua foto persoal';
-$messages['error_invalid_password'] = 'O password non e correcto ou por exemplo, e demasiado curto';
-$messages['error_passwords_dont_match'] = 'O password e a confirmación non son iguais';
-$messages['error_incorrect_email_address'] = 'A enderezo de correo non e válida';
-$messages['error_updating_user_settings'] = 'Houbo un erro gardando os seus datos. Comprobe os datos e volvao  intentar';
-$messages['user_settings_updated_ok'] = 'Os datos de usuario foron gardados correctamente';
-$messages['resource'] = 'Ficheiro';
-
-// plugin centre
-$messages['identifier'] = 'Identificador';
-$messages['error_plugins_disabled'] = 'A funcionalidade de plugins foi desactivada polo administrador.';
-
-// blog users
-$messages['revoke_permissions'] = 'Quitar permisos';
-$messages['error_no_users_selected'] = 'Non seleccionou ningun usuario';
-$messages['user_removed_from_blog_ok'] = 'O usuario "%s" xa non ten permisos para acceder a esta bitácora';
-$messages['users_removed_from_blog_ok'] = '%s usuarios xa non teñen acceso a esta bitácora';
-$messages['error_removing_user_from_blog'] = 'Houbo un erro eliminando o acceso a esta bitácora do usuario "%s"';
-$messages['error_removing_user_from_blog2'] = 'Houbo un erro eliminando o acceso a esta bitácora do usuario con identificador  "%s"';
-
-// new blog user
-$messages['new_blog_username_help'] = 'Nombe do usuario o que se quere dar acceso a esta bitácora. O usuario so terá acceso as seccions "Contido" e "Ficheiros"';
-$messages['send_notification'] = 'Enviar notificación';
-$messages['send_user_notification_help'] = 'Enviar  mensaxe de notificación a este usuario';
-$messages['notification_text'] = 'Texto';
-$messages['notification_text_help'] = 'Texto que será incluido na notificación enviada a este usuario';
-$messages['error_adding_user'] = 'Houbo un erro dando acceso o usuario. Comprobe os datos e volvao intentar';
-$messages['error_empty_text'] = 'O texto da notificación non pode estar baleiro';
-$messages['error_invalid_user'] = 'O usuario "%s" non e válido ou non existe';
-$messages['user_added_to_blog_ok'] = 'O usuario "%s" xa pode acceder a esta bitácora';
-
-// blog templates
-$messages['error_no_templates_selected'] = 'Non se seleccionaron plantillas';
-$messages['error_template_is_current'] = 'A plantilla "%s" non se pode eliminar porque e a que está usando a bitácora';
-$messages['error_removing_template'] = 'Houbo un erro borrando a plantilla "%s"';
-$messages['template_removed_ok'] = 'A plantilla "%s" foi eliminada correctamente';
-$messages['templates_removed_ok'] = '%s plantillas foron eliminadas correctamente';
-
-// new blog template
-$messages['template_installed_ok'] = 'A plantilla "%s" foi engadida correctamente';
-$messages['error_installing_template'] = 'Houbo un erro engadindo a plantilla "%s"';
-$messages['error_missing_base_files'] = 'A plantilla non puido ser engadida porque alguns dos ficheiros básicos da plantilla non están dispoñibles';
-$messages['error_add_template_disabled'] = 'Non se poden engadir novas plantillas porque esta posibilidade foi desactivada polo administrador';
-$messages['error_must_upload_file'] = 'Non se enviou ningun ficheiro con datos dunha plantilla';
-$messages['error_uploads_disabled'] = 'A posibilidade de enviar ficheiros o servidor foi  desactivada polo administrador';
-$messages['error_no_new_templates_found'] = 'Non se atoparon novas plantillas';
-$messages['error_template_not_inside_folder'] = 'Os ficheiros da plantilla debense gardar dentro dun directorio con nome o mesmo que o da plantilla';
-$messages['error_unpacking'] = 'Houbo un erro descomprimindo o ficheiro da plantilla';
-$messages['error_forbidden_extensions'] = 'Alguns dos ficheiros da plantilla contiñan unha extensión non permitida neste sitio';
-$messages['error_creating_working_folder'] = 'Houbo un erro creando un directorio temporal para descomprimi-a plantilla';
-$messages['error_checking_template'] = 'Houbo un erro comprobando que a plantilla e correcta: %s';
-$messages['template_package'] = 'Plantilla';
-$messages['blog_template_package_help']  = 'Use este formulario para enviar novas plantillas o servidor. Éstas plantillas so estarán dispoñibles para esta bitácora. Se non e posible enviar ficheiros, use por exemplo un cliente de FTP para subi-los ficheiros e colóqueos no directorio <b>%s</b> e logo use o botón "<b>Actualizar plantillas</b>" para engadir calquera plantilla nova.Lifetype comprobará o contido do directorio e engadirá automáticamente todalas plantillas novas';
-$messages['scan_templates'] = 'Actualizar plantillas';
-
-// site users
-$messages['user_status_active'] = 'Activo';
-$messages['user_status_disabled'] = 'Desactivado';
-$messages['user_status_all'] = 'Todos';
-$messages['user_status_unconfirmed'] = 'Sen confirmar';
-$messages['error_invalid_user2'] = 'O usuario con identificador  "%s" non existe';
-$messages['error_deleting_user'] = 'Houbo un erro desactivando o usuario "%s"';
-$messages['user_deleted_ok'] = 'O usuario "%s" foi desactivado correctamente';
-$messages['users_deleted_ok'] = '%s usuarios foron desactivados correctamente';
-
-// create user
-$messages['user_added_ok'] = 'O usuario "%s" foi engadido correctamente';
-$messages['error_incorrect_username'] = 'O nome de usuario non e correcto ou xa está asignado';
-$messages['user_status_help'] = 'Estado do usuario';
-$messages['user_blog_help'] = 'Bitácora a  que este usuario será asignado inicialmente';
-$messages['none'] = 'Ningun';
-
-// edit user
-$messages['error_invalid_user'] = 'O nome de usuario non e correcto ou non existe';
-$messages['error_updating_user'] = 'Houbo un erro actualizando o usuario. Comprobe os datos e volvao  intentar';
-$messages['blogs'] = 'Bitácoras';
-$messages['user_blogs_help'] = 'Bitácoras nas que o usuario ten acceso como usuario ou como propietario da bitácora';
-$messages['site_admin'] = 'Administrador';
-$messages['site_admin_help'] = 'Dar permisos de administrador a este usuario de forma que poida acceder a sección de "Administración"';
-$messages['user_updated_ok'] = 'O usuario "%s" foi actualizado correctamente';
-
-// site blogs
-$messages['blog_status_all'] = 'Todas';
-$messages['blog_status_active'] = 'Activas';
-$messages['blog_status_disabled'] = 'Desactivada';
-$messages['blog_status_unconfirmed'] = 'Sen confirmar';
-$messages['owner'] = 'Propietario';
-$messages['quota'] = 'Cuota';
-$messages['bytes'] = 'bytes';
-$messages['error_no_blogs_selected'] = 'Non se seleccionaron bitácoras para desactivar';
-$messages['error_blog_is_default_blog'] = 'A bitácora "%s" non se pode desactivar porque e a bitácora por defecto';
-$messages['blog_deleted_ok'] = 'A bitácora "%s" foi desactivada correctamente';
-$messages['blogs_deleted_ok'] = '%s foron desactivadas correctamente';
-$messages['error_deleting_blog'] = 'Houbo un erro desactivando a bitácora "%s"';
-$messages['error_deleting_blog2'] = 'Houbo un erro desactivando a bitácora con identificador  "%s"';
-
-// create blog
-$messages['error_adding_blog'] = 'Houbo un erro engadindo a bitácora. Comprobe os datos e volvao a intentar';
-$messages['blog_added_ok'] = 'A bitácora "%s" foi engadida correctamente';
-
-// edit blog
-$messages['blog_status_help'] = 'Estado da bitácora';
-$messages['blog_owner_help'] = 'Propietario da bitácora, que terá control sobre a sua configuración';
-$messages['users'] = 'Usuarios';
-$messages['blog_quota_help'] = 'Cuota de ficheiros en bytes. Use un valor de 0 para otorgar espacio ilimitado';
-$messages['blog_users_help'] = 'Usuarios que poden acceder a esta bitácora, pero sen acceso a sua configuración. Asigne os usuarios da esquerda a lista da dereita para engadir novos usuarios, ou viceversa para eliminar usuarios existentes';
-$messages['edit_blog_settings_updated_ok'] = 'A bitácora "%s" foi actualizada correctamente';
-$messages['error_updating_blog_settings'] = 'Houbo un erro actualizando a bitácora "%s"';
-$messages['error_incorrect_blog_owner'] = 'O usuario seleccionado como propietario da bitácora non e correcto';
-$messages['error_fetching_blog'] = 'Houbo un erro cargando a bitácora';
-$messages['error_updating_blog_settings2'] = 'Houbo un erro actualizando a bitácora. Comprobe os datos e inténteo de novo';
-$messages['add_or_remove'] = 'Engadir ou eliminar usuarios';
-
-// site locales
-$messages['locale'] = 'Traducción';
-$messages['locale_encoding'] = 'Condificación';
-$messages['locale_deleted_ok'] = 'A traducción "%s" foi eliminada correctamente';
-$messages['error_no_locales_selected'] = 'Non se seleccionaron traduccions para eliminar';
-$messages['error_deleting_only_locale'] = 'A traducción non puido ser eliminada porque e a única que queda no sistema';
-$messages['locales_deleted_ok']= '%s traduccions foron eliminadas correctamente';
-$messages['error_deleting_locale'] = 'Houbo un erro borrando a traducción "%s"';
-$messages['error_locale_is_default'] = 'A traducción "%s" non puido ser eliminada porque e a que se está usando por defecto para as novas bitácoras';
-
-// add locale
-$messages['error_invalid_locale_file'] = 'O ficheiro coa traducción non e válido';
-$messages['error_no_new_locales_found'] = 'Non se atoparon novos ficheiros con traduccions';
-$messages['locale_added_ok'] = 'A traducción "%s" foi engadida correctamente';
-$messages['error_saving_locale'] = 'Houbo un erro gardando a nova traducción';
-$messages['scan_locales'] = 'Actualizar traduccions';
-$messages['add_locale_help'] = 'Use este formulario para engadir novas traduccions. Se non e posible enviar ficheiros o servidor, suba o ficheiro o servidor manualmente mediante por exemplo FTP, gárdeo no directorio <b>./locales/</b> e use o botón "<b>Actualizar traduccions</b>". Lifetype lerá o directorio e engadira automáticamente calquera nova traducción';
-
-// site templates
-$messages['error_template_is_default'] = 'A plantilla "%s" non puido ser eliminada porque e a que se está usando por defecto para novas bitácoras';
-
-// add template
-$messages['global_template_package_help'] = 'Use este formulario para enviar novas plantillas o servidor. Éstas plantillas estarán dispoñibles para todalas bitácoras do servidor. Se non e posible enviar ficheiros, use por exemplo un cliente de FTP para subilos ficheiros e colóqueos no directorio <b>%s</b> e logo use o botón "<b>Actualizar plantillas</b>" para engadir calquera plantilla nova. Lifetype comprobará o contido do directorio e engadirá automáticamente todalas plantillas novas';
-
-// global settings
-$messages['site_config_saved_ok'] = 'A configuración xeral foi gardada correctamente';
-$messages['error_saving_site_config'] = 'Houbo un erro gardando a configuración xeral';
-/// Xeral settings
-$messages['help_comments_enabled'] = 'Activa-los comentarios en novas bitácoras por defecto [Valor por defecto = Sí]';
-$messages['help_beautify_comments_text'] = 'Se se activa, os comentarios enviados polos usuarios serán formateados automáticamente engadindo párrafos e xerando enlaces automáticamente a partir de direccions [Valor por defecto = Sí]';
-$messages['help_temp_folder'] = 'Cartafol onde o Lifetype pode escribir os seus ficheiros temporais de uso interno. Use unha Cartafol fora da árbore de directorios do servidor da web para maior seguridade [Valor por defecto = ./tmp]';
-$messages['help_base_url'] = 'enderezo base onde o Lifetype está instalado';
-$messages['help_subdomains_enabled'] = 'Activalo soporte para subdominios. Vexa a sección da documentación sobre subdominios para máis información [Valor por defecto = Non]';
-$messages['help_subdomains_base_url'] = 'Cando os subdominios estan activados, empregaráse esta URL base en lugar de base_url. Use {blogname} para obter o nome da bitácora e {username} para obter o nome de usuario, para xerar un enlace permanente a bitácora (p. ex. "http://{blogname}.sudominio.com")';
-$messages['help_include_blog_id_in_url'] = 'Cando os subdominios están activados conxuntamente coas URLs "normales", esto forzará o Blog a non incluir o parámetro "blogId". Non debería alterar este valor se non sabe o que está facendo [Valor por defecto = Sí]';
-$messages['help_script_name'] = 'Configure este parámetro se por algunha razón ten que renomear index.php [Valor por defecto = index.php]';
-$messages['help_show_posts_max'] = 'Número máximo de artigos na páxina principal para novas bitácoras [Valor por defecto = 15]';
-$messages['help_recent_posts_max'] = 'Número máximo de artigos recentes amosados na páxina principal para novas bitácoras [Valor por defecto = 10]';
-$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Activalo soporte para XmlHttpRequest de forma que se poidan gardar borradores de artigos sen ter que refrescar a páxina de edición [Valor por defecto = Sí]';
-$messages['help_locale_folder'] = 'Cartafol onde están gardadas as traduccions. Use un cartafol fora da árbore de directorios do servidor da web para maior seguridade [Valor por defecto = ./locale]';
-$messages['help_default_locale'] = 'Idioma por defecto para as novas bitácoras [Valor por defecto = en_UK]';
-$messages['help_default_blog_id'] = 'Bitácora por defecto que será amosada se non especifica unha bitácora en particular [Valor por defecto = 1]';
-$messages['help_default_time_offset'] = 'Diferencia horaria por defecto das novas bitácoras [Valor por defecto = 0]';
-$messages['help_html_allowed_tags_in_comments'] = 'Lista de entidades HTML, separadas por espacios en branco, que están permitidas nos comentarios [Valor por defecto = &lt;a&gt;&lt;i&gt;&lt;br&gt;&lt;br/&gt;&lt;b&gt;]';
-$messages['help_referer_tracker_enabled'] = 'Gardar os "referrers" na base de datos [Valor por defecto = Sí]';
-$messages['help_show_more_enabled'] = 'Activa-lo enlace "Máis..." por defecto para novas bitácoras [Valor por defecto = Sí]';
-$messages['help_update_article_reads'] = 'O Blog actualizará o contador de veces que un artigo foi lido se se activa [Valor por defecto = Sí]';
-$messages['help_update_cached_article_reads'] = 'Igual que update_article_reads, pero ademáis actualizará o contador ainda que a caché esté activada [Valor por defecto = Sí]';
-$messages['help_xmlrpc_ping_enabled'] = 'Activa-a posibilidade de enviar pings mediante XMLRPC os sitios que o soporten [Valor por defecto = Sí]';
-$messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Activa-lo soporte para pings XMLRPC por defecto en novos artigos [Valor por defecto = Sí]';
-$messages['help_xmlrpc_ping_hosts'] = 'URLs de servicios que implementen soporte para pings XMLRPC. Poña cada enderezo nunha liña nova [Valor por defecto = http://rpc.weblogs.com/RPC2]';
-$messages['help_trackback_server_enabled'] = 'Activa-lo soporte para recibir retroenlaces [Valor por defecto = Sí]';
-$messages['help_htmlarea_enabled'] = 'Activar por defecto o editor visual de artigos para as novas bitácoras [Valor por defecto = Sí';
-$messages['help_plugin_manager_enabled'] = 'Activa-los plugins [Valor por defecto = Sí]';
-$messages['help_minimum_password_length'] = 'Tamaño mínimo, en carácteres, que un password debe ter [Valor por defecto = 4]';
-$messages['help_xhtml_converter_enabled'] = 'Activa un filtro que intentará converti-lo texto dos artigos a XHTML válido automáticamente [Valor por defecto = Sí]';
-$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'O Blog intentará correxir casi todo o que poida para asegurar que os nosos artigos sexan XHTML válido, ainda que activando este modo e posible que se cometan máis errores [Valor por defecto = Non]';
-$messages['help_session_save_path'] = 'Cartafol onde o O Blog garda as suas sesions, mediante a función session_save_path() do PHP. Deixe este campo vacio para empregar o valor por defecto do PHP. Se usa outro cartafol que non sexa o por defecto, asegúrese de que pode ser escrito polo usuario executando o servidor de web [Valor por defecto = (baleiro)]';
-// summary settings
-$messages['help_summary_page_show_max'] = 'Número de artigos que se Amosarán no portal. Este parámetro controla todalas listas do portal (artigos máis recentes, bitácoras máis activas, etc) [Valor por defecto = 10]';
-$messages['help_summary_items_per_page'] = 'Número de bitácoras por páxina na sección "Bitácoras" do portal [Valor por defecto = 25]';
-$messages['help_forbidden_usernames'] = 'Lista de nomes de usuario que non se poden rexistrar [Valor por defecto = admin www blog ftp]';
-$messages['help_force_one_blog_per_email_account'] = 'Non permitir máis dunha bitácora por enderezo de correo [Valor por defecto = Non]';
-$messages['help_summary_show_agreement'] = 'Amosar un texto/licencia coa que os usuarios teñen que estar de acordo antes de continuar co proceso de rexistro [Valor por defecto = Sí]';
-$messages['help_need_email_confirm_registration'] = 'Enviar un email os novos usuarios cun enlace o que teñen que acceder, para confirma-lo rexistro dunha nova bitácora [Valor por defecto = Sí]';
-$messages['help_summary_disable_registration'] = 'Non permiti-lo rexistro de novas bitácoras [Valor por defecto = Non]';
-// templates
-$messages['help_template_folder'] = 'Cartafol onde se gardan as plantillas [Valor por defecto = ./templates]';
-$messages['help_default_template'] = 'Plantilla por defecto para as novas bitácoras [Valor por defecto = standard]';
-$messages['help_users_can_add_templates'] = 'Permitir que os usuarios engadan as suas propias plantillas [Valor por defecto = Sí]';
-$messages['help_template_compile_check'] = 'Se se activa, Smarty comprobará se os ficheiros das plantillas Trocaron e se e así, as recompilará [Valor por defecto = Sí]';
-$messages['help_template_cache_enabled'] = 'Activa a cache de plantillas. Se está activada, as páxinas das bitácoras so se xerarán unha vez e empregaránse ata que haxa algun cambio. Desta forma, non será necesario trae-los datos dende a base de datos cada vez [Valor por defecto = Sí]';
-$messages['help_template_cache_lifetime'] = 'Tempo en segundos de vida da caché. Asigne -1 para que a caché nunca expire';
-$messages['help_template_http_cache_enabled'] = 'Activa-lo soporte para as peticions condicionais vía HTTP. Se se activa, o Blog terá en conta o valor da cabeceira HTTP "If-Modified-Since" e so enviará os datos en caso de que sexa necesario para aforrar ancho de banda [Valor por defecto = Non]';
-$messages['help_allow_php_code_in_templates'] = 'Permite incluir código PHP nas plantillas de Smarty vía {php}...{/php} [Valor por defecto = Non]';
-// urls
-$messages['help_request_format_mode'] = 'Escolla un dos seguintes formatos de URLs. Se pensa empregar "URLs Personales", configure os formatos das URLs se e necesario [Valor por defecto = Plain]';
-$messages['plain'] = 'Normal';
-$messages['search_engine_friendly'] = 'Search engine friendly';
-$messages['custom_url_format'] = 'URLs Personales';
-$messages['help_permalink_format'] = 'Formato dos enlaces permanentes a artigos cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/{catname}/{year}/{month}/{day}/{postname}$]';
-$messages['help_category_link_format'] = 'Formato dos enlaces a categorías de artigos cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/{catname}$]';
-$messages['help_blog_link_format'] = 'Formato dos enlaces permanentes a bitácoras cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}$]';
-$messages['help_archive_link_format'] = 'Formato dos enlaces os archivos cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/archives/{year}/?{month}/?{day}]';
-$messages['help_user_posts_link_format'] = 'Formato dos enlaces permanentes os artigos dun autor en particular cando as URLs persoais están activadas [Valor por defecto = /blog/{blogname}/user/{username}$]';
-$messages['help_post_trackbacks_link_format'] = 'Formato dos enlaces as páxinas cos retroenlaces recibidos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/post/trackbacks/{postname}$]';
-$messages['help_template_link_format'] = 'Formato dos enlaces a páxinas persoais cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/page/{templatename}$]';
-$messages['help_album_link_format'] = 'Formato dos enlaces a álbums de arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/album/{albumname}$]';
-$messages['help_resource_link_format'] = 'Formato dos enlaces a arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/{resourcename}$]';
-$messages['help_resource_preview_link_format'] = 'Formato dos enlaces as vistas previas de arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview/{resourcename}$]';
-$messages['help_resource_medium_size_preview_link_format'] = 'Formato dos enlaces as vistas previas de tamaño medio cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview-med/{resourcename}$]';
-$messages['help_resource_download_link_format'] = 'Formato dos enlaces para descargar arquivos cando as URLs persoais están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/download/{resourcename}$]';
-// email
-$messages['help_check_email_address_validity'] = 'Se se activa, o Blog contactará co servidor de correo especificado no rexistro MX  especificado polo servidor DNS do dominio e comprobará se o usuario é válido [Valor por defecto = Non]';
-$messages['help_email_service_enabled'] = 'Activar o soporte para enviar mensaxes [Valor por defecto = Sí]';
-$messages['help_post_notification_source_address'] = 'enderezo que aparecerá no campo "From:" cando se envíen mensaxes a través do Blog [Valor por defecto = noreply at your.host.com]';
-$messages['help_email_service_type'] = 'Sistema que se empregará para enviar mensaxes [Valor por defecto = PHP]';
-$messages['help_smtp_host'] = 'Se se desexa empregar un servidor SMTP para enviar mensaxes, especifique aquí o nome do servidor [Valor por defecto = (baleiro)]';
-$messages['help_smtp_port'] = 'Se o servidor de SMTP está configurado nun porto distinto o 25 [Valor por defecto = (baleiro)]';
-$messages['help_smtp_use_authentication'] = 'Active este parámetro si o servidor requiere autentificación  [Valor por defecto = Non]';
-$messages['help_smtp_username'] = 'nome de usuario en caso de que o servidor SMTP necesite autentificación [Valor por defecto = (baleiro)]';
-$messages['help_smtp_password'] = 'Password en caso de que o servidor SMTP necesite autentificación [Valor por defecto = (baleiro)]';
-// helpers
-$messages['help_path_to_tar'] = 'Ruta completa o binario "tar", necesario para descomprimir plantillas en formato .tar.gz o tar.bz2 [Valor por defecto = /bin/tar]';
-$messages['help_path_to_gzip'] = 'Ruta completa o binario "gzip", necesario para descomprimir plantillas en formato .tar.gz [Valor por defecto = /bin/gzip]';
-$messages['help_path_to_bz2'] = 'Ruta completa o binario "bz2", necesario para descomprimir plantillas en formato tar.bz2 [Valor por defecto = /usr/bin/bzip2]';
-$messages['help_path_to_unzip'] = 'Ruta completa o binario "unzip", necesario para descomprimir plantillas en formato .zip [Valor por defecto = /usr/bin/unzip]';
-$messages['help_unzip_use_native_version'] = 'empregar unha versión nativa en PHP para descomprimir arquivos .zip, de forma que o binario "unzip" non sexa necesario [Valor por defecto = Non]';
-// uploads
-$messages['help_uploads_enabled'] = 'Permite ós usuarios enviar arquivos o servidor. Este parámetro afecta por exemplo as plantillas personalizadas [Valor por defecto = Sí]';
-$messages['help_maximum_file_upload_size'] = 'Tamaño máximo dos arquivos en bytes. Por razons obvias, este límite nunca será máis alto que o valor configurado na configuración do PHP [Valor por defecto = 2000000]';
-$messages['help_upload_forbidden_files'] = 'Lista separada por espacios en branco de nomes de arquivos non permitidos neste servidor. Pode empregar \'*\' e \'?\' para especificar nomes de arquivos máis complexos [Valor por defecto = *.php *.php3 *.php4 *.phtml]';
-// interfaces
-$messages['help_xmlrpc_api_enabled'] = 'Activar o acceso as bitácoras mediante XMLRPC [Valor por defecto = Sí]';
-$messages['help_rdf_enabled'] = 'Activar a xeracion de contidos mediante RSS ou Atom [Valor por defecto = Sí]';
-$messages['help_default_rss_profile'] = 'Formato por defecto dos contidos [Valor por defecto = RSS 1.0]';
-// security
-$messages['security_pipeline_enabled'] = 'Activar o filtro de seguridade, que é necesario para o filtro Bayesiano e por outros plugins que o usen [Valor por defecto = Sí]';
-$messages['help_maximum_comment_size'] = 'Tamaño máximo dun comentario en bytes, ou use un valor de "0" para permitir un tamaño ilimitado [Valor por defecto = 0]';
-// baSíian filter
-$messages['help_baSíian_filter_enabled'] = 'Activar o filtro Bayesiano anti-spam [Valor por defecto = Sí]';
-$messages['help_baSíian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario sexa considerado spam [Valor por defecto = 0.9]';
-$messages['help_baSíian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un comentario non sexa considerado spam [Valor por defecto = 0.2]';
-$messages['help_baSíian_filter_min_length_token'] = 'Tamaño mínimo en carácteres dun token [Valor por defecto = 3]';
-$messages['help_baSíian_filter_max_length_token'] = 'Tamaño máximo dun token [Valor por defecto = 100]';
-$messages['help_baSíian_filter_number_significant_tokens'] = 'Número mínimo de tokens [Valor por defecto = 15]';
-$messages['help_baSíian_filter_spam_comments_action'] = 'Qué facer cos comentarios que sexan spam. Use "Eliminar" cando o seu filtro Bayesiando fora entrenado correctamente. Manteñaos na base de datos se cree que  o seu filtro Pode cometer todavía algun erro [Valor por defecto = Gardar]';
-$messages['keep_spam_comments'] = 'Gardalos na base de datos, pero marcados como "Spam"';
-$messages['throw_away_spam_comments'] = 'Eliminalos directamente';
-// resources
-$messages['help_resources_enabled'] = 'Activar a sección de "arquivos" [Valor por defecto = Sí]';
-$messages['help_resources_folder'] = 'Cartafol onde los arquivos serán almacenados. Use un Cartafol fora do árbol do servidor de web para maior seguridade [Valor por defecto = ./gallery]';
-$messages['help_thumbnail_method'] = 'Método para xerar as previsualizacions. Se requiere soporte para GD si se selecciona PHP como o método por defecto  [Valor por defecto = PHP]';
-$messages['help_path_to_convert'] = 'Ruta completa o binario "convert" do paquete "ImageMagick". é obligatorio se o método para xerar as previsualizacions é "ImageMagick" [Valor por defecto = /usr/bin/convert]';
-$messages['help_thumbnail_format'] = 'Formato das previsualizacions [Valor por defecto = o mesmo que a imaxe]';
-$messages['help_thumbnail_height'] = 'Altura das previsualizacions en pixels [Valor por defecto = 120]';
-$messages['help_thumbnail_width'] = 'Anchura das previsualizacions en pixels [Valor por defecto = 120]';
-$messages['help_medium_size_thumbnail_height'] = 'Altura das previsualizacions de tamaño medio en pixels [Valor por defecto = 480]';
-$messages['help_medium_size_thumbnail_width'] = 'Anchura das previsualizacions de tamaño medio en pixels [Valor por defecto = 640]';
-$messages['help_thumbnails_keep_aspect_ratio'] = 'xerar as previsualizacions mantendo un aspecto proporcional [Valor por defecto = Sí]';
-$messages['help_thumbnail_generator_force_use_gd1'] = 'empregar so GD1 en lugar de GD2 [Valor por defecto = Non]';
-$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Método usado para suaviza-as vistas previas. So dispoñible se se está usando PHP para xerar as vistas previas [Valor por defecto = PHP ImageCopyResampled]';
-$messages['help_resources_quota'] = 'Cuota de arquivos en bytes para as bitácoras (i.e. 5242880 Bytes = 5MB), ou use "0" para dar cuota ilimitada [Valor por defecto = 0]';
-$messages['help_resource_server_http_cache_enabled'] = 'Activa o soporte para a cabeceira HTTP "If-Modified-Since" cando se fagan peticions para arquivos. Active este parámetro para aforrar ancho de banda [Valor por defecto = Non]';
-$messages['help_resource_server_http_cache_lifetime'] = 'Tempo en milisegundos durante o cal o cliente Pode empregar a versión cacheada dun arquivo. So válido cando o parámetro anterior esté activado [Valor por defecto = 9999999]';
-$messages['same_as_image'] = 'O mesmo que a imaxe orixinal';
-// search
-$messages['help_search_engine_enabled'] = 'Activar o motor de búsqueda  [Valor por defecto = Sí]';
-$messages['help_search_in_custom_fields'] = 'Procurar tamen nos campos persoais [Valor por defecto = Sí]';
-$messages['help_search_in_comments'] = 'Procurar tamen nos comentarios [Valor por defecto = Sí]';
-
-// cleanup
-$messages['purge'] = 'Limpar';
-$messages['cleanup_spam'] = 'Limpar Spam';
-$messages['cleanup_spam_help'] = 'Esto eliminara físicamente da base de datos todos aqueles comentarios que foran marcados como spam polos usuarios. Non será posible recuperalos unha vez foran eliminados';
-$messages['spam_comments_purged_ok'] = 'Spam eliminado correctamente';
-$messages['cleanup_posts'] = 'Limpar Artigos';
-$messages['cleanup_posts_help'] = 'Esto eliminará físicamente da base de datos todos aqueles artigos que foran marcados como "Borrados". Non será posible recuperalos unha vez foran eliminados';
-$messages['posts_purged_ok'] = 'artigos eliminados correctamente';
-
-/// summary ///
-// front page
-$messages['summary'] = 'Portal';
-$messages['register'] = 'Rexistrarse';
-$messages['summary_welcome'] = 'Benvido!';
-$messages['summary_most_active_blogs'] = 'As Bitácoras máis activas';
-$messages['summary_most_commented_articles'] = 'Os máis comentados';
-$messages['summary_most_read_articles'] = 'Os mais lidos';
-$messages['password_forgotten'] = 'Olvidaches o password?';
-$messages['summary_newest_blogs'] = 'Bitácoras novas';
-$messages['summary_latest_posts'] = 'Os máis novos';
-$messages['summary_search_blogs'] = 'Pesquisas';
-
-// blog list
-$messages['updated'] = 'Actualizada';
-$messages['total_reads'] = 'total';
-
-// blog profile
-$messages['blog'] = 'Bitácora';
-$messages['latest_posts'] = 'Os máis novos';
-
-// registration
-$messages['register_step0_title'] = 'Termos de Uso';
-$messages['decline'] = 'Non estou de acordo';
-$messages['accept'] = 'Aceptar';
-$messages['read_service_agreement'] = 'Lea atentamente os térmos de uso e pulse o botón "Aceptar" se está de acordo';
-$messages['register_step1_title'] = 'Crear o usuario [1/4]';
-$messages['register_step1_help'] = 'Primeiro hai que crear un usuario para a bitácora. Este usuario será o propietario da bitácora e terá acceso a todas as suas funcionalidades';
-$messages['register_next'] = 'Seguinte';
-$messages['register_back'] = 'Atrás';
-$messages['register_step2_title'] = 'Crear a bitácora [2/4]';
-$messages['register_blog_name_help'] = 'Nome da bitácora';
-$messages['register_step3_title'] = 'Escolla unha plantilla [3/4]';
-$messages['step1'] = 'Paso 1';
-$messages['step2'] = 'Paso 2';
-$messages['step3'] = 'Paso 3';
-$messages['register_step3_help'] = 'Escolla unha das plantillas dispoñibles para a sua nova bitácora. Se máis tarde non lle gusta, sempre a pode Trocar';
-$messages['error_must_choose_template'] = 'Escolla unha plantilla';
-$messages['select_template'] = 'Seleccionar esta';
-$messages['register_step5_title'] = 'Felicidades! [4/4]';
-$messages['finish'] = 'Terminar';
-$messages['register_need_confirmation'] = 'Unha mensaxe incluindo o enlace para a sua confirmación foi enviado a sua enderezo de correo. En canto reciba a mensaxe, faga clic na direción para empezar a empregar a sua bitácora!';
-$messages['register_step5_help'] = 'Felicidades, a sua nova bitácora foi creada!';
-$messages['register_blog_link'] = 'Se quere, pode ir directamente a sua nova bitácora: <a href="%2$s">%1$s</a>';
-$messages['register_blog_admin_link'] = 'Ou se o desexa, pode empezar a engadir artigos a través da <a href="admin.php">interface de administración</a>';
-$messages['register_error'] = 'Houbo un erro durante o proceso';
-$messages['error_registration_disabled'] = 'Non se poden rexistrar bitácoras neste sitio';
-// registration article topic and text
-$messages['register_default_article_topic'] = 'Felicidades! Instalaches Lifetype en Galego';
-$messages['register_default_article_text'] = 'Se pode ler isto, a sua bitácora está lista para empezar a escribir. Traducción o galego de lifetype, realizada por Víctor Julio Quesada Varela, 2006. egalego at gmail.com, www.egalego.com';
-$messages['register_default_category'] = 'Xeral';
-// confirmation email
-$messages['register_confirmation_email_text'] = 'Visite o seguinte enlace para activar a sua nova bitácora:
-
-%s
-
-Que teña un bo día.';
-$messages['error_invalid_activation_code'] = 'O enlace de activación non e correcto';
-$messages['blog_activated_ok'] = 'Felicidades, a sua nova bitácora foi activada!';
-// forgot your password?
-$messages['reset_password'] = 'Trocar o password';
-$messages['reset_password_username_help'] = 'Nome do usuario do que quere cambia-lo password';
-$messages['reset_password_email_help'] = 'enderezo de correo que empregou para rexistrar este usuario';
-$messages['reset_password_help'] = 'Use este formulario para Trocar o password do seu usuario, en caso de que non o recorde. Por favor escriba o nome de usuario do que desexa Trocar o password, así como a enderezo de correo coa que se rexistrou este usuario';
-$messages['error_resetting_password'] = 'Houbo un erro cambiando o password do usuario. Comprobe os datos e volvao a intentar';
-$messages['reset_password_error_incorrect_email_address'] = 'A enderezo de correo non e correcta ou non e a enderezo que se usou para rexistrar este usuario';
-$messages['password_reset_message_sent_ok'] = 'Unha mensaxe de correo foi enviada a enderezo de correo. Por favor faga clic na enderezo incluida no  mensaxe para Trocar o password';
-$messages['error_incorrect_request'] = 'Os parámetros da enderezo non son correctos';
-$messages['change_password'] = 'Novo password';
-$messages['change_password_help'] = 'Por favor dun novo password e a continuación, confírmeo';
-$messages['new_password'] = 'Novo password';
-$messages['new_password_help'] = 'Escriba aquí o seu novo password';
-$messages['password_updated_ok'] = 'O Seu password foi cambiado correctamente!';
-
-// Suggested by BCSE, some useful messages that not available in official locale
-$messages['upgrade_information'] = 'This page looks plain and unstyled because you\'re using a non-standard compliant browser. To see it in its best form, please <a href="http://www.webstandards.org/upgrade/" title="The Web Standards Project\'s Browser Upgrade initiative">upgrade</a> to a browser that supports web standards. It\'s free and painless.';
-$messages['jump_to_navigation'] = 'Ir o menú';
-$messages['comment_email_never_display'] = 'O comentario será formateado automáticamente. A enderezo de correo non será amosada en público.';
-$messages['comment_html_allowed'] = '<acronym title="Hypertext Markup Language">HTML</acronym> allowed: &lt;<acronym title="Hyperlink">a</acronym> href=&quot;&quot; title=&quot;&quot; rel=&quot;&quot;&gt; &lt;<acronym title="Acronym Description">acronym</acronym> title=&quot;&quot;&gt; &lt;<acronym title="Quote">blockquote</acronym> cite=&quot;&quot;&gt; &lt;<acronym title="Strike">do</acronym>&gt; &lt;<acronym title="Italic">em</acronym>&gt; &lt;<acronym title="Underline">ins</acronym>&gt; &lt;<acronym title="Bold">strong</acronym>&gt;';
-$messages['trackback_uri'] = 'O URI <acronym title="Identificador de Recurso Uniforme (URI)">URI</acronym> para enviar retroenlaces a este artigo é: ';
-$messages['previous_post'] = 'Anterior';
-$messages['next_post'] = 'Seguinte';
-$messages['comment_default_title'] = '(Sen título)';
-$messages['guestbook'] = 'Libro de visitas';
-$messages['trackbacks'] = 'Retroenlaces';
-$messages['menu'] = 'Menú';
-$messages['albums'] = 'Albums';
-$messages['admin'] = 'Administración';
-$messages['xmlrpc_ping_ok'] = 'Ping XMLRPC enviado correctamente: ';
-$messages['error_sending_xmlrpc_ping'] = 'Houbo un erro enviando o ping XMLRPC a: ';
-$messages['error_sending_xmlrpc_ping_message'] = 'Houbo un erro enviando o ping XMLRPC: ';
-
-// textos novos para LT 1.1
-
-$messages['error_incorrect_trackback_id'] = 'o identificador do retroenlace no e válido';
-$messages['error_marking_trackback_as_spam'] = 'Houbo un erro marcando o retroenlace como spam';
-$messages['trackback_marked_as_spam_ok'] = 'o retroenlace foi marcado como spam';
-$messages['error_marking_trackback_as_nonspam'] = 'Houbo un erro marcando o retroenlace como non spam';
-$messages['trackback_marked_as_nonspam_ok'] = 'o retroenlace foi marcado como non spam';
-$messages['upload_here'] = 'Subir aquí';
-$messages['reply_string'] = 'Re: ';
-$messages['cleanup_users'] = 'Limpeza de usuarios';
-$messages['cleanup_users_help'] = 'Esta función eliminará todolos usuarios que foran marcados como "Borrados", incluindo calquera
-bitácora que pertenza o usuario e todo o contido da bitácora. Se o usuario ten acceso a outra bitácora, todolos artigos publicados polo usuario tamen serán eliminados. Unha vez o usuario e os seus datos foron eliminados non será posible recuperalos.';
-$messages['users_purged_ok'] = 'Limpeza de usuarios executada correctamente';
-$messages['cleanup_blogs'] = 'Limpeza de blogs';
-$messages['cleanup_blogs_help'] = 'Esta función eliminará todalas bitácoras que foran marcadas como "Borradas" por un administrador, incluindo todo o contido da bitácora. Unha vez a bitácora e os seus datos foron eliminados non será posible recuperalos.';
-$messages['blogs_purged_ok'] = 'Limpeza de blogs executada correctamente';
-$messages['help_use_http_accept_language_detection'] = 'Activa a detección da lingua preferida polo usuario baseandose na información que envia o navigador en cada petición';
-$messages['error_invalid_blog_category'] = 'Categoría de bitácora incorrecta';
-$messages['error_adding_blog_category'] = 'Houbo un erro engadindo a categoría de bitácora';
-$messages['newBlogCategory'] = 'Nova categoría de bitácoras';
-$messages['editBlogCategories'] = 'Categoría de bitácoras';
-$messages['blog_category_added_ok'] = 'Categoría de bitácoras engadida correctamente';
-$messages['error_blog_category_has_blogs'] = 'Hai algunhas bitácoras asignadas a categoría de bitácoras "%s. Por favor modifique primeiro as bitácoras e intenteo de novo.';
-$messages['error_deleting_blog_category'] = 'Houbo un erro borrando a categoría de bitácoras "%s"';
-$messages['blog_category_deleted_ok'] = 'a categoría de bitácoras "%s" foi borrada correctamente';
-$messages['blog_categories_deleted_ok'] = '%s categorías de blog foron eliminadas correctamente';
-$messages['error_deleting_blog_category2'] = 'Houbo un erro eliminando a categoría de bitácora co identificador  %s';
-$messages['blog_category'] = 'Categoría de bitácoras';
-$messages['blog_category_help'] = 'Categoría de bitácoras a que esta bitácora pertence';
-$messages['help_use_captcha_auth'] = 'Requerir a inserción dun código numérico mostrado nunha imaxe o iniciar o proceso de rexistro dunha Nova bitácora e así evitar rexistros de novos usuarios mediante scripts';
-$messages['help_skip_dashboard'] = 'Desactivar a paxina de "perspectiva" como paxina amosada o iniciar Unha sesión, e no seu lugar enviar o usuario o seu primeiro blog';
-$messages['manageGlobalArticleCategory'] = 'Categorías Globais';
-$messages['newGlobalArticleCategory'] = 'Nova categoría Global';
-$messages['editGlobalArticleCategories'] = 'Categorías Globais';
-$messages['global_category_name_help'] = 'Nome da Nova categoría global';
-$messages['global_category_description_help'] = 'Descripción da Nova categoría global';
-$messages['error_incorrect_global_category_id'] = 'Categoría global incorrecta';
-$messages['global_category_deleted_ok'] = 'a categoría global "%s" foi eliminada correctamente';
-$messages['global_category_added_ok'] = 'a categoría global "%s" foi engadida correctamente';
-$messages['error_deleting_global_category2'] = 'Houbo un erro eliminando a categoría global co identificador  %s';
-
-$messages['help_page_suffix_format'] = 'Sufixo que se engadira as URLs das seccions que soportan paxinacion [ Valor por defecto = /page/{page} ]';
-
-$messages['help_final_size_thumbnail_width'] = 'Anchura final en píxels das imaxes subidas por usuarios. Deixar este valor como 0 para empregar o tamaño real da imaxe [ Valor por defecto = 0 ]';
-$messages['help_final_size_thumbnail_height'] = 'Altura final en píxels das imaxes subidas por usuarios. Deixar este valor como 0 para empregar o tamaño real da imaxe [ Valor por defecto = 0 ]';
-$messages['error_comment_too_big'] = 'o comentario e demasiado longo';
-$messages['error_you_have_been_blocked'] = 'Proceso interrumpido: a petición non foi procesada.';
-$messages['created'] = 'Creado';
-$messages['view'] = 'Ver';
-$messages['editUser'] = 'Editar Usuario';
-$messages['help_urlize_word_separator'] = 'Carácter que será usado como separador de verbas en lugar do espacio en branco nas direccions xeradas por LifeType. Este parámetro tamen afecta os nomes de host que serán xerados cando o soporte para subdominios está activado [ Valor por defecto = _ ]';
-$messages['help_summary_template_cache_lifetime'] = 'Duración en segundos das paxinas prexeradas e gardadas na caché da portada. Se se usa un valor maior que 0, a versión dispoñible de cada paxina na caché será usada durante tantos segundos en lugar de rexerala cada vez que se produza un cambio nos datos. Active esta opción para mellorar o rendemento da paxina de portada. [ Valor por defecto = 0 ]';
-$messages['register_default_album_name'] = 'Xeral';
-$messages['register_default_album_description'] = 'Suba aquí as suas imaxes e ficheiros';
-$messages['show_in_summary'] = 'Amosar na portada';
-$messages['show_in_summary_help'] = 'Amosar esta bitácora na portada';
-
-$messages['saving_message'] = 'Gardando...';
-$messages['show_option_panel'] = 'Amosar Opcions';
-$messages['hide_option_panel'] = 'Ocultar Opcions';
-
-$messages['quick_launches'] = 'Acceso rápido';
-
-$messages['confirmation_message_resent_ok'] = 'a mensaxe de confirmación foi reenviada correctamente.';
-
-$messages['goto_blog_page'] = 'Ir a %s';
-
-$messages['help_num_blogs_per_user'] = 'Número máximo de blogs que cada usuario pode crear mediante o enlace dispoñible na paxina de perspectiva. Se o valor e 0, o link non aparecerá [ Valor por defecto = 0 ]';
-
-$messages['massive_change_option'] = 'Edición múltiple';
-$messages['show_massive_change_option'] = 'Amosar edición múltiple';
-$messages['hide_massive_change_option'] = 'Ocultar edición múltiple';
-$messages['change_status'] = 'Modificar estado';
-$messages['change_category'] = 'Modificar categoría';
-
-$messages['error_post_status'] = 'Escolla un estado';
-$messages['error_comment_status'] = 'Escolla un estado';
-$messages['admin_mode'] = 'Modo Administrador';
-$messages['administrate_user_blog'] = 'Administrar esta bitácora';
-$messages['trackbacks_updated_ok'] = '%s retroenlaces actualizados correctamente';
-$messages['trackback_updated_ok'] = 'Retroenlace modificado correctamente';
-$messages['error_trackback_status'] = 'Escolla un estado válido';
-$messages['error_incorrect_user'] = 'o usuario non e válido';
-$messages['select'] = 'Seleccionar';
-$messages['remove_selected'] = 'Eliminar selección';
-
-$messages['notification_subject'] = 'mensaxe dende LifeType';
-$messages['error_no_trackback_links_sent'] = 'Non se enviou ningún retroenlace';
-
-$messages['logout_destination_url'] = 'enderezo onde os usuarios serán redirixidos o sair da interface de administración de LifeType. Pode por exemplo empregar a enderezo da paxina principal do seu servicio [ Valor por defecto = nada ]';
-
-$messages['help_http_cache_lifetime'] = 'Tempo de vida en segundos da caché do navigador. Informaráse o navigador dos usuarios sobre canto Tempo deben empregar a versión actual da paxina en lugar de Obrigar o servidor a enviar a mesma versión cada vez. Este parámetro axuda a aforrar ancho de banda e a alixeirar a carga no servidor, ainda que os usuarios poderian recibir versions desfasadas das paxinas en caso de que este valor sexa demasiado alto. [ Valor por defecto = 1800 ]';
-
-$messages['trackbacks_no_trackback'] = 'Non se puido enviar un retroenlace a seguinte enderezo: ';
-
-$messages['error_comment_spam_throw_away'] = 'o filtro anti-spam rexeitou a sua mensaxe.';
-$messages['error_comment_spam_keep'] = 'o filtro anti-spam marcou o seu comentario como dudoso e deberá ser revisado polo autor desta bitácora.';
-
-$messages['blog_categories'] = 'Categorías de Bitácoras';
-$messages['global_article_categories'] = 'Categorías Globais';
-
-$messages['help_force_posturl_unique'] = 'Obrigar que todolos enlaces a artigos sexan únicos. Este parámetro so e necesario se o formato das direccions cambiou e non está incluindo a data no seu novo formato';
-
-$messages['default_send_notification'] = 'Enviar notificación';
-
-$messages['enable_pull_down_menu'] = 'Menú despregable';
-$messages['enable_pull_down_menu_help'] = 'Activar ou desactivar o menú despregable';
-
-$messages['change_album'] = 'Cambiar álbum';
-
-$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Parece que a sua sesión anterior rematou sen grabar o seu novo artigo. Se e así, <a href="#" onclick="restoreAutoSave();">faga click aquí para recuperalo</a> ou se o prefire, <a href="#" onclick="eraseAutoSave();">faga click aquí para borralo</a>.</p>';
-
-$messages['check_username'] = 'Nome de usuario';
-$messages['check_username_ok'] = 'o Nome de usuario está dispoñible!';
-$messages['error_username_exist'] = 'o Nome de usuario non está dispoñible, intenteo con outro.';
-
-$messages['error_rule_email_dns_server_temp_fail'] = 'Problema temporal - intenteo mais tarde.';
-$messages['error_rule_email_dns_server_unreachable'] = 'Non se puido conectar co servidor de correo.';
-$messages['error_rule_email_dns_not_permitted'] = 'o enderezo de correo non e válido.';
-
-$messages['blog_users_help'] = 'Usuarios que poden acceder a esta bitácora.';
-
-$messages['summary_welcome_paragraph'] = 'inclua aquí o mensaxe que aparecerá na configuración por defecto da portada do seu servicio. Pode cambiar este mensaxe no ficheiro locales/locale_gl_ES.php, ou ben eliminalo por completo editando os ficheiros .template dispoñibles no directorio templates/summary/';
-
-$messages['first_day_of_week'] = 1;
-$messages['first_day_of_week_label'] = 'primeiro día da semana';
-$messages['first_day_of_week_help'] = 'primeiro día da semana no calendario';
-
-$messages['help_subdomains_base_url'] = 'cando o soporte para subdominios está activado, se usa URL como a base para construir o resto de URLs en lugar de base_url. Use {blogname} para incluir o Nome da bitácora, {username} para incluir o Nome do usuario a quen a bitácora pertence, e {blogdomain} para permitir os usuarios introducir o seu propio subdominio [ Valor por defecto = nada ]';
-
-$messages['registration_default_subject'] = 'Confirmación de rexistro de LifeType';
-
-$messages['error_invalid_subdomain'] = 'o subdominio non e válido ou xa se está usando';
-
-$messages['register_blog_domain_help'] = 'Nome e subdominio que desexa empregar para a sua Nova bitácora';
-$messages['domain'] = 'Dominio';
-$messages['help_subdomains_available_domains'] = 'Introduza Unha lista cos nomes dos dominios dispoñibles, separada por espacios en branco. Os usuarios poderan poderan calquera destos mediante Unha lista despregable, e poderan introducir calquera subdominio que desexen. Esta opción so estará dispoñible se o soporte para subdominios está activado e incluiu {blogdomain} como parte do parámetro subdomains_base_url. Tamen pode empregar \'?\' para permitir calquera dominio e subdominio [ Valor por defecto = nada ]';
-
-$messages['subdomains_any_domain'] = '<- o soporte para múltiple dominios está activado, Introduza o Nome do dominio completo';
-$messages['error_updating_blog_subdomain'] = 'Houbo un erro actualizando o subdominio, comprobe os datos e intenteo de novo.';
-$messages['error_updating_blog_main_domain'] = 'Houbo un erro actualizando o dominio principal. Probablemente o administrador configurara algo incorrectamente';
-
-$messages['monthsshort'] = Array( 'Xan', 'Feb', 'Mar', 'Abr', 'Mai', 'Xun', 'Xul', 'Ago', 'Set', 'Out', 'Nov', 'Dec' );
-$messages['weekdaysshort'] = Array( 'Lun', 'Mar', 'Mér', 'Xov', 'Ven', 'Sáb', 'Dom' );
-
-$messages['search_type'] = 'Procurar en';
-$messages['posts'] = 'Artigos';
-$messages['blogs'] = 'Bitácoras';
-$messages['resources'] = 'Ficheiros';
-$messages['error_incorrect_username'] = 'O Nome de usuario non e correcto, ou xa está asignado ou e demasiado longo (máximo 15 carácteres)';
-$messages['upload_in_progress'] = 'Enviando datos. Agarde por favor...';
-
-$messages['auth_img'] = 'Código de seguridade';
-$messages['auth_img_help'] = 'Por favor Introduza o código que aparece na imaxe.';
-
-$messages['global_category'] = 'Categoría global';
-$messages['global_article_category_help'] = 'Categoría global desta comunidade para este artigo';
-
-$messages['password_reset_subject'] = 'Cambio de password en LifeType';
-?>
\ No newline at end of file

Modified: plog/trunk/templates/LifeType/en_UK/strings.txt
===================================================================
--- plog/trunk/templates/LifeType/en_UK/strings.txt	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/LifeType/en_UK/strings.txt	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,7 +1,7 @@
 ltTagline = """LifeType is an open-source blogging platform with support for multiple blogs and users
 in a single installation."""
 
-frontPageLeft = """The latest stable version of LifeType is <b>1.2.1</b>. Click the link below to download.<br/>
+frontPageLeft = """The latest stable version of LifeType is <b>1.2.2</b>. Click the link below to download.<br/>
 Take a look at the <a href="http://www.lifetype.net/blog.php/lifetype-development-journal/page/downloads">Downloads</a> section for more download packages,
 additional template sets and plugins."""
 
@@ -220,18 +220,18 @@
 
 <pre>
 plog/
-     plog/
-          branches/
-          tags/
-          trunk/
-     plugins/
-             branches/
-             tags/
-             trunk/
-     templates/
-               branches/
-               tags/
-               trunk/
+plog/
+branches/
+tags/
+trunk/
+plugins/
+branches/
+tags/
+trunk/
+templates/
+branches/
+tags/
+trunk/
 </pre>
 
 <ul>
@@ -253,7 +253,7 @@
 
 <p>If you wish to check out a certain branch or tag, replace /trunk with /branch/branch-name or /tags/tag-name:</p>
 <pre>
-svn checkout http://devel.lifetype.net/svn/plog/plog/tags/lifetype-1.2.1
+svn checkout http://devel.lifetype.net/svn/plog/plog/tags/lifetype-1.2.2
 </pre>
 
 
@@ -299,9 +299,9 @@
 These are the official downloadable packages containing the most recent stable version. Packages
 are available compressed in either .tar.gz or .zip, and are provided via SourceForge.net.
 <br/><br/>
-<a href="http://prdownloads.sourceforge.net/lifetype/lifetype-1.2.1.tar.gz?download">LifeType 1.2.1 (tar.gz format)</a><br/>
-<a href="http://prdownloads.sourceforge.net/lifetype/lifetype-1.2.1.tar.bz2?download">LifeType 1.2.1 (tar.bz2 format)</a><br/>
-<a href="http://prdownloads.sourceforge.net/lifetype/lifetype-1.2.1.zip?download">LifeType 1.2.1 (zip format)</a><br/>
+<a href="http://prdownloads.sourceforge.net/lifetype/lifetype-1.2.2.tar.gz?download">LifeType 1.2.2 (tar.gz format)</a><br/>
+<a href="http://prdownloads.sourceforge.net/lifetype/lifetype-1.2.2.tar.bz2?download">LifeType 1.2.2 (tar.bz2 format)</a><br/>
+<a href="http://prdownloads.sourceforge.net/lifetype/lifetype-1.2.2.zip?download">LifeType 1.2.2 (zip format)</a><br/>
 </p>
 
 <h2>Plugins</h2>
@@ -471,12 +471,12 @@
 </p>
 <p>
 LifeType 1.0 was released in April 2005, with LifeType 1.0.6 being the last maintenance release of the 1.0.x
-branch in June 2006. LifeType 1.0 marked the beginning of a new era for LifeType, with a modernized user interface and plenty of
-exciting features for bloggers. Lifetype 1.2 was released on the 20th
-of March 2007 and brought a new fine-grained permission framework,
-performance improvements when serving files and plenty of other
-performance improvements. The current bugfix release of the 1.2 branch
-is LifeType 1.2.1, released in April 2007.
+branch in June 2006. LifeType 1.0 marked the beginning of a new era for LifeType, with a modernized user interface and plenty of
+exciting features for bloggers. Lifetype 1.2 was released on the 20th
+of March 2007 and brought a new fine-grained permission framework,
+performance improvements when serving files and plenty of other
+performance improvements. The current bugfix release of the 1.2 branch
+is LifeType 1.2.2, released in May 2007.
 </p>
 
 <h4>Relationship between LifeType and pLog</h4>
@@ -552,4 +552,4 @@
 <li>German enquiries: <a href="mailto:de at lifetype.net">de at lifetype.net</a></li>
 <li>Taiwan enquiries: <a href="mailto:tw at lifetype.net">tw at lifetype.net</a></li>
 </ul>
-"""
+"""
\ No newline at end of file

Modified: plog/trunk/templates/LifeType/footermain.template
===================================================================
--- plog/trunk/templates/LifeType/footermain.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/LifeType/footermain.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -3,7 +3,7 @@
 </tr>
 
 <tr>
-<td width="750" height="1" bgcolor="#E5E5E5" colspan="3"><img src="images/spacer.gif" alt="" style="border:0px;width:1px;height:1px"/></td>
+<td width="750" height="1" bgcolor="#E5E5E5" colspan="3"><img src="{$url->getTemplateFile("images/spacer.gif")}" alt="" style="border:0px;width:1px;height:1px"/></td>
 </tr>
 
 <tr>

Modified: plog/trunk/templates/admin/addbloguser.template
===================================================================
--- plog/trunk/templates/admin/addbloguser.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/addbloguser.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -25,7 +25,7 @@
      <div class="field">
        <label for="sendNotification">{$locale->tr("send_notification")}</label>      
        <div class="formHelp">
-	    <input class="checkbox" type="checkbox" id="sendNotification" name="sendNotification" value="{$sendNotification}" />	   
+	    <input class="checkbox" type="checkbox" id="sendNotification" name="sendNotification" value="1" {if isset($sendNotification)}checked="checked"{/if} />	   
 	    {$locale->tr("send_user_notification_help")}
 	  </div>
      </div>
@@ -46,7 +46,7 @@
            {if $permission->getName() == "blog_access"}
              {** the blog_access permission will always be checked by default for new users, in order not to cause confusion as
 	             this permissions is now needed for even accessing the blog **}
-		     <input type="hidden" name="perm[{$permission->getId()}]" value="{$permission->getId()}" checked="checked" />
+		     <input type="hidden" name="perm[{$permission->getId()}]" value="{$permission->getId()}" />
            {else}
      	     <input type="checkbox" class="checkbox" name="perm[{$permission->getId()}]" value="{$permission->getId()}" {if $perm[$permId]==$permission->getId()}checked="checked"{/if} />
      	     {$locale->tr($permission->getDescription())}<br/>

Modified: plog/trunk/templates/admin/blogsettings.template
===================================================================
--- plog/trunk/templates/admin/blogsettings.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/blogsettings.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -189,6 +189,15 @@
     </div>
 
     <div class="field">
+      <label for="blogArticlesOrder">{$locale->tr("articles_order")}</label>
+      <div class="formHelp">{$locale->tr("articles_order_help")}</div>
+      <select name="blogArticlesOrder" id="blogArticlesOrder">
+        <option value="1" {if $blogArticlesOrder == 1 } selected="selected" {/if}>{$locale->tr("oldest_first")}</option>
+        <option value="2" {if $blogArticlesOrder == 2 } selected="selected" {/if}>{$locale->tr("newest_first")}</option>
+      </select>
+    </div>
+
+    <div class="field">
      <label for="blogCommentsOrder">{$locale->tr("comments_order")}</label>
      <div class="formHelp">{$locale->tr("comments_order_help")}</div>
      <select name="blogCommentsOrder" id="blogCommentsOrder">
@@ -225,48 +234,131 @@
     <div class="field">
      <label for="blogTimeOffset">{$locale->tr("time_offset")}</label>
      <div class="formHelp">{$locale->tr("time_offset_help")}</div>
+      {assign var="timeNow" value=$smarty.now}
       <select name="blogTimeOffset" id="blogTimeOffset">
-       <option {if $blogTimeOffset == -20} selected="selected"{/if} value="-20">-20 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -19} selected="selected"{/if} value="-19">-19 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -18} selected="selected"{/if} value="-18">-18 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -17} selected="selected"{/if} value="-17">-17 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -16} selected="selected"{/if} value="-16">-16 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -15} selected="selected"{/if} value="-15">-15 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -14} selected="selected"{/if} value="-14">-14 {$locale->tr("hours")}</option>	   	   	   	   
-       <option {if $blogTimeOffset == -13} selected="selected"{/if} value="-13">-13 {$locale->tr("hours")}</option>	  
-       <option {if $blogTimeOffset == -12} selected="selected"{/if} value="-12">-12 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -11} selected="selected"{/if}value="-11">-11 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -10} selected="selected"{/if}value="-10">-10 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -9} selected="selected"{/if}value="-9">-9 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -8} selected="selected"{/if}value="-8">-8 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -7} selected="selected"{/if}value="-7">-7 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -6} selected="selected"{/if}value="-6">-6 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -5} selected="selected"{/if}value="-5">-5 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -4} selected="selected"{/if}value="-4">-4 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -3} selected="selected"{/if}value="-3">-3 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -2} selected="selected"{/if}value="-2">-2 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == -1} selected="selected"{/if}value="-1">-1 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 0} selected="selected"{/if}value="0">0 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 1} selected="selected"{/if}value="1">+1 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 2} selected="selected"{/if}value="2">+2 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 3} selected="selected"{/if}value="3">+3 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 4} selected="selected"{/if}value="4">+4 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 5} selected="selected"{/if}value="5">+5 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 6} selected="selected"{/if}value="6">+6 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 7} selected="selected"{/if}value="7">+7 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 8} selected="selected"{/if}value="8">+8 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 9} selected="selected"{/if}value="9">+9 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 10} selected="selected"{/if}value="10">+10 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 11} selected="selected"{/if}value="11">+11 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 12} selected="selected"{/if}value="12">+12 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 13} selected="selected"{/if} value="13">+13 {$locale->tr("hours")}</option>	  
-       <option {if $blogTimeOffset == 14} selected="selected"{/if} value="14">+14 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 15} selected="selected"{/if} value="15">+15 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 16} selected="selected"{/if} value="16">+16 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 17} selected="selected"{/if} value="17">+17 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 18} selected="selected"{/if} value="18">+18 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 19} selected="selected"{/if} value="19">+19 {$locale->tr("hours")}</option>
-       <option {if $blogTimeOffset == 20} selected="selected"{/if} value="20">+20 {$locale->tr("hours")}</option>	   
+       <option {if $blogTimeOffset == -20} selected="selected"{/if}
+           value="-20">-20 {$locale->tr("hours")} ({$timeNow-20*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -19} selected="selected"{/if} 
+           value="-19">-19 {$locale->tr("hours")} ({$timeNow-19*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -18} selected="selected"{/if} 
+           value="-18">-18 {$locale->tr("hours")} ({$timeNow-18*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -17} selected="selected"{/if} 
+           value="-17">-17 {$locale->tr("hours")} ({$timeNow-17*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -16} selected="selected"{/if} 
+           value="-16">-16 {$locale->tr("hours")} ({$timeNow-16*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -15} selected="selected"{/if} 
+           value="-15">-15 {$locale->tr("hours")} ({$timeNow-15*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -14} selected="selected"{/if} 
+           value="-14">-14 {$locale->tr("hours")} ({$timeNow-14*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -13} selected="selected"{/if} 
+           value="-13">-13 {$locale->tr("hours")} ({$timeNow-13*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -12} selected="selected"{/if} 
+           value="-12">-12 {$locale->tr("hours")} ({$timeNow-12*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -11} selected="selected"{/if}
+           value="-11">-11 {$locale->tr("hours")} ({$timeNow-11*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -10} selected="selected"{/if}
+           value="-10">-10 {$locale->tr("hours")} ({$timeNow-10*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -9} selected="selected"{/if}
+           value="-9">-9 {$locale->tr("hours")} ({$timeNow-9*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -8} selected="selected"{/if}
+           value="-8">-8 {$locale->tr("hours")} ({$timeNow-8*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -7} selected="selected"{/if}
+           value="-7">-7 {$locale->tr("hours")} ({$timeNow-7*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -6} selected="selected"{/if}
+           value="-6">-6 {$locale->tr("hours")} ({$timeNow-6*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -5} selected="selected"{/if}
+           value="-5">-5 {$locale->tr("hours")} ({$timeNow-5*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -4} selected="selected"{/if}
+           value="-4">-4 {$locale->tr("hours")} ({$timeNow-4*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -3} selected="selected"{/if}
+           value="-3">-3 {$locale->tr("hours")} ({$timeNow-3*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -2} selected="selected"{/if}
+           value="-2">-2 {$locale->tr("hours")} ({$timeNow-2*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == -1} selected="selected"{/if}
+           value="-1">-1 {$locale->tr("hours")} ({$timeNow-1*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 0} selected="selected"{/if}
+           value="0">0 {$locale->tr("hours")} ({$timeNow|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 1} selected="selected"{/if}
+           value="1">+1 {$locale->tr("hours")} ({$timeNow+1*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 2} selected="selected"{/if}
+           value="2">+2 {$locale->tr("hours")} ({$timeNow+2*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 3} selected="selected"{/if}
+           value="3">+3 {$locale->tr("hours")} ({$timeNow+3*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 4} selected="selected"{/if}
+           value="4">+4 {$locale->tr("hours")} ({$timeNow+4*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 5} selected="selected"{/if}
+           value="5">+5 {$locale->tr("hours")} ({$timeNow+5*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 6} selected="selected"{/if}
+           value="6">+6 {$locale->tr("hours")} ({$timeNow+6*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 7} selected="selected"{/if}
+           value="7">+7 {$locale->tr("hours")} ({$timeNow+7*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 8} selected="selected"{/if}
+           value="8">+8 {$locale->tr("hours")} ({$timeNow+8*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 9} selected="selected"{/if}
+           value="9">+9 {$locale->tr("hours")} ({$timeNow+9*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 10} selected="selected"{/if}
+           value="10">+10 {$locale->tr("hours")} ({$timeNow+10*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 11} selected="selected"{/if}
+           value="11">+11 {$locale->tr("hours")} ({$timeNow+11*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 12} selected="selected"{/if}
+           value="12">+12 {$locale->tr("hours")} ({$timeNow+12*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 13} selected="selected"{/if} 
+           value="13">+13 {$locale->tr("hours")} ({$timeNow+13*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 14} selected="selected"{/if} 
+           value="14">+14 {$locale->tr("hours")} ({$timeNow+14*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 15} selected="selected"{/if} 
+           value="15">+15 {$locale->tr("hours")} ({$timeNow+15*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 16} selected="selected"{/if} 
+           value="16">+16 {$locale->tr("hours")} ({$timeNow+16*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 17} selected="selected"{/if} 
+           value="17">+17 {$locale->tr("hours")} ({$timeNow+17*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 18} selected="selected"{/if} 
+           value="18">+18 {$locale->tr("hours")} ({$timeNow+18*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 19} selected="selected"{/if} 
+           value="19">+19 {$locale->tr("hours")} ({$timeNow+19*3600|date_format:"%H:%M"})
+       </option>
+       <option {if $blogTimeOffset == 20} selected="selected"{/if} 
+           value="20">+20 {$locale->tr("hours")} ({$timeNow+20*3600|date_format:"%H:%M"})
+       </option>
       </select>
       {** include file="$admintemplatepath/validate.template" field=blogTimeOffset message=$locale->tr("error_incorrect_time_offset") **}
 	 </div>  

Deleted: plog/trunk/templates/admin/calendarstuff.template
===================================================================
--- plog/trunk/templates/admin/calendarstuff.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/calendarstuff.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,17 +0,0 @@
-// init the array with the days of the month for every month
-  var days = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
-
- ///
- /// customization of the javascript calendar
- ///
- var MonthName = new Array();
- {foreach name=monthLoop from=$months item=monthName}
-  MonthName[{$smarty.foreach.monthLoop.iteration}-1] = '{$monthName}';
- {/foreach}
-
- var WeekDayName = new Array();
- {foreach name=daysLoop from=$days item=dayName}
-  WeekDayName[{$smarty.foreach.daysLoop.iteration}-1] = '{$dayName}';
- {/foreach}
-
- var WindowTitle = "{$locale->tr("calendar")}";
\ No newline at end of file

Modified: plog/trunk/templates/admin/chooser/resourcelist.template
===================================================================
--- plog/trunk/templates/admin/chooser/resourcelist.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/chooser/resourcelist.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -142,6 +142,14 @@
       <a href="javascript:addResourceLink('{$resourceId}','{$resourceMediumSizePreviewLink}','{$resourceDownloadLink}','{$resourceName|escape:"javascript"}','{$resourceDesc|escape:"javascript"}','{$resourceType}','{$resourceMimeType}');">{$locale->tr("add_resource_medium")}</a><br/>
     {/if}
   {/if}
+  {if $resource->isSound()}
+      <a href="javascript:insertMediaPlayer('{$resourceDownloadLink}','{$htmlarea}','20','300')">{$locale->tr("insert_player")}</a>
+  {elseif $resource->isVideo() && $resource->getFileExtension(true) == "flv"}
+      {assign var=metadata value=$resource->getMetadataReader()}
+      {assign var=height value=$metadata->getHeight()}
+      {assign var=width value=$metadata->getWidth()}
+      <a href="javascript:insertMediaPlayer('{$resourceDownloadLink}','{$htmlarea}','{$height}','{$width}')">{$locale->tr("insert_player")}</a>
+  {/if}
  </td>
 {/foreach}
 </tbody>

Modified: plog/trunk/templates/admin/editpost.template
===================================================================
--- plog/trunk/templates/admin/editpost.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/editpost.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -1,10 +1,9 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editPosts title=$locale->tr("editPost")}
-<script type="text/javascript" src="js/calendar/datetimepicker.js"></script>
-<script type="text/javascript">
- // define the first day of the week according to the locale settings  
- MondayFirstDay = ( {$locale->firstDayOfWeek()} == 1);
-</script>
+<link rel="stylesheet" type="text/css" media="all" href="js/jscalendar/calendar-win2k-cold-1.css" title="win2k-cold-1" />
+<script type="text/javascript" src="js/jscalendar/calendar_stripped.js"></script>
+<script type="text/javascript" src="js/jscalendar/lang/calendar-en.js"></script>
+<script type="text/javascript" src="js/jscalendar/calendar-setup_stripped.js"></script>
 <script type="text/javascript" src="js/ui/plogui.js"></script>
 {assign var=htmlarea value=$blogsettings->getValue("htmlarea_enabled")}
  {if $htmlarea}
@@ -20,11 +19,8 @@
   var htmlAreaEnabled = {if $htmlarea==0 || !$htmlarea}false{else}true{/if};
   var msgSaving = "{$locale->tr("saving_message")}";  
   var preview = false;
-    
-  {include file="$admintemplatepath/calendarstuff.template"}
 
 {literal} 
-
 function selectOperation( t )
 {
 	if( preview ) {	
@@ -87,8 +83,25 @@
 		 <span class="required">*</span>
 		 <div class="formHelp">{$locale->tr("post_date_help")}</div>
 		 <input name="postDateTime" id="postDateTime" class="dateTime" readonly="true" type="text" size="16" value="{$postDay}/{$postMonth}/{$postYear} {$postHour}:{$postMinutes}" style="margin-bottom: 4px;" />
-        <a href="javascript:NewCal('postDateTime','ddmmyyyy',true,24);"><img src="imgs/admin/cal.jpg" alt="{$locale->tr("pick_date")}" style="border:0px;width: 16px; height: 14px; padding: 0;" /></a>	     
+         <img src="imgs/admin/cal.jpg" id="postDateTimeSelector" alt="{$locale->tr("date")}" style="cursor: pointer; border: 0px; width: 16px; height: 14px; padding: 0;" />
 	   </div>
+
+	   <script type="text/javascript">
+	   var MondayFirstDay = ( {$locale->firstDayOfWeek()} == 1);
+       {literal}
+	       Calendar.setup({
+	           inputField  : "postDateTime",
+	           ifFormat    : "%d/%m/%Y %H:%M",
+	           button      : "postDateTimeSelector",
+	           showsTime   : true,
+	           timeFormat  : "24",
+	           electric    : false,
+	           align       : "Bl",
+	           firstDay    : MondayFirstDay,
+	           singleClick : true
+	       });
+	   {/literal}
+	   </script>
 	   
 	   <!-- date custom fields -->
 	   {include file="$admintemplatepath/newpost_customfields.template" type=4 fields=$customfields}	   

Modified: plog/trunk/templates/admin/globalsettings_security.template
===================================================================
--- plog/trunk/templates/admin/globalsettings_security.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/globalsettings_security.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -12,4 +12,11 @@
     <div class="formHelp">{$locale->tr("help_maximum_comment_size")}</div>	
     <input style="width:100%" type="text" id="config[maximum_comment_size]" name="config[maximum_comment_size]" value="{$maximum_comment_size}"/>
    </div>
+   <!-- allow javascript blocks in posts -->
+   <div class="field">
+    <label for="config[allow_javascript_blocks_in_posts]">allow_javascript_blocks_in_posts</label>
+    <div class="formHelp">{$locale->tr("help_allow_javascript_blocks_in_posts")}</div>	
+    <input class="radio" type="radio" id="config[allow_javascript_blocks_in_posts]" name="config[allow_javascript_blocks_in_posts]" value="1" {if $allow_javascript_blocks_in_posts == 1 } checked="checked" {/if} />{$locale->tr("yes")}
+    <input class="radio" type="radio" id="config[allow_javascript_blocks_in_posts]" name="config[allow_javascript_blocks_in_posts]" value="0" {if $allow_javascript_blocks_in_posts == 0 } checked="checked" {/if} />{$locale->tr("no")}
+   </div>
 </div>
\ No newline at end of file

Modified: plog/trunk/templates/admin/menus.xml
===================================================================
--- plog/trunk/templates/admin/menus.xml	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/menus.xml	2007-06-05 13:51:03 UTC (rev 5488)
@@ -88,8 +88,9 @@
 		  <pluginCenter url="?op=pluginCenter" admin="1" andPerms="view_plugins"/>
 		  <pluginSettings url="?op=pluginSettings" admin="1" andPerms="update_plugin_settings"/>		
 		</Plugins>
-		<Miscellaneous ignoreBreadCrums="1" admin="1" orPerms="purge_data">
+		<Miscellaneous ignoreBreadCrums="1" admin="1" orPerms="purge_data,view_global_settings">
 			<cleanUp url="?op=cleanUp" admin="1" andPerms="purge_data"/>
+			<Versions url="?op=Versions" admin="1" andPerms="view_global_settings" />
 		</Miscellaneous>
 	</adminSettings>
 	<Logout url="?op=Logout" /> 

Modified: plog/trunk/templates/admin/newpost.template
===================================================================
--- plog/trunk/templates/admin/newpost.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/newpost.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -2,11 +2,10 @@
 {include file="$admintemplatepath/navigation.template" showOpt=newPost title=$locale->tr("newPost")}
 {assign var=htmlarea value=$blogsettings->getValue("htmlarea_enabled")}
  <script type="text/javascript" src="js/ui/plogui.js"></script>
- <script type="text/javascript" src="js/calendar/datetimepicker.js"></script>
- <script type="text/javascript">
-  // define the first day of the week according to the locale settings  
-  MondayFirstDay = ( {$locale->firstDayOfWeek()} == 1);
- </script>
+ <link rel="stylesheet" type="text/css" media="all" href="js/jscalendar/calendar-win2k-cold-1.css" title="win2k-cold-1" />
+ <script type="text/javascript" src="js/jscalendar/calendar_stripped.js"></script>
+ <script type="text/javascript" src="js/jscalendar/lang/calendar-en.js"></script>
+ <script type="text/javascript" src="js/jscalendar/calendar-setup_stripped.js"></script>
  <script type="text/javascript" src="js/ui/autosave.js"></script>
  {if $htmlarea}
   <script type="text/javascript" src="js/tinymce/tiny_mce_gzip.php"></script>
@@ -31,12 +30,9 @@
   var todayYear = '{$today->getYear()}'; 
   
   // this needs to be pre-initialized
-  var preview = false;
-  
-  {include file="$admintemplatepath/calendarstuff.template"}
- 
+  var preview = false; 
+
 {literal} 
-
 function selectOperation( t )
 {
 	if( preview ) {	
@@ -98,16 +94,31 @@
 		 <div class="formHelp">{$locale->tr("post_slug_help")}</div>
 	     <input type="text" name="postSlug" id="postSlug" style="width:100%" value="{$postSlug|escape:"html"}" />
 	   </div>
-   
+
        <div class="field">
    	     <label for="postDateTime">{$locale->tr("date")}</label>
 		 <span class="required">*</span>
 		 <div class="formHelp">{$locale->tr("post_date_help")}</div>
 	     <input name="postDateTime" id="postDateTime" class="dateTime" readonly="true" type="text" size="16" value="{$postDateTime}" style="margin-bottom: 4px;" />
-	     <a href="javascript:NewCal('postDateTime','ddmmyyyy',true,24);">
-		   <img src="imgs/admin/cal.jpg" alt="{$locale->tr("date")}" style="border:0px;width: 16px; height: 14px; padding: 0;" />
-		 </a>
+	     <img src="imgs/admin/cal.jpg" id="postDateTimeSelector" alt="{$locale->tr("date")}" style="cursor: pointer; border: 0px; width: 16px; height: 14px; padding: 0;" />
 	   </div>
+
+	   <script type="text/javascript">
+	   var MondayFirstDay = ( {$locale->firstDayOfWeek()} == 1);
+       {literal}
+	       Calendar.setup({
+	           inputField  : "postDateTime",
+	           ifFormat    : "%d/%m/%Y %H:%M",
+	           button      : "postDateTimeSelector",
+	           showsTime   : true,
+	           timeFormat  : "24",
+	           electric    : false,
+	           align       : "Bl",
+	           firstDay    : MondayFirstDay,
+	           singleClick : true
+	       });
+	   {/literal}
+	   </script>
 	   
 	   <!-- date custom fields -->
 	   {include file="$admintemplatepath/newpost_customfields.template" type=4 fields=$customfields}

Modified: plog/trunk/templates/admin/siteblogs.template
===================================================================
--- plog/trunk/templates/admin/siteblogs.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/admin/siteblogs.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -52,11 +52,11 @@
     <thead>
      <tr>
       <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('editBlogs');" /></th>
-      <th style="width:40%;">{$locale->tr("blog")}</th>
-      <th style="width:30%">{$locale->tr("owner")}</th>
+      <th style="width:35%;">{$locale->tr("blog")}</th>
+      <th style="width:25%">{$locale->tr("owner")}</th>
       <th style="width:15%;">{$locale->tr("status")}</th>
 	  <th style="width:10%;">{$locale->tr("quota")}</th> 
-      <th style="width:15%;">{$locale->tr("actions")}</th>
+      <th style="width:25%;">{$locale->tr("actions")}</th>
      </tr>
     </thead>
     <tbody>
@@ -86,6 +86,9 @@
 	     {check_perms adminperm=update_site_blog}
          <a href="?op=deleteBlog&amp;blogId={$siteblog->getId()}"><img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" /></a>
          <a href="?op=editBlog&amp;blogId={$siteblog->getId()}"><img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit_blog")}" /></a>
+		 {assign var=blogUrl value=$siteblog->getBlogRequestGenerator()}
+       	 {assign var=blogname value=$siteblog->getBlog()}
+		 <a href="{$blogUrl->blogLink()}"><img src="imgs/admin/icon_goto-16.png" alt="{$locale->pr("goto_blog_page",$blogname)}" /></a>
 		 {if $siteblog->getStatus() == 3}
          <a href="?op=resendConfirmation&amp;blogId={$siteblog->getId()}"><img src="imgs/admin/icon_mail-16.png" alt="{$locale->tr("resend_confirmation_blog")}" /></a>
 		 {/if}

Copied: plog/trunk/templates/admin/versions.template (from rev 5487, plog/branches/lifetype-1.2/templates/admin/versions.template)
===================================================================
--- plog/trunk/templates/admin/versions.template	                        (rev 0)
+++ plog/trunk/templates/admin/versions.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -0,0 +1,26 @@
+{include file="$admintemplatepath/header.template"}
+{include file="$admintemplatepath/navigation.template" showOpt=Versions title=$locale->tr("Versions")}
+<form name="cleanUp" method="post" action="admin.php">
+ <fieldset class="inputField">
+  <legend>{$locale->tr("Versions")}</legend>
+  {include file="$admintemplatepath/successmessage.template" message=$viewSuccessMessage}
+  {include file="$admintemplatepath/errormessage.template" message=$viewErrorMessage}
+
+  <div class="field">
+   <label for="purgePosts">{$locale->tr("lifetype_version")}</label>
+   <span class="required"></span>
+   <div class="formHelp">{$locale->tr("lifetype_version_help")}</div>
+   <span style="font-weight:bold">{$version}</span>
+  </div>
+
+  <div class="field">
+   <label for="purgePosts">{$locale->tr("file_version_check")}</label>
+   <span class="required"></span>
+   <div class="formHelp">{$locale->tr("file_version_check_help")}</div>
+   <input type="submit" class="button" name="doFileVersionCheck" value="{$locale->tr("check")}" />
+  </div>  
+  <input type="hidden" name="op" value="doFileVersionCheck" />
+ </fieldset>
+</form>
+{include file="$admintemplatepath/footernavigation.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file

Modified: plog/trunk/templates/rss/atom.template
===================================================================
--- plog/trunk/templates/rss/atom.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/rss/atom.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -27,8 +27,7 @@
  <author> 
   {assign var="postOwner" value=$post->getUserInfo()} 
   <name>{$postOwner->getUsername()|escape}</name> 
-  <url>{$url->blogLink()}</url> 
-  <email>{$postOwner->getEmail()}</email> 
+  <url>{$url->blogLink()}</url>
   </author> 
  <dc:subject>
   {foreach from=$post->getCategories() item=category}

Modified: plog/trunk/templates/summary/rss/atom.template
===================================================================
--- plog/trunk/templates/summary/rss/atom.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/summary/rss/atom.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -26,7 +26,6 @@
  {assign var="postOwner" value=$post->getUserInfo()} 
  <name>{$postOwner->getUsername()}</name> 
  <url>{$url->blogLink()}</url> 
- <email>{$postOwner->getEmail()}</email> 
 </author> 
 <dc:subject>
 {foreach from=$post->getCategories() item=category}
@@ -44,4 +43,4 @@
 {/if}
 </entry> 
 {/foreach} 
-</feed>
\ No newline at end of file
+</feed>

Modified: plog/trunk/templates/summary/rss/blogs_atom.template
===================================================================
--- plog/trunk/templates/summary/rss/blogs_atom.template	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/templates/summary/rss/blogs_atom.template	2007-06-05 13:51:03 UTC (rev 5488)
@@ -23,7 +23,6 @@
  {assign var="blogOwner" value=$blog->getOwnerInfo()} 
  <name>{$blogOwner->getUsername()}</name> 
  <url>{$url->blogLink()}</url> 
- <email>{$blogOwner->getEmail()}</email> 
 </author> 
  {assign var=blogLocale value=$blog->getLocale()}
  <content type="text/html" mode="escaped" xml:lang="{$blogLocale->getLanguageId()|lower}" xml:base="{$url->blogLink()}"> 
@@ -37,4 +36,4 @@
  {/if}
 </entry> 
 {/foreach} 
-</feed>
\ No newline at end of file
+</feed>

Modified: plog/trunk/wizard.php
===================================================================
--- plog/trunk/wizard.php	2007-06-05 11:38:29 UTC (rev 5487)
+++ plog/trunk/wizard.php	2007-06-05 13:51:03 UTC (rev 5488)
@@ -68,6 +68,7 @@
 	include_once( PLOG_CLASS_PATH."class/dao/userpermissions.class.php" );
 	include_once( PLOG_CLASS_PATH."class/dao/permission.class.php" );
 	include_once( PLOG_CLASS_PATH."class/dao/userpermission.class.php" );			
+	lt_include( PLOG_CLASS_PATH."class/misc/integritychecker.class.php" );
     
     // table schemas
     include_once( PLOG_CLASS_PATH."install/dbschemas.properties.php" );
@@ -443,7 +444,37 @@
             return( parent::validate());    
         }
     }
+
+    class WizardFileIntegrityValidator extends WizardValidator
+    {
+        function WizardFileIntegrityValidator()
+        {
+            $this->WizardValidator( "Checking that all files have been correctly uploaded", 
+                                    "will be set later on...",
+                                    true );
+        }    
     
+        function validate()
+        {
+			include( PLOG_CLASS_PATH."install/files.properties.php");
+			
+			$result = IntegrityChecker::checkIntegrity( 
+				$data
+			);	
+	
+		
+            $this->_valid = ( count( $result ) == 0 );
+			if( !$this->_valid ) {
+				/* let's modify a private attribute... */
+				$fileList = implode( "<br/>", array_keys( $result ));
+				$this->_solution = "The following files are not correct, installation cannot continue until they are replaced
+				                    with the correct versions:"."<br/>".$fileList;				
+			}
+
+            return( parent::validate());
+        }
+    }
+    
     class WizardCtypeFunctionsAvailableValidator extends WizardValidator
     {
         function WizardCtypeFunctionsAvailableValidator()
@@ -465,10 +496,11 @@
         function perform()
         {
             // build the array with checks
-            $checkGroups['File permissions checking'] = Array(
+            $checkGroups['File checks'] = Array(
                "writeConfigFile" => new WizardWritableFileValidator( "config/config.properties.php" ),
                "writeTmpFolder" => new WizardWritableFileValidator( "tmp" ),
-               "writeGalleryFolder" => new WizardWritableFileValidator( "gallery" )
+               "writeGalleryFolder" => new WizardWritableFileValidator( "gallery" ),
+			   "fileVersionCheck" => new WizardFileIntegrityValidator()
             );
             
             $checkGroups['PHP version checking'] = Array(



More information about the pLog-svn mailing list