[pLog-svn] r5683 - in plog/trunk: . class/action class/action/admin class/config class/controller class/dao class/data class/data/filter class/data/forms class/data/pager class/data/serialize/json class/data/validator class/data/validator/rules class/database class/database/pdb/datadict class/gallery/dao class/locale class/net class/template/menu class/template/smarty/plugins class/view class/view/admin class/view/admin/ajax class/view/ajax class/view/renderer js/editor js/location js/tinymce js/tinymce/plugins/insertresource js/ui js/ui/pages js/yui js/yui/animation js/yui/connection js/yui/container js/yui/container/assets js/yui/dom js/yui/event js/yui/yahoo locale locale/admin styles templates/admin templates/admin/chooser templates/wizard

oscar at devel.lifetype.net oscar at devel.lifetype.net
Thu Jul 19 00:53:32 EDT 2007


Author: oscar
Date: 2007-07-19 00:53:31 -0400 (Thu, 19 Jul 2007)
New Revision: 5683

Added:
   plog/trunk/class/action/admin/adminblogselectaction.class.php
   plog/trunk/class/data/filter/trimfilter.class.php
   plog/trunk/class/template/smarty/plugins/function.js.php
   plog/trunk/class/view/ajax/
   plog/trunk/class/view/ajax/ajaxview.class.php
   plog/trunk/class/view/renderer/
   plog/trunk/class/view/renderer/ajaxviewrenderer.class.php
   plog/trunk/js/ui/contentoverlay.js
   plog/trunk/js/ui/dom.js
   plog/trunk/js/ui/menu.js
   plog/trunk/js/ui/pages/
   plog/trunk/js/ui/pages/addbloguser.js
   plog/trunk/js/ui/pages/blogsettings.js
   plog/trunk/js/ui/pages/default.js
   plog/trunk/js/ui/pages/editarticlecategory.js
   plog/trunk/js/ui/pages/editcustomfield.js
   plog/trunk/js/ui/pages/editlink.js
   plog/trunk/js/ui/pages/editlinkcategory.js
   plog/trunk/js/ui/pages/editposts.js
   plog/trunk/js/ui/pages/global.js
   plog/trunk/js/ui/pages/globalsettings.js
   plog/trunk/js/ui/pages/newcustomfield.js
   plog/trunk/js/ui/pages/newpost.js
   plog/trunk/js/ui/pages/newpostcategory.js
   plog/trunk/js/ui/pages/newresourcealbum.js
   plog/trunk/js/ui/pages/resources.js
   plog/trunk/js/ui/pages/templatechooser.js
   plog/trunk/js/ui/pages/userpictureselect.js
   plog/trunk/js/ui/pages/usersettings.js
   plog/trunk/js/ui/ui.js
   plog/trunk/js/yui/animation/
   plog/trunk/js/yui/animation/animation-min.js
   plog/trunk/templates/admin/formvalidateajax.template
   plog/trunk/templates/admin/validateajax.template
Removed:
   plog/trunk/class/action/admin/adminaddarticlecategoryajaxaction.class.php
   plog/trunk/class/view/ajax/ajaxview.class.php
   plog/trunk/class/view/renderer/ajaxviewrenderer.class.php
   plog/trunk/js/ui/default.js
   plog/trunk/js/ui/external.js
   plog/trunk/js/ui/pages/addbloguser.js
   plog/trunk/js/ui/pages/blogsettings.js
   plog/trunk/js/ui/pages/default.js
   plog/trunk/js/ui/pages/editarticlecategory.js
   plog/trunk/js/ui/pages/editcustomfield.js
   plog/trunk/js/ui/pages/editlink.js
   plog/trunk/js/ui/pages/editlinkcategory.js
   plog/trunk/js/ui/pages/editposts.js
   plog/trunk/js/ui/pages/global.js
   plog/trunk/js/ui/pages/globalsettings.js
   plog/trunk/js/ui/pages/newcustomfield.js
   plog/trunk/js/ui/pages/newpost.js
   plog/trunk/js/ui/pages/newpostcategory.js
   plog/trunk/js/ui/pages/newresourcealbum.js
   plog/trunk/js/ui/pages/resources.js
   plog/trunk/js/ui/pages/templatechooser.js
   plog/trunk/js/ui/pages/userpictureselect.js
   plog/trunk/js/ui/pages/usersettings.js
   plog/trunk/js/yui/animation/animation-min.js
Modified:
   plog/trunk/class/action/action.class.php
   plog/trunk/class/action/admin/adminaction.class.php
   plog/trunk/class/action/admin/adminaddarticlecategoryaction.class.php
   plog/trunk/class/action/admin/adminaddblogtemplateaction.class.php
   plog/trunk/class/action/admin/adminaddbloguseraction.class.php
   plog/trunk/class/action/admin/adminaddcustomfieldaction.class.php
   plog/trunk/class/action/admin/adminaddlinkaction.class.php
   plog/trunk/class/action/admin/adminaddlinkcategoryaction.class.php
   plog/trunk/class/action/admin/adminaddlocationajaxaction.class.php
   plog/trunk/class/action/admin/adminaddpostaction.class.php
   plog/trunk/class/action/admin/adminaddresourcealbumaction.class.php
   plog/trunk/class/action/admin/adminadminblogselectaction.class.php
   plog/trunk/class/action/admin/adminblogsettingsaction.class.php
   plog/trunk/class/action/admin/admindefaultaction.class.php
   plog/trunk/class/action/admin/admineditarticlecategoryaction.class.php
   plog/trunk/class/action/admin/admineditbloguseraction.class.php
   plog/trunk/class/action/admin/admineditcustomfieldaction.class.php
   plog/trunk/class/action/admin/admineditlinkaction.class.php
   plog/trunk/class/action/admin/admineditlinkcategoriesaction.class.php
   plog/trunk/class/action/admin/admineditlinkcategoryaction.class.php
   plog/trunk/class/action/admin/admineditlinksaction.class.php
   plog/trunk/class/action/admin/admineditpostsaction.class.php
   plog/trunk/class/action/admin/adminloginaction.class.php
   plog/trunk/class/action/admin/adminlogoutaction.class.php
   plog/trunk/class/action/admin/adminmainaction.class.php
   plog/trunk/class/action/admin/adminnewblogtemplateaction.class.php
   plog/trunk/class/action/admin/adminnewresourceaction.class.php
   plog/trunk/class/action/admin/adminnewresourcealbumaction.class.php
   plog/trunk/class/action/admin/adminpermissionrequiredaction.class.php
   plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php
   plog/trunk/class/action/admin/adminresourceinfoaction.class.php
   plog/trunk/class/action/admin/adminupdatearticlecategoryaction.class.php
   plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php
   plog/trunk/class/action/admin/adminupdatebloguseraction.class.php
   plog/trunk/class/action/admin/adminupdatecustomfieldaction.class.php
   plog/trunk/class/action/admin/adminupdatelinkaction.class.php
   plog/trunk/class/action/admin/adminupdatelinkcategoryaction.class.php
   plog/trunk/class/action/admin/adminupdatelocationajaxaction.class.php
   plog/trunk/class/action/admin/adminupdatepostaction.class.php
   plog/trunk/class/action/admin/adminupdateusersettingsaction.class.php
   plog/trunk/class/action/admin/adminusersettingsaction.class.php
   plog/trunk/class/config/properties.class.php
   plog/trunk/class/controller/admincontrollermap.properties.php
   plog/trunk/class/controller/controller.class.php
   plog/trunk/class/dao/bloginfo.class.php
   plog/trunk/class/dao/locationawaredbobject.class.php
   plog/trunk/class/dao/mylink.class.php
   plog/trunk/class/dao/userinfo.class.php
   plog/trunk/class/dao/userpermission.class.php
   plog/trunk/class/data/forms/formvalidator.class.php
   plog/trunk/class/data/pager/pager.class.php
   plog/trunk/class/data/serialize/json/jsonserializer.class.php
   plog/trunk/class/data/timestamp.class.php
   plog/trunk/class/data/validator/rules/urlformatrule.class.php
   plog/trunk/class/data/validator/validation.class.php
   plog/trunk/class/database/dbobject.class.php
   plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php
   plog/trunk/class/database/pdb/datadict/pdbmysqldatadict.class.php
   plog/trunk/class/gallery/dao/galleryresource.class.php
   plog/trunk/class/locale/locale.class.php
   plog/trunk/class/net/request.class.php
   plog/trunk/class/template/menu/menurenderer.class.php
   plog/trunk/class/view/admin/admindefaultview.class.php
   plog/trunk/class/view/admin/adminlinkcategorieslistview.class.php
   plog/trunk/class/view/admin/adminlinkslistview.class.php
   plog/trunk/class/view/admin/adminnewalbumview.class.php
   plog/trunk/class/view/admin/adminnewresourceview.class.php
   plog/trunk/class/view/admin/adminpostslistview.class.php
   plog/trunk/class/view/admin/adminresourceslistview.class.php
   plog/trunk/class/view/admin/admintemplatedview.class.php
   plog/trunk/class/view/admin/ajax/adminajaxview.class.php
   plog/trunk/class/view/view.class.php
   plog/trunk/js/editor/lifetypeeditor.js
   plog/trunk/js/location/location.js
   plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js
   plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js
   plog/trunk/js/ui/autosave.js
   plog/trunk/js/ui/common.js
   plog/trunk/js/ui/core.js
   plog/trunk/js/ui/forms.js
   plog/trunk/js/ui/plogui.js
   plog/trunk/js/yui/connection/connection-min.js
   plog/trunk/js/yui/container/assets/container.css
   plog/trunk/js/yui/container/container-min.js
   plog/trunk/js/yui/container/container_core-min.js
   plog/trunk/js/yui/dom/dom-min.js
   plog/trunk/js/yui/event/event-min.js
   plog/trunk/js/yui/yahoo/yahoo-min.js
   plog/trunk/locale/admin/locale_ca_ES.php
   plog/trunk/locale/admin/locale_en_UK.php
   plog/trunk/locale/admin/locale_es_ES.php
   plog/trunk/locale/admin/locale_gl_ES.php
   plog/trunk/locale/admin/locale_it_IT.php
   plog/trunk/locale/admin/locale_nl_NL.php
   plog/trunk/locale/locale_ca_ES.php
   plog/trunk/locale/locale_de_DE.php
   plog/trunk/locale/locale_en_UK.php
   plog/trunk/locale/locale_es_ES.php
   plog/trunk/locale/locale_gl_ES.php
   plog/trunk/locale/locale_it_IT.php
   plog/trunk/locale/locale_nl_NL.php
   plog/trunk/locale/locale_zh_CN.php
   plog/trunk/locale/locale_zh_TW.php
   plog/trunk/styles/admin.css
   plog/trunk/templates/admin/addbloguser.template
   plog/trunk/templates/admin/blogcategories.template
   plog/trunk/templates/admin/blogsettings.template
   plog/trunk/templates/admin/blogtemplates.template
   plog/trunk/templates/admin/blogusers.template
   plog/trunk/templates/admin/chooser/blogtemplatechooser.template
   plog/trunk/templates/admin/chooser/siteblogschooser.template
   plog/trunk/templates/admin/chooser/siteuserschooser.template
   plog/trunk/templates/admin/chooser/userpictureselect.template
   plog/trunk/templates/admin/customfields.template
   plog/trunk/templates/admin/default.template
   plog/trunk/templates/admin/editarticlecategories.template
   plog/trunk/templates/admin/editarticlecategory.template
   plog/trunk/templates/admin/editblog.template
   plog/trunk/templates/admin/editbloguser.template
   plog/trunk/templates/admin/editcomments.template
   plog/trunk/templates/admin/editcustomfield.template
   plog/trunk/templates/admin/editfriendgroups.template
   plog/trunk/templates/admin/editfriends.template
   plog/trunk/templates/admin/editlink.template
   plog/trunk/templates/admin/editlinkcategories.template
   plog/trunk/templates/admin/editlinkcategory.template
   plog/trunk/templates/admin/editlinks.template
   plog/trunk/templates/admin/editposts.template
   plog/trunk/templates/admin/edittrackbacks.template
   plog/trunk/templates/admin/formvalidate.template
   plog/trunk/templates/admin/globalarticlecategories.template
   plog/trunk/templates/admin/globalsettings_general.template
   plog/trunk/templates/admin/header.template
   plog/trunk/templates/admin/menus.xml
   plog/trunk/templates/admin/newcustomfield.template
   plog/trunk/templates/admin/newlink.template
   plog/trunk/templates/admin/newlinkcategory.template
   plog/trunk/templates/admin/newpost.template
   plog/trunk/templates/admin/newpostcategory.template
   plog/trunk/templates/admin/newresource.template
   plog/trunk/templates/admin/newresourcealbum.template
   plog/trunk/templates/admin/permissions.template
   plog/trunk/templates/admin/poststats.template
   plog/trunk/templates/admin/resourceinfo.template
   plog/trunk/templates/admin/resources.template
   plog/trunk/templates/admin/simpleheader.template
   plog/trunk/templates/admin/siteblogs.template
   plog/trunk/templates/admin/sitelocales.template
   plog/trunk/templates/admin/sitetemplates.template
   plog/trunk/templates/admin/siteusers.template
   plog/trunk/templates/admin/statistics.template
   plog/trunk/templates/admin/usersettings.template
   plog/trunk/templates/admin/validate.template
   plog/trunk/templates/wizard/step1.template
   plog/trunk/wizard.php
Log:
Moved all the work from the lifetype-1.3-ajax branch back to trunk


Modified: plog/trunk/class/action/action.class.php
===================================================================
--- plog/trunk/class/action/action.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/action.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -128,6 +128,19 @@
         {	
 			// to be implemented by child classes...
         }
+
+		/**
+		 * Use this method to provide Ajax specific behaviour for your action class. What you would usually do
+		 * is isolate your application logic in a class method and then have Action::perform() and
+		 * Action::performAjax() call the same logic, and then the former method would generate a
+		 * view that returns HTML code to the client and the latter would generate one that returns
+		 * Ajax/Json code to the client.
+		 */
+		function performAjax()
+		{
+			$this->_view = $this->getAjaxErrorView();
+			$this->_view->setErrorMessage( "Output not supported" );
+		}
         
         /**
          * This method can be used for data validation and is <b>always</b> executed
@@ -157,28 +170,55 @@
 			
 			return $validationOk;
 		}
+
+		/**
+		 * When validation errors occur and the expected output is ajax, this method
+		 * will return a suitable view for an ajax client. It can be overridden in child
+		 * classes to provide more specific Ajax behaviour in case the default one is not
+		 * enough
+		 *
+		 * @return An AjaxView object
+		 */
+		function getAjaxErrorView()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/ajax/ajaxview.class.php" );			
+			return( new AjaxView());
+		}
 		
 		/**
 		 * This method will be called when a validation error happens. Child classes are
 		 * free to extend or reimplement this one and can be used as some sort of a trigger
 		 * in order to do some cleanup if needed.
 		 *
-		 *Ê@return nothing
+		 * @return nothing
 		 */
 		function validationErrorProcessing()
 		{
-			// if there was a validaton error, then inform the view
-			$this->_view = $this->_validationErrorView;
-			$this->_view->setError( true );
+			$this->_form->setFormIsValid( false );
+			
+			if( $this->_request->isAjax()) {
+				// if the output happens to be 'json'/ajax, then we can do some lighter processing
+				// all we need to output whenever there is a validation error when using ajax
+				// is the error message adn the FormValidator object containing information about
+				// the fileds that validated/did not validate
+				$this->_view = $this->getAjaxErrorView();
+				$this->_view->setSuccess( false );
+				$this->_view->setErrorMessage( $this->_validationErrorView->getErrorMessage());
+				$this->_view->setValue( "form", $this->_form );
+			}
+			else {
+				// this is the normal processing for html views
+				$this->_view = $this->_validationErrorView;
+				$this->_view->setError( true );
 				
-			// and  export all the data to the view so that it can be reused in the error view
-			$fieldValues = $this->_form->getFieldValues();
-			foreach( $fieldValues as $fieldName => $fieldValue ) {
-				$this->_view->setValue( "$fieldName", $fieldValue );
+				// and  export all the data to the view so that it can be reused in the error view
+				$fieldValues = $this->_form->getFieldValues();
+				foreach( $fieldValues as $fieldName => $fieldValue ) {
+					$this->_view->setValue( "$fieldName", $fieldValue );
+				}				
+				
+				$this->setCommonData();				
 			}
-				
-			$this->_form->setFormIsValid( false );
-			$this->setCommonData();
 	
 			return true;
 		}
@@ -206,14 +246,15 @@
 		 * @param fieldName The name of the field from the form that we're going to validate
 		 * @param validator A valid class inheriting from the Validator base class and that implements
 		 * the validate() method, that will be used for validating fields.
-		 * @param onlyIfAvailable validate this field only if its value is not emtpy		 
+		 * @param onlyIfAvailable validate this field only if its value is not emtpy
+		 * @param errorMessage An optional error message that will be shown 
 		 * @return Always true
 		 * @see FormValidator
 		 * @see Validator
 		 */
-		function registerFieldValidator( $fieldName, $validator, $onlyIfAvailable = false )
+		function registerFieldValidator( $fieldName, $validator, $onlyIfAvailable = false, $errorMessage = "" )
 		{
-			$this->_form->registerFieldValidator( $fieldName, $validator, $onlyIfAvailable );
+			$this->_form->registerFieldValidator( $fieldName, $validator, $onlyIfAvailable, $errorMessage );
 			
 			return true;
 		}

Modified: plog/trunk/class/action/admin/adminaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -201,16 +201,23 @@
          */
         function mustAuthenticatePage()
         {
-			$locale = $this->getLocale();		
-			$config =& Config::getConfig();			
-			$destinationUrl = $config->getValue( "logout_destination_url", "" );
-            if( $destinationUrl == "" ) {
-				$view = new AdminDefaultView();
+			$locale = $this->getLocale();
+			if( $this->_request->isAjax()) {
+				// if the client is expecting ajax output, then we should return an error
+				// message in json format
+				$view = $this->getAjaxErrorView();
 			}
-			else {
-				// nothing else to do, just redirect the browser once we've cleaned up the session
-				lt_include( PLOG_CLASS_PATH."class/view/redirectview.class.php" );				
-				$view = new RedirectView( $destinationUrl );							
+			else {		
+				$config =& Config::getConfig();			
+				$destinationUrl = $config->getValue( "logout_destination_url", "" );
+	            if( $destinationUrl == "" ) {
+					$view = new AdminDefaultView();
+				}
+				else {
+					// nothing else to do, just redirect the browser once we've cleaned up the session
+					lt_include( PLOG_CLASS_PATH."class/view/redirectview.class.php" );				
+					$view = new RedirectView( $destinationUrl );							
+				}
 			}
 			$view->setErrorMessage( $locale->tr("error_access_forbidden" ));			
 			
@@ -321,5 +328,14 @@
 			
 			return 0;
 		}
+		
+		/**
+		 * @see Action::getAjaxErrorView()
+		 */
+		function getAjaxErrorView()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );			
+			return( new AdminAjaxView( $this->_blogInfo ));
+		}		
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminaddarticlecategoryaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddarticlecategoryaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddarticlecategoryaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -4,8 +4,7 @@
     lt_include( PLOG_CLASS_PATH."class/dao/articlecategories.class.php" );
     lt_include( PLOG_CLASS_PATH."class/dao/articlecategory.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
-    lt_include( PLOG_CLASS_PATH."class/data/validator/emptyvalidator.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/view/admin/adminarticlecategorieslistview.class.php" );
 
     /**
@@ -21,6 +20,7 @@
         var $_categoryUrl;
 		var $_properties;
 		var $_categoryDescription;
+		var $_message;
 
     	/**
          * Constructor. If nothing else, it also has to call the constructor of the parent
@@ -31,45 +31,64 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// register two validators
-			$this->registerFieldValidator( "categoryName", new StringValidator());
-			$this->registerFieldValidator( "categoryDescription", new StringValidator());
-			$this->registerFieldValidator( "categoryInMainPage", new EmptyValidator());
+			$this->registerFieldValidator( "categoryName", new StringValidator(), false, $this->_locale->tr( "error_empty_name" ));
+			$this->registerField( "categoryDescription" );
+			$this->registerField( "categoryInMainPage" );
 			// and the view we should show in case there is a validation error
 			$errorView = new AdminTemplatedView( $this->_blogInfo, "newpostcategory" );
 			$errorView->setErrorMessage( $this->_locale->tr("error_adding_article_category" ));			
 			$this->setValidationErrorView( $errorView );
 			
+			// data filtering
+			$f = new HtmlFilter();
+			$this->_request->registerFilter( "categoryName", $f );
+			$this->_request->registerFilter( "categoryDescription", $f );
+			
 			$this->requirePermission( "add_category" );
 
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function addArticleCategory()
+		{
 			// fetch the data, we already know it's valid and that we can trust it!
-        	$this->_categoryName     = Textfilter::filterAllHTML($this->_request->getValue( "categoryName" ));
-            $this->_categoryUrl      = $this->_request->getValue( "categoryUrl" );
+			$f = new HtmlFilter();
+        	$this->_categoryName     = $this->_request->getValue( "categoryName" );
             $this->_categoryInMainPage = Textfilter::checkboxToBoolean($this->_request->getValue( "categoryInMainPage" ));
-			$this->_categoryDescription = Textfilter::filterAllHTML($this->_request->getValue( "categoryDescription" ));
-			$this->_properties = $this->_request->getValue( "properties" );		
-		
+			$this->_categoryDescription = $this->_request->getValue( "categoryDescription" );
+			
 			// create the object...
             $categories = new ArticleCategories();
             $category   = new ArticleCategory( $this->_categoryName,
-                                               $this->_categoryUrl,
+                                               "",
                                                $this->_blogInfo->getId(),
                                                $this->_categoryInMainPage,
-											   $this->_categoryDescription,
-											   0,
-											   $this->_properties );
+											   $this->_categoryDescription );
 											   
 			// fire the pre event...
-			$this->notifyEvent( EVENT_PRE_CATEGORY_ADD, Array( "category" => &$category ));
+			$this->notifyEvent( EVENT_PRE_CATEGORY_ADD, Array( "category" => &$category ));			
+			
+            if( $categories->addArticleCategory( $category )) {
+				// fire the post event
+				$this->notifyEvent( EVENT_POST_CATEGORY_ADD, Array( "category" => &$category ));	
+				// clear the cache if everything went fine
+				CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );				
+				// define the success message
+				$this->_message = $this->_locale->pr("category_added_ok", $category->getName());
+			}
+			else {
+				$this->_locale->tr( "error_adding_article_category" );
+			}
+			
+			return( $category );
+		}
 
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {				
             // once we have built the object, we can add it to the database!
-            if( $categories->addArticleCategory( $category )) {
+            if( $this->addArticleCategory()) {
 				// if everything went fine, transfer the execution flow to the action that
 				// lists all the article categories... without forgetting that we should let the
 				// next class know that we actually added a category alongside a message
@@ -80,26 +99,37 @@
 					$this->_view = new AdminTemplatedView( $this->_blogInfo, "newpostcategory" );
 					
 				$this->_view->setSuccess( true );
-				$this->_view->setSuccessMessage( $this->_locale->pr("category_added_ok", $category->getName()));
-				
-				// fire the post event
-				$this->notifyEvent( EVENT_POST_CATEGORY_ADD, Array( "category" => &$category ));
-				
-				// clear the cache if everything went fine
-				CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );														
-				
+				$this->_view->setSuccessMessage( $this->_message );
 				$this->setCommonData();				
             }
             else {
 				// if there was an error, we should say so... as well as not changing the view since
 				// we're going back to the original view where we can add the category
 				$this->_view->setError( true );
-				$this->_view->setErrorMessage( $this->_locale->tr("error_adding_article_category" ));
+				$this->_view->setErrorMessage( $this->_message );
 				$this->setCommonData( true );
             }
 
             // better to return true if everything fine
             return true;
         }
+
+		/**
+		 * Ajax-specific behaviour
+		 */
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );			
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			if( $category = $this->addArticleCategory()) {
+				$this->_view->setSuccess( true );
+				$this->_view->setSuccessMessage( $this->_message );
+				$this->_view->setValue( "category", $category );
+			}
+			else {
+				$this->_view->setSuccess( true );
+				$this->_view->setSuccessMessage( $this->_message );				
+			}
+		}
     }
 ?>
\ No newline at end of file

Deleted: plog/trunk/class/action/admin/adminaddarticlecategoryajaxaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddarticlecategoryajaxaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddarticlecategoryajaxaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,108 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/action/admin/ajax/adminajaxaction.class.php" );
-    lt_include( PLOG_CLASS_PATH."class/dao/articlecategories.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
-
-    /**
-     * \ingroup Action
-     * @private
-     *
-     * Action that adds a new article category to the database.
-     */
-    class AdminAddArticleCategoryAjaxAction extends AdminAjaxAction 
-	{
-
-    	var $_categoryName;
-
-    	/**
-         * Constructor. If nothing else, it also has to call the constructor of the parent
-         * class, BlogAction with the same parameters
-         */
-        function AdminAddArticleCategoryAjaxAction( $actionInfo, $request )
-        {
-        	$this->AdminAjaxAction( $actionInfo, $request );
-        }
-
-        function validate()
-        {
-			// check if the user has the add_category permission
-            if( !$this->userHasPermission( "add_category" ) ) {
-	            $this->_view = new AdminXmlView( $this->_blogInfo, "response" );				
-	            $this->_view->setValue( "method", "addCategoryAjax" );
-            	$this->_view->setValue( "success", "0" );
-            	$this->_view->setValue( "message", $this->_locale->tr("error_permission_required") );    	            
-                return false;
-            }
-
-            // check if category name is empty
-        	$this->_categoryName     = Textfilter::filterAllHTML($this->_request->getValue( "categoryName" ));
-            $this->_categoryUrl      = "";
-            $this->_categoryInMainPage = 1;
-			$this->_categoryDescription = $this->_categoryName;
-			$this->_properties = "";	
-
-            if( empty($this->_categoryName) || $this->_categoryName == "" ) {
-	            $this->_view = new AdminXmlView( $this->_blogInfo, "response" );				
-	            $this->_view->setValue( "method", "addCategoryAjax" );
-            	$this->_view->setValue( "success", "0" );
-            	$this->_view->setValue( "message", $this->_locale->tr("error_adding_article_category") );    	            
-                return false;
-            }
-
-            return true;
-        }
-
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
-            // get the category name, it will be the only parameter
-        	$this->_categoryName = Textfilter::filterAllHTML($this->_request->getValue( "categoryName" ));
-            if( empty($this->_categoryName) || $this->_categoryName == "" ) {
-	            $this->_view = $this->getErrorView( $this->_locale->tr("error_adding_article_category"));    	            
-                return false;
-            }               
-	
-			// create the object...
-            $categories = new ArticleCategories();
-            $category   = new ArticleCategory( $this->_categoryName,
-                                               "",				// category URL, not used
-                                               $this->_blogInfo->getId(),
-                                               1,				 // show the category in the main page
-											   $this->_categoryName,		// category description, same as name
-											   0,
-											   "" );
-											   
-			// fire the pre event...
-			$this->notifyEvent( EVENT_PRE_CATEGORY_ADD, Array( "category" => &$category ));
-
-			$this->_view = new AdminAjaxView( $this->_blogInfo, "addCategoryAjax" );
-            
-            // once we have built the object, we can add it to the database!
-            $catId = $categories->addArticleCategory( $category );
-
-            // once we have built the object, we can add it to the database
-            if( $catId ) {
-            	$this->_view->setSuccess( true );
-            	$this->_view->setMessage( $this->_locale->pr("category_added_ok", $this->_categoryName ));
-            	$this->_view->setResult( $category );
-				
-				// fire the post event
-				$this->notifyEvent( EVENT_POST_CATEGORY_ADD, Array( "category" => &$category ));
-				
-				// clear the cache if everything went fine
-				CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );							
-			}             
-            else {
-            	$this->_view->setSuccess( false );
-            	$this->_view->setMessage( $this->_locale->tr("error_adding_article_category") );              	 
-            }
-                
-            return true;	
-        }
-    }
-?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminaddblogtemplateaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddblogtemplateaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddblogtemplateaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -35,20 +35,22 @@
 
         function validate()
         {
+			$valid = parent::validate();
+	
             //
             // first of all, let's make sure that users are allowed to
             // add new templates
             //
             $config =& Config::getConfig();
-            if( !$config->getValue( "users_can_add_templates" )) {
-                $this->_view = new AdminBlogTemplateSetsListView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_add_template_disabled"));
-                $this->setCommonData();
-
-                return false;
+            if( !$config->getValue( "users_can_add_templates" )) {	
+                $view = new AdminBlogTemplateSetsListView( $this->_blogInfo );
+                $view->setErrorMessage( $this->_locale->tr("error_add_template_disabled"));
+				$this->setValidationErrorView( $view );
+				$this->validationErrorProcessing();					
+				$valid = false;
             }
 
-			return parent::validate();
+			return( $valid );
 		}
 
         function _performUploadTemplate()
@@ -58,7 +60,7 @@
             $tmpFolder = $config->getValue( "temp_folder" );
 
             // move it to the temporary folder
-            $files    = HttpVars::getFiles();
+            $files = HttpVars::getFiles();
 
             if( count($files) == 0 || $files["templateFile"]["name"] == "") {
 				$this->_view = new AdminTemplatedView( $this->_blogInfo, "newblogtemplate" );

Modified: plog/trunk/class/action/admin/adminaddbloguseraction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddbloguseraction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddbloguseraction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -3,6 +3,7 @@
 	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminnewbloguserview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.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/dao/userpermissions.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminbloguserslistview.class.php" );
@@ -66,26 +67,23 @@
             return true;
         }
 
-        function perform()
-        {
+		function addBlogUser()
+		{
             $this->_notificationText = $this->_request->getValue( "newBlogUserText" );
-        	$this->_newUsername = Textfilter::filterAllHTML($this->_request->getValue( "newBlogUserName" ));
-			$this->_perms = $this->_request->getValue( "perm" );
-		
+        	$this->_newUsername = $this->_request->getFilteredValue( "newBlogUserName", new HtmlFilter());
+			$this->_perms = $this->_request->getValue( "perm" );			
+			
         	// see if the user exists
             $users = new Users();
             $userInfo = $users->getUserInfoFromUsername( $this->_newUsername );
             if( !$userInfo ) {
-            	$this->_view = new AdminNewBlogUserView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->pr("error_invalid_user"), $this->_newUsername );
-				$this->_form->setFieldValidationStatus( "newBlogUserName", false );
-                $this->setCommonData( true );
-
+				$this->_message = $this->_locale->pr("error_invalid_user", $this->_newUsername );
                 return false;
             }
 			$this->notifyEvent( EVENT_USER_LOADED, Array( "user" => &$userInfo ));			
-
+			
             // get the permissions that this user will be granted
+			$this->notifyEvent( EVENT_PRE_USER_UPDATE, Array( "user" => &$userInfo ));
             $userPerms = new UserPermissions();
 			if( is_array( $this->_perms )) {
 				foreach( $this->_perms as $val => $permId ) {
@@ -94,22 +92,32 @@
 				}
 			}
 			
-			$this->notifyEvent( EVENT_PRE_USER_UPDATE, Array( "user" => &$userInfo ));
-            if( !$res ) {
+			if( !$res ) {
+				$this->_message = $this->_locale->pr("error_adding_user", $userInfo->getUsername());
+				return( false );
+			}
+			$this->notifyEvent( EVENT_POST_USER_UPDATE, Array( "user" => &$userInfo ));			
+
+            // send a notification if enabled
+            if( $this->_sendNotification ) {
+            	$this->sendNotificationEmail( $userInfo );
+            }
+
+			$this->_message = $this->_locale->pr("user_added_to_blog_ok", $userInfo->getUsername());
+
+			return( true );
+		}
+
+        function perform()
+        {
+            if( !$this->addBlogUser()) {
             	// there was an error adding the user to the blog
             	$this->_view = new AdminNewBlogUserView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->pr("error_adding_user", $userInfo->getUsername()));
+                $this->_view->setErrorMessage( $this->_message );
                 $this->setCommonData();
-
                 return false;
             }
-			$this->notifyEvent( EVENT_POST_USER_UPDATE, Array( "user" => &$userInfo ));
 
-            // send a notification if enabled
-            if( $this->_sendNotification ) {
-            	$this->sendNotificationEmail( $userInfo );
-            }
-
 			if( $this->userHasPermission( "view_blog_users" ))  {
             	$this->_view = new AdminBlogUsersListView( $this->_blogInfo );
 			}
@@ -117,11 +125,22 @@
 				$this->_view = new AdminNewBlogUserView( $this->_blogInfo );
 			}
 				
-            $this->_view->setSuccessMessage( $this->_locale->pr("user_added_to_blog_ok", $userInfo->getUsername()));
+            $this->_view->setSuccessMessage( $this->_message );
             $this->setCommonData();
 
             return true;
         }
-        
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+            $this->_view = new AdminAjaxView( $this->_blogInfo );			
+            if( $this->addBlogUser())
+				$this->_view->setSuccessMessage( $this->_message );
+			else
+                $this->_view->setErrorMessage( $this->_message );
+
+            return true;			
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminaddcustomfieldaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddcustomfieldaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddcustomfieldaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -7,6 +7,7 @@
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/admintemplatedview.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/admincustomfieldslistview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
 
     /**
      * \ingroup Action
@@ -28,9 +29,9 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// data validation
-			$this->registerFieldValidator( "fieldName", new StringValidator());
-			$this->registerFieldValidator( "fieldDescription", new StringValidator());
-			$this->registerFieldValidator( "fieldType", new IntegerValidator());
+			$this->registerFieldValidator( "fieldName", new StringValidator(), false, $this->_locale->tr("error_empty_name"));
+			$this->registerFieldValidator( "fieldDescription", new StringValidator(), false, $this->_locale->tr("error_empty_description"));
+			$this->registerFieldValidator( "fieldType", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value" ));
 			$this->_form->registerField( "fieldSearchable" );
 			$this->_form->registerField( "fieldHidden" );
 			$this->_form->registerField( "fieldId" );
@@ -41,15 +42,12 @@
 			
 			$this->requirePermission( "add_custom_field" );
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function addCustomField()
+		{
 			// fetch the data
-			$this->_fieldName = Textfilter::filterAllHTML($this->_request->getValue( "fieldName" ));
-			$this->_fieldDescription = Textfilter::filterAllHTML($this->_request->getValue( "fieldDescription" ));
+			$this->_fieldName = $this->_request->getValue( "fieldName", new HtmlFilter());
+			$this->_fieldDescription = $this->_request->getValue( "fieldDescription", new HtmlFilter());
 			$this->_fieldType = $this->_request->getValue( "fieldType" );
 			$this->_fieldSearchable = (int)($this->_request->getValue( "fieldSearchable" ) != "" );
 			$this->_fieldHidden = (int)($this->_request->getValue( "fieldHidden" ) != "" );
@@ -80,25 +78,52 @@
 			$this->notifyEvent( EVENT_PRE_CUSTOM_FIELD_ADD, Array( "field" => &$customField ));
 			
 			$result = $fields->addCustomField( $customField );
+			if( !$result ) 
+				return false;
+
+			// throw the post-event if all went fine
+			$this->notifyEvent( EVENT_POST_CUSTOM_FIELD_ADD, Array( "field" => &$customField ));
 			
+			return( $customField );
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$customField = $this->addCustomField();
 			if( $this->userHasPermission( "view_custom_fields" ))
 				$this->_view = new AdminCustomFieldsListView( $this->_blogInfo );
 			else
 				$this->_view = new AdminTemplatedView( $this->_blogInfo, "newcustomfield" );
 											   
-			if( !$result ) {				
+			if( !$customField ) {				
 				$this->_view->setErrorMessage( $this->_locale->tr("error_adding_custom_field" ));
 			}
 			else {
-				$this->_view->setSuccessMessage( $this->_locale->pr( "custom_field_added_ok", $customField->getName()));
-				
-				// throw the post-event if all went fine
-				$this->notifyEvent( EVENT_POST_CUSTOM_FIELD_ADD, Array( "field" => &$customField ));
+				$this->_view->setSuccessMessage( $this->_locale->pr( "custom_field_added_ok", $customField->getName()));				
 			}
 			
 			$this->setCommonData();		
-		
-            return true;
+			return( true );
         }
+
+		/**
+		 * Ajax-specific behaviour
+		 */
+		function performAjax()
+		{
+			$customField = $this->addCustomField();
+
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			if( !$customField )			
+				$this->_view->setErrorMessage( $this->_locale->tr("error_adding_custom_field" ));
+			else
+				$this->_view->setSuccessMessage( $this->_locale->pr( "custom_field_added_ok", $customField->getName()));
+
+			return( true );			
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminaddlinkaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddlinkaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddlinkaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -9,6 +9,7 @@
 	lt_include( PLOG_CLASS_PATH."class/data/validator/emptyvalidator.class.php" );	
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminnewlinkview.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminlinkslistview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
 
     /**
      * \ingroup Action
@@ -24,6 +25,7 @@
         var $_linkDescription;
         var $_linkCategoryId;
 		var $_properties;
+		var $_message;
 
         /**
          * Constructor. If nothing else, it also has to call the constructor of the parent
@@ -34,30 +36,35 @@
             $this->AdminAction( $actionInfo, $request );
 			
 			// data validation
-			$this->registerFieldValidator( "linkName", new StringValidator());
-			$this->registerFieldValidator( "linkUrl", new HttpUrlValidator());
+			$this->registerFieldValidator( "linkName", new StringValidator(), false, $this->_locale->tr( "error_empty_name" ));
+			$this->registerFieldValidator( "linkUrl", new HttpUrlValidator(), false, $this->_locale->tr( "error_invalid_url" ));
 			// linkRssFeed will only be validated if it is available in the form
-			$this->registerFieldValidator( "linkRssFeed", new HttpUrlValidator(), true );
+			$this->registerFieldValidator( "linkRssFeed", new HttpUrlValidator(), true, $this->_locale->tr( "error_invalid_url" ));
 			$this->registerFieldValidator( "linkCategoryId", new IntegerValidator());
 			$this->registerFieldValidator( "linkDescription", new EmptyValidator());
 			$view = new AdminNewLinkView( $this->_blogInfo );
 			$view->setErrorMessage( $this->_locale->tr("error_adding_link" ));
 			$this->setValidationErrorView( $view );
 			
+			// data filtering
+			$f = new HtmlFilter();
+			$this->_request->registerFilter( "linkName", $f );
+			$this->_request->registerFilter( "linkUrl", $f );
+			$this->_request->registerFilter( "linkDescription", $f );
+			$this->_request->registerFilter( "linkRssFeed", $f );
+			
+			// permission requirements
 			$this->requirePermission( "add_link" );
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function addLink()
+		{
 			// fetch the data
-            $this->_linkName = Textfilter::filterAllHTML($this->_request->getValue( "linkName" ));
-            $this->_linkUrl  = Textfilter::filterAllHTML($this->_request->getValue( "linkUrl" ));
+            $this->_linkName = $this->_request->getValue( "linkName" );
+            $this->_linkUrl  = $this->_request->getValue( "linkUrl" );
             $this->_linkCategoryId = $this->_request->getValue( "linkCategoryId" );
-            $this->_linkDescription = Textfilter::filterAllHTML($this->_request->getValue( "linkDescription" ));
-			$this->_linkRss = Textfilter::filterAllHTML($this->_request->getValue( "linkRssFeed" ));
+            $this->_linkDescription = $this->_request->getValue( "linkDescription" );
+			$this->_linkRss = $this->_request->getValue( "linkRssFeed" );
 			$this->_properties = Array();
 			
             // adds the new link to the database
@@ -67,28 +74,60 @@
 								   0, $this->_linkRss, $this->_properties );
 			$this->notifyEvent( EVENT_PRE_LINK_ADD, Array( "link" => &$link ));
             if( !$myLinks->addMyLink( $myLink, $this->_blogInfo->getId())) {
-                $this->_view = new AdminNewLinkView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_adding_link"));
-                $this->setCommonData();
-
-                return false;
+				$this->_message = $this->_locale->tr( "error_adding_link" );
+				return( false );
             }
 			$this->notifyEvent( EVENT_POST_LINK_ADD, Array( "link" => &$link ));			
+			
+			// clear the cache
+			CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
+			
+			// set the success message
+			$this->_message = $this->_locale->pr("link_added_ok", $myLink->getName());
 
+            // better to return true if everything fine
+            return( $myLink );			
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			if(!( $myLink = $this->addLink())) {
+            	$this->_view = new AdminNewLinkView( $this->_blogInfo );
+            	$this->_view->setErrorMessage( $this->_message );
+            	$this->setCommonData();
+				return( false );
+			}
+
 			// if the user has no permission to view the links, the we have to find another view
 			if( $this->userHasPermission( "view_links" ))
 	            $this->_view = new AdminLinksListView( $this->_blogInfo );
 			else
                 $this->_view = new AdminNewLinkView( $this->_blogInfo );
 			
-            $this->_view->setSuccessMessage( $this->_locale->pr("link_added_ok", $myLink->getName()));
+            $this->_view->setSuccessMessage( $this->_message );
             $this->setCommonData();
-			
-			// clear the cache
-			CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
 
-            // better to return true if everything fine
-            return true;
+            return false;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );			
+			
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			if( $myLink = $this->addLink()) {
+				$this->_view->setValue( "link", $myLink );
+				$this->_view->setSuccess( true );
+			}
+			else {
+				$this->_view->setSuccess( false );				
+			}
+			$this->_view->setMessage( $this->_message );
+			
+			return( true );
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminaddlinkcategoryaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddlinkcategoryaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddlinkcategoryaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -3,6 +3,7 @@
 	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
     lt_include( PLOG_CLASS_PATH."class/dao/mylinkscategories.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminlinkcategorieslistview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/admin/admintemplatedview.class.php" );	
 
@@ -27,43 +28,78 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// data validation
-			$this->registerFieldValidator( "linkCategoryName", new StringValidator());
-			$this->setValidationErrorView( new AdminTemplatedView( $this->_blogInfo, "newlinkcategory" ));
+			$this->registerFieldValidator( "linkCategoryName", new StringValidator(), false, $this->_locale->tr("error_empty_name"));
+			$view = new AdminTemplatedView( $this->_blogInfo, "newlinkcategory" );
+			$view->setErrorMessage( $this->_locale->tr( "error_adding_link_category" ));
+			$this->setValidationErrorView( $view );
 			
 			$this->requirePermission( "add_link_category" );
         }
+
+		function addLinkCategory()
+		{
+        	// add the new link category to the database
+			$this->_linkCategoryName = $this->_request->getFilteredValue( "linkCategoryName", new HtmlFilter());
+            $mylinksCategories = new MyLinksCategories();
+            $this->_mylinksCategory = new MyLinksCategory( $this->_linkCategoryName, 
+			                                        $this->_blogInfo->getId(), 
+													0, 
+													$this->_properties );			
+													
+			$result = $mylinksCategories->addMyLinksCategory( $this->_mylinksCategory, $this->_blogInfo->getId());
+			
+			if( $result ) {
+				// clear the cache				
+				CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
+				// and set a message
+				$this->_message = $this->_locale->pr("link_category_added_ok", $this->_mylinksCategory->getName());
+			}
+			else {
+				$this->_message = $this->_locale->tr("error_adding_link_category");
+			}
+			
+			return( $result );
+		}
         
         /**
          * Carries out the specified action
          */
         function perform()
         {
-        	// add the new link category to the database
-			$this->_linkCategoryName = Textfilter::filterAllHTML($this->_request->getValue( "linkCategoryName" ));
-            $mylinksCategories = new MyLinksCategories();
-            $mylinksCategory = new MyLinksCategory( $this->_linkCategoryName, 
-			                                        $this->_blogInfo->getId(), 
-													0, 
-													$this->_properties );
 			// the view is the same for both conditions
 			if( $this->userHasPermission( "view_link_categories" ))
            		$this->_view = new AdminLinkCategoriesListView( $this->_blogInfo );													
 			else
 				$this->_view = new AdminTemplatedView( $this->_blogInfo, "newlinkcategory" );
+				
+			$result = $this->addLinkCategory();
 													
-            if( !$mylinksCategories->addMyLinksCategory( $mylinksCategory, $this->_blogInfo->getId())) {
+            if( !$result ) {
 				// set an error message
-                $this->_view->setErrorMessage( $this->_locale->tr("error_adding_link_category"));
+                $this->_view->setErrorMessage( $this->_message);
             }
 			else {
-				// clear the cache
-				CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
-				$this->_view->setSuccessMessage( $this->_locale->pr("link_category_added_ok", $mylinksCategory->getName()));	
-			}
+				// or success
+				$this->_view->setSuccessMessage( $this->_message );	
+			}			
 			
             $this->setCommonData();
 
             return true;
         }
+
+		function performAjax()
+		{
+			$result = $this->addLinkCategory();
+			
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo, "blah blah" );
+			
+			$this->_view->setSuccess( $result );
+			$this->_view->setMessage( $this->_message );
+			$this->_view->setValue( "linkcategory", $this->_mylinksCategory );
+			
+			return( true );
+		}
     }
 ?>

Modified: plog/trunk/class/action/admin/adminaddlocationajaxaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddlocationajaxaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddlocationajaxaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,6 +1,6 @@
 <?php
 
-	lt_include( PLOG_CLASS_PATH."class/action/admin/ajax/adminajaxaction.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
@@ -10,20 +10,28 @@
      * \ingroup Action
      * @private
      */
-	class AdminAddLocationAjaxAction extends AdminAjaxAction
+	class AdminAddLocationAjaxAction extends AdminAction
 	{
 		function AdminAddLocationAjaxAction( $actionInfo, $request )
 		{
 			$this->AdminAction( $actionInfo, $request );
 			
-			$this->registerFieldValidator( "lat", new StringValidator());
-			$this->registerFieldValidator( "long", new StringValidator());
-			$this->registerFieldValidator( "desc", new StringValidator());									
-			$this->setValidationErrorView( $this->getErrorView( $this->_locale->tr("error_adding_location" )));
+			$this->registerFieldValidator( "lat", new StringValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerFieldValidator( "long", new StringValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerFieldValidator( "desc", new StringValidator(), false, $this->_locale->tr("error_incorrect_value" ));									
+			
+			$view = new AdminAjaxView( $this->_blogInfo );
+			$view->setValue( "message", $this->_locale->tr("error_adding_location" ));
+			$this->setValidationErrorView( $view );
 		}
 		
 		function perform()
 		{
+			die( "output not supported" );
+		}
+		
+		function performAjax()
+		{
 			// load data from the request
 			$lat = $this->_request->getValue( "lat" );
 			$long = $this->_request->getValue( "long" );
@@ -37,23 +45,20 @@
 				$desc							// description
 			);
 			
+            $this->_view = new AdminAjaxView( $this->_blogInfo, "addLocationAjax" );			
+			
 			// add the Location object and send an error if there was a problem
 			$locations = new Locations();
 			$res = $locations->addLocation( $loc );
 			if( !$res ) {
-				$this->_view = $this->getErrorView( $this->_locale->tr("error_adding_location" ));
-				$this->setCommonData();
+				$this->_view->setErrorMessage( $this->_locale->tr("error_adding_location" ));
 				return( false );
 			}
 			
 			// everything went fine, we can send the confirmation
-            $this->_view = new AdminAjaxView( $this->_blogInfo, "response" );
-            $this->_view->setValue( "method", "addLocationAjax" );
+            $this->_view->setSuccessMessage( "message", $this->_locale->tr("location_added_ok" ));
+			$this->_view->setValue( "location", $loc );
 
-            $this->_view->setValue( "success", "1" );
-            $this->_view->setValue( "message", $this->_locale->tr("location_added_ok" ));
-			$this->_view->setValue( "result", $loc );
-
             return true;
 		}
     }

Modified: plog/trunk/class/action/admin/adminaddpostaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddpostaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddpostaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,6 +16,8 @@
      */
     class AdminAddPostAction extends AdminPostManagementCommonAction
 	{
+		var $_article;
+		
     	/**
          * Constructor. If nothing else, it also has to call the constructor of the parent
          * class, BlogAction with the same parameters
@@ -25,17 +27,18 @@
         	$this->AdminPostManagementCommonAction( $actionInfo, $request );
         	
         	// for data validation purposes, posts must have at least a topic, an intro text, and a category
-        	$this->registerFieldValidator( "postText", new StringValidator());
-        	$this->registerFieldValidator( "postTopic", new StringValidator());
-        	$this->registerFieldValidator( "postCategories", new ArrayValidator( new IntegerValidator()));
-        	$this->registerFieldValidator( "globalArticleCategoryId", new IntegerValidator(), true );
+        	$this->registerFieldValidator( "postText", new StringValidator(), false, $this->_locale->tr("error_missing_post_text" ));
+        	$this->registerFieldValidator( "postTopic", new StringValidator(), false, $this->_locale->tr("error_missing_post_topic" ));
+        	$this->registerFieldValidator( "postCategories", new ArrayValidator(), false, $this->_locale->tr("error_no_category_selected"));
+        	$this->registerFieldValidator( "globalArticleCategoryId", new IntegerValidator(), true,  $this->_locale->tr("error_no_global_article_category_selected"));
+			$this->registerFieldValidator( "postUser", new IntegerValidator(), false, $this->_locale->tr("error_invalid_user" ));
+			$this->registerFieldValidator( "postStatus", new IntegerValidator(), false, $this->_locale->tr( "error_incorrect_value" ));
         	$view = new AdminNewPostView( $this->_blogInfo );
         	$view->setErrorMessage( $this->_locale->tr("error_adding_post"));
         	$this->setValidationErrorView( $view );
         	
         	// these fields do not need to be validated but should be there when we show the view once again
         	$this->registerField( "postSlug" );
-        	$this->registerField( "postStatus" );
         	$this->registerField( "sendNotification" );
         	$this->registerField( "sendTrackbacks" );
         	$this->registerField( "sendPings" );
@@ -44,7 +47,6 @@
         	$this->registerField( "customField" );
         	$this->registerField( "postDateTime" );
         	$this->registerField( "trackbackUrls" );
-			$this->registerField( "postUser" );
 
 			// security checks
 			$this->requirePermission( "add_post" );
@@ -102,13 +104,10 @@
 			
 			return $artId;
 		}
-
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
-            lt_include( PLOG_CLASS_PATH."class/dao/article.class.php" );
+		
+		function saveArticle()
+		{
+          lt_include( PLOG_CLASS_PATH."class/dao/article.class.php" );
 	        lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
 
 			$this->_fetchCommonData();
@@ -118,11 +117,11 @@
             $this->_previewPost    = $this->_request->getValue( "previewPost" );
             $this->_addPost        = $this->_request->getValue( "addPost" );
 			$this->_saveDraft      = $this->_request->getValue( "isDraft" );
-	        
+
             // we know for sure that the information is correct so we can now add
             // the post to the database
 			$postText = Textfilter::xhtmlize($this->_postText);
-			
+
 			$article  = new Article( $this->_postTopic, 
 			                         $postText, 
 			                         $this->_postCategories,
@@ -136,25 +135,11 @@
 			$article->setDateObject( $this->_postTimestamp );
 			$article->setCommentsEnabled( $this->_commentsEnabled );
 			$article->setGlobalCategoryId( $this->_globalArticleCategoryId );
-		
+
 			// save the article to the db
 			$artId = $this->_savePostData( $article );
 			
-			// depending on the permission that the user has, we'll show one view or another
-			if( !$this->userHasPermission( "view_posts" ))
-				$view = "AdminNewPostView";
-			else
-				$view = "AdminPostsListView";			
-			
-        	// once we have built the object, we can add it to the database
-        	if( $artId ) {
-	            // clear autosave cookie
-	            $this->clearAutoSaveCookie();
-
-                $this->_view = new $view( $this->_blogInfo );
-            	//$article->setId( $artId );
-                $message = $this->_locale->tr("post_added_ok");
-                
+			if( $artId ) {
                 // train the filter, but only if enabled
 				if( $this->_config->getValue( "bayesian_filter_enabled" ) == true ) {
 		            lt_include( PLOG_CLASS_PATH."class/bayesian/bayesianfiltercore.class.php" );
@@ -170,9 +155,43 @@
                     $message .= " ".$this->_locale->tr("send_notifications_ok");
         	    }
 
+				$this->notifyEvent( EVENT_POST_POST_ADD, Array( "article" => &$article )); 
+				
+				// empty the cache used by this blog
+                lt_include( PLOG_CLASS_PATH."class/template/cachecontrol.class.php" );
+
+				CacheControl::resetBlogCache( $this->_blogInfo->getId());			
+			}
+			
+			return( $article );			
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$article = $this->saveArticle();
+  			
+			// depending on the permission that the user has, we'll show one view or another
+			if( !$this->userHasPermission( "view_posts" ))
+				$view = "AdminNewPostView";
+			else
+				$view = "AdminPostsListView";			
+			
+        	// once we have built the object, we can add it to the database
+			$message = "";
+        	if( $article ) {
+	            // clear autosave cookie
+	            $this->clearAutoSaveCookie();
+
+                $this->_view = new $view( $this->_blogInfo );
+            	//$article->setId( $artId );
+                $message = $this->_locale->tr("post_added_ok");
+                
                 // we only have to send trackback pings if the article was published
                 // otherwise there is no need to...
-				$article->setId( $artId );
+				//$article->setId( $artId );
                 if( $article->getStatus() == POST_STATUS_PUBLISHED) {
                 	// get the output from the xmlrpc pings but only if the user decided to do so!
 
@@ -212,14 +231,7 @@
 							$this->_view->setValue( "trackbackLinks", $trackbackLinks );            				
          				}
                     }
-                    $this->_view->setSuccessMessage( $message );
-					
-					$this->notifyEvent( EVENT_POST_POST_ADD, Array( "article" => &$article )); 
-					
-					// empty the cache used by this blog
-	                lt_include( PLOG_CLASS_PATH."class/template/cachecontrol.class.php" );
-
-					CacheControl::resetBlogCache( $this->_blogInfo->getId());						
+                    $this->_view->setSuccessMessage( $message );											
                 }
                 else {
                 	$this->_view = new $view( $this->_blogInfo );
@@ -250,5 +262,29 @@
 	    	setcookie( $cookieBaseName.'postTopic', '', -1, '/' );
 	    	setcookie( $cookieBaseName.'postText', '', -1, '/' );
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			
+			if(( $article = $this->saveArticle())) {
+				if( $article->getStatus() == POST_STATUS_PUBLISHED ) {
+					$message = $this->_locale->tr( "post_added_ok" );
+				}
+				else {
+					$message = $this->_locale->tr( "post_added_not_published" );
+				}
+				$this->_view->setSuccessMessage( $message );
+				$this->_view->setValue( "article", $article );
+			}
+			else {
+				$this->_view->setErrorMessage( $this->_locale->tr("error_adding_post" ));
+			}
+			
+			$this->clearAutoSaveCookie();
+			
+			return( true );
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminaddresourcealbumaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminaddresourcealbumaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminaddresourcealbumaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -5,6 +5,7 @@
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminresourceslistview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
     lt_include( PLOG_CLASS_PATH."class/gallery/dao/galleryalbums.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/template/cachecontrol.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
@@ -31,22 +32,21 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// validation stuff
-			$this->registerFieldValidator( "albumName", new StringValidator());
-			$this->registerFieldValidator( "parentId", new IntegerValidator());
+			$this->registerFieldValidator( "albumName", new StringValidator(), false, $this->_locale->tr("error_empty_name"));
+			$this->registerFieldValidator( "parentId", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value"));
 			$this->_form->registerField( "albumDescription" );
-			$this->setValidationErrorView( new AdminNewAlbumView( $this->_blogInfo ));
+			$view = new AdminNewAlbumView( $this->_blogInfo );
+			$view->setErrorMessage( $this->_locale->tr("error_adding_album" ));
+			$this->setValidationErrorView( $view );
 			
 			$this->requirePermission( "add_album" );
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function addAlbum()
+		{
 			// fetch our data
-        	$this->_albumName = Textfilter::filterAllHTML($this->_request->getValue( "albumName" ));
-            $this->_albumDescription = Textfilter::filterAllHTML($this->_request->getValue( "albumDescription" ));
+        	$this->_albumName = $this->_request->getFilteredValue( "albumName", new HtmlFilter());
+            $this->_albumDescription = $this->_request->getFilteredValue( "albumDescription", new HtmlFilter());
             $this->_parentId = $this->_request->getValue( "parentId" );			
             $showAlbum = $this->_request->getValue("showAlbum") ? 1 : 0;
             
@@ -64,25 +64,55 @@
 			$this->notifyEvent( EVENT_PRE_ALBUM_ADD, Array( "album" => &$album ));
 			// and add it to the database
             $result = $albums->addAlbum( $album );
-            
+
+			if( !$result )
+				return( false );
+				
+			$this->notifyEvent( EVENT_POST_ALBUM_ADD, Array( "album" => &$album ));								
+			// clear the cache if everything went fine
+			CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
+			
+			return( $album );			
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$album = $this->addAlbum();
+			
             if( $this->userHasPermission( "view_resources" ))
            		$this->_view = new AdminResourcesListView( $this->_blogInfo, Array( "albumId" => $this->_parentId ));
            	else
            		$this->_view = new AdminNewAlbumView( $this->_blogInfo );
            	
-            if( $result ) {
+            if( $album )
                 $this->_view->setSuccessMessage( $this->_locale->pr( "album_added_ok", $album->getName()));
-				$this->notifyEvent( EVENT_POST_ALBUM_ADD, Array( "album" => &$album ));								
-				// clear the cache if everything went fine
-				CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
-            }
-            else {
-                $this->_view->setErrorMessage( $this->_locale->tr("error_adding_album" ) );
-            }
+            else
+                $this->_view->setErrorMessage( $this->_locale->tr("error_adding_album" ));
+
             $this->setCommonData();
 
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			
+			$album = $this->addAlbum();
+			if( $album ) {
+				$this->_view->setSuccessMessage($this->_locale->pr( "album_added_ok", $album->getName()));
+				$this->_view->setValue( "album", $album );
+			}
+			else {
+                $this->_view->setErrorMessage( $this->_locale->tr("error_adding_album" ));				
+			}
+			
+			return( true );
+		}
     }
 ?>

Modified: plog/trunk/class/action/admin/adminadminblogselectaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminadminblogselectaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminadminblogselectaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -75,4 +75,4 @@
             return true;
         }
     }
-?>
+?>
\ No newline at end of file

Copied: plog/trunk/class/action/admin/adminblogselectaction.class.php (from rev 5682, plog/branches/lifetype-1.3-ajax/class/action/admin/adminblogselectaction.class.php)
===================================================================
--- plog/trunk/class/action/admin/adminblogselectaction.class.php	                        (rev 0)
+++ plog/trunk/class/action/admin/adminblogselectaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,111 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/action/action.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/view/admin/admindashboardview.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/view/admin/admindefaultview.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/dao/users.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
+    lt_include( PLOG_CLASS_PATH."class/net/http/session/sessioninfo.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/misc/version.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/locale/locales.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/view/admin/adminnewpostview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+
+    /**
+     * \ingroup Action
+     * @private
+     *
+     * When the user fills in the login form, we jump to this action which will show
+     * another form when the user will choose to which of the blog he or she wants to
+     * carry out administrative tasks.
+     */
+    class AdminBlogSelectAction extends Action 
+	{
+
+        var $_locale;
+		var $_pm;
+		var $_config;
+		var $_userInfo;
+
+    	/**
+         * Constructor. If nothing else, it also has to call the constructor of the parent
+         * class, BlogAction with the same parameters
+         */
+        function AdminBlogSelectAction( $actionInfo, $request )
+        {
+        	$this->Action( $actionInfo, $request );
+
+            $this->_config =& Config::getConfig();
+            $this->_locale =& Locales::getLocale( $this->_config->getValue( "default_locale" ));			
+			// create a plugin manager
+			$this->_pm =& PluginManager::getPluginManager();
+        }
+
+		function validate()
+		{
+			// we need to check if there is a user session already created and if not,
+			// reject the request
+            // We have to update the userInfo in session after we check all situations
+            $session = HttpVars::getSession();
+            $sessionInfo = $session["SessionInfo"];
+
+            if( !$sessionInfo->getValue( "userInfo" )) {
+				$this->_view =  new AdminDefaultView();
+				$this->_view->setErrorMessage( $this->_locale->tr("error_access_forbidden" ));	
+				$result = false;
+			}
+			else { 
+				$this->_userInfo = $sessionInfo->getValue( "userInfo" );
+				$result = true;
+			}
+				
+			return( $result && parent::validate());
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$userInfo = $this->_userInfo;
+	
+            // get the list of blogs to which the user belongs
+			$users = new Users();
+            $userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
+
+            // but if he or she does not belong to any yet, we quit
+            if( empty($userBlogs)) {
+            	$this->_view = new AdminDefaultView();
+                $this->_view->setErrorMessage( $this->_locale->tr("error_dont_belong_to_any_blog"));
+				$this->setCommonData();
+
+                return false;
+            }
+			
+			$this->_pm->notifyEvent( EVENT_BLOGS_LOADED, Array( "blogs" => &$userBlogs, "from" => "Login" ));			
+			
+			// check if we are skipping the dashboard
+			if( $this->_config->getValue( "skip_dashboard" )) {
+				// get the first blog that came
+				$this->_blogInfo = $userBlogs[0];
+				// set it in the session
+            	$session = HttpVars::getSession();
+            	$sessionInfo->setValue( "blogInfo", $this->_blogInfo );
+            	$session["SessionInfo"] = $sessionInfo;
+            	HttpVars::setSession( $session );			
+            	// and then continue...
+            	if( $userInfo->hasPermissionByName( "new_post", $this->_blogInfo->getId()))
+					AdminController::setForwardAction( "newPost" );
+				else
+					AdminController::setForwardAction( "Manage" );
+			}
+			else {
+				$this->_view = new AdminDashboardView( $userInfo, $userBlogs );	
+			}
+            // better to return true if everything's fine
+            return true;
+        }
+    }
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminblogsettingsaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminblogsettingsaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminblogsettingsaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -34,5 +34,18 @@
             // better to return true if everything fine
             return true;
         }
+
+		/**
+		 * Ajax specific behaviour
+		 */
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setSuccess( true );
+			$this->_view->setValue( "bloginfo", $this->_blogInfo );
+			
+			return( true );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admindefaultaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admindefaultaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admindefaultaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -69,4 +69,4 @@
             return true;
         }
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditarticlecategoryaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditarticlecategoryaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditarticlecategoryaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -38,15 +38,25 @@
 			$this->requirePermission( "update_category" );
         }
 
+		function loadData()
+		{
+        	// fetch the category
+			$this->_categoryId = $this->_request->getValue( "categoryId" );
+            $categories = new ArticleCategories();
+            $category   = $categories->getCategory( $this->_categoryId, $this->_blogInfo->getId());
+
+			if( $category )
+				$this->notifyEvent( EVENT_CATEGORY_LOADED, Array( "category" => &$category ));
+
+			return( $category );
+		}
+
         /**
          * Carries out the specified action
          */
         function perform()
         {
-        	// fetch the category
-			$this->_categoryId = $this->_request->getValue( "categoryId" );
-            $categories = new ArticleCategories();
-            $category   = $categories->getCategory( $this->_categoryId, $this->_blogInfo->getId());
+			$category = $this->loadData();
             // show an error if we couldn't fetch the category
             if( !$category ) {
             	$this->_view = new AdminArticleCategoriesListView( $this->_blogInfo );
@@ -57,7 +67,6 @@
                 return false;
             }
 			
-			$this->notifyEvent( EVENT_CATEGORY_LOADED, Array( "category" => &$category ));			
             // otherwise show the form to edit its fields
         	$this->_view = new AdminTemplatedView( $this->_blogInfo, "editarticlecategory" );
             $this->_view->setValue( "category", $category );
@@ -70,5 +79,21 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			
+			$category = $this->loadData();
+			if( $category ) {
+				$this->_view->setSuccess( true );
+				$this->_view->setValue( "category", $category );
+			}
+			else {
+				$this->_view->setSuccess( false );
+				$this->_view->setMessage( $this->_locale->tr("error_fetching_category" ));
+			}
+		}
     }
 ?>

Modified: plog/trunk/class/action/admin/admineditbloguseraction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditbloguseraction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditbloguseraction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -30,17 +30,24 @@
 			$this->requirePermission( "update_blog_user");
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function loadUser()
+		{
 			// fetch the data, we already know it's valid and that we can trust it!
 			$userId = $this->_request->getValue( "userId" );
 			
 			// load the user
 			$users = new Users();
 			$userInfo = $users->getUserInfoFromId( $userId );
+
+			return( $userInfo );
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$userInfo = $this->loadUser();
 			if( !$userInfo ) {
 				$errorView = new AdminBlogUsersListView( $this->_blogInfo );
 				$errorView->setErrorMessage( $this->_locale->tr("error_invalid_user_id" ));
@@ -52,10 +59,29 @@
 			$this->_view = new AdminTemplatedView( $this->_blogInfo, "editbloguser" );
 			$this->_view->setValue( "edituser", $userInfo );			
 	        $perms = new Permissions();
-			$this->_view->setValue( "perms", $perms->getAllPermissions());			
+			$this->_view->setValue( "perms", $perms->getAllPermissions());
 			$this->setCommonData();
 			
 			return( true );
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			
+			$userInfo = $this->loadUser();
+			if( !$userInfo ) {
+				$this->_view->setErrorMessage( $this->_locale->tr("error_invalid_user_id" ));
+				return( false );
+			}			
+			
+			$this->_view->setValue( "bloguser", $userInfo );
+			$this->_view->setValue( "blog", $this->_blogInfo );
+			$this->_view->setValue( "permissions", $userInfo->getPermissions( $this->_blogInfo->getId()));
+			
+			// include also the permission that this user has in this blog
+			return( true );
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditcustomfieldaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditcustomfieldaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditcustomfieldaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -14,7 +14,6 @@
      */
     class AdminEditCustomFieldAction extends AdminAction
 	{
-
     	var $_fieldId;
 
         function AdminEditCustomFieldAction( $actionInfo, $request )
@@ -26,36 +25,35 @@
 			$view = new AdminCustomFieldsListView( $this->_blogInfo );
 			$view->setErrorMessage( $this->_locale->tr( "error_fetching_custom_field" ));
 			$this->setValidationErrorView( $view );
-			// dummy validation data
-			$this->_form->registerField( "fieldName" );
-			$this->_form->registerField( "fieldDescription" );
-			$this->_form->registerField( "fieldType" );
-			$this->_form->registerField( "fieldSearchable" );
-			$this->_form->registerField( "fieldHidden" );
-			$this->_form->registerField( "fieldValues" );
 			
 			$this->requirePermission( "update_custom_field" );
         }
+
+		function getCustomField()
+		{
+        	// fetch the field information
+			$this->_fieldId = $this->_request->getValue( "fieldId" );
+			$fields = new CustomFields();
+			$field = $fields->getCustomField( $this->_fieldId );
+			
+			// fire the field loaded event, in case any plugin wants to do anything with it...
+			$this->notifyEvent( EVENT_CUSTOM_FIELD_LOADED, Array( "field" => &$field ));			
+			
+			return( $field );			
+		}
         
         /**
          * Carries out the specified action
          */
         function perform()
         {
-        	// fetch the field information
-			$this->_fieldId = $this->_request->getValue( "fieldId" );
-			$fields = new CustomFields();
-			$field = $fields->getCustomField( $this->_fieldId );
-			
             // show an error if we couldn't fetch the link
+			$field = $this->getCustomField();
             if( !$field ) {
             	$this->_view = new AdminCustomFieldsListView( $this->_blogInfo );
                 $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_custom_field"));
             }
-			else {
-				// fire the field loaded event, in case any plugin wants to do anything with it...
-				$this->notifyEvent( EVENT_CUSTOM_FIELD_LOADED, Array( "field" => &$field ));
-			
+			else {			
 				$this->_view = new AdminTemplatedView( $this->_blogInfo, "editcustomfield" );
 				$this->_view->setValue( "fieldName", $field->getName());
 				$this->_view->setValue( "fieldDescription", $field->getDescription());
@@ -71,5 +69,20 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$field = $this->getCustomField();
+			if( !$field )
+				$this->_view->setErrorMessage($this->_locale->tr("error_fetching_custom_field"));
+			else {
+				$this->_view->setSuccess( true );
+				$this->_view->setValue( "customfield", $field );
+			}
+			
+			return( false );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditlinkaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditlinkaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditlinkaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -39,27 +39,35 @@
 			// permission checks
 			$this->requirePermission( "update_link" );
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function loadLink()
+		{
         	// fetch the link
 			$this->_linkId = $this->_request->getValue( "linkId" );
             $links = new MyLinks();
             $link  = $links->getMyLink( $this->_linkId, $this->_blogInfo->getId());
             // show an error if we couldn't fetch the link
             if( !$link ) {
+                return false;
+            }
+
+			$this->notifyEvent( EVENT_LINK_LOADED, Array( "link" => &$link ));			
+			
+			return( $link );
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {			
+			$link = $this->loadLink();
+            if( !$link ) {
                 $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_link"));
                 $this->setCommonData();
-
                 return false;
-            }
+            }			
 			
-			$this->notifyEvent( EVENT_LINK_LOADED, Array( "link" => &$link ));
-
-            // otherwise show the form to edit its fields
         	$this->_view = new AdminEditLinkView( $this->_blogInfo );
             $this->_view->setValue( "linkName", $link->getName());
             $this->_view->setValue( "linkDescription", $link->getDescription());
@@ -72,5 +80,22 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			$link = $this->loadLink();
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );			
+			if( $link ) {
+				$this->_view->setSuccess( true );
+				$this->_view->setValue( "link", $link );
+			}
+			else {
+				$this->_view->setSucess( false );
+				$this->_view->setMessage( $this->_locale->tr("error_fetching_link" ));
+			}
+			
+			return( false );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditlinkcategoriesaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditlinkcategoriesaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditlinkcategoriesaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -28,11 +28,41 @@
         {
             // get all the link categories
 			$searchTerms = $this->_request->getValue( "searchTerms" );
-            $this->_view = new AdminLinkCategoriesListView( $this->_blogInfo, Array( "searchTerms" => $searchTerms ) );
+            $this->_view = new AdminLinkCategoriesListView( $this->_blogInfo, Array( "searchTerms" => $searchTerms ));
             $this->setCommonData();
 
             // better to return true if everything fine
             return true;
         }
+
+		/**
+		 * Ajax-specific behaviour
+		 */
+		function performAjax()
+		{
+			if( $this->_request->loadAllData()) {
+				// in this case, we load all data
+				lt_include( PLOG_CLASS_PATH."class/dao/mylinkscategories.class.php" );
+				$blogSettings = $this->_blogInfo->getSettings();
+				$linkCategoriesOrder = $blogSettings->getValue( "link_categories_order", MYLINKS_CATEGORIES_NO_ORDER );			
+				// get the link categories
+	            $linkCategories = new MyLinksCategories();
+	            $blogLinkCategories = $linkCategories->getMyLinksCategories( $this->_blogInfo->getId(), 
+				                                                             $linkCategoriesOrder );
+				// pass it to the view
+				lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+				$this->_view = new AdminAjaxView( $this->_blogInfo );
+				$this->_view->setSuccess( true );
+				$this->_view->setValue( "linkcategories", $blogLinkCategories );															
+			}
+			else {
+				lt_include( PLOG_CLASS_PATH."class/view/renderer/ajaxviewrenderer.class.php" );
+				$searchTerms = $this->_request->getValue( "searchTerms" );				
+				$this->_view = new AjaxViewRenderer( new AdminLinkCategoriesListView( $this->_blogInfo, Array( "searchTerms" => $searchTerms )));
+				$this->_view->setSuccess( true );
+			}
+			
+			return( true );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditlinkcategoryaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditlinkcategoryaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditlinkcategoryaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -35,24 +35,35 @@
 			// permission checks
 			$this->requirePermission( "update_link_category" );
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function getLinkCategory()
+		{
         	// fetch the category
 			$this->_categoryId = $this->_request->getValue( "categoryId" );
             $categories = new MyLinksCategories();
             $category   = $categories->getMyLinksCategory( $this->_categoryId, $this->_blogInfo->getId());
             // show an error if we couldn't fetch the category
             if( !$category ) {
-                $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_link_category"));
-                $this->setCommonData();
-
                 return false;
             }
 			$this->notifyEvent( EVENT_LINK_CATEGORY_LOADED, Array( "linkcategory" => &$category ));
+			
+			return( $category );
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$category = $this->getLinkCategory();
+			if( !$category ) {
+				$this->_view = new AdminLinkCategoriesListView( $this->_blogInfo );
+                $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_link_category"));
+                $this->setCommonData();
+				return( false );
+			}
+						
             // otherwise show the form to edit its fields
         	$this->_view = new AdminTemplatedView( $this->_blogInfo, "editlinkcategory" );
 			$this->_view->setValue( "linkCategoryName", $category->getName());
@@ -62,5 +73,23 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			$category = $this->getLinkCategory();
+			if( !$category ) {
+				$this->_view = $this->getAjaxErrorView();
+                $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_link_category"));
+				return( false );
+			}
+						
+            // otherwise show the form to edit its fields
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+        	$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setValue( "linkcategory", $category );
+
+            // better to return true if everything fine
+            return true;			
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditlinksaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditlinksaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditlinksaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -35,6 +35,10 @@
 																
 																
 			$this->requirePermission( "view_links" );
+			
+			// get some information from the request			
+        	$this->_categoryId = $this->_request->getValue( "showCategory" );		
+			$this->_searchTerms = $this->_request->getValue( "searchTerms" );					
         }
 
         /**
@@ -42,10 +46,6 @@
          */
         function perform()
         {
-			// get the id of the category we'd like to load
-        	$this->_categoryId = $this->_request->getValue( "showCategory" );		
-			$this->_searchTerms = $this->_request->getValue( "searchTerms" );
-			
 			// and create the view with all the parameters we'll need
 			$this->_view = new AdminLinksListView( $this->_blogInfo, Array( "showCategory" => $this->_categoryId,
 																            "searchTerms" => $this->_searchTerms, 			
@@ -55,5 +55,19 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			if( $this->_request->loadAllData()) {
+			}
+			else {
+				$linksListView = new AdminLinksListView( $this->_blogInfo, Array( "showCategory" => $this->_categoryId,
+																 "searchTerms" => $this->_searchTerms, 			
+																 "showOrder" => $this->_linkCategoriesOrder ));
+				$linksListView->loadData();
+				lt_include( PLOG_CLASS_PATH."class/view/renderer/ajaxviewrenderer.class.php" );
+				$this->_view = new AjaxViewRenderer( $linksListView );
+			}
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/admineditpostsaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditpostsaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/admineditpostsaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -73,5 +73,26 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			// use the same view class as in the perform() method 
+			// but then convert it to Ajax with the help of this view renderer
+			lt_include( PLOG_CLASS_PATH."class/view/renderer/ajaxviewrenderer.class.php" );
+			// create the view
+			$articlesListView = new AdminPostsListView( $this->_blogInfo, 
+		    	Array( "showCategory" => $this->_request->getValue( "showCategory" ),
+		            	"showStatus" => $this->_request->getValue( "showStatus" ),
+						"showUser" => $this->_request->getValue( "showUser" ),
+						"showMonth" => $this->_request->getValue( "showMonth" ),
+						"searchTerms" => $this->_request->getValue( "searchTerms" ),
+						"showLocation" => $this->_request->getValue( "showLocation" )));
+			// inform it to load the data
+			$articlesListView->loadArticles();
+			// and finally attempt to convert it, it should work :)
+			$this->_view = new AjaxViewRenderer( $articlesListView );
+			$this->_view->setSuccess( true );			
+			return( true );
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminloginaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminloginaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminloginaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -11,6 +11,7 @@
 	lt_include( PLOG_CLASS_PATH."class/locale/locales.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminnewpostview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
 
     /**
      * \ingroup Action
@@ -27,6 +28,8 @@
         var $_userPassword;
         var $_op;
         var $_locale;
+		var $_pm;
+		var $_config;
 
     	/**
          * Constructor. If nothing else, it also has to call the constructor of the parent
@@ -44,44 +47,42 @@
 			$this->registerFieldValidator( "userPassword", new StringValidator());
 			$view = new AdminDefaultView();
 			$view->setErrorMessage( $this->_locale->tr("error_incorrect_username_or_password"));
-			$this->setValidationErrorView( $view );
+			$this->setValidationErrorView( $view );			
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function authenticateUser()
+		{
         	// get the parameters, which have already been validated
-            $this->_userName     = Textfilter::filterAllHTML($this->_request->getValue( "userName" ));
+            $this->_userName     = $this->_request->getValue( "userName", new HtmlFilter());
             $this->_userPassword = $this->_request->getValue( "userPassword" );
-            $this->_op           = Textfilter::filterAllHTML($this->_request->getValue( "op" ));
 
 			// create a plugin manager
-			$pm =& PluginManager::getPluginManager();	
+			$this->_pm =& PluginManager::getPluginManager();	
 		
         	// try to authenticate the user
             $users = new Users();
             if( !$users->authenticateUser( $this->_userName, $this->_userPassword )) {
-            	$this->_view = new AdminDefaultView();
-                $this->_view->setErrorMessage( $this->_locale->tr("error_incorrect_username_or_password"));
-				$this->setCommonData();
-				
-				$pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
-                return false;
-            }
+				return( false );
+			}
 			
-            // if the user is correct, get and put his or her information in the session
-            $userInfo = $users->getUserInfoFromUsername( $this->_userName );
-			
+			// if the user is correct, get and put his or her information in the session
+            return( $users->getUserInfoFromUsername( $this->_userName ));
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$userInfo = $this->authenticateUser();
 			if( !$userInfo ) {
             	$this->_view = new AdminDefaultView();
                 $this->_view->setErrorMessage( $this->_locale->tr("error_incorrect_username_or_password"));
 				$this->setCommonData();
 				
-				$pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
+				$this->_pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
                 return false;
-			}
+            }
 			
 			// check if the user has the "login_perm" permission and is allowed to log in
 			if( !$userInfo->hasPermissionByName( "login_perm" )) {
@@ -89,13 +90,14 @@
                 $this->_view->setErrorMessage( $this->_locale->tr("error_cannot_login"));
 				$this->setCommonData();
 				
-				$pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
+				$this->_pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
                 return false;
 			}
 			
-			$pm->notifyEvent( EVENT_USER_LOADED, Array( "user" => &$userInfo, "from" => "Login" ));
+			$this->_pm->notifyEvent( EVENT_USER_LOADED, Array( "user" => &$userInfo, "from" => "Login" ));
 
             // get the list of blogs to which the user belongs
+			$users = new Users();
             $userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
 
             // but if he or she does not belong to any yet, we quit
@@ -114,29 +116,59 @@
             $sessionInfo->setValue( "userInfo", $userInfo );
             $session["SessionInfo"] = $sessionInfo;
             HttpVars::setSession( $session );
+
+			AdminController::setForwardAction( "blogSelectLogin" );
+
+            // better to return true if everything's fine
+            return true;
+        }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/ajax/ajaxview.class.php" );
+			$this->_view = new AjaxView();			
 			
-			$pm->notifyEvent( EVENT_BLOGS_LOADED, Array( "blogs" => &$userBlogs, "from" => "Login" ));			
+			$userInfo = $this->authenticateUser();
+			if( !$userInfo ) {
+                $this->_view->setErrorMessage( $this->_locale->tr("error_incorrect_username_or_password"));
+				$this->setCommonData();				
+				$this->_pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
+                return false;
+            }
 			
-			// check if we are skipping the dashboard
-			if( $this->_config->getValue( "skip_dashboard" )) {
-				// get the first blog that came
-				$this->_blogInfo = $userBlogs[0];
-				// set it in the session
-            	$session = HttpVars::getSession();
-            	$sessionInfo->setValue( "blogInfo", $this->_blogInfo );
-            	$session["SessionInfo"] = $sessionInfo;
-            	HttpVars::setSession( $session );			
-            	// and then continue...
-            	if( $userInfo->hasPermissionByName( "new_post", $this->_blogInfo->getId()))
-					AdminController::setForwardAction( "newPost" );
-				else
-					AdminController::setForwardAction( "Manage" );
+			// check if the user has the "login_perm" permission and is allowed to log in
+			if( !$userInfo->hasPermissionByName( "login_perm" )) {
+                $this->_view->setErrorMessage( $this->_locale->tr("error_cannot_login"));
+				$this->_pm->notifyEvent( EVENT_LOGIN_FAILURE, Array( "user" => $this->_userName ));
+                return false;
 			}
-			else {
-				$this->_view = new AdminDashboardView( $userInfo, $userBlogs );	
-			}
+			
+			$this->_pm->notifyEvent( EVENT_USER_LOADED, Array( "user" => &$userInfo, "from" => "Login" ));
+
+            // get the list of blogs to which the user belongs
+			$users = new Users();
+            $userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
+
+            // but if he or she does not belong to any yet, we quit
+            if( empty($userBlogs)) {
+                $this->_view->setErrorMessage( $this->_locale->tr("error_dont_belong_to_any_blog"));
+                return false;
+            }
+
+            // We have to update the userInfo in session after we check all situations
+            $session = HttpVars::getSession();
+            $sessionInfo = $session["SessionInfo"];
+
+            $sessionInfo->setValue( "userInfo", $userInfo );
+            $session["SessionInfo"] = $sessionInfo;
+            HttpVars::setSession( $session );
+			
+			$this->_pm->notifyEvent( EVENT_BLOGS_LOADED, Array( "blogs" => &$userBlogs, "from" => "Login" ));			
+			
+			$this->_view->setSuccessMessage( $this->_locale->tr( "please_wait" ));
+			$this->_view->setValue( "userblogs", $userBlogs );
             // better to return true if everything's fine
-            return true;
-        }
+            return true;			
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminlogoutaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminlogoutaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminlogoutaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -23,13 +23,8 @@
         	$this->AdminAction( $actionInfo, $request );
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
-            $config =& Config::getConfig();        	
-			
+		function doLogout()
+		{
 			$this->notifyEvent( EVENT_PRE_LOGOUT );
 
             // remove all the information from the session
@@ -38,8 +33,19 @@
             unset($session["SessionInfo"]);
             $session = Array();
             HttpVars::setSession( $session );
-            session_destroy();
-            
+            session_destroy();			
+
+			$this->notifyEvent( EVENT_POST_LOGOUT );
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+            $this->doLogout();
+
+            $config =& Config::getConfig();		
             $destinationUrl = $config->getValue( "logout_destination_url", "" );
             if( $destinationUrl == "" ) {
 	            // and pass the locale to the template
@@ -54,12 +60,20 @@
 				// nothing else to do, just redirect the browser once we've cleaned up the session
 				$this->_view = new RedirectView( $destinationUrl );				
 			}
-		
-			
-			$this->notifyEvent( EVENT_POST_LOGOUT );
-
+					
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{			
+			$this->doLogout();
+			
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setSuccessMessage( $this->_locale->tr( "logout_message" ));
+			
+			return( true );
+		}
     }
 ?>

Modified: plog/trunk/class/action/admin/adminmainaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminmainaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminmainaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -2,6 +2,7 @@
 
 	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/dao/userpermissions.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
 
     /**
      * \ingroup Action
@@ -23,11 +24,8 @@
         	$this->AdminAction( $actionInfo, $request );
         }
 
-        /**
-         * Validate if everything is correct
-         */
-        function validate()
-        {
+		function doBlogSelect()
+		{
 	        // first of all, check if we have a valid blog id
 	        $this->_blogId = $this->_request->getValue( "blogId" );
             if( $this->_blogId == "" || $this->_blogId < 0 ) {
@@ -97,14 +95,15 @@
             $session["SessionInfo"]->setValue( "blogId", $this->_blogInfo->getId() );
             HttpVars::setSession( $session );
 
-            return true;
-        }
+            return true;			
+		}
 
         /**
          * Carries out the specified action
          */
         function perform()
         {
+			$this->doBlogSelect();
 			// we don't have to worry about much more here, we can let the
 			// $this->_nextAction action take care of everytyhing now...
 			// If $this->_nextAction is null, we use "newPost" as default nextAction
@@ -113,7 +112,8 @@
 
 			if ( $this->_nextAction ) {
 				AdminController::setForwardAction( $this->_nextAction );
-		    } else {
+		    } 
+			else {
 			    if( $this->userHasPermission( "new_post" ))
 					AdminController::setForwardAction( "newPost" );
 				else

Modified: plog/trunk/class/action/admin/adminnewblogtemplateaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminnewblogtemplateaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminnewblogtemplateaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -2,8 +2,8 @@
 
 	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/view/admin/adminerrorview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/template/templatesets/templatesetstorage.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/view/admin/adminblogtemplatesetslistview.class.php" );
 
     /**
      * \ingroup Action
@@ -29,8 +29,8 @@
             	$this->setCommonData();
             }
             else {
-            	$this->_view = new AdminErrorView( $this->_blogInfo );
-                $this->_view->setMessage( $this->_locale->tr("error_add_template_disabled"));
+            	$this->_view = new AdminBlogTemplateSetsListView( $this->_blogInfo );
+                $this->_view->setErrorMessage( $this->_locale->tr("error_add_template_disabled"));
                 $this->setCommonData();
             }
 

Modified: plog/trunk/class/action/admin/adminnewresourceaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminnewresourceaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminnewresourceaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -7,6 +7,8 @@
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminresourceslistview.class.php" );
     lt_include( PLOG_CLASS_PATH."class/gallery/dao/galleryalbums.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/gallery/dao/galleryresourcestorage.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );	
 
     /**
      * \ingroup Action
@@ -67,8 +69,13 @@
             	return false;
             }
 
+			$albumId = $this->_request->getFilteredValue( "albumId", new HtmlFilter());
+			$v = new IntegerValidator();
+			if( !$v->validate( $albumId ))
+				$albumId = 0;
+
             // if all's fine, continue...
-            $this->_view = new AdminNewResourceView( $this->_blogInfo );
+            $this->_view = new AdminNewResourceView( $this->_blogInfo, $albumId );
             $this->setCommonData();
             $this->_view->setValue( "albums", $blogAlbums );
 

Modified: plog/trunk/class/action/admin/adminnewresourcealbumaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminnewresourcealbumaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminnewresourcealbumaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -2,6 +2,8 @@
 
 	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminnewalbumview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );	
 
     /**
      * \ingroup Action
@@ -28,7 +30,12 @@
          */
         function perform()
         {
-            $this->_view = new AdminNewAlbumView( $this->_blogInfo );
+			$parentId = $this->_request->getFilteredValue( "parentId", new HtmlFilter());
+			$v = new IntegerValidator();
+			if( !$v->validate( $parentId ))
+				$parentId = 0;
+	
+            $this->_view = new AdminNewAlbumView( $this->_blogInfo, $parentId );
             $this->setCommonData();
             return true;
         }

Modified: plog/trunk/class/action/admin/adminpermissionrequiredaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminpermissionrequiredaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminpermissionrequiredaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,5 +16,12 @@
 			$this->_view->setErrorMessage( $this->_locale->tr( "error_permission_required" ));
 			$this->setCommonData();
 		}
+		
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setErrorMessage( $this->_locale->tr( "error_permission_required" ));
+		}
 	}
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminpostmanagementcommonaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -53,22 +53,24 @@
 		{
 
             // fetch the timestamp that the post will have
-          	$postDateTime = $this->_request->getValue( "postDateTime" );
-            $dateTimeParts = explode(" ", $postDateTime);
-            $dateParts = explode("/", $dateTimeParts[0] );
-            $timeParts = explode(":",$dateTimeParts[1] );
-            $this->_postDay = $dateParts[0];
-            $this->_postMonth = $dateParts[1];
-            $this->_postYear = $dateParts[2];
-            $this->_postHour = $timeParts[0];
-            $this->_postMinutes = $timeParts[1];
+          	$postDateTime = $this->_request->getValue( "postDateTime", "" );
+            $this->_postTimestamp = new Timestamp();
+			if( $postDateTime ) {
+	            $dateTimeParts = explode(" ", $postDateTime);
+	            $dateParts = explode("/", $dateTimeParts[0] );
+	            $timeParts = explode(":",$dateTimeParts[1] );
+	            $this->_postDay = $dateParts[0];
+	            $this->_postMonth = $dateParts[1];
+	            $this->_postYear = $dateParts[2];
+	            $this->_postHour = $timeParts[0];
+	            $this->_postMinutes = $timeParts[1];
 			
-            $this->_postTimestamp = new Timestamp();
-            $this->_postTimestamp->setMinutes( $this->_postMinutes );
-            $this->_postTimestamp->setHour( $this->_postHour );
-            $this->_postTimestamp->setDay( $this->_postDay );
-            $this->_postTimestamp->setMonth( $this->_postMonth );
-            $this->_postTimestamp->setYear( $this->_postYear );
+	            $this->_postTimestamp->setMinutes( $this->_postMinutes );
+	            $this->_postTimestamp->setHour( $this->_postHour );
+	            $this->_postTimestamp->setDay( $this->_postDay );
+	            $this->_postTimestamp->setMonth( $this->_postMonth );
+	            $this->_postTimestamp->setYear( $this->_postYear );
+			}
 		}
 		
 		/**

Modified: plog/trunk/class/action/admin/adminresourceinfoaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminresourceinfoaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminresourceinfoaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -35,16 +35,24 @@
 			$this->requirePermission( "update_resource" );			
         }
 
+		function loadResource()
+		{
+            // load the resource
+			$this->_resourceId = $this->_request->getValue( "resourceId" );
+            $resources = new GalleryResources();
+            $resource = $resources->getResource( $this->_resourceId, $this->_blogInfo->getId());
+			if( $resource )
+				$this->notifyEvent( EVENT_RESOURCE_LOADED, Array( "resource" => &$resource ));				
+
+			return( $resource );
+		}
+
         /**
          * Carries out the specified action
          */
         function perform()
         {
-            // load the resource
-			$this->_resourceId = $this->_request->getValue( "resourceId" );
-            $resources = new GalleryResources();
-            $resource = $resources->getResource( $this->_resourceId, $this->_blogInfo->getId());
-
+			$resource = $this->loadResource();
             if( !$resource ) {
             	$this->_view = new AdminResourcesListView( $this->_blogInfo );
                 $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_resource"));
@@ -63,5 +71,22 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$resource = $this->loadResource();
+            if( !$resource ) {
+                $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_resource"));
+            }
+            else {
+                $this->_view->setValue( "resource", $resource );
+				$this->_view->setSuccess( true );
+            }
+			
+            // better to return true if everything fine
+            return true;			
+		}
     }
 ?>

Modified: plog/trunk/class/action/admin/adminupdatearticlecategoryaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatearticlecategoryaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatearticlecategoryaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -7,7 +7,7 @@
 	lt_include( PLOG_CLASS_PATH."class/data/validator/emptyvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/admintemplatedview.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminarticlecategorieslistview.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
 
     /**
      * \ingroup Action
@@ -34,26 +34,29 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// data validation settings
-			$this->registerFieldValidator( "categoryName", new StringValidator());
+			$this->registerFieldValidator( "categoryName", new StringValidator(), false, $this->_locale->tr("error_empty_name"));
 			$this->registerFieldValidator( "categoryId", new IntegerValidator());
-			$this->registerFieldValidator( "categoryDescription", new StringValidator());
-			$this->registerFieldValidator( "categoryInMainPage", new EmptyValidator());
+			$this->registerField( "categoryDescription" );
+			$this->registerField( "categoryInMainPage" );
 			$errorView = new AdminTemplatedView( $this->_blogInfo, "editarticlecategory" );
 			$errorView->setErrorMessage( $this->_locale->tr("error_updating_article_category" ));
 			$this->setValidationErrorView( $errorView );
 			
+			// data filtering
+			$f = new HtmlFilter();
+			$this->_request->registerFilter( "categoryName", $f );
+			$this->_request->registerFilter( "categoryDescription", $f );
+			
+			// permission checking
 			$this->requirePermission( "update_category" );			
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function updateCategory()
+		{
 			// get the data from the form
-        	$this->_categoryName = Textfilter::filterAllHTML($this->_request->getValue( "categoryName" ));
+        	$this->_categoryName = $this->_request->getValue( "categoryName" );
             $this->_categoryId   = $this->_request->getValue( "categoryId" );
-			$this->_categoryDescription = Textfilter::filterAllHTML($this->_request->getValue( "categoryDescription" ));
+			$this->_categoryDescription = $this->_request->getValue( "categoryDescription" );
             $this->_categoryInMainPage = $this->_request->getValue( "categoryInMainPage" );
 			$this->_properties = Array();		
 		
@@ -78,29 +81,47 @@
 			$category->setProperties( $this->_properties );
 			$category->setDescription( $this->_categoryDescription );
 			
+			$result = false;
+			if( $categories->updateCategory( $category )) {
+				// fire the post-event
+				$this->notifyEvent( EVENT_POST_CATEGORY_UPDATE, Array( "category" => &$category ));			
+				
+				// clear the cache
+				CacheControl::resetBlogCache( $this->_blogInfo->getId());				
+				
+				// make the category object available for the rest of methods in this class
+				$this->_category = $category;
+				
+				$result = true;
+			}			
+			
+			return( $result );
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {	
+			$result = $this->updateCategory();
+	
 			if( $this->userHasPermission( "view_categories" ))
 				$this->_view = new AdminArticleCategoriesListView( $this->_blogInfo );			
 			else {
 				$this->_view = new AdminTemplatedView( $this->_blogInfo, "editarticlecategory" );
-	            $this->_view->setValue( "category", $category );
-				$this->_view->setValue( "categoryName", $category->getName());
-				$this->_view->setValue( "categoryDescription", $category->getDescription());
-				$this->_view->setValue( "categoryInMainPage", $category->isInMainPage());
-				$this->_view->setValue( "categoryId", $category->getId());				
+	            $this->_view->setValue( "category", $this->_category );
+				$this->_view->setValue( "categoryName", $this->_category->getName());
+				$this->_view->setValue( "categoryDescription", $this->_category->getDescription());
+				$this->_view->setValue( "categoryInMainPage", $this->_category->isInMainPage());
+				$this->_view->setValue( "categoryId", $this->_category->getId());				
 			}
 			
-            if( !$categories->updateCategory( $category )) {
+            if( !$result ) {
                 $this->_view->setErrorMessage( $this->_locale->tr("error_updating_article_category"));
             }
 			else {
 				// if everything fine, load the list of categories
-				$this->_view->setSuccessMessage( $this->_locale->pr("article_category_updated_ok", $category->getName()));
-				
-				// fire the post-event
-				$this->notifyEvent( EVENT_POST_CATEGORY_UPDATE, Array( "category" => &$category ));			
-				
-				// clear the cache
-				CacheControl::resetBlogCache( $this->_blogInfo->getId());			
+				$this->_view->setSuccessMessage( $this->_locale->pr("article_category_updated_ok", $this->_category->getName()));				
 			}
 			
 			$this->setCommonData();			
@@ -108,5 +129,23 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			$result = $this->updateCategory();
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setSuccess( $result );
+			if( $result ) {
+
+				$this->_view->setMessage( $this->_locale->pr("article_category_updated_ok", $this->_category->getName()));
+				$this->_view->setValue( "category", $this->_category );
+			}
+			else {
+				$this->_view->setMessage( $this->_locale->tr("error_updating_article_category" ));
+			}
+
+			return( true );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdateblogsettingsaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -10,8 +10,8 @@
     lt_include( PLOG_CLASS_PATH."class/data/validator/domainvalidator.class.php" );	
 	lt_include( PLOG_CLASS_PATH."class/data/validator/rules/intrangerule.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/net/http/subdomains.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
 
-
     /**
      * \ingroup Action
      * @private
@@ -31,15 +31,15 @@
         	// specific validator that does not allow an integer below 1
 			$val = new IntegerValidator();
 			$val->addRule( new IntRangeRule( 1, 99999999 ));
-			$this->registerFieldValidator( "blogMaxMainPageItems", $val );			
+			$this->registerFieldValidator( "blogMaxMainPageItems", $val, false, $this->_locale->tr("error_invalid_number"));	
 			// the rest of validators, as normal...
-			$this->registerFieldValidator( "blogMaxRecentItems", new IntegerValidator());
-			$this->registerFieldValidator( "blogName",  new BlogNameValidator());
-			$this->registerFieldValidator( "blogLocale", new StringValidator());
-			$this->registerFieldValidator( "blogTemplate", new StringValidator());
-			$this->registerFieldValidator( "blogCategory", new IntegerValidator());
-			$this->registerFieldValidator( "blogNumCommentsPerPage", $val );
-			$this->registerFieldValidator( "blogArticlesOrder", new IntegerValidator());
+			$this->registerFieldValidator( "blogMaxRecentItems", new IntegerValidator(), false, $this->_locale->tr("error_invalid_number"));
+			$this->registerFieldValidator( "blogName",  new BlogNameValidator(), false, $this->_locale->tr("error_invalid_blog_name"));
+			$this->registerFieldValidator( "blogLocale", new StringValidator(), false, $this->_locale->tr("error_incorrect_value"));
+			$this->registerFieldValidator( "blogTemplate", new StringValidator(), false, $this->_locale->tr("error_incorrect_template"));
+			$this->registerFieldValidator( "blogCategory", new IntegerValidator(), false, $this->_locale->tr("error_invalid_blog_category"));
+			$this->registerFieldValidator( "blogNumCommentsPerPage", $val, false, $this->_locale->tr("error_invalid_number"));
+			$this->registerFieldValidator( "blogArticlesOrder", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value"));
 			$this->registerField( "blogAbout" );
 			$this->registerField( "blogShowMoreEnabled" );
 			$this->registerField( "blogEnableHtmlarea" );
@@ -92,24 +92,23 @@
 				// force a validation error
                 if( !Subdomains::isDomainAvailable( $mainDomain ) || !Subdomains::isValidDomainName( $subDomain )) {
 					$valid = false;
-					$this->_form->setFieldValidationStatus( "blogSubDomain", false );					
+					$this->_form->setFieldValidationStatus( "blogSubDomain", false );
+					$this->_form->setFieldErrorMessage( "blogSubDomain", $this->_locale->tr("error_invalid_subdomain"));
 					$this->validationErrorProcessing();					
                 }
 				if( Subdomains::domainNameExists( $this->blogDomain, $this->_blogInfo->getId() )) {
 					$valid = false;
-					$this->_form->setFieldValidationStatus( "blogSubDomain", false );					
+					$this->_form->setFieldValidationStatus( "blogSubDomain", false );
+					$this->_form->setFieldErrorMessage( "blogSubDomain", $this->_locale->tr("error_invalid_domain"));
 					$this->validationErrorProcessing();					
 				}				
             }
 
 			return( $valid );			
 		}
-
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		
+		function updateBlog()
+		{
 			$config =& Config::getConfig();	
 	
         	// fetch the settings from the db and update them accordingly
@@ -129,12 +128,11 @@
            	$blogSettings->setValue( "first_day_of_week",  $this->_request->getValue( "blogFirstDayOfWeek" ));
            	$blogSettings->setValue( "new_drafts_autosave_enabled", Textfilter::checkboxToBoolean($this->_request->getValue( "blogEnableAutosaveDrafts" )));
            	$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" )));
+            $this->_blogInfo->setAbout( $this->_request->getFilteredValue( "blogAbout", new HtmlFilter()));
+            $this->_blogInfo->setBlog( $this->_request->getFilteredValue( "blogName", new HtmlFilter()));
             $this->_blogInfo->setSettings( $blogSettings );
             $this->_blogInfo->setTemplate( $this->_request->getValue( "blogTemplate" ));
 			$this->_blogInfo->setProperties( $this->_request->getValue( "properties" ));
@@ -186,10 +184,6 @@
 			$this->notifyEvent( EVENT_PRE_BLOG_UPDATE, Array( "blog" => &$this->_blogInfo ));
 			$blogs = new Blogs();
             if( !$blogs->updateBlog( $this->_blogInfo )) {
-            	$this->_view = new AdminBlogSettingsView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_settings"));
-               	$this->setCommonData();
-
                 return false;
             }
 
@@ -197,16 +191,50 @@
             $this->saveSession();
 
 			$this->notifyEvent( EVENT_POST_BLOG_UPDATE, Array( "blog" => &$this->_blogInfo ));
-            $this->_view = new AdminBlogSettingsView( $this->_blogInfo );
-            $this->_locale =& Locales::getLocale( $blogSettings->getValue( "locale" ));
-            $this->_view->setSuccessMessage( $this->_locale->pr("blog_settings_updated_ok", $this->_blogInfo->getBlog()));
+			
+			return( true );
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+	        $this->_view = new AdminBlogSettingsView( $this->_blogInfo );
+			$blogSettings = $this->_blogInfo->getSettings();
+	        $this->_locale =& Locales::getLocale( $blogSettings->getValue( "locale" ));	
+			if( $this->updateBlog()) {
+	            $this->_view->setSuccessMessage( $this->_locale->pr("blog_settings_updated_ok", $this->_blogInfo->getBlog()));
+			}
+			else {
+                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_settings"));
+			}
+
             $this->setCommonData();
-
 			// clear the cache
 			CacheControl::resetBlogCache( $this->_blogInfo->getId());
 
             // better to return true if everything fine
             return true;
         }
+
+		/**
+		 * Ajax-specific behaviour
+		 */
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$blogSettings = $this->_blogInfo->getSettings();			
+	        $this->_locale =& Locales::getLocale( $blogSettings->getValue( "locale" ));				
+			if( $this->updateBlog()) {
+				$this->_view->setSuccessMessage( $this->_locale->pr("blog_settings_updated_ok", $this->_blogInfo->getBlog()));				
+			}
+			else {
+				$this->_view->setErrorMessage( $this->_locale->tr("error_updating_settings"));
+			}
+			
+			return( true );
+		}
     }
 ?>

Modified: plog/trunk/class/action/admin/adminupdatebloguseraction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatebloguseraction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatebloguseraction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -12,6 +12,9 @@
      */
     class AdminUpdateBlogUserAction extends AdminAction 
 	{	
+		var $_message;
+		var $_user;
+		
     	/**
          * Constructor. If nothing else, it also has to call the constructor of the parent
          * class, BlogAction with the same parameters
@@ -21,31 +24,26 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// register one validator
-			$this->registerFieldValidator( "userId", new IntegerValidator());
+			$this->registerFieldValidator( "userId", new IntegerValidator(), false, $this->_locale->tr("error_invalid_user"));
 			// and the view we should show in case there is a validation error
 			$errorView = new AdminBlogUsersListView( $this->_blogInfo );
-			$errorView->setErrorMessage( $this->_locale->tr("error_invalid_user_id" ));			
+			$errorView->setErrorMessage( $this->_locale->tr("error_invalid_user_id" ));
 			$this->setValidationErrorView( $errorView );
 			
 			$this->requirePermission( "update_blog_user");
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function updateUser()
+		{
 			// fetch the data, we already know it's valid and that we can trust it!
 			$userId = $this->_request->getValue( "userId" );
 			$this->_perms = $this->_request->getValue( "perm" );			
-			
+
 			// load the user
 			$users = new Users();
 			$userInfo = $users->getUserInfoFromId( $userId );
 			if( !$userInfo ) {
-				$errorView = new AdminBlogUsersListView( $this->_blogInfo );
-				$errorView->setErrorMessage( $this->_locale->tr("error_invalid_user_id" ));
-				$this->setCommonData();
+				$this->_message = $this->_locale->tr("error_invalid_user_id" );
 				return( false );
 			}
 			
@@ -65,11 +63,40 @@
 			
 			$this->notifyEvent( EVENT_POST_USER_UPDATE, Array( "user" => &$user ));			
 			
-            $this->_view = new AdminBlogUsersListView( $this->_blogInfo );
-            $this->_view->setSuccessMessage( $this->_locale->pr("user_permissions_updated_ok", $userInfo->getUsername()));
+			$this->_message = $this->_locale->pr("user_permissions_updated_ok", $userInfo->getUsername());
+			$this->_user = $userInfo;
+			
+			return( true );
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$this->_view = new AdminBlogUsersListView( $this->_blogInfo );
+			if( !$this->updateUser())
+				$this->_view->setErrorMessage( $this->_message );
+			else 
+            	$this->_view->setSuccessMessage( $this->_message );				
+
             $this->setCommonData();			
 			
 			return( true );
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			if( !$this->updateUser())
+				$this->_view->setErrorMessage( $this->_message );
+			else {
+				$this->_view->setValue( "user", $this->_user );
+            	$this->_view->setSuccessMessage( $this->_message );
+			}
+			
+			return( true );			
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminupdatecustomfieldaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatecustomfieldaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatecustomfieldaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -5,6 +5,7 @@
 	lt_include( PLOG_CLASS_PATH."class/dao/customfields/customfields.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );	
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );	
 
     /**
      * \ingroup Action
@@ -28,27 +29,26 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// data validation
-			$this->registerFieldValidator( "fieldName", new StringValidator());
-			$this->registerFieldValidator( "fieldDescription", new StringValidator());
-			$this->registerFieldValidator( "fieldType", new IntegerValidator());
-			$this->registerFieldValidator( "fieldId", new IntegerValidator());
-			$this->_form->registerField( "fieldSearchable" );
-			$this->_form->registerField( "fieldHidden" );
-			$this->_form->registerField( "fieldValues" );
-			$this->setValidationErrorView( new AdminTemplatedView( $this->_blogInfo, "editcustomfield" ));			
+			$this->registerFieldValidator( "fieldName", new StringValidator(), false, $this->_locale->tr("error_empty_name"));
+			$this->registerFieldValidator( "fieldDescription", new StringValidator(), false, $this->_locale->tr("error_empty_description"));
+			$this->registerFieldValidator( "fieldType", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerFieldValidator( "fieldId", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerField( "fieldSearchable" );
+			$this->registerField( "fieldHidden" );
+			$this->registerField( "fieldValues" );
+			$view = new AdminTemplatedView( $this->_blogInfo, "editcustomfield" );
+			$view->setErrorMessage( $this->_locale->tr("error_updating_custom_field" ));
+			$this->setValidationErrorView( $view );			
 			
 			$this->requirePermission( "update_custom_field" );
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function updateCustomField()
+		{
 			// fetch the fields from the request
 			$this->_fieldId = $this->_request->getValue( "fieldId" );
-			$this->_fieldName = Textfilter::filterAllHTML($this->_request->getValue( "fieldName" ));
-			$this->_fieldDescription = Textfilter::filterAllHTML($this->_request->getValue( "fieldDescription" )); 
+			$this->_fieldName = $this->_request->getValue( "fieldName", new HtmlFilter());
+			$this->_fieldDescription = $this->_request->getValue( "fieldDescription", new HtmlFilter());
 			$this->_fieldType = $this->_request->getValue( "fieldType" );
 			$this->_fieldSearchable = $this->_request->getValue( "fieldSearchable" );
 			$this->_fieldHidden = $this->_request->getValue( "fieldHidden" );
@@ -66,12 +66,8 @@
 			$fields = new CustomFields();
 			$field = $fields->getCustomField( $this->_fieldId );
 
-			// view that we're going to use for all different flows...
-			$this->_view = new AdminCustomFieldsListView( $this->_blogInfo );
-						
 			// field couldn't be loaded...
 			if( !$field ) {
-				$this->_view->setErrorMessage( $this->_locale->tr("error_updating_custom_field" ));
 				return false;			
 			}
 			
@@ -93,18 +89,44 @@
 											   
 			// check the result
 
-			if( !$result ) {
+			if( !$result )
+				return( false );
+				
+			$this->notifyEvent( EVENT_POST_CUSTOM_FIELD_UPDATE, Array( "field" => &$field ));
+
+			return( $field );
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$this->_view = new AdminCustomFieldsListView( $this->_blogInfo );
+
+			$field = $this->updateCustomField();
+			if( !$field )
 				$this->_view->setErrorMessage( $this->_locale->tr("error_updating_custom_field" ));
-			}
-			else {
-				$this->_view->setSuccessMessage( $this->_locale->pr( "custom_field_updated_ok", $field->getName()));
-				// fire the post-event
-				$this->notifyEvent( EVENT_POST_CUSTOM_FIELD_UPDATE, Array( "field" => &$field ));
-			}
-			
-			$this->setCommonData();			
+			else
+				$this->_view->setSuccessMessage( $this->_locale->pr( "custom_field_updated_ok", $field->getName()));				
+				
+			$this->setCommonData();
 		
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+
+			$field = $this->updateCustomField();
+			if( !$field )
+				$this->_view->setErrorMessage( $this->_locale->tr("error_updating_custom_field" ));
+			else
+				$this->_view->setSuccessMessage( $this->_locale->pr( "custom_field_updated_ok", $field->getName()));				
+		
+            return true;			
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminupdatelinkaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatelinkaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatelinkaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -8,6 +8,7 @@
 	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/emptyvalidator.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );	
 
     /**
      * \ingroup Action
@@ -33,10 +34,10 @@
 			
 			// set up the data validators
 			// data validation
-			$this->registerFieldValidator( "linkName", new StringValidator());
-			$this->registerFieldValidator( "linkUrl", new HttpUrlValidator());
+			$this->registerFieldValidator( "linkName", new StringValidator(), false, $this->_locale->tr( "error_empty_name" ));
+			$this->registerFieldValidator( "linkUrl", new HttpUrlValidator(), false, $this->_locale->tr( "error_invalid_url" ));
 			// linkRssFeed will only be validated if it is available in the form
-			$this->registerFieldValidator( "linkRssFeed", new HttpUrlValidator(), true );
+			$this->registerFieldValidator( "linkRssFeed", new HttpUrlValidator(), true, $this->_locale->tr( "error_invalid_url" ));
 			$this->registerFieldValidator( "linkCategoryId", new IntegerValidator());
 			$this->registerFieldValidator( "linkDescription", new EmptyValidator());
 			$this->registerFieldValidator( "linkId", new IntegerValidator());
@@ -47,28 +48,22 @@
 			// permission checks
 			$this->requirePermission( "update_link" );			
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function updateLink()
+		{
 			// data is fine, we have already validated it
-        	$this->_linkName = Textfilter::filterAllHTML($this->_request->getValue( "linkName" ));
-            $this->_linkDescription = Textfilter::filterAllHTML($this->_request->getValue( "linkDescription" ));
-            $this->_linkUrl  = Textfilter::filterAllHTML($this->_request->getValue( "linkUrl" ));
+			$f = new HtmlFilter();
+        	$this->_linkName = $this->_request->getValue( "linkName", $f );
+            $this->_linkDescription = $this->_request->getValue( "linkDescription", $f );
+            $this->_linkUrl = $this->_request->getValue( "linkUrl", $f );
             $this->_linkCategoryId = $this->_request->getValue( "linkCategoryId" );
             $this->_linkId = $this->_request->getValue( "linkId" );
-			$this->_linkFeed = Textfilter::filterAllHTML($this->_request->getValue( "linkRssFeed" ));
+			$this->_linkFeed = $this->_request->getValue( "linkRssFeed", $f );
 		
         	// fetch the link we're trying to update
             $links = new MyLinks();
             $link  = $links->getMyLink( $this->_linkId, $this->_blogInfo->getId());
             if( !$link ) {
-            	$this->_view = new AdminLinksListView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_link"));
-                $this->setCommonData();
-
                 return false;
             }
 
@@ -79,26 +74,55 @@
             $link->setUrl( $this->_linkUrl );
 			$link->setRssFeed( $this->_linkFeed );
 			$this->notifyEvent( EVENT_PRE_LINK_UPDATE, Array( "link" => &$link ));
+			
             // and now update it in the database
             if( !$links->updateMyLink( $link )) {
-            	$this->_view = new AdminLinksListView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_link"));
-                $this->setCommonData();
-
                 return false;
             }
+
 			$this->notifyEvent( EVENT_POST_LINK_UPDATE, Array( "link" => &$link ));			
 			
 			// clear the cache
 			CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
 			
-			// and go back to the view with the list of links
-            $this->_view = new AdminLinksListView( $this->_blogInfo );
-            $this->_view->setSuccessMessage( $this->_locale->pr("link_updated_ok", $link->getName()));
-            $this->setCommonData();
+			return( $link );
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {	
+			if(( $link = $this->updateLink())) {
+            	$this->_view = new AdminLinksListView( $this->_blogInfo );
+                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_link"));
+                $this->setCommonData();				
+			}
+			else {
+				// and go back to the view with the list of links
+	            $this->_view = new AdminLinksListView( $this->_blogInfo );
+	            $this->_view->setSuccessMessage( $this->_locale->pr("link_updated_ok", $link->getName()));
+	            $this->setCommonData();				
+			}
 
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			if(( $link = $this->updateLink())) {
+				$this->_view->setSuccess( true );
+				$this->_view->setMessage($this->_locale->pr("link_updated_ok", $link->getName()));
+			}
+			else {
+				$this->_view->setSuccess( false );
+				$this->_view->setMessage( $this->_locale->tr("error_updating_link" ));				
+			}
+
+			return( true );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminupdatelinkcategoryaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatelinkcategoryaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatelinkcategoryaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -6,6 +6,7 @@
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
     lt_include( PLOG_CLASS_PATH."class/dao/mylinkscategories.class.php" );
     lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );    
+    lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );   
 
     /**
      * \ingroup Action
@@ -18,6 +19,8 @@
 
     	var $_categoryName;
         var $_categoryId;
+		var $_message;
+		var $_linkCategory;
 
     	/**
          * Constructor. If nothing else, it also has to call the constructor of the parent
@@ -28,8 +31,8 @@
         	$this->AdminAction( $actionInfo, $request );
 			
 			// data validation
-			$this->registerFieldValidator( "linkCategoryName", new StringValidator());
-			$this->registerFieldValidator( "linkCategoryId", new IntegerValidator());
+			$this->registerFieldValidator( "linkCategoryName", new StringValidator(), false, $this->_locale->tr( "error_empty_name" ));
+			$this->registerFieldValidator( "linkCategoryId", new IntegerValidator(), false, $this->_locale->tr( "error_fetching_link_category" ));
 			$errorView = new AdminTemplatedView( $this->_blogInfo, "editlinkcategory" );
 			$errorView->setErrorMessage( $this->_locale->tr("error_updating_link_category"));
 			$this->setValidationErrorView( $errorView );
@@ -37,22 +40,16 @@
 			// permission checks
 			$this->requirePermission( "update_link_category" );
         }
-        
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+
+		function updateLinkCategory()
+		{
         	// fetch the category we're trying to update
 			$this->_categoryId = $this->_request->getValue( "linkCategoryId" );
-			$this->_categoryName = Textfilter::filterAllHTML($this->_request->getValue( "linkCategoryName" ));
+			$this->_categoryName = $this->_request->getValue( "linkCategoryName", new HtmlFilter());
             $categories = new MyLinksCategories();
             $category   = $categories->getMyLinksCategory( $this->_categoryId, $this->_blogInfo->getId());
             if( !$category ) {
-            	$this->_view = new AdminLinkCategoriesListView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_link_category"));
-                $this->setCommonData();
-
+				$this->_message = $this->_locale->tr( "error_fetching_link_category" );
                 return false;
             }
 
@@ -60,23 +57,49 @@
             $category->setName( $this->_categoryName );
 			$this->notifyEvent( EVENT_PRE_LINK_CATEGORY_UPDATE, Array( "linkcategory" => &$category ));
             if( !$categories->updateMyLinksCategory( $category )) {
-            	$this->_view = new AdminLinkCategoriesListView( $this->_blogInfo );
-                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_link_category"));
-                $this->setCommonData();
-
+                $this->_message = $this->_locale->tr( "error_updating_link_category" );
                 return false;
             }
 			$this->notifyEvent( EVENT_POST_LINK_CATEGORY_UPDATE, Array( "linkcategory" => &$category ));			
 			
 			// clear the cache
 			CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
+			// set the success message
+			$this->_message = $this->_locale->pr("link_category_updated_ok", $category->getName());
+			
+			$this->_linkCategory = $category;
 
-            $this->_view = new AdminLinkCategoriesListView( $this->_blogInfo );
-            $this->_view->setSuccessMessage( $this->_locale->pr("link_category_updated_ok", $category->getName()));
+			return( true );
+		}
+        
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+            $this->_view = new AdminLinkCategoriesListView( $this->_blogInfo );	
+			if( !$this->updateLinkCategory()) {
+                $this->_view->setErrorMessage( $this->_message );
+			}
+			else {
+	            $this->_view->setSuccessMessage( $this->_message );				
+			}
+
             $this->setCommonData();
-
-            // better to return true if everything fine
             return true;
         }
+
+		/**
+		 * Ajax-specific behaviour
+		 */
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setSuccess( $this->updateLinkCategory());
+			$this->_view->setMessage( $this->_message );
+			$this->_view->setValue( "linkcategory", $this->_linkCategory );
+            return true;			
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminupdatelocationajaxaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatelocationajaxaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatelocationajaxaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,6 +1,6 @@
 <?php
 
-	lt_include( PLOG_CLASS_PATH."class/action/admin/ajax/adminajaxaction.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
@@ -10,21 +10,29 @@
      * \ingroup Action
      * @private
      */
-	class AdminUpdateLocationAjaxAction extends AdminAjaxAction
+	class AdminUpdateLocationAjaxAction extends AdminAction
 	{
 		function AdminUpdateLocationAjaxAction( $actionInfo, $request )
 		{
-			$this->AdminAjaxAction( $actionInfo, $request );
+			$this->AdminAction( $actionInfo, $request );
 			
-			$this->registerFieldValidator( "locId", new IntegerValidator());
-			$this->registerFieldValidator( "lat", new StringValidator());
-			$this->registerFieldValidator( "long", new StringValidator());
-			$this->registerFieldValidator( "desc", new StringValidator());									
-			$this->setValidationErrorView( $this->getErrorView($this->_locale->tr("error_updating_location" )));
+			$this->registerFieldValidator( "locId", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerFieldValidator( "lat", new StringValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerFieldValidator( "long", new StringValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			$this->registerFieldValidator( "desc", new StringValidator(), false, $this->_locale->tr("error_incorrect_value" ));
+			
+			$view = new AdminAjaxView( $this->_blogInfo );
+			$view->setValue( "message", $this->_locale->tr("error_adding_location" ));
+			$this->setValidationErrorView( $view );
 		}
 		
 		function perform()
 		{
+			die( "output not supported" );
+		}		
+		
+		function performAjax()
+		{
 			// load data from the request
 			$id = $this->_request->getValue( "locId" );			
 			$lat = $this->_request->getValue( "lat" );
@@ -34,16 +42,15 @@
 			// load the location object and send an error if it does not exist
 			$locations = new Locations();
 			$loc = $locations->getLocation( $id );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
 			if( !$loc ) {
-				$this->_view = $this->getErrorView( $this->_locale->tr("error_updating_location" ));
-				$this->setCommonData();
+				$this->setErrorMessage( $this->_locale->tr("error_updating_location" ));
 				return( false );
 			}
 			
 			// check if the location belongs to the blog
 			if( $loc->getBlogId() != $this->_blogInfo->getId()) {
-				$this->_view = $this->getErrorView( $this->_locale->tr("error_updating_location" ));
-				$this->setCommonData();
+				$this->setErrorMessage( $this->_locale->tr("error_updating_location" ));
 				return( false );
 			}
 			
@@ -55,13 +62,11 @@
 
             $this->_view = new AdminAjaxView( $this->_blogInfo, "updateLocationAjax" );
             if( $res ) {
-                $this->_view->setSuccess( true );
-                $this->_view->setMessage( $this->_locale->tr("location_updated_ok" ));
-				$this->_view->setResult( $loc );
+                $this->_view->setSuccessMessage( $this->_locale->tr("location_updated_ok" ));
+				$this->_view->setValue( "location", $loc );
             }
             else {
-                $this->_view->setSuccess( false );
-                $this->_view->setMessage( $this->_locale->tr("error_updating_location" ));
+				$this->setErrorMessage( $this->_locale->tr("error_updating_location" ));
             }
 
             return true;

Modified: plog/trunk/class/action/admin/adminupdatepostaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdatepostaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdatepostaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -34,11 +34,12 @@
         	$this->AdminPostManagementCommonAction( $actionInfo, $request );
         	
         	// for data validation purposes, posts must have at least a topic, an intro text, and a category
-        	$this->registerFieldValidator( "postText", new StringValidator());
-        	$this->registerFieldValidator( "postTopic", new StringValidator());
-        	$this->registerFieldValidator( "postCategories", new ArrayValidator( new IntegerValidator()));
-        	$this->registerFieldValidator( "postId", new IntegerValidator());
-        	$this->registerFieldValidator( "globalArticleCategoryId", new IntegerValidator(), true );
+        	$this->registerFieldValidator( "postText", new StringValidator(), false, $this->_locale->tr("error_missing_post_text" ));
+        	$this->registerFieldValidator( "postTopic", new StringValidator(), false, $this->_locale->tr("error_missing_post_topic" ));
+        	$this->registerFieldValidator( "postCategories", new ArrayValidator(), false, $this->_locale->tr("error_no_category_selected"));
+        	$this->registerFieldValidator( "globalArticleCategoryId", new IntegerValidator(), true,  $this->_locale->tr("error_no_global_article_category_selected"));
+			$this->registerFieldValidator( "postUser", new IntegerValidator(), false, $this->_locale->tr("error_invalid_user" ));
+			$this->registerFieldValidator( "postStatus", new IntegerValidator(), false, $this->_locale->tr( "error_incorrect_value" ));
 
         	$view = new AdminEditPostView( $this->_blogInfo );
 
@@ -57,7 +58,6 @@
         	// these fields do not need to be validated but should be there when we show the view once again
         	$this->registerField( "postExtendedText" );
         	$this->registerField( "postSlug" );
-        	$this->registerField( "postStatus" );
         	$this->registerField( "sendNotification" );
         	$this->registerField( "sendTrackbacks" );
         	$this->registerField( "sendPings" );
@@ -65,8 +65,7 @@
         	$this->registerField( "commentsEnabled" );
         	$this->registerField( "customField" );
         	$this->registerField( "postDateTime" );   
-        	$this->registerField( "trackbackUrls" );
-			$this->registerField( "postUser" );   	
+        	$this->registerField( "trackbackUrls" );   	
 
 			$this->requirePermission( "update_post" );
         }
@@ -241,5 +240,10 @@
 
             return true;
         }
+
+		function performAjax()
+		{
+			
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminupdateusersettingsaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminupdateusersettingsaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminupdateusersettingsaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -5,6 +5,8 @@
 	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/data/validator/passwordvalidator.class.php" );	
     lt_include( PLOG_CLASS_PATH."class/dao/users.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/trimfilter.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );	
     lt_include( PLOG_CLASS_PATH."class/view/admin/adminuserprofileview.class.php" );
 
     /**
@@ -29,11 +31,11 @@
 			
             $this->registerField( "confirmPassword" );
 			$this->registerField( "userFullName" );
-			$this->registerFieldValidator( "userEmail", new EmailValidator());
-			$this->registerFieldValidator( "userPictureId", new IntegerValidator());
+			$this->registerFieldValidator( "userEmail", new EmailValidator(), false, $this->_locale->tr("error_incorrect_email_address" ));
+			$this->registerFieldValidator( "userPictureId", new IntegerValidator(), false, $this->_locale->tr("error_incorrect_value"  ));
 			$this->registerField( "userAbout" );
 			$this->registerField( "properties" );
-			$this->registerField( "userSettingsPassword" );
+			$this->registerField( "userSettingsPassword", new PasswordValidator(), true, $this->_locale->tr("error_invalid_password" ));
 			$view = new AdminUserProfileView( $this->_blogInfo, $this->_userInfo );
 			$view->setErrorMessage( $this->_locale->tr("error_updating_user_settings"));
 			$this->setValidationErrorView( $view );
@@ -45,64 +47,87 @@
          */
         function validate()
         {
-            // if all correct, we can proceed
-            $this->_userPassword = trim($this->_request->getValue( "userSettingsPassword" ));
-            $this->_userConfirmPassword = trim($this->_request->getValue( "confirmPassword" ));
+			// use the FormValidator object to validate the data
+			$validationOk =  $this->_form->validate( $this->_request );	
+	
+			// validate that the password is confirmed
+            $this->_userPassword = $this->_request->getFilteredValue( "userSettingsPassword", new TrimFilter());
+            $this->_userConfirmPassword = $this->_request->getFilteredValue( "confirmPassword", new TrimFilter());
 			
-            $valid = parent::validate();		
-
             // check that the password is correct and confirm it
             if( $this->_userPassword != "" ) {
-            	$passwordVal = new PasswordValidator();
-            	if( !$passwordVal->validate( $this->_userPassword )) {
-					$this->_form->setFieldValidationStatus( "userSettingsPassword", false );					
-					$this->_view = $this->_validationErrorView;
-                	$this->setCommonData( true );
-                	return false;
-            	}
             	if( $this->_userPassword != $this->_userConfirmPassword ) {
 					$this->_form->setFieldValidationStatus( "confirmPassword", false );
-					$this->_view = $this->_validationErrorView;					
-                	$this->setCommonData( true );
-                	return false;
+					$this->_form->setFieldErrorMessage( "confirmPassword", $this->_locale->tr("error_passwords_dont_match"));					
+					$validationOk = false;
             	}
             }
 			
-			return $valid;
+			// if something went wrong... let's do somethinga about it :)
+			if( !$validationOk ) {
+				$this->validationErrorProcessing();
+			}
+
+			
+			return $validationOk;
         }
 
-        /**
-         * Carries out the specified action
-         */
-        function perform()
-        {
+		function updateUser()
+		{
         	// update the user information
-            $this->_userInfo->setEmail( Textfilter::filterAllHTML($this->_request->getValue( "userEmail" )));
+			$f = new HtmlFilter();
+            $this->_userInfo->setEmail( $this->_request->getFilteredValue( "userEmail", $f ));
             if( $this->_userPassword != "" )
             	$this->_userInfo->setPassword( $this->_userPassword );
-            $this->_userInfo->setAboutMyself( Textfilter::filterAllHTML($this->_request->getValue( "userAbout" )));
-            $this->_userInfo->setFullName( Textfilter::filterAllHTML($this->_request->getValue( "userFullName" )));
+            $this->_userInfo->setAboutMyself( $this->_request->getFilteredValue( "userAbout", $f ));
+            $this->_userInfo->setFullName( $this->_request->getValue( "userFullName", $f ));
 			$this->_userInfo->setPictureId( $this->_request->getValue( "userPictureId" ));
 			$this->_userInfo->setProperties( $this->_request->getValue( "properties" ));
 			$this->notifyEvent( EVENT_PRE_USER_UPDATE, Array( "user" => &$this->_userInfo ));			
             $this->_session->setValue( "userInfo", $this->_userInfo );
             $this->saveSession();
 
+            $users = new Users();
+			if( !$users->updateUser( $this->_userInfo ))
+				return( false );
+
+			$this->notifyEvent( EVENT_POST_USER_UPDATE, Array( "user" => &$this->_userInfo ));
+            CacheControl::resetBlogCache( $this->_blogInfo->getId());
+
+			return( true );
+		}
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
             // update the user information
            	$this->_view =  new AdminUserProfileView( $this->_blogInfo, $this->_userInfo );
-            $users = new Users();
-            if( !$users->updateUser( $this->_userInfo ))
+
+            if( !$this->updateUser())
                 $this->_view->setErrorMessage( $this->_locale->tr("error_updating_user_settings"));
-			else {
+			else
 				$this->_view->setSuccessMessage( $this->_locale->pr("user_settings_updated_ok", $this->_userInfo->getUsername()));
-				// if everything fine, also say so...
-				$this->notifyEvent( EVENT_POST_USER_UPDATE, Array( "user" => &$this->_userInfo ));
-                CacheControl::resetBlogCache( $this->_blogInfo->getId());	
-			}
 
             $this->setCommonData();
 
             return true;
         }
+
+		/**
+		 * Ajax-specific behaviour
+		 */
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+            if( !$this->updateUser())
+                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_user_settings"));
+			else
+				$this->_view->setSuccessMessage( $this->_locale->pr("user_settings_updated_ok", $this->_userInfo->getUsername()));
+				
+			return( true );
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/action/admin/adminusersettingsaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminusersettingsaction.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/action/admin/adminusersettingsaction.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -32,5 +32,13 @@
             // better to return true if everything fine
             return true;
         }
+
+		function performAjax()
+		{
+			lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+			$this->_view = new AdminAjaxView( $this->_blogInfo );
+			$this->_view->setValue( "user", $this->_userInfo );
+			$this->_view->setSuccess( true );
+		}
     }
 ?>

Modified: plog/trunk/class/config/properties.class.php
===================================================================
--- plog/trunk/class/config/properties.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/config/properties.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -152,5 +152,32 @@
         {
             return( array_key_exists( $key, $this->_props ));
         }
+
+		/**
+		 * Sets the whole array with values at once, optinally overwriting the current set of values
+		 *
+		 * @param values An associative array 
+		 */
+		function setValues( $values, $overwrite = false )
+		{
+			if( $overwrite ) {
+				$this->_props = $values;
+			}
+			else {
+				foreach( $values as $key => $value ) {
+					$this->setValue( $key, $value );
+				}
+			}
+			
+			return( true );
+		}
+		
+		/**
+		 * Class-specific code to serialize itself to JSon
+		 */
+		function toJson()
+		{
+			return( $this->getAsArray());
+		}
 	}
 ?>

Modified: plog/trunk/class/controller/admincontrollermap.properties.php
===================================================================
--- plog/trunk/class/controller/admincontrollermap.properties.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/controller/admincontrollermap.properties.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -15,6 +15,7 @@
     // directly to the admin menu of the blog if he or she belongs to
     // only one)
     $actions["blogSelect"] = "AdminMainAction";
+	$actions["blogSelectLogin"] = "AdminBlogSelectAction";
 	$actions["Dashboard"] = "AdminMainAction";
 	$actions["Manage"] = "AdminManageAction";
     // form to add new posts
@@ -26,8 +27,6 @@
     $actions["newArticleCategory"] = "AdminNewArticleCategoryAction";
     // adds the category to the db
     $actions["addArticleCategory"] = "AdminAddArticleCategoryAction";
-    // adds the category to the db through Ajax
-    $actions["addArticleCategoryAjax"] = "AdminAddArticleCategoryAjaxAction";
     // shows the settings of the blog
     $actions["blogSettings"] = "AdminBlogSettingsAction";
     // updates the settings of the blog

Modified: plog/trunk/class/controller/controller.class.php
===================================================================
--- plog/trunk/class/controller/controller.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/controller/controller.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -340,11 +340,14 @@
                     $actionObject = new $actionClass( $actionInfo, $httpRequest );
 					$actionObject->setPreviousAction( $_plogController_previousAction );
 					
+					// determine whether we should be calling the Ajax stuff or the normal stuff
+					$request->isAjax() ? $method = "performAjax" : $method = "perform";
+					
 					if( $actionObject->canPerform()) {
 	                    // we can use the validate method to check the values of the form variables. If validate()
 	                    // returns 'true', then we call the 'perform' method. If not, then we won't :)
 	                    if( $actionObject->validate()) {
-	                        if( $actionObject->perform())
+	                        if( $actionObject->$method())
 	                        	$actionObject->setSuccess( true );
 	                        else
 	                        	$actionObject->setSuccess( false );
@@ -359,7 +362,8 @@
 	                	$actionClass = $this->_cannotPerformAction;
 	                	$this->loadActionClass( $actionClass );
 	                	$actionObject = new $actionClass( $actionInfo, $httpRequest );
-						$actionObject->perform();
+	
+						$actionObject->$method();
                 	}
                 }
 
@@ -375,8 +379,9 @@
                 $e = new Exception( 'The view is empty after calling the perform method.' );
                 throw( $e );
             }
-            else
-                $view->render();
+            else {
+				$view->render();
+			}
         }
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/dao/bloginfo.class.php
===================================================================
--- plog/trunk/class/dao/bloginfo.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/dao/bloginfo.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -727,5 +727,19 @@
 			//return( get_object_vars( $this ));
 			return( parent::__sleep());
 		}
+		
+		/**
+		 * Class-specific code to serialize itself to JSon
+		 */	
+		function toJson()
+		{
+			// in addition to serializing the internal fields, we will also
+			// serialize the field that includes information about the owner
+			// (a UserInfo object)
+			$data = parent::toJson();
+			$data["owner"] = $this->getOwnerInfo();			
+			$data["blog_category"] = $this->getBlogCategory();
+			return( $data );
+		}
 	}
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/dao/locationawaredbobject.class.php
===================================================================
--- plog/trunk/class/dao/locationawaredbobject.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/dao/locationawaredbobject.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -64,5 +64,17 @@
 		{
 			return( $this->getLocationId() != 0 );
 		}
+		
+		/**
+		 *
+		 */
+		function toJson()
+		{
+			$data = parent::toJson();
+			if( $this->hasLocationData()) 
+				$data["location"] = $this->getLocation();
+				
+			return( $data );
+		}
 	}
 ?>
\ No newline at end of file

Modified: plog/trunk/class/dao/mylink.class.php
===================================================================
--- plog/trunk/class/dao/mylink.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/dao/mylink.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -210,5 +210,13 @@
 		{
 			$this->_rssFeed = $rssFeed;
 		}
+		
+		function toJson()
+		{
+			$data = parent::toJson();
+			$data["linkcategory"] = $this->getMyLinkCategory();
+			
+			return( $data );
+		}
 }
 ?>

Modified: plog/trunk/class/dao/userinfo.class.php
===================================================================
--- plog/trunk/class/dao/userinfo.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/dao/userinfo.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -368,5 +368,13 @@
 			
 			return( $this->perms[$blogId] );
 		}
+		
+		function toJson()
+		{
+			$data = parent::toJson();
+			unset( $data["password"] );
+			
+			return( $data );
+		}		
 	}
 ?>

Modified: plog/trunk/class/dao/userpermission.class.php
===================================================================
--- plog/trunk/class/dao/userpermission.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/dao/userpermission.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,6 +16,7 @@
         var $_id;
         var $_perm;
 		var $_user;
+		var $_blog;
 
     	function UserPermission( $userId, $blogId, $permId, $id = -1 )
         {
@@ -120,5 +121,19 @@
 			
 			return( $this->_user );				
 		}
+		
+		/**
+		 * Some Ajax-specific behaviour for this class, in addition
+		 * to DbObject::toJson()
+		 * @see DbObject::toJson()
+		 */
+		function toJson()
+		{
+			$data = parent::toJson();
+			$data["user"] = $this->getUserInfo();
+			$data["permission"] = $this->getPermission();
+			
+			return( $data );
+		}
     }
-?>
+?>
\ No newline at end of file

Copied: plog/trunk/class/data/filter/trimfilter.class.php (from rev 5682, plog/branches/lifetype-1.3-ajax/class/data/filter/trimfilter.class.php)
===================================================================
--- plog/trunk/class/data/filter/trimfilter.class.php	                        (rev 0)
+++ plog/trunk/class/data/filter/trimfilter.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,23 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/data/filter/filterbase.class.php" );
+
+	/**
+	 * \ingroup Filter
+	 *
+	 * Cleans up empty spaces at the begining and end of the string.
+	 */
+	class TrimFilter extends FilterBase
+	{
+		/**
+		 * Filters out all HTML code except the allowed tags
+		 *
+		 * @param data
+		 * @return The input string without HTML code
+		 */
+		function filter( $data )
+		{
+			return( parent::filter( trim( $data )));
+		}	
+	}
+?>
\ No newline at end of file

Modified: plog/trunk/class/data/forms/formvalidator.class.php
===================================================================
--- plog/trunk/class/data/forms/formvalidator.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/data/forms/formvalidator.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -58,11 +58,13 @@
 		 * @param validator A valid class inheriting from the Validator base class and that implements
 		 * the validate() method, that will be used for validating fields.
 		 * @param onlyIfAvailable validate this field only if its value is not emtpy
+		 * @param errorMessage
 		 * @return Always true
 		 */
-		function registerFieldValidator( $fieldName, $validatorClass, $onlyIfAvailable = false )
+		function registerFieldValidator( $fieldName, $validatorClass, $onlyIfAvailable = false, $errorMessage = "" )
 		{
-			$this->_fieldValidators["$fieldName"] = Array( "validator" => $validatorClass, "onlyIfAvailable" => $onlyIfAvailable );		
+			$this->_fieldValidators["$fieldName"] = Array( "validator" => $validatorClass, "onlyIfAvailable" => $onlyIfAvailable );
+			$this->setFieldErrorMessage( $fieldName, $errorMessage );
 		}
 		
 		/**
@@ -256,5 +258,31 @@
 			}
 			print("</pre>");
 		}
+		
+		/**
+		 * Serializes this object into a suitable Javascript object
+		 */
+		function toJson()
+		{
+			$data = Array();
+			$data["fields"] = Array();
+			foreach( $this->_fieldValidators as $field => $validationInfo ) {
+				if( $this->isFieldValid( $field )) {
+					$data["fields"][] = Array( 
+						"field" => $field, 
+						"valid" => true
+					);
+				}
+				else {
+					$data["fields"][] = Array( 
+						"field" => $field, 
+						"valid" => false, 
+						"message" => $this->getFieldErrorMessage( $field )
+					);
+				}
+			}
+			
+			return( $data );
+		}
 	}
 ?>
\ No newline at end of file

Modified: plog/trunk/class/data/pager/pager.class.php
===================================================================
--- plog/trunk/class/data/pager/pager.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/data/pager/pager.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -286,5 +286,16 @@
 			$this->_pageLinks        = $this->generateLinks();
         }
 
+		function toJson()
+		{
+			return( Array( 
+					"totalPages" => $this->getTotalPages(),
+					"pageLinks" => $this->getPageLinks(),
+					"totalRecs" => $this->getTotalRegs(),
+					"recsPerPage" => $this->getRegsForPage(),
+					"curPage" => $this->getCurrentPage()
+				)
+			);
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/data/serialize/json/jsonserializer.class.php
===================================================================
--- plog/trunk/class/data/serialize/json/jsonserializer.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/data/serialize/json/jsonserializer.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -378,7 +378,7 @@
                 * parameter is only accessible using ECMAScript's
                 * bracket notation.
                 */
-                
+
                 // treat as a JSON object  
                 if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
                     $properties = array_map(array($this, 'name_value'),
@@ -398,21 +398,48 @@
                 foreach($elements as $element)
                     if(JsonSerializer::isError($element))
                         return $element;
-                
+
                 return '[' . join(',', $elements) . ']';
                 
             case 'object':
-                $vars = get_object_vars($var);
 
-                $properties = array_map(array($this, 'name_value'),
-                                        array_keys($vars),
-                                        array_values($vars));
-            
-                foreach($properties as $property)
-                    if(JsonSerializer::isError($property))
-                        return $property;
+				// check if the object has a method called toJson()
+				$serialized = false;
+				$methods = get_class_methods( $var );				
+				foreach( $methods as $method ) {
+					if( strtolower( $method ) == "tojson" ) {
+						$vars = $var->toJson();
+						
+						
+						if( is_array( $vars )) {
+			                $properties = array_map(array($this, 'name_value'),
+			                                        array_keys($vars),
+			                                        array_values($vars));						
+
+	                		$data = '{' . join(',', $properties) . '}';	
+						}
+						else {
+							$data = $this->encode( $vars );
+						}
+						
+						$serialized = true;
+					}
+				}
+				
+				if( !$serialized ) {
+	                $vars = get_object_vars($var);
+	                $properties = array_map(array($this, 'name_value'),
+	                                        array_keys($vars),
+	                                        array_values($vars));
+
+	                foreach($properties as $property)
+	                    if(JsonSerializer::isError($property))
+	                        return $property;
+	
+                	$data = '{' . join(',', $properties) . '}';	
+				}
                 
-                return '{' . join(',', $properties) . '}';
+				return( $data );
 
             default:
                 return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)

Modified: plog/trunk/class/data/timestamp.class.php
===================================================================
--- plog/trunk/class/data/timestamp.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/data/timestamp.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -412,6 +412,15 @@
             
             // and return the whole thing
             return( $date );
-        }    	 
+        }
+
+		/**
+		 * Serialize this object into a suitable Json representation. It returns the time
+		 * in Unix time, which is suitable to be parsed by Javascript's Date class.
+		 */
+		function toJson()
+		{
+			return( $this->getUnixDate());
+		}
 	}
 ?>
\ No newline at end of file

Modified: plog/trunk/class/data/validator/rules/urlformatrule.class.php
===================================================================
--- plog/trunk/class/data/validator/rules/urlformatrule.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/data/validator/rules/urlformatrule.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -26,8 +26,10 @@
 define( "EW_ERR_URL_MISSING_QUERYSTRING", 180 );
 define( "EW_ERR_URL_MISSING_ANCHOR", 190 );
 
+define( "EW_ERR_URL_EMPTY_STRING", 200 );
 
 
+
     /**
      * \ingroup Validator_Rules
      *

Modified: plog/trunk/class/data/validator/validation.class.php
===================================================================
--- plog/trunk/class/data/validator/validation.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/data/validator/validation.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -62,5 +62,4 @@
             die();
         }
     }
-
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/database/dbobject.class.php
===================================================================
--- plog/trunk/class/database/dbobject.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/database/dbobject.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -65,6 +65,25 @@
     	{
     		return( $this->_fields );
     	}
+
+		/**
+		 * Returns an array with data that is going to be the serialized
+		 * representation of this object in Json notation, used for the 
+		 * communication with the Ajax-based front-end code
+		 *
+		 * @return An associative array
+		 */
+		function toJson()
+		{
+			$data = Array();
+			
+			$data["id"] = $this->getId();			
+			foreach( $this->getFieldGetters() as $field => $getter ) {
+				$data[$field] = $this->$getter();
+			}
+			
+			return( $data );
+		}
 		
 		/**
 		 * No null values are serialized to the session. If there any values in your data class

Modified: plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php
===================================================================
--- plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -520,7 +520,7 @@
             
             $tsql = $this->_Triggers($tabname,$taboptions);
             foreach($tsql as $s) $sql[] = $s;
-			//foreach($idxs as $i) $sql[] = $i;
+			//foreach($idxs as $i) $sql[] = $i;		
 			
             return $sql;
         }
@@ -836,10 +836,18 @@
             
             $s .= "\n) ";
             if (isset($tableoptions[$this->upperName][strtolower($this->upperName)])) $s .= $tableoptions[$this->upperName][strtolower($this->upperName)];
+			$encoding = $this->connection->getDbCharacterSet();
+			if( $encoding != "default" )
+				$s .= " ".$this->_setTableEncoding( $encoding );
             $sql[] = $s;
             
             return $sql;
         }
+
+		function _setTableEncoding()
+		{
+			return( "" );
+		}
         
         /**
          * Sanitize options, so that array elements with no keys are promoted to keys

Modified: plog/trunk/class/database/pdb/datadict/pdbmysqldatadict.class.php
===================================================================
--- plog/trunk/class/database/pdb/datadict/pdbmysqldatadict.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/database/pdb/datadict/pdbmysqldatadict.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -170,5 +170,13 @@
             
             return $sql;
         }
+
+		function _setTableEncoding( $encoding )
+		{
+			if( $encoding == "utf8" || $encoding == "utf-8" )
+				return( "DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci" );
+			else
+				return( "" );
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/gallery/dao/galleryresource.class.php
===================================================================
--- plog/trunk/class/gallery/dao/galleryresource.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/gallery/dao/galleryresource.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -559,5 +559,22 @@
 			
 			return( $link );			
 		}
+		
+		/** 
+		 * @see DbObject::toJson()
+		 *
+		 * Add a few more things to the output serialized for Json
+		 */
+		function toJson()
+		{
+			$data = parent::toJson();
+			$data["album"] = $this->getAlbum();
+			$data["link"] = $this->getLink();
+			$data["preview_link"] = $this->getPreviewLink();
+			$data["medium_preview_link"] = $this->getMediumPreviewLink();
+			$data["resource_link"] = $this->getResourceLink();
+			
+			return( $data );
+		}
     }
 ?>
\ No newline at end of file

Modified: plog/trunk/class/locale/locale.class.php
===================================================================
--- plog/trunk/class/locale/locale.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/locale/locale.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -35,7 +35,7 @@
 	/**
 	 * default encoding if the locale does not specify one
 	 */
-	define( "DEFAULT_ENCODING", "iso-8859-1" );
+	define( "DEFAULT_ENCODING", "utf-8" );
     
     /**
      * default direction for texts, if the locale does not specify one
@@ -103,10 +103,8 @@
             $this->_code = $code;
 
             $this->_loadLocaleInfo();
+			$this->_charset = DEFAULT_ENCODING;
 
-            if( $this->_charset == "" )
-                $this->_charset = DEFAULT_ENCODING;
-
 			$this->_dataLoaded = false;
 		}
 
@@ -179,7 +177,7 @@
          */
         function getCharset()
         {
-        	return $this->_charset;
+        	return( DEFAULT_ENCODING );
         }
 		
 		/** 

Modified: plog/trunk/class/net/request.class.php
===================================================================
--- plog/trunk/class/net/request.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/net/request.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -73,5 +73,27 @@
 			
 			return( $value );
 		}
+		
+		/**
+		 * Returns true if the request is an Ajax request. Ajax requests are detected
+		 * based on the existence of a parameter called 'output' in the request, whose
+		 * whose value should be 'json' or 'ajax'
+		 *
+		 * @return True if the request is an Ajax request
+		 */
+		function isAjax()
+		{
+			return( $this->getValue( "output", "") == "ajax" || $this->getValue( "output", "" ) == "json" );
+		}
+		
+		/**
+		 * Whether the code implementing the logic should load all available data or not
+		 *
+		 * @return True if all data should be loaded, false otherwise
+		 */
+		function loadAllData()
+		{
+			return( $this->getValue( "all", "") == "all" || $this->getValue( "all", "" ) == "1" );			
+		}
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/template/menu/menurenderer.class.php
===================================================================
--- plog/trunk/class/template/menu/menurenderer.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/template/menu/menurenderer.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -189,7 +189,7 @@
 							$result .= "<li class=\"$cssClass\">".$this->_locale->tr($child->name)."</li>";
 						
 						if( $depth > 0 ) {					
-							$result .= $this->_render( $child, $depth, $activeOpt, false );
+							$result .= $this->_render( $child, $depth, $activeOpt, false );
 					    }
 					}
 				}

Copied: plog/trunk/class/template/smarty/plugins/function.js.php (from rev 5682, plog/branches/lifetype-1.3-ajax/class/template/smarty/plugins/function.js.php)
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.js.php	                        (rev 0)
+++ plog/trunk/class/template/smarty/plugins/function.js.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * Shortcut for generating <script type"..."></script> tags in HTML code
+ *
+ * @params src The link to the javascript file that we'd like to load
+ */
+function smarty_function_js($params, &$smarty)
+{
+    if( !isset( $params["src"] )) {
+        $smarty->trigger_error("js: missing 'src' parameter");
+        return;
+    }
+
+	return( "<script type=\"text/javascript\" src=\"".$params["src"]."\"></script>" );
+}
+?>
\ No newline at end of file

Modified: plog/trunk/class/view/admin/admindefaultview.class.php
===================================================================
--- plog/trunk/class/view/admin/admindefaultview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/admindefaultview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -29,6 +29,13 @@
         function AdminDefaultView()
         {
         	$this->View();
+
+			// set the view character set based on the default locale
+            $config =& Config::getConfig();
+            $locale =& Locales::getLocale( $config->getValue( "default_locale" ));
+            $this->setValue( 'version', Version::getVersion());
+            $this->setValue( "locale", $locale );   	
+			$this->setCharset( $locale->getCharset());
         }
 
         /**
@@ -38,23 +45,16 @@
          */
         function render()
         {
-			// set the view character set based on the default locale
-            $config =& Config::getConfig();
-            $locale =& Locales::getLocale( $config->getValue( "default_locale" ));
-            $this->setValue( 'version', Version::getVersion());            	
-			$this->setCharset( $locale->getCharset());
-		
 			parent::render();
 					
         	// to find the template we need, we can use the TemplateService
             $ts = new TemplateService();
         	$template = $ts->Template( DEFAULTADMIN_TEMPLATE, "admin" );
-            $this->setValue( "locale", $locale );
             // assign all the values
             $template->assign( $this->_params->getAsArray());
-			
+
             // and send the results
             print $template->fetch();
         }
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/view/admin/adminlinkcategorieslistview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminlinkcategorieslistview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/adminlinkcategorieslistview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -23,10 +23,7 @@
 			$this->setValue( "searchTerms", $params["searchTerms"] );
 
 			$this->_page = $this->getCurrentPageFromRequest();
-		}
-		
-		function render()
-		{
+			
             // get all the link categories
             $searchTerms = $this->getValue( "searchTerms" );
 			$blogSettings = $this->_blogInfo->getSettings();
@@ -49,14 +46,18 @@
 			                    $this->_page,
 								$numLinkCategories,
 								DEFAULT_ITEMS_PER_PAGE );
-
+								
             // create the view and fill the template context
             $this->setValue( "linkcategories", $blogLinkCategories );
 			$this->setValue( "searchTerms", $searchTerms );
 			$this->setValue( "pager", $pager );
-			
+								
+		}
+		
+		function render()
+		{
 			// transfer control to the parent class
-			parent::render();
+			return( parent::render());
 		}
 	}
 ?>
\ No newline at end of file

Modified: plog/trunk/class/view/admin/adminlinkslistview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminlinkslistview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/adminlinkslistview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -33,44 +33,52 @@
 			$this->setValue( "searchTerms", $params["searchTerms"] );
 			$this->_page = $this->getCurrentPageFromRequest();
 		}
-
-        /**
-         * Carries out the specified action
-         */
-        function render()
-        {
+		
+		function loadData()
+		{
 			// get the parameters
-			$order = $this->getValue( "showOrder" );
-			$categoryId = $this->getValue( "showCategory");			
-			$searchTerms = $this->getValue( "searchTerms" );
+			$this->_categoryId = $this->getValue( "showCategory");			
+			$this->_searchTerms = $this->getValue( "searchTerms" );
         	// get all the links and throw the event
         	$links = new MyLinks();
-            $blogLinks = $links->getLinks( $this->_blogInfo->getId(), 
-			                               $categoryId,
-										   $searchTerms,
+            $this->_blogLinks = $links->getLinks( $this->_blogInfo->getId(), 
+			                               $this->_categoryId,
+										   $this->_searchTerms,
 										   $this->_page,
 										   DEFAULT_ITEMS_PER_PAGE );
-			$this->notifyEvent( EVENT_LINKS_LOADED, Array( "links" => &$blogLinks ));
+			$this->notifyEvent( EVENT_LINKS_LOADED, Array( "links" => &$this->_blogLinks ));
 			// get the number of links
-			$numLinks = $links->getNumLinks( $this->_blogInfo->getId(), $categoryId );
-            // get all the link categories but we have to respect the order that the user asked
-            $linkCategories = new MyLinksCategories();
-            $blogLinkCategories = $linkCategories->getMyLinksCategories( $this->_blogInfo->getId(), $order );
-			$this->notifyEvent( EVENT_LINK_CATEGORIES_LOADED, Array ( "linkcategories" => &$blogLinkCategories ));
+			$numLinks = $links->getNumLinks( $this->_blogInfo->getId(), $this->_categoryId );
 			
+			// put the links in the view
+            $this->setValue( "links", $this->_blogLinks );
+			
 			// prepare the pager
-			$pager = new Pager( "?op=editLinks&amp;showCategory={$categoryId}&amp;searchTerms={$searchTerms}&amp;page=",
+			$pager = new Pager( "?op=editLinks&amp;showCategory={$this->_categoryId}&amp;searchTerms={$this->_searchTerms}&amp;page=",
 			                    $this->_page,
 								$numLinks,
-								DEFAULT_ITEMS_PER_PAGE );
+								DEFAULT_ITEMS_PER_PAGE );			
+			$this->setValue( "pager", $pager );
+		}
 
-			// put the data in the view
-            $this->setValue( "links", $blogLinks );
-            $this->setValue( "linkscategories", $blogLinkCategories );
-            $this->setValue( "currentcategory", $categoryId );
-			$this->setValue( "searchTerms", $searchTerms );
-			$this->setValue( "pager", $pager );
-		
+        /**
+         * Carries out the specified action
+         */
+        function render()
+        {	
+			$this->loadData();
+			
+			// put some more data that is only meaningful for the HTML view here
+            // get all the link categories but we have to respect the order that the user asked
+            $linkCategories = new MyLinksCategories();
+			$order = $this->getValue( "showOrder" );
+            $this->_blogLinkCategories = $linkCategories->getMyLinksCategories( $this->_blogInfo->getId(), $order );
+			$this->notifyEvent( EVENT_LINK_CATEGORIES_LOADED, Array ( "linkcategories" => &$blogLinkCategories ));			
+            $this->setValue( "linkscategories", $this->_blogLinkCategories );
+
+            $this->setValue( "currentcategory", $this->_categoryId );
+			$this->setValue( "searchTerms", $this->_searchTerms );
+	
 			parent::render();
         }
     }

Modified: plog/trunk/class/view/admin/adminnewalbumview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminnewalbumview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/adminnewalbumview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -9,10 +9,13 @@
      */	
 	class AdminNewAlbumView extends AdminTemplatedView
 	{
-	
-		function AdminNewAlbumView( $blogInfo )
+		var $_parentId;
+			
+		function AdminNewAlbumView( $blogInfo, $parentId = 0 )
 		{
 			$this->AdminTemplatedView( $blogInfo, "newresourcealbum" );
+			
+			$this->_parentId = $parentId;
 		}
 		
 		function render()
@@ -22,6 +25,7 @@
 			$userAlbums = $albums->getNestedAlbumList( $this->_blogInfo->getId());
 			$this->notifyEvent( EVENT_ALBUMS_LOADED, Array( "albums" => &$userAlbums ));
 			$this->setValue( "albums", $userAlbums );
+			$this->setValue( "parentId", $this->_parentId );	
 			
 			// transfer control to the parent class
 			parent::render();

Modified: plog/trunk/class/view/admin/adminnewresourceview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminnewresourceview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/adminnewresourceview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -8,10 +8,13 @@
      */	
 	class AdminNewResourceView extends AdminTemplatedView
 	{
+		var $_albumId;
 	
-		function AdminNewResourceView( $blogInfo )
+		function AdminNewResourceView( $blogInfo, $albumId = 0 )
 		{
 			$this->AdminTemplatedView( $blogInfo, "newresource" );
+			
+			$this->_albumId = $albumId;
 		}
 		
 		function render()
@@ -21,6 +24,7 @@
 			$userAlbums = $albums->getNestedAlbumList( $this->_blogInfo->getId());
 			$this->notifyEvent( EVENT_ALBUMS_LOADED, Array( "albums" => &$userAlbums ));			
 			$this->setValue( "albums", $userAlbums );
+			$this->setValue( "albumId", $this->_albumId );			
 			
 			// transfer control to the parent class
 			parent::render();

Modified: plog/trunk/class/view/admin/adminpostslistview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminpostslistview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/adminpostslistview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -128,11 +128,8 @@
 			$this->_locationId = $this->_getParameter( $params, "showLocation", -1 );
 		}
 		
-		/**
-		 * renders the view
-		 */
-		function render()
-		{			
+		function loadArticles()
+		{
             // fetch all the articles for edition, but we need to know whether we are trying to 
 			// search for some of them or simply filter them based on certain criteria
 			$blogSettings = $this->_blogInfo->getSettings();
@@ -169,11 +166,21 @@
 								$this->_itemsPerPage );
 
             $this->setValue( "posts", $posts );
+			$this->setValue( "pager", $pager );
 			
 			// throw the even in case somebody is listening to it
-			$this->notifyEvent( EVENT_POSTS_LOADED, Array( "posts" => &$posts ));
+			$this->notifyEvent( EVENT_POSTS_LOADED, Array( "posts" => &$posts ));			
+		}
+		
+		/**
+		 * renders the view
+		 */
+		function render()
+		{			
+			// load the articles
+			$this->loadArticles();
 			
-            // and the categories
+			// and now load the rest of stuff needed for the HTML view
             $categories = new ArticleCategories();
 			$blogSettings = $this->_blogInfo->getSettings();
 			$categoriesOrder = $blogSettings->getValue( "categories_order" );
@@ -211,9 +218,8 @@
 			$this->setValue( "poststatus", $postStatusList );
 			$this->setValue( "poststatusWithoutAll", $postStatusListWithoutAll );
 			$this->setValue( "searchTerms", TextFilter::filterAllHTML( $this->_searchTerms ));
-			$this->setValue( "pager", $pager );
 			
 			parent::render();
 		}
 	}
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/view/admin/adminresourceslistview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminresourceslistview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/adminresourceslistview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -9,6 +9,8 @@
 	
 	define( "ROOT_ALBUM_ID", 0 );
 	
+	define( "DEFAULT_RESOURCES_PER_PAGE", 30 );
+	
     /**
      * \ingroup View
      * @private
@@ -85,7 +87,7 @@
 																	  $this->_searchTerms,
 																	  $this->_locationId,
 					                                                  $this->_page,
-					                                                  DEFAULT_ITEMS_PER_PAGE );
+					                                                  DEFAULT_RESOURCES_PER_PAGE );
 																	  
 					// total number of resources in this album, used by the pager
 					$numResources = $galleryResources->getNumUserResources( $this->_blogInfo->getId(),
@@ -106,7 +108,7 @@
 																	  $this->_searchTerms,
 																	  $this->_locationId,
 					                                                  $this->_page,						
-					                                                  DEFAULT_ITEMS_PER_PAGE );
+					                                                  DEFAULT_RESOURCES_PER_PAGE );
 					// total number of resources for the pager
 					$numResources = $galleryResources->getNumUserResources( $this->_blogInfo->getId(),
 					                                                        GALLERY_NO_ALBUM,
@@ -154,7 +156,7 @@
 			$this->setValue( "resources", $resources );
 
 			// finally, create and export the pager
-			$pager = new Pager( $this->_pagerUrl, $this->_page, $numResources, DEFAULT_ITEMS_PER_PAGE );
+			$pager = new Pager( $this->_pagerUrl, $this->_page, $numResources, DEFAULT_RESOURCES_PER_PAGE );
 			$this->setValue( "pager", $pager );
 			$this->setValue( "searchTerms", $this->_searchTerms );
 			

Modified: plog/trunk/class/view/admin/admintemplatedview.class.php
===================================================================
--- plog/trunk/class/view/admin/admintemplatedview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/admintemplatedview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -46,4 +46,4 @@
             print( $output );
         }
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/class/view/admin/ajax/adminajaxview.class.php
===================================================================
--- plog/trunk/class/view/admin/ajax/adminajaxview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/admin/ajax/adminajaxview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,33 +1,17 @@
 <?php
 
-	lt_include( PLOG_CLASS_PATH."class/view/admin//adminview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/view/ajax/ajaxview.class.php" );
 
-	class AdminAjaxView extends AdminView
+	class AdminAjaxView extends AjaxView
 	{
-		function AjaxView( $blogInfo, $method = "" )
+		
+		function AdminAjaxView( $blogInfo )
 		{
-			$this->AdminView( $blogInfo );
+			$this->_blogInfo = $blogInfo;
 			
-            $this->_params = new Properties();
-			
-			$this->setValue( "method", $method );
+			$this->AjaxView();
 		}
 		
-		function setSuccess( $success )
-		{
-			$this->setValue( "success", $success );
-		}
-		
-		function setMessage( $message )
-		{
-			$this->setValue( "message", $message );
-		}
-		
-		function setResult( $result )
-		{
-			$this->setValue( "result", $result );
-		}
-		
 		function render()
 		{
 			// simply serialize the array with the parameters as json stream and send it to the client
@@ -39,9 +23,10 @@
 			if( isset( $data["url"] )) unset( $data["url"] );
 			if( isset( $data["config"] )) unset( $data["config"] );
 			if( isset( $data["blogsettings"] )) unset( $data["blogsettings"] );
-			if( isset( $data["form"] )) unset( $data["blogsettings"] );	
+			if( isset( $data["viewIsError"] )) unset( $data["viewIsError"] );
+			if( isset( $data["viewErrorMessage"] )) unset( $data["viewErrorMessage"] );			
 			
 			print( SerializerFactory::toJson( $data ));
-		}		
+		}
 	}
 ?>
\ No newline at end of file

Copied: plog/trunk/class/view/ajax (from rev 5682, plog/branches/lifetype-1.3-ajax/class/view/ajax)

Deleted: plog/trunk/class/view/ajax/ajaxview.class.php
===================================================================
--- plog/branches/lifetype-1.3-ajax/class/view/ajax/ajaxview.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/ajax/ajaxview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,49 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/view/view.class.php" );
-
-	class AjaxView extends View
-	{
-		function AjaxView( $method = "" )
-		{
-			$this->View();
-			$this->setValue( "method", $method );
-		}
-		
-		function setSuccess( $success )
-		{
-			$this->setValue( "success", $success );
-		}
-		
-		function setMessage( $message )
-		{
-			$this->setValue( "message", $message );
-		}
-		
-		function setErrorMessage( $message )
-		{
-			$this->setMessage( $message );
-			$this->setSuccess( false );
-		}
-		
-		function setSuccessMessage( $message )
-		{
-			$this->setMessage( $message );
-			$this->setSuccess( true );
-		}
-		
-		function setResult( $result )
-		{
-			$this->setValue( "result", $result );
-		}
-		
-		function render()
-		{
-			// simply serialize the array with the parameters as json stream and send it to the client
-			lt_include( PLOG_CLASS_PATH."class/data/serialize/serializerfactory.class.php" );
-			
-			$data = $this->_params->getAsArray();
-			print( SerializerFactory::toJson( $data ));
-		}
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/view/ajax/ajaxview.class.php (from rev 5682, plog/branches/lifetype-1.3-ajax/class/view/ajax/ajaxview.class.php)
===================================================================
--- plog/trunk/class/view/ajax/ajaxview.class.php	                        (rev 0)
+++ plog/trunk/class/view/ajax/ajaxview.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,49 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/view/view.class.php" );
+
+	class AjaxView extends View
+	{
+		function AjaxView( $method = "" )
+		{
+			$this->View();
+			$this->setValue( "method", $method );
+		}
+		
+		function setSuccess( $success )
+		{
+			$this->setValue( "success", $success );
+		}
+		
+		function setMessage( $message )
+		{
+			$this->setValue( "message", $message );
+		}
+		
+		function setErrorMessage( $message )
+		{
+			$this->setMessage( $message );
+			$this->setSuccess( false );
+		}
+		
+		function setSuccessMessage( $message )
+		{
+			$this->setMessage( $message );
+			$this->setSuccess( true );
+		}
+		
+		function setResult( $result )
+		{
+			$this->setValue( "result", $result );
+		}
+		
+		function render()
+		{
+			// simply serialize the array with the parameters as json stream and send it to the client
+			lt_include( PLOG_CLASS_PATH."class/data/serialize/serializerfactory.class.php" );
+			
+			$data = $this->_params->getAsArray();
+			print( SerializerFactory::toJson( $data ));
+		}
+	}
+?>
\ No newline at end of file

Copied: plog/trunk/class/view/renderer (from rev 5682, plog/branches/lifetype-1.3-ajax/class/view/renderer)

Deleted: plog/trunk/class/view/renderer/ajaxviewrenderer.class.php
===================================================================
--- plog/branches/lifetype-1.3-ajax/class/view/renderer/ajaxviewrenderer.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/renderer/ajaxviewrenderer.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,78 +0,0 @@
-<?php
-
-	lt_include( PLOG_CLASS_PATH."class/view/ajax/ajaxview.class.php" );
-	lt_include( PLOG_CLASS_PATH."class/data/serialize/serializerfactory.class.php" );
-
-	class AjaxViewRenderer extends AjaxView
-	{
-		function AjaxViewRenderer( $view )
-		{
-			$this->AjaxView();
-			
-			$this->_view = $view;
-		}
-		
-		function render()
-		{
-			// simply serialize the array with the parameters as json stream and send it to the client
-			lt_include( PLOG_CLASS_PATH."class/data/serialize/serializerfactory.class.php" );
-			
-			$data = $this->_view->_params->getAsArray();
-			
-			// some stuff that should not be serialized
-			$dontSerialize = Array(
-					"locale", "url", "config", "blogsettings", "menu", "userBlogs"
-				);			
-			
-			foreach( $data as $key => $value ) {
-				if( is_object( $value )) {
-					$methods = get_class_methods( $value );
-					foreach( $methods as $method ) {
-						if( strtolower( $method ) == "tojson" ) {
-							$data[$key] = $value->toJson();
-						}
-					}
-				}
-			}
-			
-			if( isset( $data["method"] )) {
-				$data["method"] = $data["op"];
-				$dontSerialize[] = "op";
-			}
-			
-			if( isset( $data["viewErrorMessage"] )) {
-				$data["message"] = $data["viewErrorMessage"];
-				$dontSerialize[] = "viewErrorMessage";
-			}
-			elseif( isset( $data["viewSuccessMessage"] )) {
-				$data["message"] = $data["viewSuccessMessage"];
-				$dontSerialize[] = "viewSuccessMessage";
-			}
-			
-			if( isset( $data["viewIsError"] )) {
-				if( $data["viewIsError"] )
-					$data["success"] = false;
-				else
-					$data["success"] = true;
-
-				$dontSerialize[] = "viewIsError";
-			}			
-			elseif( isset( $data["viewIsSuccess"] )) {
-				if( $data["viewIsSuccess"] )
-					$data["success"] = true;
-				else
-					$data["success"] = false;
-
-				$dontSerialize[] = "viewIsSuccess";
-			}			
-			
-			foreach( $dontSerialize as $var ) {
-				if( isset( $data[$var] )) unset( $data[$var] );
-			}
-					
-			$this->_params->setValues( $data );
-			
-			return( parent::render());
-		}
-	}
-?>
\ No newline at end of file

Copied: plog/trunk/class/view/renderer/ajaxviewrenderer.class.php (from rev 5682, plog/branches/lifetype-1.3-ajax/class/view/renderer/ajaxviewrenderer.class.php)
===================================================================
--- plog/trunk/class/view/renderer/ajaxviewrenderer.class.php	                        (rev 0)
+++ plog/trunk/class/view/renderer/ajaxviewrenderer.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,78 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/view/ajax/ajaxview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/data/serialize/serializerfactory.class.php" );
+
+	class AjaxViewRenderer extends AjaxView
+	{
+		function AjaxViewRenderer( $view )
+		{
+			$this->AjaxView();
+			
+			$this->_view = $view;
+		}
+		
+		function render()
+		{
+			// simply serialize the array with the parameters as json stream and send it to the client
+			lt_include( PLOG_CLASS_PATH."class/data/serialize/serializerfactory.class.php" );
+			
+			$data = $this->_view->_params->getAsArray();
+			
+			// some stuff that should not be serialized
+			$dontSerialize = Array(
+					"locale", "url", "config", "blogsettings", "menu", "userBlogs"
+				);			
+			
+			foreach( $data as $key => $value ) {
+				if( is_object( $value )) {
+					$methods = get_class_methods( $value );
+					foreach( $methods as $method ) {
+						if( strtolower( $method ) == "tojson" ) {
+							$data[$key] = $value->toJson();
+						}
+					}
+				}
+			}
+			
+			if( isset( $data["method"] )) {
+				$data["method"] = $data["op"];
+				$dontSerialize[] = "op";
+			}
+			
+			if( isset( $data["viewErrorMessage"] )) {
+				$data["message"] = $data["viewErrorMessage"];
+				$dontSerialize[] = "viewErrorMessage";
+			}
+			elseif( isset( $data["viewSuccessMessage"] )) {
+				$data["message"] = $data["viewSuccessMessage"];
+				$dontSerialize[] = "viewSuccessMessage";
+			}
+			
+			if( isset( $data["viewIsError"] )) {
+				if( $data["viewIsError"] )
+					$data["success"] = false;
+				else
+					$data["success"] = true;
+
+				$dontSerialize[] = "viewIsError";
+			}			
+			elseif( isset( $data["viewIsSuccess"] )) {
+				if( $data["viewIsSuccess"] )
+					$data["success"] = true;
+				else
+					$data["success"] = false;
+
+				$dontSerialize[] = "viewIsSuccess";
+			}			
+			
+			foreach( $dontSerialize as $var ) {
+				if( isset( $data[$var] )) unset( $data[$var] );
+			}
+					
+			$this->_params->setValues( $data );
+			
+			return( parent::render());
+		}
+	}
+?>
\ No newline at end of file

Modified: plog/trunk/class/view/view.class.php
===================================================================
--- plog/trunk/class/view/view.class.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/class/view/view.class.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -67,8 +67,6 @@
          */
 		function View()
         {
-			
-
             $this->_params = new Properties();
 			
 			// set a default content type and character set for responses
@@ -186,6 +184,11 @@
 			return true;
 		}
 		
+		function getErrorMessage()
+		{
+			return( $this->getValue( "viewErrorMessage" ));
+		}
+		
 		/**
 		 * Whether the view has to show some error message or not. Views can
 		 * show success messages as well as error messages at the same time.
@@ -229,6 +232,11 @@
 			return true;
 		}
 		
+		function getSuccessMessage()
+		{
+			return( $this->getValue( "viewSuccessMessage" ));
+		}		
+		
 		/**
 		 * stores a value in the session, associated to one key, in case
 		 * the view wants to keep some value for later use such as filter settings
@@ -318,4 +326,4 @@
             $this->sendContentType();            
         }
     }
-?>
+?>
\ No newline at end of file

Modified: plog/trunk/js/editor/lifetypeeditor.js
===================================================================
--- plog/trunk/js/editor/lifetypeeditor.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/editor/lifetypeeditor.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -713,14 +713,35 @@
 	this.execute = function( txtId, param )
 	{
 		if ( txtId == 'postText' )
-			resource_list_window(1);
+			Lifetype.UI.Editor.openResourceListWindow(1);
 		else
-		    resource_list_window(2);
+		    Lifetype.UI.Editor.openResourceListWindow(2);
 		return '';
 	}
 }
 
 /**
+ * opens a window pointing to the list of resources so that we can easily add one to our current
+ * article
+ *
+ * @param type
+ * @return nothing
+ */
+Lifetype.UI.Editor.openResourceListWindow( type ) {
+	width  = 500;
+	height = 450;
+	
+	x = parseInt(screen.width / 2.0) - (width / 2.0);
+	y = parseInt(screen.height / 2.0) - (height / 2.0);
+
+	// type == 1 => intro text
+	// type == 2 => extended text
+	HelpWin = window.open( '?op=resourceList&mode='+type,'ResourceListWindow','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
+
+}
+
+
+/**
  * implements drop-down lists
  */
 Lifetype.UI.Editor.List = function( id, options )

Modified: plog/trunk/js/location/location.js
===================================================================
--- plog/trunk/js/location/location.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/location/location.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -260,7 +260,7 @@
 
 	// built the URL to update the location
 	p = this.getPoint();
-	url = 'admin.php?op=updateLocation&locId=' + this.locationId + '&desc=' + encodeURIComponent( this.locationDesc ) + '&lat=' + p.lat() + '&long=' + p.lng();
+	url = 'admin.php?op=updateLocation&output=json&locId=' + this.locationId + '&desc=' + encodeURIComponent( this.locationDesc ) + '&lat=' + p.lat() + '&long=' + p.lng();
 
 	// make the HTTP request
 	var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:__handleUpdateLocationAjaxResponse, failure:__handleUpdateLocationAjaxResponse });
@@ -282,7 +282,7 @@
 	var message = msg.message;
 		
 	// there was an error, let's not continue...
-	if( success == 0 ) {
+	if( success == false ) {
 		window.alert(message);	
 		return( false );
 	}
@@ -291,9 +291,9 @@
 	window.alert( message );	
 	
 	// get the id of the updated location from the response message
-	var locId = msg.result._id;
+	var locId = msg.location.id;
 	// and the description
-	var locDesc = msg.result._desc;
+	var locDesc = msg.location.desc;
 	
 	// get the list that holds the locations and if it's there, then 
 	// update the one that we just moved around
@@ -313,7 +313,7 @@
 {
 	// built the URL to update the location
 	p = this.getPoint();
-	url = 'admin.php?op=addLocation&desc=' + encodeURIComponent( this.locationDesc ) + '&lat=' + p.lat() + '&long=' + p.lng();
+	url = 'admin.php?op=addLocation&output=json&desc=' + encodeURIComponent( this.locationDesc ) + '&lat=' + p.lat() + '&long=' + p.lng();
 
 	// make the HTTP request
 	var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:__handleAddLocationAjaxResponse, failure:__handleAddLocationAjaxResponse });
@@ -332,15 +332,15 @@
 	var message = msg.message;
 		
 	// there was an error, let's not continue...
-	if( success == 0 ) {
+	if( success == false ) {
 		window.alert(message);	
 		return( false );
 	}
 	
 	// get the id of the updated location from the response message
-	var locId = msg.result._id;
+	var locId = msg.location.id;
 	// and the description
-	var locDesc = msg.result._desc;
+	var locDesc = msg.location.desc;
 	
 	// get the list that holds the locations and if it's there, then 
 	// update the one that we just moved around

Modified: plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js
===================================================================
--- plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/tinymce/plugins/insertresource/editor_plugin.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -197,7 +197,7 @@
 					if( attribs["width"] == undefined )
 						attribs["width"] = 320;			
 						
-					embedHTML = getFlashPlayerHTML( attribs["alt"], attribs["height"], attribs["width"] );
+					embedHTML = Lifetype.Media.getFlashPlayerHTML( attribs["alt"], attribs["height"], attribs["width"] );
 
 					// Insert embed/object chunk
 					chunkBefore = content.substring(0, startPos);

Modified: plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js
===================================================================
--- plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/tinymce/tiny_mce-plog-resourcelist.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,3 +1,29 @@
+Lifetype.UI.Pages.ResourceChooser = function() {}
+
+/**
+ * Adds some text where the cursor is.
+ *
+ * Works in IE and Mozilla 1.3b+
+ * In other browsers, it simply adds the text at the end of the current text
+ */
+Lifetype.UI.Pages.ResourceChooser.addText = function( input, insText ) 
+{
+	input.focus();
+	if( input.createTextRange ) {
+		parent.opener.document.selection.createRange().text += insText;
+	} 
+	else if( input.setSelectionRange ) {
+		var len = input.selectionEnd;
+		input.value = input.value.substr( 0, len ) + insText + input.value.substr( len );
+		input.setSelectionRange(len+insText.length,len+insText.length);
+	} 
+	else { 
+		input.value += insText; 
+	}
+}
+
+
+
 /*
  * Insert resource related javascript functions
  */
@@ -40,7 +66,7 @@
     // generate the link
     var htmlCode = _generateResourceLink( resourceId, resourceLink, targetLink, resourceName, resourceDesc, resourceType, resourceMimeType );
 
-    addText( parent.opener.document.newPost.postText, htmlCode );
+    Lifetype.UI.Pages.ResourceChooser.addText( parent.opener.document.newPost.postText, htmlCode );
 }
 
 /*
@@ -70,7 +96,7 @@
 {
     var htmlCode = _generateAlbumLink( albumLink, albumName, albumDesc );
 
-    addText( parent.opener.document.newPost.postText, htmlCode );
+    Lifetype.UI.Pages.ResourceChooser.addText( parent.opener.document.newPost.postText, htmlCode );
 }
 
 function onCancel() {
@@ -96,6 +122,6 @@
 		tinyMCE.closeWindow(window);
 	}
 	else {
-		addText( parent.opener.document.newPost.postText, getFlashPlayerHTML( url, height, width ));
+		Lifetype.UI.Pages.ResourceChooser.addText( parent.opener.document.newPost.postText, Lifetype.Media.getFlashPlayerHTML( url, height, width ));
 	}
 }
\ No newline at end of file

Modified: plog/trunk/js/ui/autosave.js
===================================================================
--- plog/trunk/js/ui/autosave.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/autosave.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -76,7 +76,7 @@
 
 function backupPost()
 {
-	postTopic = $('postTopic').value;
+	postTopic = Lifetype.Dom.$('postTopic').value;
 	
 	if( htmlAreaEnabled )
 	{
@@ -84,7 +84,7 @@
 	}
 	else
 	{
-		postText = $('postText').value;
+		postText = Lifetype.Dom.$('postText').value;
 	}
 
 	if( postTopic.length > minBackupLength )
@@ -105,8 +105,8 @@
 	postNotSaved = getCookie( postNotSavedCookieName );
 	if ( postNotSaved == 1 )
 	{
-		$('autoSaveMessage').innerHTML = msgAutoSaveMessage;
-		Element.show($('autoSaveMessage'));
+		Lifetype.Dom.$('autoSaveMessage').innerHTML = msgAutoSaveMessage;
+		Lifetype.Dom.$('autoSaveMessage').style.display = 'block';
 	}
 	else
 	{
@@ -126,7 +126,7 @@
 
 function restoreAutoSave()
 {
-	$('postTopic').value = loadBackupPostFromCookie( postTopicCookieName );
+	Lifetype.Dom.$('postTopic').value = loadBackupPostFromCookie( postTopicCookieName );
 	
 	if( htmlAreaEnabled )
 	{
@@ -134,17 +134,19 @@
 	}
 	else
 	{
-		$('postText').value = loadBackupPostFromCookie( postTextCookieName );
+		Lifetype.Dom.$('postText').value = loadBackupPostFromCookie( postTextCookieName );
 	}
 	
-	$('autoSaveMessage').innerHTML = '';
-	Element.hide($('autoSaveMessage'));
+	Lifetype.Dom.$('autoSaveMessage').innerHTML = '';
+	//Element.hide(Lifetype.Dom.$('autoSaveMessage'));
+	Lifetype.Dom.$('autoSaveMessage').style.display = 'none';
 }
 
 function eraseAutoSave()
 {
 	deleteBackupPostFromCookie();
 	
-	$('autoSaveMessage').innerHTML = '';
-	Element.hide($('autoSaveMessage'));
+	Lifetype.Dom.$('autoSaveMessage').innerHTML = '';
+	//Element.hide(Lifetype.Dom.$('autoSaveMessage'));
+	Lifetype.Dom.$('autoSaveMessage').style.display = 'none';
 }
\ No newline at end of file

Modified: plog/trunk/js/ui/common.js
===================================================================
--- plog/trunk/js/ui/common.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/common.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,374 +1,13 @@
-/**
- * opens a window with some help information
- *
- * @param helpurl The destination url
- * @return nothing
- */ 
-function help_window(helpurl)
-{
-	HelpWin = window.open( helpurl,'HelpWindow','scrollbars=yes,resizable=yes,toolbar=no,height=400,width=400');
-}
+Lifetype.Media = function() {}
 
 /**
- * opens a window pointing to the list of resources so that we can easily add one to our current
- * article
- *
- * @param type
- * @return nothing
- */
-function resource_list_window( type ) {
-	width  = 500;
-	height = 450;
-	
-	x = parseInt(screen.width / 2.0) - (width / 2.0);
-	y = parseInt(screen.height / 2.0) - (height / 2.0);
-
-	// type == 1 => intro text
-	// type == 2 => extended text
-	HelpWin = window.open( '?op=resourceList&mode='+type,'ResourceListWindow','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
-
-}
-
-function userPictureSelectWindow()
-{
-	width  = 500;
-	height = 450;
-	
-	x = parseInt(screen.width / 2.0) - (width / 2.0);
-	y = parseInt(screen.height / 2.0) - (height / 2.0);
-	
-	UserPicture = window.open( '?op=userPictureSelect', 'UserPictureSelect','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
-}
-
-/**
- * resets the user picture/avatar in the profile page
- */
-function resetUserPicture()
-{
-    window.document.userSettings.userPictureId.value = 0;
-    // and reload the image path
-    window.document.userSettings.userPicture.src = 'imgs/no-user-picture.jpg';
-}
-
-/**
- * resets blogid in the general setting page
- */
-function resetBlogId()
-{
-    window.document.updateGlobalSettings.blogId.value = '';
-}
-
-/**
- * empties a drop-down list
- *
- * @param box The form object representing the drop-down list
- * @return nothing
- */
-function emptyList( box )
-{
-	while ( box.options.length ) box.options[0] = null;
-}
-
-/**
- * fill a list with data
- *
- * @param box
- * @param numElems
- * @return nothing
- */
-function fillList( box, numElems )
-{
-	for ( i = 1; i <= numElems; i++ ) {
-		option = new Option( i, i );
-		box.options[box.length] = option;
-	}
-	
-	box.selectedIndex=0;
-}
-
-/**
- * @private 
- * @param box
- * @return nothing
- */
-function changeList( box )
-{
-	daysMonth = days[box.options[box.selectedIndex].value-1];
-	emptyList( box.form.postDay );
-	fillList( box.form.postDay, daysMonth );
-}
-
-/**
- * Adds some text where the cursor is.
- *
- * Works in IE and Mozilla 1.3b+
- * In other browsers, it simply adds the text at the end of the current text
- */
-function addText( input, insText ) 
-{
-	input.focus();
-	if( input.createTextRange ) {
-		parent.opener.document.selection.createRange().text += insText;
-	} 
-	else if( input.setSelectionRange ) {
-		var len = input.selectionEnd;
-		input.value = input.value.substr( 0, len ) + insText + input.value.substr( len );
-		input.setSelectionRange(len+insText.length,len+insText.length);
-	} 
-	else { 
-		input.value += insText; 
-	}
-}
-
-/**
- * Used in the' user profile' screen where users can pick an image from their collection
- * and set it as their 'avatar'
- *
- * @param resId
- * @param url
- * @return nothing
- */
-function returnResourceInformation(resId, url)
-{
-	// set the picture id
-    parent.opener.document.userSettings.userPictureId.value = resId;
-    // and reload the image path
-    parent.opener.document.userSettings.userPicture.src = url;
-}
-
-/**
- * opens a window to see an screenshot from a template
- *
- * @param destination url
- */
-function openScreenshotWindow( destUrl )
-{
-	ScreenshotWindow = window.open( destUrl, 'Screenshot','scrollbars=yes,resizable=yes,toolbar=no,height=600,width=800');
-}
-
-/**
- * opens the window where users can choose their own template. The destination url is hardcoded
- */
-function openTemplateChooserWindow()
-{
-	width  = 500;
-	height = 450;
-	
-	x = parseInt(screen.width / 2.0) - (width / 2.0);
-	y = parseInt(screen.height / 2.0) - (height / 2.0);
-	
-	TemplateSelectorWindow = window.open( '?op=blogTemplateChooser', 'TemplateChooser','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
-}
-
-/**
- * tells the parent window which template we chose
- */
-function blogTemplateSelector( templateId )
-{
-	templateSelectList = parent.opener.document.blogSettings.blogTemplate;
-	
-	// loop throough the array with the different template sets and if we find the
-	// one that the use just selected, then automatically select it and quit the loop
-	for( i = 0; i < templateSelectList.options.length; i++ ) {
-		if( templateSelectList.options[i].value == templateId ) {
-			templateSelectList.selectedIndex = i;
-			break;
-		}
-	}
-	
-	window.close();
-}
-
-/**
- * in the "newBlogUser" screen, shows and hides the 'notification area', a textbox
- * where users can type some text that will be included in an email sent to the user that is
- * going to be invited to the blog
- */
-function toggleNotificationArea()
-{
-    var elem = document.getElementById('emailTextNotification');
-    if( elem.style.display == 'none' )
-      elem.style.display = '';
-    else
-      elem.style.display = 'none';
-      
-    return true;  
-}
-
-/**
- * the functions below are used in the "global settings" page, so that 
- * whole blocks of the html page can appear and disappear when needed
- */
-// there is no current section selected
-var currentSection='';
-sections = ["general","summary","templates","urls","email","uploads","helpers","interfaces","security","bayesian","resources","search"];
-
-function _toggle( sectionId )
-{
- // get the dom object with such section
- element = document.getElementById( sectionId );
- 
- currentStatus = element.style.display;
-
- // and toggle its visibility
- if( element.style.display == 'none' )
-   element.style.display = 'block';
- else
-   element.style.display = 'none';
-  
- return true;
-}
-
-function toggleSection(sectionId)
-{
- // if no section selected, do nothing
- if( sectionId == 'none' )
-   return false;
-
- toggleAll( false );
- 
- // and toggle the new one
- _toggle(sectionId);
-
- // now we have a new current section
- currentSection = sectionId;
-   
- return true;  
-}
-
-function toggleAll( enabled )
-{
-  if( enabled ) statusString = 'block';
-  else statusString = 'none';
-  
-  for( i = 0; i < sections.length; i++ ) {
-    element = document.getElementById( sections[i] );
-    element.style.display = statusString;
-  }
-}
-
-/**
- * generic function for moving elements from one list to another!
- */
-function moveElement(srcList, dstList)
-{
-	
-	// now find out which user we've selected from the first list
-	indexId = srcList.selectedIndex;
-	
-	// if no element was selected, quit
-	if( indexId == -1 )
-		return false;
-	
-	optText = srcList.options[indexId].text;
-	optId  = srcList.options[indexId].value;
-	
-	if( optId == -1 ) {
-		// do nothing, this is our special marker!
-		return false;
-	}
-	
-	// add the option to the opposite box
-	newOpt = new Option( optText, optId );
-	dstList.options[dstList.options.length] = newOpt;
-	
-	// and remove it from the current box
-	srcList.options[indexId] = null;
-	
-	return true;
-}
-
-/**
- * automatically selects all the elements of a list
- */
-function listSelectAll(listId)
-{
-	list = document.getElementById( listId );
-	for( i = 0; i < list.options.length; i++ ) {
-		list.options[i].selected = true;
-	}
-
-	return true;
-}
-
-function editBlogRemoveSelected()
-{
-	userList = document.getElementById( 'userList' );
-    length = userList.options.length;
-	for( i = 0; i < length; i++ ) {
-		if( userList.options[i] ) {
-			if( userList.options[i].selected ){
-				userList.options[i] = null;
-            	i--; 
-            	//length--;
-			}
-        }
-	}
-	return( true );
-}
-
-function MM_jumpMenu(targ,selObj,restore){ //v3.0 
-    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); 
-    if (restore) selObj.selectedIndex=0; 
-}
-
-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 ) 
+Lifetype.Media.getFlashPlayerHTML = function( url, height, width ) 
 {
     var playerUrl = plogBaseUrl + "/flash/mp3player/mp3player.swf";
 	

Copied: plog/trunk/js/ui/contentoverlay.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/contentoverlay.js)
===================================================================
--- plog/trunk/js/ui/contentoverlay.js	                        (rev 0)
+++ plog/trunk/js/ui/contentoverlay.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,121 @@
+Lifetype.UI.ContentOverlay = function( el, url, userConfig ) 
+{
+	if( arguments.length < 3 ) {
+		userConfig = {
+			fixedcenter:true,
+			constraintoviewport:true,
+			visible:false, 
+			width:"660px",
+			close: true,
+			draggable: false,
+			underlay:"shadow",
+			modal:true			
+		}
+	}
+	Lifetype.UI.ContentOverlay.superclass.constructor.call( this, el, userConfig );
+	this.setBody( "" );				
+	this.url = url;
+}
+YAHOO.extend( Lifetype.UI.ContentOverlay, YAHOO.widget.Panel );
+
+Lifetype.UI.ContentOverlay.prototype.show = function()
+{
+	this.render( document.body );
+		
+	c = YAHOO.util.Connect.asyncRequest( 'GET', this.url, { scope:this, success: function(o) {
+			this.setBody( o.responseText )
+		}
+	});
+	Lifetype.UI.ContentOverlay.superclass.show.call( this );	
+}
+
+// Overrides the handler for the "modal" property with special animation-related functionality
+Lifetype.UI.ContentOverlay.prototype.configModal = function(type, args, obj) 
+{
+	var modal = args[0];
+
+	if (modal) {
+		this.buildMask();
+
+		if (typeof this.maskOpacity == 'undefined') {
+			this.mask.style.visibility = "hidden";
+			this.mask.style.display = "block";
+			this.maskOpacity = YAHOO.util.Dom.getStyle(this.mask,"opacity");
+			this.mask.style.display = "none";
+			this.mask.style.visibility = "visible";
+		}
+
+		if (! YAHOO.util.Config.alreadySubscribed( this.beforeShowEvent, this.showMask, this ) ) {
+			this.beforeShowEvent.subscribe(this.showMask, this, true);
+		}
+		if (! YAHOO.util.Config.alreadySubscribed( this.hideEvent, this.hideMask, this) ) {
+			this.hideEvent.subscribe(this.hideMask, this, true);
+		}
+		if (! YAHOO.util.Config.alreadySubscribed( YAHOO.widget.Overlay.windowResizeEvent, this.sizeMask, this ) ) {
+			YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.sizeMask, this, true);
+		}
+		if (! YAHOO.util.Config.alreadySubscribed( this.destroyEvent, this.removeMask, this) ) {
+			this.destroyEvent.subscribe(this.removeMask, this, true);
+		}
+		this.cfg.refireEvent("zIndex");
+	} 
+	else {
+		this.beforeShowEvent.unsubscribe(this.showMask, this);
+		this.beforeHideEvent.unsubscribe(this.hideMask, this);
+		YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.sizeMask);
+	}
+};
+
+// Overrides the showMask function to allow for fade-in animation
+Lifetype.UI.ContentOverlay.prototype.showMask = function() {
+	if (this.cfg.getProperty("modal") && this.mask) {
+		YAHOO.util.Dom.addClass(document.body, "masked");
+		this.sizeMask();
+
+		var o = this.maskOpacity;
+
+		if (! this.maskAnimIn) {
+			this.maskAnimIn = new YAHOO.util.Anim(this.mask, {opacity: {to:o}}, 0.25)
+			YAHOO.util.Dom.setStyle(this.mask, "opacity", 0);
+		}
+
+		if (! this.maskAnimOut) {
+			this.maskAnimOut = new YAHOO.util.Anim(this.mask, {opacity: {to:0}}, 0.25)
+			this.maskAnimOut.onComplete.subscribe(function() {
+													this.mask.tabIndex = -1;
+													this.mask.style.display = "none";
+													this.hideMaskEvent.fire();
+													YAHOO.util.Dom.removeClass(document.body, "masked");
+												  }, this, true);
+			
+		}
+		this.mask.style.display = "block";
+		this.maskAnimIn.animate();
+		this.mask.tabIndex = 0;
+		this.showMaskEvent.fire();
+	}
+};
+
+// Overrides the showMask function to allow for fade-out animation
+Lifetype.UI.ContentOverlay.prototype.hideMask = function() {
+	if (this.cfg.getProperty("modal") && this.mask) {
+		this.maskAnimOut.animate();
+	}
+};
+
+/**
+ * General code that is executed as soon as the page is loaded. It will attach an instance of the ContentOverlay
+ * class to all links whose "rel" attribute is set to "overlay"
+ */
+YAHOO.util.Event.addListener( window, "load", function() {
+	elems = YAHOO.util.Dom.getElementsBy(function(e) {return(e.rel == "overlay")});
+	objs = new Array();
+	for( i = 0; i < elems.length; i++ ) {
+		e = elems[i];
+		// create the object
+		objs[i] = new Lifetype.UI.ContentOverlay( YAHOO.util.Dom.generateId(), e.href );
+		e.href = "#";		
+		// and bind it to the onclick event
+		YAHOO.util.Event.addListener( e.id, "click", objs[i].show, objs[i], true );
+	}
+});
\ No newline at end of file

Modified: plog/trunk/js/ui/core.js
===================================================================
--- plog/trunk/js/ui/core.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/core.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -77,16 +77,7 @@
 	return( documentBasePath );
 }
 
-
 /**
- * Base UI class
- */
-Lifetype.UI = function() 
-{
-	// nothing yet
-}
-
-/**
  * JSon related code
  */
 Lifetype.JSon = function() {}

Deleted: plog/trunk/js/ui/default.js
===================================================================
--- plog/trunk/js/ui/default.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/default.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,193 +0,0 @@
-function externalLinks()
-{
-    if (!document.getElementsByTagName) return;
-
-    var anchors = document.getElementsByTagName("a");
-
-    for (var i = 0; i < anchors.length; i++)
-    {
-        var anchor = anchors[i];
-
-        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
-        {
-            anchor.target = "_blank";
-        }
-    }
-}
-
-window.onload = externalLinks;
-
-function verifyOneCheckMinimum(formName, msg, prefix)
-{
-    n = "all";
-
-    if (prefix)
-    {
-        n = prefix + n;
-    }
-
-    f = document.getElementById(formName);
-    i = 0;
-    j = 0;
-
-    while (e = f.elements[i])
-    {
-        if (e.type == "checkbox" && e.id != n && e.checked)
-        {
-            if (!prefix || e.id.indexOf(prefix) != -1)
-            {
-                j++;
-            }
-        }
-
-        i++;
-    }
-
-    result = (j > 0);
-
-    if (!result && msg)
-    {
-        alert(msg);
-    }
-
-    return result;
-}
-
-function submitForm(formName, opValue, msg)
-{
-    if (msg)
-    {
-        if (!verifyOneCheckMinimum(formName))
-        {
-            alert(msg);
-            return false;
-        }
-    }
-
-    f = document.getElementById(formName);
-    f.op.value = opValue;
-    return true;
-}
-
-function toggleAllChecks(formName, prefix)
-{
-    n = "all";
-
-    if (prefix)
-    {
-        n = prefix + n;
-    }
-
-    i = 0;
-    e = document.getElementById(n);
-    s = e.checked;
-    f = document.getElementById(formName);
-
-    while (e = f.elements[i])
-    {
-        if (e.type == "checkbox" && e.id != n)
-        {
-            if (!prefix || e.id.indexOf(prefix) != -1)
-            {
-                e.checked = s;
-            }
-        }
-
-        i++;
-    }
-}
-
-// In LifeType 1.2 imeplemtation, we don't have the Role object.
-// So, I just defined two kind of permission group here, it can help user configure thier blog user permission easily.
-var permissionSets = new Array();
-permissionSets["basic_blog_permission"] = new Array( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26, 36, 37 );
-permissionSets["full_blog_permission"] = new Array( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 );
-
-function togglePermissionSets(formName, permissionSet)
-{
-	if(permissionSet == "")
-		return;
-
-    f = document.getElementById(formName);
-	i = 0;
-    while (e = f.elements[i])
-    {
-        if (e.type == "checkbox" && e.id != "sendNotification")
-        {
-            if( inArray(permissionSets[permissionSet], e.value) )
-            	e.checked = 1;
-            else
-            	e.checked = 0;
-        }
-        i++;
-    }
-}
-
-// Returns true if the passed value is found in the
-// array. Returns false if it is not.
-function inArray(a, v, c)
-{
-	var i;
-	for (i=0; i < a.length; i++) {
-		// use === to check for Matches. ie., identical (===),
-		if(c){ //performs match even the string is case sensitive
-			if (a[i].toLowerCase() == v.toLowerCase()) {
-				return true;
-			}
-		}else{
-			if (a[i] == v) {
-				return true;
-			}
-		}
-	}
-	return false;
-}
-
-function confirmDlg(l, msg)
-{
-    if (confirm(msg))
-    {
-        if (typeof(l) == 'string')
-        {
-            document.location.href = l;
-        }
-        else
-        {
-            document.location.href = l.href;
-        }
-    }
-
-    return false;
-}
-
-function popUp(l, n, f)
-{
-    if (!window.focus)
-    {
-        return true;
-    }
-
-    if (typeof(l) == 'string')
-    {
-        window.open(l, n, f);
-    }
-    else
-    {
-        window.open(l.href, n, f);
-    }
-
-    return false;
-}
-
-function goTo(l)
-{
-    window.location.href = l;
-}
-
-function goToIf(l, msg)
-{
-    if (confirm(msg))
-    {
-        window.location.href = l;
-    }
-}

Copied: plog/trunk/js/ui/dom.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/dom.js)
===================================================================
--- plog/trunk/js/ui/dom.js	                        (rev 0)
+++ plog/trunk/js/ui/dom.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,54 @@
+/**
+ * DOM manipulation utilities
+ */
+Lifetype.Dom = function() 
+{
+	// nothing yet
+}
+
+Lifetype.Dom.$ = function( f )
+{
+	return( document.getElementById( f ));
+}
+
+Lifetype.Dom.$F = function( f )
+{
+	return( document.getElementById( f ).value );
+}
+
+/**
+ * Hides an element from the DOM, only if exists
+ *
+ * @param elemId
+ */
+Lifetype.Dom.hide = function( elemId )
+{
+	elem = document.getElementById( elemId );
+	if( elem )
+		elem.style.display = 'none';
+}
+
+/**
+ * Shows an existing element in the DOM, only if exists
+ *
+ * @param elemId
+ */
+Lifetype.Dom.show = function( elemId )
+{
+	elem = document.getElementById( elemId );
+	if( elem )
+		elem.style.display = 'block';
+}
+
+/**
+ * sets the innerHTML property of the given element
+ *
+ * @param elemId
+ * @param content
+ */
+Lifetype.Dom.setContent = function( elemId, content )
+{
+	elem = document.getElementById( elemId );
+	if( elem ) 
+		elem.innerHTML = content;
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/external.js
===================================================================
--- plog/trunk/js/ui/external.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/external.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,9 +0,0 @@
-function externalLinks() { 
- if (!document.getElementsByTagName) return; 
- var anchors = document.getElementsByTagName("a"); 
- for (var i=0; i<anchors.length; i++) { 
-  var anchor = anchors[i]; 
-  if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") 
-   anchor.target = "_blank"; 
-  } 
-}
\ No newline at end of file

Modified: plog/trunk/js/ui/forms.js
===================================================================
--- plog/trunk/js/ui/forms.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/forms.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -53,7 +53,212 @@
 	}
 }
 
+/**
+ * @static
+ * Appends an item to a list
+ * @param fieldName
+ * @param value
+ * @param ite
+ */
+Lifetype.Forms.List.appendToList = function( fieldName, value, item )
+{
+	return( Lifetype.Forms.List.appendToExternalList( document, fieldName, value, item ));
+}
 
+/**
+ * @static
+ * Appends an item to a list, which may not be inside the current document (hence the
+ * 'dest' parameter)
+ * @param dest
+ * @param fieldName
+ * @param value
+ * @param ite
+ */
+Lifetype.Forms.List.appendToExternalList = function( dest, fieldName, value, item )
+{
+	dstList = dest.getElementById( fieldName );
+
+	// check if the element is already there
+	found = false;
+	j = 0;
+	while( j < dstList.options.length && !found ) {
+		if( dstList.options[j].text == item && dstList.options[j].value == value ) {
+			// element found!
+			found = true;
+		}
+		j++;
+	}
+
+	// add the element only if not found
+	if( !found ) {
+		newOpt = new Option( item, value );
+		dstList.options[dstList.options.length] = newOpt;
+	}
+
+	return true;
+}
+
+/**
+ * automatically selects all the elements of a list
+ *
+ * @param listId
+ */
+Lifetype.Forms.List.selectAll = function( listId )
+{
+	list = document.getElementById( listId );
+	for( i = 0; i < list.options.length; i++ ) {
+		list.options[i].selected = true;
+	}
+
+	return true;
+}
+
+/**
+ * empties a drop-down list
+ *
+ * @param box The form object representing the drop-down list
+ * @return nothing
+ */
+Lifetype.Forms.List.emptyList = function( listId )
+{	
+	box = Lifetype.Dom.$( listId );
+	while ( box.options.length ) box.options[0] = null;
+}
+
+/**
+ * Toggles all checkboxes within a form
+ */
+Lifetype.Forms.toggleAllChecks = function(formName, prefix)
+{
+    n = "all";
+
+    if (prefix)
+    {
+        n = prefix + n;
+    }
+
+    i = 0;
+    e = document.getElementById(n);
+    s = e.checked;
+    f = document.getElementById(formName);
+
+    while (e = f.elements[i])
+    {
+        if (e.type == "checkbox" && e.id != n)
+        {
+            if (!prefix || e.id.indexOf(prefix) != -1)
+            {
+                e.checked = s;
+            }
+        }
+
+        i++;
+    }
+}
+
+/**
+ * @static
+ * Processes responses for forms submitted via Ajax
+ * @param formId
+ * @param postUrl
+ * @param options An options object:
+ *   resetAfterSuccess:boolean = reset the form after success
+ *   formSuccessCallback:function = callback, function to call if the form is successful
+ *   formErrorCallback:function = callback, function to call if the form is not successful
+ */
+Lifetype.Forms.AjaxFormProcessor = function( formId, postUrl, options )
+{
+	var formObject = document.getElementById( formId ); 
+	YAHOO.util.Connect.setForm(formObject); 
+	
+	if( options )
+		options.formElement = formObject;
+		
+	var cObj = YAHOO.util.Connect.asyncRequest('POST', postUrl,
+		callback = {
+			argument: options,
+			success: function( o ) {
+				// decode the JSon response from the server
+				response = Lifetype.JSon.decode( o.responseText );
+				o.response = response;
+				
+				// shorter way to access the form object
+				form = response.form;						
+
+				// 'deactivate' all field messages
+				elements = YAHOO.util.Dom.getElementsByClassName('fieldValidationError','div');
+				for( i = 0; i < elements.length; i++ ) {
+					elements[i].style.display = 'none';
+				}
+				
+				// and all other messages
+				document.getElementById( "FormInfo" ).style.display = 'none';
+				document.getElementById( "FormError" ).style.display = 'none';
+				
+				// was it successful?
+				if( response.success == false ) {							
+					// process the information from the 'form' object
+					for( i = 0; i < form.fields.length; i++ ) {
+						fObject = form.fields[i];
+						// is the field valid?
+						if( fObject.valid == false ) {
+							// We've also got the name of the field that caused the error and 
+							// the error message that should be displayed, so we can do it right away
+							if(( elem = YAHOO.util.Dom.get( "field_" + fObject.field ))) {
+								elem.style.display = 'block';
+								elem.innerHTML = '<span style="background:red;color:white;font-weight:bold">&nbsp;!&nbsp;</span>&nbsp;' + fObject.message;
+							}
+						}
+						else {
+							// there was no error, so we can hide the error message if there was one previously displayed
+							if(( elem = YAHOO.util.Dom.get( "field_" + fObject.field ))) {
+								elem.style.display = 'none';
+							}
+						}
+					}
+				
+					// display the general error message by setting it into its container
+					if(( elem = YAHOO.util.Dom.get( "FormErrorMessage" ))) {
+						elem.innerHTML = response.message;
+					}
+					if(( elem = YAHOO.util.Dom.get( "FormError" ))) {					
+						elem.style.display = 'block';
+					}
+					
+					// check the arguments
+					if( o.argument ) {
+						// is there an error callback?
+						if( o.argument.formErrorCallback )
+							o.argument.formErrorCallback( o );
+					}					
+					
+					return( true );
+				}
+				else {
+					// display the general success message by setting it into its container
+					// and making the block visible
+					if(( elem = YAHOO.util.Dom.get( "FormInfoMessage" )))
+						elem.innerHTML = response.message;
+					if(( elem = YAHOO.util.Dom.get( "FormInfo" )))
+						elem.style.display = 'block';
+						
+					// check if there's any argument
+					if( o.argument ) {
+						// do we reset the form after success
+						if( o.argument.resetAfterSuccess == true ) {
+							o.argument.formElement.reset();
+						}					
+						// is there a success callback?
+						if( o.argument.formSuccessCallback )
+							o.argument.formSuccessCallback( o );
+					}
+				}									
+			}			
+		}
+	);
+}
+
+
 //
 // :TODO:
 // Move the functions above to the Lifetype.Forms.List namespace
@@ -152,28 +357,4 @@
 {
 	element = dest.getElementById( fieldName );
 	element.value = value;
-}
-
-function appendDocumentList(dest, fieldName, value, item )
-{
-	dstList = dest.getElementById( fieldName );
-	
-	// check if the element is already there
-	found = false;
-	j = 0;
-	while( j < dstList.options.length && !found ) {
-		if( dstList.options[j].text == item && dstList.options[j].value == value ) {
-			// element found!
-			found = true;
-		}
-		j++;
-	}
-	
-	// add the element only if not found
-	if( !found ) {
-		newOpt = new Option( item, value );
-		dstList.options[dstList.options.length] = newOpt;
-	}
-	
-	return true;
 }
\ No newline at end of file

Copied: plog/trunk/js/ui/menu.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/menu.js)
===================================================================
--- plog/trunk/js/ui/menu.js	                        (rev 0)
+++ plog/trunk/js/ui/menu.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,9 @@
+Lifetype.UI.Menu = function() {}
+
+Lifetype.UI.Menu.MM_jumpMenu = function(targ,selObj,restore) 
+{ 
+	//v3.0 
+    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); 
+    if (restore) selObj.selectedIndex=0; 
+}
+

Copied: plog/trunk/js/ui/pages (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages)

Deleted: plog/trunk/js/ui/pages/addbloguser.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/addbloguser.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/addbloguser.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,50 +0,0 @@
-
-// In LifeType 1.2 imeplemtation, we don't have the Role object.
-// So, I just defined two kind of permission group here, it can help user configure thier blog user permission easily.
-var permissionSets = new Array();
-permissionSets["basic_blog_permission"] = new Array( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26, 36, 37 );
-permissionSets["full_blog_permission"] = new Array( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 );
-
-Lifetype.UI.Pages.AddBlogUser = function() {}
-
-Lifetype.UI.Pages.AddBlogUser.togglePermissionSets = function(formName, permissionSet)
-{
-	if(permissionSet == "")
-		return;
-
-    f = document.getElementById(formName);
-	i = 0;
-    while (e = f.elements[i])
-    {
-        if (e.type == "checkbox" && e.id != "sendNotification")
-        {
-            if( Lifetype.UI.Pages.AddBlogUser.inArray(permissionSets[permissionSet], e.value) )
-            	e.checked = 1;
-            else
-            	e.checked = 0;
-        }
-        i++;
-    }
-}
-
-/**
- * Returns true if the passed value is found in the
- * array. Returns false if it is not.
- */
-Lifetype.UI.Pages.AddBlogUser.inArray = function(a, v, c)
-{
-	var i;
-	for (i=0; i < a.length; i++) {
-		// use === to check for Matches. ie., identical (===),
-		if(c){ //performs match even the string is case sensitive
-			if (a[i].toLowerCase() == v.toLowerCase()) {
-				return true;
-			}
-		}else{
-			if (a[i] == v) {
-				return true;
-			}
-		}
-	}
-	return false;
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/addbloguser.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/addbloguser.js)
===================================================================
--- plog/trunk/js/ui/pages/addbloguser.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/addbloguser.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,50 @@
+
+// In LifeType 1.2 imeplemtation, we don't have the Role object.
+// So, I just defined two kind of permission group here, it can help user configure thier blog user permission easily.
+var permissionSets = new Array();
+permissionSets["basic_blog_permission"] = new Array( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26, 36, 37 );
+permissionSets["full_blog_permission"] = new Array( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 );
+
+Lifetype.UI.Pages.AddBlogUser = function() {}
+
+Lifetype.UI.Pages.AddBlogUser.togglePermissionSets = function(formName, permissionSet)
+{
+	if(permissionSet == "")
+		return;
+
+    f = document.getElementById(formName);
+	i = 0;
+    while (e = f.elements[i])
+    {
+        if (e.type == "checkbox" && e.id != "sendNotification")
+        {
+            if( Lifetype.UI.Pages.AddBlogUser.inArray(permissionSets[permissionSet], e.value) )
+            	e.checked = 1;
+            else
+            	e.checked = 0;
+        }
+        i++;
+    }
+}
+
+/**
+ * Returns true if the passed value is found in the
+ * array. Returns false if it is not.
+ */
+Lifetype.UI.Pages.AddBlogUser.inArray = function(a, v, c)
+{
+	var i;
+	for (i=0; i < a.length; i++) {
+		// use === to check for Matches. ie., identical (===),
+		if(c){ //performs match even the string is case sensitive
+			if (a[i].toLowerCase() == v.toLowerCase()) {
+				return true;
+			}
+		}else{
+			if (a[i] == v) {
+				return true;
+			}
+		}
+	}
+	return false;
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/blogsettings.js
===================================================================

Copied: plog/trunk/js/ui/pages/blogsettings.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/blogsettings.js)
===================================================================

Deleted: plog/trunk/js/ui/pages/default.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/default.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/default.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,30 +0,0 @@
-Lifetype.UI.Pages.Default = function() {}
-
-Lifetype.UI.Pages.Default.submitHook = function()
-{
-	var formObject = document.getElementById( 'loginForm' ); 
-	YAHOO.util.Connect.setForm(formObject); 
-	var cObj = YAHOO.util.Connect.asyncRequest('POST', '?op=Login&output=json',
-		callback = {
-			success: function( o ) {
-				// decode the JSon response from the server
-				response = Lifetype.JSon.decode( o.responseText );
-				
-				Lifetype.Dom.hide( "FormInfo" );
-				Lifetype.Dom.hide( "FormError" );
-				
-				if( response.success ) {
-					Lifetype.Dom.setContent( "FormInfoMessage", response.message );
-					Lifetype.Dom.show( "FormInfo" );
-
-					// move to the blog selection
-					window.location.href = '?op=blogSelectLogin';
-				}
-				else {
-					Lifetype.Dom.setContent( "FormErrorMessage", response.message );
-					Lifetype.Dom.show( "FormError" );
-				}
-			}
-		}
-	);		
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/default.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/default.js)
===================================================================
--- plog/trunk/js/ui/pages/default.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/default.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,30 @@
+Lifetype.UI.Pages.Default = function() {}
+
+Lifetype.UI.Pages.Default.submitHook = function()
+{
+	var formObject = document.getElementById( 'loginForm' ); 
+	YAHOO.util.Connect.setForm(formObject); 
+	var cObj = YAHOO.util.Connect.asyncRequest('POST', '?op=Login&output=json',
+		callback = {
+			success: function( o ) {
+				// decode the JSon response from the server
+				response = Lifetype.JSon.decode( o.responseText );
+				
+				Lifetype.Dom.hide( "FormInfo" );
+				Lifetype.Dom.hide( "FormError" );
+				
+				if( response.success ) {
+					Lifetype.Dom.setContent( "FormInfoMessage", response.message );
+					Lifetype.Dom.show( "FormInfo" );
+
+					// move to the blog selection
+					window.location.href = '?op=blogSelectLogin';
+				}
+				else {
+					Lifetype.Dom.setContent( "FormErrorMessage", response.message );
+					Lifetype.Dom.show( "FormError" );
+				}
+			}
+		}
+	);		
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/editarticlecategory.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/editarticlecategory.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/editarticlecategory.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,17 +0,0 @@
-Lifetype.UI.Pages.EditPostCategory = function() {}
-
-Lifetype.UI.Pages.EditPostCategory.submitHook = function( form )
-{
-	Lifetype.Forms.AjaxFormProcessor( form.id,'?output=json', {formSuccessCallback:Lifetype.UI.Pages.EditPostCategory.updateCategorySuccessCallback} );
-}
-
-Lifetype.UI.Pages.EditPostCategory.updateCategorySuccessCallback = function( o )
-{
-	// we now need to dynamically update the table where this element was located to reflect the changes
-	var category =  o.response.category;
-	
-	var fields = [ "name", "in_main_page", "num_articles" ];
-	var prefix = "category_";
-	
-	Lifetype.UI.updateFromObject( category, prefix, fields );
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/editarticlecategory.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/editarticlecategory.js)
===================================================================
--- plog/trunk/js/ui/pages/editarticlecategory.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/editarticlecategory.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,17 @@
+Lifetype.UI.Pages.EditPostCategory = function() {}
+
+Lifetype.UI.Pages.EditPostCategory.submitHook = function( form )
+{
+	Lifetype.Forms.AjaxFormProcessor( form.id,'?output=json', {formSuccessCallback:Lifetype.UI.Pages.EditPostCategory.updateCategorySuccessCallback} );
+}
+
+Lifetype.UI.Pages.EditPostCategory.updateCategorySuccessCallback = function( o )
+{
+	// we now need to dynamically update the table where this element was located to reflect the changes
+	var category =  o.response.category;
+	
+	var fields = [ "name", "in_main_page", "num_articles" ];
+	var prefix = "category_";
+	
+	Lifetype.UI.updateFromObject( category, prefix, fields );
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/editcustomfield.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/editcustomfield.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/editcustomfield.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,11 +0,0 @@
-/**
- * Javascript code used in editcustomfield.template
- */
-
-Lifetype.UI.Pages.UpdateCustomField = function() {}
-
-Lifetype.UI.Pages.UpdateCustomField.onSubmitHook = function()
-{
-	Lifetype.Forms.List.selectAll('fieldValues');
-	Lifetype.Forms.AjaxFormProcessor(document.getElementById('updateCustomField').id,'?op=updateCustomField&output=json');
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/editcustomfield.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/editcustomfield.js)
===================================================================
--- plog/trunk/js/ui/pages/editcustomfield.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/editcustomfield.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,11 @@
+/**
+ * Javascript code used in editcustomfield.template
+ */
+
+Lifetype.UI.Pages.UpdateCustomField = function() {}
+
+Lifetype.UI.Pages.UpdateCustomField.onSubmitHook = function()
+{
+	Lifetype.Forms.List.selectAll('fieldValues');
+	Lifetype.Forms.AjaxFormProcessor(document.getElementById('updateCustomField').id,'?op=updateCustomField&output=json');
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/editlink.js
===================================================================

Copied: plog/trunk/js/ui/pages/editlink.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/editlink.js)
===================================================================

Deleted: plog/trunk/js/ui/pages/editlinkcategory.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/editlinkcategory.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/editlinkcategory.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,16 +0,0 @@
-Lifetype.UI.Pages.EditLinkCategory = function() {}
-
-Lifetype.UI.Pages.EditLinkCategory.submitHook = function( form )
-{
-	Lifetype.Forms.AjaxFormProcessor( form.id,'?output=json', {formSuccessCallback:Lifetype.UI.Pages.EditLinkCategory.updateLinkCategorySuccessCallback} );
-}
-
-Lifetype.UI.Pages.EditLinkCategory.updateLinkCategorySuccessCallback = function( o )
-{
-	// we now need to dynamically update the table where this element was located to reflect the changes
-	var category =  o.response.linkcategory;
-	var fields = [ "name" ];
-	var prefix = "linkcategory_";
-	
-	Lifetype.UI.updateFromObject( category, prefix, fields );
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/editlinkcategory.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/editlinkcategory.js)
===================================================================
--- plog/trunk/js/ui/pages/editlinkcategory.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/editlinkcategory.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,16 @@
+Lifetype.UI.Pages.EditLinkCategory = function() {}
+
+Lifetype.UI.Pages.EditLinkCategory.submitHook = function( form )
+{
+	Lifetype.Forms.AjaxFormProcessor( form.id,'?output=json', {formSuccessCallback:Lifetype.UI.Pages.EditLinkCategory.updateLinkCategorySuccessCallback} );
+}
+
+Lifetype.UI.Pages.EditLinkCategory.updateLinkCategorySuccessCallback = function( o )
+{
+	// we now need to dynamically update the table where this element was located to reflect the changes
+	var category =  o.response.linkcategory;
+	var fields = [ "name" ];
+	var prefix = "linkcategory_";
+	
+	Lifetype.UI.updateFromObject( category, prefix, fields );
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/editposts.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/editposts.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/editposts.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,34 +0,0 @@
-/**
- * this function is the one called when clicking the "add category" button
- */
-//
-// declaration of the namespaces
-//
-Lifetype.UI.Pages.EditPosts = function() {}
-
-/**
- * Submit hook used for the 'bulk edit' in the editcomments.template
- * page
- *
- * @param op
- */
-Lifetype.UI.Pages.EditPosts.submitPostsList = function(op)
-{
-	if ( op == 'changePostsStatus' ) {
-		if ( document.getElementById("postsList").postStatus.value == -1 )
-	    	window.alert(errorLocationMsg);
-		else {
-			document.getElementById("postsList").op.value = op;
-			document.getElementById("postsList").submit();
-		}
-	}
-	else if( op == 'changePostsLocation' ) {
-		if ( document.getElementById("postsList").postLocation.value == -1 ) {
-	    	window.alert(errorPostLocationMsg);
-		}
-		else {
-			document.getElementById("postsList").op.value = op;
-			document.getElementById("postsList").submit();
-		}	
-	}
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/editposts.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/editposts.js)
===================================================================
--- plog/trunk/js/ui/pages/editposts.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/editposts.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,34 @@
+/**
+ * this function is the one called when clicking the "add category" button
+ */
+//
+// declaration of the namespaces
+//
+Lifetype.UI.Pages.EditPosts = function() {}
+
+/**
+ * Submit hook used for the 'bulk edit' in the editcomments.template
+ * page
+ *
+ * @param op
+ */
+Lifetype.UI.Pages.EditPosts.submitPostsList = function(op)
+{
+	if ( op == 'changePostsStatus' ) {
+		if ( document.getElementById("postsList").postStatus.value == -1 )
+	    	window.alert(errorLocationMsg);
+		else {
+			document.getElementById("postsList").op.value = op;
+			document.getElementById("postsList").submit();
+		}
+	}
+	else if( op == 'changePostsLocation' ) {
+		if ( document.getElementById("postsList").postLocation.value == -1 ) {
+	    	window.alert(errorPostLocationMsg);
+		}
+		else {
+			document.getElementById("postsList").op.value = op;
+			document.getElementById("postsList").submit();
+		}	
+	}
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/global.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/global.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/global.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,22 +0,0 @@
-/**
- * General javascript functions used in more than one page
- */
-
-Lifetype.UI.Pages.Global = function() {}
-
-Lifetype.UI.Pages.Global.switchMassiveOption = function()
-{
-	if ( Lifetype.Dom.$('massiveChangeOption').style.display == 'none' )
-	{
-		Lifetype.Dom.show( 'massiveChangeOption' );
-		Lifetype.Dom.$('optionIconLink').innerHTML = hideMassiveChangeOption;
-		Lifetype.Dom.$('optionIconLink').title = hideMassiveChangeOption;
-	}
-	else
-	{
-		Lifetype.Dom.hide( 'massiveChangeOption' );
-		Lifetype.Dom.$('optionIconLink').innerHTML = showMassiveChangeOption;
-		Lifetype.Dom.$('optionIconLink').title = showMassiveChangeOption;
-	}
-}
-

Copied: plog/trunk/js/ui/pages/global.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/global.js)
===================================================================
--- plog/trunk/js/ui/pages/global.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/global.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,22 @@
+/**
+ * General javascript functions used in more than one page
+ */
+
+Lifetype.UI.Pages.Global = function() {}
+
+Lifetype.UI.Pages.Global.switchMassiveOption = function()
+{
+	if ( Lifetype.Dom.$('massiveChangeOption').style.display == 'none' )
+	{
+		Lifetype.Dom.show( 'massiveChangeOption' );
+		Lifetype.Dom.$('optionIconLink').innerHTML = hideMassiveChangeOption;
+		Lifetype.Dom.$('optionIconLink').title = hideMassiveChangeOption;
+	}
+	else
+	{
+		Lifetype.Dom.hide( 'massiveChangeOption' );
+		Lifetype.Dom.$('optionIconLink').innerHTML = showMassiveChangeOption;
+		Lifetype.Dom.$('optionIconLink').title = showMassiveChangeOption;
+	}
+}
+

Deleted: plog/trunk/js/ui/pages/globalsettings.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/globalsettings.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/globalsettings.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,10 +0,0 @@
-/**
- * resets blogid in the general setting page
- */
-
-Lifetype.Pages.GlobalSettings = function() {}
-
-Lifetype.Pages.GlobalSettings.resetBlogId = function()
-{
-    window.document.updateGlobalSettings.blogId.value = '';
-}

Copied: plog/trunk/js/ui/pages/globalsettings.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/globalsettings.js)
===================================================================
--- plog/trunk/js/ui/pages/globalsettings.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/globalsettings.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,10 @@
+/**
+ * resets blogid in the general setting page
+ */
+
+Lifetype.Pages.GlobalSettings = function() {}
+
+Lifetype.Pages.GlobalSettings.resetBlogId = function()
+{
+    window.document.updateGlobalSettings.blogId.value = '';
+}

Deleted: plog/trunk/js/ui/pages/newcustomfield.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/newcustomfield.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/newcustomfield.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,27 +0,0 @@
-/**
- * Javascript code used in newcustomfield.template
- */
-
-Lifetype.UI.Pages.NewCustomField = function() {}
-
-Lifetype.UI.Pages.NewCustomField.onSubmitHook = function()
-{
-	Lifetype.Forms.List.selectAll('fieldValues');
-	Lifetype.Forms.AjaxFormProcessor(document.getElementById('newCustomField').id,'?op=addCustomField&output=json');
-}
-
-Lifetype.UI.Pages.NewCustomField.fieldTypeOnChangeHandler = function( select )
-{
-	if( select.selectedIndex == 4 )
-		Lifetype.Dom.show( 'fieldValuesBlock' );
-	else
-		Lifetype.Dom.hide( 'fieldValuesBlock' );
-}
-
-Lifetype.UI.Pages.NewCustomField.addFieldValue = function()
-{
-	newValue = window.prompt('Enter new value for the custom field');
-	if(newValue != null ) {
-		Lifetype.Forms.List.appendToList( 'fieldValues', newValue, newValue);
-	}
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/newcustomfield.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/newcustomfield.js)
===================================================================
--- plog/trunk/js/ui/pages/newcustomfield.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/newcustomfield.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,27 @@
+/**
+ * Javascript code used in newcustomfield.template
+ */
+
+Lifetype.UI.Pages.NewCustomField = function() {}
+
+Lifetype.UI.Pages.NewCustomField.onSubmitHook = function()
+{
+	Lifetype.Forms.List.selectAll('fieldValues');
+	Lifetype.Forms.AjaxFormProcessor(document.getElementById('newCustomField').id,'?op=addCustomField&output=json');
+}
+
+Lifetype.UI.Pages.NewCustomField.fieldTypeOnChangeHandler = function( select )
+{
+	if( select.selectedIndex == 4 )
+		Lifetype.Dom.show( 'fieldValuesBlock' );
+	else
+		Lifetype.Dom.hide( 'fieldValuesBlock' );
+}
+
+Lifetype.UI.Pages.NewCustomField.addFieldValue = function()
+{
+	newValue = window.prompt('Enter new value for the custom field');
+	if(newValue != null ) {
+		Lifetype.Forms.List.appendToList( 'fieldValues', newValue, newValue);
+	}
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/newpost.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/newpost.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/newpost.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,173 +0,0 @@
-/*****
- * Code to add categories via Ajax
- *****/
-Lifetype.UI.Pages.NewPost = function() {}
-
-/**
- * The following functions are called when clicking the "add category" button
- */
-Lifetype.UI.Pages.NewPost.addArticleCategoryAjax = function() 
-{
-	var categoryName = Lifetype.Dom.$F('newArticleCategory');
-	if (categoryName != '') {
-		var params = 'op=addArticleCategory' + '&categoryName=' + encodeURIComponent(categoryName) + "&output=json";
-		
-		// build the full URL
-		var url = plogAdminBaseUrl + "?" + params;
-		
-		var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:Lifetype.UI.Pages.NewPost.addArticleCategoryOption, failure:Lifetype.UI.Pages.NewPost.addArticleCategoryOption } ); 
-		
-		// show the "loading" message
-		Lifetype.Dom.$( 'newArticleCategory' ).value = msgSaving;
-		Lifetype.Dom.$( 'addArticleCategory' ).disabled = 1;
-	}
-}
-
-/**
- * when adding a new form, checks that there is at least one category selected
- */
-Lifetype.UI.Pages.NewPost.submitNewPost = function(form)
-{
-	if( form.postCategories.selectedIndex == -1 ) {
-		// we have no category selected!
-		window.alert(msgErrorNoCategorySelected);
-		return false;
-    }  
-    
-	return true;
-}
-
-/**
- * Callback for the 'add category' feature
- */
-Lifetype.UI.Pages.NewPost.addArticleCategoryOption = function( o )
-{
-	//put returned XML in the textarea
-	var msg = Lifetype.JSon.decode( o.responseText );
-	var success = msg.success;
-	var message = msg.message;
-	if (!success) {
-		window.alert(message);
-	}
-	else {
-		var catId = msg.category.id;
-		var catName = msg.category.name;
-	    for(i=Lifetype.Dom.$( 'postCategories' ).length; i>0; i--)
-	    {
-			tmpText = Lifetype.Dom.$( 'postCategories' ).options[i-1].text;
-			tmpValue = Lifetype.Dom.$( 'postCategories' ).options[i-1].value;
-			tmpSelected = Lifetype.Dom.$( 'postCategories' ).options[i-1].selected;
-			Lifetype.Dom.$( 'postCategories' ).options[i] = new Option( tmpText, tmpValue );
-			Lifetype.Dom.$( 'postCategories' ).options[i].selected = tmpSelected;
-	    }
-	    Lifetype.Dom.$( 'postCategories' ).options[0] = new Option( catName, catId );
-	    Lifetype.Dom.$( 'postCategories' ).options[0].selected = true;
-	    Lifetype.Dom.$( 'newArticleCategory' ).value = '';
-	    Lifetype.Dom.$( 'addArticleCategory' ).disabled = 0;
-	}
-}
-
-/**
- * Save the article via Ajax in the background
- */
-/**
- * The following functions are called when clicking the "save draft and continue" button
- */
-Lifetype.UI.Pages.NewPost.saveDraftArticleAjax = function()
-{
-	// if there is no category selected, then we won't save a draft!
-	form = document.getElementById( "newPost" );
-
-	if( form.postTopic.value == '' ) {
-		window.alert( msgErrorPostTopic );
-		return false;
-	}
-
-    // Can't use form.postText.value, becasue the form.postText.value still "null"
-    if( htmlAreaEnabled ) {
-		postText = tinyMCE.getContent('postText');
-	} else {
-		postText = form.postText.value;
-    }
-
-    if (postText == '') {
-		window.alert( msgErrorPostText );
-		return false;
-	}
-
-	if( !Lifetype.UI.Pages.NewPost.submitNewPost( form ))
-		return false;	
-
-    var formData = Lifetype.UI.Pages.NewPost.getPostEditFormElements( "newPost" );
-
-	var params = 'op=saveDraftArticleAjax&'+formData;
-	var url = plogAdminBaseUrl + "?" + params;
-	
-	var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:Lifetype.UI.Pages.NewPost.saveDraftArticleResponse }); 
-}
-
-/**
- * Callback for the "save draft" functionality
- */
-Lifetype.UI.Pages.NewPost.saveDraftArticleResponse = function(originalRequest)
-{
-	// fetcth the json response
-	var msg = Lifetype.JSon.decode( originalRequest.responseText );
-	
-	var id = msg.result._id;
-	var message = msg.message;
-	$( 'postId' ).value = id;
-	window.alert(message);
-}
-
-/**
- * Gets all the fields from the "new post" form
- */
-Lifetype.UI.Pages.NewPost.getPostEditFormElements = function( 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;
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/newpost.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/newpost.js)
===================================================================
--- plog/trunk/js/ui/pages/newpost.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/newpost.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,173 @@
+/*****
+ * Code to add categories via Ajax
+ *****/
+Lifetype.UI.Pages.NewPost = function() {}
+
+/**
+ * The following functions are called when clicking the "add category" button
+ */
+Lifetype.UI.Pages.NewPost.addArticleCategoryAjax = function() 
+{
+	var categoryName = Lifetype.Dom.$F('newArticleCategory');
+	if (categoryName != '') {
+		var params = 'op=addArticleCategory' + '&categoryName=' + encodeURIComponent(categoryName) + "&output=json";
+		
+		// build the full URL
+		var url = plogAdminBaseUrl + "?" + params;
+		
+		var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:Lifetype.UI.Pages.NewPost.addArticleCategoryOption, failure:Lifetype.UI.Pages.NewPost.addArticleCategoryOption } ); 
+		
+		// show the "loading" message
+		Lifetype.Dom.$( 'newArticleCategory' ).value = msgSaving;
+		Lifetype.Dom.$( 'addArticleCategory' ).disabled = 1;
+	}
+}
+
+/**
+ * when adding a new form, checks that there is at least one category selected
+ */
+Lifetype.UI.Pages.NewPost.submitNewPost = function(form)
+{
+	if( form.postCategories.selectedIndex == -1 ) {
+		// we have no category selected!
+		window.alert(msgErrorNoCategorySelected);
+		return false;
+    }  
+    
+	return true;
+}
+
+/**
+ * Callback for the 'add category' feature
+ */
+Lifetype.UI.Pages.NewPost.addArticleCategoryOption = function( o )
+{
+	//put returned XML in the textarea
+	var msg = Lifetype.JSon.decode( o.responseText );
+	var success = msg.success;
+	var message = msg.message;
+	if (!success) {
+		window.alert(message);
+	}
+	else {
+		var catId = msg.category.id;
+		var catName = msg.category.name;
+	    for(i=Lifetype.Dom.$( 'postCategories' ).length; i>0; i--)
+	    {
+			tmpText = Lifetype.Dom.$( 'postCategories' ).options[i-1].text;
+			tmpValue = Lifetype.Dom.$( 'postCategories' ).options[i-1].value;
+			tmpSelected = Lifetype.Dom.$( 'postCategories' ).options[i-1].selected;
+			Lifetype.Dom.$( 'postCategories' ).options[i] = new Option( tmpText, tmpValue );
+			Lifetype.Dom.$( 'postCategories' ).options[i].selected = tmpSelected;
+	    }
+	    Lifetype.Dom.$( 'postCategories' ).options[0] = new Option( catName, catId );
+	    Lifetype.Dom.$( 'postCategories' ).options[0].selected = true;
+	    Lifetype.Dom.$( 'newArticleCategory' ).value = '';
+	    Lifetype.Dom.$( 'addArticleCategory' ).disabled = 0;
+	}
+}
+
+/**
+ * Save the article via Ajax in the background
+ */
+/**
+ * The following functions are called when clicking the "save draft and continue" button
+ */
+Lifetype.UI.Pages.NewPost.saveDraftArticleAjax = function()
+{
+	// if there is no category selected, then we won't save a draft!
+	form = document.getElementById( "newPost" );
+
+	if( form.postTopic.value == '' ) {
+		window.alert( msgErrorPostTopic );
+		return false;
+	}
+
+    // Can't use form.postText.value, becasue the form.postText.value still "null"
+    if( htmlAreaEnabled ) {
+		postText = tinyMCE.getContent('postText');
+	} else {
+		postText = form.postText.value;
+    }
+
+    if (postText == '') {
+		window.alert( msgErrorPostText );
+		return false;
+	}
+
+	if( !Lifetype.UI.Pages.NewPost.submitNewPost( form ))
+		return false;	
+
+    var formData = Lifetype.UI.Pages.NewPost.getPostEditFormElements( "newPost" );
+
+	var params = 'op=saveDraftArticleAjax&'+formData;
+	var url = plogAdminBaseUrl + "?" + params;
+	
+	var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:Lifetype.UI.Pages.NewPost.saveDraftArticleResponse }); 
+}
+
+/**
+ * Callback for the "save draft" functionality
+ */
+Lifetype.UI.Pages.NewPost.saveDraftArticleResponse = function(originalRequest)
+{
+	// fetcth the json response
+	var msg = Lifetype.JSon.decode( originalRequest.responseText );
+	
+	var id = msg.result._id;
+	var message = msg.message;
+	$( 'postId' ).value = id;
+	window.alert(message);
+}
+
+/**
+ * Gets all the fields from the "new post" form
+ */
+Lifetype.UI.Pages.NewPost.getPostEditFormElements = function( 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;
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/newpostcategory.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/newpostcategory.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/newpostcategory.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +0,0 @@
-Lifetype.UI.Pages.NewPostCategory = function() {}
-
-Lifetype.UI.Pages.NewPostCategory.submitHook = function( form )
-{
-	Lifetype.Forms.AjaxFormProcessor(form.id,'?op=addArticleCategory&output=json', {resetAfterSuccess:true});
-	return(false);
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/newpostcategory.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/newpostcategory.js)
===================================================================
--- plog/trunk/js/ui/pages/newpostcategory.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/newpostcategory.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,7 @@
+Lifetype.UI.Pages.NewPostCategory = function() {}
+
+Lifetype.UI.Pages.NewPostCategory.submitHook = function( form )
+{
+	Lifetype.Forms.AjaxFormProcessor(form.id,'?op=addArticleCategory&output=json', {resetAfterSuccess:true});
+	return(false);
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/newresourcealbum.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/newresourcealbum.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/newresourcealbum.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +0,0 @@
-Lifetype.UI.Pages.NewResourceAlbum = function() {}
-
-Lifetype.UI.Pages.NewResourceAlbum.submitHook = function( form )
-{
-	Lifetype.Forms.AjaxFormProcessor(form.id,'?op=addResourceAlbum&output=json', {resetAfterSuccess:true});	
-	return(false);
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/newresourcealbum.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/newresourcealbum.js)
===================================================================
--- plog/trunk/js/ui/pages/newresourcealbum.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/newresourcealbum.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,7 @@
+Lifetype.UI.Pages.NewResourceAlbum = function() {}
+
+Lifetype.UI.Pages.NewResourceAlbum.submitHook = function( form )
+{
+	Lifetype.Forms.AjaxFormProcessor(form.id,'?op=addResourceAlbum&output=json', {resetAfterSuccess:true});	
+	return(false);
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/resources.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/resources.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/resources.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,98 +0,0 @@
-Lifetype.UI.Pages.Resources = function() {}
-
-Lifetype.UI.Pages.Resources.mouseOver = function( elem )
-{
-	//elem.style.background = "red";
-}
-
-Lifetype.UI.Pages.Resources.mouseOut = function( elem )
-{
-	//elem.style.background = "white";
-}
-
-Lifetype.UI.Pages.Resources.toggle = function( elem )
-{
-	checkbox = Lifetype.Dom.$( "checkbox_" + elem.id );
-	if( checkbox.checked == false ) {
-		// toggle the checkbox assigned to this item
-		checkbox.checked = true;
-
-		// and the background color of the element
-		elem.style.background = "#f9f8b1";
-	}
-	else {
-		// toggle the checkbox assigned to this item
-		checkbox.checked = false;
-
-		// and the background color of the element
-		elem.style.background = "white";
-	}
-}
-
-Lifetype.UI.Pages.Resources.clickHandler = function( elem )
-{
-	Lifetype.UI.Pages.Resources.toggle( elem );
-}
-
-Lifetype.UI.Pages.Resources.select = function( elem )
-{
-	checkbox = Lifetype.Dom.$( "checkbox_" + elem.id );
-	// toggle the checkbox assigned to this item
-	checkbox.checked = true;
-
-	// and the background color of the element
-	elem.style.background = "#f9f8b1";
-}
-
-Lifetype.UI.Pages.Resources.unselect = function( elem )
-{
-	checkbox = Lifetype.Dom.$( "checkbox_" + elem.id );
-	// toggle the checkbox assigned to this item
-	checkbox.checked = false;
-
-	// and the background color of the element
-	elem.style.background = "white";
-}
-
-Lifetype.UI.Pages.Resources.selectAll = function()
-{
-	selectAllToggle = Lifetype.Dom.$( "selectAll" );
-	if( !selectAllToggle.selected ) {
-		selectAllToggle.selected = true;
-		f = Lifetype.UI.Pages.Resources.select;
-	}
-	else {
-		selectAllToggle.selected = false;	
-		f = Lifetype.UI.Pages.Resources.unselect;
-	}
-
-	// select all files
-	elems = YAHOO.util.Dom.getElementsByClassName( 'file', 'div' );
-	for( i = 0; i < elems.length; i++ ) {
-		f( elems[i] );
-	}
-	// select all albums, if any
-	elems = YAHOO.util.Dom.getElementsByClassName( 'album', 'div' );
-	for( i = 0; i < elems.length; i++ ) {
-		if( elems[i].id != "root_album" )
-			f( elems[i] );
-	}	
-}
-
-Lifetype.UI.Pages.EditResources = function() {}
-/**
- * Submit hook used for the 'bulk edit' in the resources.templ
- * page
- * @param op
- */
-Lifetype.UI.Pages.EditResources.submitGalleryItemsList = function(op)
-{
-	if( op == 'changeResourceLocation' ) {
-		if ( document.getElementById("Resources").resourceLocation.value == -1 ) {
-    		window.alert(errorLocationMsg);
-		}
-	}
-
-	document.getElementById("Resources").op.value = op;
-	document.getElementById("Resources").submit();
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/resources.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/resources.js)
===================================================================
--- plog/trunk/js/ui/pages/resources.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/resources.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,98 @@
+Lifetype.UI.Pages.Resources = function() {}
+
+Lifetype.UI.Pages.Resources.mouseOver = function( elem )
+{
+	//elem.style.background = "red";
+}
+
+Lifetype.UI.Pages.Resources.mouseOut = function( elem )
+{
+	//elem.style.background = "white";
+}
+
+Lifetype.UI.Pages.Resources.toggle = function( elem )
+{
+	checkbox = Lifetype.Dom.$( "checkbox_" + elem.id );
+	if( checkbox.checked == false ) {
+		// toggle the checkbox assigned to this item
+		checkbox.checked = true;
+
+		// and the background color of the element
+		elem.style.background = "#f9f8b1";
+	}
+	else {
+		// toggle the checkbox assigned to this item
+		checkbox.checked = false;
+
+		// and the background color of the element
+		elem.style.background = "white";
+	}
+}
+
+Lifetype.UI.Pages.Resources.clickHandler = function( elem )
+{
+	Lifetype.UI.Pages.Resources.toggle( elem );
+}
+
+Lifetype.UI.Pages.Resources.select = function( elem )
+{
+	checkbox = Lifetype.Dom.$( "checkbox_" + elem.id );
+	// toggle the checkbox assigned to this item
+	checkbox.checked = true;
+
+	// and the background color of the element
+	elem.style.background = "#f9f8b1";
+}
+
+Lifetype.UI.Pages.Resources.unselect = function( elem )
+{
+	checkbox = Lifetype.Dom.$( "checkbox_" + elem.id );
+	// toggle the checkbox assigned to this item
+	checkbox.checked = false;
+
+	// and the background color of the element
+	elem.style.background = "white";
+}
+
+Lifetype.UI.Pages.Resources.selectAll = function()
+{
+	selectAllToggle = Lifetype.Dom.$( "selectAll" );
+	if( !selectAllToggle.selected ) {
+		selectAllToggle.selected = true;
+		f = Lifetype.UI.Pages.Resources.select;
+	}
+	else {
+		selectAllToggle.selected = false;	
+		f = Lifetype.UI.Pages.Resources.unselect;
+	}
+
+	// select all files
+	elems = YAHOO.util.Dom.getElementsByClassName( 'file', 'div' );
+	for( i = 0; i < elems.length; i++ ) {
+		f( elems[i] );
+	}
+	// select all albums, if any
+	elems = YAHOO.util.Dom.getElementsByClassName( 'album', 'div' );
+	for( i = 0; i < elems.length; i++ ) {
+		if( elems[i].id != "root_album" )
+			f( elems[i] );
+	}	
+}
+
+Lifetype.UI.Pages.EditResources = function() {}
+/**
+ * Submit hook used for the 'bulk edit' in the resources.templ
+ * page
+ * @param op
+ */
+Lifetype.UI.Pages.EditResources.submitGalleryItemsList = function(op)
+{
+	if( op == 'changeResourceLocation' ) {
+		if ( document.getElementById("Resources").resourceLocation.value == -1 ) {
+    		window.alert(errorLocationMsg);
+		}
+	}
+
+	document.getElementById("Resources").op.value = op;
+	document.getElementById("Resources").submit();
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/templatechooser.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/templatechooser.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/templatechooser.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,48 +0,0 @@
-/**
- * Javascript code used by the blog template chooser
- */
-Lifetype.UI.Pages.TemplateChooser = function() {}
-
-/**
- * opens the window where users can choose their own template. The destination url is hardcoded
- */
-Lifetype.UI.Pages.TemplateChooser.openTemplateChooserWindow = function()
-{
-	width  = 500;
-	height = 450;
-	
-	x = parseInt(screen.width / 2.0) - (width / 2.0);
-	y = parseInt(screen.height / 2.0) - (height / 2.0);
-	
-	TemplateSelectorWindow = window.open( '?op=blogTemplateChooser', 'TemplateChooser','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
-}
-
-/**
- * tells the parent window which template we chose
- */
-Lifetype.UI.Pages.TemplateChooser.blogTemplateSelector = function( templateId )
-{
-	templateSelectList = parent.opener.document.blogSettings.blogTemplate;
-	
-	// loop throough the array with the different template sets and if we find the
-	// one that the use just selected, then automatically select it and quit the loop
-	for( i = 0; i < templateSelectList.options.length; i++ ) {
-		if( templateSelectList.options[i].value == templateId ) {
-			templateSelectList.selectedIndex = i;
-			break;
-		}
-	}
-	
-	window.close();
-}
-
-/**
- * opens a window to see an screenshot from a template
- *
- * @param destination url
- */
-Lifetype.UI.Pages.TemplateChooser.openScreenshotWindow = function( destUrl )
-{
-	ScreenshotWindow = window.open( destUrl, 'Screenshot','scrollbars=yes,resizable=yes,toolbar=no,height=600,width=800');
-}
-

Copied: plog/trunk/js/ui/pages/templatechooser.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/templatechooser.js)
===================================================================
--- plog/trunk/js/ui/pages/templatechooser.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/templatechooser.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,48 @@
+/**
+ * Javascript code used by the blog template chooser
+ */
+Lifetype.UI.Pages.TemplateChooser = function() {}
+
+/**
+ * opens the window where users can choose their own template. The destination url is hardcoded
+ */
+Lifetype.UI.Pages.TemplateChooser.openTemplateChooserWindow = function()
+{
+	width  = 500;
+	height = 450;
+	
+	x = parseInt(screen.width / 2.0) - (width / 2.0);
+	y = parseInt(screen.height / 2.0) - (height / 2.0);
+	
+	TemplateSelectorWindow = window.open( '?op=blogTemplateChooser', 'TemplateChooser','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
+}
+
+/**
+ * tells the parent window which template we chose
+ */
+Lifetype.UI.Pages.TemplateChooser.blogTemplateSelector = function( templateId )
+{
+	templateSelectList = parent.opener.document.blogSettings.blogTemplate;
+	
+	// loop throough the array with the different template sets and if we find the
+	// one that the use just selected, then automatically select it and quit the loop
+	for( i = 0; i < templateSelectList.options.length; i++ ) {
+		if( templateSelectList.options[i].value == templateId ) {
+			templateSelectList.selectedIndex = i;
+			break;
+		}
+	}
+	
+	window.close();
+}
+
+/**
+ * opens a window to see an screenshot from a template
+ *
+ * @param destination url
+ */
+Lifetype.UI.Pages.TemplateChooser.openScreenshotWindow = function( destUrl )
+{
+	ScreenshotWindow = window.open( destUrl, 'Screenshot','scrollbars=yes,resizable=yes,toolbar=no,height=600,width=800');
+}
+

Deleted: plog/trunk/js/ui/pages/userpictureselect.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/userpictureselect.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/userpictureselect.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,17 +0,0 @@
-Lifetype.UI.Pages.UserPictureSelect = function() {}
-
-/**
- * Used in the' user profile' screen where users can pick an image from their collection
- * and set it as their 'avatar'
- *
- * @param resId
- * @param url
- * @return nothing
- */
-Lifetype.UI.Pages.UserPictureSelect.returnResourceInformation = function(resId, url)
-{
-	// set the picture id
-    parent.opener.document.userSettings.userPictureId.value = resId;
-    // and reload the image path
-    parent.opener.document.userSettings.userPicture.src = url;
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/userpictureselect.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/userpictureselect.js)
===================================================================
--- plog/trunk/js/ui/pages/userpictureselect.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/userpictureselect.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,17 @@
+Lifetype.UI.Pages.UserPictureSelect = function() {}
+
+/**
+ * Used in the' user profile' screen where users can pick an image from their collection
+ * and set it as their 'avatar'
+ *
+ * @param resId
+ * @param url
+ * @return nothing
+ */
+Lifetype.UI.Pages.UserPictureSelect.returnResourceInformation = function(resId, url)
+{
+	// set the picture id
+    parent.opener.document.userSettings.userPictureId.value = resId;
+    // and reload the image path
+    parent.opener.document.userSettings.userPicture.src = url;
+}
\ No newline at end of file

Deleted: plog/trunk/js/ui/pages/usersettings.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/ui/pages/usersettings.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/pages/usersettings.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,26 +0,0 @@
-/** 
- * Javascript code used in usersettings.template
- */
-
-Lifetype.UI.Pages.UserSettings = function() {}
-
-Lifetype.UI.Pages.UserSettings.userPictureSelectWindow = function()
-{
-	width  = 500;
-	height = 450;
-	
-	x = parseInt(screen.width / 2.0) - (width / 2.0);
-	y = parseInt(screen.height / 2.0) - (height / 2.0);
-	
-	UserPicture = window.open( '?op=userPictureSelect', 'UserPictureSelect','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
-}
-
-/**
- * resets the user picture/avatar in the profile page
- */
-Lifetype.UI.Pages.UserSettings.resetUserPicture = function()
-{
-    window.document.userSettings.userPictureId.value = 0;
-    // and reload the image path
-    window.document.userSettings.userPicture.src = 'imgs/no-user-picture.jpg';
-}
\ No newline at end of file

Copied: plog/trunk/js/ui/pages/usersettings.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/pages/usersettings.js)
===================================================================
--- plog/trunk/js/ui/pages/usersettings.js	                        (rev 0)
+++ plog/trunk/js/ui/pages/usersettings.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,26 @@
+/** 
+ * Javascript code used in usersettings.template
+ */
+
+Lifetype.UI.Pages.UserSettings = function() {}
+
+Lifetype.UI.Pages.UserSettings.userPictureSelectWindow = function()
+{
+	width  = 500;
+	height = 450;
+	
+	x = parseInt(screen.width / 2.0) - (width / 2.0);
+	y = parseInt(screen.height / 2.0) - (height / 2.0);
+	
+	UserPicture = window.open( '?op=userPictureSelect', 'UserPictureSelect','top='+y+',left='+x+',scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
+}
+
+/**
+ * resets the user picture/avatar in the profile page
+ */
+Lifetype.UI.Pages.UserSettings.resetUserPicture = function()
+{
+    window.document.userSettings.userPictureId.value = 0;
+    // and reload the image path
+    window.document.userSettings.userPicture.src = 'imgs/no-user-picture.jpg';
+}
\ No newline at end of file

Modified: plog/trunk/js/ui/plogui.js
===================================================================
--- plog/trunk/js/ui/plogui.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/ui/plogui.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,90 +1,3 @@
-/**
- * when adding a new form, checks that there is at least one category selected
- */
-function submitNewPost(form)
-{
-	if( form.postCategories.selectedIndex == -1 ) {
-		// we have no category selected!
-		window.alert(msgErrorNoCategorySelected);
-		return false;
-    }  
-    
-	return true;
-}
-
-/**
- * this function is the one called when clicking the "add category" button
- */
-//
-// declaration of the namespaces
-//
-Lifetype.UI.Pages = function() {}
-Lifetype.UI.Pages.EditPosts = function() {}
-
-/**
- * Submit hook used for the 'bulk edit' in the editcomments.template
- * page
- *
- * @param op
- */
-Lifetype.UI.Pages.EditPosts.submitPostsList = function(op)
-{
-	if ( op == 'changePostsStatus' ) {
-		if ( document.getElementById("postsList").postStatus.value == -1 )
-	    	window.alert(errorLocationMsg);
-		else {
-			document.getElementById("postsList").op.value = op;
-			document.getElementById("postsList").submit();
-		}
-	}
-	else if( op == 'changePostsLocation' ) {
-		if ( document.getElementById("postsList").postLocation.value == -1 ) {
-	    	window.alert(errorPostLocationMsg);
-		}
-		else {
-			document.getElementById("postsList").op.value = op;
-			document.getElementById("postsList").submit();
-		}	
-	}
-}
-
-function addArticleCategoryOption(originalRequest)
-{
-	//put returned XML in the textarea
-	var xmldoc = originalRequest.responseXML;
-	var success = xmldoc.getElementsByTagName('success')[0].firstChild.nodeValue;
-	var message = xmldoc.getElementsByTagName('message')[0].firstChild.nodeValue;
-	if (success=='0') {
-		window.alert(message);
-		$( 'newArticleCategory' ).value = '';
-		$( 'addArticleCategory' ).disabled = 0;
-	}
-	else {
-		document.getElementById("postsList").op.value = op;
-		document.getElementById("postsList").submit();
-	}
-}
-
-
-Lifetype.UI.Pages.EditResources = function() {}
-/**
- * Submit hook used for the 'bulk edit' in the resources.templ
- * page
- * @param op
- */
-Lifetype.UI.Pages.EditResources.submitGalleryItemsList = function(op)
-{
-	if( op == 'changeResourceLocation' ) {
-		if ( document.getElementById("Resources").resourceLocation.value == -1 ) {
-    		window.alert(errorLocationMsg);
-		}
-	}
-
-	document.getElementById("Resources").op.value = op;
-	document.getElementById("Resources").submit();
-}
-
-
 function submitCommentsList(op)
 {
 	if ( op == 'changeCommentsStatus' )
@@ -149,22 +62,6 @@
 	}
 }
 
-function switchMassiveOption()
-{
-	if ( $('massiveChangeOption').style.display == 'none' )
-	{
-		Element.show($('massiveChangeOption'));
-		$('optionIconLink').innerHTML = hideMassiveChangeOption;
-		$('optionIconLink').title = hideMassiveChangeOption;
-	}
-	else
-	{
-		Element.hide($('massiveChangeOption'));
-		$('optionIconLink').innerHTML = showMassiveChangeOption;
-		$('optionIconLink').title = showMassiveChangeOption;
-	}
-}
-
 function showProgressBar( elementToHide )
 {
    button = document.getElementById( elementToHide );
@@ -200,164 +97,4 @@
 	iframe.src = url;
 	
 	return( true );
-}
-
-/*****
- * Code to add categories via Ajax
- *****/
-Lifetype.UI.Pages.NewPost = function() {}
-
-/**
- * The following functions are called when clicking the "add category" button
- */
-Lifetype.UI.Pages.NewPost.addArticleCategoryAjax = function() 
-{
-	var categoryName = $F('newArticleCategory');
-	if (categoryName != '') {
-		var params = 'op=addArticleCategoryAjax' + '&categoryName=' + encodeURIComponent(categoryName);
-		
-		// build the full URL
-		var url = plogAdminBaseUrl + "?" + params;
-		
-		var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:Lifetype.UI.Pages.NewPost.addArticleCategoryOption, failure:Lifetype.UI.Pages.NewPost.addArticleCategoryOption } ); 
-		
-		// show the "loading" message
-		$( 'newArticleCategory' ).value = msgSaving;
-		$( 'addArticleCategory' ).disabled = 1;
-	}
-}
-
-/**
- * Callback for the 'add category' feature
- */
-Lifetype.UI.Pages.NewPost.addArticleCategoryOption = function(originalRequest)
-{
-	//put returned XML in the textarea
-	var msg = Lifetype.JSon.decode( originalRequest.responseText );
-	var success = msg.success;
-	var message = msg.message;
-	if (!success) {
-		window.alert(message);
-	}
-	else {
-		var catId = msg.result._id;
-		var catName = msg.result._name;
-	    for(i=$( 'postCategories' ).length; i>0; i--)
-	    {
-			tmpText = $( 'postCategories' ).options[i-1].text;
-			tmpValue = $( 'postCategories' ).options[i-1].value;
-			tmpSelected = $( 'postCategories' ).options[i-1].selected;
-			$( 'postCategories' ).options[i] = new Option( tmpText, tmpValue );
-			$( 'postCategories' ).options[i].selected = tmpSelected;
-	    }
-	    $( 'postCategories' ).options[0] = new Option( catName, catId );
-	    $( 'postCategories' ).options[0].selected = true;
-	    $( 'newArticleCategory' ).value = '';
-	    $( 'addArticleCategory' ).disabled = 0;
-	}
-}
-
-/**
- * Save the article via Ajax in the background
- */
-/**
- * The following functions are called when clicking the "save draft and continue" button
- */
-Lifetype.UI.Pages.NewPost.saveDraftArticleAjax = function()
-{
-	// if there is no category selected, then we won't save a draft!
-	form = document.getElementById( "newPost" );
-
-	if( form.postTopic.value == '' ) {
-		window.alert( msgErrorPostTopic );
-		return false;
-	}
-
-    // Can't use form.postText.value, becasue the form.postText.value still "null"
-    if( htmlAreaEnabled ) {
-		postText = tinyMCE.getContent('postText');
-	} else {
-		postText = form.postText.value;
-    }
-
-    if (postText == '') {
-		window.alert( msgErrorPostText );
-		return false;
-	}
-
-	if( !submitNewPost( form ))
-		return false;	
-
-    var formData = Lifetype.UI.Pages.NewPost.getPostEditFormElements( "newPost" );
-
-	var params = 'op=saveDraftArticleAjax&'+formData;
-	var url = plogAdminBaseUrl + "?" + params;
-	
-	var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, { success:Lifetype.UI.Pages.NewPost.saveDraftArticleResponse }); 
-}
-
-/**
- * Callback for the "save draft" functionality
- */
-Lifetype.UI.Pages.NewPost.saveDraftArticleResponse = function(originalRequest)
-{
-	// fetcth the json response
-	var msg = Lifetype.JSon.decode( originalRequest.responseText );
-	
-	var id = msg.result._id;
-	var message = msg.message;
-	$( 'postId' ).value = id;
-	window.alert(message);
-}
-
-/**
- * Gets all the fields from the "new post" form
- */
-Lifetype.UI.Pages.NewPost.getPostEditFormElements = function( 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;
 }
\ No newline at end of file

Copied: plog/trunk/js/ui/ui.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/ui/ui.js)
===================================================================
--- plog/trunk/js/ui/ui.js	                        (rev 0)
+++ plog/trunk/js/ui/ui.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,21 @@
+/**
+ * Base UI namespace
+ */
+Lifetype.UI = function() {}
+
+/**
+ * Base Pages namespace
+ */
+Lifetype.UI.Pages = function() {}
+
+Lifetype.UI.updateFromObject = function( object, prefix, fields )
+{
+	for( i = 0; i < fields.length; i++ ) {
+		fieldName = prefix + fields[i] + "_" + object.id;
+		elem = Lifetype.Dom.$( fieldName );
+		if( elem ) {
+			// a bit hackish, but it works
+			elem.innerHTML = eval( "object." + fields[i] );
+		}
+	}
+}
\ No newline at end of file

Copied: plog/trunk/js/yui/animation (from rev 5682, plog/branches/lifetype-1.3-ajax/js/yui/animation)

Deleted: plog/trunk/js/yui/animation/animation-min.js
===================================================================
--- plog/branches/lifetype-1.3-ajax/js/yui/animation/animation-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/animation/animation-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,75 +0,0 @@
-/*
-Copyright (c) 2007, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.2.2
-*/
-
-YAHOO.util.Anim=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};YAHOO.util.Anim.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;}
-YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=='auto'&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);}
-var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,'position')=='absolute'&&pos)){val=el['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;}
-return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return'px';}
-return'';},setRuntimeAttribute:function(attr){var start;var end;var attributes=this.attributes;this.runtimeAttributes[attr]={};var isset=function(prop){return(typeof prop!=='undefined');};if(!isset(attributes[attr]['to'])&&!isset(attributes[attr]['by'])){return false;}
-start=(isset(attributes[attr]['from']))?attributes[attr]['from']:this.getAttribute(attr);if(isset(attributes[attr]['to'])){end=attributes[attr]['to'];}else if(isset(attributes[attr]['by'])){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attr]['by'][i];}}else{end=start+attributes[attr]['by'];}}
-this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(isset(attributes[attr].unit))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var actualFrames=0;el=YAHOO.util.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}
-this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(finish){if(finish){this.currentFrame=this.totalFrames;this._onTween.fire();}
-YAHOO.util.AnimMgr.stop(this);};var onStart=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);}
-isAnimated=true;actualFrames=0;startTime=new Date();};var onTween=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return('duration: '+data.duration+', currentFrame: '+data.currentFrame);};this.onTween.fire(data);var runtimeAttributes=this.runtimeAttributes;for(var attr in runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttributes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].unit);}
-actualFrames+=1;};var onComplete=function(){var actual_duration=(new Date()-startTime)/1000;var data={duration:actual_duration,frames:actualFrames,fps:actualFrames/actual_duration};data.toString=function(){return('duration: '+data.duration+', frames: '+data.frames+', fps: '+data.fps);};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent('_start',this,true);this.onStart=new YAHOO.util.CustomEvent('start',this);this.onTween=new YAHOO.util.CustomEvent('tween',this);this._onTween=new YAHOO.util.CustomEvent('_tween',this,true);this.onComplete=new YAHOO.util.CustomEvent('complete',this);this._onComplete=new YAHOO.util.CustomEvent('_complete',this,true);this._onStart.subscribe(onStart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onComplete);}};YAHOO.util.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=1000;this.delay=1;this.registerElement=function(tween){queue[queue.length]=tween;tweenC
 ount+=1;tween._onStart.fire();this.start();};this.unRegister=function(tween,index){tween._onComplete.fire();index=index||getIndex(tween);if(index!=-1){queue.splice(index,1);}
-tweenCount-=1;if(tweenCount<=0){this.stop();}};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[0].isAnimated()){this.unRegister(queue[0],0);}}
-queue=[];thread=null;tweenCount=0;}
-else{this.unRegister(tween);}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;}
-if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null)
-{tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);}
-tween._onTween.fire();}
-else{YAHOO.util.AnimMgr.stop(tween,i);}}};var getIndex=function(anim){for(var i=0,len=queue.length;i<len;++i){if(queue[i]==anim){return i;}}
-return-1;};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);}
-if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);}
-tween.currentFrame+=tweak;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];}
-for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}
-return[tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,attributes,duration,method){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,attributes,duration,method);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var superclass=Y.ColorAnim.superclass;var proto=Y.ColorAnim.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("ColorAnim "+id);};proto.patterns.color=/color$/i;proto.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;proto.parseColor=function(s){if(s.length==3){return s;}
-var c=this.patterns.hex.exec(s);if(c&&c.length==4){return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];}
-c=this.patterns.rgb.exec(s);if(c&&c.length==4){return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];}
-c=this.patterns.hex3.exec(s);if(c&&c.length==4){return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}
-return null;};proto.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var parent=el.parentNode;val=Y.Dom.getStyle(parent,attr);while(parent&&this.patterns.transparent.test(val)){parent=parent.parentNode;val=Y.Dom.getStyle(parent,attr);if(parent.tagName.toUpperCase()=='HTML'){val='#fff';}}}}else{val=superclass.getAttribute.call(this,attr);}
-return val;};proto.doMethod=function(attr,start,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=start.length;i<len;++i){val[i]=superclass.doMethod.call(this,attr,start[i],end[i]);}
-val='rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val[2])+')';}
-else{val=superclass.doMethod.call(this,attr,start,end);}
-return val;};proto.setRuntimeAttribute=function(attr){superclass.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var attributes=this.attributes;var start=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof attributes[attr]['to']==='undefined'&&typeof attributes[attr]['by']!=='undefined'){end=this.parseColor(attributes[attr].by);for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+end[i];}}
-this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;}
-return-c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t*t*t+b;}
-return-c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0){return b;}
-if((t/=d)==1){return b+c;}
-if(!p){p=d*.3;}
-if(!a||a<Math.abs(c)){a=c;var s=p/4;}
-else{var s=p/(2*Math.PI)*Math.asin(c/a);}
-return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0){return b;}
-if((t/=d)==1){return b+c;}
-if(!p){p=d*.3;}
-if(!a||a<Math.abs(c)){a=c;var s=p/4;}
-else{var s=p/(2*Math.PI)*Math.asin(c/a);}
-return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0){return b;}
-if((t/=d/2)==2){return b+c;}
-if(!p){p=d*(.3*1.5);}
-if(!a||a<Math.abs(c)){a=c;var s=p/4;}
-else{var s=p/(2*Math.PI)*Math.asin(c/a);}
-if(t<1){return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;}
-return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
-return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
-return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
-if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;}
-return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}
-return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;},bounceBoth:function(t,b,c,d){if(t<d/2){return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*.5+b;}
-return YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){YAHOO.util.Motion=function(el,attributes,duration,method){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Motion.superclass;var proto=Y.Motion.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Motion "+id);};proto.patterns.points=/^points$/i;proto.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||'px';superclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribute.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,attr,val,unit);}};proto.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[superclass.getAttribute.call(this,'left'),superclass.getAttribute.call(this,'top')];}else{val=superclass.getAttribute.call(this,attr);}
-return val;};proto.doMethod=function(attr,start,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=superclass.doMethod.call(this,attr,start,end);}
-return val;};proto.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var attributes=this.attributes;var start;var control=attributes['points']['control']||[];var end;var i,len;if(control.length>0&&!(control[0]instanceof Array)){control=[control];}else{var tmp=[];for(i=0,len=control.length;i<len;++i){tmp[i]=control[i];}
-control=tmp;}
-if(Y.Dom.getStyle(el,'position')=='static'){Y.Dom.setStyle(el,'position','relative');}
-if(isset(attributes['points']['from'])){Y.Dom.setXY(el,attributes['points']['from']);}
-else{Y.Dom.setXY(el,Y.Dom.getXY(el));}
-start=this.getAttribute('points');if(isset(attributes['points']['to'])){end=translateValues.call(this,attributes['points']['to'],start);var pageXY=Y.Dom.getXY(this.getEl());for(i=0,len=control.length;i<len;++i){control[i]=translateValues.call(this,control[i],start);}}else if(isset(attributes['points']['by'])){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}}
-this.runtimeAttributes[attr]=[start];if(control.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(control);}
-this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;}
-else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Y.Dom.getXY(this.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var isset=function(prop){return(typeof prop!=='undefined');};})();(function(){YAHOO.util.Scroll=function(el,attributes,duration,method){if(el){YAHOO.util.Scroll.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Scroll.superclass;var proto=Y.Scroll.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Scroll "+id);};proto.doMethod=function(attr,start,end){var val=null;if(attr=='scroll'){val=[this.method(this.currentFrame,start[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,start[1],end[1]-start[1],this.totalFrames)];}else{val=superclass.doMethod.call(this,attr,start,end);}
-return val;};proto.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=='scroll'){val=[el.scrollLeft,el.scrollTop];}else{val=superclass.getAttribute.call(this,attr);}
-return val;};proto.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=='scroll'){el.scrollLeft=val[0];el.scrollTop=val[1];}else{superclass.setAttribute.call(this,attr,val,unit);}};})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.2.2",build:"204"});
\ No newline at end of file

Copied: plog/trunk/js/yui/animation/animation-min.js (from rev 5682, plog/branches/lifetype-1.3-ajax/js/yui/animation/animation-min.js)
===================================================================
--- plog/trunk/js/yui/animation/animation-min.js	                        (rev 0)
+++ plog/trunk/js/yui/animation/animation-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,75 @@
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+
+YAHOO.util.Anim=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};YAHOO.util.Anim.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;}
+YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=='auto'&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);}
+var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,'position')=='absolute'&&pos)){val=el['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;}
+return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return'px';}
+return'';},setRuntimeAttribute:function(attr){var start;var end;var attributes=this.attributes;this.runtimeAttributes[attr]={};var isset=function(prop){return(typeof prop!=='undefined');};if(!isset(attributes[attr]['to'])&&!isset(attributes[attr]['by'])){return false;}
+start=(isset(attributes[attr]['from']))?attributes[attr]['from']:this.getAttribute(attr);if(isset(attributes[attr]['to'])){end=attributes[attr]['to'];}else if(isset(attributes[attr]['by'])){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attr]['by'][i];}}else{end=start+attributes[attr]['by'];}}
+this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(isset(attributes[attr].unit))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var actualFrames=0;el=YAHOO.util.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}
+this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(finish){if(finish){this.currentFrame=this.totalFrames;this._onTween.fire();}
+YAHOO.util.AnimMgr.stop(this);};var onStart=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);}
+isAnimated=true;actualFrames=0;startTime=new Date();};var onTween=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return('duration: '+data.duration+', currentFrame: '+data.currentFrame);};this.onTween.fire(data);var runtimeAttributes=this.runtimeAttributes;for(var attr in runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttributes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].unit);}
+actualFrames+=1;};var onComplete=function(){var actual_duration=(new Date()-startTime)/1000;var data={duration:actual_duration,frames:actualFrames,fps:actualFrames/actual_duration};data.toString=function(){return('duration: '+data.duration+', frames: '+data.frames+', fps: '+data.fps);};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent('_start',this,true);this.onStart=new YAHOO.util.CustomEvent('start',this);this.onTween=new YAHOO.util.CustomEvent('tween',this);this._onTween=new YAHOO.util.CustomEvent('_tween',this,true);this.onComplete=new YAHOO.util.CustomEvent('complete',this);this._onComplete=new YAHOO.util.CustomEvent('_complete',this,true);this._onStart.subscribe(onStart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onComplete);}};YAHOO.util.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=1000;this.delay=1;this.registerElement=function(tween){queue[queue.length]=tween;tweenC
 ount+=1;tween._onStart.fire();this.start();};this.unRegister=function(tween,index){tween._onComplete.fire();index=index||getIndex(tween);if(index!=-1){queue.splice(index,1);}
+tweenCount-=1;if(tweenCount<=0){this.stop();}};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[0].isAnimated()){this.unRegister(queue[0],0);}}
+queue=[];thread=null;tweenCount=0;}
+else{this.unRegister(tween);}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;}
+if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null)
+{tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);}
+tween._onTween.fire();}
+else{YAHOO.util.AnimMgr.stop(tween,i);}}};var getIndex=function(anim){for(var i=0,len=queue.length;i<len;++i){if(queue[i]==anim){return i;}}
+return-1;};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);}
+if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);}
+tween.currentFrame+=tweak;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];}
+for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}
+return[tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,attributes,duration,method){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,attributes,duration,method);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var superclass=Y.ColorAnim.superclass;var proto=Y.ColorAnim.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("ColorAnim "+id);};proto.patterns.color=/color$/i;proto.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;proto.parseColor=function(s){if(s.length==3){return s;}
+var c=this.patterns.hex.exec(s);if(c&&c.length==4){return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];}
+c=this.patterns.rgb.exec(s);if(c&&c.length==4){return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];}
+c=this.patterns.hex3.exec(s);if(c&&c.length==4){return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}
+return null;};proto.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var parent=el.parentNode;val=Y.Dom.getStyle(parent,attr);while(parent&&this.patterns.transparent.test(val)){parent=parent.parentNode;val=Y.Dom.getStyle(parent,attr);if(parent.tagName.toUpperCase()=='HTML'){val='#fff';}}}}else{val=superclass.getAttribute.call(this,attr);}
+return val;};proto.doMethod=function(attr,start,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=start.length;i<len;++i){val[i]=superclass.doMethod.call(this,attr,start[i],end[i]);}
+val='rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val[2])+')';}
+else{val=superclass.doMethod.call(this,attr,start,end);}
+return val;};proto.setRuntimeAttribute=function(attr){superclass.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var attributes=this.attributes;var start=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof attributes[attr]['to']==='undefined'&&typeof attributes[attr]['by']!=='undefined'){end=this.parseColor(attributes[attr].by);for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+end[i];}}
+this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;}
+return-c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t*t*t+b;}
+return-c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0){return b;}
+if((t/=d)==1){return b+c;}
+if(!p){p=d*.3;}
+if(!a||a<Math.abs(c)){a=c;var s=p/4;}
+else{var s=p/(2*Math.PI)*Math.asin(c/a);}
+return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0){return b;}
+if((t/=d)==1){return b+c;}
+if(!p){p=d*.3;}
+if(!a||a<Math.abs(c)){a=c;var s=p/4;}
+else{var s=p/(2*Math.PI)*Math.asin(c/a);}
+return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0){return b;}
+if((t/=d/2)==2){return b+c;}
+if(!p){p=d*(.3*1.5);}
+if(!a||a<Math.abs(c)){a=c;var s=p/4;}
+else{var s=p/(2*Math.PI)*Math.asin(c/a);}
+if(t<1){return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;}
+return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
+return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
+return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;}
+if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;}
+return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}
+return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;},bounceBoth:function(t,b,c,d){if(t<d/2){return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*.5+b;}
+return YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){YAHOO.util.Motion=function(el,attributes,duration,method){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Motion.superclass;var proto=Y.Motion.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Motion "+id);};proto.patterns.points=/^points$/i;proto.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||'px';superclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribute.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,attr,val,unit);}};proto.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[superclass.getAttribute.call(this,'left'),superclass.getAttribute.call(this,'top')];}else{val=superclass.getAttribute.call(this,attr);}
+return val;};proto.doMethod=function(attr,start,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=superclass.doMethod.call(this,attr,start,end);}
+return val;};proto.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var attributes=this.attributes;var start;var control=attributes['points']['control']||[];var end;var i,len;if(control.length>0&&!(control[0]instanceof Array)){control=[control];}else{var tmp=[];for(i=0,len=control.length;i<len;++i){tmp[i]=control[i];}
+control=tmp;}
+if(Y.Dom.getStyle(el,'position')=='static'){Y.Dom.setStyle(el,'position','relative');}
+if(isset(attributes['points']['from'])){Y.Dom.setXY(el,attributes['points']['from']);}
+else{Y.Dom.setXY(el,Y.Dom.getXY(el));}
+start=this.getAttribute('points');if(isset(attributes['points']['to'])){end=translateValues.call(this,attributes['points']['to'],start);var pageXY=Y.Dom.getXY(this.getEl());for(i=0,len=control.length;i<len;++i){control[i]=translateValues.call(this,control[i],start);}}else if(isset(attributes['points']['by'])){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}}
+this.runtimeAttributes[attr]=[start];if(control.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(control);}
+this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;}
+else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Y.Dom.getXY(this.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var isset=function(prop){return(typeof prop!=='undefined');};})();(function(){YAHOO.util.Scroll=function(el,attributes,duration,method){if(el){YAHOO.util.Scroll.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Scroll.superclass;var proto=Y.Scroll.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Scroll "+id);};proto.doMethod=function(attr,start,end){var val=null;if(attr=='scroll'){val=[this.method(this.currentFrame,start[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,start[1],end[1]-start[1],this.totalFrames)];}else{val=superclass.doMethod.call(this,attr,start,end);}
+return val;};proto.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=='scroll'){val=[el.scrollLeft,el.scrollTop];}else{val=superclass.getAttribute.call(this,attr);}
+return val;};proto.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=='scroll'){el.scrollLeft=val[0];el.scrollTop=val[1];}else{superclass.setAttribute.call(this,attr,val,unit);}};})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/js/yui/connection/connection-min.js
===================================================================
--- plog/trunk/js/yui/connection/connection-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/connection/connection-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,12 +1,17 @@
 /*
-Copyright (c) 2006, Yahoo! Inc. All rights reserved.
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
 Code licensed under the BSD License:
 http://developer.yahoo.net/yui/license.txt
-version: 0.12.2
+version: 2.2.2
 */
-YAHOO.util.Connect={_msxml_progid:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'],_http_header:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:'application/x-www-form-urlencoded',_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,setProgId:function(id)
+
+YAHOO.util.Connect={_msxml_progid:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'],_http_headers:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:'application/x-www-form-urlencoded; charset=UTF-8',_use_default_xhr_header:true,_default_xhr_header:'XMLHttpRequest',_has_default_headers:true,_default_headers:{},_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,_submitElementValue:null,_hasSubmitListener:(function()
+{if(YAHOO.util.Event){YAHOO.util.Event.addListener(document,'click',function(e){var obj=YAHOO.util.Event.getTarget(e);if(obj.type=='submit'){YAHOO.util.Connect._submitElementValue=encodeURIComponent(obj.name)+"="+encodeURIComponent(obj.value);}})
+return true;}
+return false;})(),setProgId:function(id)
 {this._msxml_progid.unshift(id);},setDefaultPostHeader:function(b)
-{this._use_default_post_header=b;},setPollingInterval:function(i)
+{this._use_default_post_header=b;},setDefaultXhrHeader:function(b)
+{this._use_default_xhr_header=b;},setPollingInterval:function(i)
 {if(typeof i=='number'&&isFinite(i)){this._polling_interval=i;}},createXhrObject:function(transactionId)
 {var obj,http;try
 {http=new XMLHttpRequest();obj={conn:http,tId:transactionId};}
@@ -23,45 +28,45 @@
 {return o;}},asyncRequest:function(method,uri,callback,postData)
 {var o=this.getConnectionObject();if(!o){return null;}
 else{if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(o.tId,callback,uri,postData);this.releaseObject(o);return;}
-if(method=='GET'){if(this._sFormData.length!=0){uri+=((uri.indexOf('?')==-1)?'?':'&')+this._sFormData;}
+if(method.toUpperCase()=='GET'){if(this._sFormData.length!=0){uri+=((uri.indexOf('?')==-1)?'?':'&')+this._sFormData;}
 else{uri+="?"+this._sFormData;}}
-else if(method=='POST'){postData=postData?this._sFormData+"&"+postData:this._sFormData;}}
-o.conn.open(method,uri,true);if(this._isFormSubmit||(postData&&this._use_default_post_header)){this.initHeader('Content-Type',this._default_post_header);if(this._isFormSubmit){this.resetFormState();}}
-if(this._has_http_headers){this.setHeader(o);}
+else if(method.toUpperCase()=='POST'){postData=postData?this._sFormData+"&"+postData:this._sFormData;}}
+o.conn.open(method,uri,true);if(this._use_default_xhr_header){if(!this._default_headers['X-Requested-With']){this.initHeader('X-Requested-With',this._default_xhr_header,true);}}
+if(this._isFormSubmit||(postData&&this._use_default_post_header)){this.initHeader('Content-Type',this._default_post_header);if(this._isFormSubmit){this.resetFormState();}}
+if(this._has_default_headers||this._has_http_headers){this.setHeader(o);}
 this.handleReadyState(o,callback);o.conn.send(postData||null);return o;}},handleReadyState:function(o,callback)
 {var oConn=this;if(callback&&callback.timeout){this._timeOut[o.tId]=window.setTimeout(function(){oConn.abort(o,callback,true);},callback.timeout);}
-this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(oConn._poll[o.tId]);delete oConn._poll[o.tId];if(callback&&callback.timeout){delete oConn._timeOut[o.tId];}
+this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState===4){window.clearInterval(oConn._poll[o.tId]);delete oConn._poll[o.tId];if(callback&&callback.timeout){delete oConn._timeOut[o.tId];}
 oConn.handleTransactionResponse(o,callback);}},this._polling_interval);},handleTransactionResponse:function(o,callback,isAbort)
 {if(!callback){this.releaseObject(o);return;}
 var httpStatus,responseObject;try
-{if(o.conn.status!==undefined&&o.conn.status!=0){httpStatus=o.conn.status;}
+{if(o.conn.status!==undefined&&o.conn.status!==0){httpStatus=o.conn.status;}
 else{httpStatus=13030;}}
 catch(e){httpStatus=13030;}
-if(httpStatus>=200&&httpStatus<300){try
-{responseObject=this.createResponseObject(o,callback.argument);if(callback.success){if(!callback.scope){callback.success(responseObject);}
+if(httpStatus>=200&&httpStatus<300||httpStatus===1223){responseObject=this.createResponseObject(o,callback.argument);if(callback.success){if(!callback.scope){callback.success(responseObject);}
 else{callback.success.apply(callback.scope,[responseObject]);}}}
-catch(e){}}
-else{try
-{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,callback.argument,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callback.failure(responseObject);}
+else{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,callback.argument,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callback.failure(responseObject);}
 else{callback.failure.apply(callback.scope,[responseObject]);}}
 break;default:responseObject=this.createResponseObject(o,callback.argument);if(callback.failure){if(!callback.scope){callback.failure(responseObject);}
 else{callback.failure.apply(callback.scope,[responseObject]);}}}}
-catch(e){}}
 this.releaseObject(o);responseObject=null;},createResponseObject:function(o,callbackArg)
 {var obj={};var headerObj={};try
 {var headerStr=o.conn.getAllResponseHeaders();var header=headerStr.split('\n');for(var i=0;i<header.length;i++){var delimitPos=header[i].indexOf(':');if(delimitPos!=-1){headerObj[header[i].substring(0,delimitPos)]=header[i].substring(delimitPos+2);}}}
 catch(e){}
-obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=headerObj;obj.getAllResponseHeaders=headerStr;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof callbackArg!==undefined){obj.argument=callbackArg;}
+obj.tId=o.tId;obj.status=(o.conn.status==1223)?204:o.conn.status;obj.statusText=(o.conn.status==1223)?"No Content":o.conn.statusText;obj.getResponseHeader=headerObj;obj.getAllResponseHeaders=headerStr;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof callbackArg!==undefined){obj.argument=callbackArg;}
 return obj;},createExceptionObject:function(tId,callbackArg,isAbort)
 {var COMM_CODE=0;var COMM_ERROR='communication failure';var ABORT_CODE=-1;var ABORT_ERROR='transaction aborted';var obj={};obj.tId=tId;if(isAbort){obj.status=ABORT_CODE;obj.statusText=ABORT_ERROR;}
 else{obj.status=COMM_CODE;obj.statusText=COMM_ERROR;}
 if(callbackArg){obj.argument=callbackArg;}
-return obj;},initHeader:function(label,value)
-{if(this._http_header[label]===undefined){this._http_header[label]=value;}
-else{this._http_header[label]=value+","+this._http_header[label];}
-this._has_http_headers=true;},setHeader:function(o)
-{for(var prop in this._http_header){if(this._http_header.hasOwnProperty(prop)){o.conn.setRequestHeader(prop,this._http_header[prop]);}}
-delete this._http_header;this._http_header={};this._has_http_headers=false;},setForm:function(formId,isUpload,secureUri)
+return obj;},initHeader:function(label,value,isDefault)
+{var headerObj=(isDefault)?this._default_headers:this._http_headers;if(headerObj[label]===undefined){headerObj[label]=value;}
+else{headerObj[label]=value+","+headerObj[label];}
+if(isDefault){this._has_default_headers=true;}
+else{this._has_http_headers=true;}},setHeader:function(o)
+{if(this._has_default_headers){for(var prop in this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers,prop)){o.conn.setRequestHeader(prop,this._default_headers[prop]);}}}
+if(this._has_http_headers){for(var prop in this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,prop)){o.conn.setRequestHeader(prop,this._http_headers[prop]);}}
+delete this._http_headers;this._http_headers={};this._has_http_headers=false;}},resetDefaultHeaders:function(){delete this._default_headers
+this._default_headers={};this._has_default_headers=false;},setForm:function(formId,isUpload,secureUri)
 {this.resetFormState();var oForm;if(typeof formId=='string'){oForm=(document.getElementById(formId)||document.forms[formId]);}
 else if(typeof formId=='object'){oForm=formId;}
 else{return;}
@@ -71,24 +76,24 @@
 {case'select-one':case'select-multiple':for(var j=0;j<oElement.options.length;j++){if(oElement.options[j].selected){if(window.ActiveXObject){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oElement.options[j].attributes['value'].specified?oElement.options[j].value:oElement.options[j].text)+'&';}
 else{this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oElement.options[j].hasAttribute('value')?oElement.options[j].value:oElement.options[j].text)+'&';}}}
 break;case'radio':case'checkbox':if(oElement.checked){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';}
-break;case'file':case undefined:case'reset':case'button':break;case'submit':if(hasSubmit==false){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';hasSubmit=true;}
+break;case'file':case undefined:case'reset':case'button':break;case'submit':if(hasSubmit===false){if(this._hasSubmitListener){this._sFormData+=this._submitElementValue+'&';}
+else{this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';}
+hasSubmit=true;}
 break;default:this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';break;}}}
 this._isFormSubmit=true;this._sFormData=this._sFormData.substr(0,this._sFormData.length-1);return this._sFormData;},resetFormState:function(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";},createFrame:function(secureUri){var frameId='yuiIO'+this._transaction_id;if(window.ActiveXObject){var io=document.createElement('<iframe id="'+frameId+'" name="'+frameId+'" />');if(typeof secureUri=='boolean'){io.src='javascript:false';}
 else if(typeof secureURI=='string'){io.src=secureUri;}}
 else{var io=document.createElement('iframe');io.id=frameId;io.name=frameId;}
 io.style.position='absolute';io.style.top='-1000px';io.style.left='-1000px';document.body.appendChild(io);},appendPostData:function(postData)
 {var formElements=[];var postMessage=postData.split('&');for(var i=0;i<postMessage.length;i++){var delimitPos=postMessage[i].indexOf('=');if(delimitPos!=-1){formElements[i]=document.createElement('input');formElements[i].type='hidden';formElements[i].name=postMessage[i].substring(0,delimitPos);formElements[i].value=postMessage[i].substring(delimitPos+1);this._formNode.appendChild(formElements[i]);}}
-return formElements;},uploadFile:function(id,callback,uri,postData){var frameId='yuiIO'+id;var io=document.getElementById(frameId);this._formNode.action=uri;this._formNode.method='POST';this._formNode.target=frameId;if(this._formNode.encoding){this._formNode.encoding='multipart/form-data';}
-else{this._formNode.enctype='multipart/form-data';}
+return formElements;},uploadFile:function(id,callback,uri,postData){var frameId='yuiIO'+id;var uploadEncoding='multipart/form-data';var io=document.getElementById(frameId);this._formNode.setAttribute('action',uri);this._formNode.setAttribute('method','POST');this._formNode.setAttribute("target",frameId);if(this._formNode.encoding){this._formNode.encoding=uploadEncoding;}
+else{this._formNode.enctype=uploadEncoding;}
 if(postData){var oElements=this.appendPostData(postData);}
-this._formNode.submit();if(oElements&&oElements.length>0){try
-{for(var i=0;i<oElements.length;i++){this._formNode.removeChild(oElements[i]);}}
-catch(e){}}
+this._formNode.submit();if(oElements&&oElements.length>0){for(var i=0;i<oElements.length;i++){this._formNode.removeChild(oElements[i]);}}
 this.resetFormState();var uploadCallback=function()
 {var obj={};obj.tId=id;obj.argument=callback.argument;try
 {obj.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;obj.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;}
 catch(e){}
-if(callback.upload){if(!callback.scope){callback.upload(obj);}
+if(callback&&callback.upload){if(!callback.scope){callback.upload(obj);}
 else{callback.upload.apply(callback.scope,[obj]);}}
 if(YAHOO.util.Event){YAHOO.util.Event.removeListener(io,"load",uploadCallback);}
 else if(window.detachEvent){io.detachEvent('onload',uploadCallback);}
@@ -99,6 +104,6 @@
 {if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._poll[o.tId]);delete this._poll[o.tId];if(isTimeout){delete this._timeOut[o.tId];}
 this.handleTransactionResponse(o,callback,true);return true;}
 else{return false;}},isCallInProgress:function(o)
-{if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;}
+{if(o.conn){return o.conn.readyState!==4&&o.conn.readyState!==0;}
 else{return false;}},releaseObject:function(o)
-{o.conn=null;o=null;}};
\ No newline at end of file
+{o.conn=null;o=null;}};YAHOO.register("connection",YAHOO.util.Connect,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/js/yui/container/assets/container.css
===================================================================
--- plog/trunk/js/yui/container/assets/container.css	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/container/assets/container.css	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,211 +1,233 @@
-/*
-Copyright (c) 2006, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-Version 0.11.4
-*/
-
-.overlay {
-	position:absolute;
-	display:block;
-}
-
-.tt {
-	visibility:hidden;
-	position:absolute;
-	color:#333;
-	background-color:#FDFFB4;
-	font-family:arial,helvetica,verdana,sans-serif;
-	padding:2px;
-	border:1px solid #FCC90D;
-	font:100% sans-serif;
-	width:auto;
-}
-
-* html body.masked select {
-	visibility:hidden;
-}
-
-* html div.panel-container select {
-	visibility:inherit;
-}
-
-* html div.drag select {
-	visibility:hidden;
-}
-
-* html div.hide-select select {
-	visibility:hidden;
-}
-
-.mask {
-	z-index:0;   
-	display:none;
-	position:absolute;
-	top:0;
-	left:0;
-	-moz-opacity: 0.5;
-	opacity:.50;
-	filter: alpha(opacity=50);
-	background-color:#CCC;
-}
-
-.hide-scrollbars * {
-	overflow:hidden;
-}
-
-.hide-scrollbars textarea, .hide-scrollbars select {
-	overflow:hidden;
-	display:none;
-}
-
-.show-scrollbars textarea, .show-scrollbars select {
-	overflow:visible;
-}
-
-.panel-container {
-	position:absolute;
-	background-color:transparent;
-	z-index:6;
-	visibility:hidden;
-	overflow:visible;
-	width:auto;
-}
-
-.panel-container.matte {
-	padding:3px;
-	background-color:#FFF;
-}
-
-.panel-container.matte .underlay {
-	display:none;
-}
-
-.panel-container.shadow {
-	padding:0px;
-	background-color:transparent;
-}
-
-.panel-container.shadow .underlay {
-	visibility:inherit;
-	position:absolute;
-	background-color:#CCC;
-	top:3px;left:3px;
-	z-index:0;
-	width:100%;
-	height:100%;
-	-moz-opacity: 0.7;
-	opacity:.70;
-	filter:alpha(opacity=70);
-	zoom:1;
-}
-
-.panel {
-	visibility:hidden;
-	border-collapse:separate;
-	position:relative;
-	left:0px;top:0px;
-	font:1em Arial;
-	background-color:#FFF;
-	border:1px solid #000;
-	z-index:1;
-	overflow:hidden;
-}
-
-.panel .hd {
-	background-color:#3d77cb;
-	color:#FFF;
-	font-size:100%;
-	line-height:100%;
-	border:1px solid #FFF;
-	border-bottom:1px solid #000;
-	font-weight:bold;
-	overflow:hidden;
-	padding:4px;
-}
-
-.panel .bd {
-	overflow:hidden;
-	padding:4px;
-}
-
-.panel .bd p {
-	margin:0 0 1em;
-}
-
-.panel .close {
-	position:absolute;
-	top:5px;
-	right:4px;
-	z-index:6;
-	height:12px;
-	width:12px;
-	margin:0px;
-	padding:0px;
-	background-repeat:no-repeat;
-	cursor:pointer;
-	visibility:inherit;
-}
-
-.panel .close.nonsecure {
-	background-image:url(http://us.i1.yimg.com/us.yimg.com/i/nt/ic/ut/alt3/close12_1.gif);
-}
-
-.panel .close.secure {
-	background-image:url(https://a248.e.akamai.net/sec.yimg.com/i/nt/ic/ut/alt3/close12_1.gif);
-}
-
-.panel .ft {
-	padding:4px;
-	overflow:hidden;
-}
-
-.simple-dialog .bd .icon {
-	background-repeat:no-repeat;
-	width:16px;
-	height:16px;
-	margin-right:10px;
-	float:left;
-}
-
-.dialog .ft, .simple-dialog .ft {
-	padding-bottom:5px;
-	padding-right:5px;
-	text-align:right;
-}
-
-.dialog form, .simple-dialog form {
-	margin:0;
-}
-
-.button-group button {
-	font:100 76% verdana;
-	text-decoration:none;
-	background-color: #E4E4E4;
-	color: #333;
-	cursor: hand;
-	vertical-align: middle;
-	border: 2px solid #797979;
-	border-top-color:#FFF;
-	border-left-color:#FFF;
-	margin:2px;
-	padding:2px;
-}
-
-.button-group button.default {
-	font-weight:bold;
-}
-
-.button-group button:hover, .button-group button.hover { 
-	border:2px solid #90A029;
-	background-color:#EBF09E;
-	border-top-color:#FFF;
-	border-left-color:#FFF;
-}
-
-.button-group button:active { 
-	border:2px solid #E4E4E4;
-	background-color:#BBB;
-	border-top-color:#333;
-	border-left-color:#333;
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+.yui-overlay {
+	position:absolute;
+	display:block;
+}
+
+.yui-tt {
+	visibility:hidden;
+	position:absolute;
+	color:#333;
+	background-color:#FDFFB4;
+	font-family:arial,helvetica,verdana,sans-serif;
+	padding:2px;
+	border:1px solid #FCC90D;
+	font:100% sans-serif;
+	width:auto;
+}
+
+* html body.masked select {
+	visibility:hidden;
+}
+
+* html div.yui-panel-container select {
+	visibility:inherit;
+}
+
+* html div.drag select {
+	visibility:hidden;
+}
+
+* html div.hide-select select {
+	visibility:hidden;
+}
+
+.mask {
+    z-index:0;
+    display:none;
+    position:absolute;
+    top:0;
+    left:0;
+    -moz-opacity: 0.5;
+    opacity:.50;
+    filter: alpha(opacity=50);
+    background-color:#CCC;
+}
+
+.hide-scrollbars * {
+	overflow:hidden;
+}
+
+.hide-scrollbars textarea, .hide-scrollbars select {
+	overflow:hidden;
+	display:none;
+}
+
+.show-scrollbars textarea, .show-scrollbars select {
+	overflow:visible;
+}
+
+.yui-panel-container {
+	position:absolute;
+	background-color:transparent;
+	z-index:6;
+	visibility:hidden;
+	overflow:visible;
+	width:auto;
+}
+
+.yui-panel-container.focused {
+}
+
+
+.yui-panel-container.matte {
+	padding:3px;
+	background-color:#FFF;
+}
+
+.yui-panel-container.matte .underlay {
+	display:none;
+}
+
+.yui-panel-container.shadow {
+	padding:0px;
+	background-color:transparent;
+}
+
+.yui-panel-container.shadow .underlay {
+	visibility:inherit;
+	position:absolute;
+	background-color:#000;
+	top:3px;left:3px;
+	z-index:0;
+	width:100%;
+	height:100%;
+    -moz-opacity: 0.12;
+    opacity:.12;
+    filter:alpha(opacity=12);
+	zoom:1;
+}
+
+.yui-panel {
+	visibility:hidden;
+	border-collapse:separate;
+	position:relative;
+	left:0px;top:0px;
+	font:1em Arial;
+	background-color:#FFF;
+	border:1px solid #000;
+	z-index:1;
+	overflow:hidden;
+}
+
+.yui-panel .hd {
+	background-color:#3d77cb;
+	color:#FFF;
+	font-size:100%;
+	line-height:100%;
+	border:1px solid #FFF;
+	border-bottom:1px solid #000;
+	font-weight:bold;
+	overflow:hidden;
+	padding:4px;
+}
+
+.yui-panel .bd {
+	overflow:hidden;
+	padding:4px;
+}
+
+.yui-panel .bd p {
+	margin:0 0 1em;
+}
+
+.yui-panel .container-close {
+	position:absolute;
+	top:5px;
+	right:4px;
+	z-index:6;
+	height:12px;
+	width:12px;
+	margin:0px;
+	padding:0px;
+	background:url(close12_1.gif) no-repeat;
+	cursor:pointer;
+	visibility:inherit;
+}
+
+.yui-panel .ft {
+	padding:4px;
+	overflow:hidden;
+}
+
+.yui-simple-dialog .bd .yui-icon {
+	background-repeat:no-repeat;
+	width:16px;
+	height:16px;
+	margin-right:10px;
+	float:left;
+}
+
+.yui-simple-dialog .bd span.blckicon {
+	background: url("blck16_1.gif") no-repeat;
+}
+
+.yui-simple-dialog .bd span.alrticon {
+	background: url("alrt16_1.gif") no-repeat;
+}
+
+.yui-simple-dialog .bd span.hlpicon {
+	background: url("hlp16_1.gif") no-repeat;
+}
+
+.yui-simple-dialog .bd span.infoicon {
+	background: url("info16_1.gif") no-repeat;
+}
+
+.yui-simple-dialog .bd span.warnicon {
+	background: url("warn16_1.gif") no-repeat;
+}
+
+.yui-simple-dialog .bd span.tipicon {
+	background: url("tip16_1.gif") no-repeat;
+}
+
+.yui-dialog .ft, 
+.yui-simple-dialog .ft {
+	padding-bottom:5px;
+	padding-right:5px;
+	text-align:right;
+}
+
+.yui-dialog form, 
+.yui-simple-dialog form {
+	margin:0;
+}
+
+.button-group button {
+	font:100 76% verdana;
+	text-decoration:none;
+	background-color: #E4E4E4;
+	color: #333;
+	cursor: hand;
+	vertical-align: middle;
+	border: 2px solid #797979;
+	border-top-color:#FFF;
+	border-left-color:#FFF;
+	margin:2px;
+	padding:2px;
+}
+
+.button-group button.default {
+	font-weight:bold;
+}
+
+.button-group button:hover, 
+.button-group button.hover {
+	border:2px solid #90A029;
+	background-color:#EBF09E;
+	border-top-color:#FFF;
+	border-left-color:#FFF;
+}
+
+.button-group button:active {
+	border:2px solid #E4E4E4;
+	background-color:#BBB;
+	border-top-color:#333;
+	border-left-color:#333;
 }
\ No newline at end of file

Modified: plog/trunk/js/yui/container/container-min.js
===================================================================
--- plog/trunk/js/yui/container/container-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/container/container-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,142 +1,162 @@
-/* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.4 */
-YAHOO.util.Config=function(owner){if(owner){this.init(owner);}};YAHOO.util.Config.prototype={owner:null,configChangedEvent:null,queueInProgress:false,addProperty:function(key,propertyObject){},getConfig:function(){},getProperty:function(key){},resetProperty:function(key){},setProperty:function(key,value,silent){},queueProperty:function(key,value){},refireEvent:function(key){},applyConfig:function(userConfig,init){},refresh:function(){},fireQueue:function(){},subscribeToConfigEvent:function(key,handler,obj,override){},unsubscribeFromConfigEvent:function(key,handler,obj){},checkBoolean:function(val){if(typeof val=='boolean'){return true;}else{return false;}},checkNumber:function(val){if(isNaN(val)){return false;}else{return true;}}};YAHOO.util.Config.prototype.init=function(owner){this.owner=owner;this.configChangedEvent=new YAHOO.util.CustomEvent("configChanged");this.queueInProgress=false;var config={};var initialConfig={};var eventQueue=[];var fireEvent=function(key,value){
 key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){property.event.fire(value);}};this.addProperty=function(key,propertyObject){key=key.toLowerCase();config[key]=propertyObject;propertyObject.event=new YAHOO.util.CustomEvent(key);propertyObject.key=key;if(propertyObject.handler){propertyObject.event.subscribe(propertyObject.handler,this.owner,true);}
-this.setProperty(key,propertyObject.value,true);if(!propertyObject.suppressEvent){this.queueProperty(key,propertyObject.value);}};this.getConfig=function(){var cfg={};for(var prop in config){var property=config[prop];if(typeof property!='undefined'&&property.event){cfg[prop]=property.value;}}
-return cfg;};this.getProperty=function(key){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){return property.value;}else{return undefined;}};this.resetProperty=function(key){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){this.setProperty(key,initialConfig[key].value);}else{return undefined;}};this.setProperty=function(key,value,silent){key=key.toLowerCase();if(this.queueInProgress&&!silent){this.queueProperty(key,value);return true;}else{var property=config[key];if(typeof property!='undefined'&&property.event){if(property.validator&&!property.validator(value)){return false;}else{property.value=value;if(!silent){fireEvent(key,value);this.configChangedEvent.fire([key,value]);}
-return true;}}else{return false;}}};this.queueProperty=function(key,value){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){if(typeof value!='undefined'&&property.validator&&!property.validator(value)){return false;}else{if(typeof value!='undefined'){property.value=value;}else{value=property.value;}
-var foundDuplicate=false;for(var i=0;i<eventQueue.length;i++){var queueItem=eventQueue[i];if(queueItem){var queueItemKey=queueItem[0];var queueItemValue=queueItem[1];if(queueItemKey.toLowerCase()==key){eventQueue[i]=null;eventQueue.push([key,(typeof value!='undefined'?value:queueItemValue)]);foundDuplicate=true;break;}}}
-if(!foundDuplicate&&typeof value!='undefined'){eventQueue.push([key,value]);}}
-if(property.supercedes){for(var s=0;s<property.supercedes.length;s++){var supercedesCheck=property.supercedes[s];for(var q=0;q<eventQueue.length;q++){var queueItemCheck=eventQueue[q];if(queueItemCheck){var queueItemCheckKey=queueItemCheck[0];var queueItemCheckValue=queueItemCheck[1];if(queueItemCheckKey.toLowerCase()==supercedesCheck.toLowerCase()){eventQueue.push([queueItemCheckKey,queueItemCheckValue]);eventQueue[q]=null;break;}}}}}
-return true;}else{return false;}};this.refireEvent=function(key){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event&&typeof property.value!='undefined'){if(this.queueInProgress){this.queueProperty(key);}else{fireEvent(key,property.value);}}};this.applyConfig=function(userConfig,init){if(init){initialConfig=userConfig;}
-for(var prop in userConfig){this.queueProperty(prop,userConfig[prop]);}};this.refresh=function(){for(var prop in config){this.refireEvent(prop);}};this.fireQueue=function(){this.queueInProgress=true;for(var i=0;i<eventQueue.length;i++){var queueItem=eventQueue[i];if(queueItem){var key=queueItem[0];var value=queueItem[1];var property=config[key];property.value=value;fireEvent(key,value);}}
-this.queueInProgress=false;eventQueue=[];};this.subscribeToConfigEvent=function(key,handler,obj,override){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){if(!YAHOO.util.Config.alreadySubscribed(property.event,handler,obj)){property.event.subscribe(handler,obj,override);}
-return true;}else{return false;}};this.unsubscribeFromConfigEvent=function(key,handler,obj){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){return property.event.unsubscribe(handler,obj);}else{return false;}};this.toString=function(){var output="Config";if(this.owner){output+=" ["+this.owner.toString()+"]";}
-return output;};this.outputEventQueue=function(){var output="";for(var q=0;q<eventQueue.length;q++){var queueItem=eventQueue[q];if(queueItem){output+=queueItem[0]+"="+queueItem[1]+", ";}}
-return output;};};YAHOO.util.Config.alreadySubscribed=function(evt,fn,obj){for(var e=0;e<evt.subscribers.length;e++){var subsc=evt.subscribers[e];if(subsc&&subsc.obj==obj&&subsc.fn==fn){return true;}}
-return false;};YAHOO.widget.Module=function(el,userConfig){if(el){this.init(el,userConfig);}};YAHOO.widget.Module.IMG_ROOT="http://us.i1.yimg.com/us.yimg.com/i/";YAHOO.widget.Module.IMG_ROOT_SSL="https://a248.e.akamai.net/sec.yimg.com/i/";YAHOO.widget.Module.CSS_MODULE="module";YAHOO.widget.Module.CSS_HEADER="hd";YAHOO.widget.Module.CSS_BODY="bd";YAHOO.widget.Module.CSS_FOOTER="ft";YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL="javascript:false";YAHOO.widget.Module.prototype={constructor:YAHOO.widget.Module,element:null,header:null,body:null,footer:null,id:null,childNodesInDOM:null,imageRoot:YAHOO.widget.Module.IMG_ROOT,beforeInitEvent:null,initEvent:null,appendEvent:null,beforeRenderEvent:null,renderEvent:null,changeHeaderEvent:null,changeBodyEvent:null,changeFooterEvent:null,changeContentEvent:null,destroyEvent:null,beforeShowEvent:null,showEvent:null,beforeHideEvent:null,hideEvent:null,initEvents:function(){this.beforeInitEvent=new YAHOO.util.CustomEvent("beforeInit");thi
 s.initEvent=new YAHOO.util.CustomEvent("init");this.appendEvent=new YAHOO.util.CustomEvent("append");this.beforeRenderEvent=new YAHOO.util.CustomEvent("beforeRender");this.renderEvent=new YAHOO.util.CustomEvent("render");this.changeHeaderEvent=new YAHOO.util.CustomEvent("changeHeader");this.changeBodyEvent=new YAHOO.util.CustomEvent("changeBody");this.changeFooterEvent=new YAHOO.util.CustomEvent("changeFooter");this.changeContentEvent=new YAHOO.util.CustomEvent("changeContent");this.destroyEvent=new YAHOO.util.CustomEvent("destroy");this.beforeShowEvent=new YAHOO.util.CustomEvent("beforeShow");this.showEvent=new YAHOO.util.CustomEvent("show");this.beforeHideEvent=new YAHOO.util.CustomEvent("beforeHide");this.hideEvent=new YAHOO.util.CustomEvent("hide");},platform:function(){var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1){return"windows";}else if(ua.indexOf("macintosh")!=-1){return"mac";}else{return false;}}(),browser:function()
 {var ua=navigator.userAgent.toLowerCase();if(ua.indexOf('opera')!=-1){return'opera';}else if(ua.indexOf('msie 7')!=-1){return'ie7';}else if(ua.indexOf('msie')!=-1){return'ie';}else if(ua.indexOf('safari')!=-1){return'safari';}else if(ua.indexOf('gecko')!=-1){return'gecko';}else{return false;}}(),isSecure:function(){if(window.location.href.toLowerCase().indexOf("https")===0){return true;}else{return false;}}(),initDefaultConfig:function(){this.cfg.addProperty("visible",{value:true,handler:this.configVisible,validator:this.cfg.checkBoolean});this.cfg.addProperty("effect",{suppressEvent:true,supercedes:["visible"]});this.cfg.addProperty("monitorresize",{value:true,handler:this.configMonitorResize});},init:function(el,userConfig){this.initEvents();this.beforeInitEvent.fire(YAHOO.widget.Module);this.cfg=new YAHOO.util.Config(this);if(this.isSecure){this.imageRoot=YAHOO.widget.Module.IMG_ROOT_SSL;}
-if(typeof el=="string"){var elId=el;el=document.getElementById(el);if(!el){el=document.createElement("DIV");el.id=elId;}}
-this.element=el;if(el.id){this.id=el.id;}
-var childNodes=this.element.childNodes;if(childNodes){for(var i=0;i<childNodes.length;i++){var child=childNodes[i];switch(child.className){case YAHOO.widget.Module.CSS_HEADER:this.header=child;break;case YAHOO.widget.Module.CSS_BODY:this.body=child;break;case YAHOO.widget.Module.CSS_FOOTER:this.footer=child;break;}}}
-this.initDefaultConfig();YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Module.CSS_MODULE);if(userConfig){this.cfg.applyConfig(userConfig,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.renderEvent,this.cfg.fireQueue,this.cfg)){this.renderEvent.subscribe(this.cfg.fireQueue,this.cfg,true);}
-this.initEvent.fire(YAHOO.widget.Module);},initResizeMonitor:function(){if(this.browser!="opera"){var resizeMonitor=document.getElementById("_yuiResizeMonitor");if(!resizeMonitor){resizeMonitor=document.createElement("iframe");var bIE=(this.browser.indexOf("ie")===0);if(this.isSecure&&YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL&&bIE){resizeMonitor.src=YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL;}
-resizeMonitor.id="_yuiResizeMonitor";resizeMonitor.style.visibility="hidden";document.body.appendChild(resizeMonitor);resizeMonitor.style.width="10em";resizeMonitor.style.height="10em";resizeMonitor.style.position="absolute";var nLeft=-1*resizeMonitor.offsetWidth,nTop=-1*resizeMonitor.offsetHeight;resizeMonitor.style.top=nTop+"px";resizeMonitor.style.left=nLeft+"px";resizeMonitor.style.borderStyle="none";resizeMonitor.style.borderWidth="0";YAHOO.util.Dom.setStyle(resizeMonitor,"opacity","0");resizeMonitor.style.visibility="visible";if(!bIE){var doc=resizeMonitor.contentWindow.document;doc.open();doc.close();}}
-if(resizeMonitor&&resizeMonitor.contentWindow){this.resizeMonitor=resizeMonitor;YAHOO.util.Event.addListener(this.resizeMonitor.contentWindow,"resize",this.onDomResize,this,true);}}},onDomResize:function(e,obj){var nLeft=-1*this.resizeMonitor.offsetWidth,nTop=-1*this.resizeMonitor.offsetHeight;this.resizeMonitor.style.top=nTop+"px";this.resizeMonitor.style.left=nLeft+"px";},setHeader:function(headerContent){if(!this.header){this.header=document.createElement("DIV");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
-if(typeof headerContent=="string"){this.header.innerHTML=headerContent;}else{this.header.innerHTML="";this.header.appendChild(headerContent);}
-this.changeHeaderEvent.fire(headerContent);this.changeContentEvent.fire();},appendToHeader:function(element){if(!this.header){this.header=document.createElement("DIV");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
-this.header.appendChild(element);this.changeHeaderEvent.fire(element);this.changeContentEvent.fire();},setBody:function(bodyContent){if(!this.body){this.body=document.createElement("DIV");this.body.className=YAHOO.widget.Module.CSS_BODY;}
-if(typeof bodyContent=="string")
-{this.body.innerHTML=bodyContent;}else{this.body.innerHTML="";this.body.appendChild(bodyContent);}
-this.changeBodyEvent.fire(bodyContent);this.changeContentEvent.fire();},appendToBody:function(element){if(!this.body){this.body=document.createElement("DIV");this.body.className=YAHOO.widget.Module.CSS_BODY;}
-this.body.appendChild(element);this.changeBodyEvent.fire(element);this.changeContentEvent.fire();},setFooter:function(footerContent){if(!this.footer){this.footer=document.createElement("DIV");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
-if(typeof footerContent=="string"){this.footer.innerHTML=footerContent;}else{this.footer.innerHTML="";this.footer.appendChild(footerContent);}
-this.changeFooterEvent.fire(footerContent);this.changeContentEvent.fire();},appendToFooter:function(element){if(!this.footer){this.footer=document.createElement("DIV");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
-this.footer.appendChild(element);this.changeFooterEvent.fire(element);this.changeContentEvent.fire();},render:function(appendToNode,moduleElement){this.beforeRenderEvent.fire();if(!moduleElement){moduleElement=this.element;}
-var me=this;var appendTo=function(element){if(typeof element=="string"){element=document.getElementById(element);}
-if(element){element.appendChild(me.element);me.appendEvent.fire();}};if(appendToNode){appendTo(appendToNode);}else{if(!YAHOO.util.Dom.inDocument(this.element)){return false;}}
-if(this.header&&!YAHOO.util.Dom.inDocument(this.header)){var firstChild=moduleElement.firstChild;if(firstChild){moduleElement.insertBefore(this.header,firstChild);}else{moduleElement.appendChild(this.header);}}
-if(this.body&&!YAHOO.util.Dom.inDocument(this.body)){if(this.footer&&YAHOO.util.Dom.isAncestor(this.moduleElement,this.footer)){moduleElement.insertBefore(this.body,this.footer);}else{moduleElement.appendChild(this.body);}}
-if(this.footer&&!YAHOO.util.Dom.inDocument(this.footer)){moduleElement.appendChild(this.footer);}
-this.renderEvent.fire();return true;},destroy:function(){if(this.element){var parent=this.element.parentNode;}
-if(parent){parent.removeChild(this.element);}
-this.element=null;this.header=null;this.body=null;this.footer=null;this.destroyEvent.fire();},show:function(){this.cfg.setProperty("visible",true);},hide:function(){this.cfg.setProperty("visible",false);},configVisible:function(type,args,obj){var visible=args[0];if(visible){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","block");this.showEvent.fire();}else{this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","none");this.hideEvent.fire();}},configMonitorResize:function(type,args,obj){var monitor=args[0];if(monitor){this.initResizeMonitor();}else{YAHOO.util.Event.removeListener(this.resizeMonitor,"resize",this.onDomResize);this.resizeMonitor=null;}}};YAHOO.widget.Module.prototype.toString=function(){return"Module "+this.id;};YAHOO.widget.Overlay=function(el,userConfig){YAHOO.widget.Overlay.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Overlay,YAHOO.widget.Module);YAHOO.widget.Overlay.IFRAME_SRC="p
 romo/m/irs/blank.gif";YAHOO.widget.Overlay.TOP_LEFT="tl";YAHOO.widget.Overlay.TOP_RIGHT="tr";YAHOO.widget.Overlay.BOTTOM_LEFT="bl";YAHOO.widget.Overlay.BOTTOM_RIGHT="br";YAHOO.widget.Overlay.CSS_OVERLAY="overlay";YAHOO.widget.Overlay.prototype.beforeMoveEvent=null;YAHOO.widget.Overlay.prototype.moveEvent=null;YAHOO.widget.Overlay.prototype.init=function(el,userConfig){YAHOO.widget.Overlay.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Overlay);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Overlay.CSS_OVERLAY);if(userConfig){this.cfg.applyConfig(userConfig,true);}
-if(this.platform=="mac"&&this.browser=="gecko"){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrollbars,this)){this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrollbars,this)){this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true);}}
-this.initEvent.fire(YAHOO.widget.Overlay);};YAHOO.widget.Overlay.prototype.initEvents=function(){YAHOO.widget.Overlay.superclass.initEvents.call(this);this.beforeMoveEvent=new YAHOO.util.CustomEvent("beforeMove",this);this.moveEvent=new YAHOO.util.CustomEvent("move",this);};YAHOO.widget.Overlay.prototype.initDefaultConfig=function(){YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this);this.cfg.addProperty("x",{handler:this.configX,validator:this.cfg.checkNumber,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("y",{handler:this.configY,validator:this.cfg.checkNumber,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("xy",{handler:this.configXY,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("context",{handler:this.configContext,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("fixedcenter",{value:false,handler:this.configFixedCenter,validator:this.cfg.checkBoolean,supercedes:["iframe","visible"]});this.cfg.add
 Property("width",{handler:this.configWidth,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("height",{handler:this.configHeight,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("zIndex",{value:null,handler:this.configzIndex});this.cfg.addProperty("constraintoviewport",{value:false,handler:this.configConstrainToViewport,validator:this.cfg.checkBoolean,supercedes:["iframe","x","y","xy"]});this.cfg.addProperty("iframe",{value:(this.browser=="ie"?true:false),handler:this.configIframe,validator:this.cfg.checkBoolean,supercedes:["zIndex"]});};YAHOO.widget.Overlay.prototype.moveTo=function(x,y){this.cfg.setProperty("xy",[x,y]);};YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"show-scrollbars");YAHOO.util.Dom.addClass(this.element,"hide-scrollbars");};YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"hide-scrollbars");YAHOO.util.Dom.addClass
 (this.element,"show-scrollbars");};YAHOO.widget.Overlay.prototype.configVisible=function(type,args,obj){var visible=args[0];var currentVis=YAHOO.util.Dom.getStyle(this.element,"visibility");var effect=this.cfg.getProperty("effect");var effectInstances=[];if(effect){if(effect instanceof Array){for(var i=0;i<effect.length;i++){var eff=effect[i];effectInstances[effectInstances.length]=eff.effect(this,eff.duration);}}else{effectInstances[effectInstances.length]=effect.effect(this,effect.duration);}}
-var isMacGecko=(this.platform=="mac"&&this.browser=="gecko");if(visible){if(isMacGecko){this.showMacGeckoScrollbars();}
-if(effect){if(visible){if(currentVis!="visible"){this.beforeShowEvent.fire();for(var j=0;j<effectInstances.length;j++){var e=effectInstances[j];if(j===0&&!YAHOO.util.Config.alreadySubscribed(e.animateInCompleteEvent,this.showEvent.fire,this.showEvent)){e.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,true);}
-e.animateIn();}}}}else{if(currentVis!="visible"){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","visible");this.cfg.refireEvent("iframe");this.showEvent.fire();}}}else{if(isMacGecko){this.hideMacGeckoScrollbars();}
-if(effect){if(currentVis=="visible"){this.beforeHideEvent.fire();for(var k=0;k<effectInstances.length;k++){var h=effectInstances[k];if(k===0&&!YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEvent.fire,this.hideEvent)){h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,true);}
-h.animateOut();}}}else{if(currentVis=="visible"){this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","hidden");this.cfg.refireEvent("iframe");this.hideEvent.fire();}}}};YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent=function(){if(this.cfg.getProperty("visible")){this.center();}};YAHOO.widget.Overlay.prototype.configFixedCenter=function(type,args,obj){var val=args[0];if(val){this.center();if(!YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent,this.center,this)){this.beforeShowEvent.subscribe(this.center,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowScrollEvent.subscribe(this.doCenterOnDOMEvent,this,true);}}else{YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);}};YAHOO.widget.Overlay.prototype.configHeight=function(type,args,obj){var height=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"height",height);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configWidth=function(type,args,obj){var width=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"width",width);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configzIndex=function(type,args,obj){var zIndex=args[0];var el=this.element;if(!zIndex){zIndex=YAHOO.util.Dom.getStyle(el,"zIndex");if(!zIndex||isNaN(zIndex)){zIndex=0;}}
-if(this.iframe){if(zIndex<=0){zIndex=1;}
-YAHOO.util.Dom.setStyle(this.iframe,"zIndex",(zIndex-1));}
-YAHOO.util.Dom.setStyle(el,"zIndex",zIndex);this.cfg.setProperty("zIndex",zIndex,true);};YAHOO.widget.Overlay.prototype.configXY=function(type,args,obj){var pos=args[0];var x=pos[0];var y=pos[1];this.cfg.setProperty("x",x);this.cfg.setProperty("y",y);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configX=function(type,args,obj){var x=args[0];var y=this.cfg.getProperty("y");this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setX(this.element,x,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configY=function(type,args,obj){var x=this.cfg.getProperty("x");var y=args[0];this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.before
 MoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setY(this.element,y,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.showIframe=function(){if(this.iframe){this.iframe.style.display="block";}}
-YAHOO.widget.Overlay.prototype.hideIframe=function(){if(this.iframe){this.iframe.style.display="none";}}
-YAHOO.widget.Overlay.prototype.configIframe=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showIframe,this)){this.showEvent.subscribe(this.showIframe,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideIframe,this)){this.hideEvent.subscribe(this.hideIframe,this,true);}
-var x=this.cfg.getProperty("x");var y=this.cfg.getProperty("y");if(!x||!y){this.syncPosition();x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");}
-if(!isNaN(x)&&!isNaN(y)){if(!this.iframe){this.iframe=document.createElement("iframe");if(this.isSecure){this.iframe.src=this.imageRoot+YAHOO.widget.Overlay.IFRAME_SRC;}
-var parent=this.element.parentNode;if(parent){parent.appendChild(this.iframe);}else{document.body.appendChild(this.iframe);}
-YAHOO.util.Dom.setStyle(this.iframe,"position","absolute");YAHOO.util.Dom.setStyle(this.iframe,"border","none");YAHOO.util.Dom.setStyle(this.iframe,"margin","0");YAHOO.util.Dom.setStyle(this.iframe,"padding","0");YAHOO.util.Dom.setStyle(this.iframe,"opacity","0");if(this.cfg.getProperty("visible")){this.showIframe();}else{this.hideIframe();}}
-var iframeDisplay=YAHOO.util.Dom.getStyle(this.iframe,"display");if(iframeDisplay=="none"){this.iframe.style.display="block";}
-YAHOO.util.Dom.setXY(this.iframe,[x,y]);var width=this.element.clientWidth;var height=this.element.clientHeight;YAHOO.util.Dom.setStyle(this.iframe,"width",(width+2)+"px");YAHOO.util.Dom.setStyle(this.iframe,"height",(height+2)+"px");if(iframeDisplay=="none"){this.iframe.style.display="none";}}}else{if(this.iframe){this.iframe.style.display="none";}
-this.showEvent.unsubscribe(this.showIframe,this);this.hideEvent.unsubscribe(this.hideIframe,this);}};YAHOO.widget.Overlay.prototype.configConstrainToViewport=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.beforeMoveEvent,this.enforceConstraints,this)){this.beforeMoveEvent.subscribe(this.enforceConstraints,this,true);}}else{this.beforeMoveEvent.unsubscribe(this.enforceConstraints,this);}};YAHOO.widget.Overlay.prototype.configContext=function(type,args,obj){var contextArgs=args[0];if(contextArgs){var contextEl=contextArgs[0];var elementMagnetCorner=contextArgs[1];var contextMagnetCorner=contextArgs[2];if(contextEl){if(typeof contextEl=="string"){this.cfg.setProperty("context",[document.getElementById(contextEl),elementMagnetCorner,contextMagnetCorner],true);}
-if(elementMagnetCorner&&contextMagnetCorner){this.align(elementMagnetCorner,contextMagnetCorner);}}}};YAHOO.widget.Overlay.prototype.align=function(elementAlign,contextAlign){var contextArgs=this.cfg.getProperty("context");if(contextArgs){var context=contextArgs[0];var element=this.element;var me=this;if(!elementAlign){elementAlign=contextArgs[1];}
-if(!contextAlign){contextAlign=contextArgs[2];}
-if(element&&context){var elementRegion=YAHOO.util.Dom.getRegion(element);var contextRegion=YAHOO.util.Dom.getRegion(context);var doAlign=function(v,h){switch(elementAlign){case YAHOO.widget.Overlay.TOP_LEFT:me.moveTo(h,v);break;case YAHOO.widget.Overlay.TOP_RIGHT:me.moveTo(h-element.offsetWidth,v);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:me.moveTo(h,v-element.offsetHeight);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:me.moveTo(h-element.offsetWidth,v-element.offsetHeight);break;}};switch(contextAlign){case YAHOO.widget.Overlay.TOP_LEFT:doAlign(contextRegion.top,contextRegion.left);break;case YAHOO.widget.Overlay.TOP_RIGHT:doAlign(contextRegion.top,contextRegion.right);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:doAlign(contextRegion.bottom,contextRegion.left);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:doAlign(contextRegion.bottom,contextRegion.right);break;}}}};YAHOO.widget.Overlay.prototype.enforceConstraints=function(type,args,obj){var pos=args[0];var x=pos[0];var y=p
 os[1];var offsetHeight=this.element.offsetHeight;var offsetWidth=this.element.offsetWidth;var viewPortWidth=YAHOO.util.Dom.getViewportWidth();var viewPortHeight=YAHOO.util.Dom.getViewportHeight();var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var topConstraint=scrollY+10;var leftConstraint=scrollX+10;var bottomConstraint=scrollY+viewPortHeight-offsetHeight-10;var rightConstraint=scrollX+viewPortWidth-offsetWidth-10;if(x<leftConstraint){x=leftConstraint;}else if(x>rightConstraint){x=rightConstraint;}
-if(y<topConstraint){y=topConstraint;}else if(y>bottomConstraint){y=bottomConstraint;}
-this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.cfg.setProperty("xy",[x,y],true);};YAHOO.widget.Overlay.prototype.center=function(){var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var viewPortWidth=YAHOO.util.Dom.getClientWidth();var viewPortHeight=YAHOO.util.Dom.getClientHeight();var elementWidth=this.element.offsetWidth;var elementHeight=this.element.offsetHeight;var x=(viewPortWidth/2)-(elementWidth/2)+scrollX;var y=(viewPortHeight/2)-(elementHeight/2)+scrollY;this.element.style.left=parseInt(x,10)+"px";this.element.style.top=parseInt(y,10)+"px";this.syncPosition();this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.syncPosition=function(){var pos=YAHOO.util.Dom.getXY(this.element);this.cfg.setProperty("x",pos[0],true);this.cfg.setProperty("y",pos[1],true);this.cfg.setProperty("xy",pos,true);};YAHOO.widget.Overlay.prototype.onDomResize=funct
 ion(e,obj){YAHOO.widget.Overlay.superclass.onDomResize.call(this,e,obj);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.destroy=function(){if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);}
-this.iframe=null;YAHOO.widget.Overlay.superclass.destroy.call(this);};YAHOO.widget.Overlay.prototype.toString=function(){return"Overlay "+this.id;};YAHOO.widget.Overlay.windowScrollEvent=new YAHOO.util.CustomEvent("windowScroll");YAHOO.widget.Overlay.windowResizeEvent=new YAHOO.util.CustomEvent("windowResize");YAHOO.widget.Overlay.windowScrollHandler=function(e){YAHOO.widget.Overlay.windowScrollEvent.fire();};YAHOO.widget.Overlay.windowResizeHandler=function(e){YAHOO.widget.Overlay.windowResizeEvent.fire();};YAHOO.widget.Overlay._initialized=null;if(YAHOO.widget.Overlay._initialized===null){YAHOO.util.Event.addListener(window,"scroll",YAHOO.widget.Overlay.windowScrollHandler);YAHOO.util.Event.addListener(window,"resize",YAHOO.widget.Overlay.windowResizeHandler);YAHOO.widget.Overlay._initialized=true;}
-YAHOO.widget.OverlayManager=function(userConfig){this.init(userConfig);};YAHOO.widget.OverlayManager.CSS_FOCUSED="focused";YAHOO.widget.OverlayManager.prototype={constructor:YAHOO.widget.OverlayManager,overlays:null,initDefaultConfig:function(){this.cfg.addProperty("overlays",{suppressEvent:true});this.cfg.addProperty("focusevent",{value:"mousedown"});},getActive:function(){},focus:function(overlay){},remove:function(overlay){},blurAll:function(){},init:function(userConfig){this.cfg=new YAHOO.util.Config(this);this.initDefaultConfig();if(userConfig){this.cfg.applyConfig(userConfig,true);}
-this.cfg.fireQueue();var activeOverlay=null;this.getActive=function(){return activeOverlay;};this.focus=function(overlay){var o=this.find(overlay);if(o){this.blurAll();activeOverlay=o;YAHOO.util.Dom.addClass(activeOverlay.element,YAHOO.widget.OverlayManager.CSS_FOCUSED);this.overlays.sort(this.compareZIndexDesc);var topZIndex=YAHOO.util.Dom.getStyle(this.overlays[0].element,"zIndex");if(!isNaN(topZIndex)&&this.overlays[0]!=overlay){activeOverlay.cfg.setProperty("zIndex",(parseInt(topZIndex,10)+2));}
-this.overlays.sort(this.compareZIndexDesc);}};this.remove=function(overlay){var o=this.find(overlay);if(o){var originalZ=YAHOO.util.Dom.getStyle(o.element,"zIndex");o.cfg.setProperty("zIndex",-1000,true);this.overlays.sort(this.compareZIndexDesc);this.overlays=this.overlays.slice(0,this.overlays.length-1);o.cfg.setProperty("zIndex",originalZ,true);o.cfg.setProperty("manager",null);o.focusEvent=null;o.blurEvent=null;o.focus=null;o.blur=null;}};this.blurAll=function(){activeOverlay=null;for(var o=0;o<this.overlays.length;o++){YAHOO.util.Dom.removeClass(this.overlays[o].element,YAHOO.widget.OverlayManager.CSS_FOCUSED);}};var overlays=this.cfg.getProperty("overlays");if(!this.overlays){this.overlays=[];}
-if(overlays){this.register(overlays);this.overlays.sort(this.compareZIndexDesc);}},register:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){overlay.cfg.addProperty("manager",{value:this});overlay.focusEvent=new YAHOO.util.CustomEvent("focus");overlay.blurEvent=new YAHOO.util.CustomEvent("blur");var mgr=this;overlay.focus=function(){mgr.focus(this);this.focusEvent.fire();};overlay.blur=function(){mgr.blurAll();this.blurEvent.fire();};var focusOnDomEvent=function(e,obj){overlay.focus();};var focusevent=this.cfg.getProperty("focusevent");YAHOO.util.Event.addListener(overlay.element,focusevent,focusOnDomEvent,this,true);var zIndex=YAHOO.util.Dom.getStyle(overlay.element,"zIndex");if(!isNaN(zIndex)){overlay.cfg.setProperty("zIndex",parseInt(zIndex,10));}else{overlay.cfg.setProperty("zIndex",0);}
-this.overlays.push(overlay);return true;}else if(overlay instanceof Array){var regcount=0;for(var i=0;i<overlay.length;i++){if(this.register(overlay[i])){regcount++;}}
-if(regcount>0){return true;}}else{return false;}},find:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){for(var o=0;o<this.overlays.length;o++){if(this.overlays[o]==overlay){return this.overlays[o];}}}else if(typeof overlay=="string"){for(var p=0;p<this.overlays.length;p++){if(this.overlays[p].id==overlay){return this.overlays[p];}}}
-return null;},compareZIndexDesc:function(o1,o2){var zIndex1=o1.cfg.getProperty("zIndex");var zIndex2=o2.cfg.getProperty("zIndex");if(zIndex1>zIndex2){return-1;}else if(zIndex1<zIndex2){return 1;}else{return 0;}},showAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].show();}},hideAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].hide();}},toString:function(){return"OverlayManager";}};YAHOO.util.KeyListener=function(attachTo,keyData,handler,event){if(!event){event=YAHOO.util.KeyListener.KEYDOWN;}
-var keyEvent=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof attachTo=='string'){attachTo=document.getElementById(attachTo);}
-if(typeof handler=='function'){keyEvent.subscribe(handler);}else{keyEvent.subscribe(handler.fn,handler.scope,handler.correctScope);}
-function handleKeyPress(e,obj){var keyPressed=e.charCode||e.keyCode;if(!keyData.shift){keyData.shift=false;}
-if(!keyData.alt){keyData.alt=false;}
-if(!keyData.ctrl){keyData.ctrl=false;}
-if(e.shiftKey==keyData.shift&&e.altKey==keyData.alt&&e.ctrlKey==keyData.ctrl){if(keyData.keys instanceof Array){for(var i=0;i<keyData.keys.length;i++){if(keyPressed==keyData.keys[i]){keyEvent.fire(keyPressed,e);break;}}}else{if(keyPressed==keyData.keys){keyEvent.fire(keyPressed,e);}}}}
-this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(attachTo,event,handleKeyPress);this.enabledEvent.fire(keyData);}
-this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(attachTo,event,handleKeyPress);this.disabledEvent.fire(keyData);}
-this.enabled=false;};this.toString=function(){return"KeyListener ["+keyData.keys+"] "+attachTo.tagName+(attachTo.id?"["+attachTo.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.prototype.enabled=null;YAHOO.util.KeyListener.prototype.enable=function(){};YAHOO.util.KeyListener.prototype.disable=function(){};YAHOO.util.KeyListener.prototype.enabledEvent=null;YAHOO.util.KeyListener.prototype.disabledEvent=null;YAHOO.widget.Tooltip=function(el,userConfig){YAHOO.widget.Tooltip.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Tooltip,YAHOO.widget.Overlay);YAHOO.widget.Tooltip.CSS_TOOLTIP="tt";YAHOO.widget.Tooltip.prototype.init=function(el,userConfig){if(document.readyState&&document.readyState!="complete"){var deferredInit=function(){this.init(el,userConfig);};YAHOO.util.Event.addListener(window,"load",deferredInit,this,true);}else{YAHOO.widget.Tooltip.superclass.init.call(this,el);this.
 beforeInitEvent.fire(YAHOO.widget.Tooltip);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Tooltip.CSS_TOOLTIP);if(userConfig){this.cfg.applyConfig(userConfig,true);}
-this.cfg.queueProperty("visible",false);this.cfg.queueProperty("constraintoviewport",true);this.setBody("");this.render(this.cfg.getProperty("container"));this.initEvent.fire(YAHOO.widget.Tooltip);}};YAHOO.widget.Tooltip.prototype.initDefaultConfig=function(){YAHOO.widget.Tooltip.superclass.initDefaultConfig.call(this);this.cfg.addProperty("preventoverlap",{value:true,validator:this.cfg.checkBoolean,supercedes:["x","y","xy"]});this.cfg.addProperty("showdelay",{value:200,handler:this.configShowDelay,validator:this.cfg.checkNumber});this.cfg.addProperty("autodismissdelay",{value:5000,handler:this.configAutoDismissDelay,validator:this.cfg.checkNumber});this.cfg.addProperty("hidedelay",{value:250,handler:this.configHideDelay,validator:this.cfg.checkNumber});this.cfg.addProperty("text",{handler:this.configText,suppressEvent:true});this.cfg.addProperty("container",{value:document.body,handler:this.configContainer});};YAHOO.widget.Tooltip.prototype.configText=function(type,args,obj
 ){var text=args[0];if(text){this.setBody(text);}};YAHOO.widget.Tooltip.prototype.configContainer=function(type,args,obj){var container=args[0];if(typeof container=='string'){this.cfg.setProperty("container",document.getElementById(container),true);}};YAHOO.widget.Tooltip.prototype.configContext=function(type,args,obj){var context=args[0];if(context){if(!(context instanceof Array)){if(typeof context=="string"){this.cfg.setProperty("context",[document.getElementById(context)],true);}else{this.cfg.setProperty("context",[context],true);}
-context=this.cfg.getProperty("context");}
-if(this._context){for(var c=0;c<this._context.length;++c){var el=this._context[c];YAHOO.util.Event.removeListener(el,"mouseover",this.onContextMouseOver);YAHOO.util.Event.removeListener(el,"mousemove",this.onContextMouseMove);YAHOO.util.Event.removeListener(el,"mouseout",this.onContextMouseOut);}}
-this._context=context;for(var d=0;d<this._context.length;++d){var el2=this._context[d];YAHOO.util.Event.addListener(el2,"mouseover",this.onContextMouseOver,this);YAHOO.util.Event.addListener(el2,"mousemove",this.onContextMouseMove,this);YAHOO.util.Event.addListener(el2,"mouseout",this.onContextMouseOut,this);}}};YAHOO.widget.Tooltip.prototype.onContextMouseMove=function(e,obj){obj.pageX=YAHOO.util.Event.getPageX(e);obj.pageY=YAHOO.util.Event.getPageY(e);};YAHOO.widget.Tooltip.prototype.onContextMouseOver=function(e,obj){if(obj.hideProcId){clearTimeout(obj.hideProcId);obj.hideProcId=null;}
-var context=this;YAHOO.util.Event.addListener(context,"mousemove",obj.onContextMouseMove,obj);if(context.title){obj._tempTitle=context.title;context.title="";}
-obj.showProcId=obj.doShow(e,context);};YAHOO.widget.Tooltip.prototype.onContextMouseOut=function(e,obj){var el=this;if(obj._tempTitle){el.title=obj._tempTitle;obj._tempTitle=null;}
-if(obj.showProcId){clearTimeout(obj.showProcId);obj.showProcId=null;}
-if(obj.hideProcId){clearTimeout(obj.hideProcId);obj.hideProcId=null;}
-obj.hideProcId=setTimeout(function(){obj.hide();},obj.cfg.getProperty("hidedelay"));};YAHOO.widget.Tooltip.prototype.doShow=function(e,context){var yOffset=25;if(this.browser=="opera"&&context.tagName=="A"){yOffset+=12;}
-var me=this;return setTimeout(function(){if(me._tempTitle){me.setBody(me._tempTitle);}else{me.cfg.refireEvent("text");}
-me.moveTo(me.pageX,me.pageY+yOffset);if(me.cfg.getProperty("preventoverlap")){me.preventOverlap(me.pageX,me.pageY);}
-YAHOO.util.Event.removeListener(context,"mousemove",me.onContextMouseMove);me.show();me.hideProcId=me.doHide();},this.cfg.getProperty("showdelay"));};YAHOO.widget.Tooltip.prototype.doHide=function(){var me=this;return setTimeout(function(){me.hide();},this.cfg.getProperty("autodismissdelay"));};YAHOO.widget.Tooltip.prototype.preventOverlap=function(pageX,pageY){var height=this.element.offsetHeight;var elementRegion=YAHOO.util.Dom.getRegion(this.element);elementRegion.top-=5;elementRegion.left-=5;elementRegion.right+=5;elementRegion.bottom+=5;var mousePoint=new YAHOO.util.Point(pageX,pageY);if(elementRegion.contains(mousePoint)){this.cfg.setProperty("y",(pageY-height-5));}};YAHOO.widget.Tooltip.prototype.toString=function(){return"Tooltip "+this.id;};YAHOO.widget.Panel=function(el,userConfig){YAHOO.widget.Panel.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Panel,YAHOO.widget.Overlay);YAHOO.widget.Panel.CSS_PANEL="panel";YAHOO.widget.Panel.CSS_PAN
 EL_CONTAINER="panel-container";YAHOO.widget.Panel.prototype.showMaskEvent=null;YAHOO.widget.Panel.prototype.hideMaskEvent=null;YAHOO.widget.Panel.prototype.init=function(el,userConfig){YAHOO.widget.Panel.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Panel);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Panel.CSS_PANEL);this.buildWrapper();if(userConfig){this.cfg.applyConfig(userConfig,true);}
-this.beforeRenderEvent.subscribe(function(){var draggable=this.cfg.getProperty("draggable");if(draggable){if(!this.header){this.setHeader("&nbsp;");}}},this,true);var me=this;this.showMaskEvent.subscribe(function(){var checkFocusable=function(el){if(el.tagName=="A"||el.tagName=="BUTTON"||el.tagName=="SELECT"||el.tagName=="INPUT"||el.tagName=="TEXTAREA"||el.tagName=="FORM"){if(!YAHOO.util.Dom.isAncestor(me.element,el)){YAHOO.util.Event.addListener(el,"focus",el.blur);return true;}}else{return false;}};this.focusableElements=YAHOO.util.Dom.getElementsBy(checkFocusable);},this,true);this.hideMaskEvent.subscribe(function(){for(var i=0;i<this.focusableElements.length;i++){var el2=this.focusableElements[i];YAHOO.util.Event.removeListener(el2,"focus",el2.blur);}},this,true);this.initEvent.fire(YAHOO.widget.Panel);};YAHOO.widget.Panel.prototype.initEvents=function(){YAHOO.widget.Panel.superclass.initEvents.call(this);this.showMaskEvent=new YAHOO.util.CustomEvent("showMask");this.hid
 eMaskEvent=new YAHOO.util.CustomEvent("hideMask");this.dragEvent=new YAHOO.util.CustomEvent("drag");};YAHOO.widget.Panel.prototype.initDefaultConfig=function(){YAHOO.widget.Panel.superclass.initDefaultConfig.call(this);this.cfg.addProperty("close",{value:true,handler:this.configClose,validator:this.cfg.checkBoolean,supercedes:["visible"]});this.cfg.addProperty("draggable",{value:true,handler:this.configDraggable,validator:this.cfg.checkBoolean,supercedes:["visible"]});this.cfg.addProperty("underlay",{value:"shadow",handler:this.configUnderlay,supercedes:["visible"]});this.cfg.addProperty("modal",{value:false,handler:this.configModal,validator:this.cfg.checkBoolean,supercedes:["visible"]});this.cfg.addProperty("keylisteners",{handler:this.configKeyListeners,suppressEvent:true,supercedes:["visible"]});};YAHOO.widget.Panel.prototype.configClose=function(type,args,obj){var val=args[0];var doHide=function(e,obj){obj.hide();};if(val){if(!this.close){this.close=document.createEleme
 nt("DIV");YAHOO.util.Dom.addClass(this.close,"close");if(this.isSecure){YAHOO.util.Dom.addClass(this.close,"secure");}else{YAHOO.util.Dom.addClass(this.close,"nonsecure");}
-this.close.innerHTML="&nbsp;";this.innerElement.appendChild(this.close);YAHOO.util.Event.addListener(this.close,"click",doHide,this);}else{this.close.style.display="block";}}else{if(this.close){this.close.style.display="none";}}};YAHOO.widget.Panel.prototype.configDraggable=function(type,args,obj){var val=args[0];if(val){if(this.header){YAHOO.util.Dom.setStyle(this.header,"cursor","move");this.registerDragDrop();}}else{if(this.dd){this.dd.unreg();}
-if(this.header){YAHOO.util.Dom.setStyle(this.header,"cursor","auto");}}};YAHOO.widget.Panel.prototype.configUnderlay=function(type,args,obj){var val=args[0];switch(val.toLowerCase()){case"shadow":YAHOO.util.Dom.removeClass(this.element,"matte");YAHOO.util.Dom.addClass(this.element,"shadow");if(!this.underlay){this.underlay=document.createElement("DIV");this.underlay.className="underlay";this.underlay.innerHTML="&nbsp;";this.element.appendChild(this.underlay);}
-this.sizeUnderlay();break;case"matte":YAHOO.util.Dom.removeClass(this.element,"shadow");YAHOO.util.Dom.addClass(this.element,"matte");break;default:YAHOO.util.Dom.removeClass(this.element,"shadow");YAHOO.util.Dom.removeClass(this.element,"matte");break;}};YAHOO.widget.Panel.prototype.configModal=function(type,args,obj){var modal=args[0];if(modal){this.buildMask();if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMask,this)){this.showEvent.subscribe(this.showMask,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMask,this)){this.hideEvent.subscribe(this.hideMask,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.sizeMask,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.sizeMask,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.destroyEvent,this.removeMask,this)){this.destroyEvent.subscribe(this.removeMask,this,true);}}else{this.beforeShowEvent.unsubscribe(this.showMask,this);this.hideEvent.unsubscribe(this.hideMask,this);YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.sizeMask,this);this.destroyEvent.unsubscribe(this.removeMask,this);}};YAHOO.widget.Panel.prototype.removeMask=function(){if(this.mask){if(this.mask.parentNode){this.mask.parentNode.removeChild(this.mask);}
-this.mask=null;}}
-YAHOO.widget.Panel.prototype.configKeyListeners=function(type,args,obj){var listeners=args[0];if(listeners){if(listeners instanceof Array){for(var i=0;i<listeners.length;i++){var listener=listeners[i];if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,listener.enable,listener)){this.showEvent.subscribe(listener.enable,listener,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,listener.disable,listener)){this.hideEvent.subscribe(listener.disable,listener,true);this.destroyEvent.subscribe(listener.disable,listener,true);}}}else{if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,listeners.enable,listeners)){this.showEvent.subscribe(listeners.enable,listeners,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,listeners.disable,listeners)){this.hideEvent.subscribe(listeners.disable,listeners,true);this.destroyEvent.subscribe(listeners.disable,listeners,true);}}}};YAHOO.widget.Panel.prototype.buildWrapper=function(){var elementParent=this.element.parentNode;var elementClone=this.element.cloneNode(true);this.innerElement=elementClone;this.innerElement.style.visibility="inherit";YAHOO.util.Dom.addClass(this.innerElement,YAHOO.widget.Panel.CSS_PANEL);var wrapper=document.createElement("DIV");wrapper.className=YAHOO.widget.Panel.CSS_PANEL_CONTAINER;wrapper.id=elementClone.id+"_c";wrapper.appendChild(elementClone);if(elementParent){elementParent.replaceChild(wrapper,this.element);}
-this.element=wrapper;var childNodes=this.innerElement.childNodes;if(childNodes){for(var i=0;i<childNodes.length;i++){var child=childNodes[i];switch(child.className){case YAHOO.widget.Module.CSS_HEADER:this.header=child;break;case YAHOO.widget.Module.CSS_BODY:this.body=child;break;case YAHOO.widget.Module.CSS_FOOTER:this.footer=child;break;}}}
-this.initDefaultConfig();};YAHOO.widget.Panel.prototype.sizeUnderlay=function(){if(this.underlay&&this.browser!="gecko"&&this.browser!="safari"){this.underlay.style.width=this.innerElement.offsetWidth+"px";this.underlay.style.height=this.innerElement.offsetHeight+"px";}};YAHOO.widget.Panel.prototype.onDomResize=function(e,obj){YAHOO.widget.Panel.superclass.onDomResize.call(this,e,obj);var me=this;setTimeout(function(){me.sizeUnderlay();},0);};YAHOO.widget.Panel.prototype.registerDragDrop=function(){if(this.header){this.dd=new YAHOO.util.DD(this.element.id,this.id);if(!this.header.id){this.header.id=this.id+"_h";}
-var me=this;this.dd.startDrag=function(){if(me.browser=="ie"){YAHOO.util.Dom.addClass(me.element,"drag");}
-if(me.cfg.getProperty("constraintoviewport")){var offsetHeight=me.element.offsetHeight;var offsetWidth=me.element.offsetWidth;var viewPortWidth=YAHOO.util.Dom.getViewportWidth();var viewPortHeight=YAHOO.util.Dom.getViewportHeight();var scrollX=window.scrollX||document.documentElement.scrollLeft;var scrollY=window.scrollY||document.documentElement.scrollTop;var topConstraint=scrollY+10;var leftConstraint=scrollX+10;var bottomConstraint=scrollY+viewPortHeight-offsetHeight-10;var rightConstraint=scrollX+viewPortWidth-offsetWidth-10;this.minX=leftConstraint;this.maxX=rightConstraint;this.constrainX=true;this.minY=topConstraint;this.maxY=bottomConstraint;this.constrainY=true;}else{this.constrainX=false;this.constrainY=false;}
-me.dragEvent.fire("startDrag",arguments);};this.dd.onDrag=function(){me.syncPosition();me.cfg.refireEvent("iframe");if(this.platform=="mac"&&this.browser=="gecko"){this.showMacGeckoScrollbars();}
-me.dragEvent.fire("onDrag",arguments);};this.dd.endDrag=function(){if(me.browser=="ie"){YAHOO.util.Dom.removeClass(me.element,"drag");}
-me.dragEvent.fire("endDrag",arguments);};this.dd.setHandleElId(this.header.id);this.dd.addInvalidHandleType("INPUT");this.dd.addInvalidHandleType("SELECT");this.dd.addInvalidHandleType("TEXTAREA");}};YAHOO.widget.Panel.prototype.buildMask=function(){if(!this.mask){this.mask=document.createElement("DIV");this.mask.id=this.id+"_mask";this.mask.className="mask";this.mask.innerHTML="&nbsp;";var maskClick=function(e,obj){YAHOO.util.Event.stopEvent(e);};var firstChild=document.body.firstChild;if(firstChild){document.body.insertBefore(this.mask,document.body.firstChild);}else{document.body.appendChild(this.mask);}}};YAHOO.widget.Panel.prototype.hideMask=function(){if(this.cfg.getProperty("modal")&&this.mask){this.mask.style.display="none";this.hideMaskEvent.fire();YAHOO.util.Dom.removeClass(document.body,"masked");}};YAHOO.widget.Panel.prototype.showMask=function(){if(this.cfg.getProperty("modal")&&this.mask){YAHOO.util.Dom.addClass(document.body,"masked");this.sizeMask();this.mask
 .style.display="block";this.showMaskEvent.fire();}};YAHOO.widget.Panel.prototype.sizeMask=function(){if(this.mask){this.mask.style.height=YAHOO.util.Dom.getDocumentHeight()+"px";this.mask.style.width=YAHOO.util.Dom.getDocumentWidth()+"px";}};YAHOO.widget.Panel.prototype.configHeight=function(type,args,obj){var height=args[0];var el=this.innerElement;YAHOO.util.Dom.setStyle(el,"height",height);this.cfg.refireEvent("underlay");this.cfg.refireEvent("iframe");};YAHOO.widget.Panel.prototype.configWidth=function(type,args,obj){var width=args[0];var el=this.innerElement;YAHOO.util.Dom.setStyle(el,"width",width);this.cfg.refireEvent("underlay");this.cfg.refireEvent("iframe");};YAHOO.widget.Panel.prototype.render=function(appendToNode){return YAHOO.widget.Panel.superclass.render.call(this,appendToNode,this.innerElement);};YAHOO.widget.Panel.prototype.toString=function(){return"Panel "+this.id;};YAHOO.widget.Dialog=function(el,userConfig){YAHOO.widget.Dialog.superclass.constructor.cal
 l(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Dialog,YAHOO.widget.Panel);YAHOO.widget.Dialog.CSS_DIALOG="dialog";YAHOO.widget.Dialog.prototype.beforeSubmitEvent=null;YAHOO.widget.Dialog.prototype.submitEvent=null;YAHOO.widget.Dialog.prototype.manualSubmitEvent=null;YAHOO.widget.Dialog.prototype.asyncSubmitEvent=null;YAHOO.widget.Dialog.prototype.formSubmitEvent=null;YAHOO.widget.Dialog.prototype.cancelEvent=null;YAHOO.widget.Dialog.prototype.initDefaultConfig=function(){YAHOO.widget.Dialog.superclass.initDefaultConfig.call(this);this.callback={success:null,failure:null,argument:null};this.doSubmit=function(){var method=this.cfg.getProperty("postmethod");switch(method){case"async":YAHOO.util.Connect.setForm(this.form);var cObj=YAHOO.util.Connect.asyncRequest('POST',this.form.action,this.callback);this.asyncSubmitEvent.fire();break;case"form":this.form.submit();this.formSubmitEvent.fire();break;case"none":case"manual":this.manualSubmitEvent.fire();break;}};this.cfg.addProp
 erty("postmethod",{value:"async",validator:function(val){if(val!="form"&&val!="async"&&val!="none"&&val!="manual"){return false;}else{return true;}}});this.cfg.addProperty("buttons",{value:"none",handler:this.configButtons});};YAHOO.widget.Dialog.prototype.initEvents=function(){YAHOO.widget.Dialog.superclass.initEvents.call(this);this.beforeSubmitEvent=new YAHOO.util.CustomEvent("beforeSubmit");this.submitEvent=new YAHOO.util.CustomEvent("submit");this.manualSubmitEvent=new YAHOO.util.CustomEvent("manualSubmit");this.asyncSubmitEvent=new YAHOO.util.CustomEvent("asyncSubmit");this.formSubmitEvent=new YAHOO.util.CustomEvent("formSubmit");this.cancelEvent=new YAHOO.util.CustomEvent("cancel");};YAHOO.widget.Dialog.prototype.init=function(el,userConfig){YAHOO.widget.Dialog.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Dialog);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Dialog.CSS_DIALOG);this.cfg.setProperty("visible",false);if(userConfig){this.cfg.ap
 plyConfig(userConfig,true);}
-this.renderEvent.subscribe(this.registerForm,this,true);this.showEvent.subscribe(this.focusFirst,this,true);this.beforeHideEvent.subscribe(this.blurButtons,this,true);this.beforeRenderEvent.subscribe(function(){var buttonCfg=this.cfg.getProperty("buttons");if(buttonCfg&&buttonCfg!="none"){if(!this.footer){this.setFooter("");}}},this,true);this.initEvent.fire(YAHOO.widget.Dialog);};YAHOO.widget.Dialog.prototype.registerForm=function(){var form=this.element.getElementsByTagName("FORM")[0];if(!form){var formHTML="<form name=\"frm_"+this.id+"\" action=\"\"></form>";this.body.innerHTML+=formHTML;form=this.element.getElementsByTagName("FORM")[0];}
-this.firstFormElement=function(){for(var f=0;f<form.elements.length;f++){var el=form.elements[f];if(el.focus){if(el.type&&el.type!="hidden"){return el;}}}
-return null;}();this.lastFormElement=function(){for(var f=form.elements.length-1;f>=0;f--){var el=form.elements[f];if(el.focus){if(el.type&&el.type!="hidden"){return el;}}}
-return null;}();this.form=form;if(this.cfg.getProperty("modal")&&this.form){var me=this;var firstElement=this.firstFormElement||this.firstButton;if(firstElement){this.preventBackTab=new YAHOO.util.KeyListener(firstElement,{shift:true,keys:9},{fn:me.focusLast,scope:me,correctScope:true});this.showEvent.subscribe(this.preventBackTab.enable,this.preventBackTab,true);this.hideEvent.subscribe(this.preventBackTab.disable,this.preventBackTab,true);}
-var lastElement=this.lastButton||this.lastFormElement;if(lastElement){this.preventTabOut=new YAHOO.util.KeyListener(lastElement,{shift:false,keys:9},{fn:me.focusFirst,scope:me,correctScope:true});this.showEvent.subscribe(this.preventTabOut.enable,this.preventTabOut,true);this.hideEvent.subscribe(this.preventTabOut.disable,this.preventTabOut,true);}}};YAHOO.widget.Dialog.prototype.configButtons=function(type,args,obj){var buttons=args[0];if(buttons!="none"){this.buttonSpan=null;this.buttonSpan=document.createElement("SPAN");this.buttonSpan.className="button-group";for(var b=0;b<buttons.length;b++){var button=buttons[b];var htmlButton=document.createElement("BUTTON");htmlButton.setAttribute("type","button");if(button.isDefault){htmlButton.className="default";this.defaultHtmlButton=htmlButton;}
-htmlButton.appendChild(document.createTextNode(button.text));YAHOO.util.Event.addListener(htmlButton,"click",button.handler,this,true);this.buttonSpan.appendChild(htmlButton);button.htmlButton=htmlButton;if(b===0){this.firstButton=button.htmlButton;}
-if(b==(buttons.length-1)){this.lastButton=button.htmlButton;}}
-this.setFooter(this.buttonSpan);this.cfg.refireEvent("iframe");this.cfg.refireEvent("underlay");}else{if(this.buttonSpan){if(this.buttonSpan.parentNode){this.buttonSpan.parentNode.removeChild(this.buttonSpan);}
-this.buttonSpan=null;this.firstButton=null;this.lastButton=null;this.defaultHtmlButton=null;}}};YAHOO.widget.Dialog.prototype.configOnSuccess=function(type,args,obj){};YAHOO.widget.Dialog.prototype.configOnFailure=function(type,args,obj){};YAHOO.widget.Dialog.prototype.doSubmit=function(){};YAHOO.widget.Dialog.prototype.focusFirst=function(type,args,obj){if(args){var e=args[1];if(e){YAHOO.util.Event.stopEvent(e);}}
-if(this.firstFormElement){this.firstFormElement.focus();}else{this.focusDefaultButton();}};YAHOO.widget.Dialog.prototype.focusLast=function(type,args,obj){if(args){var e=args[1];if(e){YAHOO.util.Event.stopEvent(e);}}
-var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){this.focusLastButton();}else{if(this.lastFormElement){this.lastFormElement.focus();}}};YAHOO.widget.Dialog.prototype.focusDefaultButton=function(){if(this.defaultHtmlButton){this.defaultHtmlButton.focus();}};YAHOO.widget.Dialog.prototype.blurButtons=function(){var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){var html=buttons[0].htmlButton;if(html){html.blur();}}};YAHOO.widget.Dialog.prototype.focusFirstButton=function(){var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){var html=buttons[0].htmlButton;if(html){html.focus();}}};YAHOO.widget.Dialog.prototype.focusLastButton=function(){var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){var html=buttons[buttons.length-1].htmlButton;if(html){html.focus();}}};YAHOO.widget.Dialog.prototype.validate=function(){return true;};YAHOO.widget.Dialog.prototype.submit
 =function(){if(this.validate()){this.beforeSubmitEvent.fire();this.doSubmit();this.submitEvent.fire();this.hide();return true;}else{return false;}};YAHOO.widget.Dialog.prototype.cancel=function(){this.cancelEvent.fire();this.hide();};YAHOO.widget.Dialog.prototype.getData=function(){var form=this.form;var data={};if(form){for(var i in this.form){var formItem=form[i];if(formItem){if(formItem.tagName){switch(formItem.tagName){case"INPUT":switch(formItem.type){case"checkbox":data[i]=formItem.checked;break;case"textbox":case"text":case"hidden":data[i]=formItem.value;break;}
-break;case"TEXTAREA":data[i]=formItem.value;break;case"SELECT":var val=[];for(var x=0;x<formItem.options.length;x++){var option=formItem.options[x];if(option.selected){var selval=option.value;if(!selval||selval===""){selval=option.text;}
-val[val.length]=selval;}}
-data[i]=val;break;}}else if(formItem[0]&&formItem[0].tagName){switch(formItem[0].tagName){case"INPUT":switch(formItem[0].type){case"radio":for(var r=0;r<formItem.length;r++){var radio=formItem[r];if(radio.checked){data[radio.name]=radio.value;break;}}
-break;case"checkbox":var cbArray=[];for(var c=0;c<formItem.length;c++){var check=formItem[c];if(check.checked){cbArray[cbArray.length]=check.value;}}
-data[formItem[0].name]=cbArray;break;}}}}}}
-return data;};YAHOO.widget.Dialog.prototype.toString=function(){return"Dialog "+this.id;};YAHOO.widget.SimpleDialog=function(el,userConfig){YAHOO.widget.SimpleDialog.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.SimpleDialog,YAHOO.widget.Dialog);YAHOO.widget.SimpleDialog.ICON_BLOCK="nt/ic/ut/bsc/blck16_1.gif";YAHOO.widget.SimpleDialog.ICON_ALARM="nt/ic/ut/bsc/alrt16_1.gif";YAHOO.widget.SimpleDialog.ICON_HELP="nt/ic/ut/bsc/hlp16_1.gif";YAHOO.widget.SimpleDialog.ICON_INFO="nt/ic/ut/bsc/info16_1.gif";YAHOO.widget.SimpleDialog.ICON_WARN="nt/ic/ut/bsc/warn16_1.gif";YAHOO.widget.SimpleDialog.ICON_TIP="nt/ic/ut/bsc/tip16_1.gif";YAHOO.widget.SimpleDialog.CSS_SIMPLEDIALOG="simple-dialog";YAHOO.widget.SimpleDialog.prototype.initDefaultConfig=function(){YAHOO.widget.SimpleDialog.superclass.initDefaultConfig.call(this);this.cfg.addProperty("icon",{value:"none",handler:this.configIcon,suppressEvent:true});this.cfg.addProperty("text",{value:"",handler:this.co
 nfigText,suppressEvent:true,supercedes:["icon"]});};YAHOO.widget.SimpleDialog.prototype.init=function(el,userConfig){YAHOO.widget.SimpleDialog.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.SimpleDialog);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.SimpleDialog.CSS_SIMPLEDIALOG);this.cfg.queueProperty("postmethod","manual");if(userConfig){this.cfg.applyConfig(userConfig,true);}
-this.beforeRenderEvent.subscribe(function(){if(!this.body){this.setBody("");}},this,true);this.initEvent.fire(YAHOO.widget.SimpleDialog);};YAHOO.widget.SimpleDialog.prototype.registerForm=function(){YAHOO.widget.SimpleDialog.superclass.registerForm.call(this);this.form.innerHTML+="<input type=\"hidden\" name=\""+this.id+"\" value=\"\"/>";};YAHOO.widget.SimpleDialog.prototype.configIcon=function(type,args,obj){var icon=args[0];if(icon&&icon!="none"){var iconHTML="<img src=\""+this.imageRoot+icon+"\" class=\"icon\" />";this.body.innerHTML=iconHTML+this.body.innerHTML;}};YAHOO.widget.SimpleDialog.prototype.configText=function(type,args,obj){var text=args[0];if(text){this.setBody(text);this.cfg.refireEvent("icon");}};YAHOO.widget.SimpleDialog.prototype.toString=function(){return"SimpleDialog "+this.id;};YAHOO.widget.ContainerEffect=function(overlay,attrIn,attrOut,targetElement,animClass){if(!animClass){animClass=YAHOO.util.Anim;}
-this.overlay=overlay;this.attrIn=attrIn;this.attrOut=attrOut;this.targetElement=targetElement||overlay.element;this.animClass=animClass;};YAHOO.widget.ContainerEffect.prototype.init=function(){this.beforeAnimateInEvent=new YAHOO.util.CustomEvent("beforeAnimateIn");this.beforeAnimateOutEvent=new YAHOO.util.CustomEvent("beforeAnimateOut");this.animateInCompleteEvent=new YAHOO.util.CustomEvent("animateInComplete");this.animateOutCompleteEvent=new YAHOO.util.CustomEvent("animateOutComplete");this.animIn=new this.animClass(this.targetElement,this.attrIn.attributes,this.attrIn.duration,this.attrIn.method);this.animIn.onStart.subscribe(this.handleStartAnimateIn,this);this.animIn.onTween.subscribe(this.handleTweenAnimateIn,this);this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn,this);this.animOut=new this.animClass(this.targetElement,this.attrOut.attributes,this.attrOut.duration,this.attrOut.method);this.animOut.onStart.subscribe(this.handleStartAnimateOut,this);this.ani
 mOut.onTween.subscribe(this.handleTweenAnimateOut,this);this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut,this);};YAHOO.widget.ContainerEffect.prototype.animateIn=function(){this.beforeAnimateInEvent.fire();this.animIn.animate();};YAHOO.widget.ContainerEffect.prototype.animateOut=function(){this.beforeAnimateOutEvent.fire();this.animOut.animate();};YAHOO.widget.ContainerEffect.prototype.handleStartAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleStartAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.toString=function(){var output="ContainerEffect";if(this.ove
 rlay){output+=" ["+this.overlay.toString()+"]";}
-return output;};YAHOO.widget.ContainerEffect.FADE=function(overlay,dur){var fade=new YAHOO.widget.ContainerEffect(overlay,{attributes:{opacity:{from:0,to:1}},duration:dur,method:YAHOO.util.Easing.easeIn},{attributes:{opacity:{to:0}},duration:dur,method:YAHOO.util.Easing.easeOut},overlay.element);fade.handleStartAnimateIn=function(type,args,obj){YAHOO.util.Dom.addClass(obj.overlay.element,"hide-select");if(!obj.overlay.underlay){obj.overlay.cfg.refireEvent("underlay");}
-if(obj.overlay.underlay){obj.initialUnderlayOpacity=YAHOO.util.Dom.getStyle(obj.overlay.underlay,"opacity");obj.overlay.underlay.style.filter=null;}
-YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","visible");YAHOO.util.Dom.setStyle(obj.overlay.element,"opacity",0);};fade.handleCompleteAnimateIn=function(type,args,obj){YAHOO.util.Dom.removeClass(obj.overlay.element,"hide-select");if(obj.overlay.element.style.filter){obj.overlay.element.style.filter=null;}
-if(obj.overlay.underlay){YAHOO.util.Dom.setStyle(obj.overlay.underlay,"opacity",obj.initialUnderlayOpacity);}
-obj.overlay.cfg.refireEvent("iframe");obj.animateInCompleteEvent.fire();};fade.handleStartAnimateOut=function(type,args,obj){YAHOO.util.Dom.addClass(obj.overlay.element,"hide-select");if(obj.overlay.underlay){obj.overlay.underlay.style.filter=null;}};fade.handleCompleteAnimateOut=function(type,args,obj){YAHOO.util.Dom.removeClass(obj.overlay.element,"hide-select");if(obj.overlay.element.style.filter){obj.overlay.element.style.filter=null;}
-YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","hidden");YAHOO.util.Dom.setStyle(obj.overlay.element,"opacity",1);obj.overlay.cfg.refireEvent("iframe");obj.animateOutCompleteEvent.fire();};fade.init();return fade;};YAHOO.widget.ContainerEffect.SLIDE=function(overlay,dur){var x=overlay.cfg.getProperty("x")||YAHOO.util.Dom.getX(overlay.element);var y=overlay.cfg.getProperty("y")||YAHOO.util.Dom.getY(overlay.element);var clientWidth=YAHOO.util.Dom.getClientWidth();var offsetWidth=overlay.element.offsetWidth;var slide=new YAHOO.widget.ContainerEffect(overlay,{attributes:{points:{to:[x,y]}},duration:dur,method:YAHOO.util.Easing.easeIn},{attributes:{points:{to:[(clientWidth+25),y]}},duration:dur,method:YAHOO.util.Easing.easeOut},overlay.element,YAHOO.util.Motion);slide.handleStartAnimateIn=function(type,args,obj){obj.overlay.element.style.left=(-25-offsetWidth)+"px";obj.overlay.element.style.top=y+"px";};slide.handleTweenAnimateIn=function(type,args,obj){var pos=YAHOO.ut
 il.Dom.getXY(obj.overlay.element);var currentX=pos[0];var currentY=pos[1];if(YAHOO.util.Dom.getStyle(obj.overlay.element,"visibility")=="hidden"&&currentX<x){YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","visible");}
-obj.overlay.cfg.setProperty("xy",[currentX,currentY],true);obj.overlay.cfg.refireEvent("iframe");};slide.handleCompleteAnimateIn=function(type,args,obj){obj.overlay.cfg.setProperty("xy",[x,y],true);obj.startX=x;obj.startY=y;obj.overlay.cfg.refireEvent("iframe");obj.animateInCompleteEvent.fire();};slide.handleStartAnimateOut=function(type,args,obj){var clientWidth=YAHOO.util.Dom.getViewportWidth();var pos=YAHOO.util.Dom.getXY(obj.overlay.element);var x=pos[0];var y=pos[1];var currentTo=obj.animOut.attributes.points.to;obj.animOut.attributes.points.to=[(clientWidth+25),y];};slide.handleTweenAnimateOut=function(type,args,obj){var pos=YAHOO.util.Dom.getXY(obj.overlay.element);var x=pos[0];var y=pos[1];obj.overlay.cfg.setProperty("xy",[x,y],true);obj.overlay.cfg.refireEvent("iframe");};slide.handleCompleteAnimateOut=function(type,args,obj){YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","hidden");var offsetWidth=obj.overlay.element.offsetWidth;obj.overlay.cfg.setProperty
 ("xy",[x,y]);obj.animateOutCompleteEvent.fire();};slide.init();return slide;};
\ No newline at end of file
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+
+YAHOO.util.Config=function(owner){if(owner){this.init(owner);}};YAHOO.util.Config.CONFIG_CHANGED_EVENT="configChanged";YAHOO.util.Config.BOOLEAN_TYPE="boolean";YAHOO.util.Config.prototype={owner:null,queueInProgress:false,config:null,initialConfig:null,eventQueue:null,configChangedEvent:null,checkBoolean:function(val){return(typeof val==YAHOO.util.Config.BOOLEAN_TYPE);},checkNumber:function(val){return(!isNaN(val));},fireEvent:function(key,value){var property=this.config[key];if(property&&property.event){property.event.fire(value);}},addProperty:function(key,propertyObject){key=key.toLowerCase();this.config[key]=propertyObject;propertyObject.event=new YAHOO.util.CustomEvent(key,this.owner);propertyObject.key=key;if(propertyObject.handler){propertyObject.event.subscribe(propertyObject.handler,this.owner);}
+this.setProperty(key,propertyObject.value,true);if(!propertyObject.suppressEvent){this.queueProperty(key,propertyObject.value);}},getConfig:function(){var cfg={};for(var prop in this.config){var property=this.config[prop];if(property&&property.event){cfg[prop]=property.value;}}
+return cfg;},getProperty:function(key){var property=this.config[key.toLowerCase()];if(property&&property.event){return property.value;}else{return undefined;}},resetProperty:function(key){key=key.toLowerCase();var property=this.config[key];if(property&&property.event){if(this.initialConfig[key]&&!YAHOO.lang.isUndefined(this.initialConfig[key])){this.setProperty(key,this.initialConfig[key]);}
+return true;}else{return false;}},setProperty:function(key,value,silent){key=key.toLowerCase();if(this.queueInProgress&&!silent){this.queueProperty(key,value);return true;}else{var property=this.config[key];if(property&&property.event){if(property.validator&&!property.validator(value)){return false;}else{property.value=value;if(!silent){this.fireEvent(key,value);this.configChangedEvent.fire([key,value]);}
+return true;}}else{return false;}}},queueProperty:function(key,value){key=key.toLowerCase();var property=this.config[key];if(property&&property.event){if(!YAHOO.lang.isUndefined(value)&&property.validator&&!property.validator(value)){return false;}else{if(!YAHOO.lang.isUndefined(value)){property.value=value;}else{value=property.value;}
+var foundDuplicate=false;var iLen=this.eventQueue.length;for(var i=0;i<iLen;i++){var queueItem=this.eventQueue[i];if(queueItem){var queueItemKey=queueItem[0];var queueItemValue=queueItem[1];if(queueItemKey==key){this.eventQueue[i]=null;this.eventQueue.push([key,(!YAHOO.lang.isUndefined(value)?value:queueItemValue)]);foundDuplicate=true;break;}}}
+if(!foundDuplicate&&!YAHOO.lang.isUndefined(value)){this.eventQueue.push([key,value]);}}
+if(property.supercedes){var sLen=property.supercedes.length;for(var s=0;s<sLen;s++){var supercedesCheck=property.supercedes[s];var qLen=this.eventQueue.length;for(var q=0;q<qLen;q++){var queueItemCheck=this.eventQueue[q];if(queueItemCheck){var queueItemCheckKey=queueItemCheck[0];var queueItemCheckValue=queueItemCheck[1];if(queueItemCheckKey==supercedesCheck.toLowerCase()){this.eventQueue.push([queueItemCheckKey,queueItemCheckValue]);this.eventQueue[q]=null;break;}}}}}
+return true;}else{return false;}},refireEvent:function(key){key=key.toLowerCase();var property=this.config[key];if(property&&property.event&&!YAHOO.lang.isUndefined(property.value)){if(this.queueInProgress){this.queueProperty(key);}else{this.fireEvent(key,property.value);}}},applyConfig:function(userConfig,init){if(init){this.initialConfig=userConfig;}
+for(var prop in userConfig){this.queueProperty(prop,userConfig[prop]);}},refresh:function(){for(var prop in this.config){this.refireEvent(prop);}},fireQueue:function(){this.queueInProgress=true;for(var i=0;i<this.eventQueue.length;i++){var queueItem=this.eventQueue[i];if(queueItem){var key=queueItem[0];var value=queueItem[1];var property=this.config[key];property.value=value;this.fireEvent(key,value);}}
+this.queueInProgress=false;this.eventQueue=[];},subscribeToConfigEvent:function(key,handler,obj,override){var property=this.config[key.toLowerCase()];if(property&&property.event){if(!YAHOO.util.Config.alreadySubscribed(property.event,handler,obj)){property.event.subscribe(handler,obj,override);}
+return true;}else{return false;}},unsubscribeFromConfigEvent:function(key,handler,obj){var property=this.config[key.toLowerCase()];if(property&&property.event){return property.event.unsubscribe(handler,obj);}else{return false;}},toString:function(){var output="Config";if(this.owner){output+=" ["+this.owner.toString()+"]";}
+return output;},outputEventQueue:function(){var output="";for(var q=0;q<this.eventQueue.length;q++){var queueItem=this.eventQueue[q];if(queueItem){output+=queueItem[0]+"="+queueItem[1]+", ";}}
+return output;}};YAHOO.util.Config.prototype.init=function(owner){this.owner=owner;this.configChangedEvent=new YAHOO.util.CustomEvent(YAHOO.util.CONFIG_CHANGED_EVENT,this);this.queueInProgress=false;this.config={};this.initialConfig={};this.eventQueue=[];};YAHOO.util.Config.alreadySubscribed=function(evt,fn,obj){for(var e=0;e<evt.subscribers.length;e++){var subsc=evt.subscribers[e];if(subsc&&subsc.obj==obj&&subsc.fn==fn){return true;}}
+return false;};YAHOO.widget.Module=function(el,userConfig){if(el){this.init(el,userConfig);}else{}};YAHOO.widget.Module.IMG_ROOT=null;YAHOO.widget.Module.IMG_ROOT_SSL=null;YAHOO.widget.Module.CSS_MODULE="yui-module";YAHOO.widget.Module.CSS_HEADER="hd";YAHOO.widget.Module.CSS_BODY="bd";YAHOO.widget.Module.CSS_FOOTER="ft";YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL="javascript:false;";YAHOO.widget.Module.textResizeEvent=new YAHOO.util.CustomEvent("textResize");YAHOO.widget.Module._EVENT_TYPES={"BEFORE_INIT":"beforeInit","INIT":"init","APPEND":"append","BEFORE_RENDER":"beforeRender","RENDER":"render","CHANGE_HEADER":"changeHeader","CHANGE_BODY":"changeBody","CHANGE_FOOTER":"changeFooter","CHANGE_CONTENT":"changeContent","DESTORY":"destroy","BEFORE_SHOW":"beforeShow","SHOW":"show","BEFORE_HIDE":"beforeHide","HIDE":"hide"};YAHOO.widget.Module._DEFAULT_CONFIG={"VISIBLE":{key:"visible",value:true,validator:YAHOO.lang.isBoolean},"EFFECT":{key:"effect",suppressEvent:true,supercedes
 :["visible"]},"MONITOR_RESIZE":{key:"monitorresize",value:true}};YAHOO.widget.Module.prototype={constructor:YAHOO.widget.Module,element:null,header:null,body:null,footer:null,id:null,imageRoot:YAHOO.widget.Module.IMG_ROOT,initEvents:function(){var EVENT_TYPES=YAHOO.widget.Module._EVENT_TYPES;this.beforeInitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_INIT,this);this.initEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.INIT,this);this.appendEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.APPEND,this);this.beforeRenderEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_RENDER,this);this.renderEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.RENDER,this);this.changeHeaderEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_HEADER,this);this.changeBodyEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_BODY,this);this.changeFooterEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_FOOTER,this);this.changeContentEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_CONTENT,this);this.de
 stroyEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.DESTORY,this);this.beforeShowEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_SHOW,this);this.showEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.SHOW,this);this.beforeHideEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_HIDE,this);this.hideEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.HIDE,this);},platform:function(){var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1){return"windows";}else if(ua.indexOf("macintosh")!=-1){return"mac";}else{return false;}}(),browser:function(){var ua=navigator.userAgent.toLowerCase();if(ua.indexOf('opera')!=-1){return'opera';}else if(ua.indexOf('msie 7')!=-1){return'ie7';}else if(ua.indexOf('msie')!=-1){return'ie';}else if(ua.indexOf('safari')!=-1){return'safari';}else if(ua.indexOf('gecko')!=-1){return'gecko';}else{return false;}}(),isSecure:function(){if(window.location.href.toLowerCase().indexOf("https")===0){return true;}else{return false;}}(),
 initDefaultConfig:function(){var DEFAULT_CONFIG=YAHOO.widget.Module._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.VISIBLE.key,{handler:this.configVisible,value:DEFAULT_CONFIG.VISIBLE.value,validator:DEFAULT_CONFIG.VISIBLE.validator});this.cfg.addProperty(DEFAULT_CONFIG.EFFECT.key,{suppressEvent:DEFAULT_CONFIG.EFFECT.suppressEvent,supercedes:DEFAULT_CONFIG.EFFECT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.MONITOR_RESIZE.key,{handler:this.configMonitorResize,value:DEFAULT_CONFIG.MONITOR_RESIZE.value});},init:function(el,userConfig){this.initEvents();this.beforeInitEvent.fire(YAHOO.widget.Module);this.cfg=new YAHOO.util.Config(this);if(this.isSecure){this.imageRoot=YAHOO.widget.Module.IMG_ROOT_SSL;}
+if(typeof el=="string"){var elId=el;el=document.getElementById(el);if(!el){el=document.createElement("div");el.id=elId;}}
+this.element=el;if(el.id){this.id=el.id;}
+var childNodes=this.element.childNodes;if(childNodes){for(var i=0;i<childNodes.length;i++){var child=childNodes[i];switch(child.className){case YAHOO.widget.Module.CSS_HEADER:this.header=child;break;case YAHOO.widget.Module.CSS_BODY:this.body=child;break;case YAHOO.widget.Module.CSS_FOOTER:this.footer=child;break;}}}
+this.initDefaultConfig();YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Module.CSS_MODULE);if(userConfig){this.cfg.applyConfig(userConfig,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.renderEvent,this.cfg.fireQueue,this.cfg)){this.renderEvent.subscribe(this.cfg.fireQueue,this.cfg,true);}
+this.initEvent.fire(YAHOO.widget.Module);},initResizeMonitor:function(){if(this.browser!="opera"){var resizeMonitor=document.getElementById("_yuiResizeMonitor");if(!resizeMonitor){resizeMonitor=document.createElement("iframe");var bIE=(this.browser.indexOf("ie")===0);if(this.isSecure&&YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL&&bIE){resizeMonitor.src=YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL;}
+resizeMonitor.id="_yuiResizeMonitor";resizeMonitor.style.visibility="hidden";document.body.appendChild(resizeMonitor);resizeMonitor.style.width="10em";resizeMonitor.style.height="10em";resizeMonitor.style.position="absolute";var nLeft=-1*resizeMonitor.offsetWidth;var nTop=-1*resizeMonitor.offsetHeight;resizeMonitor.style.top=nTop+"px";resizeMonitor.style.left=nLeft+"px";resizeMonitor.style.borderStyle="none";resizeMonitor.style.borderWidth="0";YAHOO.util.Dom.setStyle(resizeMonitor,"opacity","0");resizeMonitor.style.visibility="visible";if(!bIE){var doc=resizeMonitor.contentWindow.document;doc.open();doc.close();}}
+var fireTextResize=function(){YAHOO.widget.Module.textResizeEvent.fire();};if(resizeMonitor&&resizeMonitor.contentWindow){this.resizeMonitor=resizeMonitor;YAHOO.widget.Module.textResizeEvent.subscribe(this.onDomResize,this,true);if(!YAHOO.widget.Module.textResizeInitialized){if(!YAHOO.util.Event.addListener(this.resizeMonitor.contentWindow,"resize",fireTextResize)){YAHOO.util.Event.addListener(this.resizeMonitor,"resize",fireTextResize);}
+YAHOO.widget.Module.textResizeInitialized=true;}}}},onDomResize:function(e,obj){var nLeft=-1*this.resizeMonitor.offsetWidth,nTop=-1*this.resizeMonitor.offsetHeight;this.resizeMonitor.style.top=nTop+"px";this.resizeMonitor.style.left=nLeft+"px";},setHeader:function(headerContent){if(!this.header){this.header=document.createElement("div");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
+if(typeof headerContent=="string"){this.header.innerHTML=headerContent;}else{this.header.innerHTML="";this.header.appendChild(headerContent);}
+this.changeHeaderEvent.fire(headerContent);this.changeContentEvent.fire();},appendToHeader:function(element){if(!this.header){this.header=document.createElement("div");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
+this.header.appendChild(element);this.changeHeaderEvent.fire(element);this.changeContentEvent.fire();},setBody:function(bodyContent){if(!this.body){this.body=document.createElement("div");this.body.className=YAHOO.widget.Module.CSS_BODY;}
+if(typeof bodyContent=="string")
+{this.body.innerHTML=bodyContent;}else{this.body.innerHTML="";this.body.appendChild(bodyContent);}
+this.changeBodyEvent.fire(bodyContent);this.changeContentEvent.fire();},appendToBody:function(element){if(!this.body){this.body=document.createElement("div");this.body.className=YAHOO.widget.Module.CSS_BODY;}
+this.body.appendChild(element);this.changeBodyEvent.fire(element);this.changeContentEvent.fire();},setFooter:function(footerContent){if(!this.footer){this.footer=document.createElement("div");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
+if(typeof footerContent=="string"){this.footer.innerHTML=footerContent;}else{this.footer.innerHTML="";this.footer.appendChild(footerContent);}
+this.changeFooterEvent.fire(footerContent);this.changeContentEvent.fire();},appendToFooter:function(element){if(!this.footer){this.footer=document.createElement("div");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
+this.footer.appendChild(element);this.changeFooterEvent.fire(element);this.changeContentEvent.fire();},render:function(appendToNode,moduleElement){this.beforeRenderEvent.fire();if(!moduleElement){moduleElement=this.element;}
+var me=this;var appendTo=function(element){if(typeof element=="string"){element=document.getElementById(element);}
+if(element){element.appendChild(me.element);me.appendEvent.fire();}};if(appendToNode){appendTo(appendToNode);}else{if(!YAHOO.util.Dom.inDocument(this.element)){return false;}}
+if(this.header&&!YAHOO.util.Dom.inDocument(this.header)){var firstChild=moduleElement.firstChild;if(firstChild){moduleElement.insertBefore(this.header,firstChild);}else{moduleElement.appendChild(this.header);}}
+if(this.body&&!YAHOO.util.Dom.inDocument(this.body)){if(this.footer&&YAHOO.util.Dom.isAncestor(this.moduleElement,this.footer)){moduleElement.insertBefore(this.body,this.footer);}else{moduleElement.appendChild(this.body);}}
+if(this.footer&&!YAHOO.util.Dom.inDocument(this.footer)){moduleElement.appendChild(this.footer);}
+this.renderEvent.fire();return true;},destroy:function(){var parent;if(this.element){YAHOO.util.Event.purgeElement(this.element,true);parent=this.element.parentNode;}
+if(parent){parent.removeChild(this.element);}
+this.element=null;this.header=null;this.body=null;this.footer=null;for(var e in this){if(e instanceof YAHOO.util.CustomEvent){e.unsubscribeAll();}}
+YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize,this);this.destroyEvent.fire();},show:function(){this.cfg.setProperty("visible",true);},hide:function(){this.cfg.setProperty("visible",false);},configVisible:function(type,args,obj){var visible=args[0];if(visible){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","block");this.showEvent.fire();}else{this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","none");this.hideEvent.fire();}},configMonitorResize:function(type,args,obj){var monitor=args[0];if(monitor){this.initResizeMonitor();}else{YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize,this,true);this.resizeMonitor=null;}}};YAHOO.widget.Module.prototype.toString=function(){return"Module "+this.id;};YAHOO.widget.Overlay=function(el,userConfig){YAHOO.widget.Overlay.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Overlay,YAHOO.widget.Module);YAHOO.widget.Overlay._EVENT_TYPE
 S={"BEFORE_MOVE":"beforeMove","MOVE":"move"};YAHOO.widget.Overlay._DEFAULT_CONFIG={"X":{key:"x",validator:YAHOO.lang.isNumber,suppressEvent:true,supercedes:["iframe"]},"Y":{key:"y",validator:YAHOO.lang.isNumber,suppressEvent:true,supercedes:["iframe"]},"XY":{key:"xy",suppressEvent:true,supercedes:["iframe"]},"CONTEXT":{key:"context",suppressEvent:true,supercedes:["iframe"]},"FIXED_CENTER":{key:"fixedcenter",value:false,validator:YAHOO.lang.isBoolean,supercedes:["iframe","visible"]},"WIDTH":{key:"width",suppressEvent:true,supercedes:["iframe"]},"HEIGHT":{key:"height",suppressEvent:true,supercedes:["iframe"]},"ZINDEX":{key:"zindex",value:null},"CONSTRAIN_TO_VIEWPORT":{key:"constraintoviewport",value:false,validator:YAHOO.lang.isBoolean,supercedes:["iframe","x","y","xy"]},"IFRAME":{key:"iframe",value:(YAHOO.widget.Module.prototype.browser=="ie"?true:false),validator:YAHOO.lang.isBoolean,supercedes:["zIndex"]}};YAHOO.widget.Overlay.IFRAME_SRC="javascript:false;";YAHOO.widget.Ove
 rlay.TOP_LEFT="tl";YAHOO.widget.Overlay.TOP_RIGHT="tr";YAHOO.widget.Overlay.BOTTOM_LEFT="bl";YAHOO.widget.Overlay.BOTTOM_RIGHT="br";YAHOO.widget.Overlay.CSS_OVERLAY="yui-overlay";YAHOO.widget.Overlay.prototype.init=function(el,userConfig){YAHOO.widget.Overlay.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Overlay);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Overlay.CSS_OVERLAY);if(userConfig){this.cfg.applyConfig(userConfig,true);}
+if(this.platform=="mac"&&this.browser=="gecko"){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrollbars,this)){this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrollbars,this)){this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true);}}
+this.initEvent.fire(YAHOO.widget.Overlay);};YAHOO.widget.Overlay.prototype.initEvents=function(){YAHOO.widget.Overlay.superclass.initEvents.call(this);var EVENT_TYPES=YAHOO.widget.Overlay._EVENT_TYPES;this.beforeMoveEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_MOVE,this);this.moveEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.MOVE,this);};YAHOO.widget.Overlay.prototype.initDefaultConfig=function(){YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this);var DEFAULT_CONFIG=YAHOO.widget.Overlay._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.X.key,{handler:this.configX,validator:DEFAULT_CONFIG.X.validator,suppressEvent:DEFAULT_CONFIG.X.suppressEvent,supercedes:DEFAULT_CONFIG.X.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.Y.key,{handler:this.configY,validator:DEFAULT_CONFIG.Y.validator,suppressEvent:DEFAULT_CONFIG.Y.suppressEvent,supercedes:DEFAULT_CONFIG.Y.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.XY.key,{handler:this.configXY,suppressEvent:DEFAULT_CONF
 IG.XY.suppressEvent,supercedes:DEFAULT_CONFIG.XY.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.CONTEXT.key,{handler:this.configContext,suppressEvent:DEFAULT_CONFIG.CONTEXT.suppressEvent,supercedes:DEFAULT_CONFIG.CONTEXT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.FIXED_CENTER.key,{handler:this.configFixedCenter,value:DEFAULT_CONFIG.FIXED_CENTER.value,validator:DEFAULT_CONFIG.FIXED_CENTER.validator,supercedes:DEFAULT_CONFIG.FIXED_CENTER.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.WIDTH.key,{handler:this.configWidth,suppressEvent:DEFAULT_CONFIG.WIDTH.suppressEvent,supercedes:DEFAULT_CONFIG.WIDTH.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.HEIGHT.key,{handler:this.configHeight,suppressEvent:DEFAULT_CONFIG.HEIGHT.suppressEvent,supercedes:DEFAULT_CONFIG.HEIGHT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.ZINDEX.key,{handler:this.configzIndex,value:DEFAULT_CONFIG.ZINDEX.value});this.cfg.addProperty(DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.key,{handler:this.config
 ConstrainToViewport,value:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.value,validator:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.validator,supercedes:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.IFRAME.key,{handler:this.configIframe,value:DEFAULT_CONFIG.IFRAME.value,validator:DEFAULT_CONFIG.IFRAME.validator,supercedes:DEFAULT_CONFIG.IFRAME.supercedes});};YAHOO.widget.Overlay.prototype.moveTo=function(x,y){this.cfg.setProperty("xy",[x,y]);};YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"show-scrollbars");YAHOO.util.Dom.addClass(this.element,"hide-scrollbars");};YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"hide-scrollbars");YAHOO.util.Dom.addClass(this.element,"show-scrollbars");};YAHOO.widget.Overlay.prototype.configVisible=function(type,args,obj){var visible=args[0];var currentVis=YAHOO.util.Dom.getStyle(this.element,"visibility"
 );if(currentVis=="inherit"){var e=this.element.parentNode;while(e.nodeType!=9&&e.nodeType!=11){currentVis=YAHOO.util.Dom.getStyle(e,"visibility");if(currentVis!="inherit"){break;}
+e=e.parentNode;}
+if(currentVis=="inherit"){currentVis="visible";}}
+var effect=this.cfg.getProperty("effect");var effectInstances=[];if(effect){if(effect instanceof Array){for(var i=0;i<effect.length;i++){var eff=effect[i];effectInstances[effectInstances.length]=eff.effect(this,eff.duration);}}else{effectInstances[effectInstances.length]=effect.effect(this,effect.duration);}}
+var isMacGecko=(this.platform=="mac"&&this.browser=="gecko");if(visible){if(isMacGecko){this.showMacGeckoScrollbars();}
+if(effect){if(visible){if(currentVis!="visible"||currentVis===""){this.beforeShowEvent.fire();for(var j=0;j<effectInstances.length;j++){var ei=effectInstances[j];if(j===0&&!YAHOO.util.Config.alreadySubscribed(ei.animateInCompleteEvent,this.showEvent.fire,this.showEvent)){ei.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,true);}
+ei.animateIn();}}}}else{if(currentVis!="visible"||currentVis===""){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","visible");this.cfg.refireEvent("iframe");this.showEvent.fire();}}}else{if(isMacGecko){this.hideMacGeckoScrollbars();}
+if(effect){if(currentVis=="visible"){this.beforeHideEvent.fire();for(var k=0;k<effectInstances.length;k++){var h=effectInstances[k];if(k===0&&!YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEvent.fire,this.hideEvent)){h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,true);}
+h.animateOut();}}else if(currentVis===""){YAHOO.util.Dom.setStyle(this.element,"visibility","hidden");}}else{if(currentVis=="visible"||currentVis===""){this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","hidden");this.cfg.refireEvent("iframe");this.hideEvent.fire();}}}};YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent=function(){if(this.cfg.getProperty("visible")){this.center();}};YAHOO.widget.Overlay.prototype.configFixedCenter=function(type,args,obj){var val=args[0];if(val){this.center();if(!YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent,this.center,this)){this.beforeShowEvent.subscribe(this.center,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowScrollEvent.subscribe(this.doCenterOnDOMEvent,this,true);}}else{YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);}};YAHOO.widget.Overlay.prototype.configHeight=function(type,args,obj){var height=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"height",height);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configWidth=function(type,args,obj){var width=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"width",width);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configzIndex=function(type,args,obj){var zIndex=args[0];var el=this.element;if(!zIndex){zIndex=YAHOO.util.Dom.getStyle(el,"zIndex");if(!zIndex||isNaN(zIndex)){zIndex=0;}}
+if(this.iframe){if(zIndex<=0){zIndex=1;}
+YAHOO.util.Dom.setStyle(this.iframe,"zIndex",(zIndex-1));}
+YAHOO.util.Dom.setStyle(el,"zIndex",zIndex);this.cfg.setProperty("zIndex",zIndex,true);};YAHOO.widget.Overlay.prototype.configXY=function(type,args,obj){var pos=args[0];var x=pos[0];var y=pos[1];this.cfg.setProperty("x",x);this.cfg.setProperty("y",y);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configX=function(type,args,obj){var x=args[0];var y=this.cfg.getProperty("y");this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setX(this.element,x,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configY=function(type,args,obj){var x=this.cfg.getProperty("x");var y=args[0];this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.before
 MoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setY(this.element,y,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.showIframe=function(){if(this.iframe){this.iframe.style.display="block";}};YAHOO.widget.Overlay.prototype.hideIframe=function(){if(this.iframe){this.iframe.style.display="none";}};YAHOO.widget.Overlay.prototype.configIframe=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showIframe,this)){this.showEvent.subscribe(this.showIframe,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideIframe,this)){this.hideEvent.subscribe(this.hideIframe,this,true);}
+var x=this.cfg.getProperty("x");var y=this.cfg.getProperty("y");if(!x||!y){this.syncPosition();x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");}
+if(!isNaN(x)&&!isNaN(y)){if(!this.iframe){this.iframe=document.createElement("iframe");if(this.isSecure){this.iframe.src=YAHOO.widget.Overlay.IFRAME_SRC;}
+var parent=this.element.parentNode;if(parent){parent.appendChild(this.iframe);}else{document.body.appendChild(this.iframe);}
+YAHOO.util.Dom.setStyle(this.iframe,"position","absolute");YAHOO.util.Dom.setStyle(this.iframe,"border","none");YAHOO.util.Dom.setStyle(this.iframe,"margin","0");YAHOO.util.Dom.setStyle(this.iframe,"padding","0");YAHOO.util.Dom.setStyle(this.iframe,"opacity","0");if(this.cfg.getProperty("visible")){this.showIframe();}else{this.hideIframe();}}
+var iframeDisplay=YAHOO.util.Dom.getStyle(this.iframe,"display");if(iframeDisplay=="none"){this.iframe.style.display="block";}
+YAHOO.util.Dom.setXY(this.iframe,[x,y]);var width=this.element.clientWidth;var height=this.element.clientHeight;YAHOO.util.Dom.setStyle(this.iframe,"width",(width+2)+"px");YAHOO.util.Dom.setStyle(this.iframe,"height",(height+2)+"px");if(iframeDisplay=="none"){this.iframe.style.display="none";}}}else{if(this.iframe){this.iframe.style.display="none";}
+this.showEvent.unsubscribe(this.showIframe,this);this.hideEvent.unsubscribe(this.hideIframe,this);}};YAHOO.widget.Overlay.prototype.configConstrainToViewport=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.beforeMoveEvent,this.enforceConstraints,this)){this.beforeMoveEvent.subscribe(this.enforceConstraints,this,true);}}else{this.beforeMoveEvent.unsubscribe(this.enforceConstraints,this);}};YAHOO.widget.Overlay.prototype.configContext=function(type,args,obj){var contextArgs=args[0];if(contextArgs){var contextEl=contextArgs[0];var elementMagnetCorner=contextArgs[1];var contextMagnetCorner=contextArgs[2];if(contextEl){if(typeof contextEl=="string"){this.cfg.setProperty("context",[document.getElementById(contextEl),elementMagnetCorner,contextMagnetCorner],true);}
+if(elementMagnetCorner&&contextMagnetCorner){this.align(elementMagnetCorner,contextMagnetCorner);}}}};YAHOO.widget.Overlay.prototype.align=function(elementAlign,contextAlign){var contextArgs=this.cfg.getProperty("context");if(contextArgs){var context=contextArgs[0];var element=this.element;var me=this;if(!elementAlign){elementAlign=contextArgs[1];}
+if(!contextAlign){contextAlign=contextArgs[2];}
+if(element&&context){var contextRegion=YAHOO.util.Dom.getRegion(context);var doAlign=function(v,h){switch(elementAlign){case YAHOO.widget.Overlay.TOP_LEFT:me.moveTo(h,v);break;case YAHOO.widget.Overlay.TOP_RIGHT:me.moveTo(h-element.offsetWidth,v);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:me.moveTo(h,v-element.offsetHeight);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:me.moveTo(h-element.offsetWidth,v-element.offsetHeight);break;}};switch(contextAlign){case YAHOO.widget.Overlay.TOP_LEFT:doAlign(contextRegion.top,contextRegion.left);break;case YAHOO.widget.Overlay.TOP_RIGHT:doAlign(contextRegion.top,contextRegion.right);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:doAlign(contextRegion.bottom,contextRegion.left);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:doAlign(contextRegion.bottom,contextRegion.right);break;}}}};YAHOO.widget.Overlay.prototype.enforceConstraints=function(type,args,obj){var pos=args[0];var x=pos[0];var y=pos[1];var offsetHeight=this.element.offsetHeight;var
  offsetWidth=this.element.offsetWidth;var viewPortWidth=YAHOO.util.Dom.getViewportWidth();var viewPortHeight=YAHOO.util.Dom.getViewportHeight();var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var topConstraint=scrollY+10;var leftConstraint=scrollX+10;var bottomConstraint=scrollY+viewPortHeight-offsetHeight-10;var rightConstraint=scrollX+viewPortWidth-offsetWidth-10;if(x<leftConstraint){x=leftConstraint;}else if(x>rightConstraint){x=rightConstraint;}
+if(y<topConstraint){y=topConstraint;}else if(y>bottomConstraint){y=bottomConstraint;}
+this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.cfg.setProperty("xy",[x,y],true);};YAHOO.widget.Overlay.prototype.center=function(){var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var viewPortWidth=YAHOO.util.Dom.getClientWidth();var viewPortHeight=YAHOO.util.Dom.getClientHeight();var elementWidth=this.element.offsetWidth;var elementHeight=this.element.offsetHeight;var x=(viewPortWidth/2)-(elementWidth/2)+scrollX;var y=(viewPortHeight/2)-(elementHeight/2)+scrollY;this.cfg.setProperty("xy",[parseInt(x,10),parseInt(y,10)]);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.syncPosition=function(){var pos=YAHOO.util.Dom.getXY(this.element);this.cfg.setProperty("x",pos[0],true);this.cfg.setProperty("y",pos[1],true);this.cfg.setProperty("xy",pos,true);};YAHOO.widget.Overlay.prototype.onDomResize=function(e,obj){YAHOO.widget.Overlay.superclass.onDom
 Resize.call(this,e,obj);var me=this;setTimeout(function(){me.syncPosition();me.cfg.refireEvent("iframe");me.cfg.refireEvent("context");},0);};YAHOO.widget.Overlay.prototype.destroy=function(){if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);}
+this.iframe=null;YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.superclass.destroy.call(this);};YAHOO.widget.Overlay.prototype.toString=function(){return"Overlay "+this.id;};YAHOO.widget.Overlay.windowScrollEvent=new YAHOO.util.CustomEvent("windowScroll");YAHOO.widget.Overlay.windowResizeEvent=new YAHOO.util.CustomEvent("windowResize");YAHOO.widget.Overlay.windowScrollHandler=function(e){if(YAHOO.widget.Module.prototype.browser=="ie"||YAHOO.widget.Module.prototype.browser=="ie7"){if(!window.scrollEnd){window.scrollEnd=-1;}
+clearTimeout(window.scrollEnd);window.scrollEnd=setTimeout(function(){YAHOO.widget.Overlay.windowScrollEvent.fire();},1);}else{YAHOO.widget.Overlay.windowScrollEvent.fire();}};YAHOO.widget.Overlay.windowResizeHandler=function(e){if(YAHOO.widget.Module.prototype.browser=="ie"||YAHOO.widget.Module.prototype.browser=="ie7"){if(!window.resizeEnd){window.resizeEnd=-1;}
+clearTimeout(window.resizeEnd);window.resizeEnd=setTimeout(function(){YAHOO.widget.Overlay.windowResizeEvent.fire();},100);}else{YAHOO.widget.Overlay.windowResizeEvent.fire();}};YAHOO.widget.Overlay._initialized=null;if(YAHOO.widget.Overlay._initialized===null){YAHOO.util.Event.addListener(window,"scroll",YAHOO.widget.Overlay.windowScrollHandler);YAHOO.util.Event.addListener(window,"resize",YAHOO.widget.Overlay.windowResizeHandler);YAHOO.widget.Overlay._initialized=true;}
+YAHOO.widget.OverlayManager=function(userConfig){this.init(userConfig);};YAHOO.widget.OverlayManager.CSS_FOCUSED="focused";YAHOO.widget.OverlayManager.prototype={constructor:YAHOO.widget.OverlayManager,overlays:null,initDefaultConfig:function(){this.cfg.addProperty("overlays",{suppressEvent:true});this.cfg.addProperty("focusevent",{value:"mousedown"});},init:function(userConfig){this.cfg=new YAHOO.util.Config(this);this.initDefaultConfig();if(userConfig){this.cfg.applyConfig(userConfig,true);}
+this.cfg.fireQueue();var activeOverlay=null;this.getActive=function(){return activeOverlay;};this.focus=function(overlay){var o=this.find(overlay);if(o){if(activeOverlay!=o){if(activeOverlay){activeOverlay.blur();}
+activeOverlay=o;YAHOO.util.Dom.addClass(activeOverlay.element,YAHOO.widget.OverlayManager.CSS_FOCUSED);this.overlays.sort(this.compareZIndexDesc);var topZIndex=YAHOO.util.Dom.getStyle(this.overlays[0].element,"zIndex");if(!isNaN(topZIndex)&&this.overlays[0]!=overlay){activeOverlay.cfg.setProperty("zIndex",(parseInt(topZIndex,10)+2));}
+this.overlays.sort(this.compareZIndexDesc);o.focusEvent.fire();}}};this.remove=function(overlay){var o=this.find(overlay);if(o){var originalZ=YAHOO.util.Dom.getStyle(o.element,"zIndex");o.cfg.setProperty("zIndex",-1000,true);this.overlays.sort(this.compareZIndexDesc);this.overlays=this.overlays.slice(0,this.overlays.length-1);o.hideEvent.unsubscribe(o.blur);o.destroyEvent.unsubscribe(this._onOverlayDestroy,o);if(o.element){YAHOO.util.Event.removeListener(o.element,this.cfg.getProperty("focusevent"),this._onOverlayElementFocus);}
+o.cfg.setProperty("zIndex",originalZ,true);o.cfg.setProperty("manager",null);o.focusEvent.unsubscribeAll();o.blurEvent.unsubscribeAll();o.focusEvent=null;o.blurEvent=null;o.focus=null;o.blur=null;}};this.blurAll=function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].blur();}};this._onOverlayBlur=function(p_sType,p_aArgs){activeOverlay=null;};var overlays=this.cfg.getProperty("overlays");if(!this.overlays){this.overlays=[];}
+if(overlays){this.register(overlays);this.overlays.sort(this.compareZIndexDesc);}},_onOverlayElementFocus:function(p_oEvent){var oTarget=YAHOO.util.Event.getTarget(p_oEvent),oClose=this.close;if(oClose&&(oTarget==oClose||YAHOO.util.Dom.isAncestor(oClose,oTarget))){this.blur();}
+else{this.focus();}},_onOverlayDestroy:function(p_sType,p_aArgs,p_oOverlay){this.remove(p_oOverlay);},register:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){overlay.cfg.addProperty("manager",{value:this});overlay.focusEvent=new YAHOO.util.CustomEvent("focus",overlay);overlay.blurEvent=new YAHOO.util.CustomEvent("blur",overlay);var mgr=this;overlay.focus=function(){mgr.focus(this);};overlay.blur=function(){if(mgr.getActive()==this){YAHOO.util.Dom.removeClass(this.element,YAHOO.widget.OverlayManager.CSS_FOCUSED);this.blurEvent.fire();}};overlay.blurEvent.subscribe(mgr._onOverlayBlur);overlay.hideEvent.subscribe(overlay.blur);overlay.destroyEvent.subscribe(this._onOverlayDestroy,overlay,this);YAHOO.util.Event.addListener(overlay.element,this.cfg.getProperty("focusevent"),this._onOverlayElementFocus,null,overlay);var zIndex=YAHOO.util.Dom.getStyle(overlay.element,"zIndex");if(!isNaN(zIndex)){overlay.cfg.setProperty("zIndex",parseInt(zIndex,10));}else{overlay.cfg.
 setProperty("zIndex",0);}
+this.overlays.push(overlay);return true;}else if(overlay instanceof Array){var regcount=0;for(var i=0;i<overlay.length;i++){if(this.register(overlay[i])){regcount++;}}
+if(regcount>0){return true;}}else{return false;}},find:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){for(var o=0;o<this.overlays.length;o++){if(this.overlays[o]==overlay){return this.overlays[o];}}}else if(typeof overlay=="string"){for(var p=0;p<this.overlays.length;p++){if(this.overlays[p].id==overlay){return this.overlays[p];}}}
+return null;},compareZIndexDesc:function(o1,o2){var zIndex1=o1.cfg.getProperty("zIndex");var zIndex2=o2.cfg.getProperty("zIndex");if(zIndex1>zIndex2){return-1;}else if(zIndex1<zIndex2){return 1;}else{return 0;}},showAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].show();}},hideAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].hide();}},toString:function(){return"OverlayManager";}};YAHOO.widget.Tooltip=function(el,userConfig){YAHOO.widget.Tooltip.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Tooltip,YAHOO.widget.Overlay);YAHOO.widget.Tooltip.CSS_TOOLTIP="yui-tt";YAHOO.widget.Tooltip._DEFAULT_CONFIG={"PREVENT_OVERLAP":{key:"preventoverlap",value:true,validator:YAHOO.lang.isBoolean,supercedes:["x","y","xy"]},"SHOW_DELAY":{key:"showdelay",value:200,validator:YAHOO.lang.isNumber},"AUTO_DISMISS_DELAY":{key:"autodismissdelay",value:5000,validator:YAHOO.lang.isNumber},"HIDE_DELAY":{key:"hidedelay",value:250,
 validator:YAHOO.lang.isNumber},"TEXT":{key:"text",suppressEvent:true},"CONTAINER":{key:"container"}};YAHOO.widget.Tooltip.prototype.init=function(el,userConfig){if(document.readyState&&document.readyState!="complete"){var deferredInit=function(){this.init(el,userConfig);};YAHOO.util.Event.addListener(window,"load",deferredInit,this,true);}else{YAHOO.widget.Tooltip.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Tooltip);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Tooltip.CSS_TOOLTIP);if(userConfig){this.cfg.applyConfig(userConfig,true);}
+this.cfg.queueProperty("visible",false);this.cfg.queueProperty("constraintoviewport",true);this.setBody("");this.render(this.cfg.getProperty("container"));this.initEvent.fire(YAHOO.widget.Tooltip);}};YAHOO.widget.Tooltip.prototype.initDefaultConfig=function(){YAHOO.widget.Tooltip.superclass.initDefaultConfig.call(this);var DEFAULT_CONFIG=YAHOO.widget.Tooltip._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.PREVENT_OVERLAP.key,{value:DEFAULT_CONFIG.PREVENT_OVERLAP.value,validator:DEFAULT_CONFIG.PREVENT_OVERLAP.validator,supercedes:DEFAULT_CONFIG.PREVENT_OVERLAP.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.SHOW_DELAY.key,{handler:this.configShowDelay,value:200,validator:DEFAULT_CONFIG.SHOW_DELAY.validator});this.cfg.addProperty(DEFAULT_CONFIG.AUTO_DISMISS_DELAY.key,{handler:this.configAutoDismissDelay,value:DEFAULT_CONFIG.AUTO_DISMISS_DELAY.value,validator:DEFAULT_CONFIG.AUTO_DISMISS_DELAY.validator});this.cfg.addProperty(DEFAULT_CONFIG.HIDE_DELAY.key,{handler:this.conf
 igHideDelay,value:DEFAULT_CONFIG.HIDE_DELAY.value,validator:DEFAULT_CONFIG.HIDE_DELAY.validator});this.cfg.addProperty(DEFAULT_CONFIG.TEXT.key,{handler:this.configText,suppressEvent:DEFAULT_CONFIG.TEXT.suppressEvent});this.cfg.addProperty(DEFAULT_CONFIG.CONTAINER.key,{handler:this.configContainer,value:document.body});};YAHOO.widget.Tooltip.prototype.configText=function(type,args,obj){var text=args[0];if(text){this.setBody(text);}};YAHOO.widget.Tooltip.prototype.configContainer=function(type,args,obj){var container=args[0];if(typeof container=='string'){this.cfg.setProperty("container",document.getElementById(container),true);}};YAHOO.widget.Tooltip.prototype._removeEventListeners=function(){var aElements=this._context;if(aElements){var nElements=aElements.length;if(nElements>0){var i=nElements-1,oElement;do{oElement=aElements[i];YAHOO.util.Event.removeListener(oElement,"mouseover",this.onContextMouseOver);YAHOO.util.Event.removeListener(oElement,"mousemove",this.onContextMo
 useMove);YAHOO.util.Event.removeListener(oElement,"mouseout",this.onContextMouseOut);}
+while(i--);}}};YAHOO.widget.Tooltip.prototype.configContext=function(type,args,obj){var context=args[0];if(context){if(!(context instanceof Array)){if(typeof context=="string"){this.cfg.setProperty("context",[document.getElementById(context)],true);}else{this.cfg.setProperty("context",[context],true);}
+context=this.cfg.getProperty("context");}
+this._removeEventListeners();this._context=context;var aElements=this._context;if(aElements){var nElements=aElements.length;if(nElements>0){var i=nElements-1,oElement;do{oElement=aElements[i];YAHOO.util.Event.addListener(oElement,"mouseover",this.onContextMouseOver,this);YAHOO.util.Event.addListener(oElement,"mousemove",this.onContextMouseMove,this);YAHOO.util.Event.addListener(oElement,"mouseout",this.onContextMouseOut,this);}
+while(i--);}}}};YAHOO.widget.Tooltip.prototype.onContextMouseMove=function(e,obj){obj.pageX=YAHOO.util.Event.getPageX(e);obj.pageY=YAHOO.util.Event.getPageY(e);};YAHOO.widget.Tooltip.prototype.onContextMouseOver=function(e,obj){if(obj.hideProcId){clearTimeout(obj.hideProcId);obj.hideProcId=null;}
+var context=this;YAHOO.util.Event.addListener(context,"mousemove",obj.onContextMouseMove,obj);if(context.title){obj._tempTitle=context.title;context.title="";}
+obj.showProcId=obj.doShow(e,context);};YAHOO.widget.Tooltip.prototype.onContextMouseOut=function(e,obj){var el=this;if(obj._tempTitle){el.title=obj._tempTitle;obj._tempTitle=null;}
+if(obj.showProcId){clearTimeout(obj.showProcId);obj.showProcId=null;}
+if(obj.hideProcId){clearTimeout(obj.hideProcId);obj.hideProcId=null;}
+obj.hideProcId=setTimeout(function(){obj.hide();},obj.cfg.getProperty("hidedelay"));};YAHOO.widget.Tooltip.prototype.doShow=function(e,context){var yOffset=25;if(this.browser=="opera"&&context.tagName&&context.tagName.toUpperCase()=="A"){yOffset+=12;}
+var me=this;return setTimeout(function(){if(me._tempTitle){me.setBody(me._tempTitle);}else{me.cfg.refireEvent("text");}
+me.moveTo(me.pageX,me.pageY+yOffset);if(me.cfg.getProperty("preventoverlap")){me.preventOverlap(me.pageX,me.pageY);}
+YAHOO.util.Event.removeListener(context,"mousemove",me.onContextMouseMove);me.show();me.hideProcId=me.doHide();},this.cfg.getProperty("showdelay"));};YAHOO.widget.Tooltip.prototype.doHide=function(){var me=this;return setTimeout(function(){me.hide();},this.cfg.getProperty("autodismissdelay"));};YAHOO.widget.Tooltip.prototype.preventOverlap=function(pageX,pageY){var height=this.element.offsetHeight;var elementRegion=YAHOO.util.Dom.getRegion(this.element);elementRegion.top-=5;elementRegion.left-=5;elementRegion.right+=5;elementRegion.bottom+=5;var mousePoint=new YAHOO.util.Point(pageX,pageY);if(elementRegion.contains(mousePoint)){this.cfg.setProperty("y",(pageY-height-5));}};YAHOO.widget.Tooltip.prototype.destroy=function(){this._removeEventListeners();YAHOO.widget.Tooltip.superclass.destroy.call(this);};YAHOO.widget.Tooltip.prototype.toString=function(){return"Tooltip "+this.id;};YAHOO.widget.Panel=function(el,userConfig){YAHOO.widget.Panel.superclass.constructor.call(this,el
 ,userConfig);};YAHOO.extend(YAHOO.widget.Panel,YAHOO.widget.Overlay);YAHOO.widget.Panel.CSS_PANEL="yui-panel";YAHOO.widget.Panel.CSS_PANEL_CONTAINER="yui-panel-container";YAHOO.widget.Panel._EVENT_TYPES={"SHOW_MASK":"showMask","HIDE_MASK":"hideMask","DRAG":"drag"};YAHOO.widget.Panel._DEFAULT_CONFIG={"CLOSE":{key:"close",value:true,validator:YAHOO.lang.isBoolean,supercedes:["visible"]},"DRAGGABLE":{key:"draggable",value:(YAHOO.util.DD?true:false),validator:YAHOO.lang.isBoolean,supercedes:["visible"]},"UNDERLAY":{key:"underlay",value:"shadow",supercedes:["visible"]},"MODAL":{key:"modal",value:false,validator:YAHOO.lang.isBoolean,supercedes:["visible"]},"KEY_LISTENERS":{key:"keylisteners",suppressEvent:true,supercedes:["visible"]}};YAHOO.widget.Panel.prototype.init=function(el,userConfig){YAHOO.widget.Panel.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Panel);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Panel.CSS_PANEL);this.buildWrapper();if(userCon
 fig){this.cfg.applyConfig(userConfig,true);}
+this.beforeRenderEvent.subscribe(function(){var draggable=this.cfg.getProperty("draggable");if(draggable){if(!this.header){this.setHeader("&#160;");}}},this,true);this.renderEvent.subscribe(function(){var sWidth=this.cfg.getProperty("width");if(!sWidth){this.cfg.setProperty("width",(this.element.offsetWidth+"px"));}});var me=this;var doBlur=function(){this.blur();};this.showMaskEvent.subscribe(function(){var checkFocusable=function(el){var sTagName=el.tagName.toUpperCase(),bFocusable=false;switch(sTagName){case"A":case"BUTTON":case"SELECT":case"TEXTAREA":if(!YAHOO.util.Dom.isAncestor(me.element,el)){YAHOO.util.Event.addListener(el,"focus",doBlur,el,true);bFocusable=true;}
+break;case"INPUT":if(el.type!="hidden"&&!YAHOO.util.Dom.isAncestor(me.element,el)){YAHOO.util.Event.addListener(el,"focus",doBlur,el,true);bFocusable=true;}
+break;}
+return bFocusable;};this.focusableElements=YAHOO.util.Dom.getElementsBy(checkFocusable);},this,true);this.hideMaskEvent.subscribe(function(){for(var i=0;i<this.focusableElements.length;i++){var el2=this.focusableElements[i];YAHOO.util.Event.removeListener(el2,"focus",doBlur);}},this,true);this.beforeShowEvent.subscribe(function(){this.cfg.refireEvent("underlay");},this,true);this.initEvent.fire(YAHOO.widget.Panel);};YAHOO.widget.Panel.prototype.initEvents=function(){YAHOO.widget.Panel.superclass.initEvents.call(this);var EVENT_TYPES=YAHOO.widget.Panel._EVENT_TYPES;this.showMaskEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.SHOW_MASK,this);this.hideMaskEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.HIDE_MASK,this);this.dragEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.DRAG,this);};YAHOO.widget.Panel.prototype.initDefaultConfig=function(){YAHOO.widget.Panel.superclass.initDefaultConfig.call(this);var DEFAULT_CONFIG=YAHOO.widget.Panel._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CON
 FIG.CLOSE.key,{handler:this.configClose,value:DEFAULT_CONFIG.CLOSE.value,validator:DEFAULT_CONFIG.CLOSE.validator,supercedes:DEFAULT_CONFIG.CLOSE.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.DRAGGABLE.key,{handler:this.configDraggable,value:DEFAULT_CONFIG.DRAGGABLE.value,validator:DEFAULT_CONFIG.DRAGGABLE.validator,supercedes:DEFAULT_CONFIG.DRAGGABLE.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.UNDERLAY.key,{handler:this.configUnderlay,value:DEFAULT_CONFIG.UNDERLAY.value,supercedes:DEFAULT_CONFIG.UNDERLAY.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.MODAL.key,{handler:this.configModal,value:DEFAULT_CONFIG.MODAL.value,validator:DEFAULT_CONFIG.MODAL.validator,supercedes:DEFAULT_CONFIG.MODAL.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.KEY_LISTENERS.key,{handler:this.configKeyListeners,suppressEvent:DEFAULT_CONFIG.KEY_LISTENERS.suppressEvent,supercedes:DEFAULT_CONFIG.KEY_LISTENERS.supercedes});};YAHOO.widget.Panel.prototype.configClose=function(type,args,obj){va
 r val=args[0];var doHide=function(e,obj){obj.hide();};if(val){if(!this.close){this.close=document.createElement("span");YAHOO.util.Dom.addClass(this.close,"container-close");this.close.innerHTML="&#160;";this.innerElement.appendChild(this.close);YAHOO.util.Event.addListener(this.close,"click",doHide,this);}else{this.close.style.display="block";}}else{if(this.close){this.close.style.display="none";}}};YAHOO.widget.Panel.prototype.configDraggable=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.DD){this.cfg.setProperty("draggable",false);return;}
+if(this.header){YAHOO.util.Dom.setStyle(this.header,"cursor","move");this.registerDragDrop();}}else{if(this.dd){this.dd.unreg();}
+if(this.header){YAHOO.util.Dom.setStyle(this.header,"cursor","auto");}}};YAHOO.widget.Panel.prototype.configUnderlay=function(type,args,obj){var val=args[0];switch(val.toLowerCase()){case"shadow":YAHOO.util.Dom.removeClass(this.element,"matte");YAHOO.util.Dom.addClass(this.element,"shadow");if(!this.underlay){this.underlay=document.createElement("div");this.underlay.className="underlay";this.underlay.innerHTML="&#160;";this.element.appendChild(this.underlay);}
+this.sizeUnderlay();break;case"matte":YAHOO.util.Dom.removeClass(this.element,"shadow");YAHOO.util.Dom.addClass(this.element,"matte");break;default:YAHOO.util.Dom.removeClass(this.element,"shadow");YAHOO.util.Dom.removeClass(this.element,"matte");break;}};YAHOO.widget.Panel.prototype.configModal=function(type,args,obj){var modal=args[0];if(modal){this.buildMask();if(!YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent,this.showMask,this)){this.beforeShowEvent.subscribe(this.showMask,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMask,this)){this.hideEvent.subscribe(this.hideMask,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.sizeMask,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.sizeMask,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.destroyEvent,this.removeMask,this)){this.destroyEvent.subscribe(this.removeMask,this,true);}
+this.cfg.refireEvent("zIndex");}else{this.beforeShowEvent.unsubscribe(this.showMask,this);this.hideEvent.unsubscribe(this.hideMask,this);YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.sizeMask,this);this.destroyEvent.unsubscribe(this.removeMask,this);}};YAHOO.widget.Panel.prototype.removeMask=function(){var oMask=this.mask;if(oMask){this.hideMask();var oParentNode=oMask.parentNode;if(oParentNode){oParentNode.removeChild(oMask);}
+this.mask=null;}};YAHOO.widget.Panel.prototype.configKeyListeners=function(type,args,obj){var listeners=args[0];if(listeners){if(listeners instanceof Array){for(var i=0;i<listeners.length;i++){var listener=listeners[i];if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,listener.enable,listener)){this.showEvent.subscribe(listener.enable,listener,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,listener.disable,listener)){this.hideEvent.subscribe(listener.disable,listener,true);this.destroyEvent.subscribe(listener.disable,listener,true);}}}else{if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,listeners.enable,listeners)){this.showEvent.subscribe(listeners.enable,listeners,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,listeners.disable,listeners)){this.hideEvent.subscribe(listeners.disable,listeners,true);this.destroyEvent.subscribe(listeners.disable,listeners,true);}}}};YAHOO.widget.Panel.prototype.configHeight=function(type,args,obj){var height=args[0];var el=this.innerElement;YAHOO.util.Dom.setStyle(el,"height",height);this.cfg.refireEvent("underlay");this.cfg.refireEvent("iframe");};YAHOO.widget.Panel.prototype.configWidth=function(type,args,obj){var width=args[0];var el=this.innerElement;YAHOO.util.Dom.setStyle(el,"width",width);this.cfg.refireEvent("underlay");this.cfg.refireEvent("iframe");};YAHOO.widget.Panel.prototype.configzIndex=function(type,args,obj){YAHOO.widget.Panel.superclass.configzIndex.call(this,type,args,obj);var maskZ=0;var currentZ=YAHOO.util.Dom.getStyle(this.element,"zIndex");if(this.mask){if(!currentZ||isNaN(currentZ)){currentZ=0;}
+if(currentZ===0){this.cfg.setProperty("zIndex",1);}else{maskZ=currentZ-1;YAHOO.util.Dom.setStyle(this.mask,"zIndex",maskZ);}}};YAHOO.widget.Panel.prototype.buildWrapper=function(){var elementParent=this.element.parentNode;var originalElement=this.element;var wrapper=document.createElement("div");wrapper.className=YAHOO.widget.Panel.CSS_PANEL_CONTAINER;wrapper.id=originalElement.id+"_c";if(elementParent){elementParent.insertBefore(wrapper,originalElement);}
+wrapper.appendChild(originalElement);this.element=wrapper;this.innerElement=originalElement;YAHOO.util.Dom.setStyle(this.innerElement,"visibility","inherit");};YAHOO.widget.Panel.prototype.sizeUnderlay=function(){if(this.underlay&&this.browser!="gecko"&&this.browser!="safari"){this.underlay.style.width=this.innerElement.offsetWidth+"px";this.underlay.style.height=this.innerElement.offsetHeight+"px";}};YAHOO.widget.Panel.prototype.onDomResize=function(e,obj){YAHOO.widget.Panel.superclass.onDomResize.call(this,e,obj);var me=this;setTimeout(function(){me.sizeUnderlay();},0);};YAHOO.widget.Panel.prototype.registerDragDrop=function(){if(this.header){if(!YAHOO.util.DD){return;}
+this.dd=new YAHOO.util.DD(this.element.id,this.id);if(!this.header.id){this.header.id=this.id+"_h";}
+var me=this;this.dd.startDrag=function(){if(me.browser=="ie"){YAHOO.util.Dom.addClass(me.element,"drag");}
+if(me.cfg.getProperty("constraintoviewport")){var offsetHeight=me.element.offsetHeight;var offsetWidth=me.element.offsetWidth;var viewPortWidth=YAHOO.util.Dom.getViewportWidth();var viewPortHeight=YAHOO.util.Dom.getViewportHeight();var scrollX=window.scrollX||document.documentElement.scrollLeft;var scrollY=window.scrollY||document.documentElement.scrollTop;var topConstraint=scrollY+10;var leftConstraint=scrollX+10;var bottomConstraint=scrollY+viewPortHeight-offsetHeight-10;var rightConstraint=scrollX+viewPortWidth-offsetWidth-10;this.minX=leftConstraint;this.maxX=rightConstraint;this.constrainX=true;this.minY=topConstraint;this.maxY=bottomConstraint;this.constrainY=true;}else{this.constrainX=false;this.constrainY=false;}
+me.dragEvent.fire("startDrag",arguments);};this.dd.onDrag=function(){me.syncPosition();me.cfg.refireEvent("iframe");if(this.platform=="mac"&&this.browser=="gecko"){this.showMacGeckoScrollbars();}
+me.dragEvent.fire("onDrag",arguments);};this.dd.endDrag=function(){if(me.browser=="ie"){YAHOO.util.Dom.removeClass(me.element,"drag");}
+me.dragEvent.fire("endDrag",arguments);};this.dd.setHandleElId(this.header.id);this.dd.addInvalidHandleType("INPUT");this.dd.addInvalidHandleType("SELECT");this.dd.addInvalidHandleType("TEXTAREA");}};YAHOO.widget.Panel.prototype.buildMask=function(){if(!this.mask){this.mask=document.createElement("div");this.mask.id=this.id+"_mask";this.mask.className="mask";this.mask.innerHTML="&#160;";var maskClick=function(e,obj){YAHOO.util.Event.stopEvent(e);};var firstChild=document.body.firstChild;if(firstChild){document.body.insertBefore(this.mask,document.body.firstChild);}else{document.body.appendChild(this.mask);}}};YAHOO.widget.Panel.prototype.hideMask=function(){if(this.cfg.getProperty("modal")&&this.mask){this.mask.style.display="none";this.hideMaskEvent.fire();YAHOO.util.Dom.removeClass(document.body,"masked");}};YAHOO.widget.Panel.prototype.showMask=function(){if(this.cfg.getProperty("modal")&&this.mask){YAHOO.util.Dom.addClass(document.body,"masked");this.sizeMask();this.mask
 .style.display="block";this.showMaskEvent.fire();}};YAHOO.widget.Panel.prototype.sizeMask=function(){if(this.mask){this.mask.style.height=YAHOO.util.Dom.getDocumentHeight()+"px";this.mask.style.width=YAHOO.util.Dom.getDocumentWidth()+"px";}};YAHOO.widget.Panel.prototype.render=function(appendToNode){return YAHOO.widget.Panel.superclass.render.call(this,appendToNode,this.innerElement);};YAHOO.widget.Panel.prototype.destroy=function(){YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.sizeMask,this);if(this.close){YAHOO.util.Event.purgeElement(this.close);}
+YAHOO.widget.Panel.superclass.destroy.call(this);};YAHOO.widget.Panel.prototype.toString=function(){return"Panel "+this.id;};YAHOO.widget.Dialog=function(el,userConfig){YAHOO.widget.Dialog.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Dialog,YAHOO.widget.Panel);YAHOO.widget.Dialog.CSS_DIALOG="yui-dialog";YAHOO.widget.Dialog._EVENT_TYPES={"BEFORE_SUBMIT":"beforeSubmit","SUBMIT":"submit","MANUAL_SUBMIT":"manualSubmit","ASYNC_SUBMIT":"asyncSubmit","FORM_SUBMIT":"formSubmit","CANCEL":"cancel"};YAHOO.widget.Dialog._DEFAULT_CONFIG={"POST_METHOD":{key:"postmethod",value:"async"},"BUTTONS":{key:"buttons",value:"none"}};YAHOO.widget.Dialog.prototype.initDefaultConfig=function(){YAHOO.widget.Dialog.superclass.initDefaultConfig.call(this);this.callback={success:null,failure:null,argument:null};var DEFAULT_CONFIG=YAHOO.widget.Dialog._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.POST_METHOD.key,{handler:this.configPostMethod,value:DEFAULT_CONFIG.POST_M
 ETHOD.value,validator:function(val){if(val!="form"&&val!="async"&&val!="none"&&val!="manual"){return false;}else{return true;}}});this.cfg.addProperty(DEFAULT_CONFIG.BUTTONS.key,{handler:this.configButtons,value:DEFAULT_CONFIG.BUTTONS.value});};YAHOO.widget.Dialog.prototype.initEvents=function(){YAHOO.widget.Dialog.superclass.initEvents.call(this);var EVENT_TYPES=YAHOO.widget.Dialog._EVENT_TYPES;this.beforeSubmitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_SUBMIT,this);this.submitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.SUBMIT,this);this.manualSubmitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.MANUAL_SUBMIT,this);this.asyncSubmitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.ASYNC_SUBMIT,this);this.formSubmitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.FORM_SUBMIT,this);this.cancelEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CANCEL,this);};YAHOO.widget.Dialog.prototype.init=function(el,userConfig){YAHOO.widget.Dialog.superclass.init.call(this,el);this.beforeInitEven
 t.fire(YAHOO.widget.Dialog);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Dialog.CSS_DIALOG);this.cfg.setProperty("visible",false);if(userConfig){this.cfg.applyConfig(userConfig,true);}
+this.showEvent.subscribe(this.focusFirst,this,true);this.beforeHideEvent.subscribe(this.blurButtons,this,true);this.beforeRenderEvent.subscribe(function(){var buttonCfg=this.cfg.getProperty("buttons");if(buttonCfg&&buttonCfg!="none"){if(!this.footer){this.setFooter("");}}},this,true);this.initEvent.fire(YAHOO.widget.Dialog);};YAHOO.widget.Dialog.prototype.doSubmit=function(){var pm=this.cfg.getProperty("postmethod");switch(pm){case"async":var method=this.form.getAttribute("method")||'POST';method=method.toUpperCase();YAHOO.util.Connect.setForm(this.form);var cObj=YAHOO.util.Connect.asyncRequest(method,this.form.getAttribute("action"),this.callback);this.asyncSubmitEvent.fire();break;case"form":this.form.submit();this.formSubmitEvent.fire();break;case"none":case"manual":this.manualSubmitEvent.fire();break;}};YAHOO.widget.Dialog.prototype._onFormKeyDown=function(p_oEvent){var oTarget=YAHOO.util.Event.getTarget(p_oEvent),nCharCode=YAHOO.util.Event.getCharCode(p_oEvent);if(nChar
 Code==13&&oTarget.tagName&&oTarget.tagName.toUpperCase()=="INPUT"){var sType=oTarget.type;if(sType=="text"||sType=="password"||sType=="checkbox"||sType=="radio"||sType=="file"){this.defaultHtmlButton.click();}}};YAHOO.widget.Dialog.prototype.registerForm=function(){var form=this.element.getElementsByTagName("form")[0];if(!form){var formHTML="<form name=\"frm_"+this.id+"\" action=\"\"></form>";this.body.innerHTML+=formHTML;form=this.element.getElementsByTagName("form")[0];}
+this.firstFormElement=function(){for(var f=0;f<form.elements.length;f++){var el=form.elements[f];if(el.focus&&!el.disabled){if(el.type&&el.type!="hidden"){return el;}}}
+return null;}();this.lastFormElement=function(){for(var f=form.elements.length-1;f>=0;f--){var el=form.elements[f];if(el.focus&&!el.disabled){if(el.type&&el.type!="hidden"){return el;}}}
+return null;}();this.form=form;if(this.form&&(this.browser=="ie"||this.browser=="ie7"||this.browser=="gecko")){YAHOO.util.Event.addListener(this.form,"keydown",this._onFormKeyDown,null,this);}
+if(this.cfg.getProperty("modal")&&this.form){var me=this;var firstElement=this.firstFormElement||this.firstButton;if(firstElement){this.preventBackTab=new YAHOO.util.KeyListener(firstElement,{shift:true,keys:9},{fn:me.focusLast,scope:me,correctScope:true});this.showEvent.subscribe(this.preventBackTab.enable,this.preventBackTab,true);this.hideEvent.subscribe(this.preventBackTab.disable,this.preventBackTab,true);}
+var lastElement=this.lastButton||this.lastFormElement;if(lastElement){this.preventTabOut=new YAHOO.util.KeyListener(lastElement,{shift:false,keys:9},{fn:me.focusFirst,scope:me,correctScope:true});this.showEvent.subscribe(this.preventTabOut.enable,this.preventTabOut,true);this.hideEvent.subscribe(this.preventTabOut.disable,this.preventTabOut,true);}}};YAHOO.widget.Dialog.prototype.configClose=function(type,args,obj){var val=args[0];var doCancel=function(e,obj){obj.cancel();};if(val){if(!this.close){this.close=document.createElement("div");YAHOO.util.Dom.addClass(this.close,"container-close");this.close.innerHTML="&#160;";this.innerElement.appendChild(this.close);YAHOO.util.Event.addListener(this.close,"click",doCancel,this);}else{this.close.style.display="block";}}else{if(this.close){this.close.style.display="none";}}};YAHOO.widget.Dialog.prototype.configButtons=function(type,args,obj){var buttons=args[0];if(buttons!="none"){this.buttonSpan=null;this.buttonSpan=document.creat
 eElement("span");this.buttonSpan.className="button-group";for(var b=0;b<buttons.length;b++){var button=buttons[b];var htmlButton=document.createElement("button");htmlButton.setAttribute("type","button");if(button.isDefault){htmlButton.className="default";this.defaultHtmlButton=htmlButton;}
+htmlButton.appendChild(document.createTextNode(button.text));YAHOO.util.Event.addListener(htmlButton,"click",button.handler,this,true);this.buttonSpan.appendChild(htmlButton);button.htmlButton=htmlButton;if(b===0){this.firstButton=button.htmlButton;}
+if(b==(buttons.length-1)){this.lastButton=button.htmlButton;}}
+this.setFooter(this.buttonSpan);this.cfg.refireEvent("iframe");this.cfg.refireEvent("underlay");}else{if(this.buttonSpan){if(this.buttonSpan.parentNode){this.buttonSpan.parentNode.removeChild(this.buttonSpan);}
+this.buttonSpan=null;this.firstButton=null;this.lastButton=null;this.defaultHtmlButton=null;}}};YAHOO.widget.Dialog.prototype.focusFirst=function(type,args,obj){if(args){var e=args[1];if(e){YAHOO.util.Event.stopEvent(e);}}
+if(this.firstFormElement){this.firstFormElement.focus();}else{this.focusDefaultButton();}};YAHOO.widget.Dialog.prototype.focusLast=function(type,args,obj){if(args){var e=args[1];if(e){YAHOO.util.Event.stopEvent(e);}}
+var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){this.focusLastButton();}else{if(this.lastFormElement){this.lastFormElement.focus();}}};YAHOO.widget.Dialog.prototype.focusDefaultButton=function(){if(this.defaultHtmlButton){this.defaultHtmlButton.focus();}};YAHOO.widget.Dialog.prototype.blurButtons=function(){var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){var html=buttons[0].htmlButton;if(html){html.blur();}}};YAHOO.widget.Dialog.prototype.focusFirstButton=function(){var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){var html=buttons[0].htmlButton;if(html){html.focus();}}};YAHOO.widget.Dialog.prototype.focusLastButton=function(){var buttons=this.cfg.getProperty("buttons");if(buttons&&buttons instanceof Array){var html=buttons[buttons.length-1].htmlButton;if(html){html.focus();}}};YAHOO.widget.Dialog.prototype.configPostMethod=function(type,args,obj){var postmethod=args[0];this.r
 egisterForm();YAHOO.util.Event.addListener(this.form,"submit",function(e){YAHOO.util.Event.stopEvent(e);this.submit();this.form.blur();},this,true);};YAHOO.widget.Dialog.prototype.validate=function(){return true;};YAHOO.widget.Dialog.prototype.submit=function(){if(this.validate()){this.beforeSubmitEvent.fire();this.doSubmit();this.submitEvent.fire();this.hide();return true;}else{return false;}};YAHOO.widget.Dialog.prototype.cancel=function(){this.cancelEvent.fire();this.hide();};YAHOO.widget.Dialog.prototype.getData=function(){var oForm=this.form;if(oForm){var aElements=oForm.elements,nTotalElements=aElements.length,oData={},sName,oElement,nElements;for(var i=0;i<nTotalElements;i++){sName=aElements[i].name;function isFormElement(p_oElement){var sTagName=p_oElement.tagName.toUpperCase();return((sTagName=="INPUT"||sTagName=="TEXTAREA"||sTagName=="SELECT")&&p_oElement.name==sName);}
+oElement=YAHOO.util.Dom.getElementsBy(isFormElement,"*",oForm);nElements=oElement.length;if(nElements>0){if(nElements==1){oElement=oElement[0];var sType=oElement.type,sTagName=oElement.tagName.toUpperCase();switch(sTagName){case"INPUT":if(sType=="checkbox"){oData[sName]=oElement.checked;}
+else if(sType!="radio"){oData[sName]=oElement.value;}
+break;case"TEXTAREA":oData[sName]=oElement.value;break;case"SELECT":var aOptions=oElement.options,nOptions=aOptions.length,aValues=[],oOption,sValue;for(var n=0;n<nOptions;n++){oOption=aOptions[n];if(oOption.selected){sValue=oOption.value;if(!sValue||sValue===""){sValue=oOption.text;}
+aValues[aValues.length]=sValue;}}
+oData[sName]=aValues;break;}}
+else{var sType=oElement[0].type;switch(sType){case"radio":var oRadio;for(var n=0;n<nElements;n++){oRadio=oElement[n];if(oRadio.checked){oData[sName]=oRadio.value;break;}}
+break;case"checkbox":var aValues=[],oCheckbox;for(var n=0;n<nElements;n++){oCheckbox=oElement[n];if(oCheckbox.checked){aValues[aValues.length]=oCheckbox.value;}}
+oData[sName]=aValues;break;}}}}}
+return oData;};YAHOO.widget.Dialog.prototype.destroy=function(){var Event=YAHOO.util.Event,oForm=this.form,oFooter=this.footer;if(oFooter){var aButtons=oFooter.getElementsByTagName("button");if(aButtons&&aButtons.length>0){var i=aButtons.length-1;do{Event.purgeElement(aButtons[i],false,"click");}
+while(i--);}}
+if(oForm){Event.purgeElement(oForm);this.body.removeChild(oForm);this.form=null;}
+YAHOO.widget.Dialog.superclass.destroy.call(this);};YAHOO.widget.Dialog.prototype.toString=function(){return"Dialog "+this.id;};YAHOO.widget.SimpleDialog=function(el,userConfig){YAHOO.widget.SimpleDialog.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.SimpleDialog,YAHOO.widget.Dialog);YAHOO.widget.SimpleDialog.ICON_BLOCK="blckicon";YAHOO.widget.SimpleDialog.ICON_ALARM="alrticon";YAHOO.widget.SimpleDialog.ICON_HELP="hlpicon";YAHOO.widget.SimpleDialog.ICON_INFO="infoicon";YAHOO.widget.SimpleDialog.ICON_WARN="warnicon";YAHOO.widget.SimpleDialog.ICON_TIP="tipicon";YAHOO.widget.SimpleDialog.CSS_SIMPLEDIALOG="yui-simple-dialog";YAHOO.widget.SimpleDialog._DEFAULT_CONFIG={"ICON":{key:"icon",value:"none",suppressEvent:true},"TEXT":{key:"text",value:"",suppressEvent:true,supercedes:["icon"]}};YAHOO.widget.SimpleDialog.prototype.initDefaultConfig=function(){YAHOO.widget.SimpleDialog.superclass.initDefaultConfig.call(this);var DEFAULT_CONFIG=YAHOO.widget.Simp
 leDialog._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.ICON.key,{handler:this.configIcon,value:DEFAULT_CONFIG.ICON.value,suppressEvent:DEFAULT_CONFIG.ICON.suppressEvent});this.cfg.addProperty(DEFAULT_CONFIG.TEXT.key,{handler:this.configText,value:DEFAULT_CONFIG.TEXT.value,suppressEvent:DEFAULT_CONFIG.TEXT.suppressEvent,supercedes:DEFAULT_CONFIG.TEXT.supercedes});};YAHOO.widget.SimpleDialog.prototype.init=function(el,userConfig){YAHOO.widget.SimpleDialog.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.SimpleDialog);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.SimpleDialog.CSS_SIMPLEDIALOG);this.cfg.queueProperty("postmethod","manual");if(userConfig){this.cfg.applyConfig(userConfig,true);}
+this.beforeRenderEvent.subscribe(function(){if(!this.body){this.setBody("");}},this,true);this.initEvent.fire(YAHOO.widget.SimpleDialog);};YAHOO.widget.SimpleDialog.prototype.registerForm=function(){YAHOO.widget.SimpleDialog.superclass.registerForm.call(this);this.form.innerHTML+="<input type=\"hidden\" name=\""+this.id+"\" value=\"\"/>";};YAHOO.widget.SimpleDialog.prototype.configIcon=function(type,args,obj){var icon=args[0];if(icon&&icon!="none"){var iconHTML="";if(icon.indexOf(".")==-1){iconHTML="<span class=\"yui-icon "+icon+"\" >&#160;</span>";}else{iconHTML="<img src=\""+this.imageRoot+icon+"\" class=\"yui-icon\" />";}
+this.body.innerHTML=iconHTML+this.body.innerHTML;}};YAHOO.widget.SimpleDialog.prototype.configText=function(type,args,obj){var text=args[0];if(text){this.setBody(text);this.cfg.refireEvent("icon");}};YAHOO.widget.SimpleDialog.prototype.toString=function(){return"SimpleDialog "+this.id;};YAHOO.widget.ContainerEffect=function(overlay,attrIn,attrOut,targetElement,animClass){if(!animClass){animClass=YAHOO.util.Anim;}
+this.overlay=overlay;this.attrIn=attrIn;this.attrOut=attrOut;this.targetElement=targetElement||overlay.element;this.animClass=animClass;};YAHOO.widget.ContainerEffect.prototype.init=function(){this.beforeAnimateInEvent=new YAHOO.util.CustomEvent("beforeAnimateIn",this);this.beforeAnimateOutEvent=new YAHOO.util.CustomEvent("beforeAnimateOut",this);this.animateInCompleteEvent=new YAHOO.util.CustomEvent("animateInComplete",this);this.animateOutCompleteEvent=new YAHOO.util.CustomEvent("animateOutComplete",this);this.animIn=new this.animClass(this.targetElement,this.attrIn.attributes,this.attrIn.duration,this.attrIn.method);this.animIn.onStart.subscribe(this.handleStartAnimateIn,this);this.animIn.onTween.subscribe(this.handleTweenAnimateIn,this);this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn,this);this.animOut=new this.animClass(this.targetElement,this.attrOut.attributes,this.attrOut.duration,this.attrOut.method);this.animOut.onStart.subscribe(this.handleStartAnima
 teOut,this);this.animOut.onTween.subscribe(this.handleTweenAnimateOut,this);this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut,this);};YAHOO.widget.ContainerEffect.prototype.animateIn=function(){this.beforeAnimateInEvent.fire();this.animIn.animate();};YAHOO.widget.ContainerEffect.prototype.animateOut=function(){this.beforeAnimateOutEvent.fire();this.animOut.animate();};YAHOO.widget.ContainerEffect.prototype.handleStartAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleStartAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.toString=function(){var output="Containe
 rEffect";if(this.overlay){output+=" ["+this.overlay.toString()+"]";}
+return output;};YAHOO.widget.ContainerEffect.FADE=function(overlay,dur){var fade=new YAHOO.widget.ContainerEffect(overlay,{attributes:{opacity:{from:0,to:1}},duration:dur,method:YAHOO.util.Easing.easeIn},{attributes:{opacity:{to:0}},duration:dur,method:YAHOO.util.Easing.easeOut},overlay.element);fade.handleStartAnimateIn=function(type,args,obj){YAHOO.util.Dom.addClass(obj.overlay.element,"hide-select");if(!obj.overlay.underlay){obj.overlay.cfg.refireEvent("underlay");}
+if(obj.overlay.underlay){obj.initialUnderlayOpacity=YAHOO.util.Dom.getStyle(obj.overlay.underlay,"opacity");obj.overlay.underlay.style.filter=null;}
+YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","visible");YAHOO.util.Dom.setStyle(obj.overlay.element,"opacity",0);};fade.handleCompleteAnimateIn=function(type,args,obj){YAHOO.util.Dom.removeClass(obj.overlay.element,"hide-select");if(obj.overlay.element.style.filter){obj.overlay.element.style.filter=null;}
+if(obj.overlay.underlay){YAHOO.util.Dom.setStyle(obj.overlay.underlay,"opacity",obj.initialUnderlayOpacity);}
+obj.overlay.cfg.refireEvent("iframe");obj.animateInCompleteEvent.fire();};fade.handleStartAnimateOut=function(type,args,obj){YAHOO.util.Dom.addClass(obj.overlay.element,"hide-select");if(obj.overlay.underlay){obj.overlay.underlay.style.filter=null;}};fade.handleCompleteAnimateOut=function(type,args,obj){YAHOO.util.Dom.removeClass(obj.overlay.element,"hide-select");if(obj.overlay.element.style.filter){obj.overlay.element.style.filter=null;}
+YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","hidden");YAHOO.util.Dom.setStyle(obj.overlay.element,"opacity",1);obj.overlay.cfg.refireEvent("iframe");obj.animateOutCompleteEvent.fire();};fade.init();return fade;};YAHOO.widget.ContainerEffect.SLIDE=function(overlay,dur){var x=overlay.cfg.getProperty("x")||YAHOO.util.Dom.getX(overlay.element);var y=overlay.cfg.getProperty("y")||YAHOO.util.Dom.getY(overlay.element);var clientWidth=YAHOO.util.Dom.getClientWidth();var offsetWidth=overlay.element.offsetWidth;var slide=new YAHOO.widget.ContainerEffect(overlay,{attributes:{points:{to:[x,y]}},duration:dur,method:YAHOO.util.Easing.easeIn},{attributes:{points:{to:[(clientWidth+25),y]}},duration:dur,method:YAHOO.util.Easing.easeOut},overlay.element,YAHOO.util.Motion);slide.handleStartAnimateIn=function(type,args,obj){obj.overlay.element.style.left=(-25-offsetWidth)+"px";obj.overlay.element.style.top=y+"px";};slide.handleTweenAnimateIn=function(type,args,obj){var pos=YAHOO.ut
 il.Dom.getXY(obj.overlay.element);var currentX=pos[0];var currentY=pos[1];if(YAHOO.util.Dom.getStyle(obj.overlay.element,"visibility")=="hidden"&&currentX<x){YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","visible");}
+obj.overlay.cfg.setProperty("xy",[currentX,currentY],true);obj.overlay.cfg.refireEvent("iframe");};slide.handleCompleteAnimateIn=function(type,args,obj){obj.overlay.cfg.setProperty("xy",[x,y],true);obj.startX=x;obj.startY=y;obj.overlay.cfg.refireEvent("iframe");obj.animateInCompleteEvent.fire();};slide.handleStartAnimateOut=function(type,args,obj){var vw=YAHOO.util.Dom.getViewportWidth();var pos=YAHOO.util.Dom.getXY(obj.overlay.element);var yso=pos[1];var currentTo=obj.animOut.attributes.points.to;obj.animOut.attributes.points.to=[(vw+25),yso];};slide.handleTweenAnimateOut=function(type,args,obj){var pos=YAHOO.util.Dom.getXY(obj.overlay.element);var xto=pos[0];var yto=pos[1];obj.overlay.cfg.setProperty("xy",[xto,yto],true);obj.overlay.cfg.refireEvent("iframe");};slide.handleCompleteAnimateOut=function(type,args,obj){YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","hidden");obj.overlay.cfg.setProperty("xy",[x,y]);obj.animateOutCompleteEvent.fire();};slide.init();retu
 rn slide;};YAHOO.register("container",YAHOO.widget.Module,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/js/yui/container/container_core-min.js
===================================================================
--- plog/trunk/js/yui/container/container_core-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/container/container_core-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,86 +1,100 @@
-/* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.4 */
-YAHOO.util.Config=function(owner){if(owner){this.init(owner);}};YAHOO.util.Config.prototype={owner:null,configChangedEvent:null,queueInProgress:false,addProperty:function(key,propertyObject){},getConfig:function(){},getProperty:function(key){},resetProperty:function(key){},setProperty:function(key,value,silent){},queueProperty:function(key,value){},refireEvent:function(key){},applyConfig:function(userConfig,init){},refresh:function(){},fireQueue:function(){},subscribeToConfigEvent:function(key,handler,obj,override){},unsubscribeFromConfigEvent:function(key,handler,obj){},checkBoolean:function(val){if(typeof val=='boolean'){return true;}else{return false;}},checkNumber:function(val){if(isNaN(val)){return false;}else{return true;}}};YAHOO.util.Config.prototype.init=function(owner){this.owner=owner;this.configChangedEvent=new YAHOO.util.CustomEvent("configChanged");this.queueInProgress=false;var config={};var initialConfig={};var eventQueue=[];var fireEvent=function(key,value){
 key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){property.event.fire(value);}};this.addProperty=function(key,propertyObject){key=key.toLowerCase();config[key]=propertyObject;propertyObject.event=new YAHOO.util.CustomEvent(key);propertyObject.key=key;if(propertyObject.handler){propertyObject.event.subscribe(propertyObject.handler,this.owner,true);}
-this.setProperty(key,propertyObject.value,true);if(!propertyObject.suppressEvent){this.queueProperty(key,propertyObject.value);}};this.getConfig=function(){var cfg={};for(var prop in config){var property=config[prop];if(typeof property!='undefined'&&property.event){cfg[prop]=property.value;}}
-return cfg;};this.getProperty=function(key){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){return property.value;}else{return undefined;}};this.resetProperty=function(key){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){this.setProperty(key,initialConfig[key].value);}else{return undefined;}};this.setProperty=function(key,value,silent){key=key.toLowerCase();if(this.queueInProgress&&!silent){this.queueProperty(key,value);return true;}else{var property=config[key];if(typeof property!='undefined'&&property.event){if(property.validator&&!property.validator(value)){return false;}else{property.value=value;if(!silent){fireEvent(key,value);this.configChangedEvent.fire([key,value]);}
-return true;}}else{return false;}}};this.queueProperty=function(key,value){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){if(typeof value!='undefined'&&property.validator&&!property.validator(value)){return false;}else{if(typeof value!='undefined'){property.value=value;}else{value=property.value;}
-var foundDuplicate=false;for(var i=0;i<eventQueue.length;i++){var queueItem=eventQueue[i];if(queueItem){var queueItemKey=queueItem[0];var queueItemValue=queueItem[1];if(queueItemKey.toLowerCase()==key){eventQueue[i]=null;eventQueue.push([key,(typeof value!='undefined'?value:queueItemValue)]);foundDuplicate=true;break;}}}
-if(!foundDuplicate&&typeof value!='undefined'){eventQueue.push([key,value]);}}
-if(property.supercedes){for(var s=0;s<property.supercedes.length;s++){var supercedesCheck=property.supercedes[s];for(var q=0;q<eventQueue.length;q++){var queueItemCheck=eventQueue[q];if(queueItemCheck){var queueItemCheckKey=queueItemCheck[0];var queueItemCheckValue=queueItemCheck[1];if(queueItemCheckKey.toLowerCase()==supercedesCheck.toLowerCase()){eventQueue.push([queueItemCheckKey,queueItemCheckValue]);eventQueue[q]=null;break;}}}}}
-return true;}else{return false;}};this.refireEvent=function(key){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event&&typeof property.value!='undefined'){if(this.queueInProgress){this.queueProperty(key);}else{fireEvent(key,property.value);}}};this.applyConfig=function(userConfig,init){if(init){initialConfig=userConfig;}
-for(var prop in userConfig){this.queueProperty(prop,userConfig[prop]);}};this.refresh=function(){for(var prop in config){this.refireEvent(prop);}};this.fireQueue=function(){this.queueInProgress=true;for(var i=0;i<eventQueue.length;i++){var queueItem=eventQueue[i];if(queueItem){var key=queueItem[0];var value=queueItem[1];var property=config[key];property.value=value;fireEvent(key,value);}}
-this.queueInProgress=false;eventQueue=[];};this.subscribeToConfigEvent=function(key,handler,obj,override){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){if(!YAHOO.util.Config.alreadySubscribed(property.event,handler,obj)){property.event.subscribe(handler,obj,override);}
-return true;}else{return false;}};this.unsubscribeFromConfigEvent=function(key,handler,obj){key=key.toLowerCase();var property=config[key];if(typeof property!='undefined'&&property.event){return property.event.unsubscribe(handler,obj);}else{return false;}};this.toString=function(){var output="Config";if(this.owner){output+=" ["+this.owner.toString()+"]";}
-return output;};this.outputEventQueue=function(){var output="";for(var q=0;q<eventQueue.length;q++){var queueItem=eventQueue[q];if(queueItem){output+=queueItem[0]+"="+queueItem[1]+", ";}}
-return output;};};YAHOO.util.Config.alreadySubscribed=function(evt,fn,obj){for(var e=0;e<evt.subscribers.length;e++){var subsc=evt.subscribers[e];if(subsc&&subsc.obj==obj&&subsc.fn==fn){return true;}}
-return false;};YAHOO.widget.Module=function(el,userConfig){if(el){this.init(el,userConfig);}};YAHOO.widget.Module.IMG_ROOT="http://us.i1.yimg.com/us.yimg.com/i/";YAHOO.widget.Module.IMG_ROOT_SSL="https://a248.e.akamai.net/sec.yimg.com/i/";YAHOO.widget.Module.CSS_MODULE="module";YAHOO.widget.Module.CSS_HEADER="hd";YAHOO.widget.Module.CSS_BODY="bd";YAHOO.widget.Module.CSS_FOOTER="ft";YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL="javascript:false";YAHOO.widget.Module.prototype={constructor:YAHOO.widget.Module,element:null,header:null,body:null,footer:null,id:null,childNodesInDOM:null,imageRoot:YAHOO.widget.Module.IMG_ROOT,beforeInitEvent:null,initEvent:null,appendEvent:null,beforeRenderEvent:null,renderEvent:null,changeHeaderEvent:null,changeBodyEvent:null,changeFooterEvent:null,changeContentEvent:null,destroyEvent:null,beforeShowEvent:null,showEvent:null,beforeHideEvent:null,hideEvent:null,initEvents:function(){this.beforeInitEvent=new YAHOO.util.CustomEvent("beforeInit");thi
 s.initEvent=new YAHOO.util.CustomEvent("init");this.appendEvent=new YAHOO.util.CustomEvent("append");this.beforeRenderEvent=new YAHOO.util.CustomEvent("beforeRender");this.renderEvent=new YAHOO.util.CustomEvent("render");this.changeHeaderEvent=new YAHOO.util.CustomEvent("changeHeader");this.changeBodyEvent=new YAHOO.util.CustomEvent("changeBody");this.changeFooterEvent=new YAHOO.util.CustomEvent("changeFooter");this.changeContentEvent=new YAHOO.util.CustomEvent("changeContent");this.destroyEvent=new YAHOO.util.CustomEvent("destroy");this.beforeShowEvent=new YAHOO.util.CustomEvent("beforeShow");this.showEvent=new YAHOO.util.CustomEvent("show");this.beforeHideEvent=new YAHOO.util.CustomEvent("beforeHide");this.hideEvent=new YAHOO.util.CustomEvent("hide");},platform:function(){var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1){return"windows";}else if(ua.indexOf("macintosh")!=-1){return"mac";}else{return false;}}(),browser:function()
 {var ua=navigator.userAgent.toLowerCase();if(ua.indexOf('opera')!=-1){return'opera';}else if(ua.indexOf('msie 7')!=-1){return'ie7';}else if(ua.indexOf('msie')!=-1){return'ie';}else if(ua.indexOf('safari')!=-1){return'safari';}else if(ua.indexOf('gecko')!=-1){return'gecko';}else{return false;}}(),isSecure:function(){if(window.location.href.toLowerCase().indexOf("https")===0){return true;}else{return false;}}(),initDefaultConfig:function(){this.cfg.addProperty("visible",{value:true,handler:this.configVisible,validator:this.cfg.checkBoolean});this.cfg.addProperty("effect",{suppressEvent:true,supercedes:["visible"]});this.cfg.addProperty("monitorresize",{value:true,handler:this.configMonitorResize});},init:function(el,userConfig){this.initEvents();this.beforeInitEvent.fire(YAHOO.widget.Module);this.cfg=new YAHOO.util.Config(this);if(this.isSecure){this.imageRoot=YAHOO.widget.Module.IMG_ROOT_SSL;}
-if(typeof el=="string"){var elId=el;el=document.getElementById(el);if(!el){el=document.createElement("DIV");el.id=elId;}}
-this.element=el;if(el.id){this.id=el.id;}
-var childNodes=this.element.childNodes;if(childNodes){for(var i=0;i<childNodes.length;i++){var child=childNodes[i];switch(child.className){case YAHOO.widget.Module.CSS_HEADER:this.header=child;break;case YAHOO.widget.Module.CSS_BODY:this.body=child;break;case YAHOO.widget.Module.CSS_FOOTER:this.footer=child;break;}}}
-this.initDefaultConfig();YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Module.CSS_MODULE);if(userConfig){this.cfg.applyConfig(userConfig,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.renderEvent,this.cfg.fireQueue,this.cfg)){this.renderEvent.subscribe(this.cfg.fireQueue,this.cfg,true);}
-this.initEvent.fire(YAHOO.widget.Module);},initResizeMonitor:function(){if(this.browser!="opera"){var resizeMonitor=document.getElementById("_yuiResizeMonitor");if(!resizeMonitor){resizeMonitor=document.createElement("iframe");var bIE=(this.browser.indexOf("ie")===0);if(this.isSecure&&YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL&&bIE){resizeMonitor.src=YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL;}
-resizeMonitor.id="_yuiResizeMonitor";resizeMonitor.style.visibility="hidden";document.body.appendChild(resizeMonitor);resizeMonitor.style.width="10em";resizeMonitor.style.height="10em";resizeMonitor.style.position="absolute";var nLeft=-1*resizeMonitor.offsetWidth,nTop=-1*resizeMonitor.offsetHeight;resizeMonitor.style.top=nTop+"px";resizeMonitor.style.left=nLeft+"px";resizeMonitor.style.borderStyle="none";resizeMonitor.style.borderWidth="0";YAHOO.util.Dom.setStyle(resizeMonitor,"opacity","0");resizeMonitor.style.visibility="visible";if(!bIE){var doc=resizeMonitor.contentWindow.document;doc.open();doc.close();}}
-if(resizeMonitor&&resizeMonitor.contentWindow){this.resizeMonitor=resizeMonitor;YAHOO.util.Event.addListener(this.resizeMonitor.contentWindow,"resize",this.onDomResize,this,true);}}},onDomResize:function(e,obj){var nLeft=-1*this.resizeMonitor.offsetWidth,nTop=-1*this.resizeMonitor.offsetHeight;this.resizeMonitor.style.top=nTop+"px";this.resizeMonitor.style.left=nLeft+"px";},setHeader:function(headerContent){if(!this.header){this.header=document.createElement("DIV");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
-if(typeof headerContent=="string"){this.header.innerHTML=headerContent;}else{this.header.innerHTML="";this.header.appendChild(headerContent);}
-this.changeHeaderEvent.fire(headerContent);this.changeContentEvent.fire();},appendToHeader:function(element){if(!this.header){this.header=document.createElement("DIV");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
-this.header.appendChild(element);this.changeHeaderEvent.fire(element);this.changeContentEvent.fire();},setBody:function(bodyContent){if(!this.body){this.body=document.createElement("DIV");this.body.className=YAHOO.widget.Module.CSS_BODY;}
-if(typeof bodyContent=="string")
-{this.body.innerHTML=bodyContent;}else{this.body.innerHTML="";this.body.appendChild(bodyContent);}
-this.changeBodyEvent.fire(bodyContent);this.changeContentEvent.fire();},appendToBody:function(element){if(!this.body){this.body=document.createElement("DIV");this.body.className=YAHOO.widget.Module.CSS_BODY;}
-this.body.appendChild(element);this.changeBodyEvent.fire(element);this.changeContentEvent.fire();},setFooter:function(footerContent){if(!this.footer){this.footer=document.createElement("DIV");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
-if(typeof footerContent=="string"){this.footer.innerHTML=footerContent;}else{this.footer.innerHTML="";this.footer.appendChild(footerContent);}
-this.changeFooterEvent.fire(footerContent);this.changeContentEvent.fire();},appendToFooter:function(element){if(!this.footer){this.footer=document.createElement("DIV");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
-this.footer.appendChild(element);this.changeFooterEvent.fire(element);this.changeContentEvent.fire();},render:function(appendToNode,moduleElement){this.beforeRenderEvent.fire();if(!moduleElement){moduleElement=this.element;}
-var me=this;var appendTo=function(element){if(typeof element=="string"){element=document.getElementById(element);}
-if(element){element.appendChild(me.element);me.appendEvent.fire();}};if(appendToNode){appendTo(appendToNode);}else{if(!YAHOO.util.Dom.inDocument(this.element)){return false;}}
-if(this.header&&!YAHOO.util.Dom.inDocument(this.header)){var firstChild=moduleElement.firstChild;if(firstChild){moduleElement.insertBefore(this.header,firstChild);}else{moduleElement.appendChild(this.header);}}
-if(this.body&&!YAHOO.util.Dom.inDocument(this.body)){if(this.footer&&YAHOO.util.Dom.isAncestor(this.moduleElement,this.footer)){moduleElement.insertBefore(this.body,this.footer);}else{moduleElement.appendChild(this.body);}}
-if(this.footer&&!YAHOO.util.Dom.inDocument(this.footer)){moduleElement.appendChild(this.footer);}
-this.renderEvent.fire();return true;},destroy:function(){if(this.element){var parent=this.element.parentNode;}
-if(parent){parent.removeChild(this.element);}
-this.element=null;this.header=null;this.body=null;this.footer=null;this.destroyEvent.fire();},show:function(){this.cfg.setProperty("visible",true);},hide:function(){this.cfg.setProperty("visible",false);},configVisible:function(type,args,obj){var visible=args[0];if(visible){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","block");this.showEvent.fire();}else{this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","none");this.hideEvent.fire();}},configMonitorResize:function(type,args,obj){var monitor=args[0];if(monitor){this.initResizeMonitor();}else{YAHOO.util.Event.removeListener(this.resizeMonitor,"resize",this.onDomResize);this.resizeMonitor=null;}}};YAHOO.widget.Module.prototype.toString=function(){return"Module "+this.id;};YAHOO.widget.Overlay=function(el,userConfig){YAHOO.widget.Overlay.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Overlay,YAHOO.widget.Module);YAHOO.widget.Overlay.IFRAME_SRC="p
 romo/m/irs/blank.gif";YAHOO.widget.Overlay.TOP_LEFT="tl";YAHOO.widget.Overlay.TOP_RIGHT="tr";YAHOO.widget.Overlay.BOTTOM_LEFT="bl";YAHOO.widget.Overlay.BOTTOM_RIGHT="br";YAHOO.widget.Overlay.CSS_OVERLAY="overlay";YAHOO.widget.Overlay.prototype.beforeMoveEvent=null;YAHOO.widget.Overlay.prototype.moveEvent=null;YAHOO.widget.Overlay.prototype.init=function(el,userConfig){YAHOO.widget.Overlay.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Overlay);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Overlay.CSS_OVERLAY);if(userConfig){this.cfg.applyConfig(userConfig,true);}
-if(this.platform=="mac"&&this.browser=="gecko"){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrollbars,this)){this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrollbars,this)){this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true);}}
-this.initEvent.fire(YAHOO.widget.Overlay);};YAHOO.widget.Overlay.prototype.initEvents=function(){YAHOO.widget.Overlay.superclass.initEvents.call(this);this.beforeMoveEvent=new YAHOO.util.CustomEvent("beforeMove",this);this.moveEvent=new YAHOO.util.CustomEvent("move",this);};YAHOO.widget.Overlay.prototype.initDefaultConfig=function(){YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this);this.cfg.addProperty("x",{handler:this.configX,validator:this.cfg.checkNumber,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("y",{handler:this.configY,validator:this.cfg.checkNumber,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("xy",{handler:this.configXY,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("context",{handler:this.configContext,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("fixedcenter",{value:false,handler:this.configFixedCenter,validator:this.cfg.checkBoolean,supercedes:["iframe","visible"]});this.cfg.add
 Property("width",{handler:this.configWidth,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("height",{handler:this.configHeight,suppressEvent:true,supercedes:["iframe"]});this.cfg.addProperty("zIndex",{value:null,handler:this.configzIndex});this.cfg.addProperty("constraintoviewport",{value:false,handler:this.configConstrainToViewport,validator:this.cfg.checkBoolean,supercedes:["iframe","x","y","xy"]});this.cfg.addProperty("iframe",{value:(this.browser=="ie"?true:false),handler:this.configIframe,validator:this.cfg.checkBoolean,supercedes:["zIndex"]});};YAHOO.widget.Overlay.prototype.moveTo=function(x,y){this.cfg.setProperty("xy",[x,y]);};YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"show-scrollbars");YAHOO.util.Dom.addClass(this.element,"hide-scrollbars");};YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"hide-scrollbars");YAHOO.util.Dom.addClass
 (this.element,"show-scrollbars");};YAHOO.widget.Overlay.prototype.configVisible=function(type,args,obj){var visible=args[0];var currentVis=YAHOO.util.Dom.getStyle(this.element,"visibility");var effect=this.cfg.getProperty("effect");var effectInstances=[];if(effect){if(effect instanceof Array){for(var i=0;i<effect.length;i++){var eff=effect[i];effectInstances[effectInstances.length]=eff.effect(this,eff.duration);}}else{effectInstances[effectInstances.length]=effect.effect(this,effect.duration);}}
-var isMacGecko=(this.platform=="mac"&&this.browser=="gecko");if(visible){if(isMacGecko){this.showMacGeckoScrollbars();}
-if(effect){if(visible){if(currentVis!="visible"){this.beforeShowEvent.fire();for(var j=0;j<effectInstances.length;j++){var e=effectInstances[j];if(j===0&&!YAHOO.util.Config.alreadySubscribed(e.animateInCompleteEvent,this.showEvent.fire,this.showEvent)){e.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,true);}
-e.animateIn();}}}}else{if(currentVis!="visible"){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","visible");this.cfg.refireEvent("iframe");this.showEvent.fire();}}}else{if(isMacGecko){this.hideMacGeckoScrollbars();}
-if(effect){if(currentVis=="visible"){this.beforeHideEvent.fire();for(var k=0;k<effectInstances.length;k++){var h=effectInstances[k];if(k===0&&!YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEvent.fire,this.hideEvent)){h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,true);}
-h.animateOut();}}}else{if(currentVis=="visible"){this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","hidden");this.cfg.refireEvent("iframe");this.hideEvent.fire();}}}};YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent=function(){if(this.cfg.getProperty("visible")){this.center();}};YAHOO.widget.Overlay.prototype.configFixedCenter=function(type,args,obj){var val=args[0];if(val){this.center();if(!YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent,this.center,this)){this.beforeShowEvent.subscribe(this.center,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowScrollEvent.subscribe(this.doCenterOnDOMEvent,this,true);}}else{YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);}};YAHOO.widget.Overlay.prototype.configHeight=function(type,args,obj){var height=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"height",height);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configWidth=function(type,args,obj){var width=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"width",width);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configzIndex=function(type,args,obj){var zIndex=args[0];var el=this.element;if(!zIndex){zIndex=YAHOO.util.Dom.getStyle(el,"zIndex");if(!zIndex||isNaN(zIndex)){zIndex=0;}}
-if(this.iframe){if(zIndex<=0){zIndex=1;}
-YAHOO.util.Dom.setStyle(this.iframe,"zIndex",(zIndex-1));}
-YAHOO.util.Dom.setStyle(el,"zIndex",zIndex);this.cfg.setProperty("zIndex",zIndex,true);};YAHOO.widget.Overlay.prototype.configXY=function(type,args,obj){var pos=args[0];var x=pos[0];var y=pos[1];this.cfg.setProperty("x",x);this.cfg.setProperty("y",y);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configX=function(type,args,obj){var x=args[0];var y=this.cfg.getProperty("y");this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setX(this.element,x,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configY=function(type,args,obj){var x=this.cfg.getProperty("x");var y=args[0];this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.before
 MoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setY(this.element,y,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.showIframe=function(){if(this.iframe){this.iframe.style.display="block";}}
-YAHOO.widget.Overlay.prototype.hideIframe=function(){if(this.iframe){this.iframe.style.display="none";}}
-YAHOO.widget.Overlay.prototype.configIframe=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showIframe,this)){this.showEvent.subscribe(this.showIframe,this,true);}
-if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideIframe,this)){this.hideEvent.subscribe(this.hideIframe,this,true);}
-var x=this.cfg.getProperty("x");var y=this.cfg.getProperty("y");if(!x||!y){this.syncPosition();x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");}
-if(!isNaN(x)&&!isNaN(y)){if(!this.iframe){this.iframe=document.createElement("iframe");if(this.isSecure){this.iframe.src=this.imageRoot+YAHOO.widget.Overlay.IFRAME_SRC;}
-var parent=this.element.parentNode;if(parent){parent.appendChild(this.iframe);}else{document.body.appendChild(this.iframe);}
-YAHOO.util.Dom.setStyle(this.iframe,"position","absolute");YAHOO.util.Dom.setStyle(this.iframe,"border","none");YAHOO.util.Dom.setStyle(this.iframe,"margin","0");YAHOO.util.Dom.setStyle(this.iframe,"padding","0");YAHOO.util.Dom.setStyle(this.iframe,"opacity","0");if(this.cfg.getProperty("visible")){this.showIframe();}else{this.hideIframe();}}
-var iframeDisplay=YAHOO.util.Dom.getStyle(this.iframe,"display");if(iframeDisplay=="none"){this.iframe.style.display="block";}
-YAHOO.util.Dom.setXY(this.iframe,[x,y]);var width=this.element.clientWidth;var height=this.element.clientHeight;YAHOO.util.Dom.setStyle(this.iframe,"width",(width+2)+"px");YAHOO.util.Dom.setStyle(this.iframe,"height",(height+2)+"px");if(iframeDisplay=="none"){this.iframe.style.display="none";}}}else{if(this.iframe){this.iframe.style.display="none";}
-this.showEvent.unsubscribe(this.showIframe,this);this.hideEvent.unsubscribe(this.hideIframe,this);}};YAHOO.widget.Overlay.prototype.configConstrainToViewport=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.beforeMoveEvent,this.enforceConstraints,this)){this.beforeMoveEvent.subscribe(this.enforceConstraints,this,true);}}else{this.beforeMoveEvent.unsubscribe(this.enforceConstraints,this);}};YAHOO.widget.Overlay.prototype.configContext=function(type,args,obj){var contextArgs=args[0];if(contextArgs){var contextEl=contextArgs[0];var elementMagnetCorner=contextArgs[1];var contextMagnetCorner=contextArgs[2];if(contextEl){if(typeof contextEl=="string"){this.cfg.setProperty("context",[document.getElementById(contextEl),elementMagnetCorner,contextMagnetCorner],true);}
-if(elementMagnetCorner&&contextMagnetCorner){this.align(elementMagnetCorner,contextMagnetCorner);}}}};YAHOO.widget.Overlay.prototype.align=function(elementAlign,contextAlign){var contextArgs=this.cfg.getProperty("context");if(contextArgs){var context=contextArgs[0];var element=this.element;var me=this;if(!elementAlign){elementAlign=contextArgs[1];}
-if(!contextAlign){contextAlign=contextArgs[2];}
-if(element&&context){var elementRegion=YAHOO.util.Dom.getRegion(element);var contextRegion=YAHOO.util.Dom.getRegion(context);var doAlign=function(v,h){switch(elementAlign){case YAHOO.widget.Overlay.TOP_LEFT:me.moveTo(h,v);break;case YAHOO.widget.Overlay.TOP_RIGHT:me.moveTo(h-element.offsetWidth,v);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:me.moveTo(h,v-element.offsetHeight);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:me.moveTo(h-element.offsetWidth,v-element.offsetHeight);break;}};switch(contextAlign){case YAHOO.widget.Overlay.TOP_LEFT:doAlign(contextRegion.top,contextRegion.left);break;case YAHOO.widget.Overlay.TOP_RIGHT:doAlign(contextRegion.top,contextRegion.right);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:doAlign(contextRegion.bottom,contextRegion.left);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:doAlign(contextRegion.bottom,contextRegion.right);break;}}}};YAHOO.widget.Overlay.prototype.enforceConstraints=function(type,args,obj){var pos=args[0];var x=pos[0];var y=p
 os[1];var offsetHeight=this.element.offsetHeight;var offsetWidth=this.element.offsetWidth;var viewPortWidth=YAHOO.util.Dom.getViewportWidth();var viewPortHeight=YAHOO.util.Dom.getViewportHeight();var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var topConstraint=scrollY+10;var leftConstraint=scrollX+10;var bottomConstraint=scrollY+viewPortHeight-offsetHeight-10;var rightConstraint=scrollX+viewPortWidth-offsetWidth-10;if(x<leftConstraint){x=leftConstraint;}else if(x>rightConstraint){x=rightConstraint;}
-if(y<topConstraint){y=topConstraint;}else if(y>bottomConstraint){y=bottomConstraint;}
-this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.cfg.setProperty("xy",[x,y],true);};YAHOO.widget.Overlay.prototype.center=function(){var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var viewPortWidth=YAHOO.util.Dom.getClientWidth();var viewPortHeight=YAHOO.util.Dom.getClientHeight();var elementWidth=this.element.offsetWidth;var elementHeight=this.element.offsetHeight;var x=(viewPortWidth/2)-(elementWidth/2)+scrollX;var y=(viewPortHeight/2)-(elementHeight/2)+scrollY;this.element.style.left=parseInt(x,10)+"px";this.element.style.top=parseInt(y,10)+"px";this.syncPosition();this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.syncPosition=function(){var pos=YAHOO.util.Dom.getXY(this.element);this.cfg.setProperty("x",pos[0],true);this.cfg.setProperty("y",pos[1],true);this.cfg.setProperty("xy",pos,true);};YAHOO.widget.Overlay.prototype.onDomResize=funct
 ion(e,obj){YAHOO.widget.Overlay.superclass.onDomResize.call(this,e,obj);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.destroy=function(){if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);}
-this.iframe=null;YAHOO.widget.Overlay.superclass.destroy.call(this);};YAHOO.widget.Overlay.prototype.toString=function(){return"Overlay "+this.id;};YAHOO.widget.Overlay.windowScrollEvent=new YAHOO.util.CustomEvent("windowScroll");YAHOO.widget.Overlay.windowResizeEvent=new YAHOO.util.CustomEvent("windowResize");YAHOO.widget.Overlay.windowScrollHandler=function(e){YAHOO.widget.Overlay.windowScrollEvent.fire();};YAHOO.widget.Overlay.windowResizeHandler=function(e){YAHOO.widget.Overlay.windowResizeEvent.fire();};YAHOO.widget.Overlay._initialized=null;if(YAHOO.widget.Overlay._initialized===null){YAHOO.util.Event.addListener(window,"scroll",YAHOO.widget.Overlay.windowScrollHandler);YAHOO.util.Event.addListener(window,"resize",YAHOO.widget.Overlay.windowResizeHandler);YAHOO.widget.Overlay._initialized=true;}
-YAHOO.widget.OverlayManager=function(userConfig){this.init(userConfig);};YAHOO.widget.OverlayManager.CSS_FOCUSED="focused";YAHOO.widget.OverlayManager.prototype={constructor:YAHOO.widget.OverlayManager,overlays:null,initDefaultConfig:function(){this.cfg.addProperty("overlays",{suppressEvent:true});this.cfg.addProperty("focusevent",{value:"mousedown"});},getActive:function(){},focus:function(overlay){},remove:function(overlay){},blurAll:function(){},init:function(userConfig){this.cfg=new YAHOO.util.Config(this);this.initDefaultConfig();if(userConfig){this.cfg.applyConfig(userConfig,true);}
-this.cfg.fireQueue();var activeOverlay=null;this.getActive=function(){return activeOverlay;};this.focus=function(overlay){var o=this.find(overlay);if(o){this.blurAll();activeOverlay=o;YAHOO.util.Dom.addClass(activeOverlay.element,YAHOO.widget.OverlayManager.CSS_FOCUSED);this.overlays.sort(this.compareZIndexDesc);var topZIndex=YAHOO.util.Dom.getStyle(this.overlays[0].element,"zIndex");if(!isNaN(topZIndex)&&this.overlays[0]!=overlay){activeOverlay.cfg.setProperty("zIndex",(parseInt(topZIndex,10)+2));}
-this.overlays.sort(this.compareZIndexDesc);}};this.remove=function(overlay){var o=this.find(overlay);if(o){var originalZ=YAHOO.util.Dom.getStyle(o.element,"zIndex");o.cfg.setProperty("zIndex",-1000,true);this.overlays.sort(this.compareZIndexDesc);this.overlays=this.overlays.slice(0,this.overlays.length-1);o.cfg.setProperty("zIndex",originalZ,true);o.cfg.setProperty("manager",null);o.focusEvent=null;o.blurEvent=null;o.focus=null;o.blur=null;}};this.blurAll=function(){activeOverlay=null;for(var o=0;o<this.overlays.length;o++){YAHOO.util.Dom.removeClass(this.overlays[o].element,YAHOO.widget.OverlayManager.CSS_FOCUSED);}};var overlays=this.cfg.getProperty("overlays");if(!this.overlays){this.overlays=[];}
-if(overlays){this.register(overlays);this.overlays.sort(this.compareZIndexDesc);}},register:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){overlay.cfg.addProperty("manager",{value:this});overlay.focusEvent=new YAHOO.util.CustomEvent("focus");overlay.blurEvent=new YAHOO.util.CustomEvent("blur");var mgr=this;overlay.focus=function(){mgr.focus(this);this.focusEvent.fire();};overlay.blur=function(){mgr.blurAll();this.blurEvent.fire();};var focusOnDomEvent=function(e,obj){overlay.focus();};var focusevent=this.cfg.getProperty("focusevent");YAHOO.util.Event.addListener(overlay.element,focusevent,focusOnDomEvent,this,true);var zIndex=YAHOO.util.Dom.getStyle(overlay.element,"zIndex");if(!isNaN(zIndex)){overlay.cfg.setProperty("zIndex",parseInt(zIndex,10));}else{overlay.cfg.setProperty("zIndex",0);}
-this.overlays.push(overlay);return true;}else if(overlay instanceof Array){var regcount=0;for(var i=0;i<overlay.length;i++){if(this.register(overlay[i])){regcount++;}}
-if(regcount>0){return true;}}else{return false;}},find:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){for(var o=0;o<this.overlays.length;o++){if(this.overlays[o]==overlay){return this.overlays[o];}}}else if(typeof overlay=="string"){for(var p=0;p<this.overlays.length;p++){if(this.overlays[p].id==overlay){return this.overlays[p];}}}
-return null;},compareZIndexDesc:function(o1,o2){var zIndex1=o1.cfg.getProperty("zIndex");var zIndex2=o2.cfg.getProperty("zIndex");if(zIndex1>zIndex2){return-1;}else if(zIndex1<zIndex2){return 1;}else{return 0;}},showAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].show();}},hideAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].hide();}},toString:function(){return"OverlayManager";}};YAHOO.util.KeyListener=function(attachTo,keyData,handler,event){if(!event){event=YAHOO.util.KeyListener.KEYDOWN;}
-var keyEvent=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof attachTo=='string'){attachTo=document.getElementById(attachTo);}
-if(typeof handler=='function'){keyEvent.subscribe(handler);}else{keyEvent.subscribe(handler.fn,handler.scope,handler.correctScope);}
-function handleKeyPress(e,obj){var keyPressed=e.charCode||e.keyCode;if(!keyData.shift){keyData.shift=false;}
-if(!keyData.alt){keyData.alt=false;}
-if(!keyData.ctrl){keyData.ctrl=false;}
-if(e.shiftKey==keyData.shift&&e.altKey==keyData.alt&&e.ctrlKey==keyData.ctrl){if(keyData.keys instanceof Array){for(var i=0;i<keyData.keys.length;i++){if(keyPressed==keyData.keys[i]){keyEvent.fire(keyPressed,e);break;}}}else{if(keyPressed==keyData.keys){keyEvent.fire(keyPressed,e);}}}}
-this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(attachTo,event,handleKeyPress);this.enabledEvent.fire(keyData);}
-this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(attachTo,event,handleKeyPress);this.disabledEvent.fire(keyData);}
-this.enabled=false;};this.toString=function(){return"KeyListener ["+keyData.keys+"] "+attachTo.tagName+(attachTo.id?"["+attachTo.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.prototype.enabled=null;YAHOO.util.KeyListener.prototype.enable=function(){};YAHOO.util.KeyListener.prototype.disable=function(){};YAHOO.util.KeyListener.prototype.enabledEvent=null;YAHOO.util.KeyListener.prototype.disabledEvent=null;
\ No newline at end of file
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+
+YAHOO.util.Config=function(owner){if(owner){this.init(owner);}};YAHOO.util.Config.CONFIG_CHANGED_EVENT="configChanged";YAHOO.util.Config.BOOLEAN_TYPE="boolean";YAHOO.util.Config.prototype={owner:null,queueInProgress:false,config:null,initialConfig:null,eventQueue:null,configChangedEvent:null,checkBoolean:function(val){return(typeof val==YAHOO.util.Config.BOOLEAN_TYPE);},checkNumber:function(val){return(!isNaN(val));},fireEvent:function(key,value){var property=this.config[key];if(property&&property.event){property.event.fire(value);}},addProperty:function(key,propertyObject){key=key.toLowerCase();this.config[key]=propertyObject;propertyObject.event=new YAHOO.util.CustomEvent(key,this.owner);propertyObject.key=key;if(propertyObject.handler){propertyObject.event.subscribe(propertyObject.handler,this.owner);}
+this.setProperty(key,propertyObject.value,true);if(!propertyObject.suppressEvent){this.queueProperty(key,propertyObject.value);}},getConfig:function(){var cfg={};for(var prop in this.config){var property=this.config[prop];if(property&&property.event){cfg[prop]=property.value;}}
+return cfg;},getProperty:function(key){var property=this.config[key.toLowerCase()];if(property&&property.event){return property.value;}else{return undefined;}},resetProperty:function(key){key=key.toLowerCase();var property=this.config[key];if(property&&property.event){if(this.initialConfig[key]&&!YAHOO.lang.isUndefined(this.initialConfig[key])){this.setProperty(key,this.initialConfig[key]);}
+return true;}else{return false;}},setProperty:function(key,value,silent){key=key.toLowerCase();if(this.queueInProgress&&!silent){this.queueProperty(key,value);return true;}else{var property=this.config[key];if(property&&property.event){if(property.validator&&!property.validator(value)){return false;}else{property.value=value;if(!silent){this.fireEvent(key,value);this.configChangedEvent.fire([key,value]);}
+return true;}}else{return false;}}},queueProperty:function(key,value){key=key.toLowerCase();var property=this.config[key];if(property&&property.event){if(!YAHOO.lang.isUndefined(value)&&property.validator&&!property.validator(value)){return false;}else{if(!YAHOO.lang.isUndefined(value)){property.value=value;}else{value=property.value;}
+var foundDuplicate=false;var iLen=this.eventQueue.length;for(var i=0;i<iLen;i++){var queueItem=this.eventQueue[i];if(queueItem){var queueItemKey=queueItem[0];var queueItemValue=queueItem[1];if(queueItemKey==key){this.eventQueue[i]=null;this.eventQueue.push([key,(!YAHOO.lang.isUndefined(value)?value:queueItemValue)]);foundDuplicate=true;break;}}}
+if(!foundDuplicate&&!YAHOO.lang.isUndefined(value)){this.eventQueue.push([key,value]);}}
+if(property.supercedes){var sLen=property.supercedes.length;for(var s=0;s<sLen;s++){var supercedesCheck=property.supercedes[s];var qLen=this.eventQueue.length;for(var q=0;q<qLen;q++){var queueItemCheck=this.eventQueue[q];if(queueItemCheck){var queueItemCheckKey=queueItemCheck[0];var queueItemCheckValue=queueItemCheck[1];if(queueItemCheckKey==supercedesCheck.toLowerCase()){this.eventQueue.push([queueItemCheckKey,queueItemCheckValue]);this.eventQueue[q]=null;break;}}}}}
+return true;}else{return false;}},refireEvent:function(key){key=key.toLowerCase();var property=this.config[key];if(property&&property.event&&!YAHOO.lang.isUndefined(property.value)){if(this.queueInProgress){this.queueProperty(key);}else{this.fireEvent(key,property.value);}}},applyConfig:function(userConfig,init){if(init){this.initialConfig=userConfig;}
+for(var prop in userConfig){this.queueProperty(prop,userConfig[prop]);}},refresh:function(){for(var prop in this.config){this.refireEvent(prop);}},fireQueue:function(){this.queueInProgress=true;for(var i=0;i<this.eventQueue.length;i++){var queueItem=this.eventQueue[i];if(queueItem){var key=queueItem[0];var value=queueItem[1];var property=this.config[key];property.value=value;this.fireEvent(key,value);}}
+this.queueInProgress=false;this.eventQueue=[];},subscribeToConfigEvent:function(key,handler,obj,override){var property=this.config[key.toLowerCase()];if(property&&property.event){if(!YAHOO.util.Config.alreadySubscribed(property.event,handler,obj)){property.event.subscribe(handler,obj,override);}
+return true;}else{return false;}},unsubscribeFromConfigEvent:function(key,handler,obj){var property=this.config[key.toLowerCase()];if(property&&property.event){return property.event.unsubscribe(handler,obj);}else{return false;}},toString:function(){var output="Config";if(this.owner){output+=" ["+this.owner.toString()+"]";}
+return output;},outputEventQueue:function(){var output="";for(var q=0;q<this.eventQueue.length;q++){var queueItem=this.eventQueue[q];if(queueItem){output+=queueItem[0]+"="+queueItem[1]+", ";}}
+return output;}};YAHOO.util.Config.prototype.init=function(owner){this.owner=owner;this.configChangedEvent=new YAHOO.util.CustomEvent(YAHOO.util.CONFIG_CHANGED_EVENT,this);this.queueInProgress=false;this.config={};this.initialConfig={};this.eventQueue=[];};YAHOO.util.Config.alreadySubscribed=function(evt,fn,obj){for(var e=0;e<evt.subscribers.length;e++){var subsc=evt.subscribers[e];if(subsc&&subsc.obj==obj&&subsc.fn==fn){return true;}}
+return false;};YAHOO.widget.Module=function(el,userConfig){if(el){this.init(el,userConfig);}else{}};YAHOO.widget.Module.IMG_ROOT=null;YAHOO.widget.Module.IMG_ROOT_SSL=null;YAHOO.widget.Module.CSS_MODULE="yui-module";YAHOO.widget.Module.CSS_HEADER="hd";YAHOO.widget.Module.CSS_BODY="bd";YAHOO.widget.Module.CSS_FOOTER="ft";YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL="javascript:false;";YAHOO.widget.Module.textResizeEvent=new YAHOO.util.CustomEvent("textResize");YAHOO.widget.Module._EVENT_TYPES={"BEFORE_INIT":"beforeInit","INIT":"init","APPEND":"append","BEFORE_RENDER":"beforeRender","RENDER":"render","CHANGE_HEADER":"changeHeader","CHANGE_BODY":"changeBody","CHANGE_FOOTER":"changeFooter","CHANGE_CONTENT":"changeContent","DESTORY":"destroy","BEFORE_SHOW":"beforeShow","SHOW":"show","BEFORE_HIDE":"beforeHide","HIDE":"hide"};YAHOO.widget.Module._DEFAULT_CONFIG={"VISIBLE":{key:"visible",value:true,validator:YAHOO.lang.isBoolean},"EFFECT":{key:"effect",suppressEvent:true,supercedes
 :["visible"]},"MONITOR_RESIZE":{key:"monitorresize",value:true}};YAHOO.widget.Module.prototype={constructor:YAHOO.widget.Module,element:null,header:null,body:null,footer:null,id:null,imageRoot:YAHOO.widget.Module.IMG_ROOT,initEvents:function(){var EVENT_TYPES=YAHOO.widget.Module._EVENT_TYPES;this.beforeInitEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_INIT,this);this.initEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.INIT,this);this.appendEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.APPEND,this);this.beforeRenderEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_RENDER,this);this.renderEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.RENDER,this);this.changeHeaderEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_HEADER,this);this.changeBodyEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_BODY,this);this.changeFooterEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_FOOTER,this);this.changeContentEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_CONTENT,this);this.de
 stroyEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.DESTORY,this);this.beforeShowEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_SHOW,this);this.showEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.SHOW,this);this.beforeHideEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_HIDE,this);this.hideEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.HIDE,this);},platform:function(){var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1){return"windows";}else if(ua.indexOf("macintosh")!=-1){return"mac";}else{return false;}}(),browser:function(){var ua=navigator.userAgent.toLowerCase();if(ua.indexOf('opera')!=-1){return'opera';}else if(ua.indexOf('msie 7')!=-1){return'ie7';}else if(ua.indexOf('msie')!=-1){return'ie';}else if(ua.indexOf('safari')!=-1){return'safari';}else if(ua.indexOf('gecko')!=-1){return'gecko';}else{return false;}}(),isSecure:function(){if(window.location.href.toLowerCase().indexOf("https")===0){return true;}else{return false;}}(),
 initDefaultConfig:function(){var DEFAULT_CONFIG=YAHOO.widget.Module._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.VISIBLE.key,{handler:this.configVisible,value:DEFAULT_CONFIG.VISIBLE.value,validator:DEFAULT_CONFIG.VISIBLE.validator});this.cfg.addProperty(DEFAULT_CONFIG.EFFECT.key,{suppressEvent:DEFAULT_CONFIG.EFFECT.suppressEvent,supercedes:DEFAULT_CONFIG.EFFECT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.MONITOR_RESIZE.key,{handler:this.configMonitorResize,value:DEFAULT_CONFIG.MONITOR_RESIZE.value});},init:function(el,userConfig){this.initEvents();this.beforeInitEvent.fire(YAHOO.widget.Module);this.cfg=new YAHOO.util.Config(this);if(this.isSecure){this.imageRoot=YAHOO.widget.Module.IMG_ROOT_SSL;}
+if(typeof el=="string"){var elId=el;el=document.getElementById(el);if(!el){el=document.createElement("div");el.id=elId;}}
+this.element=el;if(el.id){this.id=el.id;}
+var childNodes=this.element.childNodes;if(childNodes){for(var i=0;i<childNodes.length;i++){var child=childNodes[i];switch(child.className){case YAHOO.widget.Module.CSS_HEADER:this.header=child;break;case YAHOO.widget.Module.CSS_BODY:this.body=child;break;case YAHOO.widget.Module.CSS_FOOTER:this.footer=child;break;}}}
+this.initDefaultConfig();YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Module.CSS_MODULE);if(userConfig){this.cfg.applyConfig(userConfig,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.renderEvent,this.cfg.fireQueue,this.cfg)){this.renderEvent.subscribe(this.cfg.fireQueue,this.cfg,true);}
+this.initEvent.fire(YAHOO.widget.Module);},initResizeMonitor:function(){if(this.browser!="opera"){var resizeMonitor=document.getElementById("_yuiResizeMonitor");if(!resizeMonitor){resizeMonitor=document.createElement("iframe");var bIE=(this.browser.indexOf("ie")===0);if(this.isSecure&&YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL&&bIE){resizeMonitor.src=YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL;}
+resizeMonitor.id="_yuiResizeMonitor";resizeMonitor.style.visibility="hidden";document.body.appendChild(resizeMonitor);resizeMonitor.style.width="10em";resizeMonitor.style.height="10em";resizeMonitor.style.position="absolute";var nLeft=-1*resizeMonitor.offsetWidth;var nTop=-1*resizeMonitor.offsetHeight;resizeMonitor.style.top=nTop+"px";resizeMonitor.style.left=nLeft+"px";resizeMonitor.style.borderStyle="none";resizeMonitor.style.borderWidth="0";YAHOO.util.Dom.setStyle(resizeMonitor,"opacity","0");resizeMonitor.style.visibility="visible";if(!bIE){var doc=resizeMonitor.contentWindow.document;doc.open();doc.close();}}
+var fireTextResize=function(){YAHOO.widget.Module.textResizeEvent.fire();};if(resizeMonitor&&resizeMonitor.contentWindow){this.resizeMonitor=resizeMonitor;YAHOO.widget.Module.textResizeEvent.subscribe(this.onDomResize,this,true);if(!YAHOO.widget.Module.textResizeInitialized){if(!YAHOO.util.Event.addListener(this.resizeMonitor.contentWindow,"resize",fireTextResize)){YAHOO.util.Event.addListener(this.resizeMonitor,"resize",fireTextResize);}
+YAHOO.widget.Module.textResizeInitialized=true;}}}},onDomResize:function(e,obj){var nLeft=-1*this.resizeMonitor.offsetWidth,nTop=-1*this.resizeMonitor.offsetHeight;this.resizeMonitor.style.top=nTop+"px";this.resizeMonitor.style.left=nLeft+"px";},setHeader:function(headerContent){if(!this.header){this.header=document.createElement("div");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
+if(typeof headerContent=="string"){this.header.innerHTML=headerContent;}else{this.header.innerHTML="";this.header.appendChild(headerContent);}
+this.changeHeaderEvent.fire(headerContent);this.changeContentEvent.fire();},appendToHeader:function(element){if(!this.header){this.header=document.createElement("div");this.header.className=YAHOO.widget.Module.CSS_HEADER;}
+this.header.appendChild(element);this.changeHeaderEvent.fire(element);this.changeContentEvent.fire();},setBody:function(bodyContent){if(!this.body){this.body=document.createElement("div");this.body.className=YAHOO.widget.Module.CSS_BODY;}
+if(typeof bodyContent=="string")
+{this.body.innerHTML=bodyContent;}else{this.body.innerHTML="";this.body.appendChild(bodyContent);}
+this.changeBodyEvent.fire(bodyContent);this.changeContentEvent.fire();},appendToBody:function(element){if(!this.body){this.body=document.createElement("div");this.body.className=YAHOO.widget.Module.CSS_BODY;}
+this.body.appendChild(element);this.changeBodyEvent.fire(element);this.changeContentEvent.fire();},setFooter:function(footerContent){if(!this.footer){this.footer=document.createElement("div");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
+if(typeof footerContent=="string"){this.footer.innerHTML=footerContent;}else{this.footer.innerHTML="";this.footer.appendChild(footerContent);}
+this.changeFooterEvent.fire(footerContent);this.changeContentEvent.fire();},appendToFooter:function(element){if(!this.footer){this.footer=document.createElement("div");this.footer.className=YAHOO.widget.Module.CSS_FOOTER;}
+this.footer.appendChild(element);this.changeFooterEvent.fire(element);this.changeContentEvent.fire();},render:function(appendToNode,moduleElement){this.beforeRenderEvent.fire();if(!moduleElement){moduleElement=this.element;}
+var me=this;var appendTo=function(element){if(typeof element=="string"){element=document.getElementById(element);}
+if(element){element.appendChild(me.element);me.appendEvent.fire();}};if(appendToNode){appendTo(appendToNode);}else{if(!YAHOO.util.Dom.inDocument(this.element)){return false;}}
+if(this.header&&!YAHOO.util.Dom.inDocument(this.header)){var firstChild=moduleElement.firstChild;if(firstChild){moduleElement.insertBefore(this.header,firstChild);}else{moduleElement.appendChild(this.header);}}
+if(this.body&&!YAHOO.util.Dom.inDocument(this.body)){if(this.footer&&YAHOO.util.Dom.isAncestor(this.moduleElement,this.footer)){moduleElement.insertBefore(this.body,this.footer);}else{moduleElement.appendChild(this.body);}}
+if(this.footer&&!YAHOO.util.Dom.inDocument(this.footer)){moduleElement.appendChild(this.footer);}
+this.renderEvent.fire();return true;},destroy:function(){var parent;if(this.element){YAHOO.util.Event.purgeElement(this.element,true);parent=this.element.parentNode;}
+if(parent){parent.removeChild(this.element);}
+this.element=null;this.header=null;this.body=null;this.footer=null;for(var e in this){if(e instanceof YAHOO.util.CustomEvent){e.unsubscribeAll();}}
+YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize,this);this.destroyEvent.fire();},show:function(){this.cfg.setProperty("visible",true);},hide:function(){this.cfg.setProperty("visible",false);},configVisible:function(type,args,obj){var visible=args[0];if(visible){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","block");this.showEvent.fire();}else{this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"display","none");this.hideEvent.fire();}},configMonitorResize:function(type,args,obj){var monitor=args[0];if(monitor){this.initResizeMonitor();}else{YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize,this,true);this.resizeMonitor=null;}}};YAHOO.widget.Module.prototype.toString=function(){return"Module "+this.id;};YAHOO.widget.Overlay=function(el,userConfig){YAHOO.widget.Overlay.superclass.constructor.call(this,el,userConfig);};YAHOO.extend(YAHOO.widget.Overlay,YAHOO.widget.Module);YAHOO.widget.Overlay._EVENT_TYPE
 S={"BEFORE_MOVE":"beforeMove","MOVE":"move"};YAHOO.widget.Overlay._DEFAULT_CONFIG={"X":{key:"x",validator:YAHOO.lang.isNumber,suppressEvent:true,supercedes:["iframe"]},"Y":{key:"y",validator:YAHOO.lang.isNumber,suppressEvent:true,supercedes:["iframe"]},"XY":{key:"xy",suppressEvent:true,supercedes:["iframe"]},"CONTEXT":{key:"context",suppressEvent:true,supercedes:["iframe"]},"FIXED_CENTER":{key:"fixedcenter",value:false,validator:YAHOO.lang.isBoolean,supercedes:["iframe","visible"]},"WIDTH":{key:"width",suppressEvent:true,supercedes:["iframe"]},"HEIGHT":{key:"height",suppressEvent:true,supercedes:["iframe"]},"ZINDEX":{key:"zindex",value:null},"CONSTRAIN_TO_VIEWPORT":{key:"constraintoviewport",value:false,validator:YAHOO.lang.isBoolean,supercedes:["iframe","x","y","xy"]},"IFRAME":{key:"iframe",value:(YAHOO.widget.Module.prototype.browser=="ie"?true:false),validator:YAHOO.lang.isBoolean,supercedes:["zIndex"]}};YAHOO.widget.Overlay.IFRAME_SRC="javascript:false;";YAHOO.widget.Ove
 rlay.TOP_LEFT="tl";YAHOO.widget.Overlay.TOP_RIGHT="tr";YAHOO.widget.Overlay.BOTTOM_LEFT="bl";YAHOO.widget.Overlay.BOTTOM_RIGHT="br";YAHOO.widget.Overlay.CSS_OVERLAY="yui-overlay";YAHOO.widget.Overlay.prototype.init=function(el,userConfig){YAHOO.widget.Overlay.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.Overlay);YAHOO.util.Dom.addClass(this.element,YAHOO.widget.Overlay.CSS_OVERLAY);if(userConfig){this.cfg.applyConfig(userConfig,true);}
+if(this.platform=="mac"&&this.browser=="gecko"){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrollbars,this)){this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrollbars,this)){this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true);}}
+this.initEvent.fire(YAHOO.widget.Overlay);};YAHOO.widget.Overlay.prototype.initEvents=function(){YAHOO.widget.Overlay.superclass.initEvents.call(this);var EVENT_TYPES=YAHOO.widget.Overlay._EVENT_TYPES;this.beforeMoveEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_MOVE,this);this.moveEvent=new YAHOO.util.CustomEvent(EVENT_TYPES.MOVE,this);};YAHOO.widget.Overlay.prototype.initDefaultConfig=function(){YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this);var DEFAULT_CONFIG=YAHOO.widget.Overlay._DEFAULT_CONFIG;this.cfg.addProperty(DEFAULT_CONFIG.X.key,{handler:this.configX,validator:DEFAULT_CONFIG.X.validator,suppressEvent:DEFAULT_CONFIG.X.suppressEvent,supercedes:DEFAULT_CONFIG.X.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.Y.key,{handler:this.configY,validator:DEFAULT_CONFIG.Y.validator,suppressEvent:DEFAULT_CONFIG.Y.suppressEvent,supercedes:DEFAULT_CONFIG.Y.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.XY.key,{handler:this.configXY,suppressEvent:DEFAULT_CONF
 IG.XY.suppressEvent,supercedes:DEFAULT_CONFIG.XY.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.CONTEXT.key,{handler:this.configContext,suppressEvent:DEFAULT_CONFIG.CONTEXT.suppressEvent,supercedes:DEFAULT_CONFIG.CONTEXT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.FIXED_CENTER.key,{handler:this.configFixedCenter,value:DEFAULT_CONFIG.FIXED_CENTER.value,validator:DEFAULT_CONFIG.FIXED_CENTER.validator,supercedes:DEFAULT_CONFIG.FIXED_CENTER.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.WIDTH.key,{handler:this.configWidth,suppressEvent:DEFAULT_CONFIG.WIDTH.suppressEvent,supercedes:DEFAULT_CONFIG.WIDTH.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.HEIGHT.key,{handler:this.configHeight,suppressEvent:DEFAULT_CONFIG.HEIGHT.suppressEvent,supercedes:DEFAULT_CONFIG.HEIGHT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.ZINDEX.key,{handler:this.configzIndex,value:DEFAULT_CONFIG.ZINDEX.value});this.cfg.addProperty(DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.key,{handler:this.config
 ConstrainToViewport,value:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.value,validator:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.validator,supercedes:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.supercedes});this.cfg.addProperty(DEFAULT_CONFIG.IFRAME.key,{handler:this.configIframe,value:DEFAULT_CONFIG.IFRAME.value,validator:DEFAULT_CONFIG.IFRAME.validator,supercedes:DEFAULT_CONFIG.IFRAME.supercedes});};YAHOO.widget.Overlay.prototype.moveTo=function(x,y){this.cfg.setProperty("xy",[x,y]);};YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"show-scrollbars");YAHOO.util.Dom.addClass(this.element,"hide-scrollbars");};YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars=function(){YAHOO.util.Dom.removeClass(this.element,"hide-scrollbars");YAHOO.util.Dom.addClass(this.element,"show-scrollbars");};YAHOO.widget.Overlay.prototype.configVisible=function(type,args,obj){var visible=args[0];var currentVis=YAHOO.util.Dom.getStyle(this.element,"visibility"
 );if(currentVis=="inherit"){var e=this.element.parentNode;while(e.nodeType!=9&&e.nodeType!=11){currentVis=YAHOO.util.Dom.getStyle(e,"visibility");if(currentVis!="inherit"){break;}
+e=e.parentNode;}
+if(currentVis=="inherit"){currentVis="visible";}}
+var effect=this.cfg.getProperty("effect");var effectInstances=[];if(effect){if(effect instanceof Array){for(var i=0;i<effect.length;i++){var eff=effect[i];effectInstances[effectInstances.length]=eff.effect(this,eff.duration);}}else{effectInstances[effectInstances.length]=effect.effect(this,effect.duration);}}
+var isMacGecko=(this.platform=="mac"&&this.browser=="gecko");if(visible){if(isMacGecko){this.showMacGeckoScrollbars();}
+if(effect){if(visible){if(currentVis!="visible"||currentVis===""){this.beforeShowEvent.fire();for(var j=0;j<effectInstances.length;j++){var ei=effectInstances[j];if(j===0&&!YAHOO.util.Config.alreadySubscribed(ei.animateInCompleteEvent,this.showEvent.fire,this.showEvent)){ei.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,true);}
+ei.animateIn();}}}}else{if(currentVis!="visible"||currentVis===""){this.beforeShowEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","visible");this.cfg.refireEvent("iframe");this.showEvent.fire();}}}else{if(isMacGecko){this.hideMacGeckoScrollbars();}
+if(effect){if(currentVis=="visible"){this.beforeHideEvent.fire();for(var k=0;k<effectInstances.length;k++){var h=effectInstances[k];if(k===0&&!YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEvent.fire,this.hideEvent)){h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,true);}
+h.animateOut();}}else if(currentVis===""){YAHOO.util.Dom.setStyle(this.element,"visibility","hidden");}}else{if(currentVis=="visible"||currentVis===""){this.beforeHideEvent.fire();YAHOO.util.Dom.setStyle(this.element,"visibility","hidden");this.cfg.refireEvent("iframe");this.hideEvent.fire();}}}};YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent=function(){if(this.cfg.getProperty("visible")){this.center();}};YAHOO.widget.Overlay.prototype.configFixedCenter=function(type,args,obj){var val=args[0];if(val){this.center();if(!YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent,this.center,this)){this.beforeShowEvent.subscribe(this.center,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEvent,this.doCenterOnDOMEvent,this)){YAHOO.widget.Overlay.windowScrollEvent.subscribe(this.doCenterOnDOMEvent,this,true);}}else{YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);}};YAHOO.widget.Overlay.prototype.configHeight=function(type,args,obj){var height=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"height",height);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configWidth=function(type,args,obj){var width=args[0];var el=this.element;YAHOO.util.Dom.setStyle(el,"width",width);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.configzIndex=function(type,args,obj){var zIndex=args[0];var el=this.element;if(!zIndex){zIndex=YAHOO.util.Dom.getStyle(el,"zIndex");if(!zIndex||isNaN(zIndex)){zIndex=0;}}
+if(this.iframe){if(zIndex<=0){zIndex=1;}
+YAHOO.util.Dom.setStyle(this.iframe,"zIndex",(zIndex-1));}
+YAHOO.util.Dom.setStyle(el,"zIndex",zIndex);this.cfg.setProperty("zIndex",zIndex,true);};YAHOO.widget.Overlay.prototype.configXY=function(type,args,obj){var pos=args[0];var x=pos[0];var y=pos[1];this.cfg.setProperty("x",x);this.cfg.setProperty("y",y);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configX=function(type,args,obj){var x=args[0];var y=this.cfg.getProperty("y");this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.beforeMoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setX(this.element,x,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.configY=function(type,args,obj){var x=this.cfg.getProperty("x");var y=args[0];this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.before
 MoveEvent.fire([x,y]);x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");YAHOO.util.Dom.setY(this.element,y,true);this.cfg.setProperty("xy",[x,y],true);this.cfg.refireEvent("iframe");this.moveEvent.fire([x,y]);};YAHOO.widget.Overlay.prototype.showIframe=function(){if(this.iframe){this.iframe.style.display="block";}};YAHOO.widget.Overlay.prototype.hideIframe=function(){if(this.iframe){this.iframe.style.display="none";}};YAHOO.widget.Overlay.prototype.configIframe=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showIframe,this)){this.showEvent.subscribe(this.showIframe,this,true);}
+if(!YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideIframe,this)){this.hideEvent.subscribe(this.hideIframe,this,true);}
+var x=this.cfg.getProperty("x");var y=this.cfg.getProperty("y");if(!x||!y){this.syncPosition();x=this.cfg.getProperty("x");y=this.cfg.getProperty("y");}
+if(!isNaN(x)&&!isNaN(y)){if(!this.iframe){this.iframe=document.createElement("iframe");if(this.isSecure){this.iframe.src=YAHOO.widget.Overlay.IFRAME_SRC;}
+var parent=this.element.parentNode;if(parent){parent.appendChild(this.iframe);}else{document.body.appendChild(this.iframe);}
+YAHOO.util.Dom.setStyle(this.iframe,"position","absolute");YAHOO.util.Dom.setStyle(this.iframe,"border","none");YAHOO.util.Dom.setStyle(this.iframe,"margin","0");YAHOO.util.Dom.setStyle(this.iframe,"padding","0");YAHOO.util.Dom.setStyle(this.iframe,"opacity","0");if(this.cfg.getProperty("visible")){this.showIframe();}else{this.hideIframe();}}
+var iframeDisplay=YAHOO.util.Dom.getStyle(this.iframe,"display");if(iframeDisplay=="none"){this.iframe.style.display="block";}
+YAHOO.util.Dom.setXY(this.iframe,[x,y]);var width=this.element.clientWidth;var height=this.element.clientHeight;YAHOO.util.Dom.setStyle(this.iframe,"width",(width+2)+"px");YAHOO.util.Dom.setStyle(this.iframe,"height",(height+2)+"px");if(iframeDisplay=="none"){this.iframe.style.display="none";}}}else{if(this.iframe){this.iframe.style.display="none";}
+this.showEvent.unsubscribe(this.showIframe,this);this.hideEvent.unsubscribe(this.hideIframe,this);}};YAHOO.widget.Overlay.prototype.configConstrainToViewport=function(type,args,obj){var val=args[0];if(val){if(!YAHOO.util.Config.alreadySubscribed(this.beforeMoveEvent,this.enforceConstraints,this)){this.beforeMoveEvent.subscribe(this.enforceConstraints,this,true);}}else{this.beforeMoveEvent.unsubscribe(this.enforceConstraints,this);}};YAHOO.widget.Overlay.prototype.configContext=function(type,args,obj){var contextArgs=args[0];if(contextArgs){var contextEl=contextArgs[0];var elementMagnetCorner=contextArgs[1];var contextMagnetCorner=contextArgs[2];if(contextEl){if(typeof contextEl=="string"){this.cfg.setProperty("context",[document.getElementById(contextEl),elementMagnetCorner,contextMagnetCorner],true);}
+if(elementMagnetCorner&&contextMagnetCorner){this.align(elementMagnetCorner,contextMagnetCorner);}}}};YAHOO.widget.Overlay.prototype.align=function(elementAlign,contextAlign){var contextArgs=this.cfg.getProperty("context");if(contextArgs){var context=contextArgs[0];var element=this.element;var me=this;if(!elementAlign){elementAlign=contextArgs[1];}
+if(!contextAlign){contextAlign=contextArgs[2];}
+if(element&&context){var contextRegion=YAHOO.util.Dom.getRegion(context);var doAlign=function(v,h){switch(elementAlign){case YAHOO.widget.Overlay.TOP_LEFT:me.moveTo(h,v);break;case YAHOO.widget.Overlay.TOP_RIGHT:me.moveTo(h-element.offsetWidth,v);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:me.moveTo(h,v-element.offsetHeight);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:me.moveTo(h-element.offsetWidth,v-element.offsetHeight);break;}};switch(contextAlign){case YAHOO.widget.Overlay.TOP_LEFT:doAlign(contextRegion.top,contextRegion.left);break;case YAHOO.widget.Overlay.TOP_RIGHT:doAlign(contextRegion.top,contextRegion.right);break;case YAHOO.widget.Overlay.BOTTOM_LEFT:doAlign(contextRegion.bottom,contextRegion.left);break;case YAHOO.widget.Overlay.BOTTOM_RIGHT:doAlign(contextRegion.bottom,contextRegion.right);break;}}}};YAHOO.widget.Overlay.prototype.enforceConstraints=function(type,args,obj){var pos=args[0];var x=pos[0];var y=pos[1];var offsetHeight=this.element.offsetHeight;var
  offsetWidth=this.element.offsetWidth;var viewPortWidth=YAHOO.util.Dom.getViewportWidth();var viewPortHeight=YAHOO.util.Dom.getViewportHeight();var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var topConstraint=scrollY+10;var leftConstraint=scrollX+10;var bottomConstraint=scrollY+viewPortHeight-offsetHeight-10;var rightConstraint=scrollX+viewPortWidth-offsetWidth-10;if(x<leftConstraint){x=leftConstraint;}else if(x>rightConstraint){x=rightConstraint;}
+if(y<topConstraint){y=topConstraint;}else if(y>bottomConstraint){y=bottomConstraint;}
+this.cfg.setProperty("x",x,true);this.cfg.setProperty("y",y,true);this.cfg.setProperty("xy",[x,y],true);};YAHOO.widget.Overlay.prototype.center=function(){var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;var viewPortWidth=YAHOO.util.Dom.getClientWidth();var viewPortHeight=YAHOO.util.Dom.getClientHeight();var elementWidth=this.element.offsetWidth;var elementHeight=this.element.offsetHeight;var x=(viewPortWidth/2)-(elementWidth/2)+scrollX;var y=(viewPortHeight/2)-(elementHeight/2)+scrollY;this.cfg.setProperty("xy",[parseInt(x,10),parseInt(y,10)]);this.cfg.refireEvent("iframe");};YAHOO.widget.Overlay.prototype.syncPosition=function(){var pos=YAHOO.util.Dom.getXY(this.element);this.cfg.setProperty("x",pos[0],true);this.cfg.setProperty("y",pos[1],true);this.cfg.setProperty("xy",pos,true);};YAHOO.widget.Overlay.prototype.onDomResize=function(e,obj){YAHOO.widget.Overlay.superclass.onDom
 Resize.call(this,e,obj);var me=this;setTimeout(function(){me.syncPosition();me.cfg.refireEvent("iframe");me.cfg.refireEvent("context");},0);};YAHOO.widget.Overlay.prototype.destroy=function(){if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);}
+this.iframe=null;YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);YAHOO.widget.Overlay.superclass.destroy.call(this);};YAHOO.widget.Overlay.prototype.toString=function(){return"Overlay "+this.id;};YAHOO.widget.Overlay.windowScrollEvent=new YAHOO.util.CustomEvent("windowScroll");YAHOO.widget.Overlay.windowResizeEvent=new YAHOO.util.CustomEvent("windowResize");YAHOO.widget.Overlay.windowScrollHandler=function(e){if(YAHOO.widget.Module.prototype.browser=="ie"||YAHOO.widget.Module.prototype.browser=="ie7"){if(!window.scrollEnd){window.scrollEnd=-1;}
+clearTimeout(window.scrollEnd);window.scrollEnd=setTimeout(function(){YAHOO.widget.Overlay.windowScrollEvent.fire();},1);}else{YAHOO.widget.Overlay.windowScrollEvent.fire();}};YAHOO.widget.Overlay.windowResizeHandler=function(e){if(YAHOO.widget.Module.prototype.browser=="ie"||YAHOO.widget.Module.prototype.browser=="ie7"){if(!window.resizeEnd){window.resizeEnd=-1;}
+clearTimeout(window.resizeEnd);window.resizeEnd=setTimeout(function(){YAHOO.widget.Overlay.windowResizeEvent.fire();},100);}else{YAHOO.widget.Overlay.windowResizeEvent.fire();}};YAHOO.widget.Overlay._initialized=null;if(YAHOO.widget.Overlay._initialized===null){YAHOO.util.Event.addListener(window,"scroll",YAHOO.widget.Overlay.windowScrollHandler);YAHOO.util.Event.addListener(window,"resize",YAHOO.widget.Overlay.windowResizeHandler);YAHOO.widget.Overlay._initialized=true;}
+YAHOO.widget.OverlayManager=function(userConfig){this.init(userConfig);};YAHOO.widget.OverlayManager.CSS_FOCUSED="focused";YAHOO.widget.OverlayManager.prototype={constructor:YAHOO.widget.OverlayManager,overlays:null,initDefaultConfig:function(){this.cfg.addProperty("overlays",{suppressEvent:true});this.cfg.addProperty("focusevent",{value:"mousedown"});},init:function(userConfig){this.cfg=new YAHOO.util.Config(this);this.initDefaultConfig();if(userConfig){this.cfg.applyConfig(userConfig,true);}
+this.cfg.fireQueue();var activeOverlay=null;this.getActive=function(){return activeOverlay;};this.focus=function(overlay){var o=this.find(overlay);if(o){if(activeOverlay!=o){if(activeOverlay){activeOverlay.blur();}
+activeOverlay=o;YAHOO.util.Dom.addClass(activeOverlay.element,YAHOO.widget.OverlayManager.CSS_FOCUSED);this.overlays.sort(this.compareZIndexDesc);var topZIndex=YAHOO.util.Dom.getStyle(this.overlays[0].element,"zIndex");if(!isNaN(topZIndex)&&this.overlays[0]!=overlay){activeOverlay.cfg.setProperty("zIndex",(parseInt(topZIndex,10)+2));}
+this.overlays.sort(this.compareZIndexDesc);o.focusEvent.fire();}}};this.remove=function(overlay){var o=this.find(overlay);if(o){var originalZ=YAHOO.util.Dom.getStyle(o.element,"zIndex");o.cfg.setProperty("zIndex",-1000,true);this.overlays.sort(this.compareZIndexDesc);this.overlays=this.overlays.slice(0,this.overlays.length-1);o.hideEvent.unsubscribe(o.blur);o.destroyEvent.unsubscribe(this._onOverlayDestroy,o);if(o.element){YAHOO.util.Event.removeListener(o.element,this.cfg.getProperty("focusevent"),this._onOverlayElementFocus);}
+o.cfg.setProperty("zIndex",originalZ,true);o.cfg.setProperty("manager",null);o.focusEvent.unsubscribeAll();o.blurEvent.unsubscribeAll();o.focusEvent=null;o.blurEvent=null;o.focus=null;o.blur=null;}};this.blurAll=function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].blur();}};this._onOverlayBlur=function(p_sType,p_aArgs){activeOverlay=null;};var overlays=this.cfg.getProperty("overlays");if(!this.overlays){this.overlays=[];}
+if(overlays){this.register(overlays);this.overlays.sort(this.compareZIndexDesc);}},_onOverlayElementFocus:function(p_oEvent){var oTarget=YAHOO.util.Event.getTarget(p_oEvent),oClose=this.close;if(oClose&&(oTarget==oClose||YAHOO.util.Dom.isAncestor(oClose,oTarget))){this.blur();}
+else{this.focus();}},_onOverlayDestroy:function(p_sType,p_aArgs,p_oOverlay){this.remove(p_oOverlay);},register:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){overlay.cfg.addProperty("manager",{value:this});overlay.focusEvent=new YAHOO.util.CustomEvent("focus",overlay);overlay.blurEvent=new YAHOO.util.CustomEvent("blur",overlay);var mgr=this;overlay.focus=function(){mgr.focus(this);};overlay.blur=function(){if(mgr.getActive()==this){YAHOO.util.Dom.removeClass(this.element,YAHOO.widget.OverlayManager.CSS_FOCUSED);this.blurEvent.fire();}};overlay.blurEvent.subscribe(mgr._onOverlayBlur);overlay.hideEvent.subscribe(overlay.blur);overlay.destroyEvent.subscribe(this._onOverlayDestroy,overlay,this);YAHOO.util.Event.addListener(overlay.element,this.cfg.getProperty("focusevent"),this._onOverlayElementFocus,null,overlay);var zIndex=YAHOO.util.Dom.getStyle(overlay.element,"zIndex");if(!isNaN(zIndex)){overlay.cfg.setProperty("zIndex",parseInt(zIndex,10));}else{overlay.cfg.
 setProperty("zIndex",0);}
+this.overlays.push(overlay);return true;}else if(overlay instanceof Array){var regcount=0;for(var i=0;i<overlay.length;i++){if(this.register(overlay[i])){regcount++;}}
+if(regcount>0){return true;}}else{return false;}},find:function(overlay){if(overlay instanceof YAHOO.widget.Overlay){for(var o=0;o<this.overlays.length;o++){if(this.overlays[o]==overlay){return this.overlays[o];}}}else if(typeof overlay=="string"){for(var p=0;p<this.overlays.length;p++){if(this.overlays[p].id==overlay){return this.overlays[p];}}}
+return null;},compareZIndexDesc:function(o1,o2){var zIndex1=o1.cfg.getProperty("zIndex");var zIndex2=o2.cfg.getProperty("zIndex");if(zIndex1>zIndex2){return-1;}else if(zIndex1<zIndex2){return 1;}else{return 0;}},showAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].show();}},hideAll:function(){for(var o=0;o<this.overlays.length;o++){this.overlays[o].hide();}},toString:function(){return"OverlayManager";}};YAHOO.widget.ContainerEffect=function(overlay,attrIn,attrOut,targetElement,animClass){if(!animClass){animClass=YAHOO.util.Anim;}
+this.overlay=overlay;this.attrIn=attrIn;this.attrOut=attrOut;this.targetElement=targetElement||overlay.element;this.animClass=animClass;};YAHOO.widget.ContainerEffect.prototype.init=function(){this.beforeAnimateInEvent=new YAHOO.util.CustomEvent("beforeAnimateIn",this);this.beforeAnimateOutEvent=new YAHOO.util.CustomEvent("beforeAnimateOut",this);this.animateInCompleteEvent=new YAHOO.util.CustomEvent("animateInComplete",this);this.animateOutCompleteEvent=new YAHOO.util.CustomEvent("animateOutComplete",this);this.animIn=new this.animClass(this.targetElement,this.attrIn.attributes,this.attrIn.duration,this.attrIn.method);this.animIn.onStart.subscribe(this.handleStartAnimateIn,this);this.animIn.onTween.subscribe(this.handleTweenAnimateIn,this);this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn,this);this.animOut=new this.animClass(this.targetElement,this.attrOut.attributes,this.attrOut.duration,this.attrOut.method);this.animOut.onStart.subscribe(this.handleStartAnima
 teOut,this);this.animOut.onTween.subscribe(this.handleTweenAnimateOut,this);this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut,this);};YAHOO.widget.ContainerEffect.prototype.animateIn=function(){this.beforeAnimateInEvent.fire();this.animIn.animate();};YAHOO.widget.ContainerEffect.prototype.animateOut=function(){this.beforeAnimateOutEvent.fire();this.animOut.animate();};YAHOO.widget.ContainerEffect.prototype.handleStartAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateIn=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleStartAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateOut=function(type,args,obj){};YAHOO.widget.ContainerEffect.prototype.toString=function(){var output="Containe
 rEffect";if(this.overlay){output+=" ["+this.overlay.toString()+"]";}
+return output;};YAHOO.widget.ContainerEffect.FADE=function(overlay,dur){var fade=new YAHOO.widget.ContainerEffect(overlay,{attributes:{opacity:{from:0,to:1}},duration:dur,method:YAHOO.util.Easing.easeIn},{attributes:{opacity:{to:0}},duration:dur,method:YAHOO.util.Easing.easeOut},overlay.element);fade.handleStartAnimateIn=function(type,args,obj){YAHOO.util.Dom.addClass(obj.overlay.element,"hide-select");if(!obj.overlay.underlay){obj.overlay.cfg.refireEvent("underlay");}
+if(obj.overlay.underlay){obj.initialUnderlayOpacity=YAHOO.util.Dom.getStyle(obj.overlay.underlay,"opacity");obj.overlay.underlay.style.filter=null;}
+YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","visible");YAHOO.util.Dom.setStyle(obj.overlay.element,"opacity",0);};fade.handleCompleteAnimateIn=function(type,args,obj){YAHOO.util.Dom.removeClass(obj.overlay.element,"hide-select");if(obj.overlay.element.style.filter){obj.overlay.element.style.filter=null;}
+if(obj.overlay.underlay){YAHOO.util.Dom.setStyle(obj.overlay.underlay,"opacity",obj.initialUnderlayOpacity);}
+obj.overlay.cfg.refireEvent("iframe");obj.animateInCompleteEvent.fire();};fade.handleStartAnimateOut=function(type,args,obj){YAHOO.util.Dom.addClass(obj.overlay.element,"hide-select");if(obj.overlay.underlay){obj.overlay.underlay.style.filter=null;}};fade.handleCompleteAnimateOut=function(type,args,obj){YAHOO.util.Dom.removeClass(obj.overlay.element,"hide-select");if(obj.overlay.element.style.filter){obj.overlay.element.style.filter=null;}
+YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","hidden");YAHOO.util.Dom.setStyle(obj.overlay.element,"opacity",1);obj.overlay.cfg.refireEvent("iframe");obj.animateOutCompleteEvent.fire();};fade.init();return fade;};YAHOO.widget.ContainerEffect.SLIDE=function(overlay,dur){var x=overlay.cfg.getProperty("x")||YAHOO.util.Dom.getX(overlay.element);var y=overlay.cfg.getProperty("y")||YAHOO.util.Dom.getY(overlay.element);var clientWidth=YAHOO.util.Dom.getClientWidth();var offsetWidth=overlay.element.offsetWidth;var slide=new YAHOO.widget.ContainerEffect(overlay,{attributes:{points:{to:[x,y]}},duration:dur,method:YAHOO.util.Easing.easeIn},{attributes:{points:{to:[(clientWidth+25),y]}},duration:dur,method:YAHOO.util.Easing.easeOut},overlay.element,YAHOO.util.Motion);slide.handleStartAnimateIn=function(type,args,obj){obj.overlay.element.style.left=(-25-offsetWidth)+"px";obj.overlay.element.style.top=y+"px";};slide.handleTweenAnimateIn=function(type,args,obj){var pos=YAHOO.ut
 il.Dom.getXY(obj.overlay.element);var currentX=pos[0];var currentY=pos[1];if(YAHOO.util.Dom.getStyle(obj.overlay.element,"visibility")=="hidden"&&currentX<x){YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","visible");}
+obj.overlay.cfg.setProperty("xy",[currentX,currentY],true);obj.overlay.cfg.refireEvent("iframe");};slide.handleCompleteAnimateIn=function(type,args,obj){obj.overlay.cfg.setProperty("xy",[x,y],true);obj.startX=x;obj.startY=y;obj.overlay.cfg.refireEvent("iframe");obj.animateInCompleteEvent.fire();};slide.handleStartAnimateOut=function(type,args,obj){var vw=YAHOO.util.Dom.getViewportWidth();var pos=YAHOO.util.Dom.getXY(obj.overlay.element);var yso=pos[1];var currentTo=obj.animOut.attributes.points.to;obj.animOut.attributes.points.to=[(vw+25),yso];};slide.handleTweenAnimateOut=function(type,args,obj){var pos=YAHOO.util.Dom.getXY(obj.overlay.element);var xto=pos[0];var yto=pos[1];obj.overlay.cfg.setProperty("xy",[xto,yto],true);obj.overlay.cfg.refireEvent("iframe");};slide.handleCompleteAnimateOut=function(type,args,obj){YAHOO.util.Dom.setStyle(obj.overlay.element,"visibility","hidden");obj.overlay.cfg.setProperty("xy",[x,y]);obj.animateOutCompleteEvent.fire();};slide.init();retu
 rn slide;};YAHOO.register("container_core",YAHOO.widget.Module,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/js/yui/dom/dom-min.js
===================================================================
--- plog/trunk/js/yui/dom/dom-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/dom/dom-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1 +1,59 @@
-/* Copyright (c) 2006, Yahoo! Inc. All rights reserved.  Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.3 */ YAHOO.util.Dom=function(){var ua=navigator.userAgent.toLowerCase();var isOpera=(ua.indexOf('opera')>-1);var isSafari=(ua.indexOf('safari')>-1);var isIE=(window.ActiveXObject);var id_counter=0;var util=YAHOO.util;var property_cache={};var toCamel=function(property){var convert=function(prop){var test=/(-[a-z])/i.exec(prop);return prop.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());};while(property.indexOf('-')>-1){property=convert(property);}return property;};var toHyphen=function(property){if(property.indexOf('-')>-1){return property;}var converted='';for(var i=0,len=property.length;i<len;++i){if(property.charAt(i)==property.charAt(i).toUpperCase()){converted=converted+'-'+property.charAt(i).toLowerCase();}else{converted=converted+property.charAt(i);}}return converted;};var cacheConvertedProperties=function(property
 ){property_cache[property]={camel:toCamel(property),hyphen:toHyphen(property)};};return{get:function(el){if(!el){return null;}if(typeof el!='string'&&!(el instanceof Array)){return el;}if(typeof el=='string'){return document.getElementById(el);}else{var collection=[];for(var i=0,len=el.length;i<len;++i){collection[collection.length]=util.Dom.get(el[i]);}return collection;}return null;},getStyle:function(el,property){var f=function(el){var value=null;var dv=document.defaultView;if(!property_cache[property]){cacheConvertedProperties(property);}var camel=property_cache[property]['camel'];var hyphen=property_cache[property]['hyphen'];if(property=='opacity'&&el.filters){value=1;try{value=el.filters.item('DXImageTransform.Microsoft.Alpha').opacity/100;}catch(e){try{value=el.filters.item('alpha').opacity/100;}catch(e){}}}else if(el.style[camel]){value=el.style[camel];}else if(isIE&&el.currentStyle&&el.currentStyle[camel]){value=el.currentStyle[camel];}else if(dv&&dv.getComputedStyl
 e){var computed=dv.getComputedStyle(el,'');if(computed&&computed.getPropertyValue(hyphen)){value=computed.getPropertyValue(hyphen);}}return value;};return util.Dom.batch(el,f,util.Dom,true);},setStyle:function(el,property,val){if(!property_cache[property]){cacheConvertedProperties(property);}var camel=property_cache[property]['camel'];var f=function(el){switch(property){case'opacity':if(isIE&&typeof el.style.filter=='string'){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}else{el.style.opacity=val;el.style['-moz-opacity']=val;el.style['-khtml-opacity']=val;}break;default:el.style[camel]=val;}};util.Dom.batch(el,f,util.Dom,true);},getXY:function(el){var f=function(el){if(el.offsetParent===null||this.getStyle(el,'display')=='none'){return false;}var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){do
 c=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop];}else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}}if(isSafari&&this.getStyle(el,'position')=='absolute'){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){parentNode=el.parentNode;}else{parentNode=null;}while(parentNode&&parentNode.tagName.toUpperCase()!='BODY'&&parentNode.tagName.toUpperCase()!='HTML'){if(util.Dom.getStyle(parentNode,'display')!='inline'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop;}if(parentNode.parentNode){parentNode=parentNode.parentNode;}else{parentNode=null;}}return pos;};return util.Dom.b
 atch(el,f,util.Dom,true);},getX:function(el){var f=function(el){return util.Dom.getXY(el)[0];};return util.Dom.batch(el,f,util.Dom,true);},getY:function(el){var f=function(el){return util.Dom.getXY(el)[1];};return util.Dom.batch(el,f,util.Dom,true);},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative';}var pageXY=this.getXY(el);if(pageXY===false){return false;}var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=(style_pos=='relative')?0:el.offsetLeft;}if(isNaN(delta[1])){delta[1]=(style_pos=='relative')?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';}if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';}var newXY=this.getXY(el);if(!noRetry&&(newXY[0]!=pos[0]||newXY[1]!=pos[1])){this.setXY(el,pos,true);}};util.Dom.batch(el,f,util.Dom,true);},setX:fu
 nction(el,x){util.Dom.setXY(el,[x,null]);},setY:function(el,y){util.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var region=new YAHOO.util.Region.getRegion(el);return region;};return util.Dom.batch(el,f,util.Dom,true);},getClientWidth:function(){return util.Dom.getViewportWidth();},getClientHeight:function(){return util.Dom.getViewportHeight();},getElementsByClassName:function(className,tag,root){var method=function(el){return util.Dom.hasClass(el,className)};return util.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var f=function(el){return re.test(el['className']);};return util.Dom.batch(el,f,util.Dom,true);},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return;}el['className']=[el['className'],className].join(' ');};util.Dom.batch(el,f,util.Dom,true);},removeClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$
 )','g');var f=function(el){if(!this.hasClass(el,className)){return;}var c=el['className'];el['className']=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}};util.Dom.batch(el,f,util.Dom,true);},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false;};var re=new RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return;}el['className']=el['className'].replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName);}};util.Dom.batch(el,f,util.Dom,true);},generateId:function(el,prefix){prefix=prefix||'yui-gen';el=el||{};var f=function(el){if(el){el=util.Dom.get(el);}else{el={};}if(!el.id){el.id=prefix+id_counter++;}return el.id;};return util.Dom.batch(el,f,util.Dom,true);},isAncestor:function(haystack,needle){haystack=util.Dom.get(haystack);if(!haystack||!needle){retur
 n false;}var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle);}else if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPosition(needle)&16);}else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true;}else if(!parent.tagName||parent.tagName.toUpperCase()=='HTML'){return false;}parent=parent.parentNode;}return false;}};return util.Dom.batch(needle,f,util.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return util.Dom.batch(el,f,util.Dom,true);},getElementsBy:function(method,tag,root){tag=tag||'*';root=util.Dom.get(root)||document;var nodes=[];var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=='*'&&root.all)){elements=root.all;}for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}}return nodes;},batch:function(el,method,o,override){var id=el;el=util.Dom.get(el);var scope=(ove
 rride)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return method.call(scope,el,o);}var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=id[i];}collection[collection.length]=method.call(scope,el[i],o);}return collection;},getDocumentHeight:function(){var scrollHeight=-1,windowHeight=-1,bodyHeight=-1;var marginTop=parseInt(util.Dom.getStyle(document.body,'marginTop'),10);var marginBottom=parseInt(util.Dom.getStyle(document.body,'marginBottom'),10);var mode=document.compatMode;if((mode||isIE)&&!isOpera){switch(mode){case'CSS1Compat':scrollHeight=((window.innerHeight&&window.scrollMaxY)?window.innerHeight+window.scrollMaxY:-1);windowHeight=[document.documentElement.clientHeight,self.innerHeight||-1].sort(function(a,b){return(a-b);})[1];bodyHeight=document.body.offsetHeight+marginTop+marginBottom;break;default:scrollHeight=document.body.scrollHeight;bodyHeight=document.body.clientHeight;}}else{scrollHeight=document.documentElement.scrollHeight;w
 indowHeight=self.innerHeight;bodyHeight=document.documentElement.clientHeight;}var h=[scrollHeight,windowHeight,bodyHeight].sort(function(a,b){return(a-b);});return h[2];},getDocumentWidth:function(){var docWidth=-1,bodyWidth=-1,winWidth=-1;var marginRight=parseInt(util.Dom.getStyle(document.body,'marginRight'),10);var marginLeft=parseInt(util.Dom.getStyle(document.body,'marginLeft'),10);var mode=document.compatMode;if(mode||isIE){switch(mode){case'CSS1Compat':docWidth=document.documentElement.clientWidth;bodyWidth=document.body.offsetWidth+marginLeft+marginRight;break;default:bodyWidth=document.body.clientWidth;docWidth=document.body.scrollWidth;break;}}else{docWidth=document.documentElement.clientWidth;bodyWidth=document.body.offsetWidth+marginLeft+marginRight;}var w=Math.max(docWidth,bodyWidth);return w;},getViewportHeight:function(){var height=-1;var mode=document.compatMode;if((mode||isIE)&&!isOpera){switch(mode){case'CSS1Compat':height=document.documentElement.clientHe
 ight;break;default:height=document.body.clientHeight;}}else{height=self.innerHeight;}return height;},getViewportWidth:function(){var width=-1;var mode=document.compatMode;if(mode||isIE){switch(mode){case'CSS1Compat':width=document.documentElement.clientWidth;break;default:width=document.body.clientWidth;}}else{width=self.innerWidth;}return width;}};}();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&region.right<=this.right&&region.top>=this.top&&region.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b
 ,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();
\ No newline at end of file
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+
+(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf('opera')>-1),isSafari=(ua.indexOf('safari')>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf('gecko')>-1),isIE=(!isOpera&&ua.indexOf('msie')>-1);var patterns={HYPHEN:/(-[a-z])/i,ROOT_TAG:/body|html/i};var toCamel=function(property){if(!patterns.HYPHEN.test(property)){return property;}
+if(propertyCache[property]){return propertyCache[property];}
+var converted=property;while(patterns.HYPHEN.exec(converted)){converted=converted.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}
+propertyCache[property]=converted;return converted;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;if(property=='float'){property='cssFloat';}
+var computed=document.defaultView.getComputedStyle(el,'');if(computed){value=computed[toCamel(property)];}
+return el.style[property]||value;};}else if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case'opacity':var val=100;try{val=el.filters['DXImageTransform.Microsoft.Alpha'].opacity;}catch(e){try{val=el.filters('alpha').opacity;}catch(e){}}
+return val/100;break;case'float':property='styleFloat';default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value);}};}else{getStyle=function(el,property){return el.style[property];};}
+if(isIE){setStyle=function(el,property,val){switch(property){case'opacity':if(YAHOO.lang.isString(el.style.filter)){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}
+break;case'float':property='styleFloat';default:el.style[property]=val;}};}else{setStyle=function(el,property,val){if(property=='float'){property='cssFloat';}
+el.style[property]=val;};}
+YAHOO.util.Dom={get:function(el){if(YAHOO.lang.isString(el)){return document.getElementById(el);}
+if(YAHOO.lang.isArray(el)){var c=[];for(var i=0,len=el.length;i<len;++i){c[c.length]=Y.Dom.get(el[i]);}
+return c;}
+if(el){return el;}
+return null;},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if((el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none')&&el!=document.body){return false;}
+var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}
+var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop];}
+else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;var hasAbs=this.getStyle(el,'position')=='absolute';if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;if(isSafari&&!hasAbs&&this.getStyle(parentNode,'position')=='absolute'){hasAbs=true;}
+parentNode=parentNode.offsetParent;}}
+if(isSafari&&hasAbs){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}
+parentNode=el.parentNode;while(parentNode.tagName&&!patterns.ROOT_TAG.test(parentNode.tagName))
+{if(Y.Dom.getStyle(parentNode,'display')!='inline'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop;}
+parentNode=parentNode.parentNode;}
+return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative';}
+var pageXY=this.getXY(el);if(pageXY===false){return false;}
+var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=(style_pos=='relative')?0:el.offsetLeft;}
+if(isNaN(delta[1])){delta[1]=(style_pos=='relative')?0:el.offsetTop;}
+if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';}
+if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';}
+if(!noRetry){var newXY=this.getXY(el);if((pos[0]!==null&&newXY[0]!=pos[0])||(pos[1]!==null&&newXY[1]!=pos[1])){this.setXY(el,pos,true);}}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var region=new Y.Region.getRegion(el);return region;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(className,tag,root){var method=function(el){return Y.Dom.hasClass(el,className);};return Y.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var f=function(el){return re.test(el.className);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return;}
+el.className=[el.className,className].join(' ');};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,className)){return;}
+var c=el.className;el.className=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false;}
+var re=new RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return;}
+el.className=el.className.replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,prefix){prefix=prefix||'yui-gen';el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}
+if(!el.id){el.id=prefix+id_counter++;}
+return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);if(!haystack||!needle){return false;}
+var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle);}
+else if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPosition(needle)&16);}
+else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true;}
+else if(!parent.tagName||parent.tagName.toUpperCase()=='HTML'){return false;}
+parent=parent.parentNode;}
+return false;}};return Y.Dom.batch(needle,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(method,tag,root){tag=tag||'*';var nodes=[];if(root){root=Y.Dom.get(root);if(!root){return nodes;}}else{root=document;}
+var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=='*'&&root.all)){elements=root.all;}
+for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}}
+return nodes;},batch:function(el,method,o,override){var id=el;el=Y.Dom.get(el);var scope=(override)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}
+return method.call(scope,el,o);}
+var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}
+collection[collection.length]=method.call(scope,el[i],o);}
+return collection;},getDocumentHeight:function(){var scrollHeight=(document.compatMode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var scrollWidth=(document.compatMode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||isIE)&&!isOpera){height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;}
+return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||isIE){width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;}
+return width;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&region.right<=this.right&&region.top>=this.top&&region.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return("Region
  {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}
+this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/js/yui/event/event-min.js
===================================================================
--- plog/trunk/js/yui/event/event-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/event/event-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1 +1,87 @@
-/* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License:http://developer.yahoo.net/yui/license.txt Version: 0.11.4*/ YAHOO.util.CustomEvent=function(_1,_2,_3){this.type=_1;this.scope=_2||window;this.silent=_3;this.subscribers=[];if(!this.silent){}};YAHOO.util.CustomEvent.prototype={subscribe:function(fn,_5,_6){this.subscribers.push(new YAHOO.util.Subscriber(fn,_5,_6));},unsubscribe:function(fn,_7){var _8=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,_7)){this._delete(i);_8=true;}}return _8;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return;}var _12=[];for(var i=0;i<arguments.length;++i){_12.push(arguments[i]);}if(!this.silent){}for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){}var _13=(s.override)?s.obj:this.scope;s.fn.call(_13,this.type,_12,s.obj);}}},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._del
 ete(len-1-i);}},_delete:function(_14){var s=this.subscribers[_14];if(s){delete s.fn;delete s.obj;}this.subscribers.splice(_14,1);},toString:function(){return "CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,_16){this.fn=fn;this.obj=obj||null;this.override=(_16);};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){return (this.fn==fn&&this.obj==obj);};YAHOO.util.Subscriber.prototype.toString=function(){return "Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var _17=false;var _18=[];var _19=[];var _20=[];var _21=[];var _22=[];var _23=0;var _24=[];var _25=[];var _26=0;return {POLL_RETRYS:200,POLL_INTERVAL:50,EL:0,TYPE:1,FN:2,WFN:3,SCOPE:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),addDelayedListener:function(el,_28
 ,fn,_29,_30){_19[_19.length]=[el,_28,fn,_29,_30];if(_17){_23=this.POLL_RETRYS;this.startTimeout(0);}},startTimeout:function(_31){var i=(_31||_31===0)?_31:this.POLL_INTERVAL;var _32=this;var _33=function(){_32._tryPreloadAttach();};this.timeout=setTimeout(_33,i);},onAvailable:function(_34,_35,_36,_37){_24.push({id:_34,fn:_35,obj:_36,override:_37});_23=this.POLL_RETRYS;this.startTimeout(0);},addListener:function(el,_38,fn,_39,_40){if(!fn||!fn.call){return false;}if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=(this.on(el[i],_38,fn,_39,_40)&&ok);}return ok;}else{if(typeof el=="string"){var oEl=this.getEl(el);if(_17&&oEl){el=oEl;}else{this.addDelayedListener(el,_38,fn,_39,_40);return true;}}}if(!el){return false;}if("unload"==_38&&_39!==this){_20[_20.length]=[el,_38,fn,_39,_40];return true;}var _43=(_40)?_39:el;var _44=function(e){return fn.call(_43,YAHOO.util.Event.getEvent(e),_39);};var li=[el,_38,fn,_44,_43];var _47=_18.length;_18[_47]=li;i
 f(this.useLegacyEvent(el,_38)){var _48=this.getLegacyIndex(el,_38);if(_48==-1||el!=_21[_48][0]){_48=_21.length;_25[el.id+_38]=_48;_21[_48]=[el,_38,el["on"+_38]];_22[_48]=[];el["on"+_38]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),_48);};}_22[_48].push(li);}else{if(el.addEventListener){el.addEventListener(_38,_44,false);}else{if(el.attachEvent){el.attachEvent("on"+_38,_44);}}}return true;},fireLegacyEvent:function(e,_49){var ok=true;var le=_22[_49];for(var i=0,len=le.length;i<len;++i){var li=le[i];if(li&&li[this.WFN]){var _51=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(_51,e);ok=(ok&&ret);}}return ok;},getLegacyIndex:function(el,_53){var key=this.generateId(el)+_53;if(typeof _25[key]=="undefined"){return -1;}else{return _25[key];}},useLegacyEvent:function(el,_55){if(!el.addEventListener&&!el.attachEvent){return true;}else{if(this.isSafari){if("click"==_55||"dblclick"==_55){return true;}}}return false;},removeListener:function(el,_56,fn,_57){if(!
 fn||!fn.call){return false;}var i,len;if(typeof el=="string"){el=this.getEl(el);}else{if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],_56,fn)&&ok);}return ok;}}if("unload"==_56){for(i=0,len=_20.length;i<len;i++){var li=_20[i];if(li&&li[0]==el&&li[1]==_56&&li[2]==fn){_20.splice(i,1);return true;}}return false;}var _58=null;if("undefined"==typeof _57){_57=this._getCacheIndex(el,_56,fn);}if(_57>=0){_58=_18[_57];}if(!el||!_58){return false;}if(this.useLegacyEvent(el,_56)){var _59=this.getLegacyIndex(el,_56);var _60=_22[_59];if(_60){for(i=0,len=_60.length;i<len;++i){li=_60[i];if(li&&li[this.EL]==el&&li[this.TYPE]==_56&&li[this.FN]==fn){_60.splice(i,1);}}}}else{if(el.removeEventListener){el.removeEventListener(_56,_58[this.WFN],false);}else{if(el.detachEvent){el.detachEvent("on"+_56,_58[this.WFN]);}}}delete _18[_57][this.WFN];delete _18[_57][this.FN];_18.splice(_57,1);return true;},getTarget:function(ev,_62){var t=ev.targe
 t||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(_64){if(_64&&_64.nodeName&&"#TEXT"==_64.nodeName.toUpperCase()){return _64.parentNode;}else{return _64;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}return y;},getXY:function(ev){return [this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else{if(ev.type=="mouseover"){t=ev.fromElement;}}}return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(e
 v.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}c=c.caller;}}return ev;},getCharCode:function(ev){return ev.charCode||((ev.type=="keypress")?ev.keyCode:0);},_getCacheIndex:function(el,_68,fn){for(var i=0,len=_18.length;i<len;++i){var li=_18[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==_68){return i;}}return -1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+_26;++_26;el.id=id;}return id;},_isValidCollection:function(o){return (o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){_17=true;var EU=YAHOO.util.Event;EU._simpleRemove(window,"load",EU._load);},_tryPreloadAttach:function(){if(this.locked){return false;}this.locked=true;var _72=!_17;if(!_7
 2){_72=(_23>0);}var _73=[];for(var i=0,len=_19.length;i<len;++i){var d=_19[i];if(d){var el=this.getEl(d[this.EL]);if(el){this.on(el,d[this.TYPE],d[this.FN],d[this.SCOPE],d[this.ADJ_SCOPE]);delete _19[i];}else{_73.push(d);}}}_19=_73;var _75=[];for(i=0,len=_24.length;i<len;++i){var _76=_24[i];if(_76){el=this.getEl(_76.id);if(el){var _77=(_76.override)?_76.obj:el;_76.fn.call(_77,_76.obj);delete _24[i];}else{_75.push(_76);}}}_23=(_73.length===0&&_75.length===0)?0:_23-1;if(_72){this.startTimeout();}this.locked=false;return true;},purgeElement:function(el,_78,_79){var _80=this.getListeners(el,_79);if(_80){for(var i=0,len=_80.length;i<len;++i){var l=_80[i];this.removeListener(el,l.type,l.fn);}}if(_78&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],_78,_79);}}},getListeners:function(el,_82){var _83=[];if(_18&&_18.length>0){for(var i=0,len=_18.length;i<len;++i){var l=_18[i];if(l&&l[this.EL]===el&&(!_82||_82===l[this.TYPE])){_83.push(
 {type:l[this.TYPE],fn:l[this.FN],obj:l[this.SCOPE],adjust:l[this.ADJ_SCOPE],index:i});}}}return (_83.length)?_83:null;},_unload:function(e){var EU=YAHOO.util.Event;for(var i=0,len=_20.length;i<len;++i){var l=_20[i];if(l){var _84=(l[EU.ADJ_SCOPE])?l[EU.SCOPE]:window;l[EU.FN].call(_84,EU.getEvent(e),l[EU.SCOPE]);delete _20[i];l=null;}}if(_18&&_18.length>0){var j=_18.length;while(j){var _86=j-1;l=_18[_86];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],_86);}l=null;j=j-1;}EU.clearCache();}for(i=0,len=_21.length;i<len;++i){delete _21[i][0];delete _21[i];}EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return [dd.scrollTop,dd.scrollLeft];}else{if(db){return [db.scrollTop,db.scrollLeft];}else{return [0,0];}}},_simpleAdd:function(el,_88,fn,_89){if(el.addEventLis
 tener){el.addEventListener(_88,fn,(_89));}else{if(el.attachEvent){el.attachEvent("on"+_88,fn);}}},_simpleRemove:function(el,_90,fn,_91){if(el.removeEventListener){el.removeEventListener(_90,fn,(_91));}else{if(el.detachEvent){el.detachEvent("on"+_90,fn);}}}};}();YAHOO.util.Event.on=YAHOO.util.Event.addListener;if(document&&document.body){YAHOO.util.Event._load();}else{YAHOO.util.Event._simpleAdd(window,"load",YAHOO.util.Event._load);}YAHOO.util.Event._simpleAdd(window,"unload",YAHOO.util.Event._unload);YAHOO.util.Event._tryPreloadAttach();}
\ No newline at end of file
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+
+YAHOO.util.CustomEvent=function(type,oScope,silent,signature){this.type=type;this.scope=oScope||window;this.silent=silent;this.signature=signature||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}
+var onsubscribeType="_YUICEOnSubscribe";if(type!==onsubscribeType){this.subscribeEvent=new YAHOO.util.CustomEvent(onsubscribeType,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,obj,override){if(!fn){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}
+if(this.subscribeEvent){this.subscribeEvent.fire(fn,obj,override);}
+this.subscribers.push(new YAHOO.util.Subscriber(fn,obj,override));},unsubscribe:function(fn,obj){if(!fn){return this.unsubscribeAll();}
+var found=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,obj)){this._delete(i);found=true;}}
+return found;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return true;}
+var args=[],ret=true,i;for(i=0;i<arguments.length;++i){args.push(arguments[i]);}
+var argslength=args.length;if(!this.silent){}
+for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){}
+var scope=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var param=null;if(args.length>0){param=args[0];}
+ret=s.fn.call(scope,param,s.obj);}else{ret=s.fn.call(scope,this.type,args,s.obj);}
+if(false===ret){if(!this.silent){}
+return false;}}}
+return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);}
+return i;},_delete:function(index){var s=this.subscribers[index];if(s){delete s.fn;delete s.obj;}
+this.subscribers.splice(index,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,override){this.fn=fn;this.obj=obj||null;this.override=override;};YAHOO.util.Subscriber.prototype.getScope=function(defaultScope){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}
+return defaultScope;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return(this.fn==fn&&this.obj==obj);}else{return(this.fn==fn);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var loadComplete=false;var DOMReady=false;var listeners=[];var unloadListeners=[];var legacyEvents=[];var legacyHandlers=[];var retryCount=0;var onAvailStack=[];var legacyMap=[];var counter=0;var lastError=null;return{POLL_RETRYS:200,POLL_INTERVAL:10,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/KHTML/gi).test(navigator.userAgent),webkit:function(){var v=navigator.userAgent.match(/AppleWebKit\/([^ ]*)/);if(v&&v[1]){return v[1];}
+return null;}(),isIE:(!this.webkit&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var self=this;var callback=function(){self._tryPreloadAttach();};this._interval=setInterval(callback,this.POLL_INTERVAL);}},onAvailable:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:false});retryCount=this.POLL_RETRYS;this.startInterval();},onDOMReady:function(p_fn,p_obj,p_override){this.DOMReadyEvent.subscribe(p_fn,p_obj,p_override);},onContentReady:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:true});retryCount=this.POLL_RETRYS;this.startInterval();},addListener:function(el,sType,fn,obj,override){if(!fn||!fn.call){return false;}
+if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],sType,fn,obj,override)&&ok;}
+return ok;}else if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,sType,fn,obj,override);});return true;}}
+if(!el){return false;}
+if("unload"==sType&&obj!==this){unloadListeners[unloadListeners.length]=[el,sType,fn,obj,override];return true;}
+var scope=el;if(override){if(override===true){scope=obj;}else{scope=override;}}
+var wrappedFn=function(e){return fn.call(scope,YAHOO.util.Event.getEvent(e),obj);};var li=[el,sType,fn,wrappedFn,scope];var index=listeners.length;listeners[index]=li;if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);if(legacyIndex==-1||el!=legacyEvents[legacyIndex][0]){legacyIndex=legacyEvents.length;legacyMap[el.id+sType]=legacyIndex;legacyEvents[legacyIndex]=[el,sType,el["on"+sType]];legacyHandlers[legacyIndex]=[];el["on"+sType]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),legacyIndex);};}
+legacyHandlers[legacyIndex].push(li);}else{try{this._simpleAdd(el,sType,wrappedFn,false);}catch(ex){this.lastError=ex;this.removeListener(el,sType,fn);return false;}}
+return true;},fireLegacyEvent:function(e,legacyIndex){var ok=true,le,lh,li,scope,ret;lh=legacyHandlers[legacyIndex];for(var i=0,len=lh.length;i<len;++i){li=lh[i];if(li&&li[this.WFN]){scope=li[this.ADJ_SCOPE];ret=li[this.WFN].call(scope,e);ok=(ok&&ret);}}
+le=legacyEvents[legacyIndex];if(le&&le[2]){le[2](e);}
+return ok;},getLegacyIndex:function(el,sType){var key=this.generateId(el)+sType;if(typeof legacyMap[key]=="undefined"){return-1;}else{return legacyMap[key];}},useLegacyEvent:function(el,sType){if(this.webkit&&("click"==sType||"dblclick"==sType)){var v=parseInt(this.webkit,10);if(!isNaN(v)&&v<418){return true;}}
+return false;},removeListener:function(el,sType,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],sType,fn)&&ok);}
+return ok;}
+if(!fn||!fn.call){return this.purgeElement(el,false,sType);}
+if("unload"==sType){for(i=0,len=unloadListeners.length;i<len;i++){var li=unloadListeners[i];if(li&&li[0]==el&&li[1]==sType&&li[2]==fn){unloadListeners.splice(i,1);return true;}}
+return false;}
+var cacheItem=null;var index=arguments[3];if("undefined"==typeof index){index=this._getCacheIndex(el,sType,fn);}
+if(index>=0){cacheItem=listeners[index];}
+if(!el||!cacheItem){return false;}
+if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);var llist=legacyHandlers[legacyIndex];if(llist){for(i=0,len=llist.length;i<len;++i){li=llist[i];if(li&&li[this.EL]==el&&li[this.TYPE]==sType&&li[this.FN]==fn){llist.splice(i,1);break;}}}}else{try{this._simpleRemove(el,sType,cacheItem[this.WFN],false);}catch(ex){this.lastError=ex;return false;}}
+delete listeners[index][this.WFN];delete listeners[index][this.FN];listeners.splice(index,1);return true;},getTarget:function(ev,resolveTextNode){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(node){if(node&&3==node.nodeType){return node.parentNode;}else{return node;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}
+return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}
+return y;},getXY:function(ev){return[this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else if(ev.type=="mouseover"){t=ev.fromElement;}}
+return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(ex){this.lastError=ex;return t;}}
+return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}
+c=c.caller;}}
+return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,sType,fn){for(var i=0,len=listeners.length;i<len;++i){var li=listeners[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==sType){return i;}}
+return-1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+counter;++counter;el.id=id;}
+return id;},_isValidCollection:function(o){return(o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(e){if(!loadComplete){loadComplete=true;var EU=YAHOO.util.Event;EU._ready();if(this.isIE){EU._simpleRemove(window,"load",EU._load);}}},_ready:function(e){if(!DOMReady){DOMReady=true;var EU=YAHOO.util.Event;EU.DOMReadyEvent.fire();EU._simpleRemove(document,"DOMContentLoaded",EU._ready);}},_tryPreloadAttach:function(){if(this.locked){return false;}
+if(this.isIE&&!DOMReady){return false;}
+this.locked=true;var tryAgain=!loadComplete;if(!tryAgain){tryAgain=(retryCount>0);}
+var notAvail=[];var executeItem=function(el,item){var scope=el;if(item.override){if(item.override===true){scope=item.obj;}else{scope=item.override;}}
+item.fn.call(scope,item.obj);};var i,len,item,el;for(i=0,len=onAvailStack.length;i<len;++i){item=onAvailStack[i];if(item&&!item.checkReady){el=this.getEl(item.id);if(el){executeItem(el,item);onAvailStack[i]=null;}else{notAvail.push(item);}}}
+for(i=0,len=onAvailStack.length;i<len;++i){item=onAvailStack[i];if(item&&item.checkReady){el=this.getEl(item.id);if(el){if(loadComplete||el.nextSibling){executeItem(el,item);onAvailStack[i]=null;}}else{notAvail.push(item);}}}
+retryCount=(notAvail.length===0)?0:retryCount-1;if(tryAgain){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}
+this.locked=false;return true;},purgeElement:function(el,recurse,sType){var elListeners=this.getListeners(el,sType);if(elListeners){for(var i=0,len=elListeners.length;i<len;++i){var l=elListeners[i];this.removeListener(el,l.type,l.fn);}}
+if(recurse&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],recurse,sType);}}},getListeners:function(el,sType){var results=[],searchLists;if(!sType){searchLists=[listeners,unloadListeners];}else if(sType=="unload"){searchLists=[unloadListeners];}else{searchLists=[listeners];}
+for(var j=0;j<searchLists.length;++j){var searchList=searchLists[j];if(searchList&&searchList.length>0){for(var i=0,len=searchList.length;i<len;++i){var l=searchList[i];if(l&&l[this.EL]===el&&(!sType||sType===l[this.TYPE])){results.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}}
+return(results.length)?results:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=unloadListeners.length;i<len;++i){l=unloadListeners[i];if(l){var scope=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){scope=l[EU.OBJ];}else{scope=l[EU.ADJ_SCOPE];}}
+l[EU.FN].call(scope,EU.getEvent(e),l[EU.OBJ]);unloadListeners[i]=null;l=null;scope=null;}}
+unloadListeners=null;if(listeners&&listeners.length>0){j=listeners.length;while(j){index=j-1;l=listeners[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);}
+j=j-1;}
+l=null;EU.clearCache();}
+for(i=0,len=legacyEvents.length;i<len;++i){legacyEvents[i][0]=null;legacyEvents[i]=null;}
+legacyEvents=null;EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return[dd.scrollTop,dd.scrollLeft];}else if(db){return[db.scrollTop,db.scrollLeft];}else{return[0,0];}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(el,sType,fn,capture){el.addEventListener(sType,fn,(capture));};}else if(window.attachEvent){return function(el,sType,fn,capture){el.attachEvent("on"+sType,fn);};}else{return function(){};}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,sType,fn,capture){el.removeEventListener(sType,fn,(capture));};}else if(window.detachEvent){return function(el,sType,fn){el.detachEvent("on"+sType,fn);};}else{return function(){};}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if
 (EU.isIE){document.write('<scr'+'ipt id="_yui_eu_dr" defer="true" src="//:"></script>');var el=document.getElementById("_yui_eu_dr");el.onreadystatechange=function(){if("complete"==this.readyState){this.parentNode.removeChild(this);YAHOO.util.Event._ready();}};el=null;YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);}else if(EU.webkit){EU._drwatch=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._drwatch);EU._drwatch=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}
+EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}
+YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(p_type,p_fn,p_obj,p_override){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){ce.subscribe(p_fn,p_obj,p_override);}else{this.__yui_subscribers=this.__yui_subscribers||{};var subs=this.__yui_subscribers;if(!subs[p_type]){subs[p_type]=[];}
+subs[p_type].push({fn:p_fn,obj:p_obj,override:p_override});}},unsubscribe:function(p_type,p_fn,p_obj){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){return ce.unsubscribe(p_fn,p_obj);}else{return false;}},unsubscribeAll:function(p_type){return this.unsubscribe(p_type);},createEvent:function(p_type,p_config){this.__yui_events=this.__yui_events||{};var opts=p_config||{};var events=this.__yui_events;if(events[p_type]){}else{var scope=opts.scope||this;var silent=opts.silent||null;var ce=new YAHOO.util.CustomEvent(p_type,scope,silent,YAHOO.util.CustomEvent.FLAT);events[p_type]=ce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscribe(opts.onSubscribeCallback);}
+this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[p_type];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}}
+return events[p_type];},fireEvent:function(p_type,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i]);}
+return ce.fire.apply(ce,args);}else{return null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_events[type]){return true;}}
+return false;}};YAHOO.util.KeyListener=function(attachTo,keyData,handler,event){if(!attachTo){}else if(!keyData){}else if(!handler){}
+if(!event){event=YAHOO.util.KeyListener.KEYDOWN;}
+var keyEvent=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof attachTo=='string'){attachTo=document.getElementById(attachTo);}
+if(typeof handler=='function'){keyEvent.subscribe(handler);}else{keyEvent.subscribe(handler.fn,handler.scope,handler.correctScope);}
+function handleKeyPress(e,obj){if(!keyData.shift){keyData.shift=false;}
+if(!keyData.alt){keyData.alt=false;}
+if(!keyData.ctrl){keyData.ctrl=false;}
+if(e.shiftKey==keyData.shift&&e.altKey==keyData.alt&&e.ctrlKey==keyData.ctrl){var dataItem;var keyPressed;if(keyData.keys instanceof Array){for(var i=0;i<keyData.keys.length;i++){dataItem=keyData.keys[i];if(dataItem==e.charCode){keyEvent.fire(e.charCode,e);break;}else if(dataItem==e.keyCode){keyEvent.fire(e.keyCode,e);break;}}}else{dataItem=keyData.keys;if(dataItem==e.charCode){keyEvent.fire(e.charCode,e);}else if(dataItem==e.keyCode){keyEvent.fire(e.keyCode,e);}}}}
+this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(attachTo,event,handleKeyPress);this.enabledEvent.fire(keyData);}
+this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(attachTo,event,handleKeyPress);this.disabledEvent.fire(keyData);}
+this.enabled=false;};this.toString=function(){return"KeyListener ["+keyData.keys+"] "+attachTo.tagName+
+(attachTo.id?"["+attachTo.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.register("event",YAHOO.util.Event,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/js/yui/yahoo/yahoo-min.js
===================================================================
--- plog/trunk/js/yui/yahoo/yahoo-min.js	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/js/yui/yahoo/yahoo-min.js	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1 +1,17 @@
-/* Copyright (c) 2006, Yahoo! Inc. All rights reserved.Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.4*/ if(typeof YAHOO=="undefined"){YAHOO={};}YAHOO.namespace=function(ns){if(!ns||!ns.length){return null;}var _2=ns.split(".");var _3=YAHOO;for(var i=(_2[0]=="YAHOO")?1:0;i<_2.length;++i){_3[_2[i]]=_3[_2[i]]||{};_3=_3[_2[i]];}return _3;};YAHOO.log=function(_5,_6,_7){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_5,_6,_7);}else{return false;}};YAHOO.extend=function(_9,_10){var f=function(){};f.prototype=_10.prototype;_9.prototype=new f();_9.prototype.constructor=_9;_9.superclass=_10.prototype;if(_10.prototype.constructor==Object.prototype.constructor){_10.prototype.constructor=_10;}};YAHOO.namespace("util");YAHOO.namespace("widget");YAHOO.namespace("example");
\ No newline at end of file
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+
+if(typeof YAHOO=="undefined"){var YAHOO={};}
+YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;i=i+1){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;j=j+1){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}
+return o;};YAHOO.log=function(msg,cat,src){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(msg,cat,src);}else{return false;}};YAHOO.init=function(){this.namespace("util","widget","example");if(typeof YAHOO_config!="undefined"){var l=YAHOO_config.listener,ls=YAHOO.env.listeners,unique=true,i;if(l){for(i=0;i<ls.length;i=i+1){if(ls[i]==l){unique=false;break;}}
+if(unique){ls.push(l);}}}};YAHOO.register=function(name,mainClass,data){var mods=YAHOO.env.modules;if(!mods[name]){mods[name]={versions:[],builds:[]};}
+var m=mods[name],v=data.version,b=data.build,ls=YAHOO.env.listeners;m.name=name;m.version=v;m.build=b;m.versions.push(v);m.builds.push(b);m.mainClass=mainClass;for(var i=0;i<ls.length;i=i+1){ls[i](m);}
+if(mainClass){mainClass.VERSION=v;mainClass.BUILD=b;}else{YAHOO.log("mainClass is undefined for module "+name,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[],getVersion:function(name){return YAHOO.env.modules[name]||null;}};YAHOO.lang={isArray:function(obj){if(obj&&obj.constructor&&obj.constructor.toString().indexOf('Array')>-1){return true;}else{return YAHOO.lang.isObject(obj)&&obj.constructor==Array;}},isBoolean:function(obj){return typeof obj=='boolean';},isFunction:function(obj){return typeof obj=='function';},isNull:function(obj){return obj===null;},isNumber:function(obj){return typeof obj=='number'&&isFinite(obj);},isObject:function(obj){return obj&&(typeof obj=='object'||YAHOO.lang.isFunction(obj));},isString:function(obj){return typeof obj=='string';},isUndefined:function(obj){return typeof obj=='undefined';},hasOwnProperty:function(obj,prop){if(Object.prototype.hasOwnProperty){return obj.hasOwnProperty(prop);}
+return!YAHOO.lang.isUndefined(obj[prop])&&obj.constructor.prototype[prop]!==obj[prop];},extend:function(subc,superc,overrides){if(!superc||!subc){throw new Error("YAHOO.lang.extend failed, please check that "+"all dependencies are included.");}
+var F=function(){};F.prototype=superc.prototype;subc.prototype=new F();subc.prototype.constructor=subc;subc.superclass=superc.prototype;if(superc.prototype.constructor==Object.prototype.constructor){superc.prototype.constructor=superc;}
+if(overrides){for(var i in overrides){subc.prototype[i]=overrides[i];}}},augment:function(r,s){if(!s||!r){throw new Error("YAHOO.lang.augment failed, please check that "+"all dependencies are included.");}
+var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;i=i+1){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}}};YAHOO.init();YAHOO.util.Lang=YAHOO.lang;YAHOO.augment=YAHOO.lang.augment;YAHOO.extend=YAHOO.lang.extend;YAHOO.register("yahoo",YAHOO,{version:"2.2.2",build:"204"});
\ No newline at end of file

Modified: plog/trunk/locale/admin/locale_ca_ES.php
===================================================================
--- plog/trunk/locale/admin/locale_ca_ES.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/admin/locale_ca_ES.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -3,22 +3,22 @@
 // login page
 $messages['login'] = 'Connecta';
 $messages['welcome_message'] = 'Rep una cordial benvinguda!';
-$messages["error_incorrect_username_or_password"] = "El nom d'usuari i/o la contrasenya que has introduït són incorrectes.";
-$messages["error_dont_belong_to_any_blog"] = "L'usuari és vàlid però no pertany a cap bloc.";
-$messages["logout_message"] = "El procés de sortida ha acabat correctament.";
-$messages['logout_message_2'] = 'Pots accedir al bloc <a href="%1$s">%2$s</a> o tornar a la interfície d\'administració a través del formulari.';
+$messages["error_incorrect_username_or_password"] = "El nom d'usuari i/o la contrasenya que has introduït són incorrectes.";
+$messages["error_dont_belong_to_any_blog"] = "L'usuari és vàlid però no pertany a cap bloc.";
+$messages["logout_message"] = "El procés de sortida ha acabat correctament.";
+$messages['logout_message_2'] = 'Pots accedir al bloc <a href="%1$s">%2$s</a> o tornar a la interfície d\'administració a través del formulari.';
 $messages["username"] = "Nom d'usuari";
 $messages['password'] = 'Contrasenya';
 
 // dashboard
 $messages['dashboard'] = 'Tauler de control';
 $messages['recent_articles'] = 'Articles recents';
-$messages['recent_comments'] = 'Últims comentaris';
-$messages['recent_trackbacks'] = 'Últims retroenllaços';
-$messages['blog_statistics'] = 'Estadístiques';
+$messages['recent_comments'] = 'Últims comentaris';
+$messages['recent_trackbacks'] = 'Últims retroenllaços';
+$messages['blog_statistics'] = 'Estadístiques';
 $messages['total_posts'] = 'Total d\'articles';
 $messages['total_comments'] = 'Total de comentaris';
-$messages['total_trackbacks'] = 'Total de retroenllaços';
+$messages['total_trackbacks'] = 'Total de retroenllaços';
 $messages['total_viewed'] = 'Total d\'articles llegits';
 $messages['in'] = 'a';
 
@@ -29,33 +29,33 @@
 $messages['editPosts'] = 'Edita articles';
 $messages['editArticleCategories'] = 'Edita categories';
 $messages['newArticleCategory'] = 'Afegeix categoria';
-$messages['manageLinks'] = 'Gestiona enllaços';
-$messages['editLinks'] = 'Edita enllaços';
-$messages['newLink'] = 'Afegeix enllaç';
-$messages['editLink'] = 'Edita enllaç';
-$messages['editLinkCategories'] = "Edita categories d'enllaç";
-$messages['newLinkCategory'] = "Afegeix categoria d'enllaç";
-$messages['editLinkCategory'] = "Edita categoria d'enllaç";
+$messages['manageLinks'] = 'Gestiona enllaços';
+$messages['editLinks'] = 'Edita enllaços';
+$messages['newLink'] = 'Afegeix enllaç';
+$messages['editLink'] = 'Edita enllaç';
+$messages['editLinkCategories'] = "Edita categories d'enllaç";
+$messages['newLinkCategory'] = "Afegeix categoria d'enllaç";
+$messages['editLinkCategory'] = "Edita categoria d'enllaç";
 $messages['manageCustomFields'] = 'Gestiona camps personalitzats';
 $messages['blogCustomFields'] = 'Edita camps personalitzats';
 $messages['newCustomField'] = 'Afegeix camp personalitzat';
 $messages['resourceCenter'] = 'Fitxers';
 $messages['resources'] = 'Recursos';
-$messages['newResourceAlbum'] = 'Afegeix àlbum';
+$messages['newResourceAlbum'] = 'Afegeix àlbum';
 $messages['newResource'] = 'Afegeix recurs';
 $messages['controlCenter'] = 'Arranjaments';
-$messages['manageSettings'] = 'Preferències';
-$messages['blogSettings'] = 'Preferències de bloc';
-$messages['userSettings'] = "Preferències d'usuari";
+$messages['manageSettings'] = 'Preferències';
+$messages['blogSettings'] = 'Preferències de bloc';
+$messages['userSettings'] = "Preferències d'usuari";
 $messages['pluginCenter'] = 'Centre de complements';
-$messages['Stats'] = 'Estadístiques';
+$messages['Stats'] = 'Estadístiques';
 $messages['manageBlogUsers'] = 'Gestiona usuaris dels blocs';
 $messages['newBlogUser'] = 'Afegeix usuari de bloc';
 $messages['showBlogUsers'] = 'Usuaris de bloc';
 $messages['manageBlogTemplates'] = 'Gestiona plantilles de bloc';
 $messages['newBlogTemplate'] = 'Afegeix plantilla de bloc';
 $messages['blogTemplates'] = 'Plantilles de bloc';
-$messages['adminSettings'] = 'Administració';
+$messages['adminSettings'] = 'Administració';
 $messages['Users'] = 'Usuaris';
 $messages['createUser'] = 'Crea usuari';
 $messages['editSiteUsers'] = 'Usuaris del servei de blocs';
@@ -63,12 +63,12 @@
 $messages['createBlog'] = 'Crea bloc';
 $messages['editSiteBlogs'] = 'Blocs';
 $messages['Locales'] = 'Gestiona localitzacions';
-$messages['newLocale'] = 'Afegeix localització';
-$messages['siteLocales'] = 'Ubicació de la localització';
+$messages['newLocale'] = 'Afegeix localització';
+$messages['siteLocales'] = 'Ubicació de la localització';
 $messages['Templates'] = 'Gestiona plantilles';
 $messages['newTemplate'] = 'Afegeix plantilla';
-$messages['siteTemplates'] = 'Ubicació de les plantilles';
-$messages['GlobalSettings'] = 'Preferències generals';
+$messages['siteTemplates'] = 'Ubicació de les plantilles';
+$messages['GlobalSettings'] = 'Preferències generals';
 $messages['editSiteSettings'] = 'General';
 $messages['summarySettings'] = 'Sumari';
 $messages['templateSettings'] = 'Plantilles';
@@ -76,59 +76,59 @@
 $messages['emailSettings'] = 'correu-e';
 $messages['uploadSettings'] = 'Arxius';
 $messages['helpersSettings'] = 'Aplicacions externes';
-$messages['interfacesSettings'] = 'Interfícies';
+$messages['interfacesSettings'] = 'Interfícies';
 $messages['securitySettings'] = 'Seguretat';
-$messages['bayesianSettings'] = 'Filtre bayesià';
+$messages['bayesianSettings'] = 'Filtre bayesià';
 $messages['resourcesSettings'] = 'Recursos';
 $messages['searchSettings'] = 'Cerca';
 $messages['cleanUpSection'] = 'Esborra';
 $messages['cleanUp'] = 'Esborra';
-$messages['editResourceAlbum'] = 'Edita àlbum';
+$messages['editResourceAlbum'] = 'Edita àlbum';
 $messages['resourceInfo'] = 'Edita recurs';
 $messages['editBlog'] = 'Edita bloc';
 
 // new post
 $messages['topic'] = 'Article';
-$messages['topic_help'] = 'Títol de l\'article';
+$messages['topic_help'] = 'Títol de l\'article';
 $messages['text'] = 'Text';
-$messages['text_help'] = 'Text de l\'article. Aquesta part apareixerà sempre a la pàgina principal';
+$messages['text_help'] = 'Text de l\'article. Aquesta part apareixerà sempre a la pàgina principal';
 $messages['extended_text'] = 'Text ampliat';
-$messages['extended_text_help'] = 'Text ampliat de l\'article. Aquesta part pot aparèixer opcionalment a la pàgina de l\'article o a la principal. Vés a les Preferències de bloc per a més informació';
+$messages['extended_text_help'] = 'Text ampliat de l\'article. Aquesta part pot aparèixer opcionalment a la pàgina de l\'article o a la principal. Vés a les Preferències de bloc per a més informació';
 $messages['post_slug'] = 'Fitxa';
-$messages['post_slug_help'] = "La fitxa s'utilitzarà per a generar enllaços permanents";
+$messages['post_slug_help'] = "La fitxa s'utilitzarà per a generar enllaços permanents";
 $messages['date'] = 'Data';
-$messages['post_date_help'] = 'Data en què es publicarà aquest article';
+$messages['post_date_help'] = 'Data en què es publicarà aquest article';
 $messages['status'] = 'Estat';
 $messages['post_status_help'] = "Selecciona un d'aquests estats";
 $messages['post_status_published'] = 'Publicat';
 $messages['post_status_draft'] = 'Esborrany';
 $messages['post_status_deleted'] = 'Esborrat';
 $messages['categories'] = 'Categories';
-$messages['post_categories_help'] = 'Selecciona una o més categories';
+$messages['post_categories_help'] = 'Selecciona una o més categories';
 $messages['post_comments_enabled_help'] = 'Activa comentaris';
-$messages['send_notification_help'] = 'Notificació de comentaris nous';
-$messages['send_trackback_pings_help'] = 'Envia retroenllaços';
+$messages['send_notification_help'] = 'Notificació de comentaris nous';
+$messages['send_trackback_pings_help'] = 'Envia retroenllaços';
 $messages['send_xmlrpc_pings_help'] = 'Envia pings XMLRPC ';
 $messages['save_draft_and_continue'] = 'Arxiva esborranys';
-$messages['preview'] = 'Vista prèvia';
+$messages['preview'] = 'Vista prèvia';
 $messages['add_post'] = "Publica l'article!";
-$messages['error_saving_draft'] = "S'ha produït un error en desar l'esborrany";
+$messages['error_saving_draft'] = "S'ha produït un error en desar l'esborrany";
 $messages['draft_saved_ok'] = 'Esborrany arxivat correctament';
-$messages['error_sending_request'] = 'Hi ha un error enviant la informació requerida';
+$messages['error_sending_request'] = 'Hi ha un error enviant la informació requerida';
 $messages['error_no_category_selected'] = 'Selecciona almenys una categoria';
-$messages['error_missing_post_topic'] = 'Escriu un títol de l\'article';
+$messages['error_missing_post_topic'] = 'Escriu un títol de l\'article';
 $messages['error_missing_post_text'] = 'Escriu algun text a l\'article';
-$messages['error_adding_post'] = "S'ha produït un error en publicar l\'article";
-$messages['post_added_not_published'] = 'Article afegit però no publicat';
+$messages['error_adding_post'] = "S'ha produït un error en publicar l\'article";
+$messages['post_added_not_published'] = 'Article afegit però no publicat';
 $messages['post_added_ok'] = 'Article afegit correctament.';
-$messages['send_notifications_ok'] = "Se t'enviarà una notificació quan s'hi afegeixin comentaris o retroenllaços.";
+$messages['send_notifications_ok'] = "Se t'enviarà una notificació quan s'hi afegeixin comentaris o retroenllaços.";
 
 // send trackbacks
-$messages['error_sending_trackbacks'] = 'S\'ha produït un error en enviar aquests retroenllaços';
-$messages['send_trackbacks_help'] = "Selecciona l'adreça (URL) a la qual vols enviar el ping de retroenllaç. Assegura't que el lloc web suporta el retroenllaç.";
-$messages['send_trackbacks'] = 'Envia retroenllaços';
+$messages['error_sending_trackbacks'] = 'S\'ha produït un error en enviar aquests retroenllaços';
+$messages['send_trackbacks_help'] = "Selecciona l'adreça (URL) a la qual vols enviar el ping de retroenllaç. Assegura't que el lloc web suporta el retroenllaç.";
+$messages['send_trackbacks'] = 'Envia retroenllaços';
 $messages['ping_selected'] = 'Ping seleccionat';
-$messages['trackbacks_sent_ok'] = "El retroenllaç s'ha enviat correctament a l'adreça (URL) seleccionada";
+$messages['trackbacks_sent_ok'] = "El retroenllaç s'ha enviat correctament a l'adreça (URL) seleccionada";
 
 // posts page
 $messages['show_by'] = 'Visualitza per';
@@ -142,232 +142,232 @@
 $messages['all'] = 'Tots';
 $messages['category_all'] = 'Totes';
 $messages['error_incorrect_article_id'] = "Identificador d'article incorrecte";
-$messages['error_deleting_article'] = 'S\'ha produït un error en esborrar l\'article "%s"';
+$messages['error_deleting_article'] = 'S\'ha produït un error en esborrar l\'article "%s"';
 $messages['article_deleted_ok'] = 'Article "%s" esborrat correctament';
 $messages['articles_deleted_ok'] = '%s articles esborrats correctament';
-$messages['error_deleting_article2'] = 'S\'ha produït un error en esborrar l\'article que té l\'identificador "%s"';
+$messages['error_deleting_article2'] = 'S\'ha produït un error en esborrar l\'article que té l\'identificador "%s"';
 
 // edit post page
 $messages['update'] = 'Actualitza';
 $messages['editPost'] = 'Edita article';
 $messages['post_updated_ok'] = 'L\'article "%s" ha actualitzat correctament';
-$messages['error_updating_post'] = 'S\'ha produït un error en actualitzar l\'article';
-$messages['notification_added'] = 'Se t\'enviarà una notificació quan s\'hi afegeixin comentaris o retroenllaços';
-$messages['notification_removed'] = 'No se t\'enviarà cap notificació quan s\'hi afegeixin comentaris o retroenllaços';
+$messages['error_updating_post'] = 'S\'ha produït un error en actualitzar l\'article';
+$messages['notification_added'] = 'Se t\'enviarà una notificació quan s\'hi afegeixin comentaris o retroenllaços';
+$messages['notification_removed'] = 'No se t\'enviarà cap notificació quan s\'hi afegeixin comentaris o retroenllaços';
 
 // post comments
 $messages['url'] = 'URL';
 $messages['comment_status_all'] = 'Tot';
 $messages['comment_status_spam'] = 'Spam';
 $messages['comment_status_nonspam'] = 'No Spam';
-$messages['error_fetching_comments'] = "S'ha produït un error en obtenir els comentaris de l'article";
-$messages['error_deleting_comments'] = 'S\'ha produït un error en esborrar els comentaris o no n\'hi ha de seleccionats';
+$messages['error_fetching_comments'] = "S'ha produït un error en obtenir els comentaris de l'article";
+$messages['error_deleting_comments'] = 'S\'ha produït un error en esborrar els comentaris o no n\'hi ha de seleccionats';
 $messages['comment_deleted_ok'] = 'Comentari "%s" esborrat correctament';
 $messages['comments_deleted_ok'] = '%s comentaris esborrats correctament';
-$messages['error_deleting_comment'] = 'S\'ha produït un error en esborrar el comentari "%s"';
-$messages['error_deleting_comment2'] = 'S\'ha produït un error en esborrar el comentari que té l\'identificador %s';
+$messages['error_deleting_comment'] = 'S\'ha produït un error en esborrar el comentari "%s"';
+$messages['error_deleting_comment2'] = 'S\'ha produït un error en esborrar el comentari que té l\'identificador %s';
 $messages['editComments'] = 'Edita comentaris';
 $messages['mark_as_spam'] = 'Marca com a spam';
 $messages['mark_as_no_spam'] = 'Marca com a no spam';
-$messages['error_incorrect_comment_id'] = "L'identificador de comentari no és correcte";
-$messages['error_marking_comment_as_spam'] = 'S\'ha produït un error en marcar el comentari com a spam';
+$messages['error_incorrect_comment_id'] = "L'identificador de comentari no és correcte";
+$messages['error_marking_comment_as_spam'] = 'S\'ha produït un error en marcar el comentari com a spam';
 $messages['comment_marked_as_spam_ok'] = 'Comentari marcat com a spam correctament';
-$messages['error_marking_comment_as_nonspam'] = 'S\'ha produït un error en marcar el comentari com a no spam';
+$messages['error_marking_comment_as_nonspam'] = 'S\'ha produït un error en marcar el comentari com a no spam';
 $messages['comment_marked_as_nonspam_ok'] = 'Comentari marcat com a no spam correctament';
 
 // post trackbacks
 $messages['blog'] = 'Bloc';
 $messages['excerpt'] = 'Extracte';
-$messages['error_fetching_trackbacks'] = 'S\'ha produït un error en obtenir els retroenllaços';
-$messages['error_deleting_trackbacks'] = "S'ha produït un error en esborrar els retroenllaços o no n'hi ha de seleccionats";
-$messages['error_deleting_trackback'] = 'S\'ha produït un error en esborrar el retroenllaç "%s"';
-$messages['error_deleting_trackback2'] = 'S\'ha produït un error en esborrar el retroenllaç que té l\'identificador "%s"';
-$messages['trackback_deleted_ok'] = 'Retroenllaç "%s" esborrat correctament';
-$messages['trackbacks_deleted_ok'] = '%s retroenllaços esborrats correctament';
-$messages['editTrackbacks'] = 'Edita retroenllaços';
+$messages['error_fetching_trackbacks'] = 'S\'ha produït un error en obtenir els retroenllaços';
+$messages['error_deleting_trackbacks'] = "S'ha produït un error en esborrar els retroenllaços o no n'hi ha de seleccionats";
+$messages['error_deleting_trackback'] = 'S\'ha produït un error en esborrar el retroenllaç "%s"';
+$messages['error_deleting_trackback2'] = 'S\'ha produït un error en esborrar el retroenllaç que té l\'identificador "%s"';
+$messages['trackback_deleted_ok'] = 'Retroenllaç "%s" esborrat correctament';
+$messages['trackbacks_deleted_ok'] = '%s retroenllaços esborrats correctament';
+$messages['editTrackbacks'] = 'Edita retroenllaços';
 
 // post statistics
-$messages['referrer'] = 'Referències';
+$messages['referrer'] = 'Referències';
 $messages['hits'] = 'Cops';
 $messages['error_no_items_selected'] = "No s'han seleccionat elements per esborrar";
-$messages['error_deleting_referrer'] = 'S\'ha produït un error en esborrar la referència "%s"';
-$messages['error_deleting_referrer2'] = 'S\'ha produït un error en esborrar la referència amb identificador "%s"';
-$messages['referrer_deleted_ok'] = 'Referència "%s" esborrada correctament';
-$messages['referrers_deleted_ok'] = '%s referències esborrades correctament';
+$messages['error_deleting_referrer'] = 'S\'ha produït un error en esborrar la referència "%s"';
+$messages['error_deleting_referrer2'] = 'S\'ha produït un error en esborrar la referència amb identificador "%s"';
+$messages['referrer_deleted_ok'] = 'Referència "%s" esborrada correctament';
+$messages['referrers_deleted_ok'] = '%s referències esborrades correctament';
 
 // categories
 $messages['posts'] = 'Articles';
-$messages['show_in_main_page'] = 'Visualitza a la pàgina principal';
-$messages['error_incorrect_category_id'] = "L'identificador de categoria no és correcte o no hi ha elements seleccionats";
-$messages['error_category_has_articles'] = 'La categoria "%s" ha estat utilitzada en alguns articles. Edita primer els articles i esborra després la categoria';
+$messages['show_in_main_page'] = 'Visualitza a la pàgina principal';
+$messages['error_incorrect_category_id'] = "L'identificador de categoria no és correcte o no hi ha elements seleccionats";
+$messages['error_category_has_articles'] = 'La categoria "%s" ha estat utilitzada en alguns articles. Edita primer els articles i esborra després la categoria';
 $messages['category_deleted_ok'] = 'Categoria "%s" esborrada correctament';
 $messages['categories_deleted_ok'] = '%s categories esborrades correctament';
-$messages['error_deleting_category'] = 'S\'ha produït un error en esborrar la categoria "%s"';
-$messages['error_deleting_category2'] = 'S\'ha produït un error en esborrar la categoria amb identificador "%s"';
-$messages['yes'] = 'Sí';
+$messages['error_deleting_category'] = 'S\'ha produït un error en esborrar la categoria "%s"';
+$messages['error_deleting_category2'] = 'S\'ha produït un error en esborrar la categoria amb identificador "%s"';
+$messages['yes'] = 'Sí';
 $messages['no'] = 'No';
 
 // new category
 $messages['name'] = 'Nom';
-$messages['category_name_help'] = 'Aquest nom s\'utilitzarà per identificar la categoria';
-$messages['description'] = 'Descripció';
-$messages['category_description_help'] = 'Descripció llarga per a aquesta categoria';
-$messages['show_in_main_page_help'] = "Defineix si els articles classificats en aquesta categoria s'han de publicar a la pàgina principal o només en aquesta categoria en particular";
+$messages['category_name_help'] = 'Aquest nom s\'utilitzarà per identificar la categoria';
+$messages['description'] = 'Descripció';
+$messages['category_description_help'] = 'Descripció llarga per a aquesta categoria';
+$messages['show_in_main_page_help'] = "Defineix si els articles classificats en aquesta categoria s'han de publicar a la pàgina principal o només en aquesta categoria en particular";
 $messages['error_empty_name'] = "Has d'escriure un nom";
-$messages['error_empty_description'] = "Has d'escriure una descripció";
-$messages['error_adding_article_category'] = 'S\'ha produït un error en afegir la nova categoria. Comprova les dades i prova-ho de nou';
+$messages['error_empty_description'] = "Has d'escriure una descripció";
+$messages['error_adding_article_category'] = 'S\'ha produït un error en afegir la nova categoria. Comprova les dades i prova-ho de nou';
 $messages['category_added_ok'] = 'Categoria "%s" afegida correctament al bloc';
 $messages['add'] = 'Afegeix';
 $messages['reset'] = 'Esborra';
 
 // update category
-$messages['error_updating_article_category'] = "S'ha produït un error en actualitzar la categoria de l'article";
-$messages['error_fetching_category'] = 'S\'ha produït un error en obtenir la categoria';
+$messages['error_updating_article_category'] = "S'ha produït un error en actualitzar la categoria de l'article";
+$messages['error_fetching_category'] = 'S\'ha produït un error en obtenir la categoria';
 $messages['article_category_updated_ok'] = 'Categoria "%s" actualitzada correctament';
 
 // links
 $messages['feed'] = 'Alimentador';
-$messages['error_no_links_selected'] = "L'identificador de l'enllaç és incorrecte o no hi ha elements per esborrar";
-$messages['error_incorrect_link_id'] = "L'identificador de l'enllaç és incorrecte";
-$messages['error_removing_link'] = 'S\'ha produït un error en esborrar l\'enllaç "%s"';
-$messages['error_removing_link2'] = 'S\'ha produït un error en esborrar l\'enllaç que té l\'identificador "%s"';
-$messages['link_deleted_ok'] = 'Enllaç "%s" esborrat correctament';
-$messages['links_deleted_ok'] = '%s enllaços esborrats correctament';
+$messages['error_no_links_selected'] = "L'identificador de l'enllaç és incorrecte o no hi ha elements per esborrar";
+$messages['error_incorrect_link_id'] = "L'identificador de l'enllaç és incorrecte";
+$messages['error_removing_link'] = 'S\'ha produït un error en esborrar l\'enllaç "%s"';
+$messages['error_removing_link2'] = 'S\'ha produït un error en esborrar l\'enllaç que té l\'identificador "%s"';
+$messages['link_deleted_ok'] = 'Enllaç "%s" esborrat correctament';
+$messages['links_deleted_ok'] = '%s enllaços esborrats correctament';
 
 // new link
-$messages['link_name_help'] = 'Nom per a aquest enllaç';
-$messages['link_url_help'] = 'Adreça (URL) on apunta aquest enllaç';
-$messages['link_description_help'] = "Breu descripció d'aquest enllaç";
-$messages['link_feed_help'] = 'Un enllaç per la font RSS o Atom per subscriure\'s a aquest recurs';
-$messages['link_category_help'] = "Selecciona una de les categories d'enllaços disponibles";
-$messages['error_adding_link'] = "S'ha produït un error en afegir l'enllaç. Comprova les dades i prova-ho de nou";
-$messages['error_invalid_url'] = "L'adreça no és correcta";
-$messages['link_added_ok'] = 'Enllaç "%s" afegit correctament';
+$messages['link_name_help'] = 'Nom per a aquest enllaç';
+$messages['link_url_help'] = 'Adreça (URL) on apunta aquest enllaç';
+$messages['link_description_help'] = "Breu descripció d'aquest enllaç";
+$messages['link_feed_help'] = 'Un enllaç per la font RSS o Atom per subscriure\'s a aquest recurs';
+$messages['link_category_help'] = "Selecciona una de les categories d'enllaços disponibles";
+$messages['error_adding_link'] = "S'ha produït un error en afegir l'enllaç. Comprova les dades i prova-ho de nou";
+$messages['error_invalid_url'] = "L'adreça no és correcta";
+$messages['link_added_ok'] = 'Enllaç "%s" afegit correctament';
 
 // update link
-$messages['error_updating_link'] = "S'ha produït un error en actualitzar l'enllaç. Comprova les dades i prova-ho de nou";
-$messages['error_fetching_link'] = "S'ha produït un error en obtenir l'enllaç";
-$messages['link_updated_ok'] = 'Enllaç "%s" actualitzat correctament';
+$messages['error_updating_link'] = "S'ha produït un error en actualitzar l'enllaç. Comprova les dades i prova-ho de nou";
+$messages['error_fetching_link'] = "S'ha produït un error en obtenir l'enllaç";
+$messages['link_updated_ok'] = 'Enllaç "%s" actualitzat correctament';
 
 // link categories
-$messages['links'] = 'Enllaços';
-$messages['error_invalid_link_category_id'] = "L'identificador de la categoria d'enllaç no és correcte o no hi ha cap categoria seleccionada";
-$messages['error_links_in_link_category'] = 'La categoria d\'enllaç "%s" s\'ha utilitzat en més d\'un enllaç. Edita els enllaços primer i prova-ho de nou';
-$messages['error_removing_link_category'] = 'S\'ha produït un error en esborrar la categoria d\'enllaç "%s"';
-$messages['link_category_deleted_ok'] = 'La categoria d\'enllaç "%s" s\'ha esborrat correctament';
-$messages['link_categories_deleted_ok'] = '%s categories d\'enllaç esborrades correctament';
-$messages['error_removing_link_category2'] = 'S\'ha produït un error en esborrar la categoria d\'enllaç que té l\'identificador "%s"';
+$messages['links'] = 'Enllaços';
+$messages['error_invalid_link_category_id'] = "L'identificador de la categoria d'enllaç no és correcte o no hi ha cap categoria seleccionada";
+$messages['error_links_in_link_category'] = 'La categoria d\'enllaç "%s" s\'ha utilitzat en més d\'un enllaç. Edita els enllaços primer i prova-ho de nou';
+$messages['error_removing_link_category'] = 'S\'ha produït un error en esborrar la categoria d\'enllaç "%s"';
+$messages['link_category_deleted_ok'] = 'La categoria d\'enllaç "%s" s\'ha esborrat correctament';
+$messages['link_categories_deleted_ok'] = '%s categories d\'enllaç esborrades correctament';
+$messages['error_removing_link_category2'] = 'S\'ha produït un error en esborrar la categoria d\'enllaç que té l\'identificador "%s"';
 
 // new link category
-$messages['link_category_name_help'] = 'Nom per a aquesta categoria d\'enllaç';
-$messages['error_adding_link_category'] = 'S\'ha produït un error en afegir la nova categoria';
-$messages['link_category_added_ok'] = 'La categoria d\'enllaç "%s" s\'ha afegit correctament';
+$messages['link_category_name_help'] = 'Nom per a aquesta categoria d\'enllaç';
+$messages['error_adding_link_category'] = 'S\'ha produït un error en afegir la nova categoria';
+$messages['link_category_added_ok'] = 'La categoria d\'enllaç "%s" s\'ha afegit correctament';
 
 // edit link category
-$messages['error_updating_link_category'] = 'S\'ha produït un error en actualitzar la categoria d\'enllaç. Comprova les dades i prova-ho de nou';
-$messages['link_category_updated_ok'] = 'La categoria d\'enllaç "%s" s\'ha actualitzat correctament';
-$messages['error_fetching_link_category'] = 'S\'ha produït un error en obtenir la categoria d\'enllaç';
+$messages['error_updating_link_category'] = 'S\'ha produït un error en actualitzar la categoria d\'enllaç. Comprova les dades i prova-ho de nou';
+$messages['link_category_updated_ok'] = 'La categoria d\'enllaç "%s" s\'ha actualitzat correctament';
+$messages['error_fetching_link_category'] = 'S\'ha produït un error en obtenir la categoria d\'enllaç';
 
 // custom fields
 $messages['type'] = 'tipus';
 $messages['hidden'] = 'Ocult';
 $messages['fields_deleted_ok'] = '%s camps personalitzats esborrats correctament';
 $messages['field_deleted_ok'] = 'El camp personalitzat "%s" s\'ha esborrat correctament';
-$messages['error_deleting_field'] = 'S\'ha produït un error en esborrar el camp personalitzat "%s"';
-$messages['error_deleting_field2'] = 'S\'ha produït un error en esborrar el camp personalitzat que té l\'identificador "%s"';
-$messages['error_incorrect_field_id'] = 'L\'identificador del camp personalitzat no és vàlid';
+$messages['error_deleting_field'] = 'S\'ha produït un error en esborrar el camp personalitzat "%s"';
+$messages['error_deleting_field2'] = 'S\'ha produït un error en esborrar el camp personalitzat que té l\'identificador "%s"';
+$messages['error_incorrect_field_id'] = 'L\'identificador del camp personalitzat no és vàlid';
 
 // new custom field
 $messages['field_name_help'] = 'Identificador que es pot utilitzat per referir-se al valor d\'aquest camp als articles';
-$messages['field_description_help'] = 'Breu descripció d\'aquest camp que es mostra en afegir o editar articles';
+$messages['field_description_help'] = 'Breu descripció d\'aquest camp que es mostra en afegir o editar articles';
 $messages['field_type_help'] = 'Selecciona un dels tipus de camp disponibles';
-$messages['field_hidden_help'] = 'Si el camp és ocult, no es mostrarà quan afegeixis o editis un article. Els camps ocults s\'utilitzen principalment als complements (plugins)';
-$messages['error_adding_custom_field'] = 'S\'ha produït un error en afegir el camp personalitzat. Comprova les dades i prova-ho de nou';
+$messages['field_hidden_help'] = 'Si el camp és ocult, no es mostrarà quan afegeixis o editis un article. Els camps ocults s\'utilitzen principalment als complements (plugins)';
+$messages['error_adding_custom_field'] = 'S\'ha produït un error en afegir el camp personalitzat. Comprova les dades i prova-ho de nou';
 $messages['custom_field_added_ok'] = 'El camp personalitzat "%s" s\'ha afegit correctament';
 $messages['text_field'] = 'Camp de text';
 $messages['text_area'] = 'Caixa de text';
-$messages['checkbox'] = 'Quadre de verificació';
+$messages['checkbox'] = 'Quadre de verificació';
 $messages['date_field'] = 'Selector de data';
 
 // edit custom field
-$messages['error_fetching_custom_field'] = 'S\'ha produït un error en obtenir el camp personalitzat';
-$messages['error_updating_custom_field'] = 'S\'ha produït un error en actualitzar el camp personalitzat. Comprova les dades i prova-ho de nou';
+$messages['error_fetching_custom_field'] = 'S\'ha produït un error en obtenir el camp personalitzat';
+$messages['error_updating_custom_field'] = 'S\'ha produït un error en actualitzar el camp personalitzat. Comprova les dades i prova-ho de nou';
 $messages['custom_field_updated_ok'] = 'El camp personalitzat "%s" s\'ha actualitzat correctament';
 
 // resources
-$messages['root_album'] = 'Àlbum principal';
+$messages['root_album'] = 'Àlbum principal';
 $messages['num_resources'] = 'Nombre de recursos';
-$messages['total_size'] = 'Grandària total';
-$messages['album'] = 'Àlbum';
-$messages['error_incorrect_album_id'] = 'L\'identificador de l\'àlbum no és correcte';
-$messages['error_base_storage_folder_missing_or_unreadable'] = 'Ha estat impossible crear les carpetes necessàries on s\'han d\'instal·lar els recursos. Això pot ésser causat per varies raons, potser la instal·lació de PHP té el Mode Segur (safe_mode) activat o l\'usuari usat per PHP no te prou permisos. Pots fer l\'operació creant les següents carpetes:: <br/><br/>%s<br/><br/>Si aquestes carpetes ja existeixen assegura\'t que poden ser llegides i escrites per l\'usuari del servidor web.';
+$messages['total_size'] = 'Grandària total';
+$messages['album'] = 'Àlbum';
+$messages['error_incorrect_album_id'] = 'L\'identificador de l\'àlbum no és correcte';
+$messages['error_base_storage_folder_missing_or_unreadable'] = 'Ha estat impossible crear les carpetes necessàries on s\'han d\'instal·lar els recursos. Això pot ésser causat per varies raons, potser la instal·lació de PHP té el Mode Segur (safe_mode) activat o l\'usuari usat per PHP no te prou permisos. Pots fer l\'operació creant les següents carpetes:: <br/><br/>%s<br/><br/>Si aquestes carpetes ja existeixen assegura\'t que poden ser llegides i escrites per l\'usuari del servidor web.';
 $messages['items_deleted_ok'] = '%s elements esborrats correctament';
-$messages['error_album_has_children'] = 'L\'àlbum "%s" conté subàlbums. Edita primer els subàlbums i torna-ho a intentar';
+$messages['error_album_has_children'] = 'L\'àlbum "%s" conté subàlbums. Edita primer els subàlbums i torna-ho a intentar';
 $messages['item_deleted_ok'] = 'Element "%s" esborrat correctament';
-$messages['error_deleting_album'] = 'S\'ha produït un error en esborrar l\'àlbum "%s"';
-$messages['error_deleting_album2'] = 'S\'ha produït un error en esborrar l\'àlbum amb identificador "%s"';
-$messages['error_deleting_resource'] = 'S\'ha produït un error en esborrar el recurs "%s"';
-$messages['error_deleting_resource2'] = 'S\'ha produït un error en esborrar el recurs que té l\'identificador "%s"';
+$messages['error_deleting_album'] = 'S\'ha produït un error en esborrar l\'àlbum "%s"';
+$messages['error_deleting_album2'] = 'S\'ha produït un error en esborrar l\'àlbum amb identificador "%s"';
+$messages['error_deleting_resource'] = 'S\'ha produït un error en esborrar el recurs "%s"';
+$messages['error_deleting_resource2'] = 'S\'ha produït un error en esborrar el recurs que té l\'identificador "%s"';
 $messages['error_no_resources_selected'] = 'No hi ha elements seleccionats per esborrar';
 $messages['resource_deleted_ok'] = 'El recurs "%s" s\'ha esborrat correctament';
-$messages['album_deleted_ok'] = 'L\'àlbum "%s" s\'ha esborrat correctament';
+$messages['album_deleted_ok'] = 'L\'àlbum "%s" s\'ha esborrat correctament';
 
 // new album
-$messages['album_name_help'] = 'Nom curt per a l\'àlbum';
+$messages['album_name_help'] = 'Nom curt per a l\'àlbum';
 $messages['parent'] = 'Principal';
 $messages['no_parent'] = 'No principal';
-$messages['parent_album_help'] = 'Utilitza aquesta funció per tenir àlbums dins d\'altres àlbums i organitzar millor els teus arxius';
-$messages['album_description_help'] = 'Descripció llarga dels continguts d\'aquest àlbum';
-$messages['error_adding_album'] = 'S\'ha produït un error en afegir l\'àlbum. Comprova les dades i prova-ho de nou';
-$messages['album_added_ok'] = 'Àlbum "%s" afegit correctament';
+$messages['parent_album_help'] = 'Utilitza aquesta funció per tenir àlbums dins d\'altres àlbums i organitzar millor els teus arxius';
+$messages['album_description_help'] = 'Descripció llarga dels continguts d\'aquest àlbum';
+$messages['error_adding_album'] = 'S\'ha produït un error en afegir l\'àlbum. Comprova les dades i prova-ho de nou';
+$messages['album_added_ok'] = 'Àlbum "%s" afegit correctament';
 
 // edit album
-$messages['error_incorrect_album_id'] = 'L\'identificador de l\'àlbum no és correcte';
-$messages['error_fetching_album'] = 'S\'ha produït un error en obtenir l\'àlbum';
-$messages['error_updating_album'] = 'S\'ha produït un error en actualitzar l\'àlbum. Comprova les dades i prova-ho de nou';
-$messages['album_updated_ok'] = 'Àlbum "%s" actualitzat correctament';
-$messages['show_album_help'] = 'Si està desactivat, l\'àlbum no es farà mostrarà a la llista d\'àlbums disponibles en aquest bloc';
+$messages['error_incorrect_album_id'] = 'L\'identificador de l\'àlbum no és correcte';
+$messages['error_fetching_album'] = 'S\'ha produït un error en obtenir l\'àlbum';
+$messages['error_updating_album'] = 'S\'ha produït un error en actualitzar l\'àlbum. Comprova les dades i prova-ho de nou';
+$messages['album_updated_ok'] = 'Àlbum "%s" actualitzat correctament';
+$messages['show_album_help'] = 'Si està desactivat, l\'àlbum no es farà mostrarà a la llista d\'àlbums disponibles en aquest bloc';
 
 // new resource
 $messages['file'] = 'Recurs';
-$messages['resource_file_help'] = 'Recurs que s\'afegirà al bloc actual. Utilitza l\'enllaç "Afegeix camp" per actualitzar més d\'un recurs al mateix temps';
+$messages['resource_file_help'] = 'Recurs que s\'afegirà al bloc actual. Utilitza l\'enllaç "Afegeix camp" per actualitzar més d\'un recurs al mateix temps';
 $messages['add_field'] = 'Afegeix camp';
-$messages['resource_description_help'] = 'Descripció llarga del contingut d\'aquest recurs';
-$messages['resource_album_help'] = 'Selecciona l\'àlbum on s\'afegirà aquest recurs';
+$messages['resource_description_help'] = 'Descripció llarga del contingut d\'aquest recurs';
+$messages['resource_album_help'] = 'Selecciona l\'àlbum on s\'afegirà aquest recurs';
 $messages['error_no_resource_uploaded'] = 'No hi ha cap recurs seleccionat per pujar';
 $messages['resource_added_ok'] = 'Recurs "%s" afegit correctament';
-$messages['error_resource_forbidden_extension'] = 'Aquest recurs no es pot afegir perquè té una extensió no permesa';
-$messages['error_resource_too_big'] = 'Aquest recurs no es pot afegir perquè és massa gran';
-$messages['error_uploads_disabled'] = 'Aquest recurs no es pot afegir perquè l\'opció de pujar recursos està desactivada';
-$messages['error_quota_exceeded'] = 'Aquest recurs no es pot afegir perquè has excedit el màxim assignat. Esborra recursos.';
-$messages['error_adding_resource'] = 'S\'ha produït un error en afegir el recurs';
+$messages['error_resource_forbidden_extension'] = 'Aquest recurs no es pot afegir perquè té una extensió no permesa';
+$messages['error_resource_too_big'] = 'Aquest recurs no es pot afegir perquè és massa gran';
+$messages['error_uploads_disabled'] = 'Aquest recurs no es pot afegir perquè l\'opció de pujar recursos està desactivada';
+$messages['error_quota_exceeded'] = 'Aquest recurs no es pot afegir perquè has excedit el màxim assignat. Esborra recursos.';
+$messages['error_adding_resource'] = 'S\'ha produït un error en afegir el recurs';
 
 // edit resource
-$messages['information'] = 'Informació';
+$messages['information'] = 'Informació';
 $messages['thumbnail_format'] = 'Format de miniatures';
-$messages['regenerate_preview'] = 'Regenera vista prèvia';
-$messages['error_fetching_resource'] = 'S\'ha produït un error en obtenir el recurs';
-$messages['error_updating_resource'] = 'S\'ha produït un error en actualitzar el recurs';
+$messages['regenerate_preview'] = 'Regenera vista prèvia';
+$messages['error_fetching_resource'] = 'S\'ha produït un error en obtenir el recurs';
+$messages['error_updating_resource'] = 'S\'ha produït un error en actualitzar el recurs';
 $messages['resource_updated_ok'] = 'El recurs "%s" actualitzat correctament';
 
 // blog settings
-$messages['blog_link'] = 'Enllaç del bloc';
-$messages['blog_link_help'] = 'Enllaç permanent a aquest bloc';
-$messages['blog_name_help'] = 'Títol per a aquest bloc';
-$messages['blog_description_help'] = 'Descripció llarga del bloc';
+$messages['blog_link'] = 'Enllaç del bloc';
+$messages['blog_link_help'] = 'Enllaç permanent a aquest bloc';
+$messages['blog_name_help'] = 'Títol per a aquest bloc';
+$messages['blog_description_help'] = 'Descripció llarga del bloc';
 $messages['language'] = 'Idioma';
-$messages['blog_language_help'] = 'Idioma que utilitzarà aquest bloc, tant a la part pública com a la interfície d\'administració';
-$messages['max_main_page_items'] = 'Nombre d\'articles a la pàgina principal';
-$messages['max_main_page_items_help'] = 'Nombre d\'articles que es mostren a la pàgina principal del bloc';
+$messages['blog_language_help'] = 'Idioma que utilitzarà aquest bloc, tant a la part pública com a la interfície d\'administració';
+$messages['max_main_page_items'] = 'Nombre d\'articles a la pàgina principal';
+$messages['max_main_page_items_help'] = 'Nombre d\'articles que es mostren a la pàgina principal del bloc';
 $messages['max_recent_items'] = 'Nombre d\'articles recents';
-$messages['max_recent_items_help'] = 'Nombre màxim de títols que pot contenir el llistat d\'articles recents';
+$messages['max_recent_items_help'] = 'Nombre màxim de títols que pot contenir el llistat d\'articles recents';
 $messages['template'] = 'Plantilla';
 $messages['choose'] = 'Escull';
-$messages['blog_template_help'] = 'Plantilla que utilitzarà aquest bloc. La llista d\'opcions inclou plantilles generals i d\'altres específiques per a aquest bloc';
-$messages['use_read_more'] = 'Enllaç "Segueix..." als articles';
-$messages['use_read_more_help'] = 'Si està activat, només el text escrit al camp "Text" es veurà a la pàgina principal. Per veure el "Text ampliat" l\'enllaç "Segueix..." s\'afegirà a cada article';
+$messages['blog_template_help'] = 'Plantilla que utilitzarà aquest bloc. La llista d\'opcions inclou plantilles generals i d\'altres específiques per a aquest bloc';
+$messages['use_read_more'] = 'Enllaç "Segueix..." als articles';
+$messages['use_read_more_help'] = 'Si està activat, només el text escrit al camp "Text" es veurà a la pàgina principal. Per veure el "Text ampliat" l\'enllaç "Segueix..." s\'afegirà a cada article';
 $messages['enable_wysiwyg'] = 'Activa l\'editor visual d\'articles';
-$messages['enable_wysiwyg_help'] = 'Per activar un editor més potent, selecciona l\'opció Activa l\'editor visual. L\'editor només funciona en Internet Explorer 5.5 o superior o Mozilla 1.3 o superior';
+$messages['enable_wysiwyg_help'] = 'Per activar un editor més potent, selecciona l\'opció Activa l\'editor visual. L\'editor només funciona en Internet Explorer 5.5 o superior o Mozilla 1.3 o superior';
 $messages['enable_comments'] = 'Activa comentaris per defecte';
 $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';
@@ -375,46 +375,46 @@
 $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';
-$messages['newest_first'] = 'Els més recent primer';
+$messages['comments_order_help'] = 'Ordre amb què els comentaris es mostraran a la pàgina principal';
+$messages['oldest_first'] = 'Els més antic primer';
+$messages['newest_first'] = 'Els més recent primer';
 $messages['categories_order'] = 'Ordre de les categories';
-$messages['categories_order_help'] = 'Ordre de les categories a la pàgina principal';
-$messages['most_recent_updated_first'] = 'El més recent primer';
-$messages['alphabetical_order'] = 'Ordre alfabètic';
-$messages['reverse_alphabetical_order'] = 'Ordre alfabètic invers';
-$messages['most_articles_first'] = 'Més articles primer';
-$messages['link_categories_order'] = 'Ordena per categories d\'enllaç';
-$messages['link_categories_order_help'] = 'Ordena per categories d\'enllaç tal com apareixen a la pàgina principal';
-$messages['most_links_first'] = 'Més enllaços primer';
-$messages['most_links_last'] = 'Més enllaços al final';
-$messages['time_offset'] = 'Diferència de temps';
-$messages['time_offset_help'] = 'Diferència de temps en hores que s\'afegeix dinàmicament';
+$messages['categories_order_help'] = 'Ordre de les categories a la pàgina principal';
+$messages['most_recent_updated_first'] = 'El més recent primer';
+$messages['alphabetical_order'] = 'Ordre alfabètic';
+$messages['reverse_alphabetical_order'] = 'Ordre alfabètic invers';
+$messages['most_articles_first'] = 'Més articles primer';
+$messages['link_categories_order'] = 'Ordena per categories d\'enllaç';
+$messages['link_categories_order_help'] = 'Ordena per categories d\'enllaç tal com apareixen a la pàgina principal';
+$messages['most_links_first'] = 'Més enllaços primer';
+$messages['most_links_last'] = 'Més enllaços al final';
+$messages['time_offset'] = 'Diferència de temps';
+$messages['time_offset_help'] = 'Diferència de temps en hores que s\'afegeix dinàmicament';
 $messages['close'] = 'Tanca';
 $messages['select'] = 'Selecciona';
-$messages['error_updating_settings'] = 'S\'ha produït un error en esborrar les preferències del bloc. Comprova les dades i prova-ho de nou';
-$messages['error_invalid_number'] = 'El número no és correcte';
-$messages['error_incorrect_time_offset'] = 'La diferència de temps no és vàlida';
-$messages['blog_settings_updated_ok'] = 'Preferències del bloc actualitzades correctament';
+$messages['error_updating_settings'] = 'S\'ha produït un error en esborrar les preferències del bloc. Comprova les dades i prova-ho de nou';
+$messages['error_invalid_number'] = 'El número no és correcte';
+$messages['error_incorrect_time_offset'] = 'La diferència de temps no és vàlida';
+$messages['blog_settings_updated_ok'] = 'Preferències del bloc actualitzades correctament';
 $messages['hours'] = 'Hores';
 
 // user settings
-$messages['username_help'] = 'Nom d\'usuari públic. No es pot canviar';
+$messages['username_help'] = 'Nom d\'usuari públic. No es pot canviar';
 $messages['full_name'] = 'Nom complet';
 $messages['full_name_help'] = 'Nom i llinatges';
 $messages['password_help'] = 'Escriu i confirma la nova contrasenya, o deixa l\'espai en blanc per deixar-la igual';
-$messages['password_help_registration'] = 'Escriu 4 caràcters com a mínim. Preferentment una combinació de lletres i números';
+$messages['password_help_registration'] = 'Escriu 4 caràcters com a mínim. Preferentment una combinació de lletres i números';
 $messages['confirm_password'] = 'Confirma contrasenya';
 $messages['email'] = 'Correu';
-$messages['email_help'] = 'Adreça de correu electrònic on se t\'enviaran les notificacions';
+$messages['email_help'] = 'Adreça de correu electrònic on se t\'enviaran les notificacions';
 $messages['bio'] = 'La teva biografia';
-$messages['bio_help'] = 'Pots introduir una descripció llarga de tu mateix';
+$messages['bio_help'] = 'Pots introduir una descripció llarga de tu mateix';
 $messages['picture'] = 'Imatge';
-$messages['user_picture_help'] = 'Selecciona una imatge de les que has pujat i serà la teva imatge personal';
-$messages['error_invalid_password'] = 'La contrasenya no és correcta. Assegura\'t que no sigui massa curta';
-$messages['error_passwords_dont_match'] = 'Perdona, però les contrasenyes no coincideixen';
-$messages['error_updating_user_settings'] = 'S\'ha produït un error en actualitzar les teves preferències. Comprova les dades i prova-ho de nou';
-$messages['user_settings_updated_ok'] = 'Preferències d\'usuari actualitzades correctament';
+$messages['user_picture_help'] = 'Selecciona una imatge de les que has pujat i serà la teva imatge personal';
+$messages['error_invalid_password'] = 'La contrasenya no és correcta. Assegura\'t que no sigui massa curta';
+$messages['error_passwords_dont_match'] = 'Perdona, però les contrasenyes no coincideixen';
+$messages['error_updating_user_settings'] = 'S\'ha produït un error en actualitzar les teves preferències. Comprova les dades i prova-ho de nou';
+$messages['user_settings_updated_ok'] = 'Preferències d\'usuari actualitzades correctament';
 
 // plugin center
 $messages['identifier'] = 'identificador';
@@ -424,43 +424,43 @@
 $messages['error_no_users_selected'] = 'No hi ha usuaris seleccionats';
 $messages['user_removed_from_blog_ok'] = 'L\'usuari "%s" s\'ha esborrat del bloc correctament';
 $messages['users_removed_from_blog_ok'] = '%s usuaris s\'han esborrat del bloc correctament';
-$messages['error_removing_user_from_blog'] = 'S\'ha produït un error en esborrar l\'usuari "%s" d\'aquest bloc';
-$messages['error_removing_user_from_blog2'] = 'S\'ha produït un error en esborrar l\'usuari que té identificador "%s" d\'aquest bloc';
+$messages['error_removing_user_from_blog'] = 'S\'ha produït un error en esborrar l\'usuari "%s" d\'aquest bloc';
+$messages['error_removing_user_from_blog2'] = 'S\'ha produït un error en esborrar l\'usuari que té identificador "%s" d\'aquest bloc';
 
 // new blog user
-$messages['new_blog_username_help'] = 'Nom de l\'usuari que vols que tingui accés al bloc.';
-$messages['send_notification'] = 'Envia notificació';
-$messages['send_user_notification_help'] = 'Envia un correu electrònic de notificació a l\'usuari';
-$messages['notification_text'] = 'text de notificació';
-$messages['notification_text_help'] = 'text que s\'inclourà al missatge de notificació';
-$messages['error_adding_user'] = 'S\'ha produït un error en donar accés a l\'usuari. Comprova les dades i prova-ho de nou';
+$messages['new_blog_username_help'] = 'Nom de l\'usuari que vols que tingui accés al bloc.';
+$messages['send_notification'] = 'Envia notificació';
+$messages['send_user_notification_help'] = 'Envia un correu electrònic de notificació a l\'usuari';
+$messages['notification_text'] = 'text de notificació';
+$messages['notification_text_help'] = 'text que s\'inclourà al missatge de notificació';
+$messages['error_adding_user'] = 'S\'ha produït un error en donar accés a l\'usuari. Comprova les dades i prova-ho de nou';
 $messages['error_empty_text'] = 'Hi has de posar algun text';
-$messages['error_adding_user'] = 'S\'ha produït un error en afegir l\'usuari. Comprova les dades i prova-ho de nou';
-$messages['error_invalid_user'] = 'L\'usuari "%s" no és vàlid o no existeix';
-$messages['user_added_to_blog_ok'] = 'L\'usuari "%s" ha obtingut accés a aquest bloc correctament';
+$messages['error_adding_user'] = 'S\'ha produït un error en afegir l\'usuari. Comprova les dades i prova-ho de nou';
+$messages['error_invalid_user'] = 'L\'usuari "%s" no és vàlid o no existeix';
+$messages['user_added_to_blog_ok'] = 'L\'usuari "%s" ha obtingut accés a aquest bloc correctament';
 
 // blog templates
 $messages['error_no_templates_selected'] = 'No hi ha plantilles seleccionades';
-$messages['error_template_is_current'] = 'La plantilla "%s" no es pot esborrar perquè és la que s\'utilitza';
-$messages['error_removing_template'] = 'S\'ha produït un error en esborrar la plantilla "%s"';
+$messages['error_template_is_current'] = 'La plantilla "%s" no es pot esborrar perquè és la que s\'utilitza';
+$messages['error_removing_template'] = 'S\'ha produït un error en esborrar la plantilla "%s"';
 $messages['template_removed_ok'] = 'Plantilla "%s" esborrada correctament';
 $messages['templates_removed_ok'] = '%s plantilles esborrades correctament';
 
 // new blog template
 $messages['template_installed_ok'] = 'Plantilla "%s" afegida correctament';
-$messages['error_installing_template'] = 'S\'ha produït un error en instal·lar la plantilla "%s"';
+$messages['error_installing_template'] = 'S\'ha produït un error en instal·lar la plantilla "%s"';
 $messages['error_missing_base_files'] = 'Falten alguns arxius imprescindibles a la plantilla';
 $messages['error_add_template_disabled'] = 'Aquest servei de blocs no permet afegir plantilles noves';
 $messages['error_must_upload_file'] = 'No s\'ha pujat cap paquet de plantilles';
 $messages['error_uploads_disabled'] = 'Aquest servei de blocs no permet pujar arxius';
 $messages['error_no_new_templates_found'] = 'No s\'han trobat plantilles noves';
 $messages['error_template_not_inside_folder'] = 'Els arxius utilitzats en les plantilles han d\'estar dins d\'una carpeta amb el mateix nom que la plantilla';
-$messages['error_unpacking'] = 'S\'ha produït un error en expandir l\'arxiu ';
+$messages['error_unpacking'] = 'S\'ha produït un error en expandir l\'arxiu ';
 $messages['error_forbidden_extensions'] = 'La plantilla inclou arxius amb extensions no permeses';
-$messages['error_creating_working_folder'] = 'S\'ha produït un error en crear una carpeta temporal per descomprimir els arxius';
-$messages['error_checking_template'] = 'S\'ha produït un error en comprovar la plantilla: %s';
+$messages['error_creating_working_folder'] = 'S\'ha produït un error en crear una carpeta temporal per descomprimir els arxius';
+$messages['error_checking_template'] = 'S\'ha produït un error en comprovar la plantilla: %s';
 $messages['template_package'] = 'Paquet de la plantilla';
-$messages['blog_template_package_help'] = 'Utilitza aquest formulari per pujar al servidor un joc de plantilles nou, que es podrà utilitzar només al teu bloc. Si això no és possible, puja el joc de plantilles manualment i col·loca\'l a <b>%s</b>, que és la carpeta del servidor que conté les plantilles, i acciona el botó "<b>Cerca plantilles</b>". LifeType cercarà en aquesta carpeta i actualitzarà automàticament les plantilles que hi trobi.';
+$messages['blog_template_package_help'] = 'Utilitza aquest formulari per pujar al servidor un joc de plantilles nou, que es podrà utilitzar només al teu bloc. Si això no és possible, puja el joc de plantilles manualment i col·loca\'l a <b>%s</b>, que és la carpeta del servidor que conté les plantilles, i acciona el botó "<b>Cerca plantilles</b>". LifeType cercarà en aquesta carpeta i actualitzarà automàticament les plantilles que hi trobi.';
 $messages['scan_templates'] = 'Cerca plantilles';
 
 // site users
@@ -469,23 +469,23 @@
 $messages['user_status_all'] = 'Tots';
 $messages['user_status_unconfirmed'] = 'No confirmat';
 $messages['error_invalid_user2'] = 'L\'usuari amb identificador "%s" no existeix';
-$messages['error_deleting_user'] = 'S\'ha produït un error en desactivar l\'usuari "%s"';
+$messages['error_deleting_user'] = 'S\'ha produït un error en desactivar l\'usuari "%s"';
 $messages['user_deleted_ok'] = 'Usuari "%s" desactivat correctament';
 $messages['users_deleted_ok'] = '%s usuaris desactivats correctament';
 
 // create user
 $messages['user_added_ok'] = 'Usuari "%s" afegit correctament';
 $messages['user_status_help'] = 'Estat actual de l\'usuari';
-$messages['user_blog_help'] = 'Bloc al qual s\'assignarà l\'usuari inicialment';
+$messages['user_blog_help'] = 'Bloc al qual s\'assignarà l\'usuari inicialment';
 $messages['none'] = 'Cap';
 
 // edit user
-$messages['error_invalid_user'] = 'L\'identificador d\'usuari no és correcte o l\'usuari no existeix';
-$messages['error_updating_user'] = 'S\'ha produït un error en actualitzar les preferències d\'usuari. Comprova les dades i prova-ho de nou';
+$messages['error_invalid_user'] = 'L\'identificador d\'usuari no és correcte o l\'usuari no existeix';
+$messages['error_updating_user'] = 'S\'ha produït un error en actualitzar les preferències d\'usuari. Comprova les dades i prova-ho de nou';
 $messages['blogs'] = 'Blocs';
-$messages['user_blogs_help'] = 'Blocs d\'aquest usuari o als quals té accés';
+$messages['user_blogs_help'] = 'Blocs d\'aquest usuari o als quals té accés';
 $messages['site_admin'] = 'Administrador';
-$messages['site_admin_help'] = 'Aquest usuari té privilegis d\'administrador i pot anar a la secció "Administració" i realitzar les tasques administratives pertinents';
+$messages['site_admin_help'] = 'Aquest usuari té privilegis d\'administrador i pot anar a la secció "Administració" i realitzar les tasques administratives pertinents';
 $messages['user_updated_ok'] = 'Usuari "%s" actualitzat correctament';
 
 // site blogs
@@ -494,190 +494,190 @@
 $messages['blog_status_disabled'] = 'Inactiu(s)';
 $messages['blog_status_unconfirmed'] = 'Sense confirmar';
 $messages['owner'] = 'Propietari';
-$messages['quota'] = 'Grandària';
+$messages['quota'] = 'Grandària';
 $messages['bytes'] = 'octets';
 $messages['error_no_blogs_selected'] = 'No hi ha blocs seleccionats per desactivar';
-$messages['error_blog_is_default_blog'] = 'El bloc "%s" no es pot esborrar perquè és el bloc predeterminat';
+$messages['error_blog_is_default_blog'] = 'El bloc "%s" no es pot esborrar perquè és el bloc predeterminat';
 $messages['blog_deleted_ok'] = 'Bloc "%s" esborrat correctament';
 $messages['blogs_deleted_ok'] = '%s blocs esborrats correctament';
-$messages['error_deleting_blog'] = 'S\'ha produït un error en desactivar el bloc "%s"';
-$messages['error_deleting_blog2'] = 'S\'ha produït un error en desactivar el bloc que té l\'identificador "%s"';
+$messages['error_deleting_blog'] = 'S\'ha produït un error en desactivar el bloc "%s"';
+$messages['error_deleting_blog2'] = 'S\'ha produït un error en desactivar el bloc que té l\'identificador "%s"';
 
 // create blog
-$messages['error_adding_blog'] = 'S\'ha produït un error en activar el bloc. Comprova les dades i prova-ho de nou';
+$messages['error_adding_blog'] = 'S\'ha produït un error en activar el bloc. Comprova les dades i prova-ho de nou';
 $messages['blog_added_ok'] = 'Bloc "%s" afegit correctament';
 
 // edit blog
 $messages['blog_status_help'] = 'Estat del bloc';
-$messages['blog_owner_help'] = 'L\'usuari tindrà control total sobre les preferències del bloc';
+$messages['blog_owner_help'] = 'L\'usuari tindrà control total sobre les preferències del bloc';
 $messages['users'] = 'Usuaris';
-$messages['blog_quota_help'] = 'Capacitat màxima en octets per a recursos. Posa-hi 0 per establir un espai il·limitat o deixa-ho en blanc per ajustar-ho al espai general permès';
-$messages['blog_users_help'] = 'Usuaris que tenen accés a aquest bloc. Selecciona un usuari de l\'esquerra i mou-lo a la llista de la dreta per saber l\'ordre d\'accés dels usuaris d\'aquest bloc';
+$messages['blog_quota_help'] = 'Capacitat màxima en octets per a recursos. Posa-hi 0 per establir un espai il·limitat o deixa-ho en blanc per ajustar-ho al espai general permès';
+$messages['blog_users_help'] = 'Usuaris que tenen accés a aquest bloc. Selecciona un usuari de l\'esquerra i mou-lo a la llista de la dreta per saber l\'ordre d\'accés dels usuaris d\'aquest bloc';
 $messages['edit_blog_settings_updated_ok'] = 'Bloc "%s" actualitzat correctament';
-$messages['error_updating_blog_settings'] = 'S\'ha produït un error en actualitzar el bloc "%s"';
-$messages['error_incorrect_blog_owner'] = 'L\'usuari seleccionat com a propietari no és correcte';
-$messages['error_fetching_blog'] = 'S\'ha produït un error en obtenir el bloc';
-$messages['error_updating_blog_settings2'] = 'S\'ha produït un error en actualitzar el bloc. Comprova les dades i prova-ho de nou';
+$messages['error_updating_blog_settings'] = 'S\'ha produït un error en actualitzar el bloc "%s"';
+$messages['error_incorrect_blog_owner'] = 'L\'usuari seleccionat com a propietari no és correcte';
+$messages['error_fetching_blog'] = 'S\'ha produït un error en obtenir el bloc';
+$messages['error_updating_blog_settings2'] = 'S\'ha produït un error en actualitzar el bloc. Comprova les dades i prova-ho de nou';
 $messages['add_or_remove'] = 'Afegeix o esborra usuaris';
 
 // site locales
-$messages['locale'] = 'Localització';
-$messages['locale_encoding'] = 'Codificació';
-$messages['locale_deleted_ok'] = 'Localització "%s" esborrada correctament';
+$messages['locale'] = 'Localització';
+$messages['locale_encoding'] = 'Codificació';
+$messages['locale_deleted_ok'] = 'Localització "%s" esborrada correctament';
 $messages['error_no_locales_selected'] = 'No hi ha localitzacions seleccionades per esborrar';
-$messages['error_deleting_only_locale'] = 'La localització no es pot esborrar perquè és l\'única que hi ha al sistema';
+$messages['error_deleting_only_locale'] = 'La localització no es pot esborrar perquè és l\'única que hi ha al sistema';
 $messages['locales_deleted_ok']= '%s localitzacions esborrades correctament';
-$messages['error_deleting_locale'] = 'S\'ha produït un error en esborrar la localització "%s"';
-$messages['error_locale_is_default'] = 'La localització "%s" no es pot esborrar perquè és la localització predeterminada als blocs de nova creació';
+$messages['error_deleting_locale'] = 'S\'ha produït un error en esborrar la localització "%s"';
+$messages['error_locale_is_default'] = 'La localització "%s" no es pot esborrar perquè és la localització predeterminada als blocs de nova creació';
 
 // add locale
-$messages['error_invalid_locale_file'] = 'L\'arxiu de localització no és vàlid';
-$messages['error_no_new_locales_found'] = 'No s\'han trobat arxius de localització nous';
-$messages['locale_added_ok'] = 'Localització "%s" afegida correctament';
-$messages['error_saving_locale'] = 'S\'ha produït un error en afegir la localització nova';
+$messages['error_invalid_locale_file'] = 'L\'arxiu de localització no és vàlid';
+$messages['error_no_new_locales_found'] = 'No s\'han trobat arxius de localització nous';
+$messages['locale_added_ok'] = 'Localització "%s" afegida correctament';
+$messages['error_saving_locale'] = 'S\'ha produït un error en afegir la localització nova';
 $messages['scan_locales'] = 'Cerca localitzacions';
-$messages['add_locale_help'] = 'Utilitza aquest formulari per pujar un arxiu de localització. Si no pots pujar l\'arxiu mitjançant el formulari, puja l\'arxiu manualment al directori <b>./locales/</b>, que és la carpeta que conté les localitzacions, i acciona el botó "<b>Cerca localització</b>". LifeType cercarà dins la carpeta i actualitzarà tots els idiomes que hi trobi.';
+$messages['add_locale_help'] = 'Utilitza aquest formulari per pujar un arxiu de localització. Si no pots pujar l\'arxiu mitjançant el formulari, puja l\'arxiu manualment al directori <b>./locales/</b>, que és la carpeta que conté les localitzacions, i acciona el botó "<b>Cerca localització</b>". LifeType cercarà dins la carpeta i actualitzarà tots els idiomes que hi trobi.';
 
 // site templates
-$messages['error_template_is_default'] = 'La plantilla "%s" no es pot esborrar perquè és la plantilla predeterminada dels blocs de nova creació';
+$messages['error_template_is_default'] = 'La plantilla "%s" no es pot esborrar perquè és la plantilla predeterminada dels blocs de nova creació';
 
 // add template
-$messages['global_template_package_help'] = 'Utilitza aquest formulari per pujar un joc de plantilles nou, que estarà només disponible per a tots els blocs. Si això no és possible, puja el joc de plantilles manualment i col·loca\'l a <b>%s</b>, que és la carpeta del servidor que conté les plantilles, i acciona el botó "<b>Cerca plantilles</b>". LifeType buscarà en aquesta carpeta i actualitzarà automàticament les plantilles que hi trobi.';
+$messages['global_template_package_help'] = 'Utilitza aquest formulari per pujar un joc de plantilles nou, que estarà només disponible per a tots els blocs. Si això no és possible, puja el joc de plantilles manualment i col·loca\'l a <b>%s</b>, que és la carpeta del servidor que conté les plantilles, i acciona el botó "<b>Cerca plantilles</b>". LifeType buscarà en aquesta carpeta i actualitzarà automàticament les plantilles que hi trobi.';
 
 // global settings
-$messages['site_config_saved_ok'] = 'Preferències arxivades correctament';
-$messages['error_saving_site_config'] = 'S\'ha produït un error en desar les preferències';
+$messages['site_config_saved_ok'] = 'Preferències arxivades correctament';
+$messages['error_saving_site_config'] = 'S\'ha produït un error en desar les preferències';
 
 /// general settings
-$messages['help_comments_enabled'] = 'Activa o desactiva per defecte els comentaris als blocs que es creïn a partir d\'ara';
-$messages['help_beautify_comments_text'] = 'Si està activat, el format dels paràgrafs, salts de línia i els enllaços es marquen de forma automàtica als comentaris que afegeixen els usuaris';
+$messages['help_comments_enabled'] = 'Activa o desactiva per defecte els comentaris als blocs que es creïn a partir d\'ara';
+$messages['help_beautify_comments_text'] = 'Si està activat, el format dels paràgrafs, salts de línia i els enllaços es marquen de forma automàtica als comentaris que afegeixen els usuaris';
 $messages['help_temp_folder'] = 'Carpeta que fa servir LifeType per escriure arxius temporals, etc. Utilitza\'n una altra si vols augmentar la seguretat';
 $messages['help_base_url'] = 'URL de base d\'aquest bloc';
-$messages['help_subdomains_enabled'] = 'Activa o desactiva subdominis. Mira la documentació per saber-ne més';
-$messages['help_include_blog_id_in_url'] = 'Si els subdominis estan actius i les adreces (URL) normals estan actives, fa que les adreces (URL) generades internament no continguin el paràmetre "blogID". No ho canviïs si no estàs segur del què fas!';
+$messages['help_subdomains_enabled'] = 'Activa o desactiva subdominis. Mira la documentació per saber-ne més';
+$messages['help_include_blog_id_in_url'] = 'Si els subdominis estan actius i les adreces (URL) normals estan actives, fa que les adreces (URL) generades internament no continguin el paràmetre "blogID". No ho canviïs si no estàs segur del què fas!';
 $messages['help_script_name'] = 'Modifica aquest camp si necessites reanomenar l\'arxiu "index.php" a algun altre nom.';
-$messages['help_show_posts_max'] = 'Nombre màxim d\'articles mostrats a la pàgina principal. Només afecta els blocs que es creïn a partir d\'ara';
-$messages['help_recent_posts_max'] = 'Nombre màxim d\'articles recents mostrats a la pàgina principal. Només afecta els blocs que es creïn a partir d\'ara';
-$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Activa o desactiva l\'opció de desar esbossos via Javascript i XmlHttpRequest';
-$messages['help_locale_folder'] = 'Directori on hi ha desats els arxius de localització';
-$messages['help_default_locale'] = 'Opció d\'idioma predefinida per als blocs que es creïn a partir d\'ara';
-$messages['help_default_blog_id'] = 'Bloc predefinit que es mostrarà si cap altre s\'ha especificat.';
-$messages['help_default_time_offset'] = 'Temps de compensació predefinit per als blocs que es creïn a partir d\'ara';
+$messages['help_show_posts_max'] = 'Nombre màxim d\'articles mostrats a la pàgina principal. Només afecta els blocs que es creïn a partir d\'ara';
+$messages['help_recent_posts_max'] = 'Nombre màxim d\'articles recents mostrats a la pàgina principal. Només afecta els blocs que es creïn a partir d\'ara';
+$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Activa o desactiva l\'opció de desar esbossos via Javascript i XmlHttpRequest';
+$messages['help_locale_folder'] = 'Directori on hi ha desats els arxius de localització';
+$messages['help_default_locale'] = 'Opció d\'idioma predefinida per als blocs que es creïn a partir d\'ara';
+$messages['help_default_blog_id'] = 'Bloc predefinit que es mostrarà si cap altre s\'ha especificat.';
+$messages['help_default_time_offset'] = 'Temps de compensació predefinit per als blocs que es creïn a partir d\'ara';
 $messages['help_html_allowed_tags_in_comments'] = 'Llista de les etiquetes HTML o XHML permeses als comentaris separades per espais.';
-$messages['help_referer_tracker_enabled'] = 'Activa o desactiva la possibilitat de desar les referències a la base de dades. Desactivar-ho per més alt rendiment.';
-$messages['help_show_more_enabled'] = 'Activa o desactiva la possibilitat de afegir-hi el "Segueix..." als blocs que es creïn a partir d\'ara';
-$messages['help_update_article_reads'] = 'Activa o desactiva l\'actualització del comptador de lectures dels articles. Desactiva-ho per millorar el rendiment.';
-$messages['help_update_cached_article_reads'] = 'Activa o desactiva l\'actualització del comptador de lectures dels articles, encara que s\'hagi activat l\'opció d\'usar la memòria cau';
-$messages['help_xmlrpc_ping_enabled'] = 'Activa o desactiva l\'opció pings XMLRPC a llocs que ho permetin';
+$messages['help_referer_tracker_enabled'] = 'Activa o desactiva la possibilitat de desar les referències a la base de dades. Desactivar-ho per més alt rendiment.';
+$messages['help_show_more_enabled'] = 'Activa o desactiva la possibilitat de afegir-hi el "Segueix..." als blocs que es creïn a partir d\'ara';
+$messages['help_update_article_reads'] = 'Activa o desactiva l\'actualització del comptador de lectures dels articles. Desactiva-ho per millorar el rendiment.';
+$messages['help_update_cached_article_reads'] = 'Activa o desactiva l\'actualització del comptador de lectures dels articles, encara que s\'hagi activat l\'opció d\'usar la memòria cau';
+$messages['help_xmlrpc_ping_enabled'] = 'Activa o desactiva l\'opció pings XMLRPC a llocs que ho permetin';
 $messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Activa o desactiva per defecte la possibilitat d\'enviar pings quan es publica o edita un article.';
-$messages['help_xmlrpc_ping_hosts'] = 'Adreces (URL) cap on apunta la interfície de XMLRPC de llocs que suportin pings de XMLRPC. Posa una adreça (URL) a cada nova línia';
-$messages['help_trackback_server_enabled'] = 'Activa o desactiva la possibilitat de rebre retroenllaços';
-$messages['help_htmlarea_enabled'] = 'Activa o desactiva l\'editor gràfic (WYSIWYG) d\'articles per defecte als blocs que es creïn a partir d\'ara';
+$messages['help_xmlrpc_ping_hosts'] = 'Adreces (URL) cap on apunta la interfície de XMLRPC de llocs que suportin pings de XMLRPC. Posa una adreça (URL) a cada nova línia';
+$messages['help_trackback_server_enabled'] = 'Activa o desactiva la possibilitat de rebre retroenllaços';
+$messages['help_htmlarea_enabled'] = 'Activa o desactiva l\'editor gràfic (WYSIWYG) d\'articles per defecte als blocs que es creïn a partir d\'ara';
 $messages['help_plugin_manager_enabled'] = 'Activa o desactiva els plugins';
-$messages['help_minimum_password_length'] = 'Longitud mínima per a les contrasenyes';
-$messages['help_xhtml_converter_enabled'] = 'Si està activat, LifeType intentarà convertir tot el codi HTML al codi XHTML més semblant';
-$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'Si està activat, LifeType intentarà encara més generar codi XHTML a partir del codi HTML, però serà més propens a errors';
-$messages['help_session_save_path'] = 'Fes servir aquest paràmetre per canviar la carpeta on LifeType desa les dades de sessions, a través de la funció de PHP session_save_path(). Assegura\'t que el servidor té permisos d\'escriptura a la carpeta. Deixa-ho en blanc per fer servir la configuració de PHP per defecte';
+$messages['help_minimum_password_length'] = 'Longitud mínima per a les contrasenyes';
+$messages['help_xhtml_converter_enabled'] = 'Si està activat, LifeType intentarà convertir tot el codi HTML al codi XHTML més semblant';
+$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'Si està activat, LifeType intentarà encara més generar codi XHTML a partir del codi HTML, però serà més propens a errors';
+$messages['help_session_save_path'] = 'Fes servir aquest paràmetre per canviar la carpeta on LifeType desa les dades de sessions, a través de la funció de PHP session_save_path(). Assegura\'t que el servidor té permisos d\'escriptura a la carpeta. Deixa-ho en blanc per fer servir la configuració de PHP per defecte';
 // summary settings
-$messages['help_summary_page_show_max'] = 'Número d\'elements que es mostraran a la portada del servei de blocs. Aquest paràmetre controla totes les llistes (Articles recents, Blocs més actius, etc.)';
-$messages['help_summary_items_per_page'] = 'Número de blocs per pàgina a la llista de blocs';
+$messages['help_summary_page_show_max'] = 'Número d\'elements que es mostraran a la portada del servei de blocs. Aquest paràmetre controla totes les llistes (Articles recents, Blocs més actius, etc.)';
+$messages['help_summary_items_per_page'] = 'Número de blocs per pàgina a la llista de blocs';
 $messages['help_forbidden_usernames'] = 'Llista de noms d\'usuaris que no es poden registrar';
-$messages['help_force_one_blog_per_email_account'] = 'Restringir a només un bloc per correu electrònic';
-$messages['help_summary_show_agreement'] = 'Mostra un text de termes i condicions d\'ús i fes que els usuaris l\'acceptin per poder-se registrar';
-$messages['help_need_email_confirm_registration'] = 'Obliga els usuaris a confirmar el seu registre a través d\'un enllaç dins d\'un email enviat a la seva adreça';
+$messages['help_force_one_blog_per_email_account'] = 'Restringir a només un bloc per correu electrònic';
+$messages['help_summary_show_agreement'] = 'Mostra un text de termes i condicions d\'ús i fes que els usuaris l\'acceptin per poder-se registrar';
+$messages['help_need_email_confirm_registration'] = 'Obliga els usuaris a confirmar el seu registre a través d\'un enllaç dins d\'un email enviat a la seva adreça';
 $messages['help_summary_disable_registration'] = 'Si els usuaris poden registrar blocs nous en aquest servei de blocs';
 // templates
 $messages['help_template_folder'] = 'Carpeta on hi ha desades les plantilles';
-$messages['help_default_template'] = 'Plantilla per defecte per als blocs que es creïn a partir d\'ara';
-$messages['help_users_can_add_templates'] = 'Permet als usuaris penjar la seva pròpia plantilla';
-$messages['help_template_compile_check'] = 'Si està desactivat, Smarty comprovarà cada cop si la plantilla ha canviat i en el cas afirmatiu, utilitzarà la nova versió. Desactivar-ho per millorar el rendiment';
-$messages['help_template_cache_enabled'] = 'Permet desar les plantilles a la memòria cau. Si està activat, la versió de la pàgina de la memòria cau s\'utilitzarà sempre que sigui possible. No caldrà extreure dades de la base de dades ni recompilar la plantilla';
-$messages['help_template_cache_lifetime'] = 'Vida en segons de la memòria cau. Posa -1 per forçar que la memòria cau no expiri mai. Si el valor és 0 la memòria cau estarà desactivada però es recomana desactivar-la a través de l\'opció anterior';
-$messages['help_template_http_cache_enabled'] = 'Permet el suport per peticions condicionals de HTTP. Si està activat, LifeType tindrà en compte la capçalera HTTP de "If-Modified-Since" i enviarà només el contingut si és estrictament necessari. Activa això per estalviar ample de banda';
+$messages['help_default_template'] = 'Plantilla per defecte per als blocs que es creïn a partir d\'ara';
+$messages['help_users_can_add_templates'] = 'Permet als usuaris penjar la seva pròpia plantilla';
+$messages['help_template_compile_check'] = 'Si està desactivat, Smarty comprovarà cada cop si la plantilla ha canviat i en el cas afirmatiu, utilitzarà la nova versió. Desactivar-ho per millorar el rendiment';
+$messages['help_template_cache_enabled'] = 'Permet desar les plantilles a la memòria cau. Si està activat, la versió de la pàgina de la memòria cau s\'utilitzarà sempre que sigui possible. No caldrà extreure dades de la base de dades ni recompilar la plantilla';
+$messages['help_template_cache_lifetime'] = 'Vida en segons de la memòria cau. Posa -1 per forçar que la memòria cau no expiri mai. Si el valor és 0 la memòria cau estarà desactivada però es recomana desactivar-la a través de l\'opció anterior';
+$messages['help_template_http_cache_enabled'] = 'Permet el suport per peticions condicionals de HTTP. Si està activat, LifeType tindrà en compte la capçalera HTTP de "If-Modified-Since" i enviarà només el contingut si és estrictament necessari. Activa això per estalviar ample de banda';
 
 // urls
-$messages['help_request_format_mode'] = 'Selecciona un dels formats de les adreces (URL) disponibles. Si s\'usen adreces (URL) personalitzades, és necessari configurar els paràmetres següents';
+$messages['help_request_format_mode'] = 'Selecciona un dels formats de les adreces (URL) disponibles. Si s\'usen adreces (URL) personalitzades, és necessari configurar els paràmetres següents';
 $messages['plain'] = 'Normal';
 $messages['search_engine_friendly'] = 'Optimitzat per als motors de cerca';
 $messages['custom_url_format'] = 'Adreces (URL) personalitzades';
-$messages['help_permalink_format'] = 'Format per als enllaços permanents si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_category_link_format'] = 'Format per als enllaços a les categories si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_blog_link_format'] = 'Format per als enllaços als blocs si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_archive_link_format'] = 'Format per als enllaços als arxius si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_permalink_format'] = 'Format per als enllaços permanents si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_category_link_format'] = 'Format per als enllaços a les categories si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_blog_link_format'] = 'Format per als enllaços als blocs si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_archive_link_format'] = 'Format per als enllaços als arxius si s\'utilitzen les adreces (URL) personalitzades';
 $messages['help_user_posts_link_format'] = 'Format per als articles publicats per un usuari concret s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_post_trackbacks_link_format'] = 'Format per als enllaços a la pàgina de retroenllaços si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_template_link_format'] = 'Format per als enllaços a la plantilla estàtica personalitzada si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_album_link_format'] = 'Format per als enllaços als àlbums de recursos si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_resource_link_format'] = 'Format per als enllaços a les pàgines de recursos amb arxius si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_resource_preview_link_format'] = 'Format per als enllaços a les vistes prèvies dels recursos si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_resource_medium_size_preview_link_format'] = 'Format per als enllaços a les vistes prèvies de mida mitjana dels recursos si s\'utilitzen les adreces (URL) personalitzades';
-$messages['help_resource_download_link_format'] = 'Format per als enllaços als arxius si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_post_trackbacks_link_format'] = 'Format per als enllaços a la pàgina de retroenllaços si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_template_link_format'] = 'Format per als enllaços a la plantilla estàtica personalitzada si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_album_link_format'] = 'Format per als enllaços als àlbums de recursos si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_resource_link_format'] = 'Format per als enllaços a les pàgines de recursos amb arxius si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_resource_preview_link_format'] = 'Format per als enllaços a les vistes prèvies dels recursos si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_resource_medium_size_preview_link_format'] = 'Format per als enllaços a les vistes prèvies de mida mitjana dels recursos si s\'utilitzen les adreces (URL) personalitzades';
+$messages['help_resource_download_link_format'] = 'Format per als enllaços als arxius si s\'utilitzen les adreces (URL) personalitzades';
 // email
-$messages['help_check_email_address_validity'] = 'Quan es comprovin adreces de correu electrònic, fes unes comprovacions bàsiques per veure si existeix un MX en el domini especificat i en cas afirmatiu, comprovar si l\'adreça especificada és vàlida';
-$messages['help_email_service_enabled'] = 'Activa o desactiva els correus electrònics de sortida';
-$messages['help_post_notification_source_address'] = 'L\'adreça de correu electrònic que apareixerà al camp "De:" quan s\'enviïn correus des de LifeType';
-$messages['help_email_service_type'] = 'Quin sistema utilitzar per enviar correus electrònics';
-$messages['help_smtp_host'] = 'Si s\'utilitza el sistema de SMTP, posa-hi el servidor SMTP que es farà servir per enviar els missatges';
-$messages['help_smtp_port'] = 'Si el servidor SMTP funciona en un port diferent del 25, posa\'l aquí';
-$messages['help_smtp_use_authentication'] = 'Activa això si el servidor SMTP requereix autentificació';
-$messages['help_smtp_username'] = 'Si el servidor SMTP requereix autentificació, posa aquí l\'usuari';
-$messages['help_smtp_password'] = 'Si el servidor SMTP requereix autentificació, posa aquí la contrasenya per l\'usuari anterior';
+$messages['help_check_email_address_validity'] = 'Quan es comprovin adreces de correu electrònic, fes unes comprovacions bàsiques per veure si existeix un MX en el domini especificat i en cas afirmatiu, comprovar si l\'adreça especificada és vàlida';
+$messages['help_email_service_enabled'] = 'Activa o desactiva els correus electrònics de sortida';
+$messages['help_post_notification_source_address'] = 'L\'adreça de correu electrònic que apareixerà al camp "De:" quan s\'enviïn correus des de LifeType';
+$messages['help_email_service_type'] = 'Quin sistema utilitzar per enviar correus electrònics';
+$messages['help_smtp_host'] = 'Si s\'utilitza el sistema de SMTP, posa-hi el servidor SMTP que es farà servir per enviar els missatges';
+$messages['help_smtp_port'] = 'Si el servidor SMTP funciona en un port diferent del 25, posa\'l aquí';
+$messages['help_smtp_use_authentication'] = 'Activa això si el servidor SMTP requereix autentificació';
+$messages['help_smtp_username'] = 'Si el servidor SMTP requereix autentificació, posa aquí l\'usuari';
+$messages['help_smtp_password'] = 'Si el servidor SMTP requereix autentificació, posa aquí la contrasenya per l\'usuari anterior';
 // helpers
-$messages['help_path_to_tar'] = 'Ruta fins a l\'eina "tar", necessària per expandir les plantilles en formats .tar.gz o tar.bz2';
-$messages['help_path_to_gzip'] = 'Ruta fins a l\'eina "gzip", necessària per expandir les plantilles en format .tar.gz';
-$messages['help_path_to_bz2'] = 'Ruta fins a l\'eina "bzip2", necessària per expandir les plantilles en format .tar.bz2';
-$messages['help_path_to_unzip'] = 'Ruta fins a l\'eina "unzip", necessària per expandir les plantilles en format .zip';
-$messages['help_unzip_use_native_version'] = 'Utilitza el packet de la versió nativa de PHP per expandir arxius en format .zip';
+$messages['help_path_to_tar'] = 'Ruta fins a l\'eina "tar", necessària per expandir les plantilles en formats .tar.gz o tar.bz2';
+$messages['help_path_to_gzip'] = 'Ruta fins a l\'eina "gzip", necessària per expandir les plantilles en format .tar.gz';
+$messages['help_path_to_bz2'] = 'Ruta fins a l\'eina "bzip2", necessària per expandir les plantilles en format .tar.bz2';
+$messages['help_path_to_unzip'] = 'Ruta fins a l\'eina "unzip", necessària per expandir les plantilles en format .zip';
+$messages['help_unzip_use_native_version'] = 'Utilitza el packet de la versió nativa de PHP per expandir arxius en format .zip';
 // uploads
-$messages['help_uploads_enabled'] = 'Si els usuaris poden enviar arxius. Això afecta la secció de recursos, a l\'enviament de plantilles personalitzades i a la instal·lació d\'idiomes nous';
-$messages['help_maximum_file_upload_size'] = 'Grandària màxima per als arxius. Aquest límit mai serà més gran que el propi de PHP';
-$messages['help_upload_forbidden_files'] = 'Llista d\'extensions no permeses, separades per espais. No es permet la utilització de \'*\' ni \'?\'';
+$messages['help_uploads_enabled'] = 'Si els usuaris poden enviar arxius. Això afecta la secció de recursos, a l\'enviament de plantilles personalitzades i a la instal·lació d\'idiomes nous';
+$messages['help_maximum_file_upload_size'] = 'Grandària màxima per als arxius. Aquest límit mai serà més gran que el propi de PHP';
+$messages['help_upload_forbidden_files'] = 'Llista d\'extensions no permeses, separades per espais. No es permet la utilització de \'*\' ni \'?\'';
 // interfaces
-$messages['help_xmlrpc_api_enabled'] = 'Activa o desactiva l\'accés via XMLRPC als blocs';
-$messages['help_rdf_enabled'] = 'Activa les fonts de subscripció via Atom o RSS';
-$messages['help_default_rss_profile'] = 'Versió per defecte de RSS o Atom utilitzat per sindicar els continguts a menys que s\'especifiqui';
+$messages['help_xmlrpc_api_enabled'] = 'Activa o desactiva l\'accés via XMLRPC als blocs';
+$messages['help_rdf_enabled'] = 'Activa les fonts de subscripció via Atom o RSS';
+$messages['help_default_rss_profile'] = 'Versió per defecte de RSS o Atom utilitzat per sindicar els continguts a menys que s\'especifiqui';
 // security
-$messages['security_pipeline_enabled'] = 'Activa o desactiva el conducte de seguretat i tots els filtres relacionats. Això també afecta els plugins que registrin filtres nous';
-$messages['help_maximum_comment_size'] = 'Extensió màxima en octets que pot tenir un comentari';
+$messages['security_pipeline_enabled'] = 'Activa o desactiva el conducte de seguretat i tots els filtres relacionats. Això també afecta els plugins que registrin filtres nous';
+$messages['help_maximum_comment_size'] = 'Extensió màxima en octets que pot tenir un comentari';
 // bayesian filter
-$messages['help_bayesian_filter_enabled'] = 'Activa o desactiva el filtre bayesià per a filtrar automàticament l\'spam';
-$messages['help_bayesian_filter_spam_probability_treshold'] = 'Llindar màxim abans que un comentari sigui considerat spam';
-$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Llindar mínim després del qual un comentari sigui considerat no-spam';
-$messages['help_bayesian_filter_min_length_token'] = 'Longitud mínima d\'un senyal per ser considerat significatiu per el filtre bayesià';
-$messages['help_bayesian_filter_max_length_token'] = 'Longitud màxima d\'un senyal per ser considerat significatiu per el filtre bayesià';
-$messages['help_bayesian_filter_number_significant_tokens'] = 'Número de senyals significatius';
-$messages['help_bayesian_filter_spam_comments_action'] = 'Què fer amb els comentaris considerats spam. Activa l\'opció "Llença\'ls" només quan el teu filtre hagi estat entrenat correctament.';
-$messages['keep_spam_comments'] = 'Mantén-los a la base de dades marcats com a "Spam"';
-$messages['throw_away_spam_comments'] = 'Llença\'ls (no els desis)';
+$messages['help_bayesian_filter_enabled'] = 'Activa o desactiva el filtre bayesià per a filtrar automàticament l\'spam';
+$messages['help_bayesian_filter_spam_probability_treshold'] = 'Llindar màxim abans que un comentari sigui considerat spam';
+$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Llindar mínim després del qual un comentari sigui considerat no-spam';
+$messages['help_bayesian_filter_min_length_token'] = 'Longitud mínima d\'un senyal per ser considerat significatiu per el filtre bayesià';
+$messages['help_bayesian_filter_max_length_token'] = 'Longitud màxima d\'un senyal per ser considerat significatiu per el filtre bayesià';
+$messages['help_bayesian_filter_number_significant_tokens'] = 'Número de senyals significatius';
+$messages['help_bayesian_filter_spam_comments_action'] = 'Què fer amb els comentaris considerats spam. Activa l\'opció "Llença\'ls" només quan el teu filtre hagi estat entrenat correctament.';
+$messages['keep_spam_comments'] = 'Mantén-los a la base de dades marcats com a "Spam"';
+$messages['throw_away_spam_comments'] = 'Llença\'ls (no els desis)';
 // resources
 $messages['help_resources_enabled'] = 'Activa o desactiva els recursos';
-$messages['help_resources_folder'] = 'Carpeta on es desaran els recursos. Configura-ho fora de l\'arbre del servidor web per més seguretat';
-$messages['help_thumbnail_method'] = 'Mètode utilitzat per generar vistes prèvies. Si utilitza PHP, necessita suport GD';
-$messages['help_path_to_convert'] = 'Ruta fins a l\'eina de convertir del paquet "ImageMagick". Necessari si el mètode de vista prèvia és "ImageMagick"';
-$messages['help_thumbnail_format'] = 'Format amb el qual es desaran les vistes prèvies';
-$messages['help_thumbnail_height'] = 'Alçada per defecte de les vistes prèvies petites';
-$messages['help_thumbnail_width'] = 'Amplada per defecte de les vistes prèvies petites';
-$messages['help_medium_size_thumbnail_height'] = 'Alçada per defecte de les vistes prèvies mitjanes';
-$messages['help_medium_size_thumbnail_width'] = 'Amplada per defecte de les vistes prèvies mitjanes';
-$messages['help_thumbnails_keep_aspect_ratio'] = 'Manté les proporcions quan es generen les vistes prèvies. Generarà vistes prèvies més grans de les mides especificades però seran de més bona qualitat';
-$messages['help_thumbnail_generator_force_use_gd1'] = 'Força LifeType a utilitzar només funcions de GD';
-$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Algoritme utilitzat per a suavitzar les vistes prèvies. Només s\'empra quan el mètode triat és GD';
-$messages['help_resources_quota'] = 'Capacitat global màxima en octets per als recursos dels blocs';
-$messages['help_resource_server_http_cache_enabled'] = 'Permet el suport per a capçaleres "If-Modified-Since" i crides de condicional HTTP. Activar-ho per estalviar més ample de banda';
-$messages['help_resource_server_http_cache_lifetime'] = 'Temps en microsegons que els clients han d\'utilitzar la versió de la memòria cau dels recursos';
+$messages['help_resources_folder'] = 'Carpeta on es desaran els recursos. Configura-ho fora de l\'arbre del servidor web per més seguretat';
+$messages['help_thumbnail_method'] = 'Mètode utilitzat per generar vistes prèvies. Si utilitza PHP, necessita suport GD';
+$messages['help_path_to_convert'] = 'Ruta fins a l\'eina de convertir del paquet "ImageMagick". Necessari si el mètode de vista prèvia és "ImageMagick"';
+$messages['help_thumbnail_format'] = 'Format amb el qual es desaran les vistes prèvies';
+$messages['help_thumbnail_height'] = 'Alçada per defecte de les vistes prèvies petites';
+$messages['help_thumbnail_width'] = 'Amplada per defecte de les vistes prèvies petites';
+$messages['help_medium_size_thumbnail_height'] = 'Alçada per defecte de les vistes prèvies mitjanes';
+$messages['help_medium_size_thumbnail_width'] = 'Amplada per defecte de les vistes prèvies mitjanes';
+$messages['help_thumbnails_keep_aspect_ratio'] = 'Manté les proporcions quan es generen les vistes prèvies. Generarà vistes prèvies més grans de les mides especificades però seran de més bona qualitat';
+$messages['help_thumbnail_generator_force_use_gd1'] = 'Força LifeType a utilitzar només funcions de GD';
+$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Algoritme utilitzat per a suavitzar les vistes prèvies. Només s\'empra quan el mètode triat és GD';
+$messages['help_resources_quota'] = 'Capacitat global màxima en octets per als recursos dels blocs';
+$messages['help_resource_server_http_cache_enabled'] = 'Permet el suport per a capçaleres "If-Modified-Since" i crides de condicional HTTP. Activar-ho per estalviar més ample de banda';
+$messages['help_resource_server_http_cache_lifetime'] = 'Temps en microsegons que els clients han d\'utilitzar la versió de la memòria cau dels recursos';
 $messages['same_as_image'] = 'El mateix que la imatge original';
 // search
 $messages['help_search_engine_enabled'] = 'Activa o desactiva el motor de cerca';
-$messages['help_search_in_custom_fields'] = 'Cerca també en els camps personalitzats';
-$messages['help_search_in_comments'] = 'Cerca també en els comentaris';
+$messages['help_search_in_custom_fields'] = 'Cerca també en els camps personalitzats';
+$messages['help_search_in_comments'] = 'Cerca també en els comentaris';
 
 // cleanup
 $messages['purge'] = 'Purga';
 $messages['cleanup_spam'] = 'Purga spam';
-$messages['cleanup_spam_help'] = 'Això esborrarà tots els comentaris marcats com a "Spams" pels usuaris. Un cop esborrats, no es podran recuperar';
+$messages['cleanup_spam_help'] = 'Això esborrarà tots els comentaris marcats com a "Spams" pels usuaris. Un cop esborrats, no es podran recuperar';
 $messages['spam_comments_purged_ok'] = 'Comentaris marcats com a spam purgats correctament';
 $messages['cleanup_posts'] = 'Purga articles';
-$messages['cleanup_posts_help'] = 'Això esborrarà tots els articles marcats com a "Esborrats" pels usuaris. Un cop esborrats, no es podran recuperar';
+$messages['cleanup_posts_help'] = 'Això esborrarà tots els articles marcats com a "Esborrats" pels usuaris. Un cop esborrats, no es podran recuperar';
 $messages['posts_purged_ok'] = 'Articles esborrats correctament';
 
 /// summary ///
@@ -685,9 +685,9 @@
 $messages['summary'] = 'Sumari';
 $messages['register'] = 'registre';
 $messages['summary_welcome'] = 'Benvinguts!';
-$messages['summary_most_active_blogs'] = 'Blocs més actius';
-$messages['summary_most_commented_articles'] = 'Articles més comentats';
-$messages['summary_most_read_articles'] = 'Articles més llegits';
+$messages['summary_most_active_blogs'] = 'Blocs més actius';
+$messages['summary_most_commented_articles'] = 'Articles més comentats';
+$messages['summary_most_read_articles'] = 'Articles més llegits';
 $messages['password_forgotten'] = 'Has perdut la contrasenya?';
 $messages['summary_newest_blogs'] = 'Blocs nous';
 $messages['summary_latest_posts'] = 'darrers articles';
@@ -703,132 +703,132 @@
 $messages['latest_posts'] = 'Darrers articles';
 
 // registration
-$messages['register_step0_title'] = 'Acceptació de termes i condicions d\'ús';
+$messages['register_step0_title'] = 'Acceptació de termes i condicions d\'ús';
 $messages['decline'] = 'Rebuig';
 $messages['accept'] = 'Accept';
-$messages['read_service_agreement'] = 'Lleggeix els termes i condicions d\'ús d\'aquest servei i prem el botó "Accept" si hi està d\'acord';
+$messages['read_service_agreement'] = 'Lleggeix els termes i condicions d\'ús d\'aquest servei i prem el botó "Accept" si hi està d\'acord';
 $messages['register_step1_title'] = 'Crea un usuari [1/4]';
-$messages['register_step1_help'] = 'Primerament necessites crear un usuari per generar un bloc. Aquest usuari serà el propietari del bloc i tindrà accés a totes les seves funcionalitats';
-$messages['register_next'] = 'Següent';
+$messages['register_step1_help'] = 'Primerament necessites crear un usuari per generar un bloc. Aquest usuari serà el propietari del bloc i tindrà accés a totes les seves funcionalitats';
+$messages['register_next'] = 'Següent';
 $messages['register_back'] = 'Anterior';
 $messages['register_step2_title'] = 'Crea un bloc [2/4]';
-$messages['register_step2_help'] = 'Ara has de crear el bloc, escriure el seu títol i seleccionar un domini, una categoria per al bloc i l\'idioma';
-$messages['register_blog_name_help'] = 'Títol del bloc';
+$messages['register_step2_help'] = 'Ara has de crear el bloc, escriure el seu títol i seleccionar un domini, una categoria per al bloc i l\'idioma';
+$messages['register_blog_name_help'] = 'Títol del bloc';
 $messages['register_step3_title'] = 'Tria una plantilla [3/4]';
 $messages['step1'] = 'Pas 1';
 $messages['step2'] = 'Pas 2';
 $messages['step3'] = 'Pas 3';
-$messages['register_step3_help'] = 'Tria una de les plantilles disponibles com a plantilla per defecte del bloc. Si més endavant no t\'agrada, podràs canviar-la en qualsevol moment';
-$messages['error_must_choose_template'] = 'És necessari que seleccionis una plantilla';
+$messages['register_step3_help'] = 'Tria una de les plantilles disponibles com a plantilla per defecte del bloc. Si més endavant no t\'agrada, podràs canviar-la en qualsevol moment';
+$messages['error_must_choose_template'] = 'És necessari que seleccionis una plantilla';
 $messages['select_template'] = 'Selecciona una plantilla';
 $messages['register_step5_title'] = 'Felicitats! [4/4]';
 $messages['finish'] = 'Finalitza';
-$messages['register_need_confirmation'] = 'Se t\'ha enviat un missatge de correu electrònic amb instruccions per completar l\'activació del teu bloc. Consulta la teva bústia de correu electrònic, segueix les instruccions del missatge i el bloc s\'activarà de forma immmediata';
+$messages['register_need_confirmation'] = 'Se t\'ha enviat un missatge de correu electrònic amb instruccions per completar l\'activació del teu bloc. Consulta la teva bústia de correu electrònic, segueix les instruccions del missatge i el bloc s\'activarà de forma immmediata';
 $messages['register_step5_help'] = 'Felicitats, el teu usuari i bloc s\'han creat correctament. Rep una cordial benvinguda!';
-$messages['register_blog_link'] = 'Pots seguir l\'enllaç <a href="%2$s">%1$s</a> i visitar <a href="%2$s">el teu bloc</a>';
-$messages['register_blog_admin_link'] = 'O pots accedir a la <a href="admin.php">interfície d\'administració</a> i començar a <a href="admin.php">publicar-hi continguts</a>';
-$messages['register_error'] = 'S\'ha produït un error durant el procés';
+$messages['register_blog_link'] = 'Pots seguir l\'enllaç <a href="%2$s">%1$s</a> i visitar <a href="%2$s">el teu bloc</a>';
+$messages['register_blog_admin_link'] = 'O pots accedir a la <a href="admin.php">interfície d\'administració</a> i començar a <a href="admin.php">publicar-hi continguts</a>';
+$messages['register_error'] = 'S\'ha produït un error durant el procés';
 $messages['error_registration_disabled'] = 'Disculpa, aquest servei no permet el registre de blocs nous';
 // registration article topic and text
 $messages['register_default_article_topic'] = 'Enhorabona!';
-$messages['register_default_article_text'] = 'Si pots llegir aquest missatge és perquè el procés de registre s\'ha realitzat correctament. Rep una cordial benvinguda!';
+$messages['register_default_article_text'] = 'Si pots llegir aquest missatge és perquè el procés de registre s\'ha realitzat correctament. Rep una cordial benvinguda!';
 $messages['register_default_category'] = 'General';
 // confirmation email
-$messages['register_confirmation_email_text'] = 'Per a activar el bloc que has creat, segueix l\'enllaç
+$messages['register_confirmation_email_text'] = 'Per a activar el bloc que has creat, segueix l\'enllaç
 
 %s
 
-o copia l\'adreça completa i enganxa-la a la barra d\'adreces del teu navegador.';
-$messages['error_invalid_activation_code'] = 'S\'ha roduït un error, el codi de confirmació no és vàlid';
+o copia l\'adreça completa i enganxa-la a la barra d\'adreces del teu navegador.';
+$messages['error_invalid_activation_code'] = 'S\'ha roduït un error, el codi de confirmació no és vàlid';
 $messages['blog_activated_ok'] = 'Felicitats, el teu usuari i bloc s\'han validat correctament. Rep una cordial benvinguda!';
 // forgot your password?
 $messages['reset_password'] = 'Canvia la contrasenya';
 $messages['reset_password_username_help'] = 'Nom de l\'usuari la contrasenya del qual vols canviar';
-$messages['reset_password_email_help'] = 'Adreça de correu electrònic amb què es va registrar aquest usuari';
-$messages['reset_password_help'] = 'Utilitza aquest formulari per a establir una nova contrasenya per al teu usuari. Introdueix el nom de l\'usuari la contrasenya del qual vols canviar, així com l\'adreça electrònica amb què es va registrar l\'usuari';
-$messages['error_resetting_password'] = 'S\'ha produït un error en canviar la contrasenya. Comprova les dades i prova-ho de nou';
-$messages['reset_password_error_incorrect_email_address'] = 'L\'adreça electrònica no és correcta o no és la que es va introduir quan es va registrar l\'usuari';
-$messages['password_reset_message_sent_ok'] = 'Se t\'ha enviat un missatge de correu electrònic amb un enllaç que pots seguir per canviar la contrasenya';
-$messages['error_incorrect_request'] = 'Els paràmetres a l\'adreça (URL) no són correctes';
+$messages['reset_password_email_help'] = 'Adreça de correu electrònic amb què es va registrar aquest usuari';
+$messages['reset_password_help'] = 'Utilitza aquest formulari per a establir una nova contrasenya per al teu usuari. Introdueix el nom de l\'usuari la contrasenya del qual vols canviar, així com l\'adreça electrònica amb què es va registrar l\'usuari';
+$messages['error_resetting_password'] = 'S\'ha produït un error en canviar la contrasenya. Comprova les dades i prova-ho de nou';
+$messages['reset_password_error_incorrect_email_address'] = 'L\'adreça electrònica no és correcta o no és la que es va introduir quan es va registrar l\'usuari';
+$messages['password_reset_message_sent_ok'] = 'Se t\'ha enviat un missatge de correu electrònic amb un enllaç que pots seguir per canviar la contrasenya';
+$messages['error_incorrect_request'] = 'Els paràmetres a l\'adreça (URL) no són correctes';
 $messages['change_password'] = 'Estableix una nova contrasenya';
 $messages['change_password_help'] = 'Escriu i verifica la nova contrasenya';
 $messages['new_password'] = 'Nova contrasenya';
-$messages['new_password_help'] = 'Escriu aquí la nova contrasenya';
+$messages['new_password_help'] = 'Escriu aquí la nova contrasenya';
 $messages['password_updated_ok'] = 'La teva contrasenya s\'ha actualitzat correctament';
 
 // Suggested by BCSE, some useful messages that not available in official locale
-$messages['upgrade_information'] = 'Llegeixes aquest missatge perquè no pots llegir els arxius CSS vinculats al bloc o perquè utilitzes un navegador que no compleix els estàndards.';
-$messages['jump_to_navigation'] = 'Saltar a la navegació.';
-$messages['comment_email_never_display'] = 'El format dels salts de línia, paràgrafs i enllaços es marquen de forma automàtica. L\'adreça de correu electrònic no es mostra mai.';
-$messages['comment_html_allowed'] = '<acronym title="Hypertext Markup Language">HTML</acronym> permès: &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="Cita">cita</acronym> cite=&quot;&quot;&gt; &lt;<acronym title="Strike">del</acronym>&gt; &lt;<acronym title="Italic">em</acronym>&gt; &lt;<acronym title="Subratllat">ins</acronym>&gt; &lt;<acronym title="Negreta">strong</acronym>&gt;';
-$messages['trackback_uri'] = 'L\'adreça (<acronym title="Uniform Resource Identifier">URI</acronym>) per a retroenllaçar aquest article és: ';
+$messages['upgrade_information'] = 'Llegeixes aquest missatge perquè no pots llegir els arxius CSS vinculats al bloc o perquè utilitzes un navegador que no compleix els estàndards.';
+$messages['jump_to_navigation'] = 'Saltar a la navegació.';
+$messages['comment_email_never_display'] = 'El format dels salts de línia, paràgrafs i enllaços es marquen de forma automàtica. L\'adreça de correu electrònic no es mostra mai.';
+$messages['comment_html_allowed'] = '<acronym title="Hypertext Markup Language">HTML</acronym> permès: &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="Cita">cita</acronym> cite=&quot;&quot;&gt; &lt;<acronym title="Strike">del</acronym>&gt; &lt;<acronym title="Italic">em</acronym>&gt; &lt;<acronym title="Subratllat">ins</acronym>&gt; &lt;<acronym title="Negreta">strong</acronym>&gt;';
+$messages['trackback_uri'] = 'L\'adreça (<acronym title="Uniform Resource Identifier">URI</acronym>) per a retroenllaçar aquest article és: ';
 $messages['previous_post'] = 'Anterior';
-$messages['next_post'] = 'Següent';
-$messages['comment_default_title'] = '(Sense títol)';
+$messages['next_post'] = 'Següent';
+$messages['comment_default_title'] = '(Sense títol)';
 $messages['guestbook'] = 'Llibre de visites';
-$messages['trackbacks'] = 'Retroenllaços';
-$messages['menu'] = 'Menú';
-$messages['albums'] = 'Àlbums';
+$messages['trackbacks'] = 'Retroenllaços';
+$messages['menu'] = 'Menú';
+$messages['albums'] = 'Àlbums';
 $messages['xmlrpc_ping_ok'] = 'Ping XMLRPC enviat correctament: ';
-$messages['error_sending_xmlrpc_ping'] = 'S\'ha produït un error en enviar el ping XMLRPC a: ';
-$messages['error_sending_xmlrpc_ping_message'] = 'S\'ha produït un error en enviar el ping XMLRPC: ';
+$messages['error_sending_xmlrpc_ping'] = 'S\'ha produït un error en enviar el ping XMLRPC a: ';
+$messages['error_sending_xmlrpc_ping_message'] = 'S\'ha produït un error en enviar el ping XMLRPC: ';
 
 // textos ous per a LT 1.1
 
-$messages['error_incorrect_trackback_id'] = 'L\'identificador del retroenllaç no és vàlid';
-$messages['error_marking_trackback_as_spam'] = 'S\'ha produït un error en marcar el retroenllaç com a spam';
-$messages['trackback_marked_as_spam_ok'] = 'Retroenllaç marcat com a spam correctament';
-$messages['error_marking_trackback_as_nonspam'] = 'S\'ha produït un error en marcar el retroenllaç com a no spam';
-$messages['trackback_marked_as_nonspam_ok'] = 'Retroenllaç marcat com a no spam correctament';
-$messages['upload_here'] = 'Pujar aquí';
+$messages['error_incorrect_trackback_id'] = 'L\'identificador del retroenllaç no és vàlid';
+$messages['error_marking_trackback_as_spam'] = 'S\'ha produït un error en marcar el retroenllaç com a spam';
+$messages['trackback_marked_as_spam_ok'] = 'Retroenllaç marcat com a spam correctament';
+$messages['error_marking_trackback_as_nonspam'] = 'S\'ha produït un error en marcar el retroenllaç com a no spam';
+$messages['trackback_marked_as_nonspam_ok'] = 'Retroenllaç marcat com a no spam correctament';
+$messages['upload_here'] = 'Pujar aquí';
 $messages['reply_string'] = 'Re: ';
 $messages['cleanup_users'] = 'Purga usuaris';
-$messages['cleanup_users_help'] = 'Això esborrarà tots els usuaris marcats com a "Esborrats" per un administrador, així com qualsevol bloc que pertanyi a l\'usuari i tot el seu contingut. Si l\'usuari té accés a algun altre bloc, tots els articles que hi hagi publicat també s\'esborraran. No serà possible recuperar-los un cop esborrats.';
+$messages['cleanup_users_help'] = 'Això esborrarà tots els usuaris marcats com a "Esborrats" per un administrador, així com qualsevol bloc que pertanyi a l\'usuari i tot el seu contingut. Si l\'usuari té accés a algun altre bloc, tots els articles que hi hagi publicat també s\'esborraran. No serà possible recuperar-los un cop esborrats.';
 $messages['users_purged_ok'] = 'Purga d\'usuaris executada correctament';
 $messages['cleanup_blogs'] = 'Purga blocs';
-$messages['cleanup_blogs_help'] = 'Això esborrarà tots els blocs marcats com a "Esborrats" per un administrador, així com tot el seu contingut. No serà possible recuperar-los un cop esborrats.';
+$messages['cleanup_blogs_help'] = 'Això esborrarà tots els blocs marcats com a "Esborrats" per un administrador, així com tot el seu contingut. No serà possible recuperar-los un cop esborrats.';
 $messages['blogs_purged_ok'] = 'Purga de blocs executada correctament';
-$messages['help_use_http_accept_language_detection'] = 'Activa la detecció del llenguatge preferit de l\'usuari basant-se en la informació que envia el navegador en cada petició';
+$messages['help_use_http_accept_language_detection'] = 'Activa la detecció del llenguatge preferit de l\'usuari basant-se en la informació que envia el navegador en cada petició';
 
 $messages['error_invalid_blog_category'] = 'Categoria de blocs incorrecta';
-$messages['error_adding_blog_category'] = 'S\'ha produït un error en afegir la categoria de blocs';
+$messages['error_adding_blog_category'] = 'S\'ha produït un error en afegir la categoria de blocs';
 $messages['newBlogCategory'] = 'Afegeix categoria de blocs';
 $messages['editBlogCategories'] = 'Categories de blocs';
 $messages['blog_category_added_ok'] = 'Categoria de blocs afegida correctament';
-$messages['error_blog_category_has_blogs'] = 'La categoria de blocs "%s conté blocs. Edita primer els blocs i esborra després la categoria.';
-$messages['error_deleting_blog_category'] = 'S\'ha produït un error en esborrar la categoria de blocs "%s"';
+$messages['error_blog_category_has_blogs'] = 'La categoria de blocs "%s conté blocs. Edita primer els blocs i esborra després la categoria.';
+$messages['error_deleting_blog_category'] = 'S\'ha produït un error en esborrar la categoria de blocs "%s"';
 $messages['blog_category_deleted_ok'] = 'Categoria de blocs "%s" esborrada correctament';
 $messages['blog_categories_deleted_ok'] = '%s categories de blocs esborrades correctament';
-$messages['error_deleting_blog_category2'] = 'S\'ha produït un error en esborrar la categoria de blocs que té l\'identificador %s';
+$messages['error_deleting_blog_category2'] = 'S\'ha produït un error en esborrar la categoria de blocs que té l\'identificador %s';
 $messages['blog_category'] = 'Categoria de blocs';
 $messages['blog_category_help'] = 'Categoria de blocs assignada a aquest bloc';
 
-$messages['help_use_captcha_auth'] = 'Requereix la inserció d\'un codi numèric mostrat en una imatge quan s\'inicia el procés de registre d\'un bloc per evitar el registre d\'usuaris mitjançant scripts';
-$messages['help_skip_dashboard'] = 'Desactiva la pàgina de "perspectiva" com a pàgina d\'inici de sessió, i en el seu lloc envia l\'usuari al seu primer bloc';
+$messages['help_use_captcha_auth'] = 'Requereix la inserció d\'un codi numèric mostrat en una imatge quan s\'inicia el procés de registre d\'un bloc per evitar el registre d\'usuaris mitjançant scripts';
+$messages['help_skip_dashboard'] = 'Desactiva la pàgina de "perspectiva" com a pàgina d\'inici de sessió, i en el seu lloc envia l\'usuari al seu primer bloc';
 
 $messages['manageGlobalArticleCategory'] = 'Categories globals';
 $messages['newGlobalArticleCategory'] = 'Afegeix categoria global';
 $messages['editGlobalArticleCategories'] = 'Categories globals';
 $messages['global_category_name_help'] = 'Nom de la nova categoria global';
-$messages['global_category_description_help'] = 'Descripció de la nova categoria global';
+$messages['global_category_description_help'] = 'Descripció de la nova categoria global';
 $messages['error_incorrect_global_category_id'] = 'Categoria global incorrecta';
 $messages['global_category_deleted_ok'] = 'Categoria global "%s" eliminada correctament';
 $messages['global_category_added_ok'] = 'Categoria global "%s" afegida correctament';
-$messages['error_deleting_global_category2'] = 'Hi ha hagut una errada esborrant la categoria global que té l\'identificador %s';
+$messages['error_deleting_global_category2'] = 'Hi ha hagut una errada esborrant la categoria global que té l\'identificador %s';
 
-$messages['help_page_suffix_format'] = 'Sufix que s\'afegirà a les adreces (URL) de les seccions que permetran paginació [ Valor per defecte = /page/{page} ]';
+$messages['help_page_suffix_format'] = 'Sufix que s\'afegirà a les adreces (URL) de les seccions que permetran paginació [ Valor per defecte = /page/{page} ]';
 
-$messages['help_final_size_thumbnail_width'] = 'Amplada final en píxels de les imatges pujades pels usuaris. Deixar aquest valor com a 0 per emprar la mida real de la imatge [ Valor per defecte = 0 ]';
-$messages['help_final_size_thumbnail_height'] = 'Alçada final en píxels de les imatges pujades pels usuaris. Deixar aquest valor com a 0 per emprar la mida real de la imatge [ Valor per defecte = 0 ]';
-$messages['error_comment_too_big'] = 'El comentari és massa llarg';
-$messages['error_you_have_been_blocked'] = 'Procés interromput: la petició no s\'ha processat.';
+$messages['help_final_size_thumbnail_width'] = 'Amplada final en píxels de les imatges pujades pels usuaris. Deixar aquest valor com a 0 per emprar la mida real de la imatge [ Valor per defecte = 0 ]';
+$messages['help_final_size_thumbnail_height'] = 'Alçada final en píxels de les imatges pujades pels usuaris. Deixar aquest valor com a 0 per emprar la mida real de la imatge [ Valor per defecte = 0 ]';
+$messages['error_comment_too_big'] = 'El comentari és massa llarg';
+$messages['error_you_have_been_blocked'] = 'Procés interromput: la petició no s\'ha processat.';
 $messages['created'] = 'Creat';
 $messages['view'] = 'Visualitza';
 $messages['editUser'] = 'Edita usuari';
-$messages['help_urlize_word_separator'] = 'Caràcter que s\'emprarà com a separador de paraules en lloc de l\'espai en blanc en les adreces generades per LifeType. Aquest paràmetre també afecta els noms de host que es generaran si l\'opció de subdominis està activada [ Valor per defecte = - ]';
-$messages['help_summary_template_cache_lifetime'] = 'Durada en segons de les pàgines pregenerades i desades en la memòria cau de la portada. Si s\'usa un valor major que 0, la versió disponible de cada pàgina en la memòria cau s\'usarà tants segons en lloc de regenerar-la cada vegada que es produeixi un canvi en les dades. Activa aquesta opció per millorar el rendiment de la pàgina de portada. [ Valor per defecte = 0 ]';
+$messages['help_urlize_word_separator'] = 'Caràcter que s\'emprarà com a separador de paraules en lloc de l\'espai en blanc en les adreces generades per LifeType. Aquest paràmetre també afecta els noms de host que es generaran si l\'opció de subdominis està activada [ Valor per defecte = - ]';
+$messages['help_summary_template_cache_lifetime'] = 'Durada en segons de les pàgines pregenerades i desades en la memòria cau de la portada. Si s\'usa un valor major que 0, la versió disponible de cada pàgina en la memòria cau s\'usarà tants segons en lloc de regenerar-la cada vegada que es produeixi un canvi en les dades. Activa aquesta opció per millorar el rendiment de la pàgina de portada. [ Valor per defecte = 0 ]';
 $messages['register_default_album_name'] = 'General';
-$messages['register_default_album_description'] = 'Puja aquí les imatges i fitxers';
+$messages['register_default_album_description'] = 'Puja aquí les imatges i fitxers';
 $messages['show_in_summary'] = 'Mostra en la portada del servei de blocs';
 $messages['show_in_summary_help'] = 'Mostra aquest bloc en la portada del servei de blocs';
 
@@ -836,17 +836,17 @@
 $messages['show_option_panel'] = 'Mostra opcions';
 $messages['hide_option_panel'] = 'Oculta opcions';
 
-$messages['quick_launches'] = 'Accés ràpid';
+$messages['quick_launches'] = 'Accés ràpid';
 
-$messages['confirmation_message_resent_ok'] = 'El missatge de confirmació s\'ha reenviat correctament.';
+$messages['confirmation_message_resent_ok'] = 'El missatge de confirmació s\'ha reenviat correctament.';
 
-$messages['goto_blog_page'] = 'Vés a %s';
+$messages['goto_blog_page'] = 'Vés a %s';
 
-$messages['help_num_blogs_per_user'] = 'Nombre màxim de blocs que cada usuari pot crear mitjançant l\'enllaç disponible a la pàgina de perspectiva. Si el valor és 0, l\'enllaç no es mostrarà [ Valor per defecte = 0 ]';
+$messages['help_num_blogs_per_user'] = 'Nombre màxim de blocs que cada usuari pot crear mitjançant l\'enllaç disponible a la pàgina de perspectiva. Si el valor és 0, l\'enllaç no es mostrarà [ Valor per defecte = 0 ]';
 
-$messages['massive_change_option'] = 'Edició múltiple';
-$messages['show_massive_change_option'] = 'Mostra edició múltiple';
-$messages['hide_massive_change_option'] = 'Oculta edició múltiple';
+$messages['massive_change_option'] = 'Edició múltiple';
+$messages['show_massive_change_option'] = 'Mostra edició múltiple';
+$messages['hide_massive_change_option'] = 'Oculta edició múltiple';
 $messages['change_status'] = 'Modifica estat';
 $messages['change_category'] = 'Modifica categoria';
 
@@ -854,65 +854,65 @@
 $messages['error_comment_status'] = 'Selecciona un estat';
 $messages['admin_mode'] = 'Mode administrador';
 $messages['administrate_user_blog'] = 'Administra aquest bloc';
-$messages['trackbacks_updated_ok'] = '%s retroenllaços actualitzats correctament';
-$messages['trackback_updated_ok'] = 'Retroenllaç modificat correctament';
-$messages['error_trackback_status'] = 'Selecciona un estat vàlid';
+$messages['trackbacks_updated_ok'] = '%s retroenllaços actualitzats correctament';
+$messages['trackback_updated_ok'] = 'Retroenllaç modificat correctament';
+$messages['error_trackback_status'] = 'Selecciona un estat vàlid';
 $messages['select'] = 'Selecciona';
-$messages['remove_selected'] = 'Esborra la selecció';
+$messages['remove_selected'] = 'Esborra la selecció';
 
 $messages['notification_subject'] = 'Missatge des de LifeType';
-$messages['error_no_trackback_links_sent'] = 'No s\'ha enviat cap retroenllaç';
+$messages['error_no_trackback_links_sent'] = 'No s\'ha enviat cap retroenllaç';
 
-$messages['help_http_cache_lifetime'] = 'Temps de vida en segons de la memòria cau del navegador. S\'informarà el navegador dels usuaris sobre quant de temps ha d\'usar la versió actual de la pàgina en comptes d\'obligar el servidor a enviar la mateixa versió cada vegada. Aquest paràmetre ajuda a estalviar amplada de banda i alleujar la càrrega del servidor, tot i que els usuaris poden rebre versions desfasades de les pàgines en cas que aquest valor sigui massa alt. [ Valor per defecte = 1800 ]';
+$messages['help_http_cache_lifetime'] = 'Temps de vida en segons de la memòria cau del navegador. S\'informarà el navegador dels usuaris sobre quant de temps ha d\'usar la versió actual de la pàgina en comptes d\'obligar el servidor a enviar la mateixa versió cada vegada. Aquest paràmetre ajuda a estalviar amplada de banda i alleujar la càrrega del servidor, tot i que els usuaris poden rebre versions desfasades de les pàgines en cas que aquest valor sigui massa alt. [ Valor per defecte = 1800 ]';
 
-$messages['trackbacks_no_trackback'] = 'No s\'ha pogut enviar un retroenllaç a la següent adreça: ';
+$messages['trackbacks_no_trackback'] = 'No s\'ha pogut enviar un retroenllaç a la següent adreça: ';
 
 $messages['error_comment_spam_throw_away'] = 'El filtre anti-spam ha rebutjat el teu comentari.';
-$messages['error_comment_spam_keep'] = 'El filtre anti-spam ha marcat el teu comentari com a dubtós i haurà de ser revisat per l\'autor d\'aquest bloc.';
+$messages['error_comment_spam_keep'] = 'El filtre anti-spam ha marcat el teu comentari com a dubtós i haurà de ser revisat per l\'autor d\'aquest bloc.';
 
 $messages['blog_categories'] = 'Categories de blocs';
 $messages['global_article_categories'] = 'Categories globals';
 
-$messages['help_force_posturl_unique'] = 'Força que tots els enllaços a articles siguin únics. Aquest paràmetre només és necessari si el format de les adreces ha canviat i no s\'inclou la data en el seu format';
+$messages['help_force_posturl_unique'] = 'Força que tots els enllaços a articles siguin únics. Aquest paràmetre només és necessari si el format de les adreces ha canviat i no s\'inclou la data en el seu format';
 
-$messages['default_send_notification'] = 'Envia notificació';
+$messages['default_send_notification'] = 'Envia notificació';
 
-$messages['enable_pull_down_menu'] = 'Menú desplegable';
-$messages['enable_pull_down_menu_help'] = 'Activa o desactiva el menú desplegable';
+$messages['enable_pull_down_menu'] = 'Menú desplegable';
+$messages['enable_pull_down_menu_help'] = 'Activa o desactiva el menú desplegable';
 
-$messages['change_album'] = 'Canvia àlbum';
+$messages['change_album'] = 'Canvia àlbum';
 
-$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Sembla que la teva sessió ha finalitzat sense haver desat l\'article. Si és així, segueix aquest <a href="#" onclick="restoreAutoSave();">enllaç per recuperar-lo</a> o, si ho prefereixes, segueix aquest altre <a href="#" onclick="eraseAutoSave();">enllaç per esborrar-lo</a>.</p>';
+$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Sembla que la teva sessió ha finalitzat sense haver desat l\'article. Si és així, segueix aquest <a href="#" onclick="restoreAutoSave();">enllaç per recuperar-lo</a> o, si ho prefereixes, segueix aquest altre <a href="#" onclick="eraseAutoSave();">enllaç per esborrar-lo</a>.</p>';
 
 $messages['check_username'] = 'Prova el nom d\'usuari';
 $messages['check_username_ok'] = 'El nom d\'usuari est&agrave; disponible!';
 $messages['error_username_exist'] = 'El nom d\'usuari ja s\'utilitza, prova-ho amb un altre.';
 
-$messages['error_rule_email_dns_server_temp_fail'] = 'Problema temporal - prova-ho més tard.';
+$messages['error_rule_email_dns_server_temp_fail'] = 'Problema temporal - prova-ho més tard.';
 $messages['error_rule_email_dns_server_unreachable'] = 'No s\'ha pogut connectar amb el servidor de correu.';
-$messages['error_rule_email_dns_not_permitted'] = 'L\'adreça de correu no és vàlida.';
+$messages['error_rule_email_dns_not_permitted'] = 'L\'adreça de correu no és vàlida.';
 
 $messages['blog_users_help'] = 'Usuaris que poden accedir a aquest bloc.';
 
-$messages['summary_welcome_paragraph'] = 'Inclou aquí el missatge que apareixerà a la configuració per defecte de la portada del servei de blocs. Pots canviar aquest missatge editant l\'arxiu locales/locale_ca_ES.php, o bé suprimir-lo completament editant els arxius .template disponibles al directori templates/summary/';
+$messages['summary_welcome_paragraph'] = 'Inclou aquí el missatge que apareixerà a la configuració per defecte de la portada del servei de blocs. Pots canviar aquest missatge editant l\'arxiu locales/locale_ca_ES.php, o bé suprimir-lo completament editant els arxius .template disponibles al directori templates/summary/';
 
 $messages['first_day_of_week'] = 1;
 $messages['first_day_of_week_label'] = 'Primer dia de la setmana';
 $messages['first_day_of_week_help'] = 'Primer dia de la setmana al calendari';
 
-$messages['help_subdomains_base_url'] = 'Si l\'opció per a subdominis està activada, s\'usa aquesta adreça (URL) com a base per a construir la resta d\'adreces (URL) en lloc de l\'adreça de base d\'aquest servei de blocs. Escriu {blogname} per generar l\'adreça de base a partir del nom del bloc, {username} per generar l\'adreça de base a partir del nom de l\'usuari a qui pertany el bloc o {blogdomain} per permetre els usuaris d\'introduir el seu propi domini. (per exemple http://{blogname}.dominidelservei.com o http://{blogdomain}) [ Valor per defecte = res ]';
+$messages['help_subdomains_base_url'] = 'Si l\'opció per a subdominis està activada, s\'usa aquesta adreça (URL) com a base per a construir la resta d\'adreces (URL) en lloc de l\'adreça de base d\'aquest servei de blocs. Escriu {blogname} per generar l\'adreça de base a partir del nom del bloc, {username} per generar l\'adreça de base a partir del nom de l\'usuari a qui pertany el bloc o {blogdomain} per permetre els usuaris d\'introduir el seu propi domini. (per exemple http://{blogname}.dominidelservei.com o http://{blogdomain}) [ Valor per defecte = res ]';
 
-$messages['registration_default_subject'] = 'Confirmació de registre al servei de blocs';
+$messages['registration_default_subject'] = 'Confirmació de registre al servei de blocs';
 
-$messages['error_invalid_subdomain'] = 'El subdomini no és vàlid o ja s\'utilitza';
+$messages['error_invalid_subdomain'] = 'El subdomini no és vàlid o ja s\'utilitza';
 
 $messages['register_blog_domain_help'] = 'Nom i subdomini per al bloc';
 $messages['domain'] = 'Domini';
-$messages['help_subdomains_available_domains'] = 'Introdueix una llista amb els noms de domini disponibles, separada per espais en blanc. Els usuaris podran triar qualsevol d\'aquest dominis mitjançant una llista desplegable, i podran introduir qualsevol subdomini que desitgin. Aquesta llista només es mostra quan l\'opció per a subdominis és activa i s\'ha inclòs {blogdomain} com a part del paràmetre URL de base. També es pot emprar \'?\' per permetre els usuaris d\'introduir qualsevol domini i subdomini [ Valor per defecte = res ]';
+$messages['help_subdomains_available_domains'] = 'Introdueix una llista amb els noms de domini disponibles, separada per espais en blanc. Els usuaris podran triar qualsevol d\'aquest dominis mitjançant una llista desplegable, i podran introduir qualsevol subdomini que desitgin. Aquesta llista només es mostra quan l\'opció per a subdominis és activa i s\'ha inclòs {blogdomain} com a part del paràmetre URL de base. També es pot emprar \'?\' per permetre els usuaris d\'introduir qualsevol domini i subdomini [ Valor per defecte = res ]';
 
 $messages['subdomains_any_domain'] = '<- Introdueix el nom de domini complet, p.e. www.elmeupropidomini.com';
-$messages['error_updating_blog_subdomain'] = 'S\'ha produït un error en actualitza rel subdomini, comprova les dades i prova-ho de nou.';
-$messages['error_updating_blog_main_domain'] = 'S\'ha produït un error en actualitzar el domini principal. Possiblement l\'administrador hagi configurat quelcom incorrectament';
+$messages['error_updating_blog_subdomain'] = 'S\'ha produït un error en actualitza rel subdomini, comprova les dades i prova-ho de nou.';
+$messages['error_updating_blog_main_domain'] = 'S\'ha produït un error en actualitzar el domini principal. Possiblement l\'administrador hagi configurat quelcom incorrectament';
 
 $messages['monthsshort'] = Array( 'Gen', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Des' );
 $messages['weekdaysshort'] = Array( 'Dl', 'Dm', 'Dc', 'Dj', 'Dv', 'Ds', 'Dg' );
@@ -920,9 +920,9 @@
 $messages['search_type'] = 'Cercar a';
 $messages['posts'] = 'Articles';
 $messages['blogs'] = 'Blocs';
-$messages['resources'] = 'Àlbums';
+$messages['resources'] = 'Àlbums';
 $messages['upload_in_progress'] = 'Enviant dades. Esperi si us plau...';
-$messages['error_incorrect_username'] = 'El nom d\'usuari no és correcte, o ja s\'utilitza o és massa llarg (màxim 15 caràcters)';
+$messages['error_incorrect_username'] = 'El nom d\'usuari no és correcte, o ja s\'utilitza o és massa llarg (màxim 15 caràcters)';
 
 $messages['auth_img'] = 'Codi de seguretat';
 $messages['auth_img_help'] = 'Introdueixi el codi que apareix a la imatge, si us plau.';
@@ -930,76 +930,76 @@
 $messages['global_category'] = 'Categoria global';
 $messages['global_article_category_help'] = 'Categoria global d\'aquesta comunitat per a aquest article';
 
-$messages['error_no_albums_defined'] = 'No hi ha àlbums disponibles en aquest bloc.';
+$messages['error_no_albums_defined'] = 'No hi ha àlbums disponibles en aquest bloc.';
 
 $messages['password_reset_subject'] = 'Canvi de password a LifeType';
 
 //
 // new strings for LifeType 1.2
 //
-$messages['auth'] = 'Autentificació';
+$messages['auth'] = 'Autentificació';
 $messages['authenticated'] = 'Autentificat';
 $messages['dropdown_list_field'] = 'Llista desplegable';
 $messages['values'] = 'Valors';
-$messages['field_values'] = 'Valors que figuraran com a opcions d\'aquest nou camp. El primer valor s\'utilitzarà com a opció predeterminada a la llista.';
+$messages['field_values'] = 'Valors que figuraran com a opcions d\'aquest nou camp. El primer valor s\'utilitzarà com a opció predeterminada a la llista.';
 
 $messages['permission_added_ok'] = 'Els permisos s\'han afegit correctament';
-$messages['core_perm'] = 'Permís base';
-$messages['admin_only'] = 'Permís d\'administrador';
+$messages['core_perm'] = 'Permís base';
+$messages['admin_only'] = 'Permís d\'administrador';
 $messages['permissionsList'] = 'Permisos';
-$messages['newPermission'] = 'Afegir permís';
-$messages['permission_name_help'] = 'Nom identificador del permís';
-$messages['permission_description_help'] = 'Descripció del permís';
-$messages['core_perm_help'] = 'Si es marca aquest permís com a permís base, no es podrà eliminar';
-$messages['admin_only_help'] = 'Activar si aquest permís tan sols pot ésser atorgat per usuaris amb permisos d\'administració';
-$messages['error_adding_new_permission'] = 'S\'ha produït un error en afegir el nou permís, revisa les dades';
-$messages['error_incorrect_permission_id'] = 'L\'identificador del permís no és correcte';
-$messages['error_permission_cannot_be_deleted'] = 'El permís "%s" no es pot eliminar perquè s\'ha concedit almenys a un usuari o perquè és un permís base.';
-$messages['error_deleting_permission'] = 'S\'ha produït un error en eliminar el permís "%s"';
-$messages['permission_deleted_ok'] = 'El permís "%s" s\'ha eliminat correctament';
+$messages['newPermission'] = 'Afegir permís';
+$messages['permission_name_help'] = 'Nom identificador del permís';
+$messages['permission_description_help'] = 'Descripció del permís';
+$messages['core_perm_help'] = 'Si es marca aquest permís com a permís base, no es podrà eliminar';
+$messages['admin_only_help'] = 'Activar si aquest permís tan sols pot ésser atorgat per usuaris amb permisos d\'administració';
+$messages['error_adding_new_permission'] = 'S\'ha produït un error en afegir el nou permís, revisa les dades';
+$messages['error_incorrect_permission_id'] = 'L\'identificador del permís no és correcte';
+$messages['error_permission_cannot_be_deleted'] = 'El permís "%s" no es pot eliminar perquè s\'ha concedit almenys a un usuari o perquè és un permís base.';
+$messages['error_deleting_permission'] = 'S\'ha produït un error en eliminar el permís "%s"';
+$messages['permission_deleted_ok'] = 'El permís "%s" s\'ha eliminat correctament';
 $messages['permissions_deleted_ok'] = '%s permisos eliminats correctament';
-$messages['error_deleting_permission2'] = 'S\'ha produït un error en eliminar el permís amb identificador "%s"';
+$messages['error_deleting_permission2'] = 'S\'ha produït un error en eliminar el permís amb identificador "%s"';
 
-$messages['help_hard_show_posts_max'] = 'Límit superior per al paràmetre show_posts_max que controla el nombre d\'articles que es mostren per pàgina als blocs. Si l\'usuari configura un valor superior, s\'utilitzarà el valor definit aquí. [ Valor predeterminat = 50 ]';
-$messages['help_hard_recent_posts_max'] = 'Límit superior per al paràmetre recent_posts_max que controla el nombre d\'articles que es mostren a la llista d\'articles recents. Si l\'usuari configura un valor superior, s\'utilitzarà el valor definit aquí. [ Valor predeterminat = 25 ]';
+$messages['help_hard_show_posts_max'] = 'Límit superior per al paràmetre show_posts_max que controla el nombre d\'articles que es mostren per pàgina als blocs. Si l\'usuari configura un valor superior, s\'utilitzarà el valor definit aquí. [ Valor predeterminat = 50 ]';
+$messages['help_hard_recent_posts_max'] = 'Límit superior per al paràmetre recent_posts_max que controla el nombre d\'articles que es mostren a la llista d\'articles recents. Si l\'usuari configura un valor superior, s\'utilitzarà el valor definit aquí. [ Valor predeterminat = 25 ]';
 
-$messages['error_permission_required'] = 'No disposa de suficients permisos per executar aquesta acció';
+$messages['error_permission_required'] = 'No disposa de suficients permisos per executar aquesta acció';
 $messages['user_permissions_updated_ok'] = 'Els permisos d\'usuari s\'han actualitzat correctament';
 
 // blog permissions
-$messages['add_album_desc'] = 'Afegir àlbums';
+$messages['add_album_desc'] = 'Afegir àlbums';
 $messages['add_blog_template_desc'] = 'Afegir plantilles al bloc';
 $messages['add_blog_user_desc'] = 'Afegir usuaris al bloc';
 $messages['add_category_desc'] = 'Afegir categories';
 $messages['add_custom_field_desc'] = 'Afegir camps personalitzats';
-$messages['add_link_desc'] = 'Afegir enllaços';
-$messages['add_link_category_desc'] = 'Afegir categories d\'enllaç';
+$messages['add_link_desc'] = 'Afegir enllaços';
+$messages['add_link_category_desc'] = 'Afegir categories d\'enllaç';
 $messages['add_post_desc'] = 'Afegir articles';
 $messages['add_resource_desc'] = 'Afegir recursos';
-$messages['blog_access_desc'] = 'Permetre l\'accés al bloc';
-$messages['update_album_desc'] = 'Actualitzar els àlbums existents';
-$messages['update_blog_desc'] = 'Actualitzar la configuració del bloc';
+$messages['blog_access_desc'] = 'Permetre l\'accés al bloc';
+$messages['update_album_desc'] = 'Actualitzar els àlbums existents';
+$messages['update_blog_desc'] = 'Actualitzar la configuració del bloc';
 $messages['update_blog_template_desc'] = 'Actualitzar les plantilles del bloc';
 $messages['update_blog_user_desc'] = 'Actualitzar els permisos dels usuaris del bloc';
 $messages['update_category_desc'] = 'Actualitzar les categories existents';
 $messages['update_comment_desc'] = 'Actualitzar els comentaris existents';
 $messages['update_custom_field_desc'] = 'Actualitzar els camps personalitzats existents';
-$messages['update_link_desc'] = 'Actualitzar els enllaços existents';
-$messages['update_link_category_desc'] = 'Actualitzar les categories d\'enllaç existents';
+$messages['update_link_desc'] = 'Actualitzar els enllaços existents';
+$messages['update_link_category_desc'] = 'Actualitzar les categories d\'enllaç existents';
 $messages['update_post_desc'] = 'Actualitzar els articles existents';
 $messages['update_resource_desc'] = 'Actualitzar els recursos existents';
-$messages['update_trackback_desc'] = 'Actualitzar els retroenllaços existents';
+$messages['update_trackback_desc'] = 'Actualitzar els retroenllaços existents';
 $messages['view_blog_templates_desc'] = 'Llegir les dades de les plantilles del bloc';
 $messages['view_blog_users_desc'] = 'Visualitzar o llegir les dades dels usuaris del bloc';
 $messages['view_categories_desc'] = 'Visualitzar o llegir les categories del bloc';
 $messages['view_comments_desc'] = 'Visualitzar o llegir els comentaris del bloc';
 $messages['view_custom_fields_desc'] = 'Visualitzar o llegir els camps personalitzats del bloc';
-$messages['view_links_desc'] = 'Visualitzar o llegir els enllaços del bloc';
-$messages['view_link_categories_desc'] = 'Visualitzar o llegir les categories d\'enllaç';
+$messages['view_links_desc'] = 'Visualitzar o llegir els enllaços del bloc';
+$messages['view_link_categories_desc'] = 'Visualitzar o llegir les categories d\'enllaç';
 $messages['view_posts_desc'] = 'Visualitzar o llegir els articles';
 $messages['view_resources_desc'] = 'Visualitzar o llegir els recursos del bloc';
-$messages['view_trackbacks_desc'] = 'Visualitzar o llegir els retroenllaços';
-$messages['login_perm_desc'] = 'L\'ussuari pot accedir a la interfície d\'administració';
+$messages['view_trackbacks_desc'] = 'Visualitzar o llegir els retroenllaços';
+$messages['login_perm_desc'] = 'L\'ussuari pot accedir a la interfície d\'administració';
 // admin permissions
 $messages['add_blog_category_desc'] = 'L\'usuari pot afegir categories de bloc';
 $messages['add_global_article_category_desc'] = 'L\'usuari pot afegir categories globals d\'article';
@@ -1012,119 +1012,119 @@
 $messages['purge_data_desc'] = 'L\'usuari por purgar dades';
 $messages['update_blog_category_desc'] = 'L\usuari pot actualitzar i esborrar categories de bloc';
 $messages['update_global_article_category_desc'] = 'L\'usuari pot actualitzar i esborrar categories globals d\'article';
-$messages['update_global_settings_desc'] = 'L\'usuari pot actualitzar la configuració del servei de blocs';
+$messages['update_global_settings_desc'] = 'L\'usuari pot actualitzar la configuració del servei de blocs';
 $messages['update_locale_desc'] = 'L\usuari pot actualitzar i esborrar plantilles del servei de blocs';
 $messages['update_permission_desc'] = 'L\'usuari pot actualitzar i esborrar permisos';
-$messages['update_plugin_settings_desc'] = 'L\'usari pot actualitzar la configuració dels complements';
+$messages['update_plugin_settings_desc'] = 'L\'usari pot actualitzar la configuració dels complements';
 $messages['update_site_blog_desc'] = 'L\'usuari pot actualitzar i esborrar blocs';
 $messages['update_template_desc'] = 'L\'usuari pot actualitzar i esborrar plantilles';
 $messages['update_user_desc'] = 'L\'usuari pot actualitzar i esborrar usuaris';
 $messages['view_blog_categories'] = 'L\'usuari pot visualitzar o llegir les categories de bloc';
 $messages['view_global_article_categories_desc'] = 'L\'usuari pot visualitzar o llegir les categories globals d\'article';
-$messages['view_global_settings_desc'] = 'L\'usuari pot visualitzar o llegir la configuració del servei de blocs';
+$messages['view_global_settings_desc'] = 'L\'usuari pot visualitzar o llegir la configuració del servei de blocs';
 $messages['view_locales_desc'] = 'L\'usuari pot visualitzar o llegir les traduccions';
 $messages['view_permissions_desc'] = 'L\'usuari pot visualitzar o llegir els permisos';
-$messages['view_plugins_desc'] = 'L\'usuari pot visualitzar o llegir els complements instal·lats';
+$messages['view_plugins_desc'] = 'L\'usuari pot visualitzar o llegir els complements instal·lats';
 $messages['view_site_blogs_desc'] = 'L\'usuari pot visualitzar o llegir els blocs existents';
 $messages['view_templates_desc'] = 'L\'usuari pot visualitzar o llegir les plantilles';
 $messages['view_users_desc'] = 'L\'usuari pot visualitzar o llegir els usuaris';
-$messages['update_blog_stats_desc'] = 'L\'usuari pot eliminar les referències';
+$messages['update_blog_stats_desc'] = 'L\'usuari pot eliminar les referències';
 $messages['manage_admin_plugins_desc'] = 'Administrar els complements a nivell d\'administrador';
 
 $messages['summary_welcome_msg'] = 'Benvingut, %s!';
-$messages['summary_go_to_admin'] = 'Accedeix a la interfície d\'administració';
+$messages['summary_go_to_admin'] = 'Accedeix a la interfície d\'administració';
 
-$messages['error_can_only_update_own_articles'] = 'Els permisos que tens assignats només et permeten modificar el teus propis articles.';
-$messages['update_all_user_articles_desc'] = 'Permet la modificació dels articles d\'altres usuaris';
-$messages['error_can_only_view_own_articles'] = 'Els permisos que tens assignats només et permeten visualitzar els teus propis articles.';
-$messages['view_all_user_articles_desc'] = 'Permet la visualització o lectura dels articles d\'altres usuaris';
-$messages['error_fetching_permission'] = 'S\'ha produït un error en carregar el permís';
-$messages['editPermission'] = 'Editar permís';
-$messages['error_updating_permission'] = 'S\'ha produït un error en actualitzar el permís';
-$messages['permission_updated_ok'] = 'Permís actualitzat correctament';
-$messages['error_adding_permission'] = 'S\'ha produït un error en afegir el permís';
-$messages['error_cannot_login'] = 'Ho sentim, no tens permís per accedir a la interfície d\'administració';
+$messages['error_can_only_update_own_articles'] = 'Els permisos que tens assignats només et permeten modificar el teus propis articles.';
+$messages['update_all_user_articles_desc'] = 'Permet la modificació dels articles d\'altres usuaris';
+$messages['error_can_only_view_own_articles'] = 'Els permisos que tens assignats només et permeten visualitzar els teus propis articles.';
+$messages['view_all_user_articles_desc'] = 'Permet la visualització o lectura dels articles d\'altres usuaris';
+$messages['error_fetching_permission'] = 'S\'ha produït un error en carregar el permís';
+$messages['editPermission'] = 'Editar permís';
+$messages['error_updating_permission'] = 'S\'ha produït un error en actualitzar el permís';
+$messages['permission_updated_ok'] = 'Permís actualitzat correctament';
+$messages['error_adding_permission'] = 'S\'ha produït un error en afegir el permís';
+$messages['error_cannot_login'] = 'Ho sentim, no tens permís per accedir a la interfície d\'administració';
 $messages['admin_user_permissions_help'] = 'Permisos globals assignats a aquest usuari';
 
 $messages['permissions'] = 'Permisos';
 $messages['blog_user_permissions_help'] = 'Permisos assignats a aquest usuari dins aquest bloc';
-$messages['pluginSettings'] = 'Configuració de complements';
+$messages['pluginSettings'] = 'Configuració de complements';
 $messages['user_can_override'] = 'Els usuaris ho poden sobreescriure';
 $messages['user_cannot_override'] = 'Els usuaris no ho poden sobreescriure';
-$messages['global_plugin_settings_saved_ok'] = 'La configuració global del complement s\'ha actualitzat correctament';
-$messages['error_updating_global_plugin_settings'] = 'S\'ha produït un error en desar la configuració global del complement';
-$messages['error_incorrect_value'] = 'El valor nos és correcte';
-$messages['parameter'] = 'Paràmetre';
+$messages['global_plugin_settings_saved_ok'] = 'La configuració global del complement s\'ha actualitzat correctament';
+$messages['error_updating_global_plugin_settings'] = 'S\'ha produït un error en desar la configuració global del complement';
+$messages['error_incorrect_value'] = 'El valor nos és correcte';
+$messages['parameter'] = 'Paràmetre';
 $messages['value'] = 'Valor';
 $messages['override'] = 'Sobreescriure';
 $messages['editCustomField'] = 'Editar camp personalitzat';
-$messages['view_blog_stats_desc'] = 'Consulta les estadístiques del bloc';
-$messages['manage_plugins_desc'] = 'Administra la configuració dels complements';
+$messages['view_blog_stats_desc'] = 'Consulta les estadístiques del bloc';
+$messages['manage_plugins_desc'] = 'Administra la configuració dels complements';
 
-$messages['error_global_category_has_articles'] = 'No es pot eliminar la categoria global d\'article perquè encara conté articles';
-$messages['error_adding_global_article_category'] = 'S\'ha produït un error en afegir la categoria global d\'article';
+$messages['error_global_category_has_articles'] = 'No es pot eliminar la categoria global d\'article perquè encara conté articles';
+$messages['error_adding_global_article_category'] = 'S\'ha produït un error en afegir la categoria global d\'article';
 
 $messages['temp_folder_reset_ok'] = 'El directori temporal s\'ha buidat correctament';
-$messages['cleanup_temp_help'] = 'Això buidarà el director temporal, fent que la memòria cau de dades i plantilles se reinicialitzi.';
+$messages['cleanup_temp_help'] = 'Això buidarà el director temporal, fent que la memòria cau de dades i plantilles se reinicialitzi.';
 $messages['cleanup_temp'] = 'Buidar el directori temporal';
 
-$messages['comment_only_auth_users'] = 'Només poden fer comentaris els usuaris registrats';
-$messages['comment_only_auth_users_help'] = 'Només es permet escriure comentaris a aquells usuaris que s\'hagin autentificat mitjançant un nom d\'usuari i contrasenya vàlids';
-$messages['show_comments_max'] = 'Comentaris per pàgina';
-$messages['show_comments_max_help'] = 'Màxim de comentaris que es mostraran per pàgina [ Valor predeterminat = 20 ]';
-$messages['hard_show_comments_max_help'] = 'Límit superior per al paràmetre comments_max que controla el nombre màxim de comentaris que es mostren per pàgina. Si l\'usuari configura un valor superior, s\'utilitzarà el valor definit aquí. [ Valor predeterminat = 50 ]';
+$messages['comment_only_auth_users'] = 'Només poden fer comentaris els usuaris registrats';
+$messages['comment_only_auth_users_help'] = 'Només es permet escriure comentaris a aquells usuaris que s\'hagin autentificat mitjançant un nom d\'usuari i contrasenya vàlids';
+$messages['show_comments_max'] = 'Comentaris per pàgina';
+$messages['show_comments_max_help'] = 'Màxim de comentaris que es mostraran per pàgina [ Valor predeterminat = 20 ]';
+$messages['hard_show_comments_max_help'] = 'Límit superior per al paràmetre comments_max que controla el nombre màxim de comentaris que es mostren per pàgina. Si l\'usuari configura un valor superior, s\'utilitzarà el valor definit aquí. [ Valor predeterminat = 50 ]';
 
-$messages['error_resource_not_whitelisted_extension'] = 'Aquest tipus d\'arxiu no és permès.';
-$messages['help_upload_allowed_files'] = 'Llista de tipus d\'arxius permesos, separats per espais en blanc. L\'ús de \'*\' i \'?\' és permès. Si el camp upload_forbidden_file i aquest camp estan activats, aquesta llista (upload_allowed_files) sempre tendrà prioritat [Valor predeterminant = Cap]';
-$messages['help_template_load_order'] = 'Defineix l\'ordre en què es carreguen els arxius de la plantilla. Usant \'Carregar primer les plantilles predeterminades\', LifeType intentarà trobar les plantilles al directori templates/default/ i si no estan disponibles allà, aleshores es buscarà la mateixa plantilla al directori de l\'usuari. Si la mateixa plantilla existeix en ambdós llocs, la plantilla per defecte a templates/default/ sempre tendrà prioritat. Si es selecciona \'Carregar primer la plantilla d\'usuari\', les plantilles d\'usuari sempre es carregaran primer i si no estan disponibles, es buscarà al directori de les plantilles predeterminades. Si la mateix plantilla existeix a ambdós llocs, la plantilla de l\'usuari sempre tendrà prioritat.';
+$messages['error_resource_not_whitelisted_extension'] = 'Aquest tipus d\'arxiu no és permès.';
+$messages['help_upload_allowed_files'] = 'Llista de tipus d\'arxius permesos, separats per espais en blanc. L\'ús de \'*\' i \'?\' és permès. Si el camp upload_forbidden_file i aquest camp estan activats, aquesta llista (upload_allowed_files) sempre tendrà prioritat [Valor predeterminant = Cap]';
+$messages['help_template_load_order'] = 'Defineix l\'ordre en què es carreguen els arxius de la plantilla. Usant \'Carregar primer les plantilles predeterminades\', LifeType intentarà trobar les plantilles al directori templates/default/ i si no estan disponibles allà, aleshores es buscarà la mateixa plantilla al directori de l\'usuari. Si la mateixa plantilla existeix en ambdós llocs, la plantilla per defecte a templates/default/ sempre tendrà prioritat. Si es selecciona \'Carregar primer la plantilla d\'usuari\', les plantilles d\'usuari sempre es carregaran primer i si no estan disponibles, es buscarà al directori de les plantilles predeterminades. Si la mateix plantilla existeix a ambdós llocs, la plantilla de l\'usuari sempre tendrà prioritat.';
 $messages['template_load_order_user_first'] = 'Carregar primer les plantilles predeterminades';
 $messages['template_load_order_default_first'] = 'Carregar primer les plantilles d\'usuari';
 
 $messages['editBlogUser'] = 'Editar usuari del bloc';
 
-$messages['help_summary_service_name'] = 'Nom del servei, es mostrarà a diversos llocs de la pàgina principal i a totes les fonts RSS generades [ Valor predeterminat = Cap ]';
+$messages['help_summary_service_name'] = 'Nom del servei, es mostrarà a diversos llocs de la pàgina principal i a totes les fonts RSS generades [ Valor predeterminat = Cap ]';
 
-$messages['register_step2_help'] = 'Facilita la informació requerida per crear el bloc.';
+$messages['register_step2_help'] = 'Facilita la informació requerida per crear el bloc.';
 
 $messages['create_date'] = 'Data creada';
 
 $messages['insert_media'] = 'Afegeix arxiu';
-$messages['insert_more'] = 'Afegir l\'enllaç "Més..."';
+$messages['insert_more'] = 'Afegir l\'enllaç "Més..."';
 
 $messages['posted_in'] = 'Publicat a';
 
-$messages['purging_please_wait'] = 'Per favor espera mentre es purguen les dades. Aquésta pàgina s\'anirà recarregant automàticament fins que totes les dades s\'hagin processat, no intentis aturar el procés';
+$messages['purging_please_wait'] = 'Per favor espera mentre es purguen les dades. Aquésta pàgina s\'anirà recarregant automàticament fins que totes les dades s\'hagin processat, no intentis aturar el procés';
 
-$messages['error_cannot_delete_last_blog_category'] = 'No és possible esborrar la darrera categoria de bloc.';
+$messages['error_cannot_delete_last_blog_category'] = 'No és possible esborrar la darrera categoria de bloc.';
 
-$messages['help_logout_destination_url'] = 'Adreça (URL) a la qual es redirigiran els usuaris en sortir de la interfície d\'administració, enlloc de la pàgina d\'accés a la interfície d\'administració [ Valor predeterminat = Cap ]';
+$messages['help_logout_destination_url'] = 'Adreça (URL) a la qual es redirigiran els usuaris en sortir de la interfície d\'administració, enlloc de la pàgina d\'accés a la interfície d\'administració [ Valor predeterminat = Cap ]';
 $messages['help_default_global_article_category_id'] = 'Identificador de la categoria global d\'article per defecte [ Valor predeterminat = Cap ]';
-$messages['help_blog_does_not_exist_url'] = 'Adreça (URL) a la qual es redirigiran els usuaris quan intentin accedir a un bloc que no existeix, en comptes de ser redirigits al bloc configurat com a bloc predeterminat del servei [ Valor predeterminat = Cap ]';
+$messages['help_blog_does_not_exist_url'] = 'Adreça (URL) a la qual es redirigiran els usuaris quan intentin accedir a un bloc que no existeix, en comptes de ser redirigits al bloc configurat com a bloc predeterminat del servei [ Valor predeterminat = Cap ]';
 
-$messages['error_invalid_blog_name'] = 'El nom del bloc no és vàlid';
+$messages['error_invalid_blog_name'] = 'El nom del bloc no és vàlid';
 
 /* strings for /default/ templates */
 $messages['form_authenticated'] = 'Autenticat';
 
-$messages['help_forbidden_blognames'] = 'Llista de cadenes de text separades per un espai en blanc que no es poden emprar com a noms de bloc. Es pot emprar una expressió regular en lloc d\'una simple cadena de text. [ Valor predeterminat = Cap ]';
+$messages['help_forbidden_blognames'] = 'Llista de cadenes de text separades per un espai en blanc que no es poden emprar com a noms de bloc. Es pot emprar una expressió regular en lloc d\'una simple cadena de text. [ Valor predeterminat = Cap ]';
 
 $messages['posts_updated_ok'] = '%s articles actualitzats correctament';
-$messages['error_updating_post2'] = 'S\'ha produït un error en actualitzar l\'article amb identificador %s';
+$messages['error_updating_post2'] = 'S\'ha produït un error en actualitzar l\'article amb identificador %s';
 $messages['resources_updated_ok'] = '% recursos actualitzats correctament';
-$messages['error_updating_resource2'] = 'S\'ha produït un error en actualitzar el recurs amb identificador %s';
-$messages['albums_updated_ok'] = '%s àlbums actualitzats correctament';
-$messages['error_updating_album2'] = 'S\'ha produït un error en actualitzar l\'àlbum amb identificador %s';
-$messages['links_updated_ok'] = '%s enllaços actualitzats correctament';
-$messages['error_updating_link2'] = 'S\'ha produït un error en actualitzar l\'enllaç amb identificador %s';+
+$messages['error_updating_resource2'] = 'S\'ha produït un error en actualitzar el recurs amb identificador %s';
+$messages['albums_updated_ok'] = '%s àlbums actualitzats correctament';
+$messages['error_updating_album2'] = 'S\'ha produït un error en actualitzar l\'àlbum amb identificador %s';
+$messages['links_updated_ok'] = '%s enllaços actualitzats correctament';
+$messages['error_updating_link2'] = 'S\'ha produït un error en actualitzar l\'enllaç amb identificador %s';+
 $messages['num_reads'] = 'Lectures';
 
-$messages['bookmarklet'] = 'Enllaçar';
-$messages['bookmarklet_help'] = 'Arrossegui aquest enllaç a la barra d\'eines del navegador o fent clic amb el botó dret i després escollint "Afegir a favorits" o "Enllaços" per a activar-ho"';
+$messages['bookmarklet'] = 'Enllaçar';
+$messages['bookmarklet_help'] = 'Arrossegui aquest enllaç a la barra d\'eines del navegador o fent clic amb el botó dret i després escollint "Afegir a favorits" o "Enllaços" per a activar-ho"';
 $messages['blogit_to_lifetype'] = "Afegir a Lifetype!";
 $messages['original_post'] = "(Article original)";
-$messages['bookmarkit_to_lifetype'] = 'Enllaçar a Lifetype';
-$messages['help_security_pipeline_enabled'] = 'Activar els filtres, incloses els de seguretat i tots aquells afegits dinàmicament mitjançant plugins. [ Valor per defecte = Sí ]';
-$messages['agreement'] = 'Acceptació de les normes';
+$messages['bookmarkit_to_lifetype'] = 'Enllaçar a Lifetype';
+$messages['help_security_pipeline_enabled'] = 'Activar els filtres, incloses els de seguretat i tots aquells afegits dinàmicament mitjançant plugins. [ Valor per defecte = Sí ]';
+$messages['agreement'] = 'Acceptació de les normes';
 $messages['error_updating_comment_no_comment'] = 'Hi ha hagut un error actualizant el comentario amb identificador %s';
 $messages['error_updating_comment_wrong_blog'] = 'Hi ha hagut un error actualizant el comentario amb identificador %s';
 $messages['error_updating_comment'] = 'Hi ha hagut un error actualitzant el comentari "%s"';
@@ -1133,26 +1133,26 @@
 $messages['comments_updated_ok'] = '%s comentaris han estat correctament actualitzats.';
 $messages['Miscellaneous'] = 'General';
 $messages['Plugins'] = 'Plugins';
-$messages['help_hard_recent_posts_max'] = 'Valor màxim per al nombre d\'articles recents mostrats a cada bloc. Si els usuaris especifiquen un valor superior a aquest, el valor de l\'usuari serà ignorat i el valor especificat aqui serà usat [ Valor per defecte = 25 ]';
-$messages['version'] = 'Versió';
+$messages['help_hard_recent_posts_max'] = 'Valor màxim per al nombre d\'articles recents mostrats a cada bloc. Si els usuaris especifiquen un valor superior a aquest, el valor de l\'usuari serà ignorat i el valor especificat aqui serà usat [ Valor per defecte = 25 ]';
+$messages['version'] = 'Versió';
 
 $messages['error_access_forbidden'] = 'Per accedir primer ha de verificar el seu usuari.';
 $messages['Logout'] = 'Sortir';
-$messages['trackback_urls'] = 'Retroenllaços';
-$messages['trackback_urls_help'] = 'Lifetype pot detectar les adreces als seus articles i enviar els retroenllaços automàticament si la pàgina de destí ho suporta. Si els enllaços de l\'article no inclouen aquesta caracteristica, si us plau afegeixi cadascuna de les adrece de retroenllaç on s\'han d\'enviar retroenllaços (una per linina';
+$messages['trackback_urls'] = 'Retroenllaços';
+$messages['trackback_urls_help'] = 'Lifetype pot detectar les adreces als seus articles i enviar els retroenllaços automàticament si la pàgina de destí ho suporta. Si els enllaços de l\'article no inclouen aquesta caracteristica, si us plau afegeixi cadascuna de les adrece de retroenllaç on s\'han d\'enviar retroenllaços (una per linina';
 $messages['add_resource'] = 'Afegir fitxer';
-$messages['add_resource_preview'] = 'Afegir versió petita';
-$messages['add_resource_medium'] = 'Afegir versió mitjana';
-$messages['add_album'] = 'Afegir álbum';
+$messages['add_resource_preview'] = 'Afegir versió petita';
+$messages['add_resource_medium'] = 'Afegir versió mitjana';
+$messages['add_album'] = 'Afegir álbum';
 $messages['editResource'] = 'Edit fitxer';
-$messages['resource_information_help'] = 'Informació sobre el fitxer';
-$messages['sample_rate'] = 'Freqüència';
+$messages['resource_information_help'] = 'Informació sobre el fitxer';
+$messages['sample_rate'] = 'Freqüència';
 $messages['number_of_channels'] = 'Nombre de canals';
 $messages['length'] = 'Durada';
 $messages['resource'] = 'Fitxer';
 $messages['error_plugins_disabled'] = 'Plugins han estat desactivats en aquest lloc.';
-$messages['help_allow_php_code_in_templates'] = 'Permet incloure codi PHP a les plantilles d\'usuari mitjançant els tags {php}...{/php} [Valor per defecte = No]';
-$messages['logout_destination_url'] = 'Adreça web on els usuaris seràn enviats quan premin el botó "Sortir" a la interfície d\'administració, com per exemple la pàgina principal d\'aquest servei [ Valor per defecte = res ]';
+$messages['help_allow_php_code_in_templates'] = 'Permet incloure codi PHP a les plantilles d\'usuari mitjançant els tags {php}...{/php} [Valor per defecte = No]';
+$messages['logout_destination_url'] = 'Adreça web on els usuaris seràn enviats quan premin el botó "Sortir" a la interfície d\'administració, com per exemple la pàgina principal d\'aquest servei [ Valor per defecte = res ]';
 
 $messages['error_resources_disabled'] = 'El suport per a afegir nous fitxers al seu bloc ha estat desactivat en aquest lloc web';
 
@@ -1160,23 +1160,23 @@
 
 $messages['blog_updated_ok'] = 'El bloc "%s" ha estat modificat correctament.';
 $messages['blogs_updated_ok'] = '%s blocs han estat modificats correctament.';
-$messages['error_updating_blog2'] = 'S\'ha produït un error modificat el bloc amb identificador "%s"';
-$messages['error_updating_blog'] = 'S\'ha produït un error modificat el bloc "%s"';
+$messages['error_updating_blog2'] = 'S\'ha produït un error modificat el bloc amb identificador "%s"';
+$messages['error_updating_blog'] = 'S\'ha produït un error modificat el bloc "%s"';
 
-$messages['error_updating_user'] = 'S\'ha produït un error modificat l\'usuari "%s".';
+$messages['error_updating_user'] = 'S\'ha produït un error modificat l\'usuari "%s".';
 $messages['user_updated_ok'] = 'L\'usuari "%s" ha estat modificat correctament.';
 $messages['users_updated_ok'] = '%s usuaris han estat correctament modificats';
-$messages['eror_updating_user2'] = 'S\'ha produït un error actualitzant l\'usuari amb identificador "%s"';
+$messages['eror_updating_user2'] = 'S\'ha produït un error actualitzant l\'usuari amb identificador "%s"';
 
-$messages['error_select_status'] = 'Esculli un estat vàlid';
-$messages['error_invalid_blog_name'] = 'El nom escollit per al blog no és vàlid';
+$messages['error_select_status'] = 'Esculli un estat vàlid';
+$messages['error_invalid_blog_name'] = 'El nom escollit per al blog no és vàlid';
 
-$messages['help_resources_naming_rule'] = 'Nom amb el que es guardaran els fitxers afegits pels usuaris. Quan \'Nom original\' està sel·leccionat, es guardarà el fitxer amb el seu nom original. Quan \'Nom del fitxer codificat\' està sel·leccionat, es canviarà el nom del fitxer d\'acord a la regla [BlogId]-[FitxerId].[Ext]. Sel·leccioni \'Nom de fitxer codificat\' si està executant LifeType en un servidor Windows y el joc de caràcters és multi-byte. Si no està segur, possiblement no necessiti fer servir aquesta opció y hauria de deixar-ho amb el valor per defecte [Valor per defecte = Nom original]';
+$messages['help_resources_naming_rule'] = 'Nom amb el que es guardaran els fitxers afegits pels usuaris. Quan \'Nom original\' està sel·leccionat, es guardarà el fitxer amb el seu nom original. Quan \'Nom del fitxer codificat\' està sel·leccionat, es canviarà el nom del fitxer d\'acord a la regla [BlogId]-[FitxerId].[Ext]. Sel·leccioni \'Nom de fitxer codificat\' si està executant LifeType en un servidor Windows y el joc de caràcters és multi-byte. Si no està segur, possiblement no necessiti fer servir aquesta opció y hauria de deixar-ho amb el valor per defecte [Valor per defecte = Nom original]';
 $messages['original_file_name'] = 'Nom original';
 $messages['encoded_file_name'] = 'Nom del fitxer codificat';
 
-$messages['quick_permission_selection'] = 'Selecció ràpida';
-$messages['basic_blog_permission'] = 'Permet a l\'usuario afegir, actualitzar y esborrar articles, enllaços y fitxers';
+$messages['quick_permission_selection'] = 'Selecció ràpida';
+$messages['basic_blog_permission'] = 'Permet a l\'usuario afegir, actualitzar y esborrar articles, enllaços y fitxers';
 $messages['full_blog_permission'] = 'Permet a l\'usuari accedir al bloc com si fos el propietari.';
 
 $messages['error_template_exist'] = 'Hi ha hagut un error afegint la nova plantilla, ja hi ha una plantilla anomenada "%s".';
@@ -1186,17 +1186,17 @@
 $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['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['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['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';
+$messages['all_files_ok'] = 'Tots els fitxers són correctes';
 
 /// new strings for LT 1.2.4 ///
 $messages['plugin_latest_version'] = 'Most recent version available: ';

Modified: plog/trunk/locale/admin/locale_en_UK.php
===================================================================
--- plog/trunk/locale/admin/locale_en_UK.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/admin/locale_en_UK.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -44,7 +44,7 @@
 $messages['manageCustomFields'] = 'Manage Custom Fields';
 $messages['blogCustomFields'] = 'Custom Fields';
 $messages['newCustomField'] = 'New Custom Field';
-$messages['resourceCenter'] = 'Resource Centre';
+$messages['resourceCenter'] = 'Media';
 $messages['resources'] = 'Resources';
 $messages['newResourceAlbum'] = 'New Album';
 $messages['newResource'] = 'New Resource';
@@ -1191,7 +1191,7 @@
 
 /// new strings in LT 1.3 ///
 // friend management
-$messages['friendManagement'] = 'Friend Management';
+$messages['friendManagement'] = 'Friends';
 $messages['friend'] = 'Friend'; 
 $messages['friends'] = 'Friends'; 
 $messages['manageFriends'] = 'Friend Management';
@@ -1260,4 +1260,10 @@
 $messages['error_incorrect_friend_id'] = 'The friend identifier is not correct.';
 $messages['friend_deleted_ok'] = 'Friend "%s" deleted successfully.';
 $messages['friends_deleted_ok'] = '%s friends deleted successfully.';
+
+////
+// added in LT 1.3
+////
+$messages['error_incorrect_value'] = 'The value is not 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-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/admin/locale_es_ES.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -4,72 +4,72 @@
 $messages['login'] = 'Entrar';
 $messages['welcome_message'] = 'Bienvenido a LifeType';
 $messages['error_incorrect_username_or_password'] = 'El nombre de usuario o password es incorrecto.';
-$messages['error_dont_belong_to_any_blog'] = 'Su usuario no pertenece a ninguna bitácora todavía.';
+$messages['error_dont_belong_to_any_blog'] = 'Su usuario no pertenece a ninguna bitácora todavía.';
 $messages['logout_message'] = 'Ha sido desconectado correctamente';
-$messages['logout_message_2'] = 'Haga clic <a href="%1$s">aquí</a> para ir a %2$s.';
-$messages['error_access_forbidden'] = 'Acceso no permitido. Debe primero verificar su usuario aquí';
+$messages['logout_message_2'] = 'Haga clic <a href="%1$s">aquí</a> para ir a %2$s.';
+$messages['error_access_forbidden'] = 'Acceso no permitido. Debe primero verificar su usuario aquí';
 $messages['username'] = 'Usuario';
 $messages['password'] = 'Password';
 
 // dashboard
 $messages['dashboard'] = 'Perspectiva';
-$messages['recent_articles'] = 'Artículos recientes';
+$messages['recent_articles'] = 'Artículos recientes';
 $messages['recent_comments'] = 'Comentarios recientes';
 $messages['recent_trackbacks'] = 'Retroenlaces recientes';
-$messages['blog_statistics'] = 'Estadísticas';
-$messages['total_posts'] = 'Número de artículos';
-$messages['total_comments'] = 'Número de comentarios';
-$messages['total_trackbacks'] = 'Número de trackbacks';
-$messages['total_viewed'] = 'Artículos leídos';
+$messages['blog_statistics'] = 'Estadísticas';
+$messages['total_posts'] = 'Número de artículos';
+$messages['total_comments'] = 'Número de comentarios';
+$messages['total_trackbacks'] = 'Número de trackbacks';
+$messages['total_viewed'] = 'Artículos leídos';
 $messages['in'] = 'En';
 
 // menu options
-$messages['newPost'] = 'Nuevo Artículo';
+$messages['newPost'] = 'Nuevo Artículo';
 $messages['Manage'] = 'Contenido';
-$messages['managePosts'] = 'Artículos';
-$messages['editPosts'] = 'Artículos';
+$messages['managePosts'] = 'Artículos';
+$messages['editPosts'] = 'Artículos';
 $messages['editArticleCategories'] = 'Categorias';
 $messages['newArticleCategory'] = 'Nueva Categoria';
 $messages['manageLinks'] = 'Enlaces';
 $messages['editLinks'] = 'Enlaces';
 $messages['newLink'] = 'Nuevo Enlace';
 $messages['editLink'] = 'Editar Enlace';
-$messages['editLinkCategories'] = 'Editar Categorías de Enlaces';
-$messages['newLinkCategory'] = 'Nueva Categoría de Enlaces';
-$messages['editLinkCategory'] = 'Editar Categoría de Enlace';
+$messages['editLinkCategories'] = 'Editar Categorías de Enlaces';
+$messages['newLinkCategory'] = 'Nueva Categoría de Enlaces';
+$messages['editLinkCategory'] = 'Editar Categoría de Enlace';
 $messages['manageCustomFields'] = 'Campos';
 $messages['blogCustomFields'] = 'Campos';
 $messages['newCustomField'] = 'Nuevo Campo';
 $messages['resourceCenter'] = 'Ficheros';
 $messages['resources'] = 'Ficheros';
-$messages['newResourceAlbum'] = 'Nuevo Álbum';
+$messages['newResourceAlbum'] = 'Nuevo Álbum';
 $messages['newResource'] = 'Nuevo Fichero';
-$messages['controlCenter'] = 'Configuración';
-$messages['manageSettings'] = 'Configuración';
-$messages['blogSettings'] = 'Configuración de la Bitácora';
-$messages['userSettings'] = 'Configuración del Usuario';
+$messages['controlCenter'] = 'Configuración';
+$messages['manageSettings'] = 'Configuración';
+$messages['blogSettings'] = 'Configuración de la Bitácora';
+$messages['userSettings'] = 'Configuración del Usuario';
 $messages['pluginCenter'] = 'Plugins';
-$messages['Stats'] = 'Estadísticas';
-$messages['manageBlogUsers'] = 'Usuarios de la Bitácora';
+$messages['Stats'] = 'Estadísticas';
+$messages['manageBlogUsers'] = 'Usuarios de la Bitácora';
 $messages['newBlogUser'] = 'Invitar Usuario';
-$messages['showBlogUsers'] = 'Usuarios de la Bitácora';
+$messages['showBlogUsers'] = 'Usuarios de la Bitácora';
 $messages['manageBlogTemplates'] = 'Plantillas';
-$messages['newBlogTemplate'] = 'Añadir Plantilla';
-$messages['blogTemplates'] = 'Plantillas de la Bitácora';
-$messages['adminSettings'] = 'Administración';
+$messages['newBlogTemplate'] = 'Añadir Plantilla';
+$messages['blogTemplates'] = 'Plantillas de la Bitácora';
+$messages['adminSettings'] = 'Administración';
 $messages['Users'] = 'Usuarios';
 $messages['createUser'] = 'Nuevo Usuario';
 $messages['editSiteUsers'] = 'Usuarios';
-$messages['Blogs'] = 'Bitácoras';
-$messages['createBlog'] = 'Nueva Bitácora';
-$messages['editSiteBlogs'] = 'Bitácoras';
+$messages['Blogs'] = 'Bitácoras';
+$messages['createBlog'] = 'Nueva Bitácora';
+$messages['editSiteBlogs'] = 'Bitácoras';
 $messages['Locales'] = 'Traducciones';
-$messages['newLocale'] = 'Nueva Traducción';
+$messages['newLocale'] = 'Nueva Traducción';
 $messages['siteLocales'] = 'Traducciones';
 $messages['Templates'] = 'Plantillas';
-$messages['newTemplate'] = 'Añadir Plantilla';
+$messages['newTemplate'] = 'Añadir Plantilla';
 $messages['siteTemplates'] = 'Plantillas';
-$messages['GlobalSettings'] = 'Configuración General';
+$messages['GlobalSettings'] = 'Configuración General';
 $messages['editSiteSettings'] = 'General';
 $messages['summarySettings'] = 'Portal';
 $messages['templateSettings'] = 'Plantillas';
@@ -81,53 +81,53 @@
 $messages['securitySettings'] = 'Seguridad';
 $messages['bayesianSettings'] = 'Filtro Bayesiano';
 $messages['resourcesSettings'] = 'Ficheros';
-$messages['searchSettings'] = 'Búsquedas';
+$messages['searchSettings'] = 'Búsquedas';
 $messages['cleanUpSection'] = 'Limpieza';
 $messages['cleanUp'] = 'Limpieza';
-$messages['editResourceAlbum'] = 'Editar Álbum';
+$messages['editResourceAlbum'] = 'Editar Álbum';
 $messages['resourceInfo'] = 'Editar Fichero';
 $messages['editBlog'] = 'Editar Plantilla';
 $messages['Logout'] = 'Salir';
 
 // new post
-$messages['topic'] = 'Título';
-$messages['topic_help'] = 'Título del artículo';
+$messages['topic'] = 'Título';
+$messages['topic_help'] = 'Título del artículo';
 $messages['text'] = 'Texto';
-$messages['text_help'] = 'Texto del artículo. Esta parte siempre aparecerá en la página principal de la bitácora';
+$messages['text_help'] = 'Texto del artículo. Esta parte siempre aparecerá en la página principal de la bitácora';
 $messages['extended_text'] = 'Texto extra';
-$messages['extended_text_help'] = 'Texto extra del artículo. Esta parte puede aparecer o bien siempre en la primera página o en la página del artículo. Esto es configurable en la página de configuración de la bitácora';
-$messages['post_slug'] = 'Título URL';
-$messages['post_slug_help'] = 'El título URL será usado para generar enlaces permanentes con un mayor significado semántico';
+$messages['extended_text_help'] = 'Texto extra del artículo. Esta parte puede aparecer o bien siempre en la primera página o en la página del artículo. Esto es configurable en la página de configuración de la bitácora';
+$messages['post_slug'] = 'Título URL';
+$messages['post_slug_help'] = 'El título URL será usado para generar enlaces permanentes con un mayor significado semántico';
 $messages['date'] = 'Fecha';
-$messages['post_date_help'] = 'Fecha cuando este artículo debería ser publicado';
+$messages['post_date_help'] = 'Fecha cuando este artículo debería ser publicado';
 $messages['status'] = 'Estado';
 $messages['post_status_help'] = 'Elija uno de los siguientes 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 una o más categorías';
+$messages['categories'] = 'Categorías';
+$messages['post_categories_help'] = 'Seleccione una o más categorías';
 $messages['post_comments_enabled_help'] = 'Activar comentarios';
-$messages['send_notification_help'] = 'Enviar una notificación cuando se reciban nuevos comentarios o retroenlaces';
-$messages['send_trackback_pings_help'] = 'Envíar retroenlaces';
-$messages['send_xmlrpc_pings_help'] = 'Enviar pings vía XMLRPC';
+$messages['send_notification_help'] = 'Enviar una notificación cuando se reciban nuevos comentarios o retroenlaces';
+$messages['send_trackback_pings_help'] = 'Envíar retroenlaces';
+$messages['send_xmlrpc_pings_help'] = 'Enviar pings vía XMLRPC';
 $messages['save_draft_and_continue'] = 'Guardar Borrador';
 $messages['preview'] = 'Vista Previa';
-$messages['add_post'] = 'Añadir!';
+$messages['add_post'] = 'Añadir!';
 $messages['error_saving_draft'] = 'Hubo un error guardando el borrador';
 $messages['draft_saved_ok'] = 'Borrador guardado correctamente';
-$messages['error_sending_request'] = 'Hubo un error enviando la petición';
-$messages['error_no_category_selected'] = 'Debe seleccionar por lo menos una categoría';
-$messages['error_missing_post_topic'] = 'El título del artículo está vacío';
-$messages['error_missing_post_text'] = 'El texto del artículo está vacío';
-$messages['error_adding_post'] = 'Hubo un error guardando el artículo';
-$messages['post_added_not_published'] = 'El artículo ha sido guardado correctamente pero no aparecerá en la página principal';
-$messages['post_added_ok'] = 'El artículo ha sido guardado correctamente.';
-$messages['send_notifications_ok'] = 'Se enviará un mensaje cada vez que se reciba un comentario o retroenlace';
+$messages['error_sending_request'] = 'Hubo un error enviando la petición';
+$messages['error_no_category_selected'] = 'Debe seleccionar por lo menos una categoría';
+$messages['error_missing_post_topic'] = 'El título del artículo está vacío';
+$messages['error_missing_post_text'] = 'El texto del artículo está vacío';
+$messages['error_adding_post'] = 'Hubo un error guardando el artículo';
+$messages['post_added_not_published'] = 'El artículo ha sido guardado correctamente pero no aparecerá en la página principal';
+$messages['post_added_ok'] = 'El artículo ha sido guardado correctamente.';
+$messages['send_notifications_ok'] = 'Se enviará un mensaje cada vez que se reciba un comentario o retroenlace';
 
 // send trackbacks
 $messages['error_sending_trackbacks'] = 'Hubo un error enviando un retroenlace a los siguientes sitios';
-$messages['send_trackbacks_help'] = 'Seleccione las direcciones a las que quiere enviar un retroenlace. Asegúrese de que las direcciones soportan retroenlaces.';
+$messages['send_trackbacks_help'] = 'Seleccione las direcciones a las que quiere enviar un retroenlace. Asegúrese de que las direcciones soportan retroenlaces.';
 $messages['send_trackbacks'] = 'Enviar retroenlaces';
 $messages['ping_selected'] = 'Enviar retroenlaces';
 $messages['trackbacks_sent_ok'] = 'Los retroenlaces fueron enviados correctamente a las direcciones seleccionadas';
@@ -137,33 +137,33 @@
 $messages['author'] = 'Autor';
 $messages['post_status_all'] = 'Todos';
 $messages['author_all'] = 'Todos';
-$messages['search_terms'] = 'Búsqueda';
+$messages['search_terms'] = 'Búsqueda';
 $messages['show'] = 'Mostrar';
 $messages['delete'] = 'Eliminar';
 $messages['actions'] = 'Acciones';
 $messages['all'] = 'Todos';
 $messages['category_all'] = 'Todas';
-$messages['error_incorrect_article_id'] = 'El identificador de artículo es incorrecto.';
-$messages['error_deleting_article'] = 'Hubo un error eliminando el artículo "%s"';
-$messages['article_deleted_ok'] = 'El artículo "%s" fue eliminado correctamente';
+$messages['error_incorrect_article_id'] = 'El identificador de artículo es incorrecto.';
+$messages['error_deleting_article'] = 'Hubo un error eliminando el artículo "%s"';
+$messages['article_deleted_ok'] = 'El artículo "%s" fue eliminado correctamente';
 $messages['articles_deleted_ok'] = '%s articulos fueron eliminados correctamente';
-$messages['error_deleting_article2'] = 'Hubo un error eliminando el artículo cuyo identificador es "%s"';
+$messages['error_deleting_article2'] = 'Hubo un error eliminando el artículo cuyo identificador es "%s"';
 
 // edit post page
 $messages['update'] = 'Actualizar';
-$messages['editPost'] = 'Editar Artículo';
-$messages['post_updated_ok'] = 'El artículo "%s" fue actualizado corrrectamente';
-$messages['error_updating_post'] = 'Hubo un error actualizando el artículo';
-$messages['notification_added'] = 'Se enviará un mensaje cada vez que se reciba un comentario o retroenlace';
-$messages['notification_removed'] = 'No se enviarán mensajes en caso de comentarios o retroenlaces';
+$messages['editPost'] = 'Editar Artículo';
+$messages['post_updated_ok'] = 'El artículo "%s" fue actualizado corrrectamente';
+$messages['error_updating_post'] = 'Hubo un error actualizando el artículo';
+$messages['notification_added'] = 'Se enviará un mensaje cada vez que se reciba un comentario o retroenlace';
+$messages['notification_removed'] = 'No se enviarán mensajes en caso de comentarios o retroenlaces';
 
 // post comments
-$messages['url'] = 'Dirección';
+$messages['url'] = 'Dirección';
 $messages['comment_status_all'] = 'Todos';
 $messages['comment_status_spam'] = 'Spam';
 $messages['comment_status_nonspam'] = 'No Spam';
-$messages['error_fetching_comments'] = 'Hubo un error cargando los artículos del comentario';
-$messages['error_deleting_comments'] = 'Hubo un error eliminando los comentarios o no se seleccionó ningún comentario a eliminar';
+$messages['error_fetching_comments'] = 'Hubo un error cargando los artículos del comentario';
+$messages['error_deleting_comments'] = 'Hubo un error eliminando los comentarios o no se seleccionó ningún comentario a eliminar';
 $messages['comment_deleted_ok'] = 'El comentario "%s" fue eliminado correctamente';
 $messages['comments_deleted_ok'] = '%s comentarios eliminados correctamente';
 $messages['error_deleting_comment'] = 'Hubo un error eliminando el comentario "%s"';
@@ -178,10 +178,10 @@
 $messages['comment_marked_as_nonspam_ok'] = 'El comentario fue marcado como no spam correctamente';
 
 // post trackbacks
-$messages['blog'] = 'Bitácora';
+$messages['blog'] = 'Bitácora';
 $messages['excerpt'] = 'Fragmento';
 $messages['error_fetching_trackbacks'] = 'Hubo un error cargando los retroenlaces recibidos';
-$messages['error_deleting_trackbacks'] = 'Hubo un error eliminando los retroenlaces o no se seleccionó ningún retroenlace a eliminar';
+$messages['error_deleting_trackbacks'] = 'Hubo un error eliminando los retroenlaces o no se seleccionó ningún retroenlace a eliminar';
 $messages['error_deleting_trackback'] = 'Hubo un error borrando el retroenlace "%s"';
 $messages['error_deleting_trackback2'] = 'Hubo un error eliminando el retroenlace cuyo identificador es "%s"';
 $messages['trackback_deleted_ok'] = 'Retroenlace "%s" eliminado correctamente';
@@ -198,33 +198,33 @@
 $messages['referrers_deleted_ok'] = '%s referencias eliminadas correctamente';
 
 // categories
-$messages['posts'] = 'Artículos';
-$messages['show_in_main_page'] = 'Incluir en la página principal';
-$messages['error_category_has_articles'] = 'La categoría "%s" no se puede borrar porque está siendo usada por algunos artículos. Edite primero los artículos y vuelva a intentar eliminar la categoría.';
-$messages['category_deleted_ok'] = 'La categoría "%s" fue eliminada correctamente';
-$messages['categories_deleted_ok'] = '%s categorías eliminadas correctamente';
-$messages['error_deleting_category'] = 'Hubo un error eliminando la categoría "%s"';
-$messages['error_deleting_category2'] = 'Hubo un error eliminando la categoría cuyo identificador es "%s"';
-$messages['yes'] = 'Sí';
+$messages['posts'] = 'Artículos';
+$messages['show_in_main_page'] = 'Incluir en la página principal';
+$messages['error_category_has_articles'] = 'La categoría "%s" no se puede borrar porque está siendo usada por algunos artículos. Edite primero los artículos y vuelva a intentar eliminar la categoría.';
+$messages['category_deleted_ok'] = 'La categoría "%s" fue eliminada correctamente';
+$messages['categories_deleted_ok'] = '%s categorías eliminadas correctamente';
+$messages['error_deleting_category'] = 'Hubo un error eliminando la categoría "%s"';
+$messages['error_deleting_category2'] = 'Hubo un error eliminando la categoría cuyo identificador es "%s"';
+$messages['yes'] = 'Sí';
 $messages['no'] = 'No';
 
 // new category
 $messages['name'] = 'Nombre';
-$messages['category_name_help'] = 'Nombre de la categoría tal y como aparecerá en la bitácora';
-$messages['description'] = 'Descripción';
-$messages['category_description_help'] = 'Descripción de la categoría';
-$messages['show_in_main_page_help'] = 'Si se desactiva, los artículos categorizados bajo esta categoría no serán mostrados en la página principal y solo serán visibles en la página propia de la categoría';
-$messages['error_empty_name'] = 'El nombre no puede estar vacío';
-$messages['error_empty_description'] = 'La descripción no puede estar vacía';
-$messages['error_adding_article_category'] = 'Hubo un error añadiendo la categoría. Verifique los datos y vuélvalo a intentar';
-$messages['category_added_ok'] = 'La categoría "%s" fue añadida correctamente a la bitácora';
-$messages['add'] = 'Añadir';
+$messages['category_name_help'] = 'Nombre de la categoría tal y como aparecerá en la bitácora';
+$messages['description'] = 'Descripción';
+$messages['category_description_help'] = 'Descripción de la categoría';
+$messages['show_in_main_page_help'] = 'Si se desactiva, los artículos categorizados bajo esta categoría no serán mostrados en la página principal y solo serán visibles en la página propia de la categoría';
+$messages['error_empty_name'] = 'El nombre no puede estar vacío';
+$messages['error_empty_description'] = 'La descripción no puede estar vacía';
+$messages['error_adding_article_category'] = 'Hubo un error añadiendo la categoría. Verifique los datos y vuélvalo a intentar';
+$messages['category_added_ok'] = 'La categoría "%s" fue añadida correctamente a la bitácora';
+$messages['add'] = 'Añadir';
 $messages['reset'] = 'Limpiar';
 
 // update category
-$messages['error_updating_article_category'] = 'Hubo un error actualizando la categoría';
-$messages['error_fetching_category'] = 'Hubo un error cargando la categoría';
-$messages['article_category_updated_ok'] = 'La categoría "%s" fue actualizada correctamente';
+$messages['error_updating_article_category'] = 'Hubo un error actualizando la categoría';
+$messages['error_fetching_category'] = 'Hubo un error cargando la categoría';
+$messages['article_category_updated_ok'] = 'La categoría "%s" fue actualizada correctamente';
 
 // links
 $messages['feed'] = 'Contenidos RSS';
@@ -237,37 +237,37 @@
 
 // new link
 $messages['link_name_help'] = 'Nombre para el enlace';
-$messages['link_url_help'] = 'Dirección del enlace';
-$messages['link_description_help'] = 'Breve descripción sobre el enlace';
+$messages['link_url_help'] = 'Dirección del enlace';
+$messages['link_description_help'] = 'Breve descripción sobre el enlace';
 $messages['link_feed_help'] = 'Enlace a una fuende de contenidos RSS o Atom del enlace';
-$messages['link_category_help'] = 'Elija una de las categorías de enlace disponibles';
-$messages['error_adding_link'] = 'Se produjo un error añadiendo el enlace. Verifique los datos y vuélvalo a intentar';
-$messages['error_invalid_url'] = 'La dirección no es correcta';
-$messages['link_added_ok'] = 'El enlace "%s" fue añadido correctamente';
+$messages['link_category_help'] = 'Elija una de las categorías de enlace disponibles';
+$messages['error_adding_link'] = 'Se produjo un error añadiendo el enlace. Verifique los datos y vuélvalo a intentar';
+$messages['error_invalid_url'] = 'La dirección no es correcta';
+$messages['link_added_ok'] = 'El enlace "%s" fue añadido correctamente';
 
 // update link
-$messages['error_updating_link'] = 'Se produjo un error actualizando el enlace. Verifique los datos y vuélvalo a intentar';
+$messages['error_updating_link'] = 'Se produjo un error actualizando el enlace. Verifique los datos y vuélvalo a intentar';
 $messages['error_fetching_link'] = 'Se produjo un error al cargar en enlace';
 $messages['link_updated_ok'] = 'El enlace "%s" fue actualizado correctamente';
 
 // link categories
 $messages['links'] = 'Enlaces';
-$messages['error_invalid_link_category_id'] = 'El identificador de la categoría de enlaces no es correcto o no se eligió ninguna categoría de enlaces';
-$messages['error_links_in_link_category'] = 'Hay algunos enlaces clasificados bajo la categoría "%s". Modifique los enlaces primero y vuélvalo a intentar.';
-$messages['error_removing_link_category'] = 'Hubo un error eliminando la categoría de enlaces "%s"';
-$messages['link_category_deleted_ok'] = 'La categoría de enlaces "%s" fue eliminada correctamente';
-$messages['link_categories_deleted_ok'] = '%s categorías de enlaces fueron eliminadas correctamente';
-$messages['error_removing_link_category2'] = 'Hubo un error eliminando la categoría de enlaces cuyo identificador es "%s"';
+$messages['error_invalid_link_category_id'] = 'El identificador de la categoría de enlaces no es correcto o no se eligió ninguna categoría de enlaces';
+$messages['error_links_in_link_category'] = 'Hay algunos enlaces clasificados bajo la categoría "%s". Modifique los enlaces primero y vuélvalo a intentar.';
+$messages['error_removing_link_category'] = 'Hubo un error eliminando la categoría de enlaces "%s"';
+$messages['link_category_deleted_ok'] = 'La categoría de enlaces "%s" fue eliminada correctamente';
+$messages['link_categories_deleted_ok'] = '%s categorías de enlaces fueron eliminadas correctamente';
+$messages['error_removing_link_category2'] = 'Hubo un error eliminando la categoría de enlaces cuyo identificador es "%s"';
 
 // new link category
-$messages['link_category_name_help'] = 'Nombre dado a esta categoría de enlaces';
-$messages['error_adding_link_category'] = 'Hubo un error añadiendo la nueva categoría de enlaces';
-$messages['link_category_added_ok'] = 'La categoría de enlaces "%s" fue añadida correctamente';
+$messages['link_category_name_help'] = 'Nombre dado a esta categoría de enlaces';
+$messages['error_adding_link_category'] = 'Hubo un error añadiendo la nueva categoría de enlaces';
+$messages['link_category_added_ok'] = 'La categoría de enlaces "%s" fue añadida correctamente';
 
 // edit link category
-$messages['error_updating_link_category'] = 'Hubo un error actualizando la categoría de enlace. Compruebe los datos y vuélvalo a intentar.';
-$messages['link_category_updated_ok'] = 'La categoría de enlaces "%s" fue actualizada correctamente';
-$messages['error_fetching_link_category'] = 'Se produjo un error cargando la categoría de enlaces';
+$messages['error_updating_link_category'] = 'Hubo un error actualizando la categoría de enlace. Compruebe los datos y vuélvalo a intentar.';
+$messages['link_category_updated_ok'] = 'La categoría de enlaces "%s" fue actualizada correctamente';
+$messages['error_fetching_link_category'] = 'Se produjo un error cargando la categoría de enlaces';
 
 // custom fields
 $messages['type'] = 'Tipo';
@@ -279,12 +279,12 @@
 $messages['error_incorrect_field_id'] = 'El identificador del campo no es correcto';
 
 // new custom field
-$messages['field_name_help'] = 'Nombre del campo que será usado para obtener su valor en los artículos';
-$messages['field_description_help'] = 'Descripción del campo que será mostrada al añadir o editar un artículo';
+$messages['field_name_help'] = 'Nombre del campo que será usado para obtener su valor en los artículos';
+$messages['field_description_help'] = 'Descripción del campo que será mostrada al añadir o editar un artículo';
 $messages['field_type_help'] = 'Elija uno de los siguientes tipos de campo';
-$messages['field_hidden_help'] = 'Si el campo está marcado como oculto, no será mostrado en las pantallas de edición o nuevo artículo. Este atributo es usado casi únicamente por plugins que añaden nuevos campos para su uso';
-$messages['error_adding_custom_field'] = 'Hubo un error añadiendo el campo. Compruebe los datos y vuélvalo a intentar';
-$messages['custom_field_added_ok'] = 'El campo "%s" fue añadido correctamente';
+$messages['field_hidden_help'] = 'Si el campo está marcado como oculto, no será mostrado en las pantallas de edición o nuevo artículo. Este atributo es usado casi únicamente por plugins que añaden nuevos campos para su uso';
+$messages['error_adding_custom_field'] = 'Hubo un error añadiendo el campo. Compruebe los datos y vuélvalo a intentar';
+$messages['custom_field_added_ok'] = 'El campo "%s" fue añadido correctamente';
 $messages['text_field'] = 'Campo de texto';
 $messages['text_area'] = 'Caja de texto';
 $messages['checkbox'] = 'Casilla';
@@ -292,65 +292,65 @@
 
 // edit custom field
 $messages['error_fetching_custom_field'] = 'Hubo un error cargando el campo';
-$messages['error_updating_custom_field'] = 'Hubo un error actualizando el capmo. Compruebe los datos y vuélvalo a intentar';
+$messages['error_updating_custom_field'] = 'Hubo un error actualizando el capmo. Compruebe los datos y vuélvalo a intentar';
 $messages['custom_field_updated_ok'] = 'El campo "%s" fue actualizado correctamente';
 
 // resources
-$messages['root_album'] = 'Álbum raíz';
-$messages['num_resources'] = 'Número de ficheros';
-$messages['total_size'] = 'Tamaño total';
-$messages['album'] = 'Álbum';
-$messages['error_incorrect_album_id'] = 'El identificador del álbum no es válido';
-$messages['error_base_storage_folder_missing_or_unreadable'] = 'No fue posible crear los directorios necesarios donde los ficheros van a ser guardados. Esto puede ser debido a varias razones, como por ejemplo que el "safe mode" esté activado en su configuración del PHP or que el usuario usado para ejecutar PHP no tenga suficientes permisos. También puede intentar crear los siguientes directorios manualmente: <br/><br/>%s<br/><br/>Si los directorios ya existen, asegúrese de que pueden ser leídos y escritos por el usuario que se está usando para ejecutar el servidor de web/PHP';
+$messages['root_album'] = 'Álbum raíz';
+$messages['num_resources'] = 'Número de ficheros';
+$messages['total_size'] = 'Tamaño total';
+$messages['album'] = 'Álbum';
+$messages['error_incorrect_album_id'] = 'El identificador del álbum no es válido';
+$messages['error_base_storage_folder_missing_or_unreadable'] = 'No fue posible crear los directorios necesarios donde los ficheros van a ser guardados. Esto puede ser debido a varias razones, como por ejemplo que el "safe mode" esté activado en su configuración del PHP or que el usuario usado para ejecutar PHP no tenga suficientes permisos. También puede intentar crear los siguientes directorios manualmente: <br/><br/>%s<br/><br/>Si los directorios ya existen, asegúrese de que pueden ser leídos y escritos por el usuario que se está usando para ejecutar el servidor de web/PHP';
 $messages['items_deleted_ok'] = '%s ficheros eliminados correctamente';
-$messages['error_album_has_children'] = 'El álbum "%s" tiene subálbums. Modifique primero los subálbums y vuélvalo a intentar';
+$messages['error_album_has_children'] = 'El álbum "%s" tiene subálbums. Modifique primero los subálbums y vuélvalo a intentar';
 $messages['item_deleted_ok'] = 'El fichero "%s" fue borrado correctamente';
 $messages['error_deleting_album'] = 'Hubo un error eliminando el campo "%s"';
 $messages['error_deleting_album2'] = 'Hubo un error eliminando el campo cuyo identificador es "%s"';
 $messages['error_deleting_resource'] = 'Hubo un error eliminando el fichero "%s"';
 $messages['error_deleting_resource2'] = 'Hubo un error eliminando el fichero cuyo identificador es "%s"';
-$messages['error_no_resources_selected'] = 'No se seleccionaron ficheros o álbums para eliminar';
+$messages['error_no_resources_selected'] = 'No se seleccionaron ficheros o álbums para eliminar';
 $messages['resource_deleted_ok'] = 'El fichero "%s" fue eliminado correctamente';
-$messages['album_deleted_ok'] = 'El álbum "%s" fue eliminado correctamente';
-$messages['add_resource'] = 'Añadir fichero';
-$messages['add_resource_preview'] = 'Añadir vista previa';
-$messages['add_resource_medium'] = 'Añadir vista mediana';
-$messages['add_album'] = 'Añadir álbum';
+$messages['album_deleted_ok'] = 'El álbum "%s" fue eliminado correctamente';
+$messages['add_resource'] = 'Añadir fichero';
+$messages['add_resource_preview'] = 'Añadir vista previa';
+$messages['add_resource_medium'] = 'Añadir vista mediana';
+$messages['add_album'] = 'Añadir álbum';
 
 // new album
-$messages['album_name_help'] = 'Nombre del nuevo álbum';
+$messages['album_name_help'] = 'Nombre del nuevo álbum';
 $messages['parent'] = 'Padre';
-$messages['no_parent'] = 'Álbum raíz';
-$messages['parent_album_help'] = 'Álbums pueden contener subálbums de forma que pueda organizar sus contenidos mejor';
-$messages['album_description_help'] = 'Descripción de los contenidos del álbum';
-$messages['error_adding_album'] = 'Hubo un error añadiendo el nuevo álbum. Compruebe los datos y vuélvalo a intentar';
-$messages['album_added_ok'] = 'El álbum "%s" fue añadido correctamente';
+$messages['no_parent'] = 'Álbum raíz';
+$messages['parent_album_help'] = 'Álbums pueden contener subálbums de forma que pueda organizar sus contenidos mejor';
+$messages['album_description_help'] = 'Descripción de los contenidos del álbum';
+$messages['error_adding_album'] = 'Hubo un error añadiendo el nuevo álbum. Compruebe los datos y vuélvalo a intentar';
+$messages['album_added_ok'] = 'El álbum "%s" fue añadido correctamente';
 
 // edit album
-$messages['error_incorrect_album_id'] = 'El identificador del álbum no es correcto';
-$messages['error_fetching_album'] = 'Hubo un error cargando el álbum';
-$messages['error_updating_album'] = 'Hubo un error actualizando el álbum. Compruebe los datos y vuélvalo a intentar';
-$messages['album_updated_ok'] = 'El álbum "%s" fue actualizado correctamente';
-$messages['show_album_help'] = 'Si esta casilla está desactivada, el álbum y los ficheros que estén incluídos en él no aparecerán en la parte pública del blog';
+$messages['error_incorrect_album_id'] = 'El identificador del álbum no es correcto';
+$messages['error_fetching_album'] = 'Hubo un error cargando el álbum';
+$messages['error_updating_album'] = 'Hubo un error actualizando el álbum. Compruebe los datos y vuélvalo a intentar';
+$messages['album_updated_ok'] = 'El álbum "%s" fue actualizado correctamente';
+$messages['show_album_help'] = 'Si esta casilla está desactivada, el álbum y los ficheros que estén incluídos en él no aparecerán en la parte pública del blog';
 
 // new resource
 $messages['file'] = 'Fichero';
-$messages['resource_file_help'] = 'Fichero que desea añadir. Use el enlace "Añadir Otro" para añadir más de un fichero al mismo tiempo (aunque tardará más rato en terminar la operación)';
-$messages['add_field'] = 'Añadir otro';
-$messages['resource_description_help'] = 'Descripción sobre los contenidos del fichero';
-$messages['resource_album_help'] = 'Seleccione el álbum al que se añadirá el fichero';
-$messages['error_no_resource_uploaded'] = 'No seleccionó ningún fichero para añadir';
-$messages['resource_added_ok'] = 'El fichero "%s" fue añadido correctamente';
-$messages['error_resource_forbidden_extension'] = 'El fichero no fue añadido porque es de un tipo no permitido por el administrador';
-$messages['error_resource_too_big'] = 'El fichero no fue añadido porque es demasiado grande';
-$messages['error_uploads_disabled'] = 'El fichero no fue añadido porque la posibilidad de añadir ficheros ha sido desactivada por el administrador';
-$messages['error_quota_exceeded'] = 'El fichero no fue añadido porque se ha superado el tamaño máximo total de ficheros permitido para nuestra bitácora';
-$messages['error_adding_resource'] = 'Hubo un error añadiendo el fichero';
+$messages['resource_file_help'] = 'Fichero que desea añadir. Use el enlace "Añadir Otro" para añadir más de un fichero al mismo tiempo (aunque tardará más rato en terminar la operación)';
+$messages['add_field'] = 'Añadir otro';
+$messages['resource_description_help'] = 'Descripción sobre los contenidos del fichero';
+$messages['resource_album_help'] = 'Seleccione el álbum al que se añadirá el fichero';
+$messages['error_no_resource_uploaded'] = 'No seleccionó ningún fichero para añadir';
+$messages['resource_added_ok'] = 'El fichero "%s" fue añadido correctamente';
+$messages['error_resource_forbidden_extension'] = 'El fichero no fue añadido porque es de un tipo no permitido por el administrador';
+$messages['error_resource_too_big'] = 'El fichero no fue añadido porque es demasiado grande';
+$messages['error_uploads_disabled'] = 'El fichero no fue añadido porque la posibilidad de añadir ficheros ha sido desactivada por el administrador';
+$messages['error_quota_exceeded'] = 'El fichero no fue añadido porque se ha superado el tamaño máximo total de ficheros permitido para nuestra bitácora';
+$messages['error_adding_resource'] = 'Hubo un error añadiendo el fichero';
 
 // edit resource
 $messages['editResource'] = 'Editar fichero';
-$messages['resource_information_help'] = 'Información sobre el fichero';
-$messages['information'] = 'Información';
+$messages['resource_information_help'] = 'Información sobre el fichero';
+$messages['information'] = 'Información';
 $messages['thumbnail_format'] = 'Formato de la vista previa';
 $messages['regenerate_preview'] = 'Regenerar vista previa';
 $messages['error_fetching_resource'] = 'Hubo un error cargando el fichero';
@@ -358,68 +358,68 @@
 $messages['resource_updated_ok'] = 'El fichero "%s" fue actualizado correctamente';
 
 // blog settings
-$messages['blog_link'] = 'Dirección';
-$messages['blog_link_help'] = 'Enlace permanente a esta bitácora';
-$messages['blog_name_help'] = 'Título de esta bitácora';
-$messages['blog_description_help'] = 'Descripción de los contenidos de esta bitácora';
+$messages['blog_link'] = 'Dirección';
+$messages['blog_link_help'] = 'Enlace permanente a esta bitácora';
+$messages['blog_name_help'] = 'Título de esta bitácora';
+$messages['blog_description_help'] = 'Descripción de los contenidos de esta bitácora';
 $messages['language'] = 'Idioma';
-$messages['blog_language_help'] = 'Idioma usado para mostrar los textos de tanto la parte pública como la parte privada de la bitácora';
-$messages['max_main_page_items'] = 'Artículos mostrados en la página principal';
-$messages['max_main_page_items_help'] = 'Máximo número de artículos que deben ser mostrados en la página principal de la bitácora';
-$messages['max_recent_items'] = 'Número de artículos recientes';
-$messages['max_recent_items_help'] = 'Máximo número de artículos recientes que deben ser mostrados';
+$messages['blog_language_help'] = 'Idioma usado para mostrar los textos de tanto la parte pública como la parte privada de la bitácora';
+$messages['max_main_page_items'] = 'Artículos mostrados en la página principal';
+$messages['max_main_page_items_help'] = 'Máximo número de artículos que deben ser mostrados en la página principal de la bitácora';
+$messages['max_recent_items'] = 'Número de artículos recientes';
+$messages['max_recent_items_help'] = 'Máximo número de artículos recientes que deben ser mostrados';
 $messages['template'] = 'Plantilla';
 $messages['choose'] = 'Elegir';
-$messages['blog_template_help'] = 'Plantilla que será usada para mostrar los contenidos de la bitácora. Esta lista incluye las plantillas globales además de las plantillas que han sido instaladas exclusivamente para esta bitácora';
-$messages['use_read_more'] = 'Añadir el enlace "Más..." a los artículos';
-$messages['use_read_more_help'] = 'Si se activa, sólo el texto que se introdució en la caja de texto marcada como "Texto" en la página de edición de artículos se mostrará en la página principal y se añadirá un enlace titulado "Más..." al final del texto. El resto del artículo se mostrará en la página propia del artículo. Si se desactiva, el artículo entero se mostrará siempre en la página principal';
-$messages['enable_wysiwyg'] = 'Activar el editor visual de artículos';
-$messages['enable_wysiwyg_help'] = 'Activa el editor visual de código HTML, que muestra el contenido del artículo tal cual aparecerá en la bitácora. Esta funcionalidad requiere Internet Explorer 5.5 o Mozilla 1.3 o superiores';
+$messages['blog_template_help'] = 'Plantilla que será usada para mostrar los contenidos de la bitácora. Esta lista incluye las plantillas globales además de las plantillas que han sido instaladas exclusivamente para esta bitácora';
+$messages['use_read_more'] = 'Añadir el enlace "Más..." a los artículos';
+$messages['use_read_more_help'] = 'Si se activa, sólo el texto que se introdució en la caja de texto marcada como "Texto" en la página de edición de artículos se mostrará en la página principal y se añadirá un enlace titulado "Más..." al final del texto. El resto del artículo se mostrará en la página propia del artículo. Si se desactiva, el artículo entero se mostrará siempre en la página principal';
+$messages['enable_wysiwyg'] = 'Activar el editor visual de artículos';
+$messages['enable_wysiwyg_help'] = 'Activa el editor visual de código HTML, que muestra el contenido del artículo tal cual aparecerá en la bitácora. Esta funcionalidad requiere Internet Explorer 5.5 o Mozilla 1.3 o superiores';
 $messages['enable_comments'] = 'Permitir comentarios por defecto';
-$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['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['comments_order_help'] = 'Orden en que los comentarios de un artículo deben ser mostrados';
 $messages['oldest_first'] = 'Los antiguos primero';
 $messages['newest_first'] = 'Los nuevos primero';
-$messages['categories_order'] = 'Orden de las categorías';
-$messages['categories_order_help'] = 'Orden en que las categorías deben ser mostradas en la página principal';
-$messages['most_recent_updated_first'] = 'Las categorías que se hayan actualizado más recientemente primero';
-$messages['alphabetical_order'] = 'Orden alfabético';
-$messages['reverse_alphabetical_order'] = 'Orden alfabético inverso';
-$messages['most_articles_first'] = 'Las que tengan más artículos primero';
-$messages['link_categories_order'] = 'Orden de las categorías de enlaces';
-$messages['link_categories_order_help'] = 'Orden en que las categorías de enlaces deben ser mostradas en la página principal';
-$messages['most_links_first'] = 'Las que tengan más enlaces primero';
+$messages['categories_order'] = 'Orden de las categorías';
+$messages['categories_order_help'] = 'Orden en que las categorías deben ser mostradas en la página principal';
+$messages['most_recent_updated_first'] = 'Las categorías que se hayan actualizado más recientemente primero';
+$messages['alphabetical_order'] = 'Orden alfabético';
+$messages['reverse_alphabetical_order'] = 'Orden alfabético inverso';
+$messages['most_articles_first'] = 'Las que tengan más artículos primero';
+$messages['link_categories_order'] = 'Orden de las categorías de enlaces';
+$messages['link_categories_order_help'] = 'Orden en que las categorías de enlaces deben ser mostradas en la página principal';
+$messages['most_links_first'] = 'Las que tengan más enlaces primero';
 $messages['most_links_last'] = 'Las que tengan menos enlaces primero';
 $messages['time_offset'] = 'Diferencia horaria';
-$messages['time_offset_help'] = 'Diferencia horaria en número de horas que será añadida dinámicamente a cada fecha y hora mostrada en la bitácora';
+$messages['time_offset_help'] = 'Diferencia horaria en número de horas que será añadida dinámicamente a cada fecha y hora mostrada en la bitácora';
 $messages['close'] = 'Cerrar';
 $messages['select'] = 'Seleccionar';
-$messages['error_updating_settings'] = 'Hubo un error actualizando la configuración de la bitácora. Compruebe los datos y vuélvalo a intentar';
+$messages['error_updating_settings'] = 'Hubo un error actualizando la configuración de la bitácora. Compruebe los datos y vuélvalo a intentar';
 $messages['error_invalid_number'] = 'El valor no es correcto';
 $messages['error_incorrect_time_offset'] = 'El valor de la diferencia horaria no es correcto';
-$messages['blog_settings_updated_ok'] = 'La configuración de la bitácora fue guardada correctamente';
+$messages['blog_settings_updated_ok'] = 'La configuración de la bitácora fue guardada correctamente';
 $messages['hours'] = 'Horas';
 
 // user settings
 $messages['username_help'] = 'Nombre de usuario, no puede ser cambiado';
 $messages['full_name'] = 'Nombre completo';
 $messages['full_name_help'] = 'Nombre completo, opcional';
-$messages['password_help'] = 'Cambie el password y confírmelo, o deje los campos vacíos si no desea hacer ningun cambio.';
+$messages['password_help'] = 'Cambie el password y confírmelo, o deje los campos vacíos si no desea hacer ningun cambio.';
 $messages['confirm_password'] = 'Confirmar el password';
 $messages['email'] = 'Direccion de correo';
-$messages['email_help'] = 'Dirección de correo donde las notificaciones serán enviadas';
-$messages['bio'] = 'Descripción personal';
-$messages['bio_help'] = 'Descripción personal, opcional';
+$messages['email_help'] = 'Dirección de correo donde las notificaciones serán enviadas';
+$messages['bio'] = 'Descripción personal';
+$messages['bio_help'] = 'Descripción personal, opcional';
 $messages['picture'] = 'Foto';
-$messages['user_picture_help'] = 'Puede elegir una foto de las disponibles en esta bitácora como fichero para que sea su foto personal';
+$messages['user_picture_help'] = 'Puede elegir una foto de las disponibles en esta bitácora como fichero para que sea su foto personal';
 $messages['error_invalid_password'] = 'El password no es correcto o por ejemplo, es demasiado corto';
-$messages['error_passwords_dont_match'] = 'El password y la confirmación no son iguales';
-$messages['error_updating_user_settings'] = 'Hubo un error guardando sus datos. Compruebe los datos y vuélvalo a intentar';
+$messages['error_passwords_dont_match'] = 'El password y la confirmación no son iguales';
+$messages['error_updating_user_settings'] = 'Hubo un error guardando sus datos. Compruebe los datos y vuélvalo a intentar';
 $messages['user_settings_updated_ok'] = 'Los datos de usuario fueron guardados correctamente';
 $messages['resource'] = 'Fichero';
 
@@ -429,45 +429,45 @@
 
 // blog users
 $messages['revoke_permissions'] = 'Quitar permisos';
-$messages['error_no_users_selected'] = 'No se seleccionó ningun usuario';
-$messages['user_removed_from_blog_ok'] = 'El usuario "%s" ya no tiene permisos para acceder a esta bitácora';
-$messages['users_removed_from_blog_ok'] = '%s usuarios ya no tienen acceso a esta bitácora';
-$messages['error_removing_user_from_blog'] = 'Hubo un error eliminando el acceso a esta bitácora del usuario "%s"';
-$messages['error_removing_user_from_blog2'] = 'Hubo un error eliminando el acceso a esta bitácora del usuario cuyo identificador es "%s"';
+$messages['error_no_users_selected'] = 'No se seleccionó ningun usuario';
+$messages['user_removed_from_blog_ok'] = 'El usuario "%s" ya no tiene permisos para acceder a esta bitácora';
+$messages['users_removed_from_blog_ok'] = '%s usuarios ya no tienen acceso a esta bitácora';
+$messages['error_removing_user_from_blog'] = 'Hubo un error eliminando el acceso a esta bitácora del usuario "%s"';
+$messages['error_removing_user_from_blog2'] = 'Hubo un error eliminando el acceso a esta bitácora del usuario cuyo identificador es "%s"';
 
 // new blog user
-$messages['new_blog_username_help'] = 'Nombre del usuario al que se quiere dar acceso a esta bitácora.';
-$messages['send_notification'] = 'Enviar notificación';
-$messages['send_user_notification_help'] = 'Enviar un mensaje de notificación a este usuario';
+$messages['new_blog_username_help'] = 'Nombre del usuario al que se quiere dar acceso a esta bitácora.';
+$messages['send_notification'] = 'Enviar notificación';
+$messages['send_user_notification_help'] = 'Enviar un mensaje de notificación a este usuario';
 $messages['notification_text'] = 'Texto';
-$messages['notification_text_help'] = 'Texto que será incluido en la notificación enviada a este usuario';
-$messages['error_adding_user'] = 'Hubo un error dando acceso al usuario. Compruebe los datos y vuélvalo a intentar';
-$messages['error_empty_text'] = 'El texto de la notificación no puede estar vacío';
-$messages['error_invalid_user'] = 'El usuario "%s" no es válido o no existe';
-$messages['user_added_to_blog_ok'] = 'El usuario "%s" ya puede acceder a esta bitácora';
+$messages['notification_text_help'] = 'Texto que será incluido en la notificación enviada a este usuario';
+$messages['error_adding_user'] = 'Hubo un error dando acceso al usuario. Compruebe los datos y vuélvalo a intentar';
+$messages['error_empty_text'] = 'El texto de la notificación no puede estar vacío';
+$messages['error_invalid_user'] = 'El usuario "%s" no es válido o no existe';
+$messages['user_added_to_blog_ok'] = 'El usuario "%s" ya puede acceder a esta bitácora';
 
 // blog templates
 $messages['error_no_templates_selected'] = 'No se selecciaron plantillas';
-$messages['error_template_is_current'] = 'La plantilla "%s" no se puede eliminar porque es la que está usando la bitácora';
+$messages['error_template_is_current'] = 'La plantilla "%s" no se puede eliminar porque es la que está usando la bitácora';
 $messages['error_removing_template'] = 'Hubo un error borrando la plantilla "%s"';
 $messages['template_removed_ok'] = 'La plantilla "%s" fue eliminada correctamente';
 $messages['templates_removed_ok'] = '%s plantillas fueron eliminadas correctamente';
 
 // new blog template
-$messages['template_installed_ok'] = 'La plantilla "%s" fue añadida correctamente';
-$messages['error_installing_template'] = 'Hubo un error añadiendo la plantilla "%s"';
-$messages['error_missing_base_files'] = 'La plantilla no pudo ser añadida porque algunos de los ficheros básicos de la plantilla no están disponibles';
-$messages['error_add_template_disabled'] = 'No se pueden añadir nuevas plantillas porque esta posibilidad ha sido desactivada por el administrador';
-$messages['error_must_upload_file'] = 'No se envió ningun fichero con datos de una plantilla';
+$messages['template_installed_ok'] = 'La plantilla "%s" fue añadida correctamente';
+$messages['error_installing_template'] = 'Hubo un error añadiendo la plantilla "%s"';
+$messages['error_missing_base_files'] = 'La plantilla no pudo ser añadida porque algunos de los ficheros básicos de la plantilla no están disponibles';
+$messages['error_add_template_disabled'] = 'No se pueden añadir nuevas plantillas porque esta posibilidad ha sido desactivada por el administrador';
+$messages['error_must_upload_file'] = 'No se envió ningun fichero con datos de una plantilla';
 $messages['error_uploads_disabled'] = 'La posibilidad de enviar ficheros al servidor ha sido desactivada por el administrador';
 $messages['error_no_new_templates_found'] = 'No se encontraron nuevas plantillas';
 $messages['error_template_not_inside_folder'] = 'Los ficheros de la plantilla se deben guardar dentro de un directorio cuyo nombre debe ser el mismo que el de la plantilla';
 $messages['error_unpacking'] = 'Hubo un error descomprimiendo el fichero de la plantilla';
-$messages['error_forbidden_extensions'] = 'Algunos de los ficheros de la plantilla contenían una extensión no permitida en este sitio';
+$messages['error_forbidden_extensions'] = 'Algunos de los ficheros de la plantilla contenían una extensión no permitida en este sitio';
 $messages['error_creating_working_folder'] = 'Hubo un error creando un directorio temporal para descomprimir la plantilla';
 $messages['error_checking_template'] = 'Hubo un error comprobando que la plantilla es correcta: %s';
 $messages['template_package'] = 'Plantilla';
-$messages['blog_template_package_help']  = 'Use este formulario para enviar nuevas plantillas al servidor. Éstas plantillas solo estarán disponibles para esta bitácora. Si no es posible enviar ficheros, use por ejemplo un cliente de FTP para subir los ficheros y colóquelos en el directorio <b>%s</b> y luego use el botón "<b>Actualizar plantillas</b>" para añadir cualquier plantilla nueva. LifeType comprobará el contenido del directorio y añadirá automáticamente todas las plantillas nuevas';
+$messages['blog_template_package_help']  = 'Use este formulario para enviar nuevas plantillas al servidor. Éstas plantillas solo estarán disponibles para esta bitácora. Si no es posible enviar ficheros, use por ejemplo un cliente de FTP para subir los ficheros y colóquelos en el directorio <b>%s</b> y luego use el botón "<b>Actualizar plantillas</b>" para añadir cualquier plantilla nueva. LifeType comprobará el contenido del directorio y añadirá automáticamente todas las plantillas nuevas';
 $messages['scan_templates'] = 'Actualizar plantillas';
 
 // site users
@@ -481,18 +481,18 @@
 $messages['users_deleted_ok'] = '%s usuarios fueron desactivados correctamente';
 
 // create user
-$messages['user_added_ok'] = 'El usuario "%s" fue añadido correctamente';
+$messages['user_added_ok'] = 'El usuario "%s" fue añadido correctamente';
 $messages['user_status_help'] = 'Estado del usuario';
-$messages['user_blog_help'] = 'Bitácora a la que este usuario será asignado inicialmente';
+$messages['user_blog_help'] = 'Bitácora a la que este usuario será asignado inicialmente';
 $messages['none'] = 'Ninguno';
 
 // edit user
 $messages['error_invalid_user'] = 'El nombre de usuario no es correcto o no existe';
-$messages['error_updating_user'] = 'Hubo un error actualizando el usuario. Compruebe los datos y vuélvalo a intentar';
-$messages['blogs'] = 'Bitácoras';
-$messages['user_blogs_help'] = 'Bitácoras a las que el usuario tiene acceso como usuario o como propietario de la bitácora';
+$messages['error_updating_user'] = 'Hubo un error actualizando el usuario. Compruebe los datos y vuélvalo a intentar';
+$messages['blogs'] = 'Bitácoras';
+$messages['user_blogs_help'] = 'Bitácoras a las que el usuario tiene acceso como usuario o como propietario de la bitácora';
 $messages['site_admin'] = 'Administrador';
-$messages['site_admin_help'] = 'Dar permisos de administrador a este usuario de forma que pueda acceder a la sección de "Administración"';
+$messages['site_admin_help'] = 'Dar permisos de administrador a este usuario de forma que pueda acceder a la sección de "Administración"';
 $messages['user_updated_ok'] = 'El usuario "%s" fue actualizado correctamente';
 
 // site blogs
@@ -503,201 +503,201 @@
 $messages['owner'] = 'Propietario';
 $messages['quota'] = 'Cuota';
 $messages['bytes'] = 'bytes';
-$messages['error_no_blogs_selected'] = 'No se seleccionaron bitácoras para desactivar';
-$messages['error_blog_is_default_blog'] = 'La bitácora "%s" no se puede desactivar porque es la bitácora por defecto';
-$messages['blog_deleted_ok'] = 'La bitácora "%s" fue desactivada correctamente';
+$messages['error_no_blogs_selected'] = 'No se seleccionaron bitácoras para desactivar';
+$messages['error_blog_is_default_blog'] = 'La bitácora "%s" no se puede desactivar porque es la bitácora por defecto';
+$messages['blog_deleted_ok'] = 'La bitácora "%s" fue desactivada correctamente';
 $messages['blogs_deleted_ok'] = '%s fueron desactivadas correctamente';
-$messages['error_deleting_blog'] = 'Hubo un error desactivando la bitácora "%s"';
-$messages['error_deleting_blog2'] = 'Hubo un error desactivando la bitácora cuyo identificador es "%s"';
+$messages['error_deleting_blog'] = 'Hubo un error desactivando la bitácora "%s"';
+$messages['error_deleting_blog2'] = 'Hubo un error desactivando la bitácora cuyo identificador es "%s"';
 
 // create blog
-$messages['error_adding_blog'] = 'Hubo un error añadiendo la bitácora. Compruebe los datos y vuélvalo a intentar';
-$messages['blog_added_ok'] = 'La bitácora "%s" fue añadida correctamente';
+$messages['error_adding_blog'] = 'Hubo un error añadiendo la bitácora. Compruebe los datos y vuélvalo a intentar';
+$messages['blog_added_ok'] = 'La bitácora "%s" fue añadida correctamente';
 
 // edit blog
-$messages['blog_status_help'] = 'Estado de la bitácora';
-$messages['blog_owner_help'] = 'Propietario de la bitácora, que tendrá control sobre su configuración';
+$messages['blog_status_help'] = 'Estado de la bitácora';
+$messages['blog_owner_help'] = 'Propietario de la bitácora, que tendrá control sobre su configuración';
 $messages['users'] = 'Usuarios';
 $messages['blog_quota_help'] = 'Cuota de ficheros en bytes. Use un valor de 0 para otorgar espacio ilimitado';
-$messages['blog_users_help'] = 'Usuarios que pueden acceder a esta bitácora, pero sin acceso a su configuración. Asigne los usuarios de la izquierda a la lista de la derecha para añadir nuevos usuarios, o viceversa para eliminar usuarios existentes';
-$messages['edit_blog_settings_updated_ok'] = 'La bitácora "%s" fue actualizada correctamente';
-$messages['error_updating_blog_settings'] = 'Hubo un error actualizando la bitácora "%s"';
-$messages['error_incorrect_blog_owner'] = 'El usuario seleccionado como propietario de la bitácora no es correcto';
-$messages['error_fetching_blog'] = 'Hubo un error cargando la bitácora';
-$messages['error_updating_blog_settings2'] = 'Hubo un error actualizando la bitácora. Compruebe los datos e inténtelo de nuevo';
-$messages['add_or_remove'] = 'Añadir o eliminar usuarios';
+$messages['blog_users_help'] = 'Usuarios que pueden acceder a esta bitácora, pero sin acceso a su configuración. Asigne los usuarios de la izquierda a la lista de la derecha para añadir nuevos usuarios, o viceversa para eliminar usuarios existentes';
+$messages['edit_blog_settings_updated_ok'] = 'La bitácora "%s" fue actualizada correctamente';
+$messages['error_updating_blog_settings'] = 'Hubo un error actualizando la bitácora "%s"';
+$messages['error_incorrect_blog_owner'] = 'El usuario seleccionado como propietario de la bitácora no es correcto';
+$messages['error_fetching_blog'] = 'Hubo un error cargando la bitácora';
+$messages['error_updating_blog_settings2'] = 'Hubo un error actualizando la bitácora. Compruebe los datos e inténtelo de nuevo';
+$messages['add_or_remove'] = 'Añadir o eliminar usuarios';
 
 // site locales
-$messages['locale'] = 'Traducción';
-$messages['locale_encoding'] = 'Condificación';
-$messages['locale_deleted_ok'] = 'La traducción "%s" fue eliminada correctamente';
+$messages['locale'] = 'Traducción';
+$messages['locale_encoding'] = 'Condificación';
+$messages['locale_deleted_ok'] = 'La traducción "%s" fue eliminada correctamente';
 $messages['error_no_locales_selected'] = 'No se seleccionaron traducciones para eliminar';
-$messages['error_deleting_only_locale'] = 'La traducción no pudo ser eliminada porque es la única que queda en el sistema';
+$messages['error_deleting_only_locale'] = 'La traducción no pudo ser eliminada porque es la única que queda en el sistema';
 $messages['locales_deleted_ok']= '%s traducciones fueron eliminadas correctamente';
-$messages['error_deleting_locale'] = 'Hubo un error borrando la traducción "%s"';
-$messages['error_locale_is_default'] = 'La traducción "%s" no pudo ser eliminada porque es la que se está usando por defecto para las nuevas bitácoras';
+$messages['error_deleting_locale'] = 'Hubo un error borrando la traducción "%s"';
+$messages['error_locale_is_default'] = 'La traducción "%s" no pudo ser eliminada porque es la que se está usando por defecto para las nuevas bitácoras';
 
 // add locale
-$messages['error_invalid_locale_file'] = 'El fichero con la traducción no es válido';
+$messages['error_invalid_locale_file'] = 'El fichero con la traducción no es válido';
 $messages['error_no_new_locales_found'] = 'No se encontraron nuevos ficheros con traducciones';
-$messages['locale_added_ok'] = 'La traducción "%s" fue añadida correctamente';
-$messages['error_saving_locale'] = 'Hubo un error guardando la nueva traducción';
+$messages['locale_added_ok'] = 'La traducción "%s" fue añadida correctamente';
+$messages['error_saving_locale'] = 'Hubo un error guardando la nueva traducción';
 $messages['scan_locales'] = 'Actualizar traducciones';
-$messages['add_locale_help'] = 'Use este formulario para añadir nuevas traducciones. Si no es posible enviar ficheros al servidor, suba el fichero al servidor manualmente mediante por ejemplo FTP, guárdelo en el directorio <b>./locales/</b> y use el botón "<b>Actualizar traducciones</b>". LifeType leerá el directorio y añadirá automáticamente cualquier nueva traducción';
+$messages['add_locale_help'] = 'Use este formulario para añadir nuevas traducciones. Si no es posible enviar ficheros al servidor, suba el fichero al servidor manualmente mediante por ejemplo FTP, guárdelo en el directorio <b>./locales/</b> y use el botón "<b>Actualizar traducciones</b>". LifeType leerá el directorio y añadirá automáticamente cualquier nueva traducción';
 
 // site templates
-$messages['error_template_is_default'] = 'La plantilla "%s" no pudo ser eliminada porque es la que se está usando por defecto para nuevas bitácoras';
+$messages['error_template_is_default'] = 'La plantilla "%s" no pudo ser eliminada porque es la que se está usando por defecto para nuevas bitácoras';
 
 // add template
-$messages['global_template_package_help'] = 'Use este formulario para enviar nuevas plantillas al servidor. Éstas plantillas estarán disponibles para todas las bitácoras del servidor. Si no es posible enviar ficheros, use por ejemplo un cliente de FTP para subir los ficheros y colóquelos en el directorio <b>%s</b> y luego use el botón "<b>Actualizar plantillas</b>" para añadir cualquier plantilla nueva. LifeType comprobará el contenido del directorio y añadirá automáticamente todas las plantillas nuevas';
+$messages['global_template_package_help'] = 'Use este formulario para enviar nuevas plantillas al servidor. Éstas plantillas estarán disponibles para todas las bitácoras del servidor. Si no es posible enviar ficheros, use por ejemplo un cliente de FTP para subir los ficheros y colóquelos en el directorio <b>%s</b> y luego use el botón "<b>Actualizar plantillas</b>" para añadir cualquier plantilla nueva. LifeType comprobará el contenido del directorio y añadirá automáticamente todas las plantillas nuevas';
 
 // global settings
-$messages['site_config_saved_ok'] = 'La configuración general fue guardada correctamente';
-$messages['error_saving_site_config'] = 'Hubo un error guardando la configuración general';
+$messages['site_config_saved_ok'] = 'La configuración general fue guardada correctamente';
+$messages['error_saving_site_config'] = 'Hubo un error guardando la configuración general';
 /// general settings
-$messages['help_comments_enabled'] = 'Activar los comentarios en nuevas bitácoras por defecto [Valor por defecto = Sí]';
-$messages['help_beautify_comments_text'] = 'Si se activa, los comentarios enviados por los usuarios serán formateados automáticamente añadiendo párrafos y generando enlaces automáticamente a partir de direcciones [Valor por defecto = Sí]';
-$messages['help_temp_folder'] = 'Carpeta donde el LifeType puede escribir sus ficheros temporales de uso interno. Use una carpeta fuera del árbol de directorios del servidor de web para mayor seguridad [Valor por defecto = ./tmp]';
-$messages['help_base_url'] = 'Dirección base donde el LifeType está instalado';
-$messages['help_subdomains_enabled'] = 'Activar el soporte para subdominios. Vea la sección de la documentación sobre subdominios para más información [Valor por defecto = No]';
-$messages['help_subdomains_base_url'] = 'Cuando los subdominios estan activados, se usará está URL base en lugar de base_url. Use {blogname} para obtener el nombre de la bitácora y {username} para obtener el nombre del usuario, para generar un enlace permanente a la bitácora (p. ej. "http://{blogname}.sudominio.com")';
-$messages['help_include_blog_id_in_url'] = 'Cuando los subdominions están activados conjuntamente con las URLs "normales", esto forzará al LifeType a no incluir el parámetro "blogId". No debería alterar este valor si no sabe lo que está haciendo [Valor por defecto = Sí]';
-$messages['help_script_name'] = 'Configure este parámetro si por alguna razón tiene que renombrar index.php [Valor por defecto = index.php]';
-$messages['help_show_posts_max'] = 'Número máximo de artículos en la página principal para nuevas bitácoras [Valor por defecto = 15]';
-$messages['help_recent_posts_max'] = 'Número máximo de artículos recientes mostrados en la página principal para nuevas bitácoras [Valor por defecto = 10]';
-$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Activar el soporte para XmlHttpRequest de forma que se puedan guardar borradores de artículos sin tener que refrescar la página de edición [Valor por defecto = Sí]';
-$messages['help_locale_folder'] = 'Carpeta donde están guardadas las traducciones. Use una carpeta fuera del árbol de directorios del servidor de web para mayor seguridad [Valor por defecto = ./locale]';
-$messages['help_default_locale'] = 'Idioma por defecto para las nuevas bitácoras [Valor por defecto = en_UK]';
-$messages['help_default_blog_id'] = 'Bitácora por defecto que será mostrada si no especifica una bitácora en particular [Valor por defecto = 1]';
-$messages['help_default_time_offset'] = 'Diferencia horaria por defecto de las nuevas bitácoras [Valor por defecto = 0]';
-$messages['help_html_allowed_tags_in_comments'] = 'Lista de entidades HTML, separadas por espacios en blanco, que están permitidas en los comentarios [Valor por defecto = &lt;a&gt;&lt;i&gt;&lt;br&gt;&lt;br/&gt;&lt;b&gt;]';
-$messages['help_referer_tracker_enabled'] = 'Guardar los "referrers" en la base de datos [Valor por defecto = Sí]';
-$messages['help_show_more_enabled'] = 'Activar el enlace "Más..." por defecto para nuevas bitácoras [Valor por defecto = Sí]';
-$messages['help_update_article_reads'] = 'LifeType actualizará el contador de veces que un artículo ha sido leído si se activa [Valor por defecto = Sí]';
-$messages['help_update_cached_article_reads'] = 'Igual que update_article_reads, pero además se actualizará el contador aunque la caché esté activada [Valor por defecto = Sí]';
-$messages['help_xmlrpc_ping_enabled'] = 'Activar la posibilidad de enviar pings mediante XMLRPC a los sitios que lo soporten [Valor por defecto = Sí]';
-$messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Activar el soporte para pings XMLRPC por defecto en nuevos artículos [Valor por defecto = Sí]';
-$messages['help_xmlrpc_ping_hosts'] = 'URLs de servicios que implementen soporte para pings XMLRPC. Ponga cada dirección en una línea nueva [Valor por defecto = http://rpc.weblogs.com/RPC2]';
-$messages['help_trackback_server_enabled'] = 'Activar el soporte para recibir retroenlaces [Valor por defecto = Sí]';
-$messages['help_htmlarea_enabled'] = 'Activar por defecto el editor visual de artículos para las nuevas bitácoras [Valor por defecto = Sí';
-$messages['help_plugin_manager_enabled'] = 'Activar los plugins [Valor por defecto = Sí]';
-$messages['help_minimum_password_length'] = 'Tamaño mínimo, en carácteres, que un password debe tener [Valor por defecto = 4]';
-$messages['help_xhtml_converter_enabled'] = 'Activa un filtro que intentará convertir el texto de los artículos a XHTML válido automáticamente [Valor por defecto = Sí]';
-$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'LifeType intetará corregir casi todo lo que pueda para asegurar que nuestros artículos sean XHTML válido, aunque activando este modo es posible que se cometan más errores [Valor por defecto = No]';
-$messages['help_session_save_path'] = 'Carpeta donde el LifeType guarda sus sesiones, mediante la función session_save_path() del PHP. Deje este campo vació para usar el valor por defecto del PHP. Si usa otra carpeta que no sea la por defecto, asegúrese de que puede ser escrita por el usuario ejecutando el servidor de web [Valor por defecto = (vacío)]';
+$messages['help_comments_enabled'] = 'Activar los comentarios en nuevas bitácoras por defecto [Valor por defecto = Sí]';
+$messages['help_beautify_comments_text'] = 'Si se activa, los comentarios enviados por los usuarios serán formateados automáticamente añadiendo párrafos y generando enlaces automáticamente a partir de direcciones [Valor por defecto = Sí]';
+$messages['help_temp_folder'] = 'Carpeta donde el LifeType puede escribir sus ficheros temporales de uso interno. Use una carpeta fuera del árbol de directorios del servidor de web para mayor seguridad [Valor por defecto = ./tmp]';
+$messages['help_base_url'] = 'Dirección base donde el LifeType está instalado';
+$messages['help_subdomains_enabled'] = 'Activar el soporte para subdominios. Vea la sección de la documentación sobre subdominios para más información [Valor por defecto = No]';
+$messages['help_subdomains_base_url'] = 'Cuando los subdominios estan activados, se usará está URL base en lugar de base_url. Use {blogname} para obtener el nombre de la bitácora y {username} para obtener el nombre del usuario, para generar un enlace permanente a la bitácora (p. ej. "http://{blogname}.sudominio.com")';
+$messages['help_include_blog_id_in_url'] = 'Cuando los subdominions están activados conjuntamente con las URLs "normales", esto forzará al LifeType a no incluir el parámetro "blogId". No debería alterar este valor si no sabe lo que está haciendo [Valor por defecto = Sí]';
+$messages['help_script_name'] = 'Configure este parámetro si por alguna razón tiene que renombrar index.php [Valor por defecto = index.php]';
+$messages['help_show_posts_max'] = 'Número máximo de artículos en la página principal para nuevas bitácoras [Valor por defecto = 15]';
+$messages['help_recent_posts_max'] = 'Número máximo de artículos recientes mostrados en la página principal para nuevas bitácoras [Valor por defecto = 10]';
+$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Activar el soporte para XmlHttpRequest de forma que se puedan guardar borradores de artículos sin tener que refrescar la página de edición [Valor por defecto = Sí]';
+$messages['help_locale_folder'] = 'Carpeta donde están guardadas las traducciones. Use una carpeta fuera del árbol de directorios del servidor de web para mayor seguridad [Valor por defecto = ./locale]';
+$messages['help_default_locale'] = 'Idioma por defecto para las nuevas bitácoras [Valor por defecto = en_UK]';
+$messages['help_default_blog_id'] = 'Bitácora por defecto que será mostrada si no especifica una bitácora en particular [Valor por defecto = 1]';
+$messages['help_default_time_offset'] = 'Diferencia horaria por defecto de las nuevas bitácoras [Valor por defecto = 0]';
+$messages['help_html_allowed_tags_in_comments'] = 'Lista de entidades HTML, separadas por espacios en blanco, que están permitidas en los comentarios [Valor por defecto = &lt;a&gt;&lt;i&gt;&lt;br&gt;&lt;br/&gt;&lt;b&gt;]';
+$messages['help_referer_tracker_enabled'] = 'Guardar los "referrers" en la base de datos [Valor por defecto = Sí]';
+$messages['help_show_more_enabled'] = 'Activar el enlace "Más..." por defecto para nuevas bitácoras [Valor por defecto = Sí]';
+$messages['help_update_article_reads'] = 'LifeType actualizará el contador de veces que un artículo ha sido leído si se activa [Valor por defecto = Sí]';
+$messages['help_update_cached_article_reads'] = 'Igual que update_article_reads, pero además se actualizará el contador aunque la caché esté activada [Valor por defecto = Sí]';
+$messages['help_xmlrpc_ping_enabled'] = 'Activar la posibilidad de enviar pings mediante XMLRPC a los sitios que lo soporten [Valor por defecto = Sí]';
+$messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Activar el soporte para pings XMLRPC por defecto en nuevos artículos [Valor por defecto = Sí]';
+$messages['help_xmlrpc_ping_hosts'] = 'URLs de servicios que implementen soporte para pings XMLRPC. Ponga cada dirección en una línea nueva [Valor por defecto = http://rpc.weblogs.com/RPC2]';
+$messages['help_trackback_server_enabled'] = 'Activar el soporte para recibir retroenlaces [Valor por defecto = Sí]';
+$messages['help_htmlarea_enabled'] = 'Activar por defecto el editor visual de artículos para las nuevas bitácoras [Valor por defecto = Sí';
+$messages['help_plugin_manager_enabled'] = 'Activar los plugins [Valor por defecto = Sí]';
+$messages['help_minimum_password_length'] = 'Tamaño mínimo, en carácteres, que un password debe tener [Valor por defecto = 4]';
+$messages['help_xhtml_converter_enabled'] = 'Activa un filtro que intentará convertir el texto de los artículos a XHTML válido automáticamente [Valor por defecto = Sí]';
+$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'LifeType intetará corregir casi todo lo que pueda para asegurar que nuestros artículos sean XHTML válido, aunque activando este modo es posible que se cometan más errores [Valor por defecto = No]';
+$messages['help_session_save_path'] = 'Carpeta donde el LifeType guarda sus sesiones, mediante la función session_save_path() del PHP. Deje este campo vació para usar el valor por defecto del PHP. Si usa otra carpeta que no sea la por defecto, asegúrese de que puede ser escrita por el usuario ejecutando el servidor de web [Valor por defecto = (vacío)]';
 // summary settings
-$messages['help_summary_page_show_max'] = 'Número de artículos que se mostrarán en el portal. Este parámetro controla todas las listas del portal (artículos más recientes, bitácoras más activas, etc) [Valor por defecto = 10]';
-$messages['help_summary_items_per_page'] = 'Número de bitácoras por página en la sección "Bitácoras" del portal [Valor por defecto = 25]';
+$messages['help_summary_page_show_max'] = 'Número de artículos que se mostrarán en el portal. Este parámetro controla todas las listas del portal (artículos más recientes, bitácoras más activas, etc) [Valor por defecto = 10]';
+$messages['help_summary_items_per_page'] = 'Número de bitácoras por página en la sección "Bitácoras" del portal [Valor por defecto = 25]';
 $messages['help_forbidden_usernames'] = 'Lista de nombres de usuario que no se pueden registrar [Valor por defecto = admin www blog ftp]';
-$messages['help_force_one_blog_per_email_account'] = 'No permitir más de una bitácora por dirección de correo [Valor por defecto = No]';
-$messages['help_summary_show_agreement'] = 'Mostrar un texto/licencia con el cual los usuarios tienen que estar de acuerdo antes de continuar con el proceso de registro [Valor por defecto = Sí]';
-$messages['help_need_email_confirm_registration'] = 'Enviar un email a los nuevos usuarios con un enlace al que tienen que acceder, para confirmar el registro de una nueva bitácora [Valor por defecto = Sí]';
-$messages['help_summary_disable_registration'] = 'No permitir el registro de nuevas bitácoras [Valor por defecto = No]';
+$messages['help_force_one_blog_per_email_account'] = 'No permitir más de una bitácora por dirección de correo [Valor por defecto = No]';
+$messages['help_summary_show_agreement'] = 'Mostrar un texto/licencia con el cual los usuarios tienen que estar de acuerdo antes de continuar con el proceso de registro [Valor por defecto = Sí]';
+$messages['help_need_email_confirm_registration'] = 'Enviar un email a los nuevos usuarios con un enlace al que tienen que acceder, para confirmar el registro de una nueva bitácora [Valor por defecto = Sí]';
+$messages['help_summary_disable_registration'] = 'No permitir el registro de nuevas bitácoras [Valor por defecto = No]';
 // templates
 $messages['help_template_folder'] = 'Carpeta donde se guardan las plantillas [Valor por defecto = ./templates]';
-$messages['help_default_template'] = 'Plantilla por defecto para las nuevas bitácoras [Valor por defecto = standard]';
-$messages['help_users_can_add_templates'] = 'Permitir que los usuarios añadan sus propias plantillas [Valor por defecto = Sí]';
-$messages['help_template_compile_check'] = 'Si se activa, Smarty comprobará si los ficheros de las plantillas han cambiado y si es así, las recompilará [Valor por defecto = Sí]';
-$messages['help_template_cache_enabled'] = 'Activa la cache de plantillas. Si está activada, las páginas de las bitácoras solo se generarán una vez y se usarán hasta que haya algun cambio. De esta forma, no será necesario traer los datos desde la base de datos cada vez [Valor por defecto = Sí]';
-$messages['help_template_cache_lifetime'] = 'Tiempo en segundos de vida de la caché. Asigne -1 para que la caché nucna expire';
-$messages['help_template_http_cache_enabled'] = 'Activar el soporte para las peticiones condicionales vía HTTP. Si se activa, LifeType tendrá en cuenta el valor de la cabecera HTTP "If-Modified-Since" y solo enviará los datos en caso de que sea necesario para ahorrar ancho de banda [Valor por defecto = Sí]';
-$messages['help_allow_php_code_in_templates'] = 'Permite incluir código PHP en las plantillas de Smarty vía {php}...{/php} [Valor por defecto = No]';
+$messages['help_default_template'] = 'Plantilla por defecto para las nuevas bitácoras [Valor por defecto = standard]';
+$messages['help_users_can_add_templates'] = 'Permitir que los usuarios añadan sus propias plantillas [Valor por defecto = Sí]';
+$messages['help_template_compile_check'] = 'Si se activa, Smarty comprobará si los ficheros de las plantillas han cambiado y si es así, las recompilará [Valor por defecto = Sí]';
+$messages['help_template_cache_enabled'] = 'Activa la cache de plantillas. Si está activada, las páginas de las bitácoras solo se generarán una vez y se usarán hasta que haya algun cambio. De esta forma, no será necesario traer los datos desde la base de datos cada vez [Valor por defecto = Sí]';
+$messages['help_template_cache_lifetime'] = 'Tiempo en segundos de vida de la caché. Asigne -1 para que la caché nucna expire';
+$messages['help_template_http_cache_enabled'] = 'Activar el soporte para las peticiones condicionales vía HTTP. Si se activa, LifeType tendrá en cuenta el valor de la cabecera HTTP "If-Modified-Since" y solo enviará los datos en caso de que sea necesario para ahorrar ancho de banda [Valor por defecto = Sí]';
+$messages['help_allow_php_code_in_templates'] = 'Permite incluir código PHP en las plantillas de Smarty vía {php}...{/php} [Valor por defecto = No]';
 // urls
 $messages['help_request_format_mode'] = 'Elija uno de los siguientes formatos de URLs. Si piensa usar "URLs Personales", configure los formatos de las URLs si es 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 de los enlaces permanentes a artículos cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/{catname}/{year}/{month}/{day}/{postname}$]';
-$messages['help_category_link_format'] = 'Formato de los enlaces a categorías de artículos cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/{catname}$]';
-$messages['help_blog_link_format'] = 'Formato de los enlaces permanentes a bitácoras cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}$]';
-$messages['help_archive_link_format'] = 'Formato de los enlaces a los archivos cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/archives/{year}/?{month}/?{day}]';
-$messages['help_user_posts_link_format'] = 'Formato de los enlaces permanentes a los artículos de un autor en particular cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/user/{username}$]';
-$messages['help_post_trackbacks_link_format'] = 'Formato de los enlaces a las páginas con los retroenlaces recibidos cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/post/trackbacks/{postname}$]';
-$messages['help_template_link_format'] = 'Formato de los enlaces a páginas personales cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/page/{templatename}$]';
-$messages['help_album_link_format'] = 'Formato de los enlaces a álbums de ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/album/{albumname}$]';
-$messages['help_resource_link_format'] = 'Formato de los enlaces a ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/{resourcename}$]';
-$messages['help_resource_preview_link_format'] = 'Formato de los enlaces a las vistas previas de ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview/{resourcename}$]';
-$messages['help_resource_medium_size_preview_link_format'] = 'Formato de los enlaces a las vistas previas de tamaño medio cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview-med/{resourcename}$]';
-$messages['help_resource_download_link_format'] = 'Formato de los enlaces para descargar ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/download/{resourcename}$]';
+$messages['help_permalink_format'] = 'Formato de los enlaces permanentes a artículos cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/{catname}/{year}/{month}/{day}/{postname}$]';
+$messages['help_category_link_format'] = 'Formato de los enlaces a categorías de artículos cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/{catname}$]';
+$messages['help_blog_link_format'] = 'Formato de los enlaces permanentes a bitácoras cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}$]';
+$messages['help_archive_link_format'] = 'Formato de los enlaces a los archivos cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/archives/{year}/?{month}/?{day}]';
+$messages['help_user_posts_link_format'] = 'Formato de los enlaces permanentes a los artículos de un autor en particular cuando las URLs personales están activadas [Valor por defecto = /blog/{blogname}/user/{username}$]';
+$messages['help_post_trackbacks_link_format'] = 'Formato de los enlaces a las páginas con los retroenlaces recibidos cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/post/trackbacks/{postname}$]';
+$messages['help_template_link_format'] = 'Formato de los enlaces a páginas personales cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/page/{templatename}$]';
+$messages['help_album_link_format'] = 'Formato de los enlaces a álbums de ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/album/{albumname}$]';
+$messages['help_resource_link_format'] = 'Formato de los enlaces a ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/{resourcename}$]';
+$messages['help_resource_preview_link_format'] = 'Formato de los enlaces a las vistas previas de ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview/{resourcename}$]';
+$messages['help_resource_medium_size_preview_link_format'] = 'Formato de los enlaces a las vistas previas de tamaño medio cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/preview-med/{resourcename}$]';
+$messages['help_resource_download_link_format'] = 'Formato de los enlaces para descargar ficheros cuando las URLs personales están activadas  [Valor por defecto = /blog/{blogname}/resource/{albumname}/download/{resourcename}$]';
 // email
-$messages['help_check_email_address_validity'] = 'Si se activa, LifeType contactará con el servidor de correo especificado en el registro MX del especificado por el servidor DNS del dominio y comprobará si el usuario es válido [Valor por defecto = No]';
-$messages['help_email_service_enabled'] = 'Activar el soporte para enviar mensajes [Valor por defecto = Sí]';
-$messages['help_post_notification_source_address'] = 'Dirección que aparecerá en el campo "From:" cuando se envíen mensajes a través del LifeType [Valor por defecto = noreply at your.host.com]';
-$messages['help_email_service_type'] = 'Sistema que se usará para enviar mensajes [Valor por defecto = PHP]';
-$messages['help_smtp_host'] = 'Si se desea usar un servidor SMTP para enviar mensajes, especifique aquí el nombre del servidor [Valor por defecto = (vacío)]';
-$messages['help_smtp_port'] = 'Si el servidor de SMTP está configurado en un puerto distinto al 25 [Valor por defecto = (vacío)]';
-$messages['help_smtp_use_authentication'] = 'Active este parámetro si el servidor requiere autentificación  [Valor por defecto = No]';
-$messages['help_smtp_username'] = 'Nombre de usuario en caso de que el servidor SMTP necesite autentificación [Valor por defecto = (vacío)]';
-$messages['help_smtp_password'] = 'Password en caso de que el servidor SMTP necesite autentificación [Valor por defecto = (vacío)]';
+$messages['help_check_email_address_validity'] = 'Si se activa, LifeType contactará con el servidor de correo especificado en el registro MX del especificado por el servidor DNS del dominio y comprobará si el usuario es válido [Valor por defecto = No]';
+$messages['help_email_service_enabled'] = 'Activar el soporte para enviar mensajes [Valor por defecto = Sí]';
+$messages['help_post_notification_source_address'] = 'Dirección que aparecerá en el campo "From:" cuando se envíen mensajes a través del LifeType [Valor por defecto = noreply at your.host.com]';
+$messages['help_email_service_type'] = 'Sistema que se usará para enviar mensajes [Valor por defecto = PHP]';
+$messages['help_smtp_host'] = 'Si se desea usar un servidor SMTP para enviar mensajes, especifique aquí el nombre del servidor [Valor por defecto = (vacío)]';
+$messages['help_smtp_port'] = 'Si el servidor de SMTP está configurado en un puerto distinto al 25 [Valor por defecto = (vacío)]';
+$messages['help_smtp_use_authentication'] = 'Active este parámetro si el servidor requiere autentificación  [Valor por defecto = No]';
+$messages['help_smtp_username'] = 'Nombre de usuario en caso de que el servidor SMTP necesite autentificación [Valor por defecto = (vacío)]';
+$messages['help_smtp_password'] = 'Password en caso de que el servidor SMTP necesite autentificación [Valor por defecto = (vacío)]';
 // helpers
 $messages['help_path_to_tar'] = 'Ruta completa al 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 al binario "gzip", necesario para descomprimir plantillas en formato .tar.gz [Valor por defecto = /bin/gzip]';
 $messages['help_path_to_bz2'] = 'Ruta completa al binario "bz2", necesario para descomprimir plantillas en formato tar.bz2 [Valor por defecto = /usr/bin/bzip2]';
 $messages['help_path_to_unzip'] = 'Ruta completa al binario "unzip", necesario para descomprimir plantillas en formato .zip [Valor por defecto = /usr/bin/unzip]';
-$messages['help_unzip_use_native_version'] = 'Usar una versión nativa en PHP para descomprimir ficheros .zip, de forma que el binario "unzip" no sea necesario [Valor por defecto = No]';
+$messages['help_unzip_use_native_version'] = 'Usar una versión nativa en PHP para descomprimir ficheros .zip, de forma que el binario "unzip" no sea necesario [Valor por defecto = No]';
 // uploads
-$messages['help_uploads_enabled'] = 'Permite a los usuarios enviar ficheros al servidor. Este parámetro afecta por ejemplo a las plantillas personalizadas [Valor por defecto = Sí]';
-$messages['help_maximum_file_upload_size'] = 'Tamaño máximo de los ficheros en bytes. Por razones obvias, este límite nunca será más alto que el valor configurado en la configuración del PHP [Valor por defecto = 2000000]';
-$messages['help_upload_forbidden_files'] = 'Lista separada por espacios en blancos de nombres de ficheros no permitidos en este servidor. Puede usar \'*\' y \'?\' para especificar nombres de ficheros más complejos [Valor por defecto = *.php *.php3 *.php4 *.phtml]';
+$messages['help_uploads_enabled'] = 'Permite a los usuarios enviar ficheros al servidor. Este parámetro afecta por ejemplo a las plantillas personalizadas [Valor por defecto = Sí]';
+$messages['help_maximum_file_upload_size'] = 'Tamaño máximo de los ficheros en bytes. Por razones obvias, este límite nunca será más alto que el valor configurado en la configuración del PHP [Valor por defecto = 2000000]';
+$messages['help_upload_forbidden_files'] = 'Lista separada por espacios en blancos de nombres de ficheros no permitidos en este servidor. Puede usar \'*\' y \'?\' para especificar nombres de ficheros más complejos [Valor por defecto = *.php *.php3 *.php4 *.phtml]';
 // interfaces
-$messages['help_xmlrpc_api_enabled'] = 'Activar el acceso a las bitácoras mediante XMLRPC [Valor por defecto = Sí]';
-$messages['help_rdf_enabled'] = 'Activar la generación de contenidos mediante RSS o Atom [Valor por defecto = Sí]';
+$messages['help_xmlrpc_api_enabled'] = 'Activar el acceso a las bitácoras mediante XMLRPC [Valor por defecto = Sí]';
+$messages['help_rdf_enabled'] = 'Activar la generación de contenidos mediante RSS o Atom [Valor por defecto = Sí]';
 $messages['help_default_rss_profile'] = 'Formato por defecto de los contenidos [Valor por defecto = RSS 1.0]';
 // security
-$messages['security_pipeline_enabled'] = 'Activar el filtro de seguridad, que es necesario para el filtro Bayesiano y por otros plugins que lo usen [Valor por defecto = Sí]';
-$messages['help_maximum_comment_size'] = 'Tamaño máximo de un comentario en bytes, o 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 el filtro Bayesiano anti-spam [Valor por defecto = Sí]';
-$messages['help_baSíian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario sea considerado spam [Valor por defecto = 0.9]';
-$messages['help_baSíian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un comentari no sea considerado spam [Valor por defecto = 0.2]';
-$messages['help_baSíian_filter_min_length_token'] = 'Tamaño mínimo en carácteres de un token [Valor por defecto = 3]';
-$messages['help_baSíian_filter_max_length_token'] = 'Tamaño máximo de un 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é hacer con los comentarios que sean spam. Use "Eliminar" cuando su filtro Bayesiando haya sido entrenado correctamente. Manténgalos en la base de datos si cree que su filtro puede cometer todavía algun error [Valor por defecto = Guardar]';
+$messages['security_pipeline_enabled'] = 'Activar el filtro de seguridad, que es necesario para el filtro Bayesiano y por otros plugins que lo usen [Valor por defecto = Sí]';
+$messages['help_maximum_comment_size'] = 'Tamaño máximo de un comentario en bytes, o 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 el filtro Bayesiano anti-spam [Valor por defecto = Sí]';
+$messages['help_baSíian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario sea considerado spam [Valor por defecto = 0.9]';
+$messages['help_baSíian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un comentari no sea considerado spam [Valor por defecto = 0.2]';
+$messages['help_baSíian_filter_min_length_token'] = 'Tamaño mínimo en carácteres de un token [Valor por defecto = 3]';
+$messages['help_baSíian_filter_max_length_token'] = 'Tamaño máximo de un 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é hacer con los comentarios que sean spam. Use "Eliminar" cuando su filtro Bayesiando haya sido entrenado correctamente. Manténgalos en la base de datos si cree que su filtro puede cometer todavía algun error [Valor por defecto = Guardar]';
 $messages['keep_spam_comments'] = 'Guardarlos en la base de datos, pero marcados como "Spam"';
 $messages['throw_away_spam_comments'] = 'Eliminarlos directamente';
 // resources
-$messages['help_resources_enabled'] = 'Activar la sección de "Ficheros" [Valor por defecto = Sí]';
-$messages['help_resources_folder'] = 'Carpeta donde los ficheros serán almacenados. Use una carpeta fuera del árbol del servidor de web para mayor seguridad [Valor por defecto = ./gallery]';
-$messages['help_thumbnail_method'] = 'Método para generar las previsualizaciones. Se requiere soporte para GD si se selecciona PHP como el método por defecto  [Valor por defecto = PHP]';
-$messages['help_path_to_convert'] = 'Ruta completa al binario "convert" del paquete "ImageMagick". Es obligatorio si el método para generar las previsualizaciones es "ImageMagick" [Valor por defecto = /usr/bin/convert]';
-$messages['help_thumbnail_format'] = 'Formato de las previsualizaciones [Valor por defecto = El mismo que la imágen]';
+$messages['help_resources_enabled'] = 'Activar la sección de "Ficheros" [Valor por defecto = Sí]';
+$messages['help_resources_folder'] = 'Carpeta donde los ficheros serán almacenados. Use una carpeta fuera del árbol del servidor de web para mayor seguridad [Valor por defecto = ./gallery]';
+$messages['help_thumbnail_method'] = 'Método para generar las previsualizaciones. Se requiere soporte para GD si se selecciona PHP como el método por defecto  [Valor por defecto = PHP]';
+$messages['help_path_to_convert'] = 'Ruta completa al binario "convert" del paquete "ImageMagick". Es obligatorio si el método para generar las previsualizaciones es "ImageMagick" [Valor por defecto = /usr/bin/convert]';
+$messages['help_thumbnail_format'] = 'Formato de las previsualizaciones [Valor por defecto = El mismo que la imágen]';
 $messages['help_thumbnail_height'] = 'Altura de las previsualizaciones en pixels [Valor por defecto = 120]';
 $messages['help_thumbnail_width'] = 'Anchura de las previsualizaciones en pixels [Valor por defecto = 120]';
-$messages['help_medium_size_thumbnail_height'] = 'Altura de las previsualizaciones de tamaño medio en pixels [Valor por defecto = 480]';
-$messages['help_medium_size_thumbnail_width'] = 'Anchura de las previsualizaciones de tamaño medio en pixels [Valor por defecto = 640]';
-$messages['help_thumbnails_keep_aspect_ratio'] = 'Generar las previsualizaciones manteniendo un aspecto proporcional [Valor por defecto = Sí]';
+$messages['help_medium_size_thumbnail_height'] = 'Altura de las previsualizaciones de tamaño medio en pixels [Valor por defecto = 480]';
+$messages['help_medium_size_thumbnail_width'] = 'Anchura de las previsualizaciones de tamaño medio en pixels [Valor por defecto = 640]';
+$messages['help_thumbnails_keep_aspect_ratio'] = 'Generar las previsualizaciones manteniendo un aspecto proporcional [Valor por defecto = Sí]';
 $messages['help_thumbnail_generator_force_use_gd1'] = 'Usar solo GD1 en lugar de GD2 [Valor por defecto = No]';
-$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Método usado para suavizar las vistas previas. Solo disponible si se está usando PHP para generar las vistas previas [Valor por defecto = PHP ImageCopyResampled]';
-$messages['help_resources_quota'] = 'Cuota de ficheros en bytes para las bitácoras (i.e. 5242880 Bytes = 5MB), o use "0" para dar cuota ilimitada [Valor por defecto = 0]';
-$messages['help_resource_server_http_cache_enabled'] = 'Activa el soporte para la cabecera HTTP "If-Modified-Since" cuando se hagan peticiones para ficheros. Active este parámetro para ahorrar ancho de banda [Valor por defecto = No]';
-$messages['help_resource_server_http_cache_lifetime'] = 'Tiempo en milisegundos durante el cual el cliente puede usar la versión cacheada de un fichero. Solo válido cuándo el parámetro anterior esté activado [Valor por defecto = 9999999]';
-$messages['same_as_image'] = 'El mismo que la imágen original';
+$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Método usado para suavizar las vistas previas. Solo disponible si se está usando PHP para generar las vistas previas [Valor por defecto = PHP ImageCopyResampled]';
+$messages['help_resources_quota'] = 'Cuota de ficheros en bytes para las bitácoras (i.e. 5242880 Bytes = 5MB), o use "0" para dar cuota ilimitada [Valor por defecto = 0]';
+$messages['help_resource_server_http_cache_enabled'] = 'Activa el soporte para la cabecera HTTP "If-Modified-Since" cuando se hagan peticiones para ficheros. Active este parámetro para ahorrar ancho de banda [Valor por defecto = No]';
+$messages['help_resource_server_http_cache_lifetime'] = 'Tiempo en milisegundos durante el cual el cliente puede usar la versión cacheada de un fichero. Solo válido cuándo el parámetro anterior esté activado [Valor por defecto = 9999999]';
+$messages['same_as_image'] = 'El mismo que la imágen original';
 // search
-$messages['help_search_engine_enabled'] = 'Activar el motor de búsqueda  [Valor por defecto = Sí]';
-$messages['help_search_in_custom_fields'] = 'Buscar también en los campos personales [Valor por defecto = Sí]';
-$messages['help_search_in_comments'] = 'Buscar también en los comentarios [Valor por defecto = Sí]';
+$messages['help_search_engine_enabled'] = 'Activar el motor de búsqueda  [Valor por defecto = Sí]';
+$messages['help_search_in_custom_fields'] = 'Buscar también en los campos personales [Valor por defecto = Sí]';
+$messages['help_search_in_comments'] = 'Buscar también en los comentarios [Valor por defecto = Sí]';
 
 // cleanup
 $messages['purge'] = 'Limpiar';
 $messages['cleanup_spam'] = 'Limpiar Spam';
-$messages['cleanup_spam_help'] = 'Esto eliminara físicamente de la base de datos todos aquellos comentarios que hayan sido marcados como spam por los usuario. No será posible recuperarlos una vez hayan sido eliminados';
+$messages['cleanup_spam_help'] = 'Esto eliminara físicamente de la base de datos todos aquellos comentarios que hayan sido marcados como spam por los usuario. No será posible recuperarlos una vez hayan sido eliminados';
 $messages['spam_comments_purged_ok'] = 'Spam eliminado correctamente';
-$messages['cleanup_posts'] = 'Limpiar Artículos';
-$messages['cleanup_posts_help'] = 'Esto eliminará físicamente de la base de datos todos aquellos artículos que hayan sido marcados como "Borrados". No será posible recuperarlos una vez hayan sido eliminados';
-$messages['posts_purged_ok'] = 'Artículos eliminados correctamente';
+$messages['cleanup_posts'] = 'Limpiar Artículos';
+$messages['cleanup_posts_help'] = 'Esto eliminará físicamente de la base de datos todos aquellos artículos que hayan sido marcados como "Borrados". No será posible recuperarlos una vez hayan sido eliminados';
+$messages['posts_purged_ok'] = 'Artículos eliminados correctamente';
 
 /// summary ///
 // front page
 $messages['summary'] = 'Portal';
 $messages['register'] = 'Registrarse';
 $messages['summary_welcome'] = 'Bienvenido!';
-$messages['summary_most_active_blogs'] = 'Las Bitácoras más activas';
-$messages['summary_most_commented_articles'] = 'Los más comentados';
-$messages['summary_most_read_articles'] = 'Los mas leídos';
+$messages['summary_most_active_blogs'] = 'Las Bitácoras más activas';
+$messages['summary_most_commented_articles'] = 'Los más comentados';
+$messages['summary_most_read_articles'] = 'Los mas leídos';
 $messages['password_forgotten'] = 'Olvidaste el password?';
-$messages['summary_newest_blogs'] = 'Bitácoras nuevas';
-$messages['summary_latest_posts'] = 'Los más nuevos';
+$messages['summary_newest_blogs'] = 'Bitácoras nuevas';
+$messages['summary_latest_posts'] = 'Los más nuevos';
 $messages['summary_search_blogs'] = 'Buscar';
 
 // blog list
@@ -705,68 +705,68 @@
 $messages['total_reads'] = 'total';
 
 // blog profile
-$messages['blog'] = 'Bitácora';
-$messages['latest_posts'] = 'Los más nuevos';
+$messages['blog'] = 'Bitácora';
+$messages['latest_posts'] = 'Los más nuevos';
 
 // registration
-$messages['register_step0_title'] = 'Términos de Uso';
+$messages['register_step0_title'] = 'Términos de Uso';
 $messages['decline'] = 'No estoy de acuerdo';
 $messages['accept'] = 'Aceptar';
-$messages['read_service_agreement'] = 'Lea atentamente los términos de uso y pulse el botón "Aceptar" si está de acuerdo';
+$messages['read_service_agreement'] = 'Lea atentamente los términos de uso y pulse el botón "Aceptar" si está de acuerdo';
 $messages['register_step1_title'] = 'Crear el usuario [1/4]';
-$messages['register_step1_help'] = 'Primero hay que crear un usuario para la bitácora. Este usuario será el propietario de la bitácora i tendrá acceso a todas sus funcionalidades';
+$messages['register_step1_help'] = 'Primero hay que crear un usuario para la bitácora. Este usuario será el propietario de la bitácora i tendrá acceso a todas sus funcionalidades';
 $messages['register_next'] = 'Siguiente';
-$messages['register_back'] = 'Atrás';
-$messages['register_step2_title'] = 'Crear la bitácora [2/4]';
-$messages['register_blog_name_help'] = 'Nombre de la bitácora';
+$messages['register_back'] = 'Atrás';
+$messages['register_step2_title'] = 'Crear la bitácora [2/4]';
+$messages['register_blog_name_help'] = 'Nombre de la bitácora';
 $messages['register_step3_title'] = 'Elegir una plantilla [3/4]';
 $messages['step1'] = 'Paso 1';
 $messages['step2'] = 'Paso 2';
 $messages['step3'] = 'Paso 3';
-$messages['register_step3_help'] = 'Elija una de las plantillas disponibles para su nueva bitácora. Si más tarde no le gusta, siempre la puede cambiar';
+$messages['register_step3_help'] = 'Elija una de las plantillas disponibles para su nueva bitácora. Si más tarde no le gusta, siempre la puede cambiar';
 $messages['error_must_choose_template'] = 'Elija una plantilla';
 $messages['select_template'] = 'Seleccionar esta';
 $messages['register_step5_title'] = 'Felicidades! [4/4]';
 $messages['finish'] = 'Terminar';
-$messages['register_need_confirmation'] = 'Un mensaje incluyendo el enlace para su confirmación ha sido enviado a su dirección de correo. En cuanto reciba el mensaje, haga clic en la direción para empezar a usar su bitácora!';
-$messages['register_step5_help'] = 'Felicidades, su nueva bitácora ha sido creada!';
-$messages['register_blog_link'] = 'Si quiere, puede ir directamente a su nueva bitácora: <a href="%2$s">%1$s</a>';
-$messages['register_blog_admin_link'] = 'O si lo desea, puede empezar a añadir artículos a través de la <a href="admin.php">interfaz de administración</a>';
+$messages['register_need_confirmation'] = 'Un mensaje incluyendo el enlace para su confirmación ha sido enviado a su dirección de correo. En cuanto reciba el mensaje, haga clic en la direción para empezar a usar su bitácora!';
+$messages['register_step5_help'] = 'Felicidades, su nueva bitácora ha sido creada!';
+$messages['register_blog_link'] = 'Si quiere, puede ir directamente a su nueva bitácora: <a href="%2$s">%1$s</a>';
+$messages['register_blog_admin_link'] = 'O si lo desea, puede empezar a añadir artículos a través de la <a href="admin.php">interfaz de administración</a>';
 $messages['register_error'] = 'Hubo un error durante el proceso';
-$messages['error_registration_disabled'] = 'No se pueden registrar bitácoras en este sitio';
+$messages['error_registration_disabled'] = 'No se pueden registrar bitácoras en este sitio';
 // registration article topic and text
 $messages['register_default_article_topic'] = 'Felicidades!';
-$messages['register_default_article_text'] = 'Si puede leer esto, su bitácora está lista para empezar a escribir.';
+$messages['register_default_article_text'] = 'Si puede leer esto, su bitácora está lista para empezar a escribir.';
 $messages['register_default_category'] = 'General';
 // confirmation email
-$messages['register_confirmation_email_text'] = 'Visite el siguiente enlace para activar su nueva bitácora:
+$messages['register_confirmation_email_text'] = 'Visite el siguiente enlace para activar su nueva bitácora:
 
 %s
 
-Que tenga un buen día.';
-$messages['error_invalid_activation_code'] = 'El enlace de activación no es correcto';
-$messages['blog_activated_ok'] = 'Felicidades, su nueva bitácora ha sido activada!';
+Que tenga un buen día.';
+$messages['error_invalid_activation_code'] = 'El enlace de activación no es correcto';
+$messages['blog_activated_ok'] = 'Felicidades, su nueva bitácora ha sido activada!';
 // forgot your password?
 $messages['reset_password'] = 'Cambiar el password';
 $messages['reset_password_username_help'] = 'Nombre del usuario cuyo password desea cambiar';
-$messages['reset_password_email_help'] = 'Dirección de correo que se usó para registrar este usuario';
-$messages['reset_password_help'] = 'Use este formulario para cambiar el password de su usuario, en caso de que no lo recuerde. Por favor escriba el nombre del usuario cuyo password desea cambiar, así como la dirección de correo con la que se registró este usuario';
-$messages['error_resetting_password'] = 'Hubo un error cambiando el password del usuario. Compruebe los datos y vuélvalo a intentar';
-$messages['reset_password_error_incorrect_email_address'] = 'La dirección de correo no es correcta o no es la dirección que se usó para registrar este usuario';
-$messages['password_reset_message_sent_ok'] = 'Un mensaje de correo ha sido enviado a la dirección de correo. Por favor haga clic en la dirección incluida en el mensaje para cambiar el password';
-$messages['error_incorrect_request'] = 'Los parámetros de la dirección no son correctos';
+$messages['reset_password_email_help'] = 'Dirección de correo que se usó para registrar este usuario';
+$messages['reset_password_help'] = 'Use este formulario para cambiar el password de su usuario, en caso de que no lo recuerde. Por favor escriba el nombre del usuario cuyo password desea cambiar, así como la dirección de correo con la que se registró este usuario';
+$messages['error_resetting_password'] = 'Hubo un error cambiando el password del usuario. Compruebe los datos y vuélvalo a intentar';
+$messages['reset_password_error_incorrect_email_address'] = 'La dirección de correo no es correcta o no es la dirección que se usó para registrar este usuario';
+$messages['password_reset_message_sent_ok'] = 'Un mensaje de correo ha sido enviado a la dirección de correo. Por favor haga clic en la dirección incluida en el mensaje para cambiar el password';
+$messages['error_incorrect_request'] = 'Los parámetros de la dirección no son correctos';
 $messages['change_password'] = 'Nuevo password';
-$messages['change_password_help'] = 'Por favor de un nuevo password y a continuación, confírmelo';
+$messages['change_password_help'] = 'Por favor de un nuevo password y a continuación, confírmelo';
 $messages['new_password'] = 'Nuevo password';
-$messages['new_password_help'] = 'Escriba aquí su nuevo password';
+$messages['new_password_help'] = 'Escriba aquí su nuevo password';
 $messages['password_updated_ok'] = 'Su password ha sido 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 al menú';
-$messages['comment_email_never_display'] = 'El comentario será formateado automáticamente. La dirección de correo no será mostrada en público.';
+$messages['jump_to_navigation'] = 'Ir al menú';
+$messages['comment_email_never_display'] = 'El comentario será formateado automáticamente. La dirección de correo no será mostrada 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">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'] = 'El URI <acronym title="Identificador de Recurso Uniforme (URI)">URI</acronym> para enviar retroenlaces a este artículo es: ';
+$messages['trackback_uri'] = 'El URI <acronym title="Identificador de Recurso Uniforme (URI)">URI</acronym> para enviar retroenlaces a este artículo es: ';
 
 $messages['xmlrpc_ping_ok'] = 'Ping XMLRPC enviado correctamente: ';
 $messages['error_sending_xmlrpc_ping'] = 'Hubo un error enviando el ping XMLRPC a: ';
@@ -774,182 +774,182 @@
 
 // textos nuevos para LT 1.1
 
-$messages['error_incorrect_trackback_id'] = 'El identificador del retroenlace no es válido';
+$messages['error_incorrect_trackback_id'] = 'El identificador del retroenlace no es válido';
 $messages['error_marking_trackback_as_spam'] = 'Hubo un error marcando el retroenlace como spam';
 $messages['trackback_marked_as_spam_ok'] = 'El retroenlace fue marcado como spam';
 $messages['error_marking_trackback_as_nonspam'] = 'Hubo un error marcando el retroenlace como no spam';
 $messages['trackback_marked_as_nonspam_ok'] = 'El retroenlace fue marcado como no spam';
-$messages['upload_here'] = 'Añadir fichero aquí';
+$messages['upload_here'] = 'Añadir fichero aquí';
 $messages['reply_string'] = 'Re: ';
 $messages['cleanup_users'] = 'Limpieza de usuarios';
-$messages['cleanup_users_help'] = 'Esta función eliminará todos los usuarios que hayan sido marcados como "Borrados", incluyendo cualquier
-bitácora que pertenezca al usuario y todo el contenido de la bitácora. Si el usuario tiene acceso a otra bitácora, todos los artículos publicados por el usuario también serán eliminados. Una vez el usuario y sus datos han sido eliminados no será posible recuperarlos.';
+$messages['cleanup_users_help'] = 'Esta función eliminará todos los usuarios que hayan sido marcados como "Borrados", incluyendo cualquier
+bitácora que pertenezca al usuario y todo el contenido de la bitácora. Si el usuario tiene acceso a otra bitácora, todos los artículos publicados por el usuario también serán eliminados. Una vez el usuario y sus datos han sido eliminados no será posible recuperarlos.';
 $messages['users_purged_ok'] = 'Limpieza de usuarios ejecutada correctamente';
 $messages['cleanup_blogs'] = 'Limpieza de blogs';
-$messages['cleanup_blogs_help'] = 'Esta función eliminará todos las bitácoras que hayan sio marcadas como "Borradas" por un administrador, incluyendo todo el contenido de la bitácora. Una vez la bitácora y sus datos han sido eliminados no será posible recuperarlos.';
+$messages['cleanup_blogs_help'] = 'Esta función eliminará todos las bitácoras que hayan sio marcadas como "Borradas" por un administrador, incluyendo todo el contenido de la bitácora. Una vez la bitácora y sus datos han sido eliminados no será posible recuperarlos.';
 $messages['blogs_purged_ok'] = 'Limpieza de blogs ejecutada correctamente';
-$messages['help_use_http_accept_language_detection'] = 'Activa la detección del lenguaje preferido por el usuario basándose en la información que envia el navegador en cada petición';
-$messages['error_invalid_blog_category'] = 'Categoría de bitácora incorrecta';
-$messages['error_adding_blog_category'] = 'Hubo un error añadiendo la categoría de bitácora';
-$messages['newBlogCategory'] = 'Nueva categoría de bitácoras';
-$messages['editBlogCategories'] = 'Categoría de bitácoras';
-$messages['blog_category_added_ok'] = 'Categoría de bitácoras añadida correctamente';
-$messages['error_blog_category_has_blogs'] = 'Hay algunas bitácoras asignadas a la categoría de bitácoras "%s. Por favor modifique primero las bitácoras e inténtelo de nuevo.';
-$messages['error_deleting_blog_category'] = 'Hubo un error borrando la categoría de bitácoras "%s"';
-$messages['blog_category_deleted_ok'] = 'La categoría de bitácoras "%s" fue borrada correctamente';
-$messages['blog_categories_deleted_ok'] = '%s categorías de blog fueron eliminadas correctamente';
-$messages['error_deleting_blog_category2'] = 'Hubo un error eliminando la categoría de bitácora cuyo identificador es %s';
-$messages['blog_category'] = 'Categoría de bitácoras';
-$messages['blog_category_help'] = 'Categoría de bitácoras a cuya esta bitácora pertenece';
-$messages['help_use_captcha_auth'] = 'Requerir la inserción de un código numérico mostrado en una imágen al iniciar el proceso de registro de una nueva bitácora y así evitar registros de nuevos usuarios mediante scripts';
-$messages['help_skip_dashboard'] = 'Desactivar la página de "perspectiva" como página mostrada al iniciar una sesión, y en su lugar enviar al usuario a su primer blog';
-$messages['manageGlobalArticleCategory'] = 'Categorías Globales';
-$messages['newGlobalArticleCategory'] = 'Nueva categoría Global';
-$messages['editGlobalArticleCategories'] = 'Categorías Globales';
-$messages['global_category_name_help'] = 'Nombre de la nueva categoría global';
-$messages['global_category_description_help'] = 'Descripción de la nueva categoría global';
-$messages['error_incorrect_global_category_id'] = 'Categoría global incorrecta';
-$messages['global_category_deleted_ok'] = 'La categoría global "%s" fue eliminada correctamente';
-$messages['global_category_added_ok'] = 'La categoría global "%s" fue añadida correctamente';
-$messages['error_deleting_global_category2'] = 'Hubo un error eliminando la categoría global cuyo identificador es %s';
+$messages['help_use_http_accept_language_detection'] = 'Activa la detección del lenguaje preferido por el usuario basándose en la información que envia el navegador en cada petición';
+$messages['error_invalid_blog_category'] = 'Categoría de bitácora incorrecta';
+$messages['error_adding_blog_category'] = 'Hubo un error añadiendo la categoría de bitácora';
+$messages['newBlogCategory'] = 'Nueva categoría de bitácoras';
+$messages['editBlogCategories'] = 'Categoría de bitácoras';
+$messages['blog_category_added_ok'] = 'Categoría de bitácoras añadida correctamente';
+$messages['error_blog_category_has_blogs'] = 'Hay algunas bitácoras asignadas a la categoría de bitácoras "%s. Por favor modifique primero las bitácoras e inténtelo de nuevo.';
+$messages['error_deleting_blog_category'] = 'Hubo un error borrando la categoría de bitácoras "%s"';
+$messages['blog_category_deleted_ok'] = 'La categoría de bitácoras "%s" fue borrada correctamente';
+$messages['blog_categories_deleted_ok'] = '%s categorías de blog fueron eliminadas correctamente';
+$messages['error_deleting_blog_category2'] = 'Hubo un error eliminando la categoría de bitácora cuyo identificador es %s';
+$messages['blog_category'] = 'Categoría de bitácoras';
+$messages['blog_category_help'] = 'Categoría de bitácoras a cuya esta bitácora pertenece';
+$messages['help_use_captcha_auth'] = 'Requerir la inserción de un código numérico mostrado en una imágen al iniciar el proceso de registro de una nueva bitácora y así evitar registros de nuevos usuarios mediante scripts';
+$messages['help_skip_dashboard'] = 'Desactivar la página de "perspectiva" como página mostrada al iniciar una sesión, y en su lugar enviar al usuario a su primer blog';
+$messages['manageGlobalArticleCategory'] = 'Categorías Globales';
+$messages['newGlobalArticleCategory'] = 'Nueva categoría Global';
+$messages['editGlobalArticleCategories'] = 'Categorías Globales';
+$messages['global_category_name_help'] = 'Nombre de la nueva categoría global';
+$messages['global_category_description_help'] = 'Descripción de la nueva categoría global';
+$messages['error_incorrect_global_category_id'] = 'Categoría global incorrecta';
+$messages['global_category_deleted_ok'] = 'La categoría global "%s" fue eliminada correctamente';
+$messages['global_category_added_ok'] = 'La categoría global "%s" fue añadida correctamente';
+$messages['error_deleting_global_category2'] = 'Hubo un error eliminando la categoría global cuyo identificador es %s';
 
-$messages['help_page_suffix_format'] = 'Sufijo que se añadirá a las URLs de de las secciones que soportan paginación [ Valor por defecto = /page/{page} ]';
+$messages['help_page_suffix_format'] = 'Sufijo que se añadirá a las URLs de de las secciones que soportan paginación [ Valor por defecto = /page/{page} ]';
 
-$messages['help_final_size_thumbnail_width'] = 'Anchura final en píxels de las imágenes subidas por usuarios. Dejar este valor como 0 para usar el tamaño real de la imágen [ Valor por defecto = 0 ]';
-$messages['help_final_size_thumbnail_height'] = 'Altura final en píxels de las imágenes subidas por usuarios. Dejar este valor como 0 para usar el tamaño real de la imágen [ Valor por defecto = 0 ]';
+$messages['help_final_size_thumbnail_width'] = 'Anchura final en píxels de las imágenes subidas por usuarios. Dejar este valor como 0 para usar el tamaño real de la imágen [ Valor por defecto = 0 ]';
+$messages['help_final_size_thumbnail_height'] = 'Altura final en píxels de las imágenes subidas por usuarios. Dejar este valor como 0 para usar el tamaño real de la imágen [ Valor por defecto = 0 ]';
 $messages['error_comment_too_big'] = 'El comentario es demasiado largo';
-$messages['error_you_have_been_blocked'] = 'Proceso interrumpido: la petición no fue procesada.';
+$messages['error_you_have_been_blocked'] = 'Proceso interrumpido: la petición no fue procesada.';
 $messages['created'] = 'Creado';
 $messages['view'] = 'Ver';
 $messages['editUser'] = 'Editar Usuario';
-$messages['help_urlize_word_separator'] = 'Carácter que será usado como separador de palabras en lugar del espacio en blanco en las direcciones generadas por LifeType. Este parámetro también afecta los nombres de host que serán generados cuando el soporte para subdominios está activado [ Valor por defecto = - ]';
-$messages['help_summary_template_cache_lifetime'] = 'Duración en segundos de las páginas pregeneradas y guardadas en la caché de la portada. Si se usa un valor mayor que 0, la versión disponible de cada página en la caché será usada durante tantos segundos en lugar de regenerarla cada vez que se produzca un cambio en los datos. Active esta opción para mejorar el rendimiento de la página de portada. [ Valor por defecto = 0 ]';
+$messages['help_urlize_word_separator'] = 'Carácter que será usado como separador de palabras en lugar del espacio en blanco en las direcciones generadas por LifeType. Este parámetro también afecta los nombres de host que serán generados cuando el soporte para subdominios está activado [ Valor por defecto = - ]';
+$messages['help_summary_template_cache_lifetime'] = 'Duración en segundos de las páginas pregeneradas y guardadas en la caché de la portada. Si se usa un valor mayor que 0, la versión disponible de cada página en la caché será usada durante tantos segundos en lugar de regenerarla cada vez que se produzca un cambio en los datos. Active esta opción para mejorar el rendimiento de la página de portada. [ Valor por defecto = 0 ]';
 $messages['register_default_album_name'] = 'General';
-$messages['register_default_album_description'] = 'Suba aquí sus imágenes y ficheros';
+$messages['register_default_album_description'] = 'Suba aquí sus imágenes y ficheros';
 $messages['show_in_summary'] = 'Mostrar en la portada';
-$messages['show_in_summary_help'] = 'Mostrar esta bitácora en la portada';
+$messages['show_in_summary_help'] = 'Mostrar esta bitácora en la portada';
 
 $messages['saving_message'] = 'Guardando...';
 $messages['show_option_panel'] = 'Mostrar Opciones';
 $messages['hide_option_panel'] = 'Ocultar opciones';
 
-$messages['quick_launches'] = 'Acceso rápido';
+$messages['quick_launches'] = 'Acceso rápido';
 
-$messages['confirmation_message_resent_ok'] = 'El mensaje de confirmación fue reenviado correctamente.';
+$messages['confirmation_message_resent_ok'] = 'El mensaje de confirmación fue reenviado correctamente.';
 
 $messages['goto_blog_page'] = 'Ir a %s';
 
-$messages['help_num_blogs_per_user'] = 'Número máximo de blogs que cada usuario puede crear mediante el enlace disponible en la página de perspectiva. Si el valor es 0, el link no aparecerá [ Valor por defecto = 0 ]';
+$messages['help_num_blogs_per_user'] = 'Número máximo de blogs que cada usuario puede crear mediante el enlace disponible en la página de perspectiva. Si el valor es 0, el link no aparecerá [ Valor por defecto = 0 ]';
 
-$messages['massive_change_option'] = 'Edición múltiple';
-$messages['show_massive_change_option'] = 'Mostrar edición múltiple';
-$messages['hide_massive_change_option'] = 'Ocultar edición múltiple';
+$messages['massive_change_option'] = 'Edición múltiple';
+$messages['show_massive_change_option'] = 'Mostrar 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['change_category'] = 'Modificar categoría';
 
 $messages['error_post_status'] = 'Elija un estado';
 $messages['error_comment_status'] = 'Elija un estado';
 $messages['admin_mode'] = 'Modo Administrador';
-$messages['administrate_user_blog'] = 'Administrar esta bitácora';
+$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'] = 'Elija un estado válido';
+$messages['error_trackback_status'] = 'Elija un estado válido';
 $messages['select'] = 'Seleccionar';
-$messages['remove_selected'] = 'Eliminar selección';
+$messages['remove_selected'] = 'Eliminar selección';
 
 $messages['notification_subject'] = 'Mensaje desde LifeType';
-$messages['error_no_trackback_links_sent'] = 'No se envió ningún retroenlace';
+$messages['error_no_trackback_links_sent'] = 'No se envió ningún retroenlace';
 
-$messages['logout_destination_url'] = 'Dirección donde los usuarios serán redireccionados al salir de la interfaz de administración de LifeType. Puede por ejemplo usar la dirección de la página principal de su servicio [ Valor por defecto = nada ]';
+$messages['logout_destination_url'] = 'Dirección donde los usuarios serán redireccionados al salir de la interfaz de administración de LifeType. Puede por ejemplo usar la dirección de la página principal de su servicio [ Valor por defecto = nada ]';
 
-$messages['help_http_cache_lifetime'] = 'Tiempo de vida en segundos de la caché del navegador. Se informará al navegador de los usuarios sobre cuánto tiempo deben usar la versión actual de la página en lugar de obligar al servidor a enviar la misma versión cada vez. Este parámetro ayuda a ahorrar ancho de banda y a aligerar la carga en el servidor, aunque los usuarios podrían recibir versiones desfasadas de las páginas en caso de que este valor sera demasiado alto. [ Valor por defecto = 1800 ]';
+$messages['help_http_cache_lifetime'] = 'Tiempo de vida en segundos de la caché del navegador. Se informará al navegador de los usuarios sobre cuánto tiempo deben usar la versión actual de la página en lugar de obligar al servidor a enviar la misma versión cada vez. Este parámetro ayuda a ahorrar ancho de banda y a aligerar la carga en el servidor, aunque los usuarios podrían recibir versiones desfasadas de las páginas en caso de que este valor sera demasiado alto. [ Valor por defecto = 1800 ]';
 
-$messages['trackbacks_no_trackback'] = 'No se pudo enviar un retroenlace a la siguiente dirección: ';
+$messages['trackbacks_no_trackback'] = 'No se pudo enviar un retroenlace a la siguiente dirección: ';
 
 $messages['error_comment_spam_throw_away'] = 'El filtro anti-spam ha rechazado su mensaje.';
-$messages['error_comment_spam_keep'] = 'El filtro anti-spam ha marcado su comentario como dudoso y deberá ser reviasado por el autor de esta bitácora.';
+$messages['error_comment_spam_keep'] = 'El filtro anti-spam ha marcado su comentario como dudoso y deberá ser reviasado por el autor de esta bitácora.';
 
-$messages['blog_categories'] = 'Categorías de Bitácoras';
-$messages['global_article_categories'] = 'Categorías Globales';
+$messages['blog_categories'] = 'Categorías de Bitácoras';
+$messages['global_article_categories'] = 'Categorías Globales';
 
-$messages['help_force_posturl_unique'] = 'Obligar que todos los enlaces a artículos sean únicos. Este parámetro solo es necesario si el formato de las direcciones ha cambiado y no está incluyendo la fecha en su nuevo formato';
+$messages['help_force_posturl_unique'] = 'Obligar que todos los enlaces a artículos sean únicos. Este parámetro solo es necesario si el formato de las direcciones ha cambiado y no está incluyendo la fecha en su nuevo formato';
 
-$messages['default_send_notification'] = 'Enviar notificación';
+$messages['default_send_notification'] = 'Enviar notificación';
 
-$messages['enable_pull_down_menu'] = 'Menú desplegable';
-$messages['enable_pull_down_menu_help'] = 'Activar o desactivar el menú desplegable';
+$messages['enable_pull_down_menu'] = 'Menú desplegable';
+$messages['enable_pull_down_menu_help'] = 'Activar o desactivar el menú desplegable';
 
-$messages['change_album'] = 'Cambiar álbum';
+$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 su sesión anterior terminó sin grabar su nuevo artículo. Si es así, <a href="#" onclick="restoreAutoSave();">haga click aquí para recuperarlo</a> o si lo prefiere, <a href="#" onclick="eraseAutoSave();">haga click aquí para borrarlo</a>.</p>';
+$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Parece que su sesión anterior terminó sin grabar su nuevo artículo. Si es así, <a href="#" onclick="restoreAutoSave();">haga click aquí para recuperarlo</a> o si lo prefiere, <a href="#" onclick="eraseAutoSave();">haga click aquí para borrarlo</a>.</p>';
 
 $messages['check_username'] = 'Nombre de usuario';
-$messages['check_username_ok'] = 'El nombre de usuario está disponible!';
-$messages['error_username_exist'] = 'El nombre de usuario no está disponible, inténtelo con otro.';
+$messages['check_username_ok'] = 'El nombre de usuario está disponible!';
+$messages['error_username_exist'] = 'El nombre de usuario no está disponible, inténtelo con otro.';
 
-$messages['error_rule_email_dns_server_temp_fail'] = 'Problema temporal - inténtelo más tarde.';
+$messages['error_rule_email_dns_server_temp_fail'] = 'Problema temporal - inténtelo más tarde.';
 $messages['error_rule_email_dns_server_unreachable'] = 'No se pudo conectar con el servidor de correo.';
-$messages['error_rule_email_dns_not_permitted'] = 'La dirección de correo no es válida.';
+$messages['error_rule_email_dns_not_permitted'] = 'La dirección de correo no es válida.';
 
-$messages['blog_users_help'] = 'Usuarios que pueden acceder a esta bitácora.';
+$messages['blog_users_help'] = 'Usuarios que pueden acceder a esta bitácora.';
 
-$messages['summary_welcome_paragraph'] = 'Incluya aquí el mensaje que aparecerá en la configuración por defecto de la portada de su servicio. Puede cambiar este mensaje en el fichero locales/locale_es_ES.php, o bien eliminarlo por completo editando los ficheros .template disponibles en el directorio templates/summary/';
+$messages['summary_welcome_paragraph'] = 'Incluya aquí el mensaje que aparecerá en la configuración por defecto de la portada de su servicio. Puede cambiar este mensaje en el fichero locales/locale_es_ES.php, o bien eliminarlo por completo editando los ficheros .template disponibles en el directorio templates/summary/';
 
 $messages['first_day_of_week'] = 1;
-$messages['first_day_of_week_label'] = 'Primer día de la semana';
-$messages['first_day_of_week_help'] = 'Primer día de la semana en el calendario';
+$messages['first_day_of_week_label'] = 'Primer día de la semana';
+$messages['first_day_of_week_help'] = 'Primer día de la semana en el calendario';
 
-$messages['help_subdomains_base_url'] = 'Cuando el soporte para subdominios está activado, se usa URL como la base para construir el resto de URLs en lugar de base_url. Use {blogname} para incluir el nombre de la bitácora, {username} para incluir el nombre del usuario a quien la bitácora pertenece, y {blogdomain} para permitir a los usuarios introducir su propio subdominio [ Valor por defecto = nada ]';
+$messages['help_subdomains_base_url'] = 'Cuando el soporte para subdominios está activado, se usa URL como la base para construir el resto de URLs en lugar de base_url. Use {blogname} para incluir el nombre de la bitácora, {username} para incluir el nombre del usuario a quien la bitácora pertenece, y {blogdomain} para permitir a los usuarios introducir su propio subdominio [ Valor por defecto = nada ]';
 
-$messages['registration_default_subject'] = 'Confirmación de registro de LifeType';
+$messages['registration_default_subject'] = 'Confirmación de registro de LifeType';
 
-$messages['error_invalid_subdomain'] = 'El subdominio no es válido o ya se está usando';
+$messages['error_invalid_subdomain'] = 'El subdominio no es válido o ya se está usando';
 
-$messages['register_blog_domain_help'] = 'Nombre y subdominio que desea usar para su nueva bitácora';
+$messages['register_blog_domain_help'] = 'Nombre y subdominio que desea usar para su nueva bitácora';
 $messages['domain'] = 'Dominio';
-$messages['help_subdomains_available_domains'] = 'Introduzca una lista con los nombres de los dominios disponibles, separada por espacios en blanco. Los usuarios podrán elegir cualquiera de estos mediante una lista desplegable, y podrán introducir cualquier subdominio que deseen. Esta opción solo estará disponible si el soporte para subdominios está activado e incluyó {blogdomain} como parte del parámetro subdomains_base_url. También puede usar \'?\' para permitir cualquier dominio y subdominio [ Valor por defecto = nada ]';
+$messages['help_subdomains_available_domains'] = 'Introduzca una lista con los nombres de los dominios disponibles, separada por espacios en blanco. Los usuarios podrán elegir cualquiera de estos mediante una lista desplegable, y podrán introducir cualquier subdominio que deseen. Esta opción solo estará disponible si el soporte para subdominios está activado e incluyó {blogdomain} como parte del parámetro subdomains_base_url. También puede usar \'?\' para permitir cualquier dominio y subdominio [ Valor por defecto = nada ]';
 
-$messages['subdomains_any_domain'] = '<- El soporte para múltiple dominios está activado, introduzca el nombre del dominio completo';
-$messages['error_updating_blog_subdomain'] = 'Hubo un error actualizando el subdominio, compruebe los datos e inténtelo de nuevo.';
+$messages['subdomains_any_domain'] = '<- El soporte para múltiple dominios está activado, introduzca el nombre del dominio completo';
+$messages['error_updating_blog_subdomain'] = 'Hubo un error actualizando el subdominio, compruebe los datos e inténtelo de nuevo.';
 $messages['error_updating_blog_main_domain'] = 'Hubo un error actualizando el dominio principal. Probablemente el administrador haya configurado algo incorrectamente';
 
 $messages['monthsshort'] = Array( 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic' );
-$messages['weekdaysshort'] = Array( 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom' );
+$messages['weekdaysshort'] = Array( 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom' );
 
 $messages['search_type'] = 'Buscar en';
-$messages['posts'] = 'Artículos';
-$messages['blogs'] = 'Bitácoras';
+$messages['posts'] = 'Artículos';
+$messages['blogs'] = 'Bitácoras';
 $messages['resources'] = 'Ficheros';
-$messages['error_incorrect_username'] = 'El nombre de usuario no es correcto, o ya está asignado o es demasiado largo (máximo 15 carácteres)';
+$messages['error_incorrect_username'] = 'El nombre de usuario no es correcto, o ya está asignado o es demasiado largo (máximo 15 carácteres)';
 $messages['upload_in_progress'] = 'Enviando datos. Espere por favor...';
 
-$messages['auth_img'] = 'Código de seguridad';
-$messages['auth_img_help'] = 'Por favor introduzca el código que aparece en la imágen.';
+$messages['auth_img'] = 'Código de seguridad';
+$messages['auth_img_help'] = 'Por favor introduzca el código que aparece en la imágen.';
 
-$messages['global_category'] = 'Categoría global';
-$messages['global_article_category_help'] = 'Categoría global de esta comunidad para este artículo';
+$messages['global_category'] = 'Categoría global';
+$messages['global_article_category_help'] = 'Categoría global de esta comunidad para este artículo';
 
 $messages['password_reset_subject'] = 'Cambio de password en LifeType';
 
 //
 // new strings for LifeType 1.2
 //
-$messages['auth'] = 'Autenticación';
+$messages['auth'] = 'Autenticación';
 $messages['authenticated'] = 'Autenticado';
 $messages['dropdown_list_field'] = 'Lista desplegable';
 $messages['values'] = 'Valores';
-$messages['field_values'] = 'Valores que aparecerán como opciones en este nuevo campo. El primer valor será usado como la opción por defecto en la lista.';
+$messages['field_values'] = 'Valores que aparecerán como opciones en este nuevo campo. El primer valor será usado como la opción por defecto en la lista.';
 
-$messages['permission_added_ok'] = 'Permiso añadido correctamente';
+$messages['permission_added_ok'] = 'Permiso añadido correctamente';
 $messages['core_perm'] = 'Permiso base';
 $messages['admin_only'] = 'Permiso de administrador';
 $messages['permissionsList'] = 'Permisos';
-$messages['newPermission'] = 'Añadir permiso';
+$messages['newPermission'] = 'Añadir permiso';
 $messages['permission_name_help'] = 'Nombre identificador del permiso';
-$messages['permission_description_help'] = 'Descripción del permiso';
-$messages['core_perm_help'] = 'Si este permiso es marcado como \'permiso base\' no será posible eliminarlo.';
-$messages['admin_only_help'] = 'Activar si este permiso solo debe ser asignado por usuarios con permisos de administración';
-$messages['error_adding_new_permission'] = 'Hubo un error añadiendo el nuevo permiso, por favor compruebe los datos e inténtelo de nuevo.';
+$messages['permission_description_help'] = 'Descripción del permiso';
+$messages['core_perm_help'] = 'Si este permiso es marcado como \'permiso base\' no será posible eliminarlo.';
+$messages['admin_only_help'] = 'Activar si este permiso solo debe ser asignado por usuarios con permisos de administración';
+$messages['error_adding_new_permission'] = 'Hubo un error añadiendo el nuevo permiso, por favor compruebe los datos e inténtelo de nuevo.';
 $messages['error_incorrect_permission_id'] = 'El identificador del permiso no es correcto';
 $messages['error_permission_cannot_be_deleted'] = 'El permiso "%s" no puede ser eliminador porque ha sido asignado a por lo menos un usuario o es un permiso base.';
 $messages['error_deleting_permission'] = 'Hubo un error eliminando el permiso "%s"';
@@ -957,183 +957,183 @@
 $messages['permissions_deleted_ok'] = '%s permisos eliminados correctamente';
 $messages['error_deleting_permission2'] = 'Hubo un error eliminando el permiso cuyo nombre es "%s"';
 
-$messages['help_hard_show_posts_max'] = 'Límite superior para el parámetro show_posts_max que controla el número de artículos que se muestran por página por blog. Si el usuario configura un valor superior a éste, el valor definido aquí será usado en su lugar. [ Valor por defecto = 50 ]';
-$messages['hard_recent_posts_max_help'] = 'Límite superior para el parámetro recent_posts_max que controla el número de artículos que se muestran en la lista de artículos recientes. Si el usuario configura un valor superior a éste, el valor definido aquí será usado en su lugar. [ Valor por defecto = 25 ]';
+$messages['help_hard_show_posts_max'] = 'Límite superior para el parámetro show_posts_max que controla el número de artículos que se muestran por página por blog. Si el usuario configura un valor superior a éste, el valor definido aquí será usado en su lugar. [ Valor por defecto = 50 ]';
+$messages['hard_recent_posts_max_help'] = 'Límite superior para el parámetro recent_posts_max que controla el número de artículos que se muestran en la lista de artículos recientes. Si el usuario configura un valor superior a éste, el valor definido aquí será usado en su lugar. [ Valor por defecto = 25 ]';
 
-$messages['error_permission_required'] = 'Debe disponer de más permisos para acceder a esta funcionalidad.';
+$messages['error_permission_required'] = 'Debe disponer de más permisos para acceder a esta funcionalidad.';
 $messages['user_permissions_updated_ok'] = 'Permisos del usuario actualizados correctamente';
 
 // blog permissions
-$messages['add_album_desc'] = 'Añadir álbums';
-$messages['add_blog_template_desc'] = 'Añadir plantillas a la bitácora';
-$messages['add_blog_user_desc'] = 'Añadir usuarios a la bitácora';
-$messages['add_category_desc'] = 'Añadir categorias';
-$messages['add_custom_field_desc'] = 'Añadir campos';
-$messages['add_link_desc'] = 'Añadir enlaces';
-$messages['add_link_category_desc'] = 'Añadir categorías de enlace';
-$messages['add_post_desc'] = 'Añadir artículos';
-$messages['add_resource_desc'] = 'Añadir ficheros';
-$messages['blog_access_desc'] = 'Permiso para acceder a esta bitácora';
-$messages['update_album_desc'] = 'Actualizar álbums';
-$messages['update_blog_desc'] = 'Actualizar la configúración de la bitácora';
+$messages['add_album_desc'] = 'Añadir álbums';
+$messages['add_blog_template_desc'] = 'Añadir plantillas a la bitácora';
+$messages['add_blog_user_desc'] = 'Añadir usuarios a la bitácora';
+$messages['add_category_desc'] = 'Añadir categorias';
+$messages['add_custom_field_desc'] = 'Añadir campos';
+$messages['add_link_desc'] = 'Añadir enlaces';
+$messages['add_link_category_desc'] = 'Añadir categorías de enlace';
+$messages['add_post_desc'] = 'Añadir artículos';
+$messages['add_resource_desc'] = 'Añadir ficheros';
+$messages['blog_access_desc'] = 'Permiso para acceder a esta bitácora';
+$messages['update_album_desc'] = 'Actualizar álbums';
+$messages['update_blog_desc'] = 'Actualizar la configúración de la bitácora';
 $messages['update_blog_template_desc'] = 'Actualizar plantillas';
-$messages['update_blog_user_desc'] = 'Actualizar usuarios de la bitácora';
+$messages['update_blog_user_desc'] = 'Actualizar usuarios de la 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 artículos';
+$messages['update_link_category_desc'] = 'Actualizar categorías de enlaces';
+$messages['update_post_desc'] = 'Actualizar artículos';
 $messages['update_resource_desc'] = 'Actualizar ficheros';
 $messages['update_trackback_desc'] = 'Actualizar retroenlaces';
-$messages['view_blog_templates_desc'] = 'Ver las plantillas de la bitácora';
-$messages['view_blog_users_desc'] = 'Ver los usuarios de la bitácora';
-$messages['view_categories_desc'] = 'Ver las categorías';
+$messages['view_blog_templates_desc'] = 'Ver las plantillas de la bitácora';
+$messages['view_blog_users_desc'] = 'Ver los usuarios de la bitácora';
+$messages['view_categories_desc'] = 'Ver las categorías';
 $messages['view_comments_desc'] = 'Ver los comentarios';
 $messages['view_custom_fields_desc'] = 'Ver los campos';
 $messages['view_links_desc'] = 'Ver los enlaces';
-$messages['view_link_categories_desc'] = 'Ver las categorías de enlace';
-$messages['view_posts_desc'] = 'Ver los artículos';
+$messages['view_link_categories_desc'] = 'Ver las categorías de enlace';
+$messages['view_posts_desc'] = 'Ver los artículos';
 $messages['view_resources_desc'] = 'Ver lo ficheros';
 $messages['view_trackbacks_desc'] = 'Ver los retroenlaces';
 // admin permissions
-$messages['login_perm_desc'] = 'El usuario puede acceder a la interfaz de administración';
-$messages['add_blog_category_desc'] = 'Añadir categorías de bitácora';
-$messages['add_global_article_category_desc'] = 'Añadir categorías globales de artículos';
-$messages['add_locale_desc'] = 'Añadir nuevas traducciones';
-$messages['add_permission_desc'] = 'Añadir nuevos permisos';
-$messages['add_site_blog_desc'] = 'Añadir nuevas bitácoras';
-$messages['add_template_desc'] = 'Añadir nuevas plantillas';
-$messages['add_user_desc'] = 'Añadir nuevos usuarios';
-$messages['edit_blog_admin_mode_desc'] = 'El usuario puede administrar otras bitácoras';
-$messages['purge_data_desc'] = 'El usuario puede usar la función de "Limpieza"';
-$messages['update_blog_category_desc'] = 'Actualizar categorías de bitácora';
-$messages['update_global_article_category_desc'] = 'Actualizar categorías globales de artículos';
-$messages['update_global_settings_desc'] = 'Actualizar la configuración global';
+$messages['login_perm_desc'] = 'El usuario puede acceder a la interfaz de administración';
+$messages['add_blog_category_desc'] = 'Añadir categorías de bitácora';
+$messages['add_global_article_category_desc'] = 'Añadir categorías globales de artículos';
+$messages['add_locale_desc'] = 'Añadir nuevas traducciones';
+$messages['add_permission_desc'] = 'Añadir nuevos permisos';
+$messages['add_site_blog_desc'] = 'Añadir nuevas bitácoras';
+$messages['add_template_desc'] = 'Añadir nuevas plantillas';
+$messages['add_user_desc'] = 'Añadir nuevos usuarios';
+$messages['edit_blog_admin_mode_desc'] = 'El usuario puede administrar otras bitácoras';
+$messages['purge_data_desc'] = 'El usuario puede usar la función de "Limpieza"';
+$messages['update_blog_category_desc'] = 'Actualizar categorías de bitácora';
+$messages['update_global_article_category_desc'] = 'Actualizar categorías globales de artículos';
+$messages['update_global_settings_desc'] = 'Actualizar la configuración global';
 $messages['update_locale_desc'] = 'Actualizar las traducciones';
 $messages['update_permission_desc'] = 'Actualizar permissions';
-$messages['update_plugin_settings_desc'] = 'Actualizar la configuración de plugins';
-$messages['update_site_blog_desc'] = 'Actualizar bitácoras';
+$messages['update_plugin_settings_desc'] = 'Actualizar 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'] = 'Ver las categorías de bitácora';
-$messages['view_global_article_categories_desc'] = 'Ver las categorías de artículo';
-$messages['view_global_settings_desc'] = 'Ver la configuración global';
+$messages['view_blog_categories'] = 'Ver las categorías de bitácora';
+$messages['view_global_article_categories_desc'] = 'Ver las categorías de artículo';
+$messages['view_global_settings_desc'] = 'Ver la configuración global';
 $messages['view_locales_desc'] = 'Ver las traducciones';
 $messages['view_permissions_desc'] = 'Ver los permisos';
 $messages['view_plugins_desc'] = 'Ver los plugins';
-$messages['view_site_blogs_desc'] = 'Ver las bitácoras';
+$messages['view_site_blogs_desc'] = 'Ver las bitácoras';
 $messages['view_templates_desc'] = 'Ver las plantillas';
 $messages['view_users_desc'] = 'Ver 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'] = 'Bienvenido, %s!';
-$messages['summary_go_to_admin'] = 'Ir a la administración';
+$messages['summary_go_to_admin'] = 'Ir a la administración';
 
-$messages['error_can_only_update_own_articles'] = 'Los permisos asignados actualmente solo permiten modificar sus propios artículos.';
-$messages['update_all_user_articles_desc'] = 'Permitir la modificación de artículos de otros usuarios';
-$messages['error_can_only_view_own_articles'] = 'Los permisos asignados actualmente solo permiten ver sus propios artículos.';
-$messages['view_all_user_articles_desc'] = 'Permitir ver los artículos de otros usuarios';
+$messages['error_can_only_update_own_articles'] = 'Los permisos asignados actualmente solo permiten modificar sus propios artículos.';
+$messages['update_all_user_articles_desc'] = 'Permitir la modificación de artículos de otros usuarios';
+$messages['error_can_only_view_own_articles'] = 'Los permisos asignados actualmente solo permiten ver sus propios artículos.';
+$messages['view_all_user_articles_desc'] = 'Permitir ver los artículos de otros usuarios';
 $messages['error_fetching_permission'] = 'Hubo un error cargando el permiso';
 $messages['editPermission'] = 'Editar permiso';
 $messages['error_updating_permission'] = 'Hubo un error actualizando el permiso';
 $messages['permission_updated_ok'] = 'Permiso actualizado correctamente';
-$messages['error_adding_permission'] = 'Hubo un error añadiendo el permiso';
-$messages['error_cannot_login'] = 'Lo sentimos, pero sus permisos no le permiten acceder a la interfaz de administración';
+$messages['error_adding_permission'] = 'Hubo un error añadiendo el permiso';
+$messages['error_cannot_login'] = 'Lo sentimos, pero sus permisos no le permiten acceder a la interfaz de administración';
 $messages['admin_user_permissions_help'] = 'Permisos globales asignados a este usuario';
 
 $messages['permissions'] = 'Permisos';
-$messages['blog_user_permissions_help'] = 'Permisos asignados a este usuario en esta bitácora';
-$messages['pluginSettings'] = 'Configuración del plugin';
+$messages['blog_user_permissions_help'] = 'Permisos asignados a este usuario en esta bitácora';
+$messages['pluginSettings'] = 'Configuración del plugin';
 $messages['user_can_override'] = 'Usuarios pueden modificar';
 $messages['user_cannot_override'] = 'Usuarios no pueden modificar';
-$messages['global_plugin_settings_saved_ok'] = 'Configuración global de plugins guardada correctamente';
-$messages['error_updating_global_plugin_settings'] = 'Hubo un error guardando la configuración global de los plugins';
+$messages['global_plugin_settings_saved_ok'] = 'Configuración global de plugins guardada correctamente';
+$messages['error_updating_global_plugin_settings'] = 'Hubo un error guardando la configuración global de los plugins';
 $messages['error_incorrect_value'] = 'El valor no es correcto';
-$messages['parameter'] = 'Parámetro';
+$messages['parameter'] = 'Parámetro';
 $messages['value'] = 'Valor';
 $messages['override'] = 'Sobreescribir';
 $messages['editCustomField'] = 'Editar campo';
-$messages['view_blog_stats_desc'] = 'Ver las estadísticas de la bitácora';
-$messages['manage_plugins_desc'] = 'Administrar los plugins de la bitácora';
+$messages['view_blog_stats_desc'] = 'Ver las estadísticas de la bitácora';
+$messages['manage_plugins_desc'] = 'Administrar los plugins de la bitácora';
 
-$messages['error_global_category_has_articles'] = 'La categoría global de artículos no puede ser eliminada porque todavía tiene artículos.';
-$messages['error_adding_global_article_category'] = 'Hubo un error añadiendo la categoría global de artículos';
+$messages['error_global_category_has_articles'] = 'La categoría global de artículos no puede ser eliminada porque todavía tiene artículos.';
+$messages['error_adding_global_article_category'] = 'Hubo un error añadiendo la categoría global de artículos';
 
 $messages['temp_folder_reset_ok'] = 'El directorio temporal fue vaciado correctamente.';
-$messages['cleanup_temp_help'] = 'Esto forzará que el directorio temporal usado por LifeType se vacíe. Como resultado las cachés de plantillas y datos también serán reinicializadas.';
+$messages['cleanup_temp_help'] = 'Esto forzará que el directorio temporal usado por LifeType se vacíe. Como resultado las cachés de plantillas y datos también serán reinicializadas.';
 $messages['cleanup_temp'] = 'Vaciar el directorio temporal';
 
 $messages['comment_only_auth_users'] = 'Solo los usuarios autentificados pueden comentar';
-$messages['comment_only_auth_users_help'] = 'Solo los usuarios que tengan un usuario y password válido pueden dejar sus comentarios';
-$messages['show_comments_max'] = 'Comentarios por página';
-$messages['show_comments_max_help'] = 'Número máximo de comentarios por página [ Valor por defecto = 20 ]';
-$messages['hard_show_comments_max_help'] = 'Valor máximo para el parámetro show_comments_max [ Valor por defecto = 50 ]';
+$messages['comment_only_auth_users_help'] = 'Solo los usuarios que tengan un usuario y password válido pueden dejar sus comentarios';
+$messages['show_comments_max'] = 'Comentarios por página';
+$messages['show_comments_max_help'] = 'Número máximo de comentarios por página [ Valor por defecto = 20 ]';
+$messages['hard_show_comments_max_help'] = 'Valor máximo para el parámetro show_comments_max [ Valor por defecto = 50 ]';
 
-$messages['error_resource_not_whitelisted_extension'] = 'Este tipo de fichero no está permitido.';
-$messages['help_upload_allowed_files'] = 'Lista de tipos de ficheros permitidos, separados por espacios en blanco. El uso de \'*\' y \'?\' está permitido. Si ambos upload_forbidden_file y está opción están activadas, esta lista (upload_allowed_files) siempre tendrá más prioridad [ Valor por defecto = None]';
+$messages['error_resource_not_whitelisted_extension'] = 'Este tipo de fichero no está permitido.';
+$messages['help_upload_allowed_files'] = 'Lista de tipos de ficheros permitidos, separados por espacios en blanco. El uso de \'*\' y \'?\' está permitido. Si ambos upload_forbidden_file y está opción están activadas, esta lista (upload_allowed_files) siempre tendrá más prioridad [ Valor por defecto = None]';
 
-$messages['help_template_load_order'] = 'Define el orden en que las plantillas son cargadas. Usando \'Cargar primero las plantillas por defecto\', LifeType intentará encontrar las plantillas en el directorio templates/default/ y si no están disponibles allí, entonces se buscará la misma plantilla en el directorio del usuario. Si la misma plantilla existe en ambos lugares, la plantilla por defecto en templates/default/ siempre tendrá prioridad. Si se selecciona \'Cagar primero las plantillas de usuario\', las plantillas de usuario siempre serán cargadas primero y si no están disponibles, se buscará en dlrectorio de las plantillas por defecto. Si la misma plantilla existe en ambos lugares, la plantilla del usuario siempre tendrá prioridad';
+$messages['help_template_load_order'] = 'Define el orden en que las plantillas son cargadas. Usando \'Cargar primero las plantillas por defecto\', LifeType intentará encontrar las plantillas en el directorio templates/default/ y si no están disponibles allí, entonces se buscará la misma plantilla en el directorio del usuario. Si la misma plantilla existe en ambos lugares, la plantilla por defecto en templates/default/ siempre tendrá prioridad. Si se selecciona \'Cagar primero las plantillas de usuario\', las plantillas de usuario siempre serán cargadas primero y si no están disponibles, se buscará en dlrectorio de las plantillas por defecto. Si la misma plantilla existe en ambos lugares, la plantilla del usuario siempre tendrá prioridad';
 $messages['template_load_order_user_first'] = 'Cargar primero las plantillas por defecto';
 $messages['template_load_order_default_first'] = 'Cargar primero las plantillas de usuario';
 
-$messages['editBlogUser'] = 'Editar usuario de la bitácora';
+$messages['editBlogUser'] = 'Editar usuario de la bitácora';
 
-$messages['help_summary_service_name'] = 'Nombre del servicio, aparecerá en distintos sitios en la página princiap y en todas las fuentes RSS generadas [ Valor por defecto = vacío]';
+$messages['help_summary_service_name'] = 'Nombre del servicio, aparecerá en distintos sitios en la página princiap y en todas las fuentes RSS generadas [ Valor por defecto = vacío]';
 
-$messages['register_step2_help'] = 'Por favor introduzca los datos necesarios para registrar una bitácora.';
+$messages['register_step2_help'] = 'Por favor introduzca los datos necesarios para registrar una bitácora.';
 
 $messages['create_date'] = 'Fecha creada';
 
-$messages['insert_media'] = 'Añadir fichero';
-$messages['insert_more'] = 'Añadir el enlace "Más..."';
+$messages['insert_media'] = 'Añadir fichero';
+$messages['insert_more'] = 'Añadir el enlace "Más..."';
 
 
 
-$messages['purging_please_wait'] = 'Por favor espere mientras sus datos son procesados. Esta página se refrescará automáticamente mientras sus datos son procesados, por favor no interrumpa este proceso.';
+$messages['purging_please_wait'] = 'Por favor espere mientras sus datos son procesados. Esta página se refrescará automáticamente mientras sus datos son procesados, por favor no interrumpa este proceso.';
 
-$messages['error_cannot_delete_last_blog_category'] = 'No es posible eliminar la última categoría de bitácoras.';
+$messages['error_cannot_delete_last_blog_category'] = 'No es posible eliminar la última categoría de bitácoras.';
 
-$messages['help_logout_destination_url'] = 'Dirección donde los usuarios serán dirigidos cuando terminen su sesión en la interfaz de administración, en lugar de la página de acceso a la interfaz de administración [ Valor por defecto = vacío ]';
-$messages['help_default_global_article_category_id'] = 'Identificador de la categoría global de artículo por defecto [ Valor por defecto = vacío ]';
-$messages['help_blog_does_not_exist_url'] = 'URL donde los usuarios serán enviados cuando intenten acceder a una bitácora que no existe, en lugar de ser enviados a la bitácora configurada como la bitácora por defecto en este servidor [ Valor por defecto = vacío ]';
+$messages['help_logout_destination_url'] = 'Dirección donde los usuarios serán dirigidos cuando terminen su sesión en la interfaz de administración, en lugar de la página de acceso a la interfaz de administración [ Valor por defecto = vacío ]';
+$messages['help_default_global_article_category_id'] = 'Identificador de la categoría global de artículo por defecto [ Valor por defecto = vacío ]';
+$messages['help_blog_does_not_exist_url'] = 'URL donde los usuarios serán enviados cuando intenten acceder a una bitácora que no existe, en lugar de ser enviados a la bitácora configurada como la bitácora por defecto en este servidor [ Valor por defecto = vacío ]';
 
-$messages['help_bayesian_filter_enabled'] = 'Activar el filtro de comentarios basado en técnicas Bayesianas [ Valor por defecto = Sí ]';
-$messages['help_bayesian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario pueda ser considerado spam. [ Valor por defecto = 0.9]';
-$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un artículo pueda ser considerado no spam. [ Valor por defecto = 0.2]';
-$messages['help_bayesian_filter_min_length_token'] = 'Longitud mínima de una palabra para que pueda ser tenida en cuenta por el filtro bayesiano. [ Valor por defecto = 3]';
-$messages['help_bayesian_filter_max_length_token'] = 'Longitud máxima de una palabra para que pueda ser tenida en cuenta por el 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 ejecutar con los comentarios que son marcados como spam por el filtro. [ Valor por defecto = Keep]';
+$messages['help_bayesian_filter_enabled'] = 'Activar el filtro de comentarios basado en técnicas Bayesianas [ Valor por defecto = Sí ]';
+$messages['help_bayesian_filter_spam_probability_treshold'] = 'Puntuación máxima para que un comentario pueda ser considerado spam. [ Valor por defecto = 0.9]';
+$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Puntuación mínima para que un artículo pueda ser considerado no spam. [ Valor por defecto = 0.2]';
+$messages['help_bayesian_filter_min_length_token'] = 'Longitud mínima de una palabra para que pueda ser tenida en cuenta por el filtro bayesiano. [ Valor por defecto = 3]';
+$messages['help_bayesian_filter_max_length_token'] = 'Longitud máxima de una palabra para que pueda ser tenida en cuenta por el 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 ejecutar con los comentarios que son marcados como spam por el filtro. [ Valor por defecto = Keep]';
 
 $messages['trackback_urls'] = 'Retroenlaces';
-$messages['trackback_urls_help'] = 'LifeType puede encontrar las direcciones donde enviar retroenlaces automáticamente si el enlace de destino lo soporta. 
-Si los enlaces que forman parte del texto del artículo no incluyen esta característica, por favor añada cada una de las direcciones de retroenlaces "reales" (una por línea)';
+$messages['trackback_urls_help'] = 'LifeType puede encontrar las direcciones donde enviar retroenlaces automáticamente si el enlace de destino lo soporta. 
+Si los enlaces que forman parte del texto del artículo no incluyen esta característica, por favor añada cada una de las direcciones de retroenlaces "reales" (una por línea)';
 
-$messages['error_invalid_blog_name'] = 'El nombre de la bitácora no es válido';
+$messages['error_invalid_blog_name'] = 'El nombre de la bitácora no es válido';
 
 /* strings for /default/ templates */
 
 
-$messages['help_forbidden_blognames'] = 'Lista de cadenas separadas por un espacio en blanco que no se pueden usar como nombres de bitácora. Es posible usar una expresión regular en lugar de una simple cadena. [ Valor por defecto = (vacío) ]';
+$messages['help_forbidden_blognames'] = 'Lista de cadenas separadas por un espacio en blanco que no se pueden usar como nombres de bitácora. Es posible usar una expresión regular en lugar de una simple cadena. [ Valor por defecto = (vacío) ]';
 
-$messages['posts_updated_ok'] = '%s artículos fueron actualizados correctamente';
-$messages['error_updating_post2'] = 'Hubo un error actualizando el artículo cuyo identificador es %s';
+$messages['posts_updated_ok'] = '%s artículos fueron actualizados correctamente';
+$messages['error_updating_post2'] = 'Hubo un error actualizando el artículo cuyo identificador es %s';
 $messages['resources_updated_ok'] = '% ficheros fueron actualizados correctamente';
 $messages['error_updating_resource2'] = 'Hubo un error actualizando el fichero cuyo identificador es %s';
-$messages['albums_updated_ok'] = '%s álbums fueron actualizados correctamente';
-$messages['error_updating_album2'] = 'Hubo un error actualizando el álbum cuyo identificador es %s';
+$messages['albums_updated_ok'] = '%s álbums fueron actualizados correctamente';
+$messages['error_updating_album2'] = 'Hubo un error actualizando el álbum cuyo identificador es %s';
 $messages['links_updated_ok'] = '%s enlaces fueron actualizados correctamente';
 $messages['error_updating_link2'] = 'Hubo un error actualizando el enlace cuyo identificador es %s';
 
 $messages['bookmarklet'] = 'Enlazar';
-$messages['bookmarklet_help'] = 'Arrastre este enlace a la barra de herramientas de su navegador o haciendo clic con el botón derecho de su ratón, elija "Añadir a favoritos" o "Enlaces" para activar';
-$messages['blogit_to_lifetype'] = "Añadir a Lifetype!";
-$messages['original_post'] = "(Artículo original)";
+$messages['bookmarklet_help'] = 'Arrastre este enlace a la barra de herramientas de su navegador o haciendo clic con el botón derecho de su ratón, elija "Añadir a favoritos" o "Enlaces" para activar';
+$messages['blogit_to_lifetype'] = "Añadir a Lifetype!";
+$messages['original_post'] = "(Artículo original)";
 $messages['bookmarkit_to_lifetype'] = 'Enlazar en Lifetype';
-$messages['help_security_pipeline_enabled'] = 'Activar los filtros, incluidos los seguridad y los filtros añadidos dinámicamente mediante plugins. [ Valor por defecto = Sí ]';
-$messages['agreement'] = 'Aceptación de las normas';
+$messages['help_security_pipeline_enabled'] = 'Activar los filtros, incluidos los seguridad y los filtros añadidos dinámicamente mediante plugins. [ Valor por defecto = Sí ]';
+$messages['agreement'] = 'Aceptación de las normas';
 $messages['error_updating_comment_no_comment'] = 'Hubo un error actualizando el comentario cuyo identificador es %s';
 $messages['error_updating_comment_wrong_blog'] = 'Hubo un error actualizando el comentario cuyo identificador es %s';
 $messages['error_updating_comment'] = 'Hubo un error actualizando el comentario "%s"';
@@ -1142,17 +1142,17 @@
 $messages['comments_updated_ok'] = '%s commntarios fueron actualizados correctamente.';
 $messages['Miscellaneous'] = 'General';
 $messages['Plugins'] = 'Plugins';
-$messages['help_hard_recent_posts_max'] = 'Número máximo para el número de artículos recientes que aparecen en cada bitácora. Si los usuarios configuran un valor por encima de éste, el valor del usuario será ignorado y éste será usado. [ Valor por defecto = 25 ]';
-$messages['version'] = 'Versión';
+$messages['help_hard_recent_posts_max'] = 'Número máximo para el número de artículos recientes que aparecen en cada bitácora. Si los usuarios configuran un valor por encima de éste, el valor del usuario será ignorado y éste será usado. [ Valor por defecto = 25 ]';
+$messages['version'] = 'Versión';
 
-$messages['error_resources_disabled'] = 'El soporte para añadir nuevos ficheros a su bitácora ha sido desactivado en est servidor.';
+$messages['error_resources_disabled'] = 'El soporte para añadir nuevos ficheros a su bitácora ha sido desactivado en est servidor.';
 
-$messages['help_login_admin_panel'] = 'Haga clic en el nombre de la bitácora para administrarla';
+$messages['help_login_admin_panel'] = 'Haga clic en el nombre de la bitácora para administrarla';
 
-$messages['blog_updated_ok'] = 'La bitácora "%s" fue actualizada correctamente.';
-$messages['blogs_updated_ok'] = '%s bitácoras fueron actualizadas correctamente';
-$messages['error_updating_blog2'] = 'Hubo un error actualizando la bitácora cuyo identificador es "%s"';
-$messages['error_updating_blog'] = 'Hubo un error actualizando la bitácora "%s"';
+$messages['blog_updated_ok'] = 'La bitácora "%s" fue actualizada correctamente.';
+$messages['blogs_updated_ok'] = '%s bitácoras fueron actualizadas correctamente';
+$messages['error_updating_blog2'] = 'Hubo un error actualizando la bitácora cuyo identificador es "%s"';
+$messages['error_updating_blog'] = 'Hubo un error actualizando la bitácora "%s"';
 
 $messages['error_updating_user'] = 'Hubo un error modificando el usuario "%s".';
 $messages['user_updated_ok'] = 'El usuario "%s" fue modificado correctamente.';
@@ -1160,41 +1160,41 @@
 $messages['eror_updating_user2'] = 'Hubo un error modificando el usuario cuyo identificador es "%s"';
 
 $messages['error_select_status'] = 'Seleccione un estado.';
-$messages['error_invalid_blog_name'] = 'El nombre de la bitácora no es correcto.';
+$messages['error_invalid_blog_name'] = 'El nombre de la bitácora no es correcto.';
 
-$messages['help_resources_naming_rule'] = 'Nombre con el que se guardarán los ficheros. Cuando \'Nombre original\' está seleccionado, se guardará el fichero con su nombre original. Cuando \'Nombre del fichero codificado\' está seleccionado, se cambiará el nombre del fichero de acuerdo con la regla [BlogId]-[FicheroId].[Ext]. Use \'Nombre del fichero codificado\' si está ejecutando LifeType en un servidor Windows y el juego de carácteres es multi-byte. Si no está seguro, seguramente no necesite usar esta opción y debería dejarlo con el valor por defecto [Valor por defecto = Nombre original]';
+$messages['help_resources_naming_rule'] = 'Nombre con el que se guardarán los ficheros. Cuando \'Nombre original\' está seleccionado, se guardará el fichero con su nombre original. Cuando \'Nombre del fichero codificado\' está seleccionado, se cambiará el nombre del fichero de acuerdo con la regla [BlogId]-[FicheroId].[Ext]. Use \'Nombre del fichero codificado\' si está ejecutando LifeType en un servidor Windows y el juego de carácteres es multi-byte. Si no está seguro, seguramente no necesite usar esta opción y debería dejarlo con el valor por defecto [Valor por defecto = Nombre original]';
 $messages['original_file_name'] = 'Nombre original';
 $messages['encoded_file_name'] = 'Nombre del fichero codificado';
 
-$messages['quick_permission_selection'] = 'Selector rápido';
-$messages['basic_blog_permission'] = 'Permite al usuario añadir, actualizar y borrar artículos, enlaces y ficheros';
+$messages['quick_permission_selection'] = 'Selector rápido';
+$messages['basic_blog_permission'] = 'Permite al usuario añadir, actualizar y borrar artículos, enlaces y ficheros';
 $messages['full_blog_permission'] = 'Permite al usuaio acceder al blog como si fuera el propietario';
 
-$messages['error_template_exist'] = 'Hubo un error añadiendo la nueva plantilla, ya hay una plantilla llamada "%s".';
+$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'] = 'Elija autor';
-$messages['insert_player'] = 'Añadir Reproductor';
+$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['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['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['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';
 
 /// new strings for LT 1.2.4 ///
-$messages['plugin_latest_version'] = 'Última version disponible: ';
+$messages['plugin_latest_version'] = 'Última version disponible: ';
 $messages['check_versions'] = 'Comprobar versiones';
-$messages['lt_version_ok'] = 'La versión actual de Lifetype es la más reciente.';
-$messages['lt_version_error'] = 'La última versión disponible de Lifetype es: ';
-$messages['release_notes'] = 'Notas de la versión';
+$messages['lt_version_ok'] = 'La versión actual de Lifetype es la más reciente.';
+$messages['lt_version_error'] = 'La última versión disponible de Lifetype es: ';
+$messages['release_notes'] = 'Notas de la versión';
 
 $messages['kb'] = 'Kb';
 $messages['mb'] = 'Mb';

Modified: plog/trunk/locale/admin/locale_gl_ES.php
===================================================================
--- plog/trunk/locale/admin/locale_gl_ES.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/admin/locale_gl_ES.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,14 +1,14 @@
 <?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
+// 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['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['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';
 
@@ -17,10 +17,10 @@
 $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['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';
 
@@ -35,42 +35,42 @@
 $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['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['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['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['Stats'] = 'Estatísticas';
+$messages['manageBlogUsers'] = 'Usuarios da Bitácora';
 $messages['newBlogUser'] = 'Invitar Usuario';
-$messages['showBlogUsers'] = 'Usuarios da Bitácora';
+$messages['showBlogUsers'] = 'Usuarios da Bitácora';
 $messages['manageBlogTemplates'] = 'Plantillas';
 $messages['newBlogTemplate'] = 'Engadir Plantilla';
-$messages['blogTemplates'] = 'Plantillas da Bitácora';
-$messages['adminSettings'] = 'Administración';
+$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['Blogs'] = 'Bitácoras';
+$messages['createBlog'] = 'Nova Bitácora';
+$messages['editSiteBlogs'] = 'Bitácoras';
 $messages['Locales'] = 'Traduccions';
-$messages['newLocale'] = 'Nova Traducción';
+$messages['newLocale'] = 'Nova Traducción';
 $messages['siteLocales'] = 'Traduccions';
 $messages['Templates'] = 'Plantillas';
 $messages['newTemplate'] = 'Engadir Plantilla';
 $messages['siteTemplates'] = 'Plantillas';
-$messages['GlobalSettings'] = 'Configuración Xeral';
+$messages['GlobalSettings'] = 'Configuración Xeral';
 $messages['editSiteSettings'] = 'Xeral';
 $messages['summarySettings'] = 'Portal';
 $messages['templateSettings'] = 'Plantillas';
@@ -82,53 +82,53 @@
 $messages['securitySettings'] = 'Seguridade';
 $messages['bayesianSettings'] = 'Filtro Bayesiano';
 $messages['resourcesSettings'] = 'Ficheiros';
-$messages['searchSettings'] = 'Búsquedas';
+$messages['searchSettings'] = 'Búsquedas';
 $messages['cleanUpSection'] = 'Limpeza';
 $messages['cleanUp'] = 'Limpeza';
-$messages['editResourceAlbum'] = 'Editar Álbum';
+$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['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['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['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['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['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['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_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_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';
+$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_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';
@@ -138,7 +138,7 @@
 $messages['author'] = 'Autor';
 $messages['post_status_all'] = 'Todos';
 $messages['author_all'] = 'Todos';
-$messages['search_terms'] = 'Búsqueda';
+$messages['search_terms'] = 'Búsqueda';
 $messages['show'] = 'Amosar';
 $messages['delete'] = 'Eliminar';
 $messages['actions'] = 'Accions';
@@ -156,8 +156,8 @@
 $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';
+$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';
@@ -165,7 +165,7 @@
 $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['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"';
@@ -180,10 +180,10 @@
 $messages['comment_marked_as_nonspam_ok'] = 'O comentario foi marcado como non spam correctamente';
 
 // post trackbacks
-$messages['blog'] = 'Bitácora';
+$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_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';
@@ -201,33 +201,33 @@
 
 // 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['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['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['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';
+$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';
@@ -241,9 +241,9 @@
 // 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_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['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';
@@ -255,22 +255,22 @@
 
 // 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"';
+$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';
+$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';
+$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';
@@ -282,10 +282,10 @@
 $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_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['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';
@@ -299,61 +299,61 @@
 $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['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['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['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['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';
+$messages['add_album'] = 'Engadir álbum';
 
 // new album
-$messages['album_name_help'] = 'Nome do novo álbum';
+$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';
+$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';
+$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['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_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_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['resource_information_help'] = 'Información sobre o ficheiro';
+$messages['information'] = 'Información';
 $messages['thumbnail_format'] = 'Formato da vista previa';
 $messages['regenerate_preview'] = 'Rexenerar vista previa';
 $messages['error_fetching_resource'] = 'Houbo un erro cargando o ficheiro';
@@ -362,65 +362,65 @@
 
 // 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['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['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['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_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['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['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['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['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_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['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['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['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['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_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';
@@ -432,25 +432,25 @@
 // 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"';
+$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['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['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';
+$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_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';
@@ -458,18 +458,18 @@
 // 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_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_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['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
@@ -484,18 +484,18 @@
 
 // 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['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['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['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['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
@@ -506,188 +506,188 @@
 $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['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"';
+$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';
+$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['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['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['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['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';
+$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_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['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';
+$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';
+$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';
+$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';
+$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)]';
+$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_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]';
+$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]';
+$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}$]';
+$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)]';
+$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]';
+$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]';
+$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_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['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_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_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['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í]';
+$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['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['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 ///
@@ -695,12 +695,12 @@
 $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_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_newest_blogs'] = 'Bitácoras novas';
+$messages['summary_latest_posts'] = 'Os máis novos';
 $messages['summary_search_blogs'] = 'Pesquisas';
 
 // blog list
@@ -708,247 +708,247 @@
 $messages['total_reads'] = 'total';
 
 // blog profile
-$messages['blog'] = 'Bitácora';
-$messages['latest_posts'] = 'Os máis novos';
+$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['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_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_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['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_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';
+$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_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:
+$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!';
+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['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['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['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['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['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['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['comment_default_title'] = '(Sen título)';
 $messages['guestbook'] = 'Libro de visitas';
 $messages['trackbacks'] = 'Retroenlaces';
-$messages['menu'] = 'Menú';
+$messages['menu'] = 'Menú';
 $messages['albums'] = 'Albums';
-$messages['admin'] = 'Administración';
+$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_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['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['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['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_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['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['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['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['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['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['quick_launches'] = 'Acceso rápido';
 
-$messages['confirmation_message_resent_ok'] = 'a mensaxe de confirmación foi reenviada correctamente.';
+$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['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['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['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['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['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['remove_selected'] = 'Eliminar selección';
 
 $messages['notification_subject'] = 'mensaxe dende LifeType';
-$messages['error_no_trackback_links_sent'] = 'Non se enviou ningún retroenlace';
+$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['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['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['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['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['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['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['enable_pull_down_menu'] = 'Menú despregable';
+$messages['enable_pull_down_menu_help'] = 'Activar ou desactivar o menú despregable';
 
-$messages['change_album'] = 'Cambiar álbum';
+$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['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['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['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['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['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['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['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['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['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['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['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['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['weekdaysshort'] = Array( 'Lun', 'Mar', 'Mér', 'Xov', 'Ven', 'Sáb', 'Dom' );
 
 $messages['search_type'] = 'Procurar en';
 $messages['posts'] = 'Artigos';
-$messages['blogs'] = 'Bitácoras';
+$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['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['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['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['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['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';
@@ -956,229 +956,229 @@
 $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['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_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['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['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['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_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_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['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_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_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_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_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['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_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['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_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_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_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['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['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['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['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['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['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['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_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['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['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['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['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['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['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['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['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['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_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['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['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';
+$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['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['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['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['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['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['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['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['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['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['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['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['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['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['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".';
 
@@ -1187,17 +1187,17 @@
 $messages['insert_player'] = 'Engadir Reproductor';
 
 /// new strings in LT 1.2.3 /// 
-$messages['help_allow_javascript_blocks_in_posts'] = 'Permite o uso de código Javascript nos artigos mediante bloques &lt;script&gt; [ Valor por defecto = Non ]'; 
+$messages['help_allow_javascript_blocks_in_posts'] = 'Permite o uso de código Javascript nos artigos mediante bloques &lt;script&gt; [ Valor por defecto = Non ]'; 
 
-$messages['Versions'] = 'Versións'; 
-$messages['incorrect_file_version_error'] = 'A versión dos seguintes arquivos non é a correcta:'; 
+$messages['Versions'] = 'Versións'; 
+$messages['incorrect_file_version_error'] = 'A versión dos seguintes arquivos non é a correcta:'; 
 $messages['lifetype_version'] = 'LifeType'; 
-$messages['lifetype_version_help'] = 'A versión actual de LifeType é:'; 
-$messages['file_version_check'] = 'Comprobación de versión de arquivos'; 
-$messages['file_version_check_help'] = 'Este botón executará unha comprobación da versión actual dos arquivos básicos de LifeType para verificar que as versións són as correctas. Se non se efectuaron cambios ou adaptacións neste servidor, a versión dos arquivos debería 
-corresponder coa versión esperada. Este proceso pode tardar uns intres, por favor non intente recarga-la páxina mentres esté procesando..'; 
+$messages['lifetype_version_help'] = 'A versión actual de LifeType é:'; 
+$messages['file_version_check'] = 'Comprobación de versión de arquivos'; 
+$messages['file_version_check_help'] = 'Este botón executará unha comprobación da versión actual dos arquivos básicos de LifeType para verificar que as versións són as correctas. Se non se efectuaron cambios ou adaptacións neste servidor, a versión dos arquivos debería 
+corresponder coa versión esperada. Este proceso pode tardar uns intres, por favor non intente recarga-la páxina mentres esté procesando..'; 
 $messages['check'] = 'Comprobar'; 
-$messages['all_files_ok'] = 'Tódolos ficheiros son correctos';
+$messages['all_files_ok'] = 'Tódolos ficheiros son correctos';
 
 /// new strings for LT 1.2.4 ///
 $messages['plugin_latest_version'] = 'Última version dispoñible: ';

Modified: plog/trunk/locale/admin/locale_it_IT.php
===================================================================
--- plog/trunk/locale/admin/locale_it_IT.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/admin/locale_it_IT.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -93,22 +93,22 @@
 $messages['topic'] = 'Argomento';
 $messages['topic_help'] = 'Titolo dell\'articolo';
 $messages['text'] = 'Testo';
-$messages['text_help'] = 'Testo dell\'articolo. Questa parte apparirà sempre nella pagina iniziale';
+$messages['text_help'] = 'Testo dell\'articolo. Questa parte apparirà sempre nella pagina iniziale';
 $messages['extended_text'] = 'Testo esteso';
-$messages['extended_text_help'] = 'Testo esteso dell\'articolo. Questa parte può apparire nella pagina dell\'articolo  completo o nella pagina iniziale. Fare riferimento alle impostazioni del blog.';
+$messages['extended_text_help'] = 'Testo esteso dell\'articolo. Questa parte può apparire nella pagina dell\'articolo  completo o nella pagina iniziale. Fare riferimento alle impostazioni del blog.';
 $messages['trackback_urls'] = 'URL letterali dei Trackback '; 
 $messages['trackback_urls_help'] = 'Se l\'articolo al quale desideri trasmettere il trackback non supporta il meccanismo di autorilevamento dei Trackback, inserisci qui l\'URL letterale del trackback e per ogni URL che inserisci usa una nuova riga.'; 
 $messages['post_slug'] = 'Permalink Personalizzato';
-$messages['post_slug_help'] = 'Usa questo campo per migliorare la leggibilità del permalink';
+$messages['post_slug_help'] = 'Usa questo campo per migliorare la leggibilità del permalink';
 $messages['date'] = 'Data';
-$messages['post_date_help'] = 'Data in cui questo articolo dovrà essere pubblicato';
+$messages['post_date_help'] = 'Data in cui questo articolo dovrà essere pubblicato';
 $messages['status'] = 'Stato';
 $messages['post_status_help'] = 'Seleziona uno stato';
 $messages['post_status_published'] = 'Pubblicato';
 $messages['post_status_draft'] = 'Bozza';
 $messages['post_status_deleted'] = 'Cancellato';
 
-$messages['post_categories_help'] = 'Seleziona una o più categorie';
+$messages['post_categories_help'] = 'Seleziona una o più categorie';
 $messages['post_comments_enabled_help'] = 'Abilita i commenti';
 $messages['send_notification_help'] = 'Notifica nuovi commenti';
 $messages['send_trackback_pings_help'] = 'Invia trackback';
@@ -125,14 +125,14 @@
 $messages['error_adding_post'] = 'Errore durante l\'aggiunta dell\'articolo';
 $messages['post_added_not_published'] = 'Articolo aggiunto ma non pubblicato';
 $messages['post_added_ok'] = 'Articolo aggiunto.';
-$messages['send_notifications_ok'] = 'Una notifica verrà inviata per ciascun commento o trackback.';
+$messages['send_notifications_ok'] = 'Una notifica verrà inviata per ciascun commento o trackback.';
 $messages['bookmarklet'] = "Bookmarklet";
 $messages['bookmarklet_help'] = "Trascina il collegamento sulla barra degli strumenti o clicca su di esso col pulsante destro per scegliere \"Aggiungi ai preferiti\"."; 
 $messages['blogit_to_lifetype'] = "Bloggalo su LifeType!"; 
 $messages['original_post'] = "(Articolo originale)"; 
 
 // send trackbacks
-$messages['error_sending_trackbacks'] = 'Si è verificato un errore durante l\'invio dei seguenti trackback';
+$messages['error_sending_trackbacks'] = 'Si è verificato un errore durante l\'invio dei seguenti trackback';
 $messages['send_trackbacks_help'] = 'Seleziona dai seguenti URL dove vuoi inviare il ping di trackback. Assicurati che i siti supportino il trackback.';
 $messages['send_trackbacks'] = 'Trackback inviati';
 $messages['ping_selected'] = 'Ping selezionati';
@@ -179,9 +179,9 @@
 $messages['mark_as_no_spam'] = 'Marca come non spam';
 $messages['error_incorrect_comment_id'] = 'Id del commento non corretto';
 $messages['error_marking_comment_as_spam'] = 'Errore durante la marcatura del commento come spam';
-$messages['comment_marked_as_spam_ok'] = 'Il commento è stato marcato come spam';
+$messages['comment_marked_as_spam_ok'] = 'Il commento è stato marcato come spam';
 $messages['error_marking_comment_as_nonspam'] = 'Errore durante la marcatura del commento come non spam';
-$messages['comment_marked_as_nonspam_ok'] = 'Il commento è stato marcato come non spam';
+$messages['comment_marked_as_nonspam_ok'] = 'Il commento è stato marcato come non spam';
 
 // post trackbacks
 $messages['blog'] = 'Blog';
@@ -207,12 +207,12 @@
 $messages['posts'] = 'Articoli';
 $messages['show_in_main_page'] = 'Mostra nella pagina iniziale';
 
-$messages['error_category_has_articles'] = 'La categoria "%s" è usata per catalogare qualche articolo. Modificare gli articoli prima di eliminare la categoria';
+$messages['error_category_has_articles'] = 'La categoria "%s" è usata per catalogare qualche articolo. Modificare gli articoli prima di eliminare la categoria';
 $messages['category_deleted_ok'] = 'Categoria "%s" eliminata';
 $messages['categories_deleted_ok'] = '%s categorie eliminate';
 $messages['error_deleting_category'] = 'Errore durante la cancellazione della categoria "%s"';
 $messages['error_deleting_category2'] = 'Errore durante la cancellazione della categoria con id "%s"';
-$messages['yes'] = 'Sì';
+$messages['yes'] = 'Sì';
 $messages['no'] = 'No';
 
 // new category
@@ -235,10 +235,10 @@
 
 // links
 $messages['feed'] = 'Feed';
-$messages['error_no_links_selected'] = 'L\'id del link non è corretto o non sono stati selezionati elementi da eliminare';
-$messages['error_incorrect_link_id'] = 'L\'id del link non è corretto';
-$messages['error_removing_link'] = 'Si è verificato un errore in fase di cancellazione del link "%s"';
-$messages['error_removing_link2'] = 'Si è verificato un errore in fase di cancellazione del link con id "%s"';
+$messages['error_no_links_selected'] = 'L\'id del link non è corretto o non sono stati selezionati elementi da eliminare';
+$messages['error_incorrect_link_id'] = 'L\'id del link non è corretto';
+$messages['error_removing_link'] = 'Si è verificato un errore in fase di cancellazione del link "%s"';
+$messages['error_removing_link2'] = 'Si è verificato un errore in fase di cancellazione del link con id "%s"';
 $messages['link_deleted_ok'] = 'Link "%s" eliminato';
 $messages['links_deleted_ok'] = '%s link eliminati';
 
@@ -249,7 +249,7 @@
 $messages['link_feed_help'] = 'E\' possibile linkare feed di tipo  RSS o Atom';
 $messages['link_category_help'] = 'Selezionare una delle categorie di link';
 $messages['error_adding_link'] = 'Si e verificato un errore durante l\'aggiunta del nuovo link. Verifica le informazioni inserite e quindi riprova'; 
-$messages['error_invalid_url'] = 'L\'indirizzo non è corretto';
+$messages['error_invalid_url'] = 'L\'indirizzo non è corretto';
 $messages['link_added_ok'] = 'Link "%s" aggiunto';
 $messages['bookmarkit_to_lifetype'] = "Annotalo su LifeType!"; 
 
@@ -259,17 +259,17 @@
 $messages['link_updated_ok'] = 'Link "%s" modificato';
 
 // link categories
-$messages['error_invalid_link_category_id'] = 'L\'identificativo della categoria del link non è corretto o non è stata selezionata nessuna categoria';
-$messages['error_links_in_link_category'] = 'La categoria "%s" è usata da qualche link. Modifica i link quindi riprova';
+$messages['error_invalid_link_category_id'] = 'L\'identificativo della categoria del link non è corretto o non è stata selezionata nessuna categoria';
+$messages['error_links_in_link_category'] = 'La categoria "%s" è usata da qualche link. Modifica i link quindi riprova';
 $messages['error_removing_link_category'] = 'E\' avvenuto un errore durante la rimozione della categoria "%s"';
-$messages['link_category_deleted_ok'] = 'La categoria "%s" è stata rimossa';
+$messages['link_category_deleted_ok'] = 'La categoria "%s" è stata rimossa';
 $messages['link_categories_deleted_ok'] = '%s categorie rimosse';
 $messages['error_removing_link_category2'] = 'E\' avvenuto un errore durante la rimozione della categoria con identificativo "%s"';
 
 // new link category
 $messages['link_category_name_help'] = 'Nome per questa categoria di link';
 $messages['error_adding_link_category'] = 'E\' avvenuto un errore durante l\'aggiunta della categoria'; 
-$messages['link_category_added_ok'] = 'La categoria "%s" è stata aggiunta';
+$messages['link_category_added_ok'] = 'La categoria "%s" è stata aggiunta';
 
 // edit link category
 $messages['error_updating_link_category'] = 'E\' avvenuto un errore durante l\'aggiunta della categoria . Controlla i dati e riprova';
@@ -280,16 +280,16 @@
 $messages['type'] = 'Tipo';
 $messages['hidden'] = 'Nascosto';
 $messages['fields_deleted_ok'] = '%s campi personalizzati eliminati con successo';
-$messages['field_deleted_ok'] = 'Il campo personalizzato "%s" è stato cancellato';
+$messages['field_deleted_ok'] = 'Il campo personalizzato "%s" è stato cancellato';
 $messages['error_deleting_field'] = 'E\' avvenuto un errore durante la cancellazione del campo personalizzato "%s"';
 $messages['error_deleting_field2'] = 'E\' avvenuto un errore durante l\'eliminazione del campo personalizzato "%s"';
-$messages['error_incorrect_field_id'] = 'L\'id del campo personalizzato non è valido';
+$messages['error_incorrect_field_id'] = 'L\'id del campo personalizzato non è valido';
 
 // new custom field
-$messages['field_name_help'] = 'Identificativo che verrà utilizzato nell\'articolo per riferirsi al valore di questo campo.';
-$messages['field_description_help'] = 'Breve descrizione del campo, che verrà mostrata durante l\'aggiunta o la modifica degli articoli.';
+$messages['field_name_help'] = 'Identificativo che verrà utilizzato nell\'articolo per riferirsi al valore di questo campo.';
+$messages['field_description_help'] = 'Breve descrizione del campo, che verrà mostrata durante l\'aggiunta o la modifica degli articoli.';
 $messages['field_type_help'] = 'Seleziona uno dei tipi di campo';
-$messages['field_hidden_help'] = 'Se un campo è nascosto, non verrà mostrato durante l\'edizione o la modifica dell\'articolo. Questa caratteristica è utilizzata principalmente dai plugin.';
+$messages['field_hidden_help'] = 'Se un campo è nascosto, non verrà mostrato durante l\'edizione o la modifica dell\'articolo. Questa caratteristica è utilizzata principalmente dai plugin.';
 $messages['error_adding_custom_field'] = 'E\' avvenuto un errore durante l\'inserimento del campo personalizzato. Controlla i dati e riprova.';
 $messages['custom_field_added_ok'] = 'Campo personalizzato "%s" inserito con successo';
 $messages['text_field'] = 'Campo di testo';
@@ -307,8 +307,8 @@
 $messages['num_resources'] = 'Numero di risorse';
 $messages['total_size'] = 'Dimensione totale';
 $messages['album'] = 'Album';
-$messages['error_incorrect_album_id'] = 'L\'identificativo dell\'album non è corretto'; 
-$messages['error_base_storage_folder_missing_or_unreadable'] = 'pLog non è riuscito a creare le cartelle necessarie per le risorse. Ci sono diversi motivi possibili, in particolare, PHP potrebbe essere configurato in modalità sicura (safe mode), oppure il tuo utente potrebbe non avere i permessi per crearle. Puoi comunque provare ad effettuare l\'operazione manualmente, creando le seguenti cartelle: <br/><br/>%s<br/><br/>Se queste cartelle esistono già, controlla che siano leggibili e scrivibili dall\'utente che esegue il server web';
+$messages['error_incorrect_album_id'] = 'L\'identificativo dell\'album non è corretto'; 
+$messages['error_base_storage_folder_missing_or_unreadable'] = 'pLog non è riuscito a creare le cartelle necessarie per le risorse. Ci sono diversi motivi possibili, in particolare, PHP potrebbe essere configurato in modalità sicura (safe mode), oppure il tuo utente potrebbe non avere i permessi per crearle. Puoi comunque provare ad effettuare l\'operazione manualmente, creando le seguenti cartelle: <br/><br/>%s<br/><br/>Se queste cartelle esistono già, controlla che siano leggibili e scrivibili dall\'utente che esegue il server web';
 $messages['items_deleted_ok'] = '%s elementi cancellati con successo';
 $messages['error_album_has_children'] = 'L\'album "%s" contiene dei sottoelementi. Modifica l\'album e riprova'; 
 $messages['item_deleted_ok'] = 'Elemento "%s" eliminato con successo';
@@ -334,24 +334,24 @@
 $messages['album_added_ok'] = 'Album "%s" aggiunto con successo';
 
 // edit album
-$messages['error_incorrect_album_id'] = 'L\'identificativo dell\'album non è corretto';
+$messages['error_incorrect_album_id'] = 'L\'identificativo dell\'album non è corretto';
 $messages['error_fetching_album'] = 'E\' avvenuto un errore durante la lettura dell\'album';
 $messages['error_updating_album'] = 'E\' avvenuto un errore durante l\'aggiornamento dell\'album. Controlla i dati e riprova.';
 $messages['album_updated_ok'] = 'Album "%s" aggiornato con successo';
-$messages['show_album_help'] = 'Se disabilitato, l\'album non verrà mostrato nella lista degli album disponibili in questo blog';
+$messages['show_album_help'] = 'Se disabilitato, l\'album non verrà mostrato nella lista degli album disponibili in questo blog';
 
 // new resource
 $messages['file'] = 'File';
-$messages['resource_file_help'] = 'File che verranno aggiunti al blog corrente. Usa il link "Aggiungi campo" per caricare più di un file allo stesso tempo'; 
+$messages['resource_file_help'] = 'File che verranno aggiunti al blog corrente. Usa il link "Aggiungi campo" per caricare più di un file allo stesso tempo'; 
 $messages['add_field'] = 'Aggiungi campo';
 $messages['resource_description_help'] = 'Descrizione estesa del contenuto del file';
-$messages['resource_album_help'] = 'Seleziona l\'album al quale questo file verrà aggiunto';
+$messages['resource_album_help'] = 'Seleziona l\'album al quale questo file verrà aggiunto';
 $messages['error_no_resource_uploaded'] = 'Non hai selezionato il file da caricare';
 $messages['resource_added_ok'] = 'Risorsa "%s" inserita con successo';
-$messages['error_resource_forbidden_extension'] = 'Il file non è stato aggiunto in quanto è di un tipo non ammesso (estensione vietata)';
-$messages['error_resource_too_big'] = 'Il file non è stato aggiunto in quanto troppo grande';
-$messages['error_uploads_disabled'] = 'Il file non è stato aggiunto in quanto gli upload sono stati disabilitati';
-$messages['error_quota_exceeded'] = 'Il file non è stato aggiunto in quanto lo spazio disponibile per le risorse è stato superato';
+$messages['error_resource_forbidden_extension'] = 'Il file non è stato aggiunto in quanto è di un tipo non ammesso (estensione vietata)';
+$messages['error_resource_too_big'] = 'Il file non è stato aggiunto in quanto troppo grande';
+$messages['error_uploads_disabled'] = 'Il file non è stato aggiunto in quanto gli upload sono stati disabilitati';
+$messages['error_quota_exceeded'] = 'Il file non è stato aggiunto in quanto lo spazio disponibile per le risorse è stato superato';
 $messages['error_adding_resource'] = 'E\' avvenuto un errore nell\'aggiunta della risorsa';
 
 // edit resource
@@ -379,7 +379,7 @@
 $messages['choose'] = 'Scegli';
 $messages['blog_template_help'] = 'Stile da usare per la presentazione dei contenuti del blog. La lista include gli stili globali e tutti gli stili speciali installati solo per questo blog.';
 $messages['use_read_more'] = 'Usa il link "continua..." negli articoli';
-$messages['use_read_more_help'] = 'Se abilitato, solamente quanto scritto nella casella "Testo" verrà mostrato nella pagina principale. Per visualizzare anche il "Testo esteso", sarà necessario cliccare sul link "continua...", che sarà aggiunto ad ogni articolo';
+$messages['use_read_more_help'] = 'Se abilitato, solamente quanto scritto nella casella "Testo" verrà mostrato nella pagina principale. Per visualizzare anche il "Testo esteso", sarà necessario cliccare sul link "continua...", che sarà aggiunto ad ogni articolo';
 $messages['enable_wysiwyg'] = 'Abilita l\'editor visuale per gli articoli';
 $messages['enable_wysiwyg_help'] = 'Abilita un potente editor visuale del codice HTML. L\'editor funziona con Internet Explorer 5.5 o superiore o con Mozilla 1.3 o superiore';
 $messages['enable_comments'] = 'Abilita i commenti in maniera predefinita';
@@ -390,30 +390,30 @@
 $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';
-$messages['newest_first'] = 'I più recenti in cima';
+$messages['oldest_first'] = 'I più vecchi in cima';
+$messages['newest_first'] = 'I più recenti in cima';
 $messages['categories_order'] = 'Ordine delle categorie';
 $messages['categories_order_help'] = 'Ordine nel quale le categorie devono apparire nella pagina principale';
-$messages['most_recent_updated_first'] = 'Quelle con modifiche più recenti in cima';
+$messages['most_recent_updated_first'] = 'Quelle con modifiche più recenti in cima';
 $messages['alphabetical_order'] = 'In ordine alfabetico';
 $messages['reverse_alphabetical_order'] = 'In ordine alfabetico inverso';
-$messages['most_articles_first'] = 'Quelle con più articoli in cima';
+$messages['most_articles_first'] = 'Quelle con più articoli in cima';
 $messages['link_categories_order'] = 'Ordine delle categorie di link';
 $messages['link_categories_order_help'] = 'Ordine nel quale le categorie dei link devono apparire nella pagina principale';
-$messages['most_links_first'] = 'Quelle con più link in cima';
-$messages['most_links_last'] = 'Quelle con più link in fondo';
+$messages['most_links_first'] = 'Quelle con più link in cima';
+$messages['most_links_last'] = 'Quelle con più link in fondo';
 $messages['time_offset'] = 'Fuso orario';
 $messages['time_offset_help'] = 'Numero di ore da aggiungere dinamicamente ad ogni data ed ora nel blog';
 $messages['close'] = 'Chiudi';
 $messages['select'] = 'Seleziona';
 $messages['error_updating_settings'] = 'E\' avvenuto un errore durante l\'aggiornamento delle impostazioni del blog. Controlla i dati e riprova.';
-$messages['error_invalid_number'] = 'Il numero non è corretto';
-$messages['error_incorrect_time_offset'] = 'Il fuso orario non è valido';
+$messages['error_invalid_number'] = 'Il numero non è corretto';
+$messages['error_incorrect_time_offset'] = 'Il fuso orario non è valido';
 $messages['blog_settings_updated_ok'] = 'Impostazioni del blog aggiornate con successo';
 $messages['hours'] = 'Ore';
 
 // user settings
-$messages['username_help'] = 'Nome utente pubblico. Non è possibile modificarlo.';
+$messages['username_help'] = 'Nome utente pubblico. Non è possibile modificarlo.';
 $messages['full_name'] = 'Nome completo';
 $messages['full_name_help'] = 'Nome completo';
 $messages['password_help'] = 'Scrivi una password e confermala, oppure lascia vuoto per lasciare invariata quella corrente';
@@ -421,10 +421,10 @@
 $messages['email'] = 'Email';
 $messages['email_help'] = 'Indirizzo email al quale spedire le modifiche';
 $messages['bio'] = 'Informazioni su di te';
-$messages['bio_help'] = 'Puoi scrivere qui una descrizione più estesa di te stesso';
+$messages['bio_help'] = 'Puoi scrivere qui una descrizione più estesa di te stesso';
 $messages['picture'] = 'Immagine';
 $messages['user_picture_help'] = 'Seleziona un\'immagine da quelle caricate su questo blog come immagine personale';
-$messages['error_invalid_password'] = 'La password non è corretta. Controlla che non sia troppo corta';
+$messages['error_invalid_password'] = 'La password non è corretta. Controlla che non sia troppo corta';
 $messages['error_passwords_dont_match'] = 'Le password non coincidono';
 $messages['error_updating_user_settings'] = 'E\' avvenuto un errore durante l\'aggiornamento delle impostazioni. Controlla i dati e riprova';
 $messages['user_settings_updated_ok'] = 'Impostazioni utente aggiornate con successo';
@@ -436,9 +436,9 @@
 
 // blog users
 $messages['revoke_permissions'] = 'Revoca i permessi';
-$messages['error_no_users_selected'] = 'Non è stato selezionato alcun utente';
-$messages['user_removed_from_blog_ok'] = 'L\'utente "%s" non ha più l\'autorizzazione ad accedere a questo blog';
-$messages['users_removed_from_blog_ok'] = '%s utenti non hanno più l\'autorizzazione ad accedere a questo blog';
+$messages['error_no_users_selected'] = 'Non è stato selezionato alcun utente';
+$messages['user_removed_from_blog_ok'] = 'L\'utente "%s" non ha più l\'autorizzazione ad accedere a questo blog';
+$messages['users_removed_from_blog_ok'] = '%s utenti non hanno più l\'autorizzazione ad accedere a questo blog';
 $messages['error_removing_user_from_blog'] = 'E\' avvenuto un problema durante la rimozione dei diritti di accesso a questo blog all\'utente "%s"';
 $messages['error_removing_user_from_blog2'] = 'E\' avvenuto un problema durante la rimozione dei diritti di accesso a questo blog agli utenti con gli identificativi "%s"';
 
@@ -451,22 +451,22 @@
 $messages['error_adding_user'] = 'E\' avvenuto un errore durante la concessione delle autorizzazioni all\'utente. Controlla i dati e riprova';
 $messages['error_empty_text'] = 'E\' necessario specificare del testo';
 $messages['error_adding_user'] = 'E\' avvenuto un errore durante l\'inserimento dell\'utente. Controlla i dati e riprova.';
-$messages['error_invalid_user'] = 'Lo username "%s" non è valido o non esiste';
+$messages['error_invalid_user'] = 'Lo username "%s" non è valido o non esiste';
 $messages['user_added_to_blog_ok'] = 'L\'utente "%s" ha ora l\'autorizzazione ad accedere a questo blog';
 
 // blog templates
 $messages['error_no_templates_selected'] = 'Nessuno stile selezionato';
-$messages['error_template_is_current'] = 'Lo stile "%s" non può essere selezionato, in quanto è quello corrente';
+$messages['error_template_is_current'] = 'Lo stile "%s" non può essere selezionato, in quanto è quello corrente';
 $messages['error_removing_template'] = 'E\' avvenuto un errore durante la cancellazione dello stile "%s"';
-$messages['template_removed_ok'] = 'Lo stile "%s" è stata cancellato';
+$messages['template_removed_ok'] = 'Lo stile "%s" è stata cancellato';
 $messages['templates_removed_ok'] = '%s stili cancellati';
 
 // new blog template
-$messages['template_installed_ok'] = 'Lo stile "%s" è stato aggiunto';
+$messages['template_installed_ok'] = 'Lo stile "%s" è stato aggiunto';
 $messages['error_installing_template'] = 'E\' avvenuto un errore durante l\'installazione dello stile "%s"';
 $messages['error_missing_base_files'] = 'Mancano alcuni file dello stile';
-$messages['error_add_template_disabled'] = 'Non possono essere aggiunti nuovi stili, in quanto questa funzionalità è stata disabilitata in questo sito';
-$messages['error_must_upload_file'] = 'Non è stato caricato un pacchetto con uno stile';
+$messages['error_add_template_disabled'] = 'Non possono essere aggiunti nuovi stili, in quanto questa funzionalità è stata disabilitata in questo sito';
+$messages['error_must_upload_file'] = 'Non è stato caricato un pacchetto con uno stile';
 $messages['error_uploads_disabled'] = 'Gli upload sono stati disabilitati in questo sito';
 $messages['error_no_new_templates_found'] = 'Nessun nuovo stile trovato';
 $messages['error_template_not_inside_folder'] = 'I file dello stile devono essere contenuti in una cartella con lo stesso nome dello stile';
@@ -476,7 +476,7 @@
 $messages['error_creating_working_folder'] = 'E\' avvenuto un errore durante la creazione di una cartella temporanea per la decompressione dello stile';
 $messages['error_checking_template'] = 'E\' avvenuto un errore durante il controllo dello stile: %s';
 $messages['template_package'] = 'Pacchetto dello stile';
-$messages['blog_template_package_help']  = 'Utilizza questo modulo per caricare un nuovo stile, che sarà reso disponibile esclusivamente a questo blog. Se non fosse possibile caricare un pacchetto contenente uno stile mediante questo modulo, carica i file manualmente, e posizionali in <b>%s</b>, cioè nella cartella che contiene gli stili del tuo blog. Quindi clicca sul pulsante "<b>Cerca stili</b>". pLog effettuerà una ricerca nella cartella, ed aggiungerà automaticamente tutti gli stili trovati.';
+$messages['blog_template_package_help']  = 'Utilizza questo modulo per caricare un nuovo stile, che sarà reso disponibile esclusivamente a questo blog. Se non fosse possibile caricare un pacchetto contenente uno stile mediante questo modulo, carica i file manualmente, e posizionali in <b>%s</b>, cioè nella cartella che contiene gli stili del tuo blog. Quindi clicca sul pulsante "<b>Cerca stili</b>". pLog effettuerà una ricerca nella cartella, ed aggiungerà automaticamente tutti gli stili trovati.';
 $messages['scan_templates'] = 'Cerca stili';
 
 // site users
@@ -496,7 +496,7 @@
 $messages['none'] = 'Nessuno';
 
 // edit user
-$messages['error_invalid_user'] = 'L\'identificativo dell\'utente non è corretto o l\'utente non esiste';
+$messages['error_invalid_user'] = 'L\'identificativo dell\'utente non è corretto o l\'utente non esiste';
 $messages['error_updating_user'] = 'E\' avvenuto un errore durante l\'aggiornamento delle impostazioni dell\'utente. Controlla i dati e riprova.';
 $messages['blogs'] = 'Blog';
 $messages['user_blogs_help'] = 'Blog che questo utente possiede al momento, o ai quali ha accesso';
@@ -512,25 +512,25 @@
 $messages['owner'] = 'Proprietario';
 $messages['quota'] = 'Quota';
 $messages['bytes'] = 'byte';
-$messages['error_no_blogs_selected'] = 'Nessun blog è stato selezionato per la disabilitazione';
-$messages['error_blog_is_default_blog'] = 'Il blog "%s" non può essere disabilitato in quanto è stato selezionato come blog predefinito';
-$messages['blog_deleted_ok'] = 'Il blog "%s" è stato disabilitato';
+$messages['error_no_blogs_selected'] = 'Nessun blog è stato selezionato per la disabilitazione';
+$messages['error_blog_is_default_blog'] = 'Il blog "%s" non può essere disabilitato in quanto è stato selezionato come blog predefinito';
+$messages['blog_deleted_ok'] = 'Il blog "%s" è stato disabilitato';
 $messages['blogs_deleted_ok'] = '%s blog disabilitati';
 $messages['error_deleting_blog'] = 'E\' avvenuto un errore durante la disabilitazione del blog "%s"';
 $messages['error_deleting_blog2'] = 'E\' avvenuto un errore durante la disabilitazione del blog con identificativo "%s"';
 
 // create blog
 $messages['error_adding_blog'] = 'E\' avvenuto un errore durante l\'inserimento del blog. Controlla i dati e riprova.';
-$messages['blog_added_ok'] = 'Il blog "%s" è stato aggiunto';
+$messages['blog_added_ok'] = 'Il blog "%s" è stato aggiunto';
 
 // edit blog
 $messages['blog_status_help'] = 'Stato del blog';
-$messages['blog_owner_help'] = 'Amministratore del blog, cioè l\'utente che ha il controllo completo delle impostazioni del blog';
+$messages['blog_owner_help'] = 'Amministratore del blog, cioè l\'utente che ha il controllo completo delle impostazioni del blog';
 $messages['users'] = 'Utenti';
 $messages['blog_quota_help'] = 'Spazio su disco massimo per le risorse in byte. Imposta a 0 o lascia vuoto per far usare al blog lo spazio su disco generale';
 $messages['edit_blog_settings_updated_ok'] = 'Blog "%s" aggiornato con successo';
 $messages['error_updating_blog_settings'] = 'E\' avvenuto un errore durante l\'aggiornamento del blog "%s"';
-$messages['error_incorrect_blog_owner'] = 'L\'utente selezionato come amministratore del blog non è corretto';
+$messages['error_incorrect_blog_owner'] = 'L\'utente selezionato come amministratore del blog non è corretto';
 $messages['error_fetching_blog'] = 'E\' avvenuto un errore durante la lettura del blog';
 $messages['error_updating_blog_settings2'] = 'E\' avvenuto un errore durante l\'aggiornamento del blog. Controlla i dati e riprova.';
 $messages['add_or_remove'] = 'Aggiungi o rimuovi utenti';
@@ -539,75 +539,75 @@
 $messages['locale'] = 'Lingua';
 $messages['locale_encoding'] = 'Codifica';
 $messages['locale_deleted_ok'] = 'Lingua "%s" cancellata';
-$messages['error_no_locales_selected'] = 'Non è stata selezionata alcuna lingua da cancellare';
-$messages['error_deleting_only_locale'] = 'La lingua non può essere cancellata perché è l\'ultima rimasta nel sistema';
+$messages['error_no_locales_selected'] = 'Non è stata selezionata alcuna lingua da cancellare';
+$messages['error_deleting_only_locale'] = 'La lingua non può essere cancellata perché è l\'ultima rimasta nel sistema';
 $messages['locales_deleted_ok']= '%s lingue cancellate';
 $messages['error_deleting_locale'] = 'E\' avvenuto un errore durante la cancellazione della lingua "%s"';
-$messages['error_locale_is_default'] = 'La lingua "%s" non può essere cancellata in quanto è stata selezionata come lingua predefinita per i nuovi blog';
+$messages['error_locale_is_default'] = 'La lingua "%s" non può essere cancellata in quanto è stata selezionata come lingua predefinita per i nuovi blog';
 
 // add locale
-$messages['error_invalid_locale_file'] = 'Il file della lingua non è valido';
+$messages['error_invalid_locale_file'] = 'Il file della lingua non è valido';
 $messages['error_no_new_locales_found'] = 'Non sono state trovate nuove lingue';
 $messages['locale_added_ok'] = 'Lingua "%s" inserita con successo';
 $messages['error_saving_locale'] = 'E\' avvenuto un errore durante il salvataggio della nuova lingua';
 $messages['scan_locales'] = 'Cerca lingue';
-$messages['add_locale_help'] = 'Utilizza questo modulo per caricare una nuova lingua. Se non fosse possibile caricare un file mediante questo modulo, caricalo manualmente, e posizionalo in <b>%s</b>, cioè nella cartella che contiene i file di lingua. Quindi clicca sul pulsante "<b>Cerca lingue</b>". pLog effettuerà una ricerca nella cartella, ed aggiungerà automaticamente tutte le lingue trovate.';
+$messages['add_locale_help'] = 'Utilizza questo modulo per caricare una nuova lingua. Se non fosse possibile caricare un file mediante questo modulo, caricalo manualmente, e posizionalo in <b>%s</b>, cioè nella cartella che contiene i file di lingua. Quindi clicca sul pulsante "<b>Cerca lingue</b>". pLog effettuerà una ricerca nella cartella, ed aggiungerà automaticamente tutte le lingue trovate.';
 
 // site templates
-$messages['error_template_is_default'] = 'Lo stile "%s" non può essere rimosso in quanto è quello predefinito per i nuovi blog';
+$messages['error_template_is_default'] = 'Lo stile "%s" non può essere rimosso in quanto è quello predefinito per i nuovi blog';
 
 // add template
-$messages['global_template_package_help'] = 'Utilizza questo modulo per caricare un nuovo stile, che sarà reso disponibile a tutti i blog nel sito. Se non fosse possibile caricare un pacchetto contenente uno stile mediante questo modulo, carica i file manualmente, e posizionali in <b>%s</b>, cioè nella cartella che contiene gli stili del tuo blog. Quindi clicca sul pulsante "<b>Cerca stili</b>". pLog effettuerà una ricerca nella cartella, ed aggiungerà automaticamente tutti gli stili trovati.';
+$messages['global_template_package_help'] = 'Utilizza questo modulo per caricare un nuovo stile, che sarà reso disponibile a tutti i blog nel sito. Se non fosse possibile caricare un pacchetto contenente uno stile mediante questo modulo, carica i file manualmente, e posizionali in <b>%s</b>, cioè nella cartella che contiene gli stili del tuo blog. Quindi clicca sul pulsante "<b>Cerca stili</b>". pLog effettuerà una ricerca nella cartella, ed aggiungerà automaticamente tutti gli stili trovati.';
 
 // global settings
 $messages['site_config_saved_ok'] = 'Le impostazioni del sito sono state salvate';
 $messages['error_saving_site_config'] = 'E\' avvenuto un errore durante il salvataggio delle impostazioni del sito';
 /// general settings
-$messages['help_comments_enabled'] = 'Abilita automaticamente i commenti per i nuovi blog. [Predefinito = Sì]';
-$messages['help_beautify_comments_text'] = 'Se abilitato, i commenti aggiunti dagli utenti verranno formattati aggiungendo i marcatori di paragrafo e rendendo cliccabili gli URL [Predefinito = Sì]';
-$messages['help_temp_folder'] = 'Cartella che pLog può usare per scrivere i propri dati temporanei, come le cornici compilate, ecc. Utilizza una cartella al di fuori di quelle accessibili dal server web, per aumentare la sicurezza. [Predefinito = ./tmp]';
-$messages['help_base_url'] = 'URL di base dove è installato questo blog';
+$messages['help_comments_enabled'] = 'Abilita automaticamente i commenti per i nuovi blog. [Predefinito = Sì]';
+$messages['help_beautify_comments_text'] = 'Se abilitato, i commenti aggiunti dagli utenti verranno formattati aggiungendo i marcatori di paragrafo e rendendo cliccabili gli URL [Predefinito = Sì]';
+$messages['help_temp_folder'] = 'Cartella che pLog può usare per scrivere i propri dati temporanei, come le cornici compilate, ecc. Utilizza una cartella al di fuori di quelle accessibili dal server web, per aumentare la sicurezza. [Predefinito = ./tmp]';
+$messages['help_base_url'] = 'URL di base dove è installato questo blog';
 $messages['help_subdomains_enabled'] = 'Abilita o disabilita i sottodomini. Consulta la documentazione per avere maggiori informazioni su questo argomento [Predefinito = No]';
-$messages['help_include_blog_id_in_url'] = 'Significativo solamente se sono abilitati sia i sottodomini che gli URL "normali". Forza gli URL generati internamente ad omettere il parametro "blogId". Non cambiare questa impostazione se non ne comprendi a pieno le conseguenze [Predefinito = Sì]';
+$messages['help_include_blog_id_in_url'] = 'Significativo solamente se sono abilitati sia i sottodomini che gli URL "normali". Forza gli URL generati internamente ad omettere il parametro "blogId". Non cambiare questa impostazione se non ne comprendi a pieno le conseguenze [Predefinito = Sì]';
 $messages['help_script_name'] = 'Modifica questa impostazione se desideri rinominare index.php [Predefinito = index.php]';
 $messages['help_show_posts_max'] = 'Numero massimo di articoli mostrati nella pagina principale. Significativo solo per i nuovi blog [Predefinito = 15]';
 $messages['help_recent_posts_max'] = 'Numero massimo di articoli recenti mostrati nella pagina principale. Significativo solo per i nuovi blog [Predefinito = 10]';
-$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Abilita la funzionalità che permette di salvare le bozze utilizzando Javascript e XmlHttpRequest [Predefinito = Sì]';
+$messages['help_save_drafts_via_xmlhttprequest_enabled'] = 'Abilita la funzionalità che permette di salvare le bozze utilizzando Javascript e XmlHttpRequest [Predefinito = Sì]';
 $messages['help_locale_folder'] = 'Cartella dove sono contenuti i file di lingua [Predefinito = ./locale]';
 $messages['help_default_locale'] = 'Lingua predefinita per i nuovi blog [Predefinito = en_UK]';
 $messages['help_default_blog_id'] = 'Blog da mostrare se non ne viene esplicitamente specificato uno [Predefinito = 1]';
 $messages['help_default_time_offset'] = 'Fuso orario predefinito per i nuovi blog [Predefinito = 0]';
 $messages['help_html_allowed_tags_in_comments'] = 'Lista, separata da spazi, dei tag HTML che sono permessi nei commenti [Predefinito = &lt;a&gt;&lt;i&gt;&lt;br&gt;&lt;br/&gt;&lt;b&gt;]';
-$messages['help_referer_tracker_enabled'] = 'Abilita la caratteristica che permette di salvare i referrer nel database. Imposta a No (disabilitato) per aumentare le prestazioni [Predefinito = Sì]';
-$messages['help_show_more_enabled'] = 'Abilita la caratteristica "Continua..." in modo predefinito per i nuovi blog [Predefinito = Sì]';
-$messages['help_update_article_reads'] = 'Abilita l\' aggiornamento del contatore del numero di volte in cui l\'articolo è stato letto. Imposta a No (disabilitato) per aumentare le prestazioni [Predefinito = Sì]';
-$messages['help_update_cached_article_reads'] = 'Abilita l\' aggiornamento del contatore del numero di volte in cui l\'articolo è stato letto, anche nel caso nel quale il caching è stato abilitato [Predefinito = Sì]';
-$messages['help_xmlrpc_ping_enabled'] = 'Abilita la spedizione di ping XMLRPC a siti che supportano questa caratteristica [Predefinito = Sì]';
-$messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Abilita in modo predefinito questa caratteristica quando un articolo viene postato o aggiornato [Predefinito = Sì]';
+$messages['help_referer_tracker_enabled'] = 'Abilita la caratteristica che permette di salvare i referrer nel database. Imposta a No (disabilitato) per aumentare le prestazioni [Predefinito = Sì]';
+$messages['help_show_more_enabled'] = 'Abilita la caratteristica "Continua..." in modo predefinito per i nuovi blog [Predefinito = Sì]';
+$messages['help_update_article_reads'] = 'Abilita l\' aggiornamento del contatore del numero di volte in cui l\'articolo è stato letto. Imposta a No (disabilitato) per aumentare le prestazioni [Predefinito = Sì]';
+$messages['help_update_cached_article_reads'] = 'Abilita l\' aggiornamento del contatore del numero di volte in cui l\'articolo è stato letto, anche nel caso nel quale il caching è stato abilitato [Predefinito = Sì]';
+$messages['help_xmlrpc_ping_enabled'] = 'Abilita la spedizione di ping XMLRPC a siti che supportano questa caratteristica [Predefinito = Sì]';
+$messages['help_send_xmlrpc_pings_enabled_by_default'] = 'Abilita in modo predefinito questa caratteristica quando un articolo viene postato o aggiornato [Predefinito = Sì]';
 $messages['help_xmlrpc_ping_hosts'] = 'URL che puntano alle interfacce ping XMLRPC dei siti che li supportano. Inserire un URL per riga [Predefinito = http://rpc.weblogs.com/RPC2]';
-$messages['help_trackback_server_enabled'] = 'Abilita la ricezione di trackback in ingresso [Predefinito = Sì]';
-$messages['help_htmlarea_enabled'] = 'Abilita l\'editor visuale degli articoli per i nuovi blog in maniera predefinita [Predefinito = Sì]';
-$messages['help_plugin_manager_enabled'] = 'Abilita i plugin [Predefinito = Sì]';
+$messages['help_trackback_server_enabled'] = 'Abilita la ricezione di trackback in ingresso [Predefinito = Sì]';
+$messages['help_htmlarea_enabled'] = 'Abilita l\'editor visuale degli articoli per i nuovi blog in maniera predefinita [Predefinito = Sì]';
+$messages['help_plugin_manager_enabled'] = 'Abilita i plugin [Predefinito = Sì]';
 $messages['help_minimum_password_length'] = 'Lunghezza minima delle password [Predefinito = 4]';
-$messages['help_xhtml_converter_enabled'] = 'Se abilitato, pLog tenterà di convertire il codice HTML in codice XHTML corretto [Predefinito = Sì]';
-$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'Se abilitato, pLog tenterà di convertire il codice HTML in codice XHTML in modo più aggressivo. Questo tuttavia potrà generare errori [Predefinito = No]';
+$messages['help_xhtml_converter_enabled'] = 'Se abilitato, pLog tenterà di convertire il codice HTML in codice XHTML corretto [Predefinito = Sì]';
+$messages['help_xhtml_converter_aggressive_mode_enabled'] = 'Se abilitato, pLog tenterà di convertire il codice HTML in codice XHTML in modo più aggressivo. Questo tuttavia potrà generare errori [Predefinito = No]';
 $messages['help_session_save_path'] = 'Usa questa impostazione per cambiare la cartella nella quale pLog tiene i dati della sessione, mediante la funzione di PHP session_save_path(). Assicurati che la cartella sia scrivibile dal server. Lascia vuoto per utilizzare la cartella delle sessioni predefinita di PHP [Predefinito = (vuoto)]';
 // summary settings
-$messages['help_summary_page_show_max'] = 'Numero di elementi che verranno mostrati nella pagina di riepilogo. Questo parametro controlla tutte le lista nella pagina di sommario (articoli recenti, blog più attivi, ecc.) [Predefinito = 10]';
+$messages['help_summary_page_show_max'] = 'Numero di elementi che verranno mostrati nella pagina di riepilogo. Questo parametro controlla tutte le lista nella pagina di sommario (articoli recenti, blog più attivi, ecc.) [Predefinito = 10]';
 $messages['help_summary_items_per_page'] = 'Numero di blog per pagina nella sezione "Lista dei blog" [Predefinito = 25]';
 $messages['help_forbidden_usernames'] = 'Lista di nomi utente, separati da spazi, che non possono essere registrati [Predefinito = admin www blog ftp]';
 $messages['help_force_one_blog_per_email_account'] = 'Permetti solo un blog per indirizzo email [Predefinito = No]';
-$messages['help_summary_show_agreement'] = 'Mostra agli utenti un testo con le condizioni da accettare prima di completare il processo di registrazione [Predefinito = Sì]';
-$messages['help_need_email_confirm_registration'] = 'Obbliga gli utenti a confermare la loro registrazione, cliccando un link contenuto in un messaggio email inviato al loro account [Predefinito = Sì]';
-$messages['help_summary_disable_registration'] = 'Disabilita la possibilità di registrare nuovi blog in questo sito [Predefinito = No]';
+$messages['help_summary_show_agreement'] = 'Mostra agli utenti un testo con le condizioni da accettare prima di completare il processo di registrazione [Predefinito = Sì]';
+$messages['help_need_email_confirm_registration'] = 'Obbliga gli utenti a confermare la loro registrazione, cliccando un link contenuto in un messaggio email inviato al loro account [Predefinito = Sì]';
+$messages['help_summary_disable_registration'] = 'Disabilita la possibilità di registrare nuovi blog in questo sito [Predefinito = No]';
 // templates
 $messages['help_template_folder'] = 'Cartella dove vengono salvati gli stili [Predefinito = ./templates]';
 $messages['help_default_template'] = 'Stile predefinito per i nuovi blog [Predefinito = standard]';
-$messages['help_users_can_add_templates'] = 'Permette agli utenti di caricare i propri stili [Predefinito = Sì]';
-$messages['help_template_compile_check'] = 'Se abilitato, Smarty controllerà ogni volta se i file dello stile sono stati modificati, e, se sì, userà la nuova versione. Disabilitare per aumentare le prestazioni. [Predefinito = Sì]';
-$messages['help_template_cache_enabled'] = 'Abilita la cache degli stili. Se abilitata, la versione in cache dello stile verrà utilizzata quando possibile. Non sarà necessario estrarre dati dal database, e gli stili non dovranno venire ricompilati [Predefinito = Sì]';
-$messages['help_template_cache_lifetime'] = 'Tempo di validità in secondi della cache. Imposta a -1 per forzare la cache a non scadere mai. Se impostato a 0 la cache verrà disabilitata, per ottenere lo stesso effetto è tuttavia preferibile impostare l\'opzione template_cache_enabled a "No" [Predefinito = -1]';
-$messages['help_template_http_cache_enabled'] = 'Abilita il supporto per le richieste HTTP condizionate. Se abilitate, pLog prenderà in considerazione l\'intestazione HTTP "If-Modified-Since", e spedirà il contenuto solo se strettamente necessario. Abilita per risparmiare banda. [Predefinito = Sì]';
+$messages['help_users_can_add_templates'] = 'Permette agli utenti di caricare i propri stili [Predefinito = Sì]';
+$messages['help_template_compile_check'] = 'Se abilitato, Smarty controllerà ogni volta se i file dello stile sono stati modificati, e, se sì, userà la nuova versione. Disabilitare per aumentare le prestazioni. [Predefinito = Sì]';
+$messages['help_template_cache_enabled'] = 'Abilita la cache degli stili. Se abilitata, la versione in cache dello stile verrà utilizzata quando possibile. Non sarà necessario estrarre dati dal database, e gli stili non dovranno venire ricompilati [Predefinito = Sì]';
+$messages['help_template_cache_lifetime'] = 'Tempo di validità in secondi della cache. Imposta a -1 per forzare la cache a non scadere mai. Se impostato a 0 la cache verrà disabilitata, per ottenere lo stesso effetto è tuttavia preferibile impostare l\'opzione template_cache_enabled a "No" [Predefinito = -1]';
+$messages['help_template_http_cache_enabled'] = 'Abilita il supporto per le richieste HTTP condizionate. Se abilitate, pLog prenderà in considerazione l\'intestazione HTTP "If-Modified-Since", e spedirà il contenuto solo se strettamente necessario. Abilita per risparmiare banda. [Predefinito = Sì]';
 $messages['help_allow_php_code_in_templates'] = 'Permetti di incorporare codice PHP negli stili Smarty, racchiudendolo in blocchi {php}...{/php} [Predefinito = No]';
 // urls
 $messages['help_request_format_mode'] = 'Seleziona uno dei formati URL disponibili. Se utilizzi URL personalizzati, imposta le opzioni qui sotto [Predefinito = Normale]';
@@ -627,13 +627,13 @@
 $messages['help_resource_medium_size_preview_link_format'] = 'Formato dei link alle anteprime di medie dimensioni delle risorse quando vengono utilizzati URL personalizzati  [Predefinito = /blog/{blogname}/resource/{albumname}/preview-med/{resourcename}$]';
 $messages['help_resource_download_link_format'] = 'Formato dei link ai file quando vengono utilizzati URL personalizzati  [Predefinito = /blog/{blogname}/resource/{albumname}/download/{resourcename}$]';
 // email
-$messages['help_check_email_address_validity'] = 'Durante il controllo dell\'indirizzo email, esegui alcuni controlli di base per vedere se esiste un record MX nel dominio specificato, e, in tal caso, se la casella è effettivamente valida [Predefinito = No]';
-$messages['help_email_service_enabled'] = 'Abilita la spedizione di email [Predefinito = Sì]';
+$messages['help_check_email_address_validity'] = 'Durante il controllo dell\'indirizzo email, esegui alcuni controlli di base per vedere se esiste un record MX nel dominio specificato, e, in tal caso, se la casella è effettivamente valida [Predefinito = No]';
+$messages['help_email_service_enabled'] = 'Abilita la spedizione di email [Predefinito = Sì]';
 $messages['help_post_notification_source_address'] = 'Indirizzo email che compare nel campo "Da:" ("From:") nelle email spedite da pLog [Predefinito = noreply at your.host.com]';
 $messages['help_email_service_type'] = 'Sistema da usare per la spedizione delle email [Predefinito = PHP]';
-$messages['help_smtp_host'] = 'Se viene utilizzato SMTP per la spedizione delle email, imposta qui il server SMTP che verrà utilizzato per la spedizione [Predefinito = (vuoto)]';
+$messages['help_smtp_host'] = 'Se viene utilizzato SMTP per la spedizione delle email, imposta qui il server SMTP che verrà utilizzato per la spedizione [Predefinito = (vuoto)]';
 $messages['help_smtp_port'] = 'Se il server SMTP utilizza una porta differente dalla 25, configura qui il suo valore [Predefinito = (vuoto)]';
-$messages['help_smtp_use_authentication'] = 'Rispondi Sì se il server richiede l\'autenticazione di base [Predefinito = No]';
+$messages['help_smtp_use_authentication'] = 'Rispondi Sì se il server richiede l\'autenticazione di base [Predefinito = No]';
 $messages['help_smtp_username'] = 'Se il server SMTP richiede autenticazione, imposta qui il nome utente [Predefinito = (vuoto)]';
 $messages['help_smtp_password'] = 'Se il server SMTP richiede autenticazione, imposta qui la password [Predefinito = (vuoto)]';
 // helpers
@@ -643,55 +643,55 @@
 $messages['help_path_to_unzip'] = 'Percorso al comando "unzip", necessario per scompattare i pacchetti stile in formato .zip [Predefinito = /usr/bin/unzip]';
 $messages['help_unzip_use_native_version'] = 'Usa lo zip fornito nativamente da PHP per scompattare gli archivi zip [Predefinito = No]';
 // uploads
-$messages['help_uploads_enabled'] = 'Abilita gli utenti a caricare file. Questo riguarda la sezione delle risorse e il caricamento di cornici personalizzate e lingue [Predefinito = Sì]';
-$messages['help_maximum_file_upload_size'] = 'Dimensione massima del file in byte. Questo limite non può superare quello impostato per PHP [Predefinito = 2000000]';
+$messages['help_uploads_enabled'] = 'Abilita gli utenti a caricare file. Questo riguarda la sezione delle risorse e il caricamento di cornici personalizzate e lingue [Predefinito = Sì]';
+$messages['help_maximum_file_upload_size'] = 'Dimensione massima del file in byte. Questo limite non può superare quello impostato per PHP [Predefinito = 2000000]';
 $messages['help_upload_forbidden_files'] = 'Lista dei tipi di file che non possono essere caricati. E\' possibile usare \'*\' e \'?\' [Predefinito = *.php *.php3 *.php4 *.phtml]';
 // interfaces
 $messages['help_xmlrpc_api_enabled'] = 'Abilita l\'accesso ai blog mediante XMLRPC [Predefinito = No]';
-$messages['help_rdf_enabled'] = 'Abilita la preparazione dei contenuti mediante Atom e RSS (syndication) [Predefinito = Sì]';
+$messages['help_rdf_enabled'] = 'Abilita la preparazione dei contenuti mediante Atom e RSS (syndication) [Predefinito = Sì]';
 $messages['help_default_rss_profile'] = 'Versione predefinita di RSS o Atom da usare per la preparazione dei contenuti, quando non specificato diversamente [Predefinito = RSS 1.0]';
 // security
-$messages['help_security_pipeline_enabled'] = 'Abilita la pipeline relativa alla sicurezza e tutti i filtri connessi. Questo influenza anche i plugin che registrano nuovi filtri  [Predefinito = Sì]';
-$messages['help_maximum_comment_size'] = 'Dimensione massima in byte che un commento può avere. Imposta a 0 per disabilitare questo controllo [Predefinito = 0]';
+$messages['help_security_pipeline_enabled'] = 'Abilita la pipeline relativa alla sicurezza e tutti i filtri connessi. Questo influenza anche i plugin che registrano nuovi filtri  [Predefinito = Sì]';
+$messages['help_maximum_comment_size'] = 'Dimensione massima in byte che un commento può avere. Imposta a 0 per disabilitare questo controllo [Predefinito = 0]';
 // bayesian filter
-$messages['help_bayesian_filter_enabled'] = 'Abilita il filtro Bayesiano per ottenere un filtraggio automatico dello spam [Predefinito = Sì]';
-$messages['help_bayesian_filter_spam_probability_treshold'] = 'Soglia massima prima della quale un commento può essere considerato spam [Predefinito = 0.9]';
-$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Soglia minima dopo la quale un articolo può essere considerato non spam [Predefinito = 0.2]';
-$messages['help_bayesian_filter_min_length_token'] = 'Lunghezza minima di un simbolo affinché venga considerato significativo per il filtro Bayesiano [Predefinito = 3]';
-$messages['help_bayesian_filter_max_length_token'] = 'Lunghezza massima di un simbolo affinché venga considerato significativo per il filtro Bayesiano [Predefinito = 100]';
+$messages['help_bayesian_filter_enabled'] = 'Abilita il filtro Bayesiano per ottenere un filtraggio automatico dello spam [Predefinito = Sì]';
+$messages['help_bayesian_filter_spam_probability_treshold'] = 'Soglia massima prima della quale un commento può essere considerato spam [Predefinito = 0.9]';
+$messages['help_bayesian_filter_nonspam_probability_treshold'] = 'Soglia minima dopo la quale un articolo può essere considerato non spam [Predefinito = 0.2]';
+$messages['help_bayesian_filter_min_length_token'] = 'Lunghezza minima di un simbolo affinché venga considerato significativo per il filtro Bayesiano [Predefinito = 3]';
+$messages['help_bayesian_filter_max_length_token'] = 'Lunghezza massima di un simbolo affinché venga considerato significativo per il filtro Bayesiano [Predefinito = 100]';
 $messages['help_bayesian_filter_number_significant_tokens'] = 'Numero di simboli significativi [Predefinito = 15]';
 $messages['help_bayesian_filter_spam_comments_action'] = 'Cosa fare con i commenti classificati spam  [Predefinito = Conserva]';
 $messages['keep_spam_comments'] = 'Conservali nel database, marcandoli come "Spam"';
 $messages['throw_away_spam_comments'] = 'Cancellali senza salvarli';
 // resources
-$messages['help_resources_enabled'] = 'Abilita le risorse [Predefinito = Sì]';
+$messages['help_resources_enabled'] = 'Abilita le risorse [Predefinito = Sì]';
 $messages['help_resources_folder'] = 'Cartella dove le risorse sono salvate. Seleziona una cartella al di fuori del server, per aumentare la sicurezza [Predefinito = ./gallery]';
-$messages['help_thumbnail_method'] = 'Metodo utilizzato per la generazione delle miniature. Se viene usato PHP, è necessario il supporto per GD [Predefinito = PHP]';
-$messages['help_path_to_convert'] = 'Percorso del comando "convert" di ImageMagick. Obbligatorio se il metodo di creazione delle miniature è "ImageMagick" [Predefinito = /usr/bin/convert]';
+$messages['help_thumbnail_method'] = 'Metodo utilizzato per la generazione delle miniature. Se viene usato PHP, è necessario il supporto per GD [Predefinito = PHP]';
+$messages['help_path_to_convert'] = 'Percorso del comando "convert" di ImageMagick. Obbligatorio se il metodo di creazione delle miniature è "ImageMagick" [Predefinito = /usr/bin/convert]';
 $messages['help_thumbnail_format'] = 'Formato nel quale vengono salvate le miniature [Predefinito = Quello dell\'immagine]';
 $messages['help_thumbnail_height'] = 'Altezza predefinita per le miniature piccole [Predefinito = 120]';
 $messages['help_thumbnail_width'] = 'Larghezza predefinita per le miniature piccole [Predefinito = 120]';
 $messages['help_medium_size_thumbnail_height'] = 'Altezza predefinita per le miniature [Predefinito = 480]';
 $messages['help_medium_size_thumbnail_width'] = 'Larghezza predefinita per le miniature medie [Predefinito = 640]';
-$messages['help_thumbnails_keep_aspect_ratio'] = 'Mantieni le proporzioni nella generazione delle anteprime. Se abilitato, le anteprime potrebbero essere di dimensioni maggiori di quanto specificato sopra, tuttavia la qualità è migliore [Predefinito = Sì]';
+$messages['help_thumbnails_keep_aspect_ratio'] = 'Mantieni le proporzioni nella generazione delle anteprime. Se abilitato, le anteprime potrebbero essere di dimensioni maggiori di quanto specificato sopra, tuttavia la qualità è migliore [Predefinito = Sì]';
 $messages['help_thumbnail_generator_force_use_gd1'] = 'Permetti a pLog di usare solamente le funzioni di GD-1 [Predefinito = No]';
-$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Algoritmo per lo smoothing delle miniature. Utilizzato solamente se il metodo per le miniature è GD [Predefinito = Sì]';
+$messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Algoritmo per lo smoothing delle miniature. Utilizzato solamente se il metodo per le miniature è GD [Predefinito = Sì]';
 $messages['help_resources_quota'] = 'Spazio su disco massimo disponibile per i blog in byte (esempio: 5242880 Byte = 5MB). Impostare a 0 per non porre limite [Predefinito = 0]';
 $messages['help_resource_server_http_cache_enabled'] = 'Abilita il supporto per le richieste HTTP condizionate, con intestazione "If-Modified-Since".. Abilita per migliorare il risparmio di banda [Predefinito = No]';
 $messages['help_resource_server_http_cache_lifetime'] = 'Tempo in microsecondi per il quale i client devono usare la versione in cache delle risorse [Predefinito = 9999999]';
 $messages['same_as_image'] = 'Come l\'immagine originale';
 // search
-$messages['help_search_engine_enabled'] = 'Abilita il motore di ricerca [Predefinito = Sì]';
-$messages['help_search_in_custom_fields'] = 'Cerca nei campi personalizzati  [Predefinito = Sì]';
-$messages['help_search_in_comments'] = 'Cerca nei commenti [Predefinito = Sì]';
+$messages['help_search_engine_enabled'] = 'Abilita il motore di ricerca [Predefinito = Sì]';
+$messages['help_search_in_custom_fields'] = 'Cerca nei campi personalizzati  [Predefinito = Sì]';
+$messages['help_search_in_comments'] = 'Cerca nei commenti [Predefinito = Sì]';
 
 // cleanup
 $messages['purge'] = 'Pulisci';
 $messages['cleanup_spam'] = 'Pulisci lo spam';
-$messages['cleanup_spam_help'] = 'Tutti i commenti marcati dagli utenti come spam verranno eliminati. Non sarà possibile annullare l\'operazione, una volta cancellati';
+$messages['cleanup_spam_help'] = 'Tutti i commenti marcati dagli utenti come spam verranno eliminati. Non sarà possibile annullare l\'operazione, una volta cancellati';
 $messages['spam_comments_purged_ok'] = 'Commenti marcati come spam cancellati';
 $messages['cleanup_posts'] = 'Pulisci gli articoli';
-$messages['cleanup_posts_help'] = 'Tutti gli articoli cancellati (marcati dagli utenti come "cancellati") verranno eliminati. Non sarà possibile annullare l\'operazione, una volta cancellati';
+$messages['cleanup_posts_help'] = 'Tutti gli articoli cancellati (marcati dagli utenti come "cancellati") verranno eliminati. Non sarà possibile annullare l\'operazione, una volta cancellati';
 $messages['posts_purged_ok'] = 'Articoli cancellati';
 
 /// summary ///
@@ -699,12 +699,12 @@
 $messages['summary'] = 'Sommario';
 $messages['register'] = 'Registrati';
 $messages['summary_welcome'] = 'Benvenuto!';
-$messages['summary_most_active_blogs'] = 'I blog più attivi';
-$messages['summary_most_commented_articles'] = 'Gli articoli più commentati';
-$messages['summary_most_read_articles'] = 'Gli articoli più letti';
+$messages['summary_most_active_blogs'] = 'I blog più attivi';
+$messages['summary_most_commented_articles'] = 'Gli articoli più commentati';
+$messages['summary_most_read_articles'] = 'Gli articoli più letti';
 $messages['password_forgotten'] = 'Dimenticato la password?';
-$messages['summary_newest_blogs'] = 'I blog più recenti';
-$messages['summary_latest_posts'] = 'Gli articoli più recenti';
+$messages['summary_newest_blogs'] = 'I blog più recenti';
+$messages['summary_latest_posts'] = 'Gli articoli più recenti';
 $messages['summary_search_blogs'] = 'Cerca nei blog';
 
 // blog list
@@ -722,7 +722,7 @@
 $messages['accept'] = 'Accetta';
 $messages['read_service_agreement'] = 'Leggi le condizioni di questo servizio, e clicca sul pulsante "Accetta" se sei d\'accordo';
 $messages['register_step1_title'] = 'Crea un utente [1/4]';
-$messages['register_step1_help'] = 'Per prima cosa, per avere un blog è necessario creare un utente. Questo utente sarà il proprietario del blog, ed avrà accesso a tutte le sue funzionalità.';
+$messages['register_step1_help'] = 'Per prima cosa, per avere un blog è necessario creare un utente. Questo utente sarà il proprietario del blog, ed avrà accesso a tutte le sue funzionalità.';
 $messages['register_next'] = 'Avanti';
 $messages['register_back'] = 'Indietro';
 $messages['register_step2_title'] = 'Crea un blog [2/4]';
@@ -731,20 +731,20 @@
 $messages['step1'] = 'Passo 1';
 $messages['step2'] = 'Passo 2';
 $messages['step3'] = 'Passo 3';
-$messages['register_step3_help'] = 'Seleziona uno degli stili disponibili, che diventerà quello predefinito del tuo blog. Sarà sempre possibile cambiarlo in seguito';
+$messages['register_step3_help'] = 'Seleziona uno degli stili disponibili, che diventerà quello predefinito del tuo blog. Sarà sempre possibile cambiarlo in seguito';
 $messages['error_must_choose_template'] = 'E\' necessario selezionare uno stile';
 $messages['select_template'] = 'Seleziona uno stile';
 $messages['register_step5_title'] = 'Congratulazioni! [4/4]';
 $messages['finish'] = 'Termina';
-$messages['register_need_confirmation'] = 'Un messaggio di posta elettronica è stato spedito al tuo indirizzo email, per confermare l\'attivazione. Appena lo ricevi, clicca sul link che contiene, per poter iniziare a usare il tuo blog!';
+$messages['register_need_confirmation'] = 'Un messaggio di posta elettronica è stato spedito al tuo indirizzo email, per confermare l\'attivazione. Appena lo ricevi, clicca sul link che contiene, per poter iniziare a usare il tuo blog!';
 $messages['register_step5_help'] = 'Congratulazioni! Il tuo nuovo utente e il tuo blog sono stati creati';
 $messages['register_blog_link'] = 'Se vuoi dare un\'occhiata al tuo nuovo blog, usa questo link: <a href="%2$s">%1$s</a>';
 $messages['register_blog_admin_link'] = 'Se preferisci scrivere un articolo subito, clicca qui per entrare nell\'<a href="admin.php">interfaccia di amministrazione</a>';
 $messages['register_error'] = 'E\' avvenuto un errore durante l\'operazione';
-$messages['error_registration_disabled'] = 'Spiacente, ma la creazione di nuovi blog è stata disabilitata in questo sito';
+$messages['error_registration_disabled'] = 'Spiacente, ma la creazione di nuovi blog è stata disabilitata in questo sito';
 // registration article topic and text
 $messages['register_default_article_topic'] = 'Congratulazioni!';
-$messages['register_default_article_text'] = 'Se stai leggendo questo articolo, significa che il processo di registrazione è stato completato con successo: puoi cominciare ad usare il tuo blog!';
+$messages['register_default_article_text'] = 'Se stai leggendo questo articolo, significa che il processo di registrazione è stato completato con successo: puoi cominciare ad usare il tuo blog!';
 $messages['register_default_category'] = 'Generale';
 // confirmation email
 $messages['register_confirmation_email_text'] = 'Visita la seguente pagina per attivare il tuo blog:
@@ -754,69 +754,69 @@
 Ciao!
 
 Se il link dovesse risultare spezzato su piu\' righe, utilizzare il copia incolla per ricomporlo.';
-$messages['error_invalid_activation_code'] = 'Spiacente, ma il codice di conferma non è valido';
+$messages['error_invalid_activation_code'] = 'Spiacente, ma il codice di conferma non è valido';
 $messages['blog_activated_ok'] = 'Congratulazioni! Il tuo nuovo utente ed il tuo blog sono stati convalidati con successo';
 // forgot your password?
 $messages['reset_password'] = 'Reimposta la tua password';
 $messages['reset_password_username_help'] = 'Nome dell\'utente a cui reimpostare la password';
-$messages['reset_password_email_help'] = 'Indirizzo email che è stato utilizzato per registrare questo utente';
-$messages['reset_password_help'] = 'Usa questo form per reimpostare la password del tuo utente, nel caso te la fossi dimenticata. Inserisci il nome dell\'utente, di cui vorresti reimpostare la password, e l\'indirizzo email che è stato usato, per registrare l\'utente';
+$messages['reset_password_email_help'] = 'Indirizzo email che è stato utilizzato per registrare questo utente';
+$messages['reset_password_help'] = 'Usa questo form per reimpostare la password del tuo utente, nel caso te la fossi dimenticata. Inserisci il nome dell\'utente, di cui vorresti reimpostare la password, e l\'indirizzo email che è stato usato, per registrare l\'utente';
 $messages['error_resetting_password'] = 'E\' avvenuto un errore durante l\'azzeramento della password. Controlla i dati e riprova';
-$messages['reset_password_error_incorrect_email_address'] = 'L\'indirizzo email non è corretto, o non è l\'indirizzo usato per la registrazione di questo utente';
-$messages['password_reset_message_sent_ok'] = 'Un messaggio con un link è stato inviato al tuo indirizzo di posta elettronica. Visita il link che contiene, per reimpostare la tua password';
+$messages['reset_password_error_incorrect_email_address'] = 'L\'indirizzo email non è corretto, o non è l\'indirizzo usato per la registrazione di questo utente';
+$messages['password_reset_message_sent_ok'] = 'Un messaggio con un link è stato inviato al tuo indirizzo di posta elettronica. Visita il link che contiene, per reimpostare la tua password';
 $messages['error_incorrect_request'] = 'I parametri nell\'URL non sono corretti';
 $messages['change_password'] = 'Imposta la nuova password';
 $messages['change_password_help'] = 'Inserisci e conferma la tua nuova password';
 $messages['new_password'] = 'Nuova password';
 $messages['new_password_help'] = 'Inserisci qui la tua nuova password';
-$messages['password_updated_ok'] = 'La password è stata modificata';
+$messages['password_updated_ok'] = 'La password è stata modificata';
 
 // Suggested by BCSE, some useful messages that not available in official locale
-$messages['upgrade_information'] = 'Questa pagina ha un aspetto semplice e senza stile, perché stai usando un browser che non è compatibile con gli standard. Per vederlo nel suo aspetto migliore, ti preghiamo di <a href="http://www.webstandards.org/upgrade/" title="The Web Standards Project\'s Browser Upgrade initiative">aggiornarlo</a> ad un browser che supporti gli standard del web. E\' gratis, ed è indolore.';
+$messages['upgrade_information'] = 'Questa pagina ha un aspetto semplice e senza stile, perché stai usando un browser che non è compatibile con gli standard. Per vederlo nel suo aspetto migliore, ti preghiamo di <a href="http://www.webstandards.org/upgrade/" title="The Web Standards Project\'s Browser Upgrade initiative">aggiornarlo</a> ad un browser che supporti gli standard del web. E\' gratis, ed è indolore.';
 $messages['jump_to_navigation'] = 'Vai alla navigazione.';
-$messages['comment_email_never_display'] = 'Le interruzioni di linea e paragrafo sono automatiche. La tua email non sarà mai mostrata.';
+$messages['comment_email_never_display'] = 'Le interruzioni di linea e paragrafo sono automatiche. La tua email non sarà mai mostrata.';
 $messages['comment_html_allowed'] = '<acronym title="Hypertext Markup Language">HTML</acronym> permesso: &lt;<acronym title="Link ipertestuale">a</acronym> href=&quot;&quot; title=&quot;&quot; rel=&quot;&quot;&gt; &lt;<acronym title="Descrizione di acronimo">acronym</acronym> title=&quot;&quot;&gt; &lt;<acronym title="Indentazione">blockquote</acronym> cite=&quot;&quot;&gt; &lt;<acronym title="Sbarrato">del</acronym>&gt; &lt;<acronym title="Corsivo">em</acronym>&gt; &lt;<acronym title="Sottolineato">ins</acronym>&gt; &lt;<acronym title="Grassetto">strong</acronym>&gt;';
-$messages['trackback_uri'] = 'L\'<acronym title="Uniform Resource Identifier">URI</acronym> per il trackback di questa entità è: ';
+$messages['trackback_uri'] = 'L\'<acronym title="Uniform Resource Identifier">URI</acronym> per il trackback di questa entità è: ';
 
 
 
 $messages['xmlrpc_ping_ok'] = 'Ping XMLRPC inviato correttamente: ';
-$messages['error_sending_xmlrpc_ping'] = 'C\'è stato un errore inviando il ping XMLRPC a: ';
-$messages['error_sending_xmlrpc_ping_message'] = 'C\'è stato un errore inviando il ping XMLRPC: ';
+$messages['error_sending_xmlrpc_ping'] = 'C\'è stato un errore inviando il ping XMLRPC a: ';
+$messages['error_sending_xmlrpc_ping_message'] = 'C\'è stato un errore inviando il ping XMLRPC: ';
 
 //
 // new strings for 1.1
 //
-$messages['error_incorrect_trackback_id'] = 'L\'identificatore del trackback non è corretto';
-$messages['error_marking_trackback_as_spam'] = 'Si è verificato un errore marcando il trackback come spam';
-$messages['trackback_marked_as_spam_ok'] = 'Il trackback è stato marcato come spam';
-$messages['error_marking_trackback_as_nonspam'] = 'Si è verificato un errore marcando il trackback come non-spam';
-$messages['trackback_marked_as_nonspam_ok'] = 'Il trackback è stato marcato come non-spam';
+$messages['error_incorrect_trackback_id'] = 'L\'identificatore del trackback non è corretto';
+$messages['error_marking_trackback_as_spam'] = 'Si è verificato un errore marcando il trackback come spam';
+$messages['trackback_marked_as_spam_ok'] = 'Il trackback è stato marcato come spam';
+$messages['error_marking_trackback_as_nonspam'] = 'Si è verificato un errore marcando il trackback come non-spam';
+$messages['trackback_marked_as_nonspam_ok'] = 'Il trackback è stato marcato come non-spam';
 $messages['upload_here'] = 'Carica qui';
 $messages['reply_string'] = 'Re: ';
 $messages['cleanup_users'] = 'Pulisci gli utenti';
-$messages['cleanup_users_help'] = 'Tutti gli utenti marcati come "Cancellato" da un amministratore verranno eliminati. Eliminerà anche ogni blog posseduto dall\'utente e ogni cosa presente nei blog. Se l\'utente è abilitato a scrivere su altri blog, ogni suo articolo verrà eliminato. Non sarà possibile annullare l\'operazione, una volta cancellati.';
+$messages['cleanup_users_help'] = 'Tutti gli utenti marcati come "Cancellato" da un amministratore verranno eliminati. Eliminerà anche ogni blog posseduto dall\'utente e ogni cosa presente nei blog. Se l\'utente è abilitato a scrivere su altri blog, ogni suo articolo verrà eliminato. Non sarà possibile annullare l\'operazione, una volta cancellati.';
 $messages['users_purged_ok'] = 'Utenti cancellati';
 $messages['cleanup_blogs'] = 'Pulisci i Blog';
-$messages['cleanup_blogs_help'] = 'Tutti i blog marcati come "Cacellato" da un amministratore verranno eliminati. Eliminerà ogni cosa nei blog. Non sarà possibile annullare l\'operazione, una volta cancellati.';
+$messages['cleanup_blogs_help'] = 'Tutti i blog marcati come "Cacellato" da un amministratore verranno eliminati. Eliminerà ogni cosa nei blog. Non sarà possibile annullare l\'operazione, una volta cancellati.';
 $messages['blogs_purged_ok'] = 'Blog cancellati';
-$messages['help_use_http_accept_language_detection'] = 'Molti browser come Mozilla Firefox, Safari o Internet Explorer inviano almeno un codice di lingua che l\'utente <i>dovrebbe</i> capire. Se questa caratteristica è attiva, LifeType proverà a servire l\'utente con il linguaggio richiesto se questo è disponibile. [ Predefinito = No ]';
+$messages['help_use_http_accept_language_detection'] = 'Molti browser come Mozilla Firefox, Safari o Internet Explorer inviano almeno un codice di lingua che l\'utente <i>dovrebbe</i> capire. Se questa caratteristica è attiva, LifeType proverà a servire l\'utente con il linguaggio richiesto se questo è disponibile. [ Predefinito = No ]';
 
 $messages['error_invalid_blog_category'] = 'Categoria di blog invalida';
-$messages['error_adding_blog_category'] = 'Si è verificato un errore aggiungendo la categoria del blog';
+$messages['error_adding_blog_category'] = 'Si è verificato un errore aggiungendo la categoria del blog';
 $messages['newBlogCategory'] = 'Nuova categoria di Blog';
 $messages['editBlogCategories'] = 'Categorie di Blog';
 $messages['blog_category_added_ok'] = 'Categoria di Blog aggiunta';
 $messages['error_blog_category_has_blogs'] = 'La categoria di blog "%s" ha alcuni blog assegnati. Modifica prima i blog e quindi riprova.';
-$messages['error_deleting_blog_category'] = 'Si è verificato un errore eliminando la categoria di blog "%s"';
-$messages['blog_category_deleted_ok'] = 'La categoria di blog "%s" è stata cancellata con successo';
+$messages['error_deleting_blog_category'] = 'Si è verificato un errore eliminando la categoria di blog "%s"';
+$messages['blog_category_deleted_ok'] = 'La categoria di blog "%s" è stata cancellata con successo';
 $messages['blog_categories_deleted_ok'] = 'Le categorie di blog %s sono state cancellate con successo';
-$messages['error_deleting_blog_category2'] = 'Si è verificato un errore cancellando la categoria di blog con id %s';
+$messages['error_deleting_blog_category2'] = 'Si è verificato un errore cancellando la categoria di blog con id %s';
 $messages['blog_category'] = 'Categoria del Blog';
 $messages['blog_category_help'] = 'Categoria globale del Global';
 
 $messages['help_use_captcha_auth'] = 'Utilizza un meccanismo CAPTCHA nel processo di registrazione per prevenire la registrazione automatica tramite script o robots [ Predefinito = No ]';
-$messages['help_skip_dashboard'] = 'La bacheca non verrà più mostrata e gli utenti verranno portati direttamente al primo blog a cui appartengono [ Predefinito = No ]';
+$messages['help_skip_dashboard'] = 'La bacheca non verrà più mostrata e gli utenti verranno portati direttamente al primo blog a cui appartengono [ Predefinito = No ]';
 
 $messages['manageGlobalArticleCategory'] = 'Categorie articoli globali';
 $messages['newGlobalArticleCategory'] = 'Nuova categoria articoli globale';
@@ -826,18 +826,18 @@
 $messages['error_incorrect_global_category_id'] = 'Categoria articoli globale invalida';
 $messages['global_category_deleted_ok'] = 'Categoria articoli "%s" eliminata con successo';
 $messages['global_category_added_ok'] = 'Categoria globale "%s" aggiunta con successo';
-$messages['error_deleting_global_category2'] = 'Si è verificato un errore cancellando la categoria articoli con id = %s';
+$messages['error_deleting_global_category2'] = 'Si è verificato un errore cancellando la categoria articoli con id = %s';
 
-$messages['help_page_suffix_format'] = 'Suffisso che sarà appeso agli URL che supportano la paginazione [ Predefinito = /page/{page} ]';
+$messages['help_page_suffix_format'] = 'Suffisso che sarà appeso agli URL che supportano la paginazione [ Predefinito = /page/{page} ]';
 
 $messages['help_final_size_thumbnail_width'] = 'Larghezza finale delle immagini caricate. Lascialo vuoto o a zero per salvare l\'immagine a dimensione originale [ Predefinito = 0 ]';
 $messages['help_final_size_thumbnail_height'] = 'Altezza finale delle immagini caricate. Lascialo vuoto o a zero per salvare le immagini a dimensione originale [ Predefinito = 0 ]';
-$messages['error_comment_too_big'] = 'Il commento è troppo grande';
-$messages['error_you_have_been_blocked'] = 'Bloccato: questa richiesta non è stata completata.';
+$messages['error_comment_too_big'] = 'Il commento è troppo grande';
+$messages['error_you_have_been_blocked'] = 'Bloccato: questa richiesta non è stata completata.';
 $messages['created'] = 'Creato';
 $messages['view'] = 'Visto';
 $messages['editUser'] = 'Modifica utente';
-$messages['help_urlize_word_separator'] = 'Carattere che sarà usato come parola separatore per la generazione degli URL delle pagine. Sarà usato anche per la generazione degli hostnames partendo dal nome dei blog se il supporto per i sottodomini è attivato. [ Predefinito = - ]';
+$messages['help_urlize_word_separator'] = 'Carattere che sarà usato come parola separatore per la generazione degli URL delle pagine. Sarà usato anche per la generazione degli hostnames partendo dal nome dei blog se il supporto per i sottodomini è attivato. [ Predefinito = - ]';
 $messages['help_summary_template_cache_lifetime'] = 'Tempo di vita in secondi delle pagine di sommario cachate. Se impostato ad un valore diverso da \'0\', le pagine di sommario verrranno mantenute uguali per il tempo qui indicato invece di essere aggiornate ogni volta che i dati vengono modificati. [ Predefinito = 0 ]';
 $messages['register_default_album_name'] = 'Generale';
 $messages['register_default_album_description'] = 'Usa questo album per caricare nuove immagini.';
@@ -854,23 +854,23 @@
 
 $messages['goto_blog_page'] = 'Vai a %s';
 
-$messages['help_num_blogs_per_user'] = 'Numero di blog che un proprietario può creare attraverso l\'interfaccia di amministrazione';
+$messages['help_num_blogs_per_user'] = 'Numero di blog che un proprietario può creare attraverso l\'interfaccia di amministrazione';
 
 $messages['massive_change_option'] = 'Opzioni di modifica di massa';
 $messages['show_massive_change_option'] = 'Mostra opzioni di modifica di massa';
 $messages['hide_massive_change_option'] = 'Nascondi opzioni di modifica di massa';
 $messages['change_status'] = 'Cambia stato';
 $messages['change_category'] = 'Cambia categoria';
-$messages['error_updating_comment_no_comment'] = 'Si è verificato un errore aggiornando il commento. Il commento #%s non è stato trovato';
-$messages['error_updating_comment_wrong_blog'] = 'Si è verificato un errore aggiornando il commento. Il commento (%s) non fa parte di questo blog.';
-$messages['error_updating_comment'] = 'Si è verificato un errore aggiornando (%s)';
+$messages['error_updating_comment_no_comment'] = 'Si è verificato un errore aggiornando il commento. Il commento #%s non è stato trovato';
+$messages['error_updating_comment_wrong_blog'] = 'Si è verificato un errore aggiornando il commento. Il commento (%s) non fa parte di questo blog.';
+$messages['error_updating_comment'] = 'Si è verificato un errore aggiornando (%s)';
 $messages['error_updating_comment_already_updated'] = 'Nessuna modifica fatta a (%s)';
 $messages['comment_updated_ok'] = 'Commento aggiornato con successo.';
 $messages['comments_updated_ok'] = '%s commenti aggiornati con successo.';
 
 $messages['error_post_status'] = 'Seleziona lo stato di un articolo.';
 $messages['error_comment_status'] = 'Seleziona lo stato di un commento.';
-$messages['admin_mode'] = 'Modalità admin';
+$messages['admin_mode'] = 'Modalità admin';
 $messages['administrate_user_blog'] = 'Amministra questo blog';
 $messages['trackbacks_updated_ok'] = '%s trackback aggiornati con successo';
 $messages['trackback_updated_ok'] = 'Trackback aggiornato con successo';
@@ -883,17 +883,17 @@
 
 $messages['logout_destination_url'] = 'Indirizzo URL dove saranno rediretti gli utenti quando fanno il log out, come ad esempio la pagina principale del sito. Lascialo vuoto per usare il valore predefinito (la pagina di login) [ Predefinito = vuoto ]';
 
-$messages['help_http_cache_lifetime'] = 'Durata in secondi della cache lato client (i browser non faranno richieste al server per questo periodo e le pagine saranno prese dalla cache locale. Questo aumenta notevolmente la velocità di caricamento, ma ritarderà la visibilità di commenti e articoli. [Predefinito = 1800]';
+$messages['help_http_cache_lifetime'] = 'Durata in secondi della cache lato client (i browser non faranno richieste al server per questo periodo e le pagine saranno prese dalla cache locale. Questo aumenta notevolmente la velocità di caricamento, ma ritarderà la visibilità di commenti e articoli. [Predefinito = 1800]';
 
 $messages['trackbacks_no_trackback'] = 'Invio di trackback ai seguenti URL fallito: ';
 
 $messages['error_comment_spam_throw_away'] = 'Non puoi postare questo messaggio. Il filtro anti-spam l\'ha bloccato.';
-$messages['error_comment_spam_keep'] = 'Il filtro anti-spam ha messo il tuo commento nella coda di moderazione e dovrà essere approvato dal proprietario del blog.';
+$messages['error_comment_spam_keep'] = 'Il filtro anti-spam ha messo il tuo commento nella coda di moderazione e dovrà essere approvato dal proprietario del blog.';
 
 $messages['blog_categories'] = 'Categorie di Blog';
 $messages['global_article_categories'] = 'Categorie articoli globali';
 
-$messages['help_force_posturl_unique'] = 'Forza gli URL degli articoli all\'interno del blog ad essere unici. Questo è necessario solo se stai cambiando gli URL e stai rimuovendo la porzione di data dagli URL. [ Predefinito = no ]';
+$messages['help_force_posturl_unique'] = 'Forza gli URL degli articoli all\'interno del blog ad essere unici. Questo è necessario solo se stai cambiando gli URL e stai rimuovendo la porzione di data dagli URL. [ Predefinito = no ]';
 
 $messages['default_send_notification'] = 'Invio notifiche come predefinito';
 
@@ -902,13 +902,13 @@
 
 $messages['change_album'] = 'Cambia Album';
 
-$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Sembra che tu sia uscito senza salvare il tuo articolo. Se è così, puoi <a href="#" onclick="restoreAutoSave();">cliccare qui e recuperarlo</a> oppure <a href="#" onclick="eraseAutoSave();">cancellarlo</a>.</p>';
+$messages['warning_autosave_message'] = '<img src="imgs/admin/icon_warning-16.png" alt="Error" class="InfoIcon"/><p class="ErrorText">Sembra che tu sia uscito senza salvare il tuo articolo. Se è così, puoi <a href="#" onclick="restoreAutoSave();">cliccare qui e recuperarlo</a> oppure <a href="#" onclick="eraseAutoSave();">cancellarlo</a>.</p>';
 
 $messages['check_username'] = 'Controlla nome utente';
-$messages['check_username_ok'] = 'Il nome utente è disponibile!';
-$messages['error_username_exist'] = 'Spiacente! Il nome utente non è disponibile, prova con un altro. (Il nome utente deve essere tutto minuscolo)';
+$messages['check_username_ok'] = 'Il nome utente è disponibile!';
+$messages['error_username_exist'] = 'Spiacente! Il nome utente non è disponibile, prova con un altro. (Il nome utente deve essere tutto minuscolo)';
 
-$messages['error_rule_email_dns_server_temp_fail'] = 'Guasto provvisorio - riprova più tardi.';
+$messages['error_rule_email_dns_server_temp_fail'] = 'Guasto provvisorio - riprova più tardi.';
 $messages['error_rule_email_dns_server_unreachable'] = 'Server Email non raggiungibile.';
 $messages['error_rule_email_dns_not_permitted'] = 'E-mail non permessa.';
 
@@ -920,17 +920,17 @@
 $messages['first_day_of_week_label'] = 'Primo giorno della settimana';
 $messages['first_day_of_week_help'] = 'Primo giorno della settimana nel calendario.';
 
-$messages['help_subdomains_base_url'] = 'Quando i sottodomini sono abilitati, questo URL sarà utilizzato come base al posto di base_url. Usa {blogname} per ottenere il nome del blog, {username} per ottenere il nome dell\'utente proprietario del blog e {blogdomain} per permettere all\'utente di specificare un sottodominio per generare un link al blog. (es. http://{blogname}.tuodominio.it)';
+$messages['help_subdomains_base_url'] = 'Quando i sottodomini sono abilitati, questo URL sarà utilizzato come base al posto di base_url. Usa {blogname} per ottenere il nome del blog, {username} per ottenere il nome dell\'utente proprietario del blog e {blogdomain} per permettere all\'utente di specificare un sottodominio per generare un link al blog. (es. http://{blogname}.tuodominio.it)';
 
 $messages['registration_default_subject'] = 'Conferma di registrazione a LifeType';
 
-$messages['error_invalid_subdomain'] = 'Il nome del sottodominio non è valido o non è univoco';
+$messages['error_invalid_subdomain'] = 'Il nome del sottodominio non è valido o non è univoco';
 $messages['register_blog_domain_help'] = 'Nome e sottodominio che vuoi usare per il tuo nuovo blog';
 $messages['domain'] = 'Dominio';
-$messages['help_subdomains_available_domains'] = 'Inserisci un elenco di domini principali permessi. All\'utente sarà mostrato una lista di quest\'elenco e potrà aggiungere i sottodomini che vorrà. Questo è usato solo se hai abilitato i sottodomini e usato {blogdomain} in subdomain_base_url qui sopra. Usa \'?\' se vuoi permettere qualsiasi dominio.';
+$messages['help_subdomains_available_domains'] = 'Inserisci un elenco di domini principali permessi. All\'utente sarà mostrato una lista di quest\'elenco e potrà aggiungere i sottodomini che vorrà. Questo è usato solo se hai abilitato i sottodomini e usato {blogdomain} in subdomain_base_url qui sopra. Usa \'?\' se vuoi permettere qualsiasi dominio.';
 $messages['subdomains_any_domain'] = '<- Multi-dominio abilitato. Scrivi il dominio completo.';
-$messages['error_updating_blog_subdomain'] = 'Si è verificato un errore aggiornando il sottodominio. Controlla i dati e riprova.';
-$messages['error_updating_blog_main_domain'] = 'Si è verificato un errore aggiornando i settaggi del dominio principale. Questo probabilmente significa che l\'amministratore del sito ha configurato qualcosa in modo incorretto.';
+$messages['error_updating_blog_subdomain'] = 'Si è verificato un errore aggiornando il sottodominio. Controlla i dati e riprova.';
+$messages['error_updating_blog_main_domain'] = 'Si è verificato un errore aggiornando i settaggi del dominio principale. Questo probabilmente significa che l\'amministratore del sito ha configurato qualcosa in modo incorretto.';
 
 $messages['monthsshort'] = Array( 'Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dec' );
 $messages['weekdaysshort'] = Array( 'Do', 'Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa' );
@@ -940,7 +940,7 @@
 $messages['blogs'] = 'Blog';
 $messages['resources'] = 'Risorse';
 $messages['upload_in_progress'] = 'Caricamento in corso. Attendere prego...';
-$messages['error_incorrect_username'] = 'Il nome utente non è corretto, è già in uso, contiene caratteri maiuscoli o è troppo lungo (massimo 15 caratteri)';
+$messages['error_incorrect_username'] = 'Il nome utente non è corretto, è già in uso, contiene caratteri maiuscoli o è troppo lungo (massimo 15 caratteri)';
 
 $messages['Miscellaneous'] = 'Miscellaneous';
 $messages['Plugins'] = 'Plugins';
@@ -960,7 +960,7 @@
 $messages['authenticated'] = 'Autenticato';
 $messages['dropdown_list_field'] = 'Lista Drop-down';
 $messages['values'] = 'Valori del campo';
-$messages['field_values'] = 'Valori che saranno mostrati come opzioni in questo campo. Il primo sarà usato come opzione predefinita.';
+$messages['field_values'] = 'Valori che saranno mostrati come opzioni in questo campo. Il primo sarà usato come opzione predefinita.';
 
 $messages['permission_added_ok'] = 'Permesso aggiunto con successo';
 $messages['core_perm'] = 'Permessi del core';
@@ -969,18 +969,18 @@
 $messages['newPermission'] = 'Nuovo permesso';
 $messages['permission_name_help'] = 'Nome univoco per il permesso';
 $messages['permission_description_help'] = 'Descrizione data per il permesso';
-$messages['core_perm_help'] = 'Se il permesso è parte dei permessi del core, non sarà possibile cancellarlo';
-$messages['admin_only_help'] = 'Se questo permesso può essere assegnato solo dagli utenti amministratori';
-$messages['error_adding_new_permission'] = 'Si è verificato un errore aggiungendo il nuovo permesso, ricontrolla i dati';
-$messages['error_incorrect_permission_id'] = 'L\'identificatore del permesso non è corretto';
-$messages['error_permission_cannot_be_deleted'] = 'Il permesso "%s" non può essere cancellato perchè è stato assegnato either it has been ad almeno un utente o è un permesso del core.';
-$messages['error_deleting_permission'] = 'Si è verificato un errore cancellando il permesso "%s"';
-$messages['permission_deleted_ok'] = 'Il permesso "%s" è stato cancellato con successo';
+$messages['core_perm_help'] = 'Se il permesso è parte dei permessi del core, non sarà possibile cancellarlo';
+$messages['admin_only_help'] = 'Se questo permesso può essere assegnato solo dagli utenti amministratori';
+$messages['error_adding_new_permission'] = 'Si è verificato un errore aggiungendo il nuovo permesso, ricontrolla i dati';
+$messages['error_incorrect_permission_id'] = 'L\'identificatore del permesso non è corretto';
+$messages['error_permission_cannot_be_deleted'] = 'Il permesso "%s" non può essere cancellato perchè è stato assegnato either it has been ad almeno un utente o è un permesso del core.';
+$messages['error_deleting_permission'] = 'Si è verificato un errore cancellando il permesso "%s"';
+$messages['permission_deleted_ok'] = 'Il permesso "%s" è stato cancellato con successo';
 $messages['permissions_deleted_ok'] = '%s permessi cancellati con successo';
-$messages['error_deleting_permission2'] = 'Si è verificato un errore cancelland il permesso con l\'identificatore "%s"';
+$messages['error_deleting_permission2'] = 'Si è verificato un errore cancelland il permesso con l\'identificatore "%s"';
 
-$messages['help_hard_show_posts_max'] = 'Limite massimo di articoli mostrati per pagina nel blog. Se gli utenti imposteranno un valore personalizzato oltre questo limite, verrà ignorato e il valore qui specificato usato. [ Predefinito = 50 ]';
-$messages['help_hard_recent_posts_max'] = 'Limite massimo di articoli recenti mostrato per pagina nel blog. Se gli utenti imposteranno un valore personalizzato oltre questo limite, verrà ignorato e il valore qui specificato usato [ Predefinito = 25 ]';
+$messages['help_hard_show_posts_max'] = 'Limite massimo di articoli mostrati per pagina nel blog. Se gli utenti imposteranno un valore personalizzato oltre questo limite, verrà ignorato e il valore qui specificato usato. [ Predefinito = 50 ]';
+$messages['help_hard_recent_posts_max'] = 'Limite massimo di articoli recenti mostrato per pagina nel blog. Se gli utenti imposteranno un valore personalizzato oltre questo limite, verrà ignorato e il valore qui specificato usato [ Predefinito = 25 ]';
 
 $messages['error_permission_required'] = 'Non hai abbastanza permessi per eseguire l\'operazione richiesta';
 $messages['user_permissions_updated_ok'] = 'Permessi dell\'utente aggiornati con successo';
@@ -1018,36 +1018,36 @@
 $messages['view_posts_desc'] = 'Guarda gli articoli del blog';
 $messages['view_resources_desc'] = 'Guarda le risorse del blog';
 $messages['view_trackbacks_desc'] = 'Guarda i trackback del blog';
-$messages['login_perm_desc'] = 'L\'utente è abilitato al log in';
+$messages['login_perm_desc'] = 'L\'utente è abilitato al log in';
 // admin permissions
-$messages['add_blog_category_desc'] = 'L\'utente può aggiungere categorie al blog';
-$messages['add_global_article_category_desc'] = 'L\'Utente può aggiungere categorie articoli globali';
-$messages['add_locale_desc'] = 'L\'utente può aggiungere nuove localizzazioni';
-$messages['add_permission_desc'] = 'L\'utente può aggiungere nuovi permessi';
-$messages['add_site_blog_desc'] = 'L\'utente può aggiungere nuovi blog';
-$messages['add_template_desc'] = 'L\'utente può aggiungere nuovi stili';
-$messages['add_user_desc'] = 'L\'utente può aggiungere nuovi utenti';
-$messages['edit_blog_admin_mode_desc'] = 'L\'utente può amministrare altri blog (modalità admin)';
-$messages['purge_data_desc'] = 'L\'utente può eliminare i dati';
-$messages['update_blog_category_desc'] = 'L\'utente può aggiornare e cancellare categorie del blog';
-$messages['update_global_article_category_desc'] = 'L\'utente può aggiornare e cancellare categorie articoli globali';
-$messages['update_global_settings_desc'] = 'L\'utente può aggiornare i settaggi del sito';
-$messages['update_locale_desc'] = 'L\'utente può aggiornare e cancellare le localizzazioni';
-$messages['update_permission_desc'] = 'L\'utente può aggiornare e cancellare i permessi';
-$messages['update_plugin_settings_desc'] = 'L\'utente può aggiornare i settaggi dei plugin';
-$messages['update_site_blog_desc'] = 'L\'utente può aggiornare e cancellare blog';
-$messages['update_template_desc'] = 'L\'utente può aggiornare e cancellare gli stili';
-$messages['update_user_desc'] = 'L\'utente può aggiornare e cancellare gli utenti';
-$messages['view_blog_categories'] = 'L\'utente può vedere le categorie del blog';
-$messages['view_global_article_categories_desc'] = 'L\'utente può vedere le categorie articoli globali';
-$messages['view_global_settings_desc'] = 'L\'utente può vedere i settaggi del sito';
-$messages['view_locales_desc'] = 'L\'utente può vedere le localizzazioni';
-$messages['view_permissions_desc'] = 'L\'utente può vedere i permessi';
-$messages['view_plugins_desc'] = 'L\'utente può vedere i plugin installati';
-$messages['view_site_blogs_desc'] = 'L\'utente può vedere i blog del sito';
-$messages['view_templates_desc'] = 'L\'utente può vedere gli stili';
-$messages['view_users_desc'] = 'L\'utente può vedere gli utenti';
-$messages['update_blog_stats_desc'] = 'L\'utente può cancellare le origini (referrers)';
+$messages['add_blog_category_desc'] = 'L\'utente può aggiungere categorie al blog';
+$messages['add_global_article_category_desc'] = 'L\'Utente può aggiungere categorie articoli globali';
+$messages['add_locale_desc'] = 'L\'utente può aggiungere nuove localizzazioni';
+$messages['add_permission_desc'] = 'L\'utente può aggiungere nuovi permessi';
+$messages['add_site_blog_desc'] = 'L\'utente può aggiungere nuovi blog';
+$messages['add_template_desc'] = 'L\'utente può aggiungere nuovi stili';
+$messages['add_user_desc'] = 'L\'utente può aggiungere nuovi utenti';
+$messages['edit_blog_admin_mode_desc'] = 'L\'utente può amministrare altri blog (modalità admin)';
+$messages['purge_data_desc'] = 'L\'utente può eliminare i dati';
+$messages['update_blog_category_desc'] = 'L\'utente può aggiornare e cancellare categorie del blog';
+$messages['update_global_article_category_desc'] = 'L\'utente può aggiornare e cancellare categorie articoli globali';
+$messages['update_global_settings_desc'] = 'L\'utente può aggiornare i settaggi del sito';
+$messages['update_locale_desc'] = 'L\'utente può aggiornare e cancellare le localizzazioni';
+$messages['update_permission_desc'] = 'L\'utente può aggiornare e cancellare i permessi';
+$messages['update_plugin_settings_desc'] = 'L\'utente può aggiornare i settaggi dei plugin';
+$messages['update_site_blog_desc'] = 'L\'utente può aggiornare e cancellare blog';
+$messages['update_template_desc'] = 'L\'utente può aggiornare e cancellare gli stili';
+$messages['update_user_desc'] = 'L\'utente può aggiornare e cancellare gli utenti';
+$messages['view_blog_categories'] = 'L\'utente può vedere le categorie del blog';
+$messages['view_global_article_categories_desc'] = 'L\'utente può vedere le categorie articoli globali';
+$messages['view_global_settings_desc'] = 'L\'utente può vedere i settaggi del sito';
+$messages['view_locales_desc'] = 'L\'utente può vedere le localizzazioni';
+$messages['view_permissions_desc'] = 'L\'utente può vedere i permessi';
+$messages['view_plugins_desc'] = 'L\'utente può vedere i plugin installati';
+$messages['view_site_blogs_desc'] = 'L\'utente può vedere i blog del sito';
+$messages['view_templates_desc'] = 'L\'utente può vedere gli stili';
+$messages['view_users_desc'] = 'L\'utente può vedere gli utenti';
+$messages['update_blog_stats_desc'] = 'L\'utente può cancellare le origini (referrers)';
 $messages['manage_admin_plugins_desc'] = 'Controlla le opzioni solo per amministratori dei plugin';
 
 $messages['summary_welcome_msg'] = 'Benvenuto, %s!';
@@ -1057,12 +1057,12 @@
 $messages['update_all_user_articles_desc'] = 'Permetti di modificare articoli di altri utenti';
 $messages['error_can_only_view_own_articles'] = 'I tuoi permessi ti consentono di vedere solo i tuoi articoli.';
 $messages['view_all_user_articles_desc'] = 'Permetti di vedere articoli di altri utenti';
-$messages['error_fetching_permission'] = 'Si è verificato un errore caricando i permessi';
+$messages['error_fetching_permission'] = 'Si è verificato un errore caricando i permessi';
 $messages['editPermission'] = 'Modifica permessi';
-$messages['error_updating_permission'] = 'Si è verificato un errore aggiornando i permessi';
+$messages['error_updating_permission'] = 'Si è verificato un errore aggiornando i permessi';
 $messages['permission_updated_ok'] = 'Permessi aggiornati con successo';
-$messages['error_adding_permission'] = 'Si è verificato un errore aggiungendo i permessi';
-$messages['error_cannot_login'] = 'Spiacente, non ti è permesso eseguire il log in';
+$messages['error_adding_permission'] = 'Si è verificato un errore aggiungendo i permessi';
+$messages['error_cannot_login'] = 'Spiacente, non ti è permesso eseguire il log in';
 $messages['admin_user_permissions_help'] = 'Permessi a livello di sito concessi a quest\'utente';
 
 $messages['permissions'] = 'Permessi';
@@ -1071,8 +1071,8 @@
 $messages['user_can_override'] = 'Users can override';
 $messages['user_cannot_override'] = 'Users cannot override';
 $messages['global_plugin_settings_saved_ok'] = 'Opzioni del plugin globale salvati con successo';
-$messages['error_updating_global_plugin_settings'] = 'Si è verificato un errore salvando le opzioni del plugin globale';
-$messages['error_incorrect_value'] = 'Il valore non è corretto';
+$messages['error_updating_global_plugin_settings'] = 'Si è verificato un errore salvando le opzioni del plugin globale';
+$messages['error_incorrect_value'] = 'Il valore non è corretto';
 $messages['parameter'] = 'Parametri';
 $messages['value'] = 'Valore';
 $messages['override'] = 'Override';
@@ -1083,8 +1083,8 @@
 $messages['error_global_category_has_articles'] = 'The global article category cannot be deleted because it still has articles';
 $messages['error_adding_global_article_category'] = 'There was an error adding the global article category';
 
-$messages['temp_folder_reset_ok'] = 'La cartella temporanea è stata svuotata con successo';
-$messages['cleanup_temp_help'] = 'Questo innescherà una pulizia della cartella temporanea, forzando la cache dei dati e degli stili ad essere azzerata per tutti i blog.';
+$messages['temp_folder_reset_ok'] = 'La cartella temporanea è stata svuotata con successo';
+$messages['cleanup_temp_help'] = 'Questo innescherà una pulizia della cartella temporanea, forzando la cache dei dati e degli stili ad essere azzerata per tutti i blog.';
 $messages['cleanup_temp'] = 'Svuota la cartella temporanea';
 
 $messages['comment_only_auth_users'] = 'Solo gli utenti autenticati possono commentare';
@@ -1093,16 +1093,16 @@
 $messages['show_comments_max_help'] = 'Numero massimo di commenti per pagina [ Predefinito = 20 ]';
 $messages['hard_show_comments_max_help'] = 'Limite massimo di commenti per pagina [ Predefinito = 50 ]';
 
-$messages['error_resource_not_whitelisted_extension'] = 'Il tipo di file è tra quelli non permessi.';
-$messages['help_upload_allowed_files'] = 'Elenco (separato da spazi) di tipi di file che sono permessi negll\'upload. L\'uso di \'*\' e \'?\' è permesso. Se entrambi upload_forbidden_file e quest\'opzione sono configurati, la whitelist (upload_allowed_files) avrà la precedenza rispetto alla blacklist [Predefinito = nulla]';
+$messages['error_resource_not_whitelisted_extension'] = 'Il tipo di file è tra quelli non permessi.';
+$messages['help_upload_allowed_files'] = 'Elenco (separato da spazi) di tipi di file che sono permessi negll\'upload. L\'uso di \'*\' e \'?\' è permesso. Se entrambi upload_forbidden_file e quest\'opzione sono configurati, la whitelist (upload_allowed_files) avrà la precedenza rispetto alla blacklist [Predefinito = nulla]';
 
-$messages['help_template_load_order'] = 'Definisce in che ordine i file degli stili sono cercati e caricati. Se viene usato \'Carica prima lo stile predefinito\', LifeType cercherà di trovare i file prima nella cartella templates/default/ e se non disponibili qui, allora caricherà i file dello stile dell\'utente. Se lo stesso file dello stile esiste in entrambi i posti, quello predefinito avrà la precedenza. Se impostato a \'Carica prima lo stile dell\'utente\', gli stili dell\'utente saranno sempre caricati per primi e se non disponibili, allora quelli predefiniti saranno usati. Se lo stesso file dello stile esiste in entrambi i posti, lo stile dell\'utente ha sempre la precedenza.';
+$messages['help_template_load_order'] = 'Definisce in che ordine i file degli stili sono cercati e caricati. Se viene usato \'Carica prima lo stile predefinito\', LifeType cercherà di trovare i file prima nella cartella templates/default/ e se non disponibili qui, allora caricherà i file dello stile dell\'utente. Se lo stesso file dello stile esiste in entrambi i posti, quello predefinito avrà la precedenza. Se impostato a \'Carica prima lo stile dell\'utente\', gli stili dell\'utente saranno sempre caricati per primi e se non disponibili, allora quelli predefiniti saranno usati. Se lo stesso file dello stile esiste in entrambi i posti, lo stile dell\'utente ha sempre la precedenza.';
 $messages['template_load_order_user_first'] = 'Carica prima lo stile predefinito';
 $messages['template_load_order_default_first'] = 'Carica prima lo stile dell\'utente';
 
 $messages['editBlogUser'] = 'Modifica utenti blog';
 
-$messages['help_summary_service_name'] = 'Nome del tuo sito/servizio che apparirà in diversi punti nella pagina principale così come nei feed RSS [ Predefinito = vuoto ]';
+$messages['help_summary_service_name'] = 'Nome del tuo sito/servizio che apparirà in diversi punti nella pagina principale così come nei feed RSS [ Predefinito = vuoto ]';
 
 $messages['register_step2_help'] = 'Fornisci le informazioni richieste per creare il blog.';
 
@@ -1111,7 +1111,7 @@
 $messages['insert_media'] = 'Inserisci media';
 $messages['insert_more'] = 'Togli il link "(Continua)"';
 
-$messages['purging_please_wait'] = 'Per favore attendi mentre i dati vengono eliminati. Questa pagina continuerà ad aggiornarsi da sola finchè tutti i dati saranno processati, per favore non provare a fermare questo processo';
+$messages['purging_please_wait'] = 'Per favore attendi mentre i dati vengono eliminati. Questa pagina continuerà ad aggiornarsi da sola finchè tutti i dati saranno processati, per favore non provare a fermare questo processo';
 
 $messages['error_cannot_delete_last_blog_category'] = 'Non puoi cancellare l\'ultima categoria del blog.';
 
@@ -1121,36 +1121,36 @@
 
 /// missing strings ///
 $messages['comment_no_topic'] = 'Nessun argomento';
-$messages['purging_error'] = 'Si è verificato un errore durante l\'eliminazione dei dati';
-$messages['error_invalid_blog_name'] = 'Il nome del blog non è valido';
+$messages['purging_error'] = 'Si è verificato un errore durante l\'eliminazione dei dati';
+$messages['error_invalid_blog_name'] = 'Il nome del blog non è valido';
 $messages['help_forbidden_blognames'] = 'Lista di nomi separati da uno spazio che non sono validi come nome per i blog. E\' possibile usare espressioni regolari al posto dei nomi. [ Predefinito = (vuoto) ]';
 $messages['posts_updated_ok'] = '%s articoli aggiornati con successo';
-$messages['error_updating_post2'] = 'Si è verificato un errore aggiornando l\'articolo con l\'identificatore %s';
+$messages['error_updating_post2'] = 'Si è verificato un errore aggiornando l\'articolo con l\'identificatore %s';
 $messages['resources_updated_ok'] = '% risorse aggiornate con successo';
-$messages['error_updating_resource2'] = 'Si è verificato un errore aggiornando la risorsa con l\'identificatore %s';
+$messages['error_updating_resource2'] = 'Si è verificato un errore aggiornando la risorsa con l\'identificatore %s';
 $messages['albums_updated_ok'] = '%s album aggiornati con successo';
-$messages['error_updating_album2'] = 'Si è verificato un errore aggiornando l\'albumo con l\'identificatore %s';
+$messages['error_updating_album2'] = 'Si è verificato un errore aggiornando l\'albumo con l\'identificatore %s';
 $messages['links_updated_ok'] = '%s link aggiornati con successo';
-$messages['error_updating_link2'] = 'Si è verificato un errore aggiornando il link con l\'identificatore %s';
+$messages['error_updating_link2'] = 'Si è verificato un errore aggiornando il link con l\'identificatore %s';
 $messages['version'] = 'Versione';
-$messages['error_resources_disabled'] = 'Spiacenti, il supporto per il caricamento di nuove risorse è stato disabilitato in questo sito';
+$messages['error_resources_disabled'] = 'Spiacenti, il supporto per il caricamento di nuove risorse è stato disabilitato in questo sito';
 $messages['help_login_admin_panel'] = 'Clicca sul nome del blog per entrare nella pagina di amministrazione.';
 
 
-$messages['blog_updated_ok'] = 'Il blog "%s" è stato aggiornato con successo';
+$messages['blog_updated_ok'] = 'Il blog "%s" è stato aggiornato con successo';
 $messages['blogs_updated_ok'] = '%s blog sono stati aggiornato con successo';
-$messages['error_updating_blog2'] = 'Si è verificato un errore aggiornando il blog con l\'identificatore "%s"';
-$messages['error_updating_blog'] = 'Si è verificato un errore aggiornando il blog "%s"';
+$messages['error_updating_blog2'] = 'Si è verificato un errore aggiornando il blog con l\'identificatore "%s"';
+$messages['error_updating_blog'] = 'Si è verificato un errore aggiornando il blog "%s"';
 
-$messages['error_updating_user'] = 'Si è verificato un errore aggiornando l\'utente "%s".';
-$messages['user_updated_ok'] = 'L\'utente "%s" è stato aggiornato con successo.';
+$messages['error_updating_user'] = 'Si è verificato un errore aggiornando l\'utente "%s".';
+$messages['user_updated_ok'] = 'L\'utente "%s" è stato aggiornato con successo.';
 $messages['users_updated_ok'] = '%s utenti aggiornati con successo';
-$messages['eror_updating_user2'] = 'Si è verificato un errore aggiornando l\'utente con l\'identificatore "%s"';
+$messages['eror_updating_user2'] = 'Si è verificato un errore aggiornando l\'utente con l\'identificatore "%s"';
 
 $messages['error_select_status'] = 'Seleziona uno stato valido';
-$messages['error_invalid_blog_name'] = 'Spiacente, il nome del blog non è valido';
+$messages['error_invalid_blog_name'] = 'Spiacente, il nome del blog non è valido';
 
-$messages['help_resources_naming_rule'] = 'Regole per i nomi dei file delle risorse caricate. \'Nome originale del file\' utilizza il nome originale del file per le risorse caricate. \'Nome codificato del file\' utilizza il nome codificato del file per le risorse caricate, la regola per il nome è [BlogId]-[ResourceId].[Ext]. Utilizza \'Nome codificato del file\' se installi LifeType in un ambiente Microsoft Windows Multi-Byte. <strong>Non cambiare questo opzione dopo che gli utenti hanno iniziato a caricare i file su LifeType. I file caricati non saranno più accessibili.</strong> [Predefinito = Nome originale del file]';
+$messages['help_resources_naming_rule'] = 'Regole per i nomi dei file delle risorse caricate. \'Nome originale del file\' utilizza il nome originale del file per le risorse caricate. \'Nome codificato del file\' utilizza il nome codificato del file per le risorse caricate, la regola per il nome è [BlogId]-[ResourceId].[Ext]. Utilizza \'Nome codificato del file\' se installi LifeType in un ambiente Microsoft Windows Multi-Byte. <strong>Non cambiare questo opzione dopo che gli utenti hanno iniziato a caricare i file su LifeType. I file caricati non saranno più accessibili.</strong> [Predefinito = Nome originale del file]';
 $messages['original_file_name'] = 'Nome originale del file';
 $messages['encoded_file_name'] = 'Nome codificato del file';
 
@@ -1158,7 +1158,7 @@
 $messages['basic_blog_permission'] = 'Permetti agli utenti del blog di aggiungere, aggiornare e cancellare articoli, link e risorse';
 $messages['full_blog_permission'] = 'Permetti agli utenti del blog di accedere a tutte le funzioni del blog come se fossere i proprietari';
 
-$messages['error_template_exist'] = 'Si è verificato un errore caricando lo stile, lo stile "%s" esiste già.';
+$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'] = 'Seleziona il proprietario dell\'articolo';
@@ -1170,9 +1170,9 @@
 $messages['Versions'] = 'Versioni';
 $messages['incorrect_file_version_error'] = 'I seguenti file non rispecchiano i contenuti aspettati:';
 $messages['lifetype_version'] = 'LifeType';
-$messages['lifetype_version_help'] = 'La versione attuale di LifeType è:';
+$messages['lifetype_version_help'] = 'La versione attuale di LifeType è:';
 $messages['file_version_check'] = 'Controlla versione file';
-$messages['file_version_check_help'] = 'Questa operazione farà un controllo di base sulla maggior parte dei file del core di LifeType, per assicurarsi che l\'attuale versione dei file corrisponda ai contenuti aspettati in accordo con la versione installata. Se non hai eseguito nessuna personalizzazione o modifica, tutti i file dovrebbero corrispondere alla versione aspettata. Abbi pazienza, questa operazione può richiedere del tempo.';
+$messages['file_version_check_help'] = 'Questa operazione farà un controllo di base sulla maggior parte dei file del core di LifeType, per assicurarsi che l\'attuale versione dei file corrisponda ai contenuti aspettati in accordo con la versione installata. Se non hai eseguito nessuna personalizzazione o modifica, tutti i file dovrebbero corrispondere alla versione aspettata. Abbi pazienza, questa operazione può richiedere del tempo.';
 $messages['check'] = 'Controlla';
 $messages['all_files_ok'] = 'Tutti i file sono corretti';
 

Modified: plog/trunk/locale/admin/locale_nl_NL.php
===================================================================
--- plog/trunk/locale/admin/locale_nl_NL.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/admin/locale_nl_NL.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -275,7 +275,7 @@
 $messages['link_name_help'] = 'Naam voor deze link';
 $messages['link_url_help'] = 'Adres waar de link naar verwijst';
 $messages['link_description_help'] = 'Korte omschrijving van de link';
-$messages['link_feed_help'] = 'Er kan ook een link naar één van de RSS of Atom feeds worden opgegeven';
+$messages['link_feed_help'] = 'Er kan ook een link naar één van de RSS of Atom feeds worden opgegeven';
 $messages['link_category_help'] = 'Kies een categorie voor deze link';
 $messages['error_adding_link'] = 'Fout tijdens toevoegen van de link. Controleer de gegevens en probeer het opnieuw';
 $messages['error_invalid_url'] = 'Het adres is incorrect';
@@ -319,7 +319,7 @@
 // new custom field
 $messages['field_name_help'] = 'Naam die wordt gebruikt om naar dit veld te verwijzen';
 $messages['field_description_help'] = 'Korte omschrijving van het eigen veld, dat wordt getoond bij het toevoegen of aanpassen van berichten';
-$messages['field_type_help'] = 'Kies één van de veldtypes';
+$messages['field_type_help'] = 'Kies één van de veldtypes';
 $messages['field_hidden_help'] = 'Verborgen velden worden niet getoond bij het aanmaken of wijzigen van berichten. Deze worden voornamelijk gebruikt door plugins';
 $messages['error_adding_custom_field'] = 'Fout tijdens toevoegen van het eigen veld. Controleer de gegevens en probeer het opnieuw';
 $messages['custom_field_added_ok'] = 'Eigen veld "%s" toegevoegd';
@@ -456,7 +456,7 @@
 $messages['bio'] = 'Wie ben je';
 $messages['bio_help'] = 'Hier kun je een uitgebreide beschrijving en biografie van jezelf ingeven';
 $messages['picture'] = 'Foto';
-$messages['user_picture_help'] = 'Kies één van de geuploade bestanden als persoonlijke foto';
+$messages['user_picture_help'] = 'Kies één van de geuploade bestanden als persoonlijke foto';
 $messages['error_invalid_password'] = 'Het wachtwoord is niet correct. Zorg dat het niet te kort is.';
 $messages['error_passwords_dont_match'] = 'De wachtwoorden komen niet overeen';
 $messages['error_updating_user_settings'] = 'Fout tijdens aanpassen van de gebruikergegevens. Controleer de gegevens en probeer het opnieuw';
@@ -502,7 +502,7 @@
 $messages['error_must_upload_file'] = 'Er is geen template geupload';
 $messages['error_uploads_disabled'] = 'Uploads zijn voor deze site uitgeschakeld';
 $messages['error_no_new_templates_found'] = 'Geen nieuwe templates gevonden';
-$messages['error_template_not_inside_folder'] = 'Alle bestanden in een template moeten in één folder met de naam van die template worden geplaatst';
+$messages['error_template_not_inside_folder'] = 'Alle bestanden in een template moeten in één folder met de naam van die template worden geplaatst';
 $messages['error_missing_base_files'] = 'Enkele standaard bestanden voor deze template ontbreken';
 $messages['error_unpacking'] = 'Fout tijdens uitpakken van het bestand';
 $messages['error_forbidden_extensions'] = 'De template bevat bestanden met niet-toegestane extensies';
@@ -630,7 +630,7 @@
 $messages['help_summary_page_show_max'] = 'Aantal items dat in de samenvattingspagina getoond wordt. Deze instelling geldt voor alle samengevatte lijsten (recente artikelen, meest actieve blogs etc) [Standaard = 10]';
 $messages['help_summary_items_per_page'] = 'Aantal blogs per pagina in de "Blogs lijst" sectie [Standaard = 25]';
 $messages['help_forbidden_usernames'] = 'Lijst van gebruikersnamen die niet geregistreerd mogen worden, gescheiden door een spatie [Standaard = admin www blog ftp]';
-$messages['help_force_one_blog_per_email_account'] = 'Beperk het aantal blogs tot één per e-mail account [Standaard = Nee]';
+$messages['help_force_one_blog_per_email_account'] = 'Beperk het aantal blogs tot één per e-mail account [Standaard = Nee]';
 $messages['help_summary_show_agreement'] = 'Toon een overeenkomsttekst en laat toekomstige gebruikers deze accepteren voorafgaand aan het registratieproces [Standaard = Ja]';
 $messages['help_need_email_confirm_registration'] = 'Laat gebruikers hun registratie bevestigen door op een link te klikken die hen via e-mail wordt toegestuurd [Standaard = Ja]';
 $messages['help_summary_disable_registration'] = 'Laat gebruikers nieuwe blogs op deze site aanmaken [Standaard = Ja]';
@@ -644,7 +644,7 @@
 $messages['help_template_http_cache_enabled'] = 'Schakel ondersteuning voor HTTP conditional requests in. Dit zorgt ervoor dat SP Communitiez de "If-Modified-Since" HTTP header gebruikt en alleen gegevens verstuurt indien dit strikt noodzakelijk is. Schakel dit aan om bandbreedte te besparen [Standaard = Ja]';
 $messages['help_allow_php_code_in_templates'] = 'Sta toe dat PHP code in Smarty templates wordt gebruikt binnen {php}...{/php} blokken [Standaard = Nee]';
 // urls
-$messages['help_request_format_mode'] = 'Selecteer één van onderstaande URL formaten. Als voor aangepaste URLs wordt gekozen, moeten alle onderstaande instellingen worden geconfigureerd [Standaard = Kaal]';
+$messages['help_request_format_mode'] = 'Selecteer één van onderstaande URL formaten. Als voor aangepaste URLs wordt gekozen, moeten alle onderstaande instellingen worden geconfigureerd [Standaard = Kaal]';
 $messages['plain'] = 'Kaal';
 $messages['search_engine_friendly'] = 'Zoekmachine-vriendelijk';
 $messages['custom_url_format'] = 'Aangepaste URLs';
@@ -711,7 +711,7 @@
 $messages['help_thumbnail_generator_force_use_gd1'] = 'Forceer SP Communitiez om alleen GD1 functies te gebruiken [Standaard = Nee]';
 $messages['help_thumbnail_generator_user_smoothing_algorithm'] = 'Algoritme om mooie thumbnails te genereren, bij de keuze van GD als methode [Standaard = PHP ImageCopyResampled]';
 $messages['help_resources_quota'] = 'Algemene limiet voor blogs in bytes, of specificeer 0 voor geen limiet [Standaard = 0]';
-$messages['help_resource_server_http_cache_enabled'] = 'Ondersteuning van de "If-Modified-Since" HTTP header en HTTP conditionele verzoeken. Aanschakelen voor efficiënter gebruik van bandbreedte [Standaard = Nee]';
+$messages['help_resource_server_http_cache_enabled'] = 'Ondersteuning van de "If-Modified-Since" HTTP header en HTTP conditionele verzoeken. Aanschakelen voor efficiënter gebruik van bandbreedte [Standaard = Nee]';
 $messages['help_resource_server_http_cache_lifetime'] = 'Tijd in microseconden dat gebruikers de bestandsversie in cache moeten gebruiken [Standaard = 9999999]';
 $messages['same_as_image'] = 'Hetzelfde als het originele bestand';
 // search
@@ -765,7 +765,7 @@
 $messages['step1'] = 'Stap 1';
 $messages['step2'] = 'Stap 2';
 $messages['step3'] = 'Stap 3';
-$messages['register_step3_help'] = 'Kies één van de beschikbare templates als de standaard voor je blog. Dit kan later altijd worden aangepast';
+$messages['register_step3_help'] = 'Kies één van de beschikbare templates als de standaard voor je blog. Dit kan later altijd worden aangepast';
 $messages['error_must_choose_template'] = 'Kies een template';
 $messages['select_template'] = 'Kies een template';
 $messages['register_step5_title'] = 'Gefeliciteerd! [4/4]';

Modified: plog/trunk/locale/locale_ca_ES.php
===================================================================
--- plog/trunk/locale/locale_ca_ES.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_ca_ES.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +1,6 @@
 <?php
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'iso-8859-1';
-$messages['locale_description'] = 'Traducció de LifeType al català';
+$messages['locale_description'] = 'Traducció de LifeType al català';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';
 
@@ -28,7 +27,7 @@
 $messages['Su'] = $messages['daysshort'][0];
 
 // months of the year
-$messages["months"] = Array( "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" );
+$messages["months"] = Array( "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" );
 // -- compatibility, do not touch -- //
 $messages['January'] = $messages['months'][0];
 $messages['February'] = $messages['months'][1];
@@ -51,18 +50,18 @@
 $messages["recently"] = "Recentment";
 $messages["comments"] = "Comentaris";
 $messages["comment on this"] = "Comentaris";
-$messages["my_links"] = "Els meus enllaços";
+$messages["my_links"] = "Els meus enllaços";
 $messages["archives"] = "Arxius";
 $messages["search"] = "Cerca";
 $messages["calendar"] = "Calendari";
 $messages["search_s"] = "Cercar";
 $messages["search_this_blog"] = "Cerca en aquest bloc:";
-$messages["about_myself"] = "Presentació";
-$messages["permalink_title"] = "Enllaç fix a un article concret dels arxius del bloc";
-$messages["permalink"] = "Enllaç permanent";
+$messages["about_myself"] = "Presentació";
+$messages["permalink_title"] = "Enllaç fix a un article concret dels arxius del bloc";
+$messages["permalink"] = "Enllaç permanent";
 $messages["posted_by"] = "Publicat per ";
 $messages["on_the"] = "el ";
-$messages["page"] = "pàgina";
+$messages["page"] = "pàgina";
 $messages["posted"] = "publicat";
 $messages["reply"] = "Respon";
 $messages['category'] = 'Categoria';
@@ -72,29 +71,29 @@
 $messages["comment_topic"] = "Tema";
 $messages["comment_text"] = "Text";
 $messages["comment_username"] = "El teu nom";
-$messages["comment_email"] = "La teva adreça de correu (si en tens)";
-$messages["comment_url"] = "La teva pàgina personal (si en tens)";
+$messages["comment_email"] = "La teva adreça de correu (si en tens)";
+$messages["comment_url"] = "La teva pàgina personal (si en tens)";
 $messages["comment_send"] = "Envia";
 $messages["comment_added"] = "Comentari enviat!";
-$messages["comment_add_error"] = "S'ha produït un error en enviar el comentari.";
-$messages["article_does_not_exist"] = "L'article sol·licitat no existeix.";
+$messages["comment_add_error"] = "S'ha produït un error en enviar el comentari.";
+$messages["article_does_not_exist"] = "L'article sol·licitat no existeix.";
 $messages["no_posts_found"] = "No s'ha trobat cap article.";
-$messages["user_has_no_posts_yet"] = "Aquest usuari no té cap article encara.";
-$messages["info_about_myself"] = "Informació sobre mi...";
+$messages["user_has_no_posts_yet"] = "Aquest usuari no té cap article encara.";
+$messages["info_about_myself"] = "Informació sobre mi...";
 $messages["back"] = "Torna";
 $messages['post'] = 'article';
-$messages["trackbacks_for_article"] = "Retronellaços per a l'article";
+$messages["trackbacks_for_article"] = "Retronellaços per a l'article";
 $messages["trackback_excerpt"] = "Fragment";
 $messages["trackback_weblog"] = "Bloc";
 $messages["search_results"] = "Resultats de la cerca";
-$messages["search_matching_results"] = "Els següents articles concorden amb els termes de la cerca";
+$messages["search_matching_results"] = "Els següents articles concorden amb els termes de la cerca";
 $messages["search_no_matching_posts"] = "No s'ha trobat cap article que concordi amb els termes de la cerca";
 $messages["read_more"] = "(Segueix)";
-$messages['syndicate'] = 'Subscripció';
+$messages['syndicate'] = 'Subscripció';
 $messages['main'] = 'Inici';
 $messages['about'] = 'Sobre';
 $messages['download'] = 'Baixa';
-$messages['error_incorrect_email_address'] = 'L\'adreça de correu electrònic no és correcta';
+$messages['error_incorrect_email_address'] = 'L\'adreça de correu electrònic no és correcta';
 $messages['invalid_url'] = 'You entered an invalid URL. Please correct and try again';
 
 
@@ -102,31 +101,31 @@
 $messages["error_fetching_article"] = "L'article especificat no s'ha pogut trobar.";
 $messages["error_fetching_articles"] = "Els articles no s'han pogut carregar.";
 $messages['error_fetching_category'] = 'There was an error fetching the category'; // translate
-$messages["error_trackback_no_trackback"] = "No s'han trobat retroenllaços per a l'article especificat.";
-$messages["error_incorrect_article_id"] = "L'identificador de l'article és incorrecte.";
-$messages["error_incorrect_blog_id"] = "L'identificador del bloc és incorrecte.";
+$messages["error_trackback_no_trackback"] = "No s'han trobat retroenllaços per a l'article especificat.";
+$messages["error_incorrect_article_id"] = "L'identificador de l'article és incorrecte.";
+$messages["error_incorrect_blog_id"] = "L'identificador del bloc és incorrecte.";
 $messages["error_comment_without_text"] = "Has d'escriure alguna cosa com a contingut del comentari.";
-$messages["error_comment_without_name"] = "Has de donar com a mínim el teu nom.";
-$messages["error_adding_comment"] = "S'ha produït un error en afegir el comentari a la base de dades.";
-$messages["error_incorrect_parameter"] = "Paràmetre incorrecte.";
-$messages["error_parameter_missing"] = "Falta un paràmetre a la petició.";
-$messages["error_blog_has_no_links"] = "Aquest bloc encara no té enllaços.";
-$messages["error_comments_not_enabled"] = "La funció de comentar articles ha estat desactivada en aquest bloc.";
-$messages['error_incorrect_search_terms'] = 'Els termes de la recerca no són vàlids.';
-$messages['error_no_search_results'] = 'No hi ha coincidències amb els termes de la cerca.';
-$messages['error_no_albums_defined'] = 'Aquest blog no té cap album definit.';
-$messages['error_incorrect_category_id'] = 'L\'identificador de la categoria no és correcte.';
-$messages['error_incorrect_user'] = 'L\'usuari no és vàlid';
+$messages["error_comment_without_name"] = "Has de donar com a mínim el teu nom.";
+$messages["error_adding_comment"] = "S'ha produït un error en afegir el comentari a la base de dades.";
+$messages["error_incorrect_parameter"] = "Paràmetre incorrecte.";
+$messages["error_parameter_missing"] = "Falta un paràmetre a la petició.";
+$messages["error_blog_has_no_links"] = "Aquest bloc encara no té enllaços.";
+$messages["error_comments_not_enabled"] = "La funció de comentar articles ha estat desactivada en aquest bloc.";
+$messages['error_incorrect_search_terms'] = 'Els termes de la recerca no són vàlids.';
+$messages['error_no_search_results'] = 'No hi ha coincidències amb els termes de la cerca.';
+$messages['error_no_albums_defined'] = 'Aquest blog no té cap album definit.';
+$messages['error_incorrect_category_id'] = 'L\'identificador de la categoria no és correcte.';
+$messages['error_incorrect_user'] = 'L\'usuari no és vàlid';
 
 $messages['posted_in'] = 'Publicat a';
 $messages['form_authenticated'] = 'Autentitficat';
 $messages['previous_post'] = 'Anterior';
-$messages['next_post'] = 'Següent';
-$messages['comment_default_title'] = '(Sense títol)';
-$messages['trackbacks'] = 'Retroenllaços';
-$messages['menu'] = 'Menú';
+$messages['next_post'] = 'Següent';
+$messages['comment_default_title'] = '(Sense títol)';
+$messages['trackbacks'] = 'Retroenllaços';
+$messages['menu'] = 'Menú';
 $messages['albums'] = 'Albums';
-$messages['admin'] = 'Administració';
+$messages['admin'] = 'Administració';
 $messages['guestbook'] = 'Llibre visites';
 $messages['num_reads'] = 'Lectures';
 
@@ -140,7 +139,7 @@
 $messages['bits_per_sample'] = 'Bits per mostra (BPS)';
 
 /// Strings added in LT 1.2.4 ///
-$messages['audio_codec'] = 'Códec d\'audio';
-$messages['video_codec'] = 'Códec de vídeo';
-$messages['length'] = 'Duració';
+$messages['audio_codec'] = 'Códec d\'audio';
+$messages['video_codec'] = 'Códec de vídeo';
+$messages['length'] = 'Duració';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/locale_de_DE.php
===================================================================
--- plog/trunk/locale/locale_de_DE.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_de_DE.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +1,6 @@
 <?php
 
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'iso-8859-1';
 $messages['locale_description'] = 'Deutsche Sprachdatei f&uuml;r LifeType';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';

Modified: plog/trunk/locale/locale_en_UK.php
===================================================================
--- plog/trunk/locale/locale_en_UK.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_en_UK.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +1,6 @@
 <?php
 
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'iso-8859-1';
 $messages['locale_description'] = 'English locale file for LifeType';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';

Modified: plog/trunk/locale/locale_es_ES.php
===================================================================
--- plog/trunk/locale/locale_es_ES.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_es_ES.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,12 +1,11 @@
 <?php
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'iso-8859-1';
-$messages['locale_description'] = 'Traducción al español de LifeType';
+$messages['locale_description'] = 'Traducción al español 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', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado' );
+$messages['days'] = Array( 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado' );
 // -- compatibility, do not touch -- //
 $messages['Monday'] = $messages['days'][1];
 $messages['Tuesday'] = $messages['days'][2];
@@ -56,86 +55,86 @@
 $messages['search'] = 'buscar';
 $messages['calendar'] = 'calendario';
 $messages['search_s'] = 'Buscar';
-$messages['search_this_blog'] = 'Buscar en esta bitácora:';
-$messages['about_myself'] = 'Quién soy?';
+$messages['search_this_blog'] = 'Buscar en esta bitácora:';
+$messages['about_myself'] = 'Quién soy?';
 $messages['permalink_title'] = 'Enlace permanente a los archivos';
 $messages['permalink'] = 'Enlace';
 $messages['posted_by'] = 'Escrito por';
 $messages['reply'] = 'Responder';
-$messages['category'] = 'Categoría';
+$messages['category'] = 'Categoría';
 
-$messages['add_comment'] = 'Añadir comentario';
-$messages['comment_topic'] = 'Título';
+$messages['add_comment'] = 'Añadir comentario';
+$messages['comment_topic'] = 'Título';
 $messages['comment_text'] = 'Texto';
 $messages['comment_username'] = 'Tu nombre';
-$messages['comment_email'] = 'Dirección de correo (opcional)';
-$messages['comment_url'] = 'Página personal (opcional)';
+$messages['comment_email'] = 'Dirección de correo (opcional)';
+$messages['comment_url'] = 'Página personal (opcional)';
 $messages['comment_send'] = 'Enviar';
-$messages['comment_added'] = 'Comentario añadido!';
-$messages['comment_add_error'] = 'Hubo un error añadiendo el comentario';
-$messages['article_does_not_exist'] = 'El artículo no existe';
-$messages['no_posts_found'] = 'No se encontraron artículos';
-$messages['user_has_no_posts_yet'] = 'El usuario todavía no ha escrito ningun artículo';
-$messages['back'] = 'Atrás';
-$messages['post'] = 'artículo';
-$messages['trackbacks_for_article'] = 'Retroenlaces del artículo: ';
+$messages['comment_added'] = 'Comentario añadido!';
+$messages['comment_add_error'] = 'Hubo un error añadiendo el comentario';
+$messages['article_does_not_exist'] = 'El artículo no existe';
+$messages['no_posts_found'] = 'No se encontraron artículos';
+$messages['user_has_no_posts_yet'] = 'El usuario todavía no ha escrito ningun artículo';
+$messages['back'] = 'Atrás';
+$messages['post'] = 'artículo';
+$messages['trackbacks_for_article'] = 'Retroenlaces del artículo: ';
 $messages['trackback_excerpt'] = 'Fragmento';
-$messages['trackback_weblog'] = 'Bitácora';
-$messages['search_results'] = 'Resultados de la búsqueda';
-$messages['search_matching_results'] = 'Los siguientes artículos han sido encontrados: ';
-$messages['search_no_matching_posts'] = 'No se encontraron artículos';
-$messages['read_more'] = '(Más)';
+$messages['trackback_weblog'] = 'Bitácora';
+$messages['search_results'] = 'Resultados de la búsqueda';
+$messages['search_matching_results'] = 'Los siguientes artículos han sido encontrados: ';
+$messages['search_no_matching_posts'] = 'No se encontraron artículos';
+$messages['read_more'] = '(Más)';
 $messages['syndicate'] = 'Agregar';
 $messages['main'] = 'Principal';
 $messages['about'] = 'Acerca de';
 $messages['download'] = 'Descargar';
-$messages['error_incorrect_email_address'] = 'La dirección de correo no es válida';
+$messages['error_incorrect_email_address'] = 'La dirección de correo no es válida';
 $messages['invalid_url'] = 'You entered an invalid URL. Please correct and try again';
 
-$messages['error_fetching_article'] = 'El artículo especificado no existe.';
-$messages['error_fetching_articles'] = 'No se encontraron artículos';
+$messages['error_fetching_article'] = 'El artículo especificado no existe.';
+$messages['error_fetching_articles'] = 'No se encontraron artículos';
 $messages['error_fetching_category'] = 'There was an error fetching the category'; // translate
-$messages['error_trackback_no_trackback'] = 'El artículo no ha recibido ningun retroenlace';
-$messages['error_incorrect_article_id'] = 'El identificador del artículo no es correcto';
-$messages['error_incorrect_blog_id'] = 'El identificador de la bitácora no es correcto';
-$messages['error_comment_without_text'] = 'El texto del comentario está vacío.';
-$messages['error_comment_without_name'] = 'Es necesario que dé su nombre o apodo.';
-$messages['error_adding_comment'] = 'Hubo un error añadiendo el comentario.';
-$messages['error_incorrect_parameter'] = 'Parámetro incorrecto.';
-$messages['error_parameter_missing'] = 'Falta un parámetro.';
-$messages['error_comments_not_enabled'] = 'Los comentarios han sido desactivados en esta bitácora.';
-$messages['error_incorrect_search_terms'] = 'Los términos de la búsqueda son incorrectos.';
-$messages['error_no_search_results'] = 'No se encontraros artículos que se correspondan con los términos de la búsqueda.';
-$messages['error_no_albums_defined'] = 'No hay ningun álbum disponible en esta bitácora.';
-$messages['error_incorrect_category_id'] = 'El identificador de la categoría no es correcto o no se seleccionaron categorías a borrar';
-$messages['error_incorrect_user'] = 'El usuario no es válido';
+$messages['error_trackback_no_trackback'] = 'El artículo no ha recibido ningun retroenlace';
+$messages['error_incorrect_article_id'] = 'El identificador del artículo no es correcto';
+$messages['error_incorrect_blog_id'] = 'El identificador de la bitácora no es correcto';
+$messages['error_comment_without_text'] = 'El texto del comentario está vacío.';
+$messages['error_comment_without_name'] = 'Es necesario que dé su nombre o apodo.';
+$messages['error_adding_comment'] = 'Hubo un error añadiendo el comentario.';
+$messages['error_incorrect_parameter'] = 'Parámetro incorrecto.';
+$messages['error_parameter_missing'] = 'Falta un parámetro.';
+$messages['error_comments_not_enabled'] = 'Los comentarios han sido desactivados en esta bitácora.';
+$messages['error_incorrect_search_terms'] = 'Los términos de la búsqueda son incorrectos.';
+$messages['error_no_search_results'] = 'No se encontraros artículos que se correspondan con los términos de la búsqueda.';
+$messages['error_no_albums_defined'] = 'No hay ningun álbum disponible en esta bitácora.';
+$messages['error_incorrect_category_id'] = 'El identificador de la categoría no es correcto o no se seleccionaron categorías a borrar';
+$messages['error_incorrect_user'] = 'El usuario no es válido';
 
 $messages['posted_in'] = 'Publicado en';
 $messages['form_authenticated'] = 'Autentificado';
 $messages['previous_post'] = 'Anterior';
 $messages['next_post'] = 'Siguiente';
-$messages['comment_default_title'] = '(Sin título)';
+$messages['comment_default_title'] = '(Sin título)';
 $messages['trackbacks'] = 'Retroenlaces';
-$messages['menu'] = 'Menú';
+$messages['menu'] = 'Menú';
 $messages['albums'] = 'Albums';
-$messages['admin'] = 'Administración';
+$messages['admin'] = 'Administración';
 $messages['guestbook'] = 'Libro de visitas';
 $messages['num_reads'] = 'Lecturas';
-$messages['categories'] = 'Categorías';
+$messages['categories'] = 'Categorías';
 
 $messages['error_fetching_resource'] = 'El fichero no se pudo encontrar.';
 $messages['contact_me'] = 'Contactar';
 $messages['required'] = 'Obligatorio';
 
-$messages['size'] = 'Tamaño';
+$messages['size'] = 'Tamaño';
 $messages['format'] = 'Formato';
 $messages['dimensions'] = 'Dimensiones';
 $messages['bits_per_sample'] = 'Bits por muestra';
 $messages['sample_rate'] = 'Frecuencia de muestreo';
-$messages['number_of_channels'] = 'Número de canales';
-$messages['length'] = 'Duración';
+$messages['number_of_channels'] = 'Número de canales';
+$messages['length'] = 'Duración';
 
 /// Strings added in LT 1.2.4 ///
-$messages['audio_codec'] = 'Códec de audio';
-$messages['video_codec'] = 'Códec de vídeo';
+$messages['audio_codec'] = 'Códec de audio';
+$messages['video_codec'] = 'Códec de vídeo';
 ?>
\ No newline at end of file

Modified: plog/trunk/locale/locale_gl_ES.php
===================================================================
--- plog/trunk/locale/locale_gl_ES.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_gl_ES.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,14 +1,13 @@
 <?php
-// Traducción o galego de lifetype 121, realizada por Víctor Julio Quesada Varela, 2007. egalego at gmail.com, www.egalego.com
+// 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';
+$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' );
+$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];
@@ -30,7 +29,7 @@
 $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' );
+$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];
@@ -58,41 +57,41 @@
 $messages['search'] = 'Procurar';
 $messages['calendar'] = 'calendario';
 $messages['search_s'] = 'Procurar';
-$messages['search_this_blog'] = 'Procurar nesta bitácora:';
+$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['category'] = 'Categoría';
+$messages['category'] = 'Categoría';
 
 $messages['add_comment'] = 'Engadir comentario';
 
-$messages['comment_topic'] = 'Título';
+$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_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['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['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['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_incorrect_email_address'] = 'O enderezo de correo non é válido';
 $messages['invalid_url'] = 'You entered an invalid URL. Please correct and try again';
 
 
@@ -100,27 +99,27 @@
 $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_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['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['comment_default_title'] = '(Sen título)';
 $messages['trackbacks'] = 'Retroenlaces';
-$messages['menu'] = 'Menú';
+$messages['menu'] = 'Menú';
 $messages['albums'] = 'Albums';
-$messages['admin'] = 'Administración';
+$messages['admin'] = 'Administración';
 $messages['guestbook'] = 'Libro de visitas';
 $messages['num_reads'] = 'Lecturas';
 
@@ -128,13 +127,13 @@
 $messages['contact_me'] = 'Contactar';
 $messages['required'] = 'Obrigatorio';
 
-$messages['size'] = 'Tamaño';
+$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['length'] = 'Duración';
+$messages['number_of_channels'] = 'Número de canles';
+$messages['length'] = 'Duración';
 
 /// Strings added in LT 1.2.4 ///
 $messages['audio_codec'] = 'Codec de audio';

Modified: plog/trunk/locale/locale_it_IT.php
===================================================================
--- plog/trunk/locale/locale_it_IT.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_it_IT.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,6 +1,5 @@
 <?php
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'iso-8859-15';
 $messages['locale_description'] = 'File di localizzazione italiano per LifeType';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';

Modified: plog/trunk/locale/locale_nl_NL.php
===================================================================
--- plog/trunk/locale/locale_nl_NL.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_nl_NL.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +1,6 @@
 <?php
 
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'iso-8859-1';
 $messages['locale_description'] = 'Nederlands locale bestand voor LifeType';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';

Modified: plog/trunk/locale/locale_zh_CN.php
===================================================================
--- plog/trunk/locale/locale_zh_CN.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_zh_CN.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,8 +1,7 @@
 <?php
 
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'utf-8';
-$messages['locale_description'] = 'Simplified Chinese translation (UTF-8)';
+$messages['locale_description'] = 'Simplified Chinese translation';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';
 

Modified: plog/trunk/locale/locale_zh_TW.php
===================================================================
--- plog/trunk/locale/locale_zh_TW.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/locale/locale_zh_TW.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,8 +1,7 @@
 <?php
 
 // set this to the encoding that should be used to display the pages correctly
-$messages['encoding'] = 'utf-8';
-$messages['locale_description'] = 'Traditional Chinese translation (UTF-8)';
+$messages['locale_description'] = 'Traditional Chinese translation';
 // locale format, see Locale::formatDate for more information
 $messages['date_format'] = '%d/%m/%Y %H:%M';
 

Modified: plog/trunk/styles/admin.css
===================================================================
--- plog/trunk/styles/admin.css	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/styles/admin.css	2007-07-19 04:53:31 UTC (rev 5683)
@@ -973,3 +973,54 @@
     color            : #76797c;
     margin           : 0 0 0.2em 0.4em;
 }
+
+/* ******************  albums  *************** */
+
+div.album {
+	text-align: center;
+	float: left;
+	width:150px;
+	height:130px;
+	margin-bottom:5px;
+	margin-right:5px;
+	padding-top:5px;	
+}
+
+div.file {
+	text-align: center;
+	align:center;
+	float: left;
+	width:150px;
+	height:170px;
+	margin-bottom:5px;
+	margin-right:5px;
+	padding-top:5px;
+}
+
+.clearer {
+	clear : both;
+	height : 1px;
+	font-size : 1px;
+}
+   
+a img {border:none;}
+#album a:link {color: #004ca1;}
+#album a:visited {color: #b50394;}
+#album a:hover, #album a:active, #album a:focus {color: #004ca1;background:none;}
+
+/*.pictureFrame {
+	border: 1px solid #dfdfdf;
+	background-color: #ffffff;
+	padding-top:5px;
+	padding-left:5px;
+	padding-right:5px;
+	padding-bottom:15px;
+	width:120px;	
+	text-align:center;
+}
+
+.picture {
+	align:center;
+	border: 1px solid #dfdfdf;
+	width:120px;	
+}*/
\ No newline at end of file

Modified: plog/trunk/templates/admin/addbloguser.template
===================================================================
--- plog/trunk/templates/admin/addbloguser.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/addbloguser.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,6 +1,6 @@
 {include file="$admintemplatepath/header.template"}
+{js src="js/ui/pages/addbloguser.js"}
 {include file="$admintemplatepath/navigation.template" showOpt=newBlogUser title=$locale->tr("newBlogUser")}
-
  <form name="addBlogUser" id="addBlogUser" action="admin.php" method="post">
    <fieldset class="inputField">
   
@@ -35,7 +35,7 @@
       <div class="formHelp">{$locale->tr("blog_user_permissions_help")}</div>     
         {$locale->tr("quick_permission_selection")}
         </br>
-        <select name="preselection" onChange="togglePermissionSets('addBlogUser', this.value);">
+        <select name="preselection" onChange="Lifetype.UI.Pages.AddBlogUser.togglePermissionSets('addBlogUser', this.value);">
           <option value=""/>{$locale->tr("select")}</option>
           <option value="basic_blog_permission"/>{$locale->tr("basic_blog_permission")}</option>
           <option value="full_blog_permission"/>{$locale->tr("full_blog_permission")}</option>

Modified: plog/trunk/templates/admin/blogcategories.template
===================================================================
--- plog/trunk/templates/admin/blogcategories.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/blogcategories.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -32,7 +32,7 @@
  <table id="list" class="info" summary="{$locale->tr("editBlogCategories")}">
   <thead>
    <tr>
-    <th style="width:10px;"><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('deleteCategories');" /></th>
+    <th style="width:10px;"><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('deleteCategories');" /></th>
     <th style="width:75%;">{$locale->tr("category")}</th>
     <th style="width:15%;">{$locale->tr("blogs")}</th>
     <th style="width:10%;">{$locale->tr("actions")}</th>

Modified: plog/trunk/templates/admin/blogsettings.template
===================================================================
--- plog/trunk/templates/admin/blogsettings.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/blogsettings.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,18 +1,17 @@
 {include file="$admintemplatepath/header.template"}
+{js src="js/ui/pages/templatechooser.js"}
 {include file="$admintemplatepath/navigation.template" showOpt=blogSettings title=$locale->tr("blogSettings")}
-
- <form name="blogSettings" action="admin.php" method="post">
+<form name="blogSettings" id="blogSettings" action="admin.php" method="post" onSubmit="Lifetype.Forms.AjaxFormProcessor(this.id,'?op=updateBlogSettings&output=json');return(false);">
   <fieldset class="inputField">
     <legend>{$locale->tr("blogSettings")}</legend> 
-  {include file="$admintemplatepath/successmessage.template"}
-  {include file="$admintemplatepath/errormessage.template"}
+	{include file="$admintemplatepath/formvalidateajax.template"}
 
     <div class="field">
       <label for="blogName">{$locale->tr("name")}</label>
       <span class="required">*</span>
       <div class="formHelp">{$locale->tr("blog_name_help")}</div>
       <input type="text" name="blogName" id="blogName" style="width:100%" value="{$blogName}" />
-      {include file="$admintemplatepath/validate.template" field=blogName message=$locale->tr("error_invalid_blog_name")}
+      {include file="$admintemplatepath/validateajax.template" field=blogName}
     </div>
 
     {if $blogDomainsEnabled}
@@ -32,8 +31,8 @@
         </option>
        {/foreach}
       </select>
-      {include file="$admintemplatepath/validate.template" field=blogSubDomain message=$locale->tr("error_invalid_subdomain")}
-      {include file="$admintemplatepath/validate.template" field=blogMainDomain message=$locale->tr("error_invalid_domain")}
+      {include file="$admintemplatepath/validateajax.template" field=blogSubDomain}
+      {include file="$admintemplatepath/validateajax.template" field=blogMainDomain}
     </div>
     {/if}
 
@@ -54,7 +53,7 @@
 	   </option>
       {/foreach}
       </select>
-      {include file="$admintemplatepath/validate.template" field=blogLocale message=$locale->tr("error_invalid_locale")}
+      {include file="$admintemplatepath/validateajax.template" field=blogLocale message=$locale->tr("error_invalid_locale")}
     </div>
 
     {if $location_data_enabled}
@@ -79,7 +78,7 @@
 	   </option>
       {/foreach}
       </select>
-      {include file="$admintemplatepath/validate.template" field=blogCategory message=$locale->tr("error_invalid_blog_category")}
+      {include file="$admintemplatepath/validateajax.template" field=blogCategory}
     </div>
 
     <div class="field">
@@ -87,7 +86,7 @@
      <span class="required">*</span>
      <div class="formHelp">{$locale->tr("max_main_page_items_help")}</div>
      <input type="text" name="blogMaxMainPageItems" id="blogMaxMainPageItems" value="{$blogMaxMainPageItems}"/>
-     {include file="$admintemplatepath/validate.template" field=blogMaxMainPageItems message=$locale->tr("error_invalid_number")}
+     {include file="$admintemplatepath/validateajax.template" field=blogMaxMainPageItems}
     </div>
 
     <div class="field">
@@ -95,7 +94,7 @@
      <span class="required">*</span>
      <div class="formHelp">{$locale->tr("max_recent_items_help")}</div>
      <input type="text" name="blogMaxRecentItems" id="blogMaxRecentItems" value="{$blogMaxRecentItems}" />
-     {include file="$admintemplatepath/validate.template" field=blogMaxRecentItems message=$locale->tr("error_invalid_number")}
+     {include file="$admintemplatepath/validateajax.template" field=blogMaxRecentItems}
     </div>
 
     <div class="field">
@@ -108,8 +107,8 @@
         <option value="{$template->getName()}"{if $template->getName() == $blogTemplateSet->getName()} selected="selected" {/if}>{$template->getName()}</option>
        {/foreach}
       </select>
-      <a href="javascript:openTemplateChooserWindow();">{$locale->tr("choose")}...</a>
-      <br/>{include file="$admintemplatepath/validate.template" field=blogTemplate message=$locale->tr("error_incorrect_template")}
+      <a href="javascript:Lifetype.UI.Pages.TemplateChooser.openTemplateChooserWindow();">{$locale->tr("choose")}...</a>
+      <br/>{include file="$admintemplatepath/validateajax.template" field=blogTemplate}
      </div>
 
      <div class="field">
@@ -152,7 +151,7 @@
      <label for="blogNumCommentsPerPage">{$locale->tr("show_comments_max")}</label>
      <div class="formHelp">{$locale->tr("show_comments_max_help")}</div>
      <input type="text" name="blogNumCommentsPerPage" id="blogNumCommentsPerPage" value="{$blogNumCommentsPerPage}" />
-     {include file="$admintemplatepath/validate.template" field=blogNumCommentsPerPage message=$locale->tr("error_invalid_number")}
+     {include file="$admintemplatepath/validateajax.template" field=blogNumCommentsPerPage}
     </div>     
 
      <div class="field">
@@ -360,7 +359,6 @@
            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>  
      
     </fieldset>

Modified: plog/trunk/templates/admin/blogtemplates.template
===================================================================
--- plog/trunk/templates/admin/blogtemplates.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/blogtemplates.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,7 +16,7 @@
   <table id="list" class="info" summary="{$locale->tr("blogTemplates")}" id="list">
    <thead>
     <tr>
-      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('editTemplates');" /></th>
+      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('editTemplates');" /></th>
       <th style="width:90%;">{$locale->tr("template")}</th>
       <th style="width:10%;">{$locale->tr("actions")}</th>
     </tr>
@@ -33,7 +33,7 @@
     </td>
     <td  class="col_highlighted">
 	 {if $sitetemplate->hasScreenshot()}
-	  <a href="javascript:openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');">{$sitetemplate->getName()}</a>
+	  <a href="javascript:Lifetype.UI.Pages.TemplateChooser.openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');">{$sitetemplate->getName()}</a>
 	 {else}
       {$sitetemplate->getName()}
 	 {/if} 
@@ -48,7 +48,7 @@
       </a>
       {/check_perms}
 	  {if $sitetemplate->hasScreenshot()}
-	    <a href="javascript:openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');" title="{$locale->tr("preview")}">
+	    <a href="javascript:Lifetype.UI.Pages.TemplateChooser.openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');" title="{$locale->tr("preview")}">
 		  <img src="imgs/admin/icon_image-16.png" title="{$locale->tr("preview")}" />
 		</a>
 	  {/if}		  

Modified: plog/trunk/templates/admin/blogusers.template
===================================================================
--- plog/trunk/templates/admin/blogusers.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/blogusers.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,7 +16,7 @@
             <table id="list" class="info" summary="{$locale->tr("showBlogUsers")}">
                 <thead>
                     <tr>
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('blogUsers');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('blogUsers');" /></th>
                         <th style="width:20%;">{$locale->tr("username")}</th>
                         <th style="width:40%;">{$locale->tr("full_name")}</th>                        
                         <th style="width:30%;">{$locale->tr("email")}</th>

Modified: plog/trunk/templates/admin/chooser/blogtemplatechooser.template
===================================================================
--- plog/trunk/templates/admin/chooser/blogtemplatechooser.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/chooser/blogtemplatechooser.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,4 +1,5 @@
 {include file="$admintemplatepath/chooser/header.template"}
+{js src="js/ui/pages/templatechooser.js"}
 <div id="container">
 <table id="list" class="info" summary="{$locale->tr("template")}">
  <thead>
@@ -12,8 +13,8 @@
   {/if} 
     <td>
      {assign var=templateName value=$template->getName()}
-     <b>{$templateName}</b>&nbsp;(<a href="javascript:blogTemplateSelector('{$templateName}')">{$locale->tr("select")}</a>)<br/>
-     <a href="javascript:blogTemplateSelector('{$templateName}')"><img src="{$template->getScreenshotUrl()}" alt="{$templateName}" height="150" width="200" /></a>
+     <b>{$templateName}</b>&nbsp;(<a href="javascript:Lifetype.UI.Pages.TemplateChooser.blogTemplateSelector('{$templateName}')">{$locale->tr("select")}</a>)<br/>
+     <a href="javascript:Lifetype.UI.Pages.TemplateChooser.blogTemplateSelector('{$templateName}')"><img src="{$template->getScreenshotUrl()}" alt="{$templateName}" height="150" width="200" /></a>
     </td>
   {if ($smarty.foreach.template.iteration % 2) == 0}     
    </tr> 

Modified: plog/trunk/templates/admin/chooser/siteblogschooser.template
===================================================================
--- plog/trunk/templates/admin/chooser/siteblogschooser.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/chooser/siteblogschooser.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -55,7 +55,7 @@
 	     {if $mode=="1"}
           <a href="#" onclick="setDocumentField(parent.opener.document,'blogName','{$siteblog->getBlog()|escape:javascript}');setDocumentField(parent.opener.document,'blogId','{$siteblog->getId()}');window.close()">
 		 {else}
-		  <a href="#" onclick="appendDocumentList(parent.opener.document,'blogList','{$siteblog->getId()}','{$siteblog->getBlog()|escape:javascript}');window.close()">
+		  <a href="#" onclick="Lifetype.Forms.List.appendToExternalList(parent.opener.document,'blogList','{$siteblog->getId()}','{$siteblog->getBlog()|escape:javascript}');window.close()">
 		 {/if}
 		 {$siteblog->getBlog()}
 		</a>
@@ -77,7 +77,7 @@
 		  {if $mode=="1"}
             <a href="#" onclick="setDocumentField(parent.opener.document,'blogName','{$siteblog->getBlog()|escape:javascript}');setDocumentField(parent.opener.document,'blogId','{$siteblog->getId()}');window.close()">
 		  {else}
-		    <a href="#" onclick="appendDocumentList(parent.opener.document,'blogList','{$siteblog->getId()}','{$siteblog->getBlog()|escape:javascript}');window.close()">		 
+		    <a href="#" onclick="Lifetype.Forms.List.appendToExternalList(parent.opener.document,'blogList','{$siteblog->getId()}','{$siteblog->getBlog()|escape:javascript}');window.close()">		 
 		  {/if}
 		  <img src="imgs/admin/icon_arrow-16.png" alt="{$locale->tr("select_user")}" />
 		 </a>

Modified: plog/trunk/templates/admin/chooser/siteuserschooser.template
===================================================================
--- plog/trunk/templates/admin/chooser/siteuserschooser.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/chooser/siteuserschooser.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -66,7 +66,11 @@
 						    {if $mode=="1"}
                               <a href="javascript:setDocumentField(parent.opener.document, 'userName','{$siteuser->getUsername()}');setDocumentField(parent.opener.document,'userId','{$siteuser->getId()}');window.close()">
 							{else}
+<<<<<<< .working
 							  <a href="javascript:appendDocumentList(parent.opener.document, 'userList','{$siteuser->getId()}','{$siteuser->getUsername()}');window.close()">
+=======
+							  <a href="javascript:Lifetype.Forms.List.appendToExternalList(top.document, 'userList','{$siteuser->getId()}','{$siteuser->getUsername()}');window.close()">
+>>>>>>> .merge-right.r5682
 							{/if}
 							  {$siteuser->getUsername()}
 							</a>
@@ -92,7 +96,7 @@
 						    {if $mode=="1"}
                               <a href="javascript:setDocumentField(parent.opener.document, 'userName','{$siteuser->getUsername()}');setDocumentField(parent.opener.document,'userId','{$siteuser->getId()}');window.close()">
 							{else}
-							  <a href="javascript:appendDocumentList(parent.opener.document, 'userList','{$siteuser->getId()}','{$siteuser->getUsername()}');window.close()">
+							  <a href="javascript:Lifetype.Forms.List.appendToExternalList(top.document, 'userList','{$siteuser->getId()}','{$siteuser->getUsername()}');window.close()">
 							{/if}
 							  <img src="imgs/admin/icon_arrow-16.png" alt="{$locale->tr("select_user")}" />
 							</a>

Modified: plog/trunk/templates/admin/chooser/userpictureselect.template
===================================================================
--- plog/trunk/templates/admin/chooser/userpictureselect.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/chooser/userpictureselect.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,6 @@
 {include file="$admintemplatepath/chooser/header.template"}
-<script type="text/javascript" src="js/ui/plogui.js"></script>
+{js src="js/ui/plogui.js"}
+{js src="js/ui/pages/userpictureselect.js"}
 {literal}
 <style type="text/css">
 #resource_list_upload
@@ -81,12 +82,12 @@
 <tr>
  <td>
   {if $resource->hasPreview()}
-   <a href="javascript:returnResourceInformation('{$resource->getId()}','{$url->resourcePreviewLink($resource)}');window.close();"><img src="{$url->resourcePreviewLink($resource)}" alt="Preview" /></a>
+   <a href="javascript:Lifetype.UI.Pages.UserPictureSelect.returnResourceInformation('{$resource->getId()}','{$url->resourcePreviewLink($resource)}');window.close();"><img src="{$url->resourcePreviewLink($resource)}" alt="Preview" /></a>
   {/if}
  <a target="_blank" href="{$url->resourceLink($resource)}"><br/>{$resource->getFileName()}</a>
  </td>
  <td>
- <a href="javascript:returnResourceInformation('{$resource->getId()}','{$url->rawResourcePreviewLink($resource)}');window.close();">{$locale->tr("select")}</a>
+ <a href="javascript:Lifetype.UI.Pages.UserPictureSelect.returnResourceInformation('{$resource->getId()}','{$url->rawResourcePreviewLink($resource)}');window.close();">{$locale->tr("select")}</a>
  </td> 
 </tr>
 {/foreach}

Modified: plog/trunk/templates/admin/customfields.template
===================================================================
--- plog/trunk/templates/admin/customfields.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/customfields.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,7 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=blogCustomFields title=$locale->tr("blogCustomFields")}
+{js src="js/ui/pages/newcustomfield.js"}
+{js src="js/ui/pages/editcustomfield.js"}
 <script type="text/javascript">
 {literal}
 YAHOO.util.Event.addListener( window, "load", function() {
@@ -9,6 +11,11 @@
 	});
 {/literal}
 </script>
+
+<div class="optionIcon">		
+  <a id="newCustomFieldButton" href="?op=newCustomField" rel="overlay">New Custom Field</a>
+</div>
+
         <form id="customFields" action="admin.php" method="post">
         <div id="list">
   {include file="$admintemplatepath/successmessage.template"}
@@ -17,7 +24,7 @@
             <table id="list" class="info" summary="{$locale->tr("blogCustomFields")}">
                 <thead>
                     <tr>
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('customFields');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('customFields');" /></th>
                         <th style="width:25%;">{$locale->tr("name")}</th>
                         <th style="width:40%">{$locale->tr("description")}</th>
                         <th style="width:15%">{$locale->tr("type")}</th>                        
@@ -32,7 +39,7 @@
 				     <input class="checkbox" type="checkbox" name="fieldIds[{$field->getId()}]" id="checks_1" value="{$field->getId()}" />				   
 				   </td>
 				   <td class="col_highlighted">
-				     {check_perms perm=update_custom_field}<a href="admin.php?op=editCustomField&amp;fieldId={$field->getId()}">{/check_perms}{$field->getName()}{check_perms perm=update_custom_field}</a>{/check_perms}
+				     {check_perms perm=update_custom_field}<a href="admin.php?op=editCustomField&amp;fieldId={$field->getId()}" rel="overlay" id="customfield_{$field->getId()}">{/check_perms}{$field->getName()}{check_perms perm=update_custom_field}</a>{/check_perms}
 				   </td>
 				   <td>
 				     {$field->getDescription()}
@@ -50,7 +57,7 @@
                  <td>
                     <div class="list_action_button">
 					   {check_perms perm=update_custom_field}
-                       <a href="?op=editCustomField&amp;fieldId={$field->getId()}"><img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("editCustomField")}" /></a>
+                       <a id="edit_link_{$field->getId()}" rel="overlay" href="?op=editCustomField&amp;fieldId={$field->getId()}"><img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("editCustomField")}" /></a>
                        <a href="?op=deleteCustomField&amp;fieldId={$field->getId()}"><img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" /></a>
 					   {/check_perms}
                      </div>

Modified: plog/trunk/templates/admin/default.template
===================================================================
--- plog/trunk/templates/admin/default.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/default.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,10 +1,10 @@
 {include file="$blogtemplate/simpleheader.template"}
+{js src="js/ui/pages/default.js"}
 	<div class="loginBox" style="padding-top: 180px;">
-	   <form name="loginForm" method="post" action="admin.php">
+	   <form name="loginForm" id="loginForm" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.Default.submitHook();return(false);">
 		  <fieldset class="inputField">
 		   <h4>{$locale->tr("login")}</h4> 
-            {include file="$blogtemplate/errormessage.template" message=$viewErrorMessage}
-            {include file="$blogtemplate/successmessage.template" message=$viewSuccessMessage}
+			{include file="$blogtemplate/formvalidateajax.template"}
 		   {if $viewIsError=="" && $viewIsSuccess==""}
 		     <div class="welcomeMessage">
 		   	   {$locale->tr("welcome_message")}
@@ -26,5 +26,4 @@
 		</div> 
        </form>		
 	</div>
-
-{include file="$blogtemplate/simplefooter.template"}
+{include file="$blogtemplate/simplefooter.template"}
\ No newline at end of file

Modified: plog/trunk/templates/admin/editarticlecategories.template
===================================================================
--- plog/trunk/templates/admin/editarticlecategories.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editarticlecategories.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,7 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editArticleCategories title=$locale->tr("editArticleCategories")}
+{js src="js/ui/pages/newpostcategory.js"}
+{js src="js/ui/pages/editarticlecategory.js"}
 <script type="text/javascript">
 {literal}
 YAHOO.util.Event.addListener( window, "load", function() {
@@ -33,6 +35,10 @@
  <br style="clear:both" />
  </div> 
 
+<div class="optionIcon">		
+  <a id="newArticleCategoryButton" href="?op=newArticleCategory" rel="overlay">New Article Category</a>
+</div>
+
  <form id="deleteCategories" action="admin.php" method="post">
  <div id="list">
   {include file="$admintemplatepath/successmessage.template"}
@@ -40,7 +46,7 @@
  <table class="info" id="info" summary="{$locale->tr("editArticleCategories")}">
   <thead>
    <tr>
-    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('deleteCategories');" /></th>
+    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('deleteCategories');" /></th>
     <th style="width:50%;">{$locale->tr("category")}</th>
     <th style="width:20%">{$locale->tr("posts")}</th>
     <th style="width:20%">{$locale->tr("show_in_main_page")}</th>
@@ -54,20 +60,20 @@
       <input class="checkbox" type="checkbox" name="categoryIds[{counter}]" id="checks_{$category->getId()}" value="{$category->getId()}" />
    </td>  
    <td class="col_highlighted">
-    {check_perms perm=update_category}<a href="admin.php?op=editArticleCategory&amp;categoryId={$category->getId()}">{/check_perms}{$category->getName()}{check_perms perm=update_category}</a>{/check_perms}
+    {check_perms perm=update_category}<a id="category_name_{$category->getId()}" rel="overlay" href="admin.php?op=editArticleCategory&amp;categoryId={$category->getId()}">{/check_perms}{$category->getName()}{check_perms perm=update_category}</a>{/check_perms}
    </td>
    {if $category->getNumArticles() > 0}
-    <td>{check_perms perm=view_articles}<a href="admin.php?op=editPosts&amp;showCategory={$category->getId()}&amp;showStatus=0&amp;showMonth=-1">{/check_perms}({$category->getNumAllArticles()}){check_perms perm=view_articles}</a>{/check_perms}</td>
+    <td>{check_perms perm=view_articles}<a id="category_num_articles_{$category->getId()}"	 href="admin.php?op=editPosts&amp;showCategory={$category->getId()}&amp;showStatus=0&amp;showMonth=-1">{/check_perms}{$category->getNumAllArticles()}{check_perms perm=view_articles}</a>{/check_perms}</td>
    {else}
-    <td>(0)</td>
+    <td>0</td>
    {/if}
-   <td>
+   <td id="category_in_main_page_{$category->getId()}">
     {if $category->isInMainPage()}{$locale->tr("yes")}{else}{$locale->tr("no")}{/if}
    </td>
    <td>
      <div class="list_action_button">
 	 {check_perms perm=update_category}
-       <a href="?op=editArticleCategory&amp;categoryId={$category->getId()}" title="{$locale->tr("edit")}">
+       <a rel="overlay" id="edit_link_{$category->getId()}" href="?op=editArticleCategory&amp;categoryId={$category->getId()}" title="{$locale->tr("edit")}">
 	     <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit")}" />
 	   </a>
        <a href="?op=deleteArticleCategory&amp;categoryId={$category->getId()}" title="{$locale->tr("delete")}">

Modified: plog/trunk/templates/admin/editarticlecategory.template
===================================================================
--- plog/trunk/templates/admin/editarticlecategory.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editarticlecategory.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,28 +1,21 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=editArticleCategories title=$locale->tr("editArticleCategories")}
-
- <form name="editArticleCategory" action="admin.php" method="post">
-
+<form name="editArticleCategory" id="editArticleCategory" action="admin.php" method="post" onSubmit="Lifetype.UI.Pages.EditPostCategory.submitHook(this);return(false);">
   <fieldset class="inputField">
    <legend>{$locale->tr("editArticleCategories")}</legend>
-   {include file="$admintemplatepath/formvalidate.template"}
-
+   {include file="$admintemplatepath/formvalidateajax.template"}
    <div class="field">
     <label for="categoryName">{$locale->tr("name")}</label>
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("category_name_help")}</div>
     <input type="text" id="categoryName" name="categoryName" value="{$categoryName|escape:"html"}"/>
-    {include file="$admintemplatepath/validate.template" field=categoryName message=$locale->tr("error_empty_name")}
+    {include file="$admintemplatepath/validateajax.template" field=categoryName}
    </div>
-
    <div class="field">
     <label for="categoryDescription">{$locale->tr("description")}</label>
-    <span class="required">*</span>
+    <span class="required"></span>
     <div class="formHelp">{$locale->tr("category_description_help")}</div>
     <textarea name="categoryDescription" id="categoryDescription" cols="60" rows="5">{$categoryDescription}</textarea>
-    {include file="$admintemplatepath/validate.template" field=categoryDescription message=$locale->tr("error_empty_description")}
+    {include file="$admintemplatepath/validateajax.template" field=categoryDescription}
   </div>
-
    <div class="field">
     <label for="categoryInMainPage">{$locale->tr("show_in_main_page")}</label>
     <span class="required"></span>
@@ -39,7 +32,4 @@
     <input type="hidden" name="op" value="updateArticleCategory" />
     <input type="hidden" name="categoryId" value="{$categoryId}" />
   </div>
-</form>
-
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+</form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/editblog.template
===================================================================
--- plog/trunk/templates/admin/editblog.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editblog.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,7 +1,7 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editSiteBlogs title=$locale->tr("editBlog")}
 
- <form name="blogSettings" action="admin.php" method="post" onsubmit="listSelectAll('userList');">
+ <form name="blogSettings" action="admin.php" method="post" onsubmit="Lifetype.Forms.List.selectAll('userList');">
    <fieldset class="inputField">
     <legend>{$locale->tr("editBlog")}</legend>
 	{include file="$admintemplatepath/formvalidate.template"}
@@ -93,7 +93,7 @@
         <option value="{$template->getName()}"{if $template->getName() == $blogTemplateSet->getName()} selected="selected" {/if}>{$template->getName()}</option>
        {/foreach}
       </select>
-      <a href="javascript:openTemplateChooserWindow();">{$locale->tr("select")}</a>
+      <a href="javascript:Lifetype.UI.Pages.TemplateChooser.openTemplateChooserWindow();">{$locale->tr("select")}</a>
      </div>
 
     <div class="field">

Modified: plog/trunk/templates/admin/editbloguser.template
===================================================================
--- plog/trunk/templates/admin/editbloguser.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editbloguser.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,16 +1,15 @@
 {include file="$admintemplatepath/header.template"}
+{js src="js/ui/pages/addbloguser.js"}
 {include file="$admintemplatepath/navigation.template" showOpt=showBlogUsers title=$locale->tr("editBlogUser")}
-
- <form name="editBlogUser" id="editBlogUser" action="admin.php" method="post">
+<form name="editBlogUser" id="editBlogUser" action="admin.php" method="post" onSubmit="Lifetype.Forms.AjaxFormProcessor(this.id,'?op=updateBlogUser&output=json');return(false);"> 
    <fieldset class="inputField">
   
      <legend>{$locale->tr("newBlogUser")}</legend>
-     {include file="$admintemplatepath/formvalidate.template"}
+     {include file="$admintemplatepath/formvalidateajax.template"}
 
      <div class="field">
       <label for="newBlogUserName">{$locale->tr("username")}</label>
       <input type="text" disabled="disabled" id="newBlogUsername" name="newBlogUserName" value="{$edituser->getUsername()}" />
-      {include file="$admintemplatepath/validate.template" field=newBlogUserName message=$locale->tr("error_invalid_user")}
      </div>
 
      <div class="field">
@@ -19,7 +18,7 @@
       <div class="formHelp">{$locale->tr("blog_user_permissions_help")}</div>
         {$locale->tr("quick_permission_selection")}
         </br>
-        <select name="preselection" onChange="togglePermissionSets('editBlogUser', this.value);">
+        <select name="preselection" onChange="Lifetype.UI.Pages.AddBlogUser.togglePermissionSets('editBlogUser', this.value);">
           <option value=""/>{$locale->tr("select")}</option>
           <option value="basic_blog_permission"/>{$locale->tr("basic_blog_permission")}</option>
           <option value="full_blog_permission"/>{$locale->tr("full_blog_permission")}</option>

Modified: plog/trunk/templates/admin/editcomments.template
===================================================================
--- plog/trunk/templates/admin/editcomments.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editcomments.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,19 +1,20 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editComments title=$locale->tr("editComments")}
-	<script type="text/javascript" src="js/ui/plogui.js"></script>
-	<script type="text/javascript">
+{js src="js/ui/plogui.js"}
+{js src="js/ui/pages/global.js"}
+<script type="text/javascript">
 		var errorCommentStatusMsg = '{$locale->tr("error_comment_status")}';
 		var showMassiveChangeOption = '{$locale->tr("show_massive_change_option")}';
 		var hideMassiveChangeOption = '{$locale->tr("hide_massive_change_option")}';
-	</script>
-	<script type="text/javascript">
-	{literal}
-	YAHOO.util.Event.addListener( window, "load", function() {
-			var t = new Lifetype.UI.TableEffects( "list" );
-			t.stripe();
-			t.highlightRows();
-		});
-	{/literal}
+</script>
+<script type="text/javascript">
+{literal}
+YAHOO.util.Event.addListener( window, "load", function() {
+		var t = new Lifetype.UI.TableEffects( "list" );
+		t.stripe();
+		t.highlightRows();
+	});
+{/literal}
 	</script>	
         <div id="list_nav_bar">
             <div id="list_nav_select">		
@@ -53,7 +54,7 @@
         <form id="postCommentsList" action="admin.php" method="post">
 		{check_perms perm=update_comment}	
         <div class="optionIcon">
-			<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+			<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
 		</div>
 		{/check_perms}
         <div id="list">
@@ -62,7 +63,7 @@
             <table id="list" class="info" summary="{$locale->tr("editComments")}">
                 <thead>
                     <tr>					
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('postCommentsList');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('postCommentsList');" /></th>
                         <th style="width:25%;">{$locale->tr("topic")}</th>						
                         <th style="width:45%;">{$locale->tr("text")}</th>
                         <th style="width:5%;">{$locale->tr("author")}</th>

Modified: plog/trunk/templates/admin/editcustomfield.template
===================================================================
--- plog/trunk/templates/admin/editcustomfield.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editcustomfield.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,17 +1,14 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=blogCustomFields title=$locale->tr("editCustomField")}
-
- <form name="editCustomField" method="post" action="admin.php" onSubmit="listSelectAll('fieldValues');return true">
+<form name="updateCustomField" id="updateCustomField" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.UpdateCustomField.onSubmitHook();return false">
   <fieldset class="inputField">
    <legend>{$locale->tr("editCustomField")}</legend>
-   {include file="$admintemplatepath/formvalidate.template"} 
+   {include file="$admintemplatepath/formvalidateajax.template"} 
    
    <div class="field">
     <label for="fieldName">{$locale->tr("name")}</label>
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("field_name_help")}</div>
     <input type="text" name="fieldName" value="{$fieldName}" id="fieldName" />
-    {include file="$admintemplatepath/validate.template" field=fieldName message=$locale->tr("error_empty_name")}
+    {include file="$admintemplatepath/validateajax.template" field=fieldName}
    </div>
 
    <div class="field">
@@ -19,14 +16,14 @@
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("field_description_help")}</div>
     <input type="text" name="fieldDescription" value="{$fieldDescription}" id="fieldDescription" />
-    {include file="$admintemplatepath/validate.template" field=fieldDescription message=$locale->tr("error_empty_description")}
+    {include file="$admintemplatepath/validateajax.template" field=fieldDescription}
    </div>
   
    <div class="field">
     <label for="fieldType">{$locale->tr("type")}</label>
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("field_type_help")}</div>
-    <select name="fieldType" id="fieldType" {literal}onChange="elem=document.getElementById('fieldValuesBlock');if(this.selectedIndex==4){elem.style.display='block';}else{elem.style.display='none';}"{/literal}>
+    <select name="fieldType" id="fieldType" onChange="Lifetype.UI.Pages.NewCustomField.fieldTypeOnChangeHandler(this)">
      <option value="1" {if $fieldType == 1}selected="selected"{/if}>{$locale->tr("text_field")}</option>
      <option value="2" {if $fieldType == 2}selected="selected"{/if}>{$locale->tr("text_area")}</option>
      <option value="3" {if $fieldType == 3}selected="selected"{/if}>{$locale->tr("checkbox")}</option>
@@ -45,8 +42,8 @@
 		{/foreach}
 		</select>
 		<br />
-		<input type="button" class="button" {literal}onClick="newValue=window.prompt('Enter new value for the custom field');if(newValue!=null){appendDocumentList(document,'fieldValues',newValue,newValue);}"{/literal} value="{$locale->tr("add")}" />
-		<input type="button" class="button" onClick="removeSelectedItemsFromList(document.getElementById('fieldValues'))" value="{$locale->tr("remove_selected")}" />
+		<input type="button" class="button" onClick="Lifetype.UI.Pages.NewCustomField.addFieldValue()" value="{$locale->tr("add")}" />
+		<input type="button" class="button" onClick="Lifetype.Forms.List.removeSelected('fieldValues')" value="{$locale->tr("remove_selected")}" />
    </div>
      
    <div class="field">
@@ -65,7 +62,4 @@
     <input type="reset" name="Rest" value="{$locale->tr("reset")}" />	
     <input type="submit" name="{$locale->tr("update")}" value="{$locale->tr("update")}" />
   </div> 	
- </form>
-
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
+ </form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/editfriendgroups.template
===================================================================
--- plog/trunk/templates/admin/editfriendgroups.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editfriendgroups.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -32,7 +32,7 @@
  <table class="info">
   <thead>
    <tr>
-    <th style="width:10px;"><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('friendGroups');" /></th>
+    <th style="width:10px;"><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('friendGroups');" /></th>
     <th style="width:500px;">{$locale->tr("name")}</th>
     <th style="width:170px;">{$locale->tr("friends")}</th>
     <th style="width:95px;">{$locale->tr("actions")}</th>

Modified: plog/trunk/templates/admin/editfriends.template
===================================================================
--- plog/trunk/templates/admin/editfriends.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editfriends.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -42,7 +42,7 @@
  <table class="info">
   <thead>
    <tr>
-    <th style="width:10px;"><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('deleteFriends');" /></th>
+    <th style="width:10px;"><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('deleteFriends');" /></th>
     <th style="width:110px;">{$locale->tr("friend")}</th>
     <th style="width:160px;">{$locale->tr("blog")}</th>
     <th style="width:110px;">{$locale->tr("group")}</th>

Modified: plog/trunk/templates/admin/editlink.template
===================================================================
--- plog/trunk/templates/admin/editlink.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editlink.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,18 +1,14 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=editLinks title=$locale->tr("editLink")}
-
-   <form name="newLink" action="admin.php" method="post"> 
-      
+<form id="newLink" action="admin.php" method="post" onSubmit="Lifetype.Forms.AjaxFormProcessor(this.id,'?output=json');return(false);">       
         <fieldset class="inputField">
         <legend>{$locale->tr("editLink")}</legend>
-		{include file="$admintemplatepath/formvalidate.template"}
+		{include file="$admintemplatepath/formvalidateajax.template"}
 
         <div class="field">
             <label for="linkName">{$locale->tr("name")}</label>
             <span class="required">*</span>
             <div class="formHelp">{$locale->tr("link_name_help")}</div>
             <input type="text" name="linkName" id="linkName" value="{$linkName|escape:"html"}" />
-			{include file="$admintemplatepath/validate.template" field=linkName message=$locale->tr("error_empty_name")}
+			{include file="$admintemplatepath/validateajax.template" field=linkName message=$locale->tr("error_empty_name")}
         </div>
 		
         <div class="field">
@@ -20,7 +16,7 @@
             <span class="required">*</span>
             <div class="formHelp">{$locale->tr("link_url_help")}</div>
             <input type="text" name="linkUrl" id="linkUrl" value="{$linkUrl}" />
-			{include file="$admintemplatepath/validate.template" field=linkUrl message=$locale->tr("error_invalid_url")}
+			{include file="$admintemplatepath/validateajax.template" field=linkUrl message=$locale->tr("error_invalid_url")}
         </div>		
 
         <div class="field">
@@ -35,7 +31,7 @@
             <span class="required"></span>
             <div class="formHelp">{$locale->tr("link_feed_help")}</div>
             <input type="text" name="linkRssFeed" id="linkRssFeed" value="{$linkRssFeed}" />
-			{include file="$admintemplatepath/validate.template" field=linkRssFeed message=$locale->tr("error_invalid_url")}			
+			{include file="$admintemplatepath/validateajax.template" field=linkRssFeed message=$locale->tr("error_invalid_url")}			
         </div>			
 
         <div class="field">
@@ -57,7 +53,4 @@
            <input type="reset" value="{$locale->tr("reset")}" name="reset"/>		    		   
 		   <input type="submit" value="{$locale->tr("update")}" name="Update"/>
 		</div>
-</form>
-
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
+</form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/editlinkcategories.template
===================================================================
--- plog/trunk/templates/admin/editlinkcategories.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editlinkcategories.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,6 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editLinkCategories title=$locale->tr("editLinkCategories")}
+{js src="js/ui/pages/editlinkcategory.js"}
 <script type="text/javascript">
 {literal}
 YAHOO.util.Event.addListener( window, "load", function() {
@@ -9,19 +10,16 @@
 	});
 {/literal}
 </script>
-        <div id="list_nav_bar">
-            <div id="list_nav_select">
-
+<div id="list_nav_bar">
+   <div id="list_nav_select">
 <form id="viewLinkCategories" action="admin.php" method="post">
  <fieldset>
   <legend>{$locale->tr("show_by")}</legend>
-
    <div class="list_nav_option">
    <label for="search">{$locale->tr("search_terms")}</label>
    <br />
    <input type="text" name="searchTerms" value="{$searchTerms}" size="15" id="search" />
    </div>   
-   
    <div class="list_nav_option">
     <br />
     <input type="hidden" name="op" value="editLinkCategories" />
@@ -32,7 +30,9 @@
  </div>
  <br style="clear:both" />
  </div> 
-
+<div class="optionIcon">		
+  <a id="newLinkCategoryButton" href="?op=newLinkCategory" rel="overlay">New Link Category</a>
+</div>
  <form id="linkCategories" action="admin.php" method="post">
  <div id="list"> 
   {include file="$admintemplatepath/successmessage.template"}
@@ -40,7 +40,7 @@
  <table id="list" class="info" summary="{$locale->tr("editLinkCategories")}">
   <thead>
    <tr>
-    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('linkCategories');" /></th>
+    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('linkCategories');" /></th>
     <th style="width:75%">{$locale->tr("name")}</th>
     <th style="width:15%">{$locale->tr("links")}</th>
     <th style="width:10%;">{$locale->tr("actions")}</th>
@@ -51,19 +51,19 @@
   <tr>
    <td align="center"><input class="checkbox" type="checkbox" name="categoryIds[{counter}]" value="{$category->getId()}"/></td>  
    <td class="col_highlighted">
-	 {check_perms perm="update_link_category"}<a href="admin.php?op=editLinkCategory&amp;categoryId={$category->getId()}">{/check_perms}{$category->getName()}{check_perms perm="update_link_category"}</a>{/check_perms}
+	 {check_perms perm="update_link_category"}<a href="admin.php?op=editLinkCategory&amp;categoryId={$category->getId()}" rel="overlay" id="linkcategory_name_{$category->getId()}">{/check_perms}{$category->getName()}{check_perms perm="update_link_category"}</a>{/check_perms}
    </td>
    <td>   
      {if $category->getNumLinks() > 0}
-      <a href="admin.php?op=editLinks&amp;showCategory={$category->getId()}">({$category->getNumLinks()})</a>
+      <a href="admin.php?op=editLinks&amp;showCategory={$category->getId()}">{$category->getNumLinks()}</a>
      {else}
-      (0)
+      0
     {/if}
    </td> 
    <td>
      <div class="list_action_button">
 	  {check_perms perm="update_link_category"}	
-       <a href="?op=editLinkCategory&amp;categoryId={$category->getId()}"><img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit")}" /></a>
+       <a hrel="overlay" id="edit_link_{$category->getId()}" ref="?op=editLinkCategory&amp;categoryId={$category->getId()}"><img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit")}" /></a>
       {/check_perms} 
 	  {check_perms perm="update_link_category"}	
        <a href="?op=deleteLinkCategory&amp;categoryId={$category->getId()}"><img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" /></a>

Modified: plog/trunk/templates/admin/editlinkcategory.template
===================================================================
--- plog/trunk/templates/admin/editlinkcategory.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editlinkcategory.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,15 +1,13 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=editLinkCategories title=$locale->tr("editLinkCategory")}
-<form name="editLinkCategory" method="post" action="admin.php">
+<form id="editLinkCategory" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.EditLinkCategory.submitHook(this);return(false);">
    <fieldset class="inputField">
-   {include file="$admintemplatepath/formvalidate.template"}   
+   {include file="$admintemplatepath/formvalidateajax.template"}   
    <legend>{$locale->tr("editLinkCategory")}</legend>
    <div class="field">
      <label for="linkCategoryName">{$locale->tr("name")}</label>
      <span class="required">*</span>
      <div class="formHelp">{$locale->tr("link_category_name_help")}</div>
-     <input type="text" id="linkCategoryName" name="linkCategoryName" value="{$linkCategoryName|escape:"html"}"/>
-     {include file="$admintemplatepath/validate.template" field=linkUrl message=$locale->tr("error_empty_name")}     
+     <input type="text" id="linkCategoryName" name="linkCategoryName" value="{$linkCategoryName}"/>
+     {include file="$admintemplatepath/validateajax.template" field=linkCategoryName}
    </div>
   </fieldset> 
   <div class="buttons">
@@ -18,6 +16,4 @@
     <input type="submit" name="subOp" value="{$locale->tr("update")}" />
     <input type="hidden" name="linkCategoryId" value="{$linkCategoryId}" />
   </div>
-</form>
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
+</form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/editlinks.template
===================================================================
--- plog/trunk/templates/admin/editlinks.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editlinks.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,6 +1,7 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editLinks title=$locale->tr("editLinks")}
-  <script type="text/javascript" src="js/ui/plogui.js"></script>
+ <script type="text/javascript" src="js/ui/plogui.js"></script>
+{js src="js/ui/pages/global.js"}
   <script type="text/javascript">
     var showMassiveChangeOption = '{$locale->tr("show_massive_change_option")}';
     var hideMassiveChangeOption = '{$locale->tr("hide_massive_change_option")}';
@@ -50,7 +51,8 @@
 <form id="links" action="admin.php" method="post">
 {check_perms perm="update_link"}
  <div class="optionIcon">
-   <a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}"  onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+   <a id="newLinkButton" href="?op=newLink" rel="overlay">New Link</a> |
+   <a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}"  onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
  </div>
 {/check_perms}
 <div id="list">
@@ -59,7 +61,7 @@
 <table id="list" class="info" summary="{$locale->tr("editLinks")}">
  <thead>
   <tr>
-   <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('links');" /></th>  
+   <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('links');" /></th>  
    <th style="width:30%;">{$locale->tr("name")}</th>
    <th style="width:40%;">{$locale->tr("url")}</th>
    <th style="width:15%;">{$locale->tr("category")}</th>
@@ -72,7 +74,7 @@
   <tr>
    <td><input class="checkbox" type="checkbox" name="linkIds[{counter}]" value="{$link->getId()}"/></td>  
    <td class="col_highlighted">
-  	 {check_perms perm="update_link"}<a href="admin.php?op=editLink&amp;linkId={$link->getId()}">{/check_perms}{$link->getName()|utf8_wordwrap:20:"<br/>":false}{check_perms perm="update_link"}</a>{/check_perms}
+  	 {check_perms perm="update_link"}<a id="link_{$link->getId()}" href="admin.php?op=editLink&amp;linkId={$link->getId()}" rel="overlay">{/check_perms}{$link->getName()|utf8_wordwrap:20:"<br/>":false}{check_perms perm="update_link"}</a>{/check_perms}
    </td>
    <td><a href="{$link->getUrl()}">{$link->getUrl()|utf8_wordwrap:40:"<br/>":true}</a></td>
    {assign var=linkcategory value=$link->getCategoryId()}
@@ -90,7 +92,7 @@
    <td>
      <div class="list_action_button">
 	  {check_perms perm="update_link"}
-       <a href="?op=editLink&amp;linkId={$link->getId()}" title="{$locale->tr("edit")}">
+       <a rel="overlay" id="edit_link_{$link->getId()}" href="?op=editLink&amp;linkId={$link->getId()}" title="{$locale->tr("edit")}">
         <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit")}" />
        </a>
 	  {/check_perms}

Modified: plog/trunk/templates/admin/editposts.template
===================================================================
--- plog/trunk/templates/admin/editposts.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/editposts.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,7 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editPosts title=$locale->tr("editPosts")}
+{js src="js/ui/pages/global.js"}
+{js src="js/ui/pages/editposts.js"}
 	<script type="text/javascript" src="js/ui/plogui.js"></script>
 	<script type="text/javascript">
 		var errorPostStatusMsg = '{$locale->tr("error_post_status")}';
@@ -103,7 +105,7 @@
         <form id="postsList" action="admin.php" method="post">
 	    {check_perms perm=update_post}
         <div class="optionIcon">
-			<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+			<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
 		</div>
 		{/check_perms}
         <div id="list">
@@ -112,7 +114,7 @@
             <table id="list" class="info" summary="{$locale->tr("editPosts")}">
                 <thead>
                     <tr>
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('postsList');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('postsList');" /></th>
                         <th style="width:40%;">{$locale->tr("topic")}</th>
                         <th style="width:10%;">{$locale->tr("date")}</th>
                         <th style="width:10%;">{$locale->tr("author")}</th>

Modified: plog/trunk/templates/admin/edittrackbacks.template
===================================================================
--- plog/trunk/templates/admin/edittrackbacks.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/edittrackbacks.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,6 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editTrackbacks title=$locale->tr("editTrackbacks")}
+{js src="js/ui/pages/global.js"}
 	<script type="text/javascript" src="js/ui/plogui.js"></script>
 	<script type="text/javascript">
 		var errorTrackbackStatusMsg = '{$locale->tr("error_trackback_status")}';
@@ -54,7 +55,7 @@
         <form id="postTrackbacksList" action="admin.php" method="post">
 		{check_perms perm=update_trackback}
         <div class="optionIcon">
-			<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+			<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
 		</div>
 		{/check_perms}
         <div id="list">
@@ -63,7 +64,7 @@
             <table id="list" class="info" summary="{$locale->tr("editTrackbacks")}">
                 <thead>
                     <tr>
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('postTrackbacksList');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('postTrackbacksList');" /></th>
                         <th style="width:25%;">{$locale->tr("topic")}</th>						
                         <th style="width:45%;">{$locale->tr("text")}</th>
                         <th style="width:5%;">{$locale->tr("author")}</th>

Modified: plog/trunk/templates/admin/formvalidate.template
===================================================================
--- plog/trunk/templates/admin/formvalidate.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/formvalidate.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,9 +1,9 @@
 {**
   Please use this smarty code to carry our form validations
 **}
-  {if $form->formHasRun()}
-    {if !$form->formIsValid()}
-	  {include file="$admintemplatepath/errormessage.template" message=$message}
-    {/if}
-  {/if}  
-  {include file="$admintemplatepath/successmessage.template" message=$message}
+{if $form->formHasRun()}
+  {if !$form->formIsValid()}
+    {include file="$admintemplatepath/errormessage.template" message=$message}
+  {/if}
+{/if}  
+{include file="$admintemplatepath/successmessage.template" message=$message}
\ No newline at end of file

Copied: plog/trunk/templates/admin/formvalidateajax.template (from rev 5682, plog/branches/lifetype-1.3-ajax/templates/admin/formvalidateajax.template)
===================================================================
--- plog/trunk/templates/admin/formvalidateajax.template	                        (rev 0)
+++ plog/trunk/templates/admin/formvalidateajax.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1,11 @@
+{**
+  Please use this smarty code to carry our form validations
+**}
+<div id="FormError" {if $viewErrorMessage == ""}style="display:none"{/if}>
+  <img src="imgs/admin/icon_warning-16.png" alt="Info" class="InfoIcon" />
+  <p class="ErrorText" id="FormErrorMessage">{$viewErrorMessage}</p>
+</div>  
+<div id="FormInfo" {if $viewSuccessMessage == ""}style="display:none"{/if}>
+  <img src="imgs/admin/icon_info-16.png" alt="Info" class="InfoIcon" />
+  <p class="InfoText" id="FormInfoMessage">{$viewSuccessMessage}</p>
+</div>
\ No newline at end of file

Modified: plog/trunk/templates/admin/globalarticlecategories.template
===================================================================
--- plog/trunk/templates/admin/globalarticlecategories.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/globalarticlecategories.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -31,7 +31,7 @@
  <table id="list" class="info" summary="{$locale->tr("editArticleCategories")}">
   <thead>
    <tr>
-    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('deleteCategories');" /></th>
+    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('deleteCategories');" /></th>
     <th style="width:90%;">{$locale->tr("category")}</th>  
     <th style="width:10%;">{$locale->tr("actions")}</th>
    </tr>

Modified: plog/trunk/templates/admin/globalsettings_general.template
===================================================================
--- plog/trunk/templates/admin/globalsettings_general.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/globalsettings_general.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,3 +1,4 @@
+{js src="js/ui/pages/globalsettings.js"}
 <div style="padding-left:10px;" id="general">
    <!-- enable or disable comments globally -->
    <div class="field">
@@ -125,7 +126,7 @@
 	<a href="#" onclick="window.open('?op=siteBlogsChooser','BlogChooser','scrollbars=yes,resizable=yes,toolbar=no,height=450,width=600');">
 	 {$locale->tr("select")}
 	</a>
-	&nbsp;<a href="javascript:resetBlogId();">{$locale->tr("reset")}</a>
+	&nbsp;<a href="javascript:Lifetype.Pages.GlobalSettings.resetBlogId();">{$locale->tr("reset")}</a>
    </div>
    <!-- default_global_article_category_id -->
    <div class="field">

Modified: plog/trunk/templates/admin/header.template
===================================================================
--- plog/trunk/templates/admin/header.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/header.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -24,39 +24,37 @@
 	var scriptName = "{$config->getValue("script_name")}";
 	var plogAdminBaseUrl = "{$url->getBaseUrl(false)}/admin.php";
 	var plogBlogId = "{$blog->getId()}";
-	var GB_ROOT_DIR = "{$url->getBaseUrl(false)}/js/greybox/";
 </script>
-<script type="text/javascript" src="js/cookie/cookie.js"></script>
-<script type="text/javascript" src="js/prototype/prototype.js"></script>
+{js src="js/cookie/cookie.js"}
 <!-- Yahoo UI Library -->
-<script type="text/javascript" src="js/yui/yahoo/yahoo-min.js"></script> 
-<script type="text/javascript" src="js/yui/dom/dom-min.js"></script> 
-<script type="text/javascript" src="js/yui/event/event-min.js"></script>
-<script type="text/javascript" src="js/yui/connection/connection-min.js"></script>
+{js src="js/yui/yahoo/yahoo-min.js"} 
+{js src="js/yui/dom/dom-min.js"} 
+{js src="js/yui/event/event-min.js"}
+{js src="js/yui/connection/connection-min.js"}
+{js src="js/yui/container/container-min.js"}
+{js src="js/yui/animation/animation-min.js"}
+<link rel="stylesheet" type="text/css" href="js/yui/container/assets/container.css">
 <!-- LifeType UI Library -->
-<script type="text/javascript" src="js/ui/core.js"></script>
-<script type="text/javascript" src="js/ui/default.js"></script>
-<script type="text/javascript" src="js/ui/common.js"></script>
-<script type="text/javascript" src="js/ui/forms.js"></script>
-<script type="text/javascript" src="js/ui/plogui.js"></script>
-<script type="text/javascript" src="js/ui/tableeffects.js"></script>
-<script type="text/javascript" src="js/ui/overlay.js"></script>
+{js src="js/ui/core.js"}
+{js src="js/ui/ui.js"}
+{js src="js/ui/common.js"}
+{js src="js/ui/forms.js"}
+{js src="js/ui/plogui.js"}
+{js src="js/ui/tableeffects.js"}
+{js src="js/ui/overlay.js"}
+{js src="js/ui/contentoverlay.js"}
+{js src="js/ui/dom.js"}
+{js src="js/ui/menu.js"}
 {if $location_data_enabled}
 <!-- Location libraries -->
-<script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={$google_maps_api_key}"></script>
-<script type="text/javascript" src="js/location/location.js"></script>
+{js src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=$google_maps_api_key"}
+{js src="js/location/location.js"}
 {/if}
 {if $blogEnablePullDownMenu}
-  <script type="text/javascript" src="js/JSCookMenu/JSCookMenu.js"></script>
+  {js src="js/JSCookMenu/JSCookMenu.js"}
   <link rel="stylesheet" href="js/JSCookMenu/ThemeOffice/theme.css" type="text/css" />
-  <script type="text/javascript" src="js/JSCookMenu/ThemeOffice/theme.js"></script>
+  {js src="js/JSCookMenu/ThemeOffice/theme.js"}
 {/if}
-<!-- Greybox -->
-<script type="text/javascript" src="js/greybox/AJS.js"></script>
-<script type="text/javascript" src="js/greybox/AJS_fx.js"></script>
-<script type="text/javascript" src="js/greybox/gb_scripts.js"></script>
-<link href="js/greybox/gb_styles.css" rel="stylesheet" type="text/css" />
-
 </head>
 <body>
 
@@ -89,7 +87,7 @@
 
    	<div style="text-align: right; padding-right: 5px;">
 		({$user->getUsername()})
-   		<select name="userBlog" id="userBlog" onchange="MM_jumpMenu('parent',this,0)">
+   		<select name="userBlog" id="userBlog" onchange="Lifetype.UI.Menu.MM_jumpMenu('parent',this,0)">
      	{foreach from=$userBlogs item=userBlog}
      		<option value="admin.php?op=blogSelect&amp;blogId={$userBlog->getId()}" {if $userBlog->getId() == $blog->getId()}selected="selected"{/if}>{$userBlog->getBlog()}</option>
        	{/foreach}

Modified: plog/trunk/templates/admin/menus.xml
===================================================================
--- plog/trunk/templates/admin/menus.xml	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/menus.xml	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,31 +1,17 @@
 <menu url="?op=Dashboard" localeId="dashboard"> 
-	<Manage url="?op=Manage">
+	<Manage url="?op=editPosts">
 	    <managePosts ignoreBreadCrumbs="1" orPerms="add_post,view_posts,add_category,view_categories,view_comments,view_trackbacks">
 	       <newPost url="?op=newPost" andPerms="add_post" />	
 	       <editPosts url="?op=editPosts" andPerms="view_posts" />
-	       <newArticleCategory url="?op=newArticleCategory" andPerms="add_category" />	
 	       <editArticleCategories url="?op=editArticleCategories" andPerms="view_categories" />
 	       <editComments url="?op=editComments" andPerms="view_comments" />
 	       <editTrackbacks url="?op=editTrackbacks" andPerms="view_trackbacks" />
+	       <editLinks url="?op=editLinks" andPerms="view_links" />
+		   <editLinkCategories url="?op=editLinkCategories" andPerms="view_link_categories" />	
+		  <blogCustomFields url="?op=blogCustomFields" andPerms="view_custom_fields" />		
  		</managePosts>
- 		<manageLinks ignoreBreadCrumbs="1" orPerms="add_link,view_links,add_link_category,view_link_categories">
-			 <newLink url="?op=newLink" andPerms="add_link" /> 		
- 		     <editLinks url="?op=editLinks" andPerms="view_links" /> 
-			 <newLinkCategory url="?op=newLinkCategory" andPerms="add_link_category" /> 		     
-			 <editLinkCategories url="?op=editLinkCategories" andPerms="view_link_categories" />
-        </manageLinks>
-		<manageCustomFields ignoreBreadCrumbs="1" orPerms="add_custom_field,view_custom_fields">
-  		  <newCustomField url="?op=newCustomField" andPerms="add_custom_field" />
-		  <blogCustomFields url="?op=blogCustomFields" andPerms="view_custom_fields" />
-		</manageCustomFields>
 	</Manage>
-	<ResourcesGroup url="?op=resourcesGroup" localeId="resourceCenter">
-	  <resourceCenter ignoreBreadCrumbs="1" orPerms="add_resource,add_album,view_resources">
-	  	<newResource url="?op=newResource" andPerms="add_resource" />	
-	  	<newResourceAlbum url="?op=newResourceAlbum" andPerms="add_album" />
-	  	<resources url="?op=resources" andPerms="view_resources" />
-	  </resourceCenter> 
-	</ResourcesGroup>
+	<resources url="?op=resources" andPerms="view_resources" />
 	<friendManagement url="?op=friendManagement">
 	  <manageFriends ignoreBreadCrumbs="1">
 	    <newFriend url="?op=newFriend"/> 		     

Modified: plog/trunk/templates/admin/newcustomfield.template
===================================================================
--- plog/trunk/templates/admin/newcustomfield.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newcustomfield.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,17 +1,13 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newCustomField title=$locale->tr("newCustomField")}
-
- <form name="newCustomField" method="post" action="admin.php" onSubmit="listSelectAll('fieldValues');return true">
+<form name="newCustomField" id="newCustomField" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.NewCustomField.onSubmitHook();return false">
   <fieldset class="inputField">
    <legend>{$locale->tr("newCustomField")}</legend>
-   {include file="$admintemplatepath/formvalidate.template"}   
-   
+   {include file="$admintemplatepath/formvalidateajax.template"}      
    <div class="field">
     <label for="fieldName">{$locale->tr("name")}</label>
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("field_name_help")}</div>
     <input type="text" name="fieldName" value="{$fieldName}" id="fieldName" />
-    {include file="$admintemplatepath/validate.template" field=fieldName message=$locale->tr("error_empty_name")}
+    {include file="$admintemplatepath/validateajax.template" field=fieldName}
    </div>
    
    <div class="field">
@@ -19,14 +15,14 @@
     <span class="required"></span>
     <div class="formHelp">{$locale->tr("field_description_help")}</div>
     <input type="text" name="fieldDescription" value="{$fieldDescription}" id="fieldDescription" />
-    {include file="$admintemplatepath/validate.template" field=fieldDescription message=$locale->tr("error_empty_description")}
+    {include file="$admintemplatepath/validateajax.template" field=fieldDescription}
    </div>
    
    <div class="field">
     <label for="fieldType">{$locale->tr("type")}</label>
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("field_type_help")}</div>
-    <select name="fieldType" id="fieldType" {literal}onChange="elem=document.getElementById('fieldValuesBlock');if(this.selectedIndex==4){elem.style.display='block';}else{elem.style.display='none';}"{/literal}>
+    <select name="fieldType" id="fieldType" onChange="Lifetype.UI.Pages.NewCustomField.fieldTypeOnChangeHandler(this)">
      <option value="1" {if $fieldType == 1}selected="selected"{/if}>{$locale->tr("text_field")}</option>
      <option value="2" {if $fieldType == 2}selected="selected"{/if}>{$locale->tr("text_area")}</option>
      <option value="3" {if $fieldType == 3}selected="selected"{/if}>{$locale->tr("checkbox")}</option>
@@ -45,8 +41,8 @@
 		{/foreach}
 		</select>
 		<br />
-		<input type="button" class="button" {literal}onClick="newValue=window.prompt('Enter new value for the custom field');if(newValue!=null){appendDocumentList(document,'fieldValues',newValue,newValue);}"{/literal} value="{$locale->tr("add")}" />
-		<input type="button" class="button" onClick="removeSelectedItemsFromList(document.getElementById('fieldValues'))" value="{$locale->tr("remove_selected")}" />
+		<input type="button" class="button" onClick="Lifetype.UI.Pages.NewCustomField.addFieldValue()" value="{$locale->tr("add")}" />
+		<input type="button" class="button" onClick="Lifetype.Forms.List.removeSelected('fieldValues')" value="{$locale->tr("remove_selected")}" />
    </div>
 
    <div class="field">
@@ -64,7 +60,4 @@
     <input type="reset" name="Rest" value="{$locale->tr("reset")}" />
     <input type="submit" name="{$locale->tr("add")}" value="{$locale->tr("add")}" />
   </div>  
- </form>
- 
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+ </form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/newlink.template
===================================================================
--- plog/trunk/templates/admin/newlink.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newlink.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,23 +1,15 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newLink title=$locale->tr("newLink")}
-{if $smarty.request.linkName}
-	{assign var=linkName value=$smarty.request.linkName}
-{/if}
-{if $smarty.request.linkUrl}
-	{assign var=linkUrl value=$smarty.request.linkUrl}
-{/if}
-   <form name="newLink" action="admin.php" method="post"> 
+<form id="newLink" action="admin.php" method="post" onSubmit="Lifetype.Forms.AjaxFormProcessor(this.id,'?output=json');return(false);"> 
       
         <fieldset class="inputField">
         <legend>{$locale->tr("newLink")}</legend>
-		{include file="$admintemplatepath/formvalidate.template"}
+		{include file="$admintemplatepath/formvalidateajax.template"}
 
         <div class="field">
             <label for="linkName">{$locale->tr("name")}</label>
             <span class="required">*</span>
             <div class="formHelp">{$locale->tr("link_name_help")}</div>
             <input type="text" name="linkName" id="linkName" value="{$linkName}" />
-			{include file="$admintemplatepath/validate.template" field=linkName message=$locale->tr("error_empty_name")}
+			{include file="$admintemplatepath/validateajax.template" field=linkName}
         </div>
 
         <div class="field">
@@ -25,7 +17,7 @@
             <span class="required">*</span>
             <div class="formHelp">{$locale->tr("link_url_help")}</div>
             <input type="text" name="linkUrl" id="linkUrl" value="{$linkUrl}" />
-			{include file="$admintemplatepath/validate.template" field=linkUrl message=$locale->tr("error_invalid_url")}
+			{include file="$admintemplatepath/validateajax.template" field=linkUrl}
         </div>
 
         <div class="field">
@@ -40,7 +32,7 @@
             <span class="required"></span>
             <div class="formHelp">{$locale->tr("link_feed_help")}</div>
             <input type="text" name="linkRssFeed" id="linkRssFeed" value="{$linkRssFeed}" />
-			{include file="$admintemplatepath/validate.template" field=linkRssFeed message=$locale->tr("error_invalid_url")}			
+			{include file="$admintemplatepath/validateajax.template" field=linkRssFeed}			
         </div>		
 
         <div class="field">
@@ -55,13 +47,16 @@
 			 {/foreach}
 			</select>
         </div>
+
+
+	        <!--
+	        <div class="field">
+	        	<label for="bookmarklet">{$locale->tr("bookmarklet")}</label>
+	        	<div class="formHelp">{$locale->tr("bookmarklet_help")}</div>
+	        	<a href="javascript:void(ltbm=window.open('{$url->getAdminUrl()}?op=newLink&linkName='+encodeURIComponent(document.title)+'&linkUrl='+encodeURIComponent(location.href),'ltbm','toolbar=1,status=1,location=1,scrollbars=1,menubar=1,resizable=1'));" onclick="window.alert('{$locale->tr("bookmarklet_help")}');">{$locale->tr("bookmarkit_to_lifetype")}</a>
+	        </div>
+		-->
         
-        <div class="field">
-        	<label for="bookmarklet">{$locale->tr("bookmarklet")}</label>
-        	<div class="formHelp">{$locale->tr("bookmarklet_help")}</div>
-        	<a href="javascript:void(ltbm=window.open('{$url->getAdminUrl()}?op=newLink&linkName='+encodeURIComponent(document.title)+'&linkUrl='+encodeURIComponent(location.href),'ltbm','toolbar=1,status=1,location=1,scrollbars=1,menubar=1,resizable=1'));" onclick="window.alert('{$locale->tr("bookmarklet_help")}');">{$locale->tr("bookmarkit_to_lifetype")}</a>
-        </div>
-        
         </fieldset>
         <div class="buttons">
 		    <input type="hidden" name="op" value="addLink" />
@@ -69,6 +64,4 @@
 			<input type="submit" name="Add" value="{$locale->tr("add")}"/>
             <input type="hidden" value="addLink" name="op"/>
         </div> 
-</form>
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+</form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/newlinkcategory.template
===================================================================
--- plog/trunk/templates/admin/newlinkcategory.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newlinkcategory.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,15 +1,13 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newLinkCategory title=$locale->tr("newLinkCategory")}
- <form name="newLinkCategory" action="admin.php" method="post">
+<form  id="newLinkCategory" name="newLinkCategory" action="admin.php" method="post" onSubmit="Lifetype.Forms.AjaxFormProcessor(this.id,'?output=json');return(false);">
    <fieldset class="inputField">
    <legend>{$locale->tr("newLinkCategory")}</legend>   
-   {include file="$admintemplatepath/formvalidate.template"}   
+   {include file="$admintemplatepath/formvalidateajax.template"}   
    <div class="field">
      <label for="linkCategoryName">{$locale->tr("name")}</label>
      <span class="required">*</span>
      <div class="formHelp">{$locale->tr("link_category_name_help")}</div>
      <input type="text" id="linkCategoryName" name="linkCategoryName" value="{$linkCategoryName}"/>
-     {include file="$admintemplatepath/validate.template" field=linkUrl message=$locale->tr("error_empty_name")}     
+     {include file="$admintemplatepath/validateajax.template" field=linkCategoryName}     
    </div>
   </fieldset> 
   <div class="buttons">
@@ -17,6 +15,4 @@
     <input type="hidden" name="op" value="addLinkCategory"/>
     <input type="submit" name="Add" value="{$locale->tr("add")}"/>
   </div>  
- </form>
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+</form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/newpost.template
===================================================================
--- plog/trunk/templates/admin/newpost.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newpost.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,4 +1,5 @@
 {include file="$admintemplatepath/header.template"}
+{js src="js/ui/pages/newpost.js"}
 {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>
@@ -37,6 +38,7 @@
 {
 	if( preview ) {	
 		document.newPost.op.value="previewPost";
+		document.newPost.target="admin";
 		window.open("", t, "scrollbars=yes,resizable=yes,toolbar=no" );
 		return true;
 	}
@@ -44,7 +46,10 @@
 		document.newPost.op.value="addPost";
 		document.newPost.target="";
 		document.newPost.action="admin.php";
-		return true;
+
+		Lifetype.Forms.AjaxFormProcessor(document.getElementById('newPost').id,'?output=json');
+
+		return false;
 	}
 }
 {/literal}
@@ -55,13 +60,13 @@
    <legend>{$locale->tr("newPost")}</legend>
    <div id="mainPanel" style="float:left; width: 73%; border-right: 1px solid #DEDEDE;">
 	   <div id="autoSaveMessage" style="display: none;"></div>
-	   {include file="$admintemplatepath/formvalidate.template"}  
+	   {include file="$admintemplatepath/formvalidateajax.template"}  
 	   <div class="field">
 	     <label for="postTopic">{$locale->tr("topic")}</label>
 		 <span class="required">*</span>
 		 <div class="formHelp">{$locale->tr("topic_help")}</div>
 	     <input type="text" name="postTopic" style="width:100%" id="postTopic" value="{$postTopic|escape:"html"}" />
-	     {include file="$admintemplatepath/validate.template" field=postTopic message=$locale->tr("error_missing_post_topic")}
+	     {include file="$admintemplatepath/validateajax.template" field=postTopic}
 	   </div>
 	   
 	   <!-- text field custom fields -->
@@ -75,7 +80,7 @@
 	     <textarea {if $htmlarea==1}rows="20"{else}rows="15"{/if} id="postText" name="postText" style="width:100%">{$postText}</textarea>
 	     <a href="{if $htmlarea}javascript:tinyMCE.execInstanceCommand('mce_editor_0','mceinsertresource',true);{else}javascript:ed1.execute('postText','7_but_res',''){/if}">{$locale->tr("insert_media")}</a> |
              <a href="{if $htmlarea}javascript:tinyMCE.execInstanceCommand('mce_editor_0','mcemoremore');{else}javascript:ed1.execute('postText','8_but_more',''){/if}">{$locale->tr("insert_more")}</a>
-	     {include file="$admintemplatepath/validate.template" field=postText message=$locale->tr("error_missing_post_text")}   
+	     {include file="$admintemplatepath/validateajax.template" field=postText}   
 	   </div>
 
           <div class="field">
@@ -173,7 +178,7 @@
          </select>
          <input type="text" name="newArticleCategory" id="newArticleCategory" style="width:100px; margin-top:3px;" size="16" value="" />
          <input type="button" name="addArticleCategory" id="addArticleCategory" style="width:35px; margin-top:3px;" value="{$locale->tr("add")}" onclick="Lifetype.UI.Pages.NewPost.addArticleCategoryAjax()" />
-        {include file="$admintemplatepath/validate.template" field=postCategories message=$locale->tr("error_no_category_selected")}	   
+        {include file="$admintemplatepath/validateajax.template" field=postCategories}	   
 	   </div>
 	   
       <div class="field">
@@ -192,7 +197,7 @@
 	           {/foreach}
 	       {/if}
          </select>
-        {include file="$admintemplatepath/validate.template" field=globalArticleCategoryId message=$locale->tr("error_no_global_article_category_selected")}	   
+        {include file="$admintemplatepath/validateajax.template" field=globalArticleCategoryId}	   
        </div>	  
 
 	   <!-- list custom fields -->

Modified: plog/trunk/templates/admin/newpostcategory.template
===================================================================
--- plog/trunk/templates/admin/newpostcategory.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newpostcategory.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,27 +1,20 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newArticleCategory title=$locale->tr("newArticleCategory")}
-
- <form name="addArticleCategory" method="post" action="admin.php">
+<form name="addArticleCategory" id="addArticleCategory" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.NewPostCategory.submitHook(this);return(false);">
   <fieldset class="inputField">
    <legend>{$locale->tr("newArticleCategory")}</legend>
-   {include file="$admintemplatepath/formvalidate.template"}   
-   
+   {include file="$admintemplatepath/formvalidateajax.template"}   
    <div class="field">
     <label for="categoryName">{$locale->tr("name")}</label>
     <span class="required">*</span>
     <div class="formHelp">{$locale->tr("category_name_help")}</div>
     <input type="text" value="{$categoryName}" id="categoryName" name="categoryName" />
-    {include file="$admintemplatepath/validate.template" field=categoryName message=$locale->tr("error_empty_name")}
-   </div>
-   
+    {include file="$admintemplatepath/validateajax.template" field=categoryName}
+   </div>   
    <div class="field">
     <label for="categoryDescription">{$locale->tr("description")}</label>
-    <span class="required">*</span>
+    <span class="required"></span>
     <div class="formHelp">{$locale->tr("category_description_help")}</div>	
     <textarea name="categoryDescription" cols="60" id="categoryDescription" rows="5">{$categoryDescription}</textarea>
-    {include file="$admintemplatepath/validate.template" field=categoryDescription message=$locale->tr("error_empty_description")}  
-   </div>
-   
+   </div>   
    <div class="field">
     <label for="categoryInMainPage">{$locale->tr("show_in_main_page")}</label>
     <div class="formHelp">
@@ -36,6 +29,4 @@
    <input type="reset" name="Reset" value="{$locale->tr("reset")}" />
    <input type="submit" name="Add" value="{$locale->tr("add")}" />
   </div> 
- </form>
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+</form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/newresource.template
===================================================================
--- plog/trunk/templates/admin/newresource.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newresource.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,3 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newResource title=$locale->tr("newResource")}
 <script type="text/javascript" src="js/ui/forms.js"></script>
 <script type="text/javascript" src="js/ui/plogui.js"></script>
  <form name="addResource" action="admin.php" method="post" enctype="multipart/form-data">
@@ -29,7 +27,7 @@
 	<select name="albumId" id="albumId">
       {foreach from=$albums item=album}
         {assign var=indentLevel value=$album->getValue("level")}
-	    <option value="{$album->getId()}">
+	    <option value="{$album->getId()}" {if $albumId == $album->getId()}selected="selected"{/if}>
 	     {textformat indent=$indentLevel indent_char="&nbsp;&nbsp;&nbsp;"}{$album->getName()}{/textformat}   
 	    </option>
       {/foreach}
@@ -55,7 +53,4 @@
     {$locale->tr("upload_in_progress")}&nbsp;
     <img src="imgs/admin/spinner_small.gif" alt="Spinner" />    
   </div>
- </form>
-
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+ </form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/newresourcealbum.template
===================================================================
--- plog/trunk/templates/admin/newresourcealbum.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/newresourcealbum.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,21 +1,13 @@
-{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newResourceAlbum title=$locale->tr("newResourceAlbum")}
-
- <form name="addResourceAlbum" action="admin.php" method="post">
+<form name="addResourceAlbum" id="addResourceAlbum" action="admin.php" method="post" onSubmit="Lifetype.UI.Pages.NewResourceAlbum.submitHook(this);return(false);">
   <fieldset class="inputField">
-   {include file="$admintemplatepath/formvalidate.template"}
-   {if $viewIsError}
-    {if $viewErrorMessage != ""}
-      {include file="$admintemplatepath/successmessage.template" message=$viewErrorMessage}
-    {/if} 	
-   {/if}
+   {include file="$admintemplatepath/formvalidateajax.template"}
    <legend>{$locale->tr("newResourceAlbum")}</legend>
    <div class="field">
     <label for="albumName">{$locale->tr("name")}</label>
 	<span class="required">*</span>	
 	<div class="formHelp">{$locale->tr("album_name_help")}</div>
 	<input type="text" id="albumName" name="albumName" value="{$albumName}" />
-    {include file="$admintemplatepath/validate.template" field=albumName message=$locale->tr("error_empty_name")}
+    {include file="$admintemplatepath/validateajax.template" field=albumName}
    </div>
    <div class="field">
     <label for="parentId">{$locale->tr("parent")}</label>
@@ -33,7 +25,7 @@
    <div class="field">
     <label for="albumDescription">{$locale->tr("description")}</label>
 	<div class="formHelp">{$locale->tr("album_description_help")}</div>
-    <textarea name="albumDescription" id="albumDescription" rows="10" cols="60">{$albumDescription}</textarea>
+    <textarea name="albumDescription" id="albumDescription" rows="5" cols="60">{$albumDescription}</textarea>
    </div>
    <div class="field">
     <label for="showAlbum">{$locale->tr("show")}</label>
@@ -44,10 +36,8 @@
    </div> 
    </div>   </fieldset>
    <div class="buttons">
-	<input type="reset" name="reset" value="{$locale->tr("reset")}" />
+	<input type="reset" name="resetButton" value="{$locale->tr("reset")}" />
     <input type="submit" name="addAlbum" value="{$locale->tr("add")}" />
     <input type="hidden" name="op" value="addResourceAlbum" />
    </div>	
- </form>
-{include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+ </form>
\ No newline at end of file

Modified: plog/trunk/templates/admin/permissions.template
===================================================================
--- plog/trunk/templates/admin/permissions.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/permissions.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -9,7 +9,7 @@
  <table id="list" class="info" summary="{$locale->tr("permissionsList")}">
   <thead>
    <tr>
-    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('deletePermissions');" /></th>
+    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('deletePermissions');" /></th>
     <th style="width:30%;">{$locale->tr("name")}</th>
     <th style="width:50%;">{$locale->tr("description")}</th>
     <th style="width:5%">{$locale->tr("core_perm")}</th>

Modified: plog/trunk/templates/admin/poststats.template
===================================================================
--- plog/trunk/templates/admin/poststats.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/poststats.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,7 +16,7 @@
             <table id="list" class="info" summary="{$locale->tr("editPosts")}">
                 <thead>
                     <tr>
-                        <th style="width:10px;"><input class="checkbox" type="checkbox" class="check" name="all" id="all" value="1" onclick="toggleAllChecks('postStats');" /></th>
+                        <th style="width:10px;"><input class="checkbox" type="checkbox" class="check" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('postStats');" /></th>
                         <th style="width:500px;">{$locale->tr("referrer")}</th>
 						<th style="width:70px;">{$locale->tr("hits")}</th>						
                         <th style="width:100px;">{$locale->tr("date")}</th>

Modified: plog/trunk/templates/admin/resourceinfo.template
===================================================================
--- plog/trunk/templates/admin/resourceinfo.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/resourceinfo.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,15 +1,24 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=resources title=$locale->tr("editResource")}
+{if $resource->isImage()}
+ {assign var=imgPath value=$url->resourceMediumSizePreviewLink($resource)}
+{elseif $resource->isSound()}
+ {assign var=imgPath value="imgs/admin/icon_sound-48.png"}
+{elseif $resource->isVideo()}
+ {assign var=imgPath value="imgs/admin/icon_video-48.png"}
+{elseif $resource->isZip()}
+ {assign var=imgPath value="imgs/admin/icon_compressed-48.png"}
+{else} 
+ {assign var=imgPath value="imgs/admin/icon_file-48.png"}
+{/if}
 <form name="updateResourceInfo" method="post" action="admin.php">
  <fieldset class="inputField">
   <legend>{$locale->tr("editResource")}</legend>
-  <div style="float:left;width:70%;border-right:1px solid #BEBEBE;">
    <div class="field">
-    <label for="resourceLink">{$locale->tr("file")}</label>
-	<div class="formHelp"></div>
+   	<img src="{$imgPath}" alt="Preview" style="display:block;" />
 	<span id="resourceLink"><a target="_blank" href="{$url->resourceLink($resource)}">{$resource->getFileName()}</a></span>
    </div>
-   <div class="field">
+    <div class="field">
     <label for="resourceInformation">{$locale->tr("information")}</label>
 	<div class="formHelp">{$locale->tr("resource_information_help")}</div>
 	{assign var=metadata value=$resource->getMetadataReader()}
@@ -73,9 +82,7 @@
     <textarea name="resourceDescription" id="resourceDescription" rows="7" cols="60">{$resourceDescription}</textarea>
    </div>
   </div>
-  <div style="float:center">
-   	<img src="{$imgPath}" alt="Preview" style="display:block;margin-left:auto;margin-right:auto" /><br/>
-  </div> 
+
 </fieldset> 
 <div class="buttons">
  {if $resource->isImage()}

Modified: plog/trunk/templates/admin/resources.template
===================================================================
--- plog/trunk/templates/admin/resources.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/resources.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,20 +1,14 @@
 {include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=resources title=$locale->tr("resources")}
-  <script type="text/javascript" src="js/ui/plogui.js"></script>
+{include file="$admintemplatepath/navigation.template" showOpt=ResourcesGroup title=$locale->tr("resourceCenter")}
+{js src="js/ui/pages/global.js"}
+{js src="js/ui/pages/resources.js"}
+{js src="js/ui/pages/newresourcealbum.js"}
+<script type="text/javascript" src="js/ui/plogui.js"></script>
   <script type="text/javascript">
     var showMassiveChangeOption = '{$locale->tr("show_massive_change_option")}';
     var hideMassiveChangeOption = '{$locale->tr("hide_massive_change_option")}';
 	var errorLocationMsg = '{$locale->tr("error_post_location")}';
   </script>
-<script type="text/javascript">
-{literal}
-YAHOO.util.Event.addListener( window, "load", function() {
-		var t = new Lifetype.UI.TableEffects( "list" );
-		t.stripe();
-		t.highlightRows();
-	});
-{/literal}
-</script>
 <div id="list_nav_bar">
 <div id="list_nav_select">
 <form id="viewResources" action="admin.php" method="post">
@@ -68,97 +62,84 @@
  </div>
 
 <form id="Resources" method="post" action="admin.php">
-<div class="optionIcon">
-  <a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+<div class="optionIcon">		
+  <a {if $album}href="?op=newResourceAlbum&parentId={$album->getId()}"{else}href="?op=newResourceAlbum"{/if} id="addAlbumButton" rel="overlay">Add Album</a> |	
+  <a {if $album}href="?op=newResource&albumId={$album->getId()}"{else}href="?op=newResource"{/if} id="addResourceButton" rel="overlay">Add Resource</a> |
+  <a href="#" id="selectAll" onClick="Lifetype.UI.Pages.Resources.selectAll('Resources')">{$locale->tr("select_all")}</a> |
+  <a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
 </div>
 <div id="list">
   {include file="$admintemplatepath/successmessage.template"}
   {include file="$admintemplatepath/errormessage.template"}
-<table id="list" class="info" summary="{$locale->tr("resources")}">
- <thead>
-  <tr>
-    <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('Resources');" /></th>
-    <th style="width:90%;">{$locale->tr("name")}</th>
-    <th style="width:10%;">{$locale->tr("actions")}</th>
- </tr>
-</thead>
-<tbody> 
-{if $album && $pager->getCurrentPage() == 1}
-<tr>
- <td>&nbsp;</td>
- <td>
-  <a href="admin.php?op=resources&amp;albumId={$album->getParentId()}&amp;page=1"><img src="imgs/admin/icon_folder-72.png" border="0" alt="Parent" /></a><br/>
-  <a href="admin.php?op=resources&amp;albumId={$album->getParentId()}&amp;page=1">{$locale->tr("up")}</a>
- </td>
-</tr>
-{/if}
-{foreach from=$albums item=resalbum}
-<tr>
- <td>
-  <input type="checkbox" class="checkbox" value="{$resalbum->getId()}" name="albumIds[{$resalbum->getId()}]" />
- </td>
- <td>
-    <a href="admin.php?op=resources&amp;albumId={$resalbum->getId()}&amp;page=1"><img src="imgs/admin/icon_folder-72.png" border="0" alt="folder" /></a><br/>
-    <a href="admin.php?op=resources&amp;albumId={$resalbum->getId()}&amp;page=1">{$resalbum->getName()}</a><br/>
-	{if $location_data_enabled}
-	{$locale->tr("locations")}: <a href="javascript:void(0)" onClick="window.open('?op=adminLocationDisplay&albumId={$resalbum->getId()}','LocationViewer','scrollbars=no,resizable=no,toolbar=no,height=500,width=590')">{$locale->tr("view")}</a>
-	{/if}
- </td>
- <td>
-  <div class="list_action_button"> 
-    <a href="?op=editResourceAlbum&amp;albumId={$resalbum->getId()}" title="{$locale->tr("edit")}">
-     <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit")}" />
-    </a>
-    <a href="?op=deleteResourceAlbum&amp;albumId={$resalbum->getId()}" title="{$locale->tr("delete")}">
-     <img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" />
-    </a>    
-  </div>  
- </td>
-</tr>
-{/foreach}
-{foreach from=$resources item=resource}
-<tr>
- <td>
-   <input type="checkbox"  class="checkbox" value="{$resource->getId()}" name="resourceIds[{$resource->getId()}]" />
- </td>
- <td>
-  <a href="admin.php?op=resourceInfo&amp;resourceId={$resource->getId()}">
-  {if $resource->hasPreview()}
-     <img src="{$url->resourcePreviewLink($resource)}" alt="{$locale->tr("preview")}" />
-  {else}
-   {if $resource->isSound()}
-    <img alt="Sound" src="imgs/admin/icon_sound-48.png" style="border:0px;" />
-   {elseif $resource->isVideo()}
-    <img alt="Video" src="imgs/admin/icon_video-48.png" style="border:0px;" />
-   {elseif $resource->isZip()}
-    <img alt="Zip" src="imgs/admin/icon_compressed-48.png" style="border:0px;" />   
-   {else}
-    <img alt="File" src="imgs/admin/icon_file-48.png" style="border:0px;" />
-   {/if}
+
+<div id="album">
+
+	<div class="clearer">&nbsp;</div>
+
+ {if $album && $pager->getCurrentPage() == 1}
+	<div class="album" id="root_album">
+	<a href="admin.php?op=resources&amp;albumId={$album->getParentId()}&amp;page=1">
+    	<img src="{$url->getTemplateFile("imgs/parentfolder.gif")}" alt="{$locale->tr("parent")}" /></a>
+    	<p>{$locale->tr("parent")}</p>
+	</div>
   {/if}
-  </a><br/>
-  <a href="admin.php?op=resourceInfo&amp;resourceId={$resource->getId()}">{$resource->getFileName()}</a>
-  {if $resource->hasLocationData()}
-    {assign var=location value=$resource->getLocation()}
-	<br/>
-	{$locale->tr("location")}: <a href="javascript:void(0)" onClick="window.open('?op=adminLocationDisplay&locId={$location->getId()}','Location Viewer','scrollbars=no,resizable=no,toolbar=no,height=500,width=590')">{$location->getDescription()}</a>
+
+  {if $pager->getCurrentPage() == 1}
+	{assign var="counter" value=1}
+   	{foreach from=$albums item=childalbum}
+	<div id="album_{$childalbum->getId()}" class="album" onClick="Lifetype.UI.Pages.Resources.clickHandler(this)">
+   <input type="checkbox" name="albumIds[{$childalbum->getId()}]" id="checkbox_album_{$childalbum->getId()}" value="{$childalbum->getId()}" style="display:none">		
+   	<a href="admin.php?op=resources&amp;albumId={$childalbum->getId()}&amp;page=1">
+   	<img src="{$url->getTemplateFile("imgs/folder.gif")}" alt="{$childalbum->getName()}" /></a><br/>
+   	{$childalbum->getName()} ({$childalbum->getNumResources()})
+	</div>
+   	{/foreach}
   {/if}
- </td>
- <td>
-  <div class="list_action_button"> 
-    <a href="?op=resourceInfo&amp;resourceId={$resource->getId()}" title="{$locale->tr("edit")}">
-     <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("edit")}" />
-    </a>
-    <a href="?op=deleteResource&amp;resourceId={$resource->getId()}" title="{$locale->tr("delete")}">
-     <img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" />
-    </a>    
-  </div>
- </td>
-</tr>
+
+<!-- show the resources here -->
+
+ {foreach from=$resources item=resource}
+	<div id="res_{$resource->getId()}" class="file" onClick="Lifetype.UI.Pages.Resources.clickHandler(this)">
+    <input type="checkbox" name="resourceIds[{$resource->getId()}]" id="checkbox_res_{$resource->getId()}" value="{$resource->getId()}" style="display:none">		
+   	{if $resource->hasPreview()}
+	<div class="pictureFrame">	
+	 <div class="picture">
+   	  <a href="?op=resourceInfo&amp;resourceId={$resource->getId()}">
+    	<img alt="{$resource->getDescription()}" src="{$url->resourcePreviewLink($resource)}" />
+      </a>
+     </div>
+    </div>
+	{$resource->getFileName()}<br/>
+   	{else}
+   		<a href="{$url->resourceLink($resource)}"><br/>
+   	{if $resource->isSound()}
+    	<img alt="Sound" src="{$url->getTemplateFile("imgs/sound.gif")}" /></a><br/>
+   	{elseif $resource->isVideo()}
+    	<img alt="Video" src="{$url->getTemplateFile("imgs/video.gif")}" /></a><br/>
+   	{elseif $resource->isZip()}
+    	<img alt="Zip" src="{$url->getTemplateFile("imgs/compressed.gif")}" /></a><br/>
+   	{else}
+   		<img alt="File" src="{$url->getTemplateFile("imgs/file.gif")}" /></a><br/>
+   	{/if}  
+   	{$resource->getFileName()}
+   	{/if}
+   	{assign var=metadata value=$resource->getMetadataReader()}
+  	{$metadata->getRoundedSize()}<br/>
+   	{if $resource->isImage()}
+  		{$metadata->getWidth()} x {$metadata->getHeight()}<br/>
+   	{elseif $resource->isSound()}
+  		{$metadata->getFormat()|upper} {$metadata->getSampleRate()} bps<br/>
+   	{elseif $resource->isVideo()}
+  		{$metadata->getFormat()|upper} {$metadata->getWidth()} x {$metadata->getHeight()}, {$metadata->getLengthString()}<br/>
+   	{elseif $resource->isZip()}
+   		{$metadata->getTotalFiles()} {$locale->tr("files")}<br/>
+   	{/if}
+  	</div>
 {/foreach}
-</tbody>
-</table>
+<div class="clearer">&nbsp;</div>
 </div>
+
+</div>
 <a name="bulkEdit"></a>
 <div id="list_action_bar">
   {assign var=quota value=$blog->getResourcesQuota()}
@@ -180,7 +161,7 @@
           </option>
         {/foreach}
       </select>
-	  <input type="button" name="changeGalleryItemsAlbum" value="{$locale->tr("change_album")}" class="submit" onClick="Lifetype.UI.Pages.EditResources.submitGalleryItemsList('changeGalleryItemsAlbum');" />
+	  <input type="button" name="changeGalleryItemsAlbum" value="{$locale->tr("change_album")}" class="submit" onClick="Lifetype.UI.Pages.Resources.submitGalleryItemsList('changeGalleryItemsAlbum');" />
 		{if $location_data_enabled}
 		<!-- location mass-edit -->
       <label for="location">{$locale->tr("location")}</label>
@@ -194,11 +175,11 @@
 		<a href="#" onClick="Lifetype.UI.Location.displaySelectedLocationFromId('resourceLocation', [ 0, -1 ] );">
 		  <img src="imgs/admin/icon_globe-16.png" alt="View" style="border:0px" />
 		</a>
-      <input type="button" name="changeResourcesLocation" value="{$locale->tr("change_location")}" class="submit" onClick="Lifetype.UI.Pages.EditResources.submitGalleryItemsList('changeGalleryItemsLocation');" />
+      <input type="button" name="changeResourcesLocation" value="{$locale->tr("change_location")}" class="submit" onClick="Lifetype.UI.Pages.Resources.submitGalleryItemsList('changeGalleryItemsLocation');" />
 		{/if}	
     </fieldset>
   </div> 
 </div>
 </form>
 {include file="$admintemplatepath/footernavigation.template"}
-{include file="$admintemplatepath/footer.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file

Modified: plog/trunk/templates/admin/simpleheader.template
===================================================================
--- plog/trunk/templates/admin/simpleheader.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/simpleheader.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -14,12 +14,15 @@
 <!--[if IE ]>
 <link rel="stylesheet" href="styles/admin-ie.css" type="text/css" media="screen" />
 <![endif] -->
-<script type="text/javascript" src="js/ui/default.js"></script>
-<script type="text/javascript" src="js/ui/core.js"></script>
-<script type="text/javascript" src="js/ui/tableeffects.js"></script>
-<script type="text/javascript" src="js/yui/yahoo/yahoo-min.js"></script> 
-<script type="text/javascript" src="js/yui/dom/dom-min.js"></script> 
-<script type="text/javascript" src="js/yui/event/event-min.js"></script>
+{js src="js/ui/core.js"}
+{js src="js/ui/forms.js"}
+{js src="js/ui/dom.js"}
+{js src="js/ui/ui.js"}
+{js src="js/ui/tableeffects.js"}
+{js src="js/yui/yahoo/yahoo-min.js"} 
+{js src="js/yui/dom/dom-min.js"} 
+{js src="js/yui/event/event-min.js"}
+{js src="js/yui/connection/connection-min.js"}
 {if $templatename=="default"}{** only to be used in the login page! **}
 <style type="text/css">{literal}
 html,body

Modified: plog/trunk/templates/admin/siteblogs.template
===================================================================
--- plog/trunk/templates/admin/siteblogs.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/siteblogs.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,5 +1,6 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editSiteBlogs title=$locale->tr("editSiteBlogs")}
+{js src="js/ui/pages/global.js"}
 <script type="text/javascript" src="js/ui/plogui.js"></script>
 <script type="text/javascript">
 	var errorStatusMsg = '{$locale->tr("error_select_status")}';
@@ -42,7 +43,7 @@
  <form id="editBlogs" method="post" action="admin.php">
 {check_perms adminperm=update_site_blog}	
      <div class="optionIcon">
-		<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+		<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
 	</div>
 {/check_perms}	
   <div id="list"> 
@@ -51,7 +52,7 @@
    <table id="list" class="info" summary="{$locale->tr("editSiteBlogs")}">
     <thead>
      <tr>
-      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('editBlogs');" /></th>
+      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('editBlogs');" /></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>

Modified: plog/trunk/templates/admin/sitelocales.template
===================================================================
--- plog/trunk/templates/admin/sitelocales.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/sitelocales.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,7 +16,7 @@
    <table id="list" class="info" summary="{$locale->tr("siteLocales")}">
     <thead>
      <tr>
-      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('editLocales');" /></th>
+      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('editLocales');" /></th>
       <th style="width:10%;">{$locale->tr("locale")}</th>
       <th style="width:15%;">{$locale->tr("locale_encoding")}</th>
       <th style="width:60%;">{$locale->tr("description")}</th>

Modified: plog/trunk/templates/admin/sitetemplates.template
===================================================================
--- plog/trunk/templates/admin/sitetemplates.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/sitetemplates.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,7 +16,7 @@
   <table id="list" class="info" summary="{$locale->tr("siteTemplates")}">
    <thead>
     <tr>
-      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('siteTemplates');" /></th>
+      <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('siteTemplates');" /></th>
       <th style="width:90%;">{$locale->tr("template")}</th>
       <th style="width:10%;">{$locale->tr("actions")}</th>
     </tr>
@@ -29,7 +29,7 @@
     </td>
     <td  class="col_highlighted">
 	 {if $sitetemplate->hasScreenshot()}
-	  <a href="javascript:openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');">{$sitetemplate->getName()}</a>
+	  <a href="javascript:Lifetype.UI.Pages.TemplateChooser.openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');">{$sitetemplate->getName()}</a>
 	 {else}
       {$sitetemplate->getName()}
 	 {/if} 
@@ -42,7 +42,7 @@
       </a>
       {/check_perms}
 	  {if $sitetemplate->hasScreenshot()}
-	    <a href="javascript:openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');" title="{$locale->tr("preview")}">
+	    <a href="javascript:Lifetype.UI.Pages.TemplateChooser.openScreenshotWindow('{$sitetemplate->getScreenshotUrl()}');" title="{$locale->tr("preview")}">
 		  <img src="imgs/admin/icon_image-16.png" alt="{$locale->tr("preview")}" />
 		</a>
 	  {/if}	  

Modified: plog/trunk/templates/admin/siteusers.template
===================================================================
--- plog/trunk/templates/admin/siteusers.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/siteusers.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,6 +1,7 @@
 {include file="$admintemplatepath/header.template"}
 {include file="$admintemplatepath/navigation.template" showOpt=editSiteUsers title=$locale->tr("editSiteUsers")} 
 <script type="text/javascript" src="js/ui/plogui.js"></script>
+{js src="js/ui/pages/global.js"}
 <script type="text/javascript">
 	var errorStatusMsg = '{$locale->tr("error_select_status")}';
 	var showMassiveChangeOption = '{$locale->tr("show_massive_change_option")}';
@@ -52,7 +53,7 @@
 	
 			{check_perms adminperm=update_user}	
 			     <div class="optionIcon">
-					<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
+					<a id="optionIconLink" href="#bulkEdit" title="{$locale->tr("show_massive_change_option")}" onclick="Lifetype.UI.Pages.Global.switchMassiveOption()">{$locale->tr("show_massive_change_option")}</a>
 				</div>
 			{/check_perms}	
 	
@@ -62,7 +63,7 @@
             <table id="list" class="info" summary="{$locale->tr("editSiteUsers")}">
                 <thead>
                     <tr>
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('siteUsers');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('siteUsers');" /></th>
                         <th style="width:5%;">UID</th>
                         <th style="width:20%;">{$locale->tr("username")}</th>
                         <th style="width:30%;">{$locale->tr("full_name")}</th>                        

Modified: plog/trunk/templates/admin/statistics.template
===================================================================
--- plog/trunk/templates/admin/statistics.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/statistics.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -16,7 +16,7 @@
             <table id="list" class="info" summary="{$locale->tr("Stats")}">
                 <thead>
                     <tr>
-                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('postStats');" /></th>
+                        <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="Lifetype.Forms.toggleAllChecks('postStats');" /></th>
                         <th style="width:65%;">{$locale->tr("referrer")}</th>                        
 						<th style="width:15%;">{$locale->tr("hits")}</th>
                         <th style="width:10%;">{$locale->tr("date")}</th>

Modified: plog/trunk/templates/admin/usersettings.template
===================================================================
--- plog/trunk/templates/admin/usersettings.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/usersettings.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,11 +1,10 @@
 {include file="$admintemplatepath/header.template"}
+{js src="js/ui/pages/usersettings.js"}
 {include file="$admintemplatepath/navigation.template" showOpt=userSettings title=$locale->tr("userSettings")}
-
-  <form name="userSettings" action="admin.php" method="post">
+<form name="userSettings" id="userSettings" action="admin.php" method="post" onSubmit="Lifetype.Forms.AjaxFormProcessor(this.id,'?op=updateUserSettings&output=json');return(false);">
     <fieldset class="inputField">
      <legend>{$locale->tr("userSettings")}</legend>
-        {include file="$admintemplatepath/successmessage.template"}
-        {include file="$admintemplatepath/errormessage.template"}
+        {include file="$admintemplatepath/formvalidateajax.template"}
      <div style="float:left;width:73%;border-right:1px solid #DEDEDE;">
       <div class="field">
         <label for="userName">{$locale->tr("username")}</label>
@@ -23,11 +22,11 @@
        <label for="userSettingsPassword">{$locale->tr("password")}</label>
        <div class="formHelp">{$locale->tr("password_help")}</div>
        <input type="password" name="userSettingsPassword" value="{$userSettingsPassword}" id="userSettingsPassword" />
-       {include file="$admintemplatepath/validate.template" field=userSettingsPassword message=$locale->tr("error_invalid_password")}
+       {include file="$admintemplatepath/validateajax.template" field=userSettingsPassword}
        <br/>
        <label for="confirmPassword">{$locale->tr("confirm_password")}</label><br/>
        <input type="password" name="confirmPassword" value="" id="confirmPassword" />
-       {include file="$admintemplatepath/validate.template" field=confirmPassword message=$locale->tr("error_passwords_dont_match")}       
+       {include file="$admintemplatepath/validateajax.template" field=confirmPassword}       
      </div>
  
      <div class="field">
@@ -35,7 +34,7 @@
        <span class="required">*</span>
        <div class="formHelp">{$locale->tr("email_help")}</div>
        <input type="text" name="userEmail" value="{$userEmail}" id="userEmail" />
-       {include file="$admintemplatepath/validate.template" field=userEmail message=$locale->tr("error_incorrect_email_address")}		 
+       {include file="$admintemplatepath/validateajax.template" field=userEmail}		 
      </div>
 
      <div class="field">
@@ -49,7 +48,7 @@
      <div class="field">
        <label for="userPictureId">{$locale->tr("picture")}</label>
        <br/>
-       {if $user->hasPicture()} 
+       {if $user->hasPicture()}
 	     {assign var=userPicture value=$user->getPicture()}
 	     {assign var=imgInfo value=$userPicture->getMetadataReader()}
 	     <img alt="Picture" src="{$userPicture->getPreviewLink()}" id="userPicture"  style="display:block;margin-left:auto;margin-right:auto" />
@@ -57,20 +56,18 @@
 	     <img alt="Picture" src="imgs/no-user-picture.jpg" id="userPicture" style="display:block;margin-left:auto;margin-right:auto"/>	
        {/if}
 	   <div class="formHelp">{$locale->tr("user_picture_help")}</div>
-       <a href="javascript:userPictureSelectWindow();">{$locale->tr("choose")}...</a>
+       <a href="javascript:Lifetype.UI.Pages.UserSettings.userPictureSelectWindow();">{$locale->tr("choose")}...</a>
 	   |
-	   <a href="javascript:resetUserPicture();">{$locale->tr("reset")}</a>
+	   <a href="javascript:Lifetype.UI.Pages.UserSettings.resetUserPicture();">{$locale->tr("reset")}</a>
        <input type="hidden" name="userPictureId" id="userPictureId" value="{$user->getPictureId()}" />
      </div>
     </div>
     </fieldset>
-
     <div class="buttons">
      <input type="reset" name="reset" value="{$locale->tr("reset")}" />
      <input type="submit" name="Update" value="{$locale->tr("update")}"/>
      <input type="hidden" name="op" value="updateUserSettings" />
    </div>
-
  </form>
 {include file="$admintemplatepath/footernavigation.template"}
 {include file="$admintemplatepath/footer.template"}
\ No newline at end of file

Modified: plog/trunk/templates/admin/validate.template
===================================================================
--- plog/trunk/templates/admin/validate.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/admin/validate.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -3,7 +3,7 @@
 	{if !$form->isFieldValid($field)}
 		<div class="fieldValidationError">
 		  <span style="background:red;color:white;font-weight:bold">&nbsp;!&nbsp;</span>&nbsp;
-		  {$message}
+		  {if $mesage != ""}{$message}{else}{$form->getFieldErrorMessage($field)}{/if}
 		</div>  
 	{/if}
 {/if}
\ No newline at end of file

Copied: plog/trunk/templates/admin/validateajax.template (from rev 5682, plog/branches/lifetype-1.3-ajax/templates/admin/validateajax.template)
===================================================================
--- plog/trunk/templates/admin/validateajax.template	                        (rev 0)
+++ plog/trunk/templates/admin/validateajax.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -0,0 +1 @@
+<div id="field_{$field}" class="fieldValidationError" style="display:none"></div>
\ No newline at end of file

Modified: plog/trunk/templates/wizard/step1.template
===================================================================
--- plog/trunk/templates/wizard/step1.template	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/templates/wizard/step1.template	2007-07-19 04:53:31 UTC (rev 5683)
@@ -38,21 +38,7 @@
      <label for="dbPrefix">Database prefix</label>
      <div class="formHelp"></div>     
      <span id="dbPrefix">{$dbPrefix}</span><br/>
-    </div>
-
-    {if !empty($availableCharacterSets)}
-	    <div class="field">
-	     	<label for="dbCharacterSet">Database default character set</label>
-	     	<div class="formHelp">If you plan to use UTF-8 as your default web encoding, please select <strong>utf8</strong> as your database default character set.</div>     
-	    	<select name="dbCharacterSet" id="dbCharacterSet" size="1" style="width:20%">
-	        <option value="default">default</option>
-            {foreach from=$availableCharacterSets item=availableCharacterSet}
-	        	<option value="{$availableCharacterSet}" {if $availableCharacterSet == $defaultCharacterSet} selected="selected" {/if}>{$availableCharacterSet}</option>
-	        {/foreach}
-         </select> 
-        </div> 
-    {/if}
-    
+    </div>    
     <div class="field">
      <label for="createDatabase">Create database</label>
      <div class="formHelp"></div>

Modified: plog/trunk/wizard.php
===================================================================
--- plog/trunk/wizard.php	2007-07-19 04:32:39 UTC (rev 5682)
+++ plog/trunk/wizard.php	2007-07-19 04:53:31 UTC (rev 5683)
@@ -1,4 +1,4 @@
-|<?php
+<?php
 
     if (!defined( "PLOG_CLASS_PATH" )) {
         define( "PLOG_CLASS_PATH", dirname(__FILE__)."/");
@@ -741,20 +741,9 @@
                     $this->_view->setErrorMessage( $message );
                     $this->setCommonData( true );
                     return false;
-                } else {
+                } 
+				else {
                 	$this->_view = new WizardView( "step1" );
-	                $availableCharacterSets = $driver->getAvailableCharacterSets();
-	                $defaultCharacterSet = $driver->getDatabaseCharacterSet( $this->_dbName );
-	                $createDatabase = false;
-	                if( empty( $defaultCharacterSet ) ) {
-	                	$defaultCharacterSet = $driver->getServerCharacterSet();
-	                	$createDatabase = true;
-	                }
-	                $this->_view->setValue( "availableCharacterSets", $availableCharacterSets );
-	                $this->_view->setValue( "defaultCharacterSet", $defaultCharacterSet );
-	                $this->_view->setValue( "createDatabase", $createDatabase );
-	                // now we better read the information from the config file to make sure that
-	                // it has been correctly saved
 	                $this->setCommonData( true );
 	                return true;
 	            }
@@ -784,7 +773,7 @@
             $view->setValue( "dbServer", $configFile->getValue( "db_host" ));
             $view->setValue( "dbName", $configFile->getValue( "db_database" ));
             $view->setValue( "dbPrefix", $configFile->getValue( "db_prefix" ));
-            $view->setValue( "dbCharacterSet", $configFile->getValue( "db_character_set" ));
+            $view->setValue( "dbCharacterSet", "utf8" );
             $view->setValue( "dbDriver", $configFile->getValue( "db_driver" ));
             return true;
         }
@@ -794,7 +783,7 @@
             global $Tables;
             global $Inserts;
 
-			$this->_dbCharacterSet = $this->_request->getValue( "dbCharacterSet" );
+			$this->_dbCharacterSet = "utf8";
             $configFile = new ConfigFileStorage();
 			$configFileName = $configFile->getConfigFileName();
             
@@ -896,11 +885,11 @@
             foreach( $Tables as $name => $table ) {
             	$upperName = $dict->upperName;
             	$tableSchema = $table["schema"];
-            	if ( isset( $table["options"] ) )
-            	{
+            	if ( isset( $table["options"] ) ) {
             		$tableOptions = $table["options"];
             		$options = array ( $upperName => $tableOptions );
-            	} else {
+            	} 
+				else {
             		$options = array ();
                 }
                 $sqlarray = $dict->CreateTableSQL( $this->_dbPrefix.$name, $tableSchema, $options );
@@ -1074,8 +1063,8 @@
             $this->WizardAction( $actionInfo, $request );
 
             $this->registerFieldValidator( "userName", new UsernameValidator());
-            $this->registerFieldValidator( "userPassword", new PasswordValidator());
-            $this->registerFieldValidator( "userPasswordCheck", new PasswordValidator());
+            //$this->registerFieldValidator( "userPassword", new PasswordValidator());
+            //$this->registerFieldValidator( "userPasswordCheck", new PasswordValidator());
             $this->registerFieldValidator( "userEmail", new EmailValidator());
             $this->registerField( "userFullName" );
             $view = new WizardView( "step3" );



More information about the pLog-svn mailing list