diff -aruN --binary 11/administrator/components/com_config/controllers/application.php 12/administrator/components/com_config/controllers/application.php
--- 11/administrator/components/com_config/controllers/application.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/administrator/components/com_config/controllers/application.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: application.php 11795 2009-05-06 01:59:19Z ian $
+ * @version		$Id: application.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Config
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once( JPATH_COMPONENT.DS.'views'.DS.'application'.DS.'view.php' );
 
 /**
@@ -105,7 +108,7 @@
 		$lists['xmlrpc_server'] = JHTML::_('select.booleanlist', 'xmlrpc_server', 'class="inputbox"', $row->xmlrpc_server);
 		$lists['error_reporting'] = JHTML::_('select.genericlist',  $errors, 'error_reporting', 'class="inputbox" size="1"', 'value', 'text', $row->error_reporting);
 		$lists['enable_ftp'] 	= JHTML::_('select.booleanlist', 'ftp_enable', 'class="inputbox"', intval($row->ftp_enable));
-		
+
 		$forceSSL = array(
 								JHTML::_('select.option', 0, JText::_('None')),
 								JHTML::_('select.option', 1, JText::_('Administrator Only')),
@@ -114,55 +117,64 @@
 		$lists['force_ssl'] = JHTML::_('select.genericlist', $forceSSL, 'force_ssl', 'class="inputbox" size="1"', 'value', 'text', @$row->force_ssl);
 
 		// LOCALE SETTINGS
-		$timeoffset = array (	JHTML::_('select.option', -12, JText::_('(UTC -12:00) International Date Line West')),
-								JHTML::_('select.option', -11, JText::_('(UTC -11:00) Midway Island, Samoa')),
-								JHTML::_('select.option', -10, JText::_('(UTC -10:00) Hawaii')),
-								JHTML::_('select.option', -9.5, JText::_('(UTC -09:30) Taiohae, Marquesas Islands')),
-								JHTML::_('select.option', -9, JText::_('(UTC -09:00) Alaska')),
-								JHTML::_('select.option', -8, JText::_('(UTC -08:00) Pacific Time (US &amp; Canada)')),
-								JHTML::_('select.option', -7, JText::_('(UTC -07:00) Mountain Time (US &amp; Canada)')),
-								JHTML::_('select.option', -6, JText::_('(UTC -06:00) Central Time (US &amp; Canada), Mexico City')),
-								JHTML::_('select.option', -5, JText::_('(UTC -05:00) Eastern Time (US &amp; Canada), Bogota, Lima')),
-								JHTML::_('select.option', -4.5, JText::_('(UTC -04:30) Venezuela')),
-								JHTML::_('select.option', -4, JText::_('(UTC -04:00) Atlantic Time (Canada), Caracas, La Paz')),
-								JHTML::_('select.option', -3.5, JText::_('(UTC -03:30) St. John\'s, Newfoundland, Labrador')),
-								JHTML::_('select.option', -3, JText::_('(UTC -03:00) Brazil, Buenos Aires, Georgetown')),
-								JHTML::_('select.option', -2, JText::_('(UTC -02:00) Mid-Atlantic')),
-								JHTML::_('select.option', -1, JText::_('(UTC -01:00) Azores, Cape Verde Islands')),
-								JHTML::_('select.option', 0, JText::_('(UTC 00:00) Western Europe Time, London, Lisbon, Casablanca')),
-								JHTML::_('select.option', 1, JText::_('(UTC +01:00) Amsterdam, Berlin, Brussels, Copenhagen, Madrid, Paris')),
-								JHTML::_('select.option', 2, JText::_('(UTC +02:00) Istanbul, Jerusalem, Kaliningrad, South Africa')),
-								JHTML::_('select.option', 3, JText::_('(UTC +03:00) Baghdad, Riyadh, Moscow, St. Petersburg')),
-								JHTML::_('select.option', 3.5, JText::_('(UTC +03:30) Tehran')),
-								JHTML::_('select.option', 4, JText::_('(UTC +04:00) Abu Dhabi, Muscat, Baku, Tbilisi')),
-								JHTML::_('select.option', 4.5, JText::_('(UTC +04:30) Kabul')),
-								JHTML::_('select.option', 5, JText::_('(UTC +05:00) Ekaterinburg, Islamabad, Karachi, Tashkent')),
-								JHTML::_('select.option', 5.5, JText::_('(UTC +05:30) Bombay, Calcutta, Madras, New Delhi, Colombo')),
-								JHTML::_('select.option', 5.75, JText::_('(UTC +05:45) Kathmandu')),
-								JHTML::_('select.option', 6, JText::_('(UTC +06:00) Almaty, Dhaka')),
-								JHTML::_('select.option', 6.30, JText::_('(UTC +06:30) Yagoon')),
-								JHTML::_('select.option', 7, JText::_('(UTC +07:00) Bangkok, Hanoi, Jakarta')),
-								JHTML::_('select.option', 8, JText::_('(UTC +08:00) Beijing, Perth, Singapore, Hong Kong')),
-								JHTML::_('select.option', 8.75, JText::_('(UTC +08:00) Western Australia')),
-								JHTML::_('select.option', 9, JText::_('(UTC +09:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk')),
-								JHTML::_('select.option', 9.5, JText::_('(UTC +09:30) Adelaide, Darwin, Yakutsk')),
-								JHTML::_('select.option', 10, JText::_('(UTC +10:00) Eastern Australia, Guam, Vladivostok')),
-								JHTML::_('select.option', 10.5, JText::_('(UTC +10:30) Lord Howe Island (Australia)')),
-								JHTML::_('select.option', 11, JText::_('(UTC +11:00) Magadan, Solomon Islands, New Caledonia')),
-								JHTML::_('select.option', 11.30, JText::_('(UTC +11:30) Norfolk Island')),
-								JHTML::_('select.option', 12, JText::_('(UTC +12:00) Auckland, Wellington, Fiji, Kamchatka')),
-								JHTML::_('select.option', 12.75, JText::_('(UTC +12:45) Chatham Island')),
-								JHTML::_('select.option', 13, JText::_('(UTC +13:00) Tonga')),
-								JHTML::_('select.option', 14, JText::_('(UTC +14:00) Kiribati')),);
-		$lists['offset'] 		= JHTML::_('select.genericlist',  $timeoffset, 'offset', 'class="inputbox" size="1"', 'value', 'text', $row->offset);
+		$timeoffset = array (	
+			JHTML::_('select.option', -12, JText::_('(UTC -12:00) International Date Line West')),
+			JHTML::_('select.option', -11, JText::_('(UTC -11:00) Midway Island, Samoa')),
+			JHTML::_('select.option', -10, JText::_('(UTC -10:00) Hawaii')),
+			JHTML::_('select.option', -9.5, JText::_('(UTC -09:30) Taiohae, Marquesas Islands')),
+			JHTML::_('select.option', -9, JText::_('(UTC -09:00) Alaska')),
+			JHTML::_('select.option', -8, JText::_('(UTC -08:00) Pacific Time (US &amp; Canada)')),
+			JHTML::_('select.option', -7, JText::_('(UTC -07:00) Mountain Time (US &amp; Canada)')),
+			JHTML::_('select.option', -6, JText::_('(UTC -06:00) Central Time (US &amp; Canada), Mexico City')),
+			JHTML::_('select.option', -5, JText::_('(UTC -05:00) Eastern Time (US &amp; Canada), Bogota, Lima')),
+			JHTML::_('select.option', -4.5, JText::_('(UTC -04:30) Venezuela')),
+			JHTML::_('select.option', -4, JText::_('(UTC -04:00) Atlantic Time (Canada), Caracas, La Paz')),
+			JHTML::_('select.option', -3.5, JText::_('(UTC -03:30) St. John\'s, Newfoundland, Labrador')),
+			JHTML::_('select.option', -3, JText::_('(UTC -03:00) Brazil, Buenos Aires, Georgetown')),
+			JHTML::_('select.option', -2, JText::_('(UTC -02:00) Mid-Atlantic')),
+			JHTML::_('select.option', -1, JText::_('(UTC -01:00) Azores, Cape Verde Islands')),
+			JHTML::_('select.option', 0, JText::_('(UTC 00:00) Western Europe Time, London, Lisbon, Casablanca')),
+			JHTML::_('select.option', 1, JText::_('(UTC +01:00) Amsterdam, Berlin, Brussels, Copenhagen, Madrid, Paris')),
+			JHTML::_('select.option', 2, JText::_('(UTC +02:00) Istanbul, Jerusalem, Kaliningrad, South Africa')),
+			JHTML::_('select.option', 3, JText::_('(UTC +03:00) Baghdad, Riyadh, Moscow, St. Petersburg')),
+			JHTML::_('select.option', 3.5, JText::_('(UTC +03:30) Tehran')),
+			JHTML::_('select.option', 4, JText::_('(UTC +04:00) Abu Dhabi, Muscat, Baku, Tbilisi')),
+			JHTML::_('select.option', 4.5, JText::_('(UTC +04:30) Kabul')),
+			JHTML::_('select.option', 5, JText::_('(UTC +05:00) Ekaterinburg, Islamabad, Karachi, Tashkent')),
+			JHTML::_('select.option', 5.5, JText::_('(UTC +05:30) Bombay, Calcutta, Madras, New Delhi, Colombo')),
+			JHTML::_('select.option', 5.75, JText::_('(UTC +05:45) Kathmandu')),
+			JHTML::_('select.option', 6, JText::_('(UTC +06:00) Almaty, Dhaka')),
+			JHTML::_('select.option', 6.30, JText::_('(UTC +06:30) Yagoon')),
+			JHTML::_('select.option', 7, JText::_('(UTC +07:00) Bangkok, Hanoi, Jakarta')),
+			JHTML::_('select.option', 8, JText::_('(UTC +08:00) Beijing, Perth, Singapore, Hong Kong')),
+			JHTML::_('select.option', 8.75, JText::_('(UTC +08:00) Western Australia')),
+			JHTML::_('select.option', 9, JText::_('(UTC +09:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk')),
+			JHTML::_('select.option', 9.5, JText::_('(UTC +09:30) Adelaide, Darwin, Yakutsk')),
+			JHTML::_('select.option', 10, JText::_('(UTC +10:00) Eastern Australia, Guam, Vladivostok')),
+			JHTML::_('select.option', 10.5, JText::_('(UTC +10:30) Lord Howe Island (Australia)')),
+			JHTML::_('select.option', 11, JText::_('(UTC +11:00) Magadan, Solomon Islands, New Caledonia')),
+			JHTML::_('select.option', 11.30, JText::_('(UTC +11:30) Norfolk Island')),
+			JHTML::_('select.option', 12, JText::_('(UTC +12:00) Auckland, Wellington, Fiji, Kamchatka')),
+			JHTML::_('select.option', 12.75, JText::_('(UTC +12:45) Chatham Island')),
+			JHTML::_('select.option', 13, JText::_('(UTC +13:00) Tonga')),
+			JHTML::_('select.option', 14, JText::_('(UTC +14:00) Kiribati')),);
+		$lists['offset'] = JHTML::_('select.genericlist',  $timeoffset, 'offset', 'class="inputbox" size="1"', 'value', 'text', $row->offset);
 
 		// MAIL SETTINGS
-		$mailer 				= array (JHTML::_('select.option', 'mail', JText::_('PHP mail function')), JHTML::_('select.option', 'sendmail', JText::_('Sendmail')), JHTML::_('select.option', 'smtp', JText::_('SMTP Server')));
-		$lists['mailer'] 		= JHTML::_('select.genericlist',  $mailer, 'mailer', 'class="inputbox" size="1"', 'value', 'text', $row->mailer);
-		$lists['smtpauth'] 		= JHTML::_('select.booleanlist', 'smtpauth', 'class="inputbox"', $row->smtpauth);
+		$mailer = array (
+			JHTML::_('select.option', 'mail', JText::_('PHP mail function')), 
+			JHTML::_('select.option', 'sendmail', JText::_('Sendmail')),
+			JHTML::_('select.option', 'smtp', JText::_('SMTP Server')));
+		$lists['mailer'] = JHTML::_('select.genericlist',  $mailer, 'mailer', 'class="inputbox" size="1"', 'value', 'text', $row->mailer);
+		$smtpsecure = array (
+			JHTML::_('select.option', 'none', JText::_('None')),
+			JHTML::_('select.option', 'ssl', 'SSL'),
+			JHTML::_('select.option', 'tls', 'TLS'));
+		$lists['smtpsecure'] = JHTML::_('select.genericlist',  $smtpsecure, 'smtpsecure', 'class="inputbox" size="1"', 'value', 'text', (isset($row->smtpsecure) ? $row->smtpsecure : ''));
+		$lists['smtpauth'] = JHTML::_('select.booleanlist', 'smtpauth', 'class="inputbox"', $row->smtpauth);
 
 		// CACHE SETTINGS
-		$lists['caching'] 		= JHTML::_('select.booleanlist', 'caching', 'class="inputbox"', $row->caching);
+		$lists['caching'] = JHTML::_('select.booleanlist', 'caching', 'class="inputbox"', $row->caching);
 		jimport('joomla.cache.cache');
 		$stores = JCache::getStores();
 		$options = array();
@@ -183,7 +195,7 @@
 		$lists['MetaTitle'] 	= JHTML::_('select.booleanlist', 'MetaTitle', 'class="inputbox"', $row->MetaTitle);
 
 		// SEO SETTINGS
-		$lists['sef'] 			= JHTML::_('select.booleanlist', 'sef', 'class="inputbox"', $row->sef);
+		$lists['sef'] 		= JHTML::_('select.booleanlist', 'sef', 'class="inputbox"', $row->sef);
 		$lists['sef_rewrite'] 	= JHTML::_('select.booleanlist', 'sef_rewrite', 'class="inputbox"', $row->sef_rewrite);
 		$lists['sef_suffix'] 	= JHTML::_('select.booleanlist', 'sef_suffix', 'class="inputbox"', $row->sef_suffix);
 
@@ -334,7 +346,7 @@
 		$config_array['dbtype']		= JRequest::getVar('dbtype', 'mysql', 'post', 'word');
 		$config_array['host']		= JRequest::getVar('host', 'localhost', 'post', 'string');
 		$config_array['user']		= JRequest::getVar('user', '', 'post', 'string');
-		$config_array['db']			= JRequest::getVar('db', '', 'post', 'string');
+		$config_array['db']		= JRequest::getVar('db', '', 'post', 'string');
 		$config_array['dbprefix']	= JRequest::getVar('dbprefix', 'jos_', 'post', 'string');
 
 		// MAIL SETTINGS
@@ -343,6 +355,9 @@
 		$config_array['fromname']	= JRequest::getVar('fromname', 'Joomla 1.5', 'post', 'string');
 		$config_array['sendmail']	= JRequest::getVar('sendmail', '/usr/sbin/sendmail', 'post', 'string');
 		$config_array['smtpauth']	= JRequest::getVar('smtpauth', 0, 'post', 'int');
+		$config_array['smtpsecure']	= JRequest::getVar('smtpsecure', 'none', 'post', 'word');
+		$smtpport	        	= JRequest::getVar('smtpport', '', 'post', 'int');
+		$config_array['smtpport']	= $smtpport ? $smtpport : '25';
 		$config_array['smtpuser']	= JRequest::getVar('smtpuser', '', 'post', 'string');
 		$config_array['smtppass']	= JRequest::getVar('smtppass', '', 'post', 'string', JREQUEST_ALLOWRAW);
 		$config_array['smtphost']	= JRequest::getVar('smtphost', '', 'post', 'string');
diff -aruN --binary 11/administrator/components/com_config/controllers/component.php 12/administrator/components/com_config/controllers/component.php
--- 11/administrator/components/com_config/controllers/component.php	2008-07-07 00:38:34.000000000 +0200
+++ 12/administrator/components/com_config/controllers/component.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: component.php 10381 2008-06-01 03:35:53Z pasamio $
+ * @version		$Id: component.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Config
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once( JPATH_COMPONENT.DS.'views'.DS.'component'.DS.'view.php' );
 
 /**
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_cache.php 12/administrator/components/com_config/views/application/tmpl/config_cache.php
--- 11/administrator/components/com_config/views/application/tmpl/config_cache.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_cache.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Cache Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_database.php 12/administrator/components/com_config/views/application/tmpl/config_database.php
--- 11/administrator/components/com_config/views/application/tmpl/config_database.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_database.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Database Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_debug.php 12/administrator/components/com_config/views/application/tmpl/config_debug.php
--- 11/administrator/components/com_config/views/application/tmpl/config_debug.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_debug.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Debug Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_ftp.php 12/administrator/components/com_config/views/application/tmpl/config_ftp.php
--- 11/administrator/components/com_config/views/application/tmpl/config_ftp.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_ftp.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'FTP Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_locale.php 12/administrator/components/com_config/views/application/tmpl/config_locale.php
--- 11/administrator/components/com_config/views/application/tmpl/config_locale.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_locale.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Locale Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_mail.php 12/administrator/components/com_config/views/application/tmpl/config_mail.php
--- 11/administrator/components/com_config/views/application/tmpl/config_mail.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_mail.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Mail Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
@@ -53,6 +55,26 @@
 				<?php echo $lists['smtpauth']; ?>
 			</td>
 		</tr>
+        <tr>
+ 			<td class="key">
+   				<span class="editlinktip hasTip" title="<?php echo JText::_( 'SMTP Security' ); ?>::<?php echo JText::_( 'TIPSMTPSECURITY' ); ?>">
+	    				<?php echo JText::_( 'SMTP Security' ); ?>
+				</span>
+			</td>
+			<td>
+				<?php echo $lists['smtpsecure']; ?>
+			</td>
+		</tr>
+		<tr>
+			<td class="key">
+				<span class="editlinktip hasTip" title="<?php echo JText::_( 'SMTP Port' ); ?>::<?php echo JText::_( 'TIPSMTPPORT' ); ?>">
+					<?php echo JText::_( 'SMTP Port' ); ?>
+				</span>
+			</td>
+			<td>
+				<input class="text_area" type="text" name="smtpport" size="30" value="<?php echo (isset($row->smtpport) ? $row->smtpport : ''); ?>" />
+			</td>
+		</tr>
 		<tr>
 			<td class="key">
 				<span class="editlinktip hasTip" title="<?php echo JText::_( 'SMTP User' ); ?>::<?php echo JText::_( 'TIPSMTPUSER' ); ?>">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_metadata.php 12/administrator/components/com_config/views/application/tmpl/config_metadata.php
--- 11/administrator/components/com_config/views/application/tmpl/config_metadata.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_metadata.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Metadata Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_seo.php 12/administrator/components/com_config/views/application/tmpl/config_seo.php
--- 11/administrator/components/com_config/views/application/tmpl/config_seo.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_seo.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'SEO Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_server.php 12/administrator/components/com_config/views/application/tmpl/config_server.php
--- 11/administrator/components/com_config/views/application/tmpl/config_server.php	2009-01-10 04:58:06.000000000 +0100
+++ 12/administrator/components/com_config/views/application/tmpl/config_server.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Server Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_session.php 12/administrator/components/com_config/views/application/tmpl/config_session.php
--- 11/administrator/components/com_config/views/application/tmpl/config_session.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/config_session.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Session Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_site.php 12/administrator/components/com_config/views/application/tmpl/config_site.php
--- 11/administrator/components/com_config/views/application/tmpl/config_site.php	2009-03-28 02:43:38.000000000 +0100
+++ 12/administrator/components/com_config/views/application/tmpl/config_site.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'Site Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/config_system.php 12/administrator/components/com_config/views/application/tmpl/config_system.php
--- 11/administrator/components/com_config/views/application/tmpl/config_system.php	2009-01-10 04:58:06.000000000 +0100
+++ 12/administrator/components/com_config/views/application/tmpl/config_system.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset class="adminform">
 	<legend><?php echo JText::_( 'System Settings' ); ?></legend>
 	<table class="admintable" cellspacing="1">
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/ftp.php 12/administrator/components/com_config/views/application/tmpl/ftp.php
--- 11/administrator/components/com_config/views/application/tmpl/ftp.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/ftp.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset title="<?php echo JText::_('DESCFTPTITLE'); ?>" class="adminform">
 	<legend><?php echo JText::_('DESCFTPTITLE'); ?></legend>
 
diff -aruN --binary 11/administrator/components/com_config/views/application/tmpl/navigation.php 12/administrator/components/com_config/views/application/tmpl/navigation.php
--- 11/administrator/components/com_config/views/application/tmpl/navigation.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_config/views/application/tmpl/navigation.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <div class="submenu-box">
 	<div class="submenu-pad">
 		<ul id="submenu" class="configuration">
diff -aruN --binary 11/administrator/components/com_installer/models/components.php 12/administrator/components/com_installer/models/components.php
--- 11/administrator/components/com_installer/models/components.php	2008-09-09 17:19:40.000000000 +0200
+++ 12/administrator/components/com_installer/models/components.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: components.php 10710 2008-08-21 10:08:12Z eddieajau $
+ * @version		$Id: components.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Menus
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 // Import library dependencies
 require_once(dirname(__FILE__).DS.'extension.php');
 
diff -aruN --binary 11/administrator/components/com_installer/models/languages.php 12/administrator/components/com_installer/models/languages.php
--- 11/administrator/components/com_installer/models/languages.php	2008-11-11 02:30:12.000000000 +0100
+++ 12/administrator/components/com_installer/models/languages.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: languages.php 11213 2008-10-25 12:43:11Z pasamio $
+ * @version		$Id: languages.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Menus
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 // Import library dependencies
 require_once(dirname(__FILE__).DS.'extension.php');
 jimport( 'joomla.filesystem.folder' );
diff -aruN --binary 11/administrator/components/com_installer/models/modules.php 12/administrator/components/com_installer/models/modules.php
--- 11/administrator/components/com_installer/models/modules.php	2008-09-09 17:19:40.000000000 +0200
+++ 12/administrator/components/com_installer/models/modules.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: modules.php 10710 2008-08-21 10:08:12Z eddieajau $
+ * @version		$Id: modules.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Menus
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 // Import library dependencies
 require_once(dirname(__FILE__).DS.'extension.php');
 
diff -aruN --binary 11/administrator/components/com_installer/models/plugins.php 12/administrator/components/com_installer/models/plugins.php
--- 11/administrator/components/com_installer/models/plugins.php	2008-09-09 17:19:40.000000000 +0200
+++ 12/administrator/components/com_installer/models/plugins.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: plugins.php 10710 2008-08-21 10:08:12Z eddieajau $
+ * @version		$Id: plugins.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Menus
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 // Import library dependencies
 require_once(dirname(__FILE__).DS.'extension.php');
 
diff -aruN --binary 11/administrator/components/com_installer/models/templates.php 12/administrator/components/com_installer/models/templates.php
--- 11/administrator/components/com_installer/models/templates.php	2008-09-09 17:19:40.000000000 +0200
+++ 12/administrator/components/com_installer/models/templates.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: templates.php 10710 2008-08-21 10:08:12Z eddieajau $
+ * @version		$Id: templates.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Menus
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 // Import library dependencies
 require_once(dirname(__FILE__).DS.'extension.php');
 jimport( 'joomla.filesystem.folder' );
diff -aruN --binary 11/administrator/components/com_installer/views/components/tmpl/default_item.php 12/administrator/components/com_installer/views/components/tmpl/default_item.php
--- 11/administrator/components/com_installer/views/components/tmpl/default_item.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/components/tmpl/default_item.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <tr class="<?php echo "row".$this->item->index % 2; ?>" <?php echo $this->item->style; ?>>
 	<td><?php echo $this->pagination->getRowOffset( $this->item->index ); ?></td>
 	<td>
diff -aruN --binary 11/administrator/components/com_installer/views/components/tmpl/default.php 12/administrator/components/com_installer/views/components/tmpl/default.php
--- 11/administrator/components/com_installer/views/components/tmpl/default.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/components/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <form action="index.php" method="post" name="adminForm">
 	<?php if ($this->showMessage) : ?>
 		<?php echo $this->loadTemplate('message'); ?>
diff -aruN --binary 11/administrator/components/com_installer/views/default/tmpl/default_ftp.php 12/administrator/components/com_installer/views/default/tmpl/default_ftp.php
--- 11/administrator/components/com_installer/views/default/tmpl/default_ftp.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/default/tmpl/default_ftp.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <fieldset title="<?php echo JText::_('DESCFTPTITLE'); ?>">
 	<legend><?php echo JText::_('DESCFTPTITLE'); ?></legend>
 
diff -aruN --binary 11/administrator/components/com_installer/views/default/tmpl/default_message.php 12/administrator/components/com_installer/views/default/tmpl/default_message.php
--- 11/administrator/components/com_installer/views/default/tmpl/default_message.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/default/tmpl/default_message.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,4 +1,5 @@
-<?php
+<?php // no direct access
+	defined( '_JEXEC' ) or die( 'Restricted access' ); 
 	$state			= &$this->get('State');
 	$message1		= $state->get('message');
 	$message2		= $state->get('extension.message');
diff -aruN --binary 11/administrator/components/com_installer/views/install/tmpl/default_form.php 12/administrator/components/com_installer/views/install/tmpl/default_form.php
--- 11/administrator/components/com_installer/views/install/tmpl/default_form.php	2008-07-07 00:38:46.000000000 +0200
+++ 12/administrator/components/com_installer/views/install/tmpl/default_form.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <script language="javascript" type="text/javascript">
 <!--
 	function submitbutton3(pressbutton) {
diff -aruN --binary 11/administrator/components/com_installer/views/install/tmpl/default.php 12/administrator/components/com_installer/views/install/tmpl/default.php
--- 11/administrator/components/com_installer/views/install/tmpl/default.php	2008-07-07 00:38:46.000000000 +0200
+++ 12/administrator/components/com_installer/views/install/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <?php if ($this->showMessage) : ?>
 <?php echo $this->loadTemplate('message'); ?>
 <?php endif; ?>
diff -aruN --binary 11/administrator/components/com_installer/views/languages/tmpl/default_item.php 12/administrator/components/com_installer/views/languages/tmpl/default_item.php
--- 11/administrator/components/com_installer/views/languages/tmpl/default_item.php	2008-07-07 00:38:46.000000000 +0200
+++ 12/administrator/components/com_installer/views/languages/tmpl/default_item.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <tr class="<?php echo "row".$this->item->index % 2; ?>" <?php echo $this->item->style; ?>>
 	<td><?php echo $this->pagination->getRowOffset( $this->item->index ); ?></td>
 	<td>
diff -aruN --binary 11/administrator/components/com_installer/views/languages/tmpl/default.php 12/administrator/components/com_installer/views/languages/tmpl/default.php
--- 11/administrator/components/com_installer/views/languages/tmpl/default.php	2008-07-07 00:38:46.000000000 +0200
+++ 12/administrator/components/com_installer/views/languages/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <form action="index.php" method="post" name="adminForm">
 	<?php if ($this->ftp) : ?>
 		<?php echo $this->loadTemplate('ftp'); ?>
diff -aruN --binary 11/administrator/components/com_installer/views/modules/tmpl/default_item.php 12/administrator/components/com_installer/views/modules/tmpl/default_item.php
--- 11/administrator/components/com_installer/views/modules/tmpl/default_item.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/modules/tmpl/default_item.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <tr class="<?php echo "row".$this->item->index % 2; ?>" <?php echo $this->item->style; ?>>
 	<td><?php echo $this->pagination->getRowOffset( $this->item->index ); ?></td>
 	<td>
diff -aruN --binary 11/administrator/components/com_installer/views/modules/tmpl/default.php 12/administrator/components/com_installer/views/modules/tmpl/default.php
--- 11/administrator/components/com_installer/views/modules/tmpl/default.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/modules/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <form action="index.php" method="post" name="adminForm">
 	<?php if ($this->ftp) : ?>
 		<?php echo $this->loadTemplate('ftp'); ?>
diff -aruN --binary 11/administrator/components/com_installer/views/plugins/tmpl/default_item.php 12/administrator/components/com_installer/views/plugins/tmpl/default_item.php
--- 11/administrator/components/com_installer/views/plugins/tmpl/default_item.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/plugins/tmpl/default_item.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <tr class="<?php echo "row".$this->item->index % 2; ?>" <?php echo $this->item->style; ?>>
 	<td><?php echo $this->pagination->getRowOffset( $this->item->index ); ?></td>
 	<td>
diff -aruN --binary 11/administrator/components/com_installer/views/plugins/tmpl/default.php 12/administrator/components/com_installer/views/plugins/tmpl/default.php
--- 11/administrator/components/com_installer/views/plugins/tmpl/default.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/plugins/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <form action="index.php" method="post" name="adminForm">
 	<?php if ($this->ftp) : ?>
 		<?php echo $this->loadTemplate('ftp'); ?>
diff -aruN --binary 11/administrator/components/com_installer/views/templates/tmpl/default_item.php 12/administrator/components/com_installer/views/templates/tmpl/default_item.php
--- 11/administrator/components/com_installer/views/templates/tmpl/default_item.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/templates/tmpl/default_item.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <tr class="<?php echo "row".$this->item->index % 2; ?>" <?php echo $this->item->style; ?>>
 	<td><?php echo $this->pagination->getRowOffset( $this->item->index ); ?></td>
 	<td>
diff -aruN --binary 11/administrator/components/com_installer/views/templates/tmpl/default.php 12/administrator/components/com_installer/views/templates/tmpl/default.php
--- 11/administrator/components/com_installer/views/templates/tmpl/default.php	2008-07-07 00:38:48.000000000 +0200
+++ 12/administrator/components/com_installer/views/templates/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 <form action="index.php" method="post" name="adminForm">
 	<?php if ($this->ftp) : ?>
 		<?php echo $this->loadTemplate('ftp'); ?>
diff -aruN --binary 11/administrator/components/com_search/helpers/search.php 12/administrator/components/com_search/helpers/search.php
--- 11/administrator/components/com_search/helpers/search.php	2008-07-27 01:29:08.000000000 +0200
+++ 12/administrator/components/com_search/helpers/search.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: search.php 10579 2008-07-22 14:54:24Z ircmaxell $
+ * @version		$Id: search.php 12389 2009-07-01 00:34:45Z ian $
  * @package  Joomla
  * @subpackage	Search
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -12,6 +12,9 @@
  * details.
  */
 
+// Check to ensure this file is included in Joomla!
+defined('_JEXEC') or die( 'Restricted access' );
+
 /**
  * @package		Joomla
  * @subpackage	Search
diff -aruN --binary 11/administrator/components/com_search/helpers/site.php 12/administrator/components/com_search/helpers/site.php
--- 11/administrator/components/com_search/helpers/site.php	2008-07-07 00:38:42.000000000 +0200
+++ 12/administrator/components/com_search/helpers/site.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: site.php 10381 2008-06-01 03:35:53Z pasamio $
+ * @version		$Id: site.php 12389 2009-07-01 00:34:45Z ian $
  * @package  Joomla
  * @subpackage	Search
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -11,6 +11,9 @@
  * source software licenses. See COPYRIGHT.php for copyright notices and details.
  */
 
+// Check to ensure this file is included in Joomla!
+defined('_JEXEC') or die( 'Restricted access' );
+
 /**
  * False JSite class used to fool the frontend search plugins because they route the results
  */
diff -aruN --binary 11/administrator/components/com_templates/admin.templates.html.php 12/administrator/components/com_templates/admin.templates.html.php
--- 11/administrator/components/com_templates/admin.templates.html.php	2008-07-07 00:38:36.000000000 +0200
+++ 12/administrator/components/com_templates/admin.templates.html.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: admin.templates.html.php 10381 2008-06-01 03:35:53Z pasamio $
+* @version		$Id: admin.templates.html.php 12351 2009-06-24 13:48:00Z ian $
 * @package		Joomla
 * @subpackage	Templates
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -556,7 +556,7 @@
 	{
 		JRequest::setVar( 'hidemainmenu', 1 );
 
-		$css_path = $client->path . $filename;
+		$css_path = $client->path.DS.'templates'.DS.$template.DS.'css'.DS.$filename;
 
 ?>
 		<form action="index.php" method="post" name="adminForm">
@@ -617,4 +617,4 @@
 		</form>
 		<?php
 	}
-}
\ No hay ningún carácter de nueva línea al final del fichero
+}
diff -aruN --binary 11/administrator/components/com_translationsmanager/views/translations/tmpl/credits.php 12/administrator/components/com_translationsmanager/views/translations/tmpl/credits.php
--- 11/administrator/components/com_translationsmanager/views/translations/tmpl/credits.php	2008-02-25 16:13:36.000000000 +0100
+++ 12/administrator/components/com_translationsmanager/views/translations/tmpl/credits.php	2009-06-28 07:13:44.000000000 +0200
@@ -12,7 +12,7 @@
 
 // TOOLBAR
 // ! configure/preferences check will be deprecated
-JToolbarHelper::title( JText::_( 'Translation Manager' ), 'langmanager.png' );
+JToolbarHelper::title( JText::_( 'Translation Manager' ), 'langmanager_t.png' );
 JToolbarHelper::custom('languages','upload.png','upload_f2.png','Languages',false);
 JToolbarHelper::divider();
 ( is_callable( array('JToolbarHelper', 'preferences') ) ) ? JToolbarHelper::preferences('com_translationsmanager',400,600) : JToolbarHelper::configuration('com_translationsmanager',400,600);;
diff -aruN --binary 11/administrator/components/com_translationsmanager/views/translations/tmpl/edit.php 12/administrator/components/com_translationsmanager/views/translations/tmpl/edit.php
--- 11/administrator/components/com_translationsmanager/views/translations/tmpl/edit.php	2008-01-03 13:05:40.000000000 +0100
+++ 12/administrator/components/com_translationsmanager/views/translations/tmpl/edit.php	2009-06-28 07:13:50.000000000 +0200
@@ -22,7 +22,7 @@
 JRequest::setVar( 'hidemainmenu', 1 );
 $newprocess = JRequest::getVar('newprocess',0,'','integer' );
 $action = (($this->options['task']=='add')||($newprocess)) ? 'New' : 'Edit';
-JToolbarHelper::title(JText::_($action.' INI'),'langmanager.png');
+JToolbarHelper::title(JText::_($action.' INI'),'langmanager_t.png');
 JToolbarHelper::save();
 JToolbarHelper::apply();
 JToolbarHelper::cancel('cancel');
diff -aruN --binary 11/administrator/components/com_translationsmanager/views/translations/tmpl/editxml.php 12/administrator/components/com_translationsmanager/views/translations/tmpl/editxml.php
--- 11/administrator/components/com_translationsmanager/views/translations/tmpl/editxml.php	2008-02-25 16:13:50.000000000 +0100
+++ 12/administrator/components/com_translationsmanager/views/translations/tmpl/editxml.php	2009-06-28 07:14:06.000000000 +0200
@@ -13,7 +13,7 @@
 // TOOLBAR
 $newprocess = JRequest::getVar('newprocess',0,'','integer' );
 $action = (($this->options['task']=='addxml')||($newprocess)) ? 'New' : 'Edit';
-JToolbarHelper::title(JText::_($action.' XML'),'langmanager.png');
+JToolbarHelper::title(JText::_($action.' XML'),'langmanager_t.png');
 JToolbarHelper::save('savexml');
 JToolbarHelper::apply('applyxml');
 JToolbarHelper::cancel('cancelxml');
diff -aruN --binary 11/administrator/components/com_translationsmanager/views/translations/tmpl/files.php 12/administrator/components/com_translationsmanager/views/translations/tmpl/files.php
--- 11/administrator/components/com_translationsmanager/views/translations/tmpl/files.php	2008-01-04 11:10:26.000000000 +0100
+++ 12/administrator/components/com_translationsmanager/views/translations/tmpl/files.php	2009-06-28 07:13:36.000000000 +0200
@@ -12,7 +12,7 @@
 
 // TOOLBAR
 $langName = ' <small><small> : ' . $this->options['langName'] . '</small></small>';
-JToolbarHelper::title( JText::_( 'Language Files' ) . $langName, 'langmanager.png' );
+JToolbarHelper::title( JText::_( 'Language Files' ) . $langName, 'langmanager_t.png' );
 JToolbarHelper::custom('languages','upload.png','upload_f2.png','Languages',false);
 JToolbarHelper::divider();
 JToolbarHelper::unpublishList();
diff -aruN --binary 11/administrator/components/com_translationsmanager/views/translations/tmpl/languages.php 12/administrator/components/com_translationsmanager/views/translations/tmpl/languages.php
--- 11/administrator/components/com_translationsmanager/views/translations/tmpl/languages.php	2008-01-03 13:09:42.000000000 +0100
+++ 12/administrator/components/com_translationsmanager/views/translations/tmpl/languages.php	2009-06-28 07:08:58.000000000 +0200
@@ -11,7 +11,7 @@
 defined('_JEXEC') or die('Restricted access');
 
 // TOOLBAR
-JToolbarHelper::title( JText::_( 'Translation Manager' ), 'langmanager.png' );
+JToolbarHelper::title( JText::_( 'Translation Manager' ), 'langmanager_t.png' );
 JToolbarHelper::custom('files','edit','','View Files');
 JToolbarHelper::makeDefault();
 JToolbarHelper::archiveList('package','Package');
diff -aruN --binary 11/administrator/help/en-GB/screen.installer2.html 12/administrator/help/en-GB/screen.installer2.html
--- 11/administrator/help/en-GB/screen.installer2.html	2008-06-28 06:14:44.000000000 +0200
+++ 12/administrator/help/en-GB/screen.installer2.html	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
-<head>
-<title>Extension Manager: Uninstall</title>
-<link href="css/help.css" rel="stylesheet" type="text/css" />
-<meta name="copyright" content="Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." />
-<meta name="license" content="http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL" />
-</head>
-<body>
-<h1>Extension Manager: Uninstall</h1>
-<p>The local copy of this help file is no longer maintained.  Please use the <a href="http://help.joomla.org/index2.php?option=com_content&task=findkey&pop=1&keyref=screen.installer2.15">online version</a>.</p>
-</body>
-</html>
diff -aruN --binary 11/administrator/help/en-GB/screen.menumanager.copy.html 12/administrator/help/en-GB/screen.menumanager.copy.html
--- 11/administrator/help/en-GB/screen.menumanager.copy.html	2008-06-28 06:14:42.000000000 +0200
+++ 12/administrator/help/en-GB/screen.menumanager.copy.html	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
-<head>
-<title>Menu Manager: Copy Menu</title>
-<link href="css/help.css" rel="stylesheet" type="text/css" />
-<meta name="copyright" content="Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." />
-<meta name="license" content="http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL" />
-</head>
-<body>
-<h1>Menu Manager: Copy Menu</h1>
-<p>The local copy of this help file is no longer maintained.  Please use the <a href="http://help.joomla.org/index2.php?option=com_content&task=findkey&pop=1&keyref=screen.menumanager.copy.15">online version</a>.</p>
-</body>
-</html>
diff -aruN --binary 11/administrator/help/en-GB/screen.menus.copy.html 12/administrator/help/en-GB/screen.menus.copy.html
--- 11/administrator/help/en-GB/screen.menus.copy.html	2008-06-28 06:14:44.000000000 +0200
+++ 12/administrator/help/en-GB/screen.menus.copy.html	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
-<head>
-<title>Menus: Copy Menu Items</title>
-<link href="css/help.css" rel="stylesheet" type="text/css" />
-<meta name="copyright" content="Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." />
-<meta name="license" content="http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL" />
-</head>
-<body>
-<h1>Menus: Copy Menu Items</h1>
-<p>The local copy of this help file is no longer maintained.  Please use the <a href="http://help.joomla.org/index2.php?option=com_content&task=findkey&pop=1&keyref=screen.menus.copy.15">online version</a>.</p>
-</body>
-</html>
diff -aruN --binary 11/administrator/help/en-GB/screen.menus.move.html 12/administrator/help/en-GB/screen.menus.move.html
--- 11/administrator/help/en-GB/screen.menus.move.html	2008-06-28 06:14:44.000000000 +0200
+++ 12/administrator/help/en-GB/screen.menus.move.html	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
-<head>
-<title>Menus: Move Menu Items</title>
-<link href="css/help.css" rel="stylesheet" type="text/css" />
-<meta name="copyright" content="Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." />
-<meta name="license" content="http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL" />
-</head>
-<body>
-<h1>Menus: Move Menu Items</h1>
-<p>The local copy of this help file is no longer maintained.  Please use the <a href="http://help.joomla.org/index2.php?option=com_content&task=findkey&pop=1&keyref=screen.menus.move.15">online version</a>.</p>
-</body>
-</html>
diff -aruN --binary 11/administrator/help/en-GB/screen.menus.type.html 12/administrator/help/en-GB/screen.menus.type.html
--- 11/administrator/help/en-GB/screen.menus.type.html	2008-06-28 06:14:44.000000000 +0200
+++ 12/administrator/help/en-GB/screen.menus.type.html	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
-<head>
-<title>Menus: New Menu Item</title>
-<link href="css/help.css" rel="stylesheet" type="text/css" />
-<meta name="copyright" content="Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." />
-<meta name="license" content="http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL" />
-</head>
-<body>
-<h1>Menus: New Menu Item</h1>
-<p>The local copy of this help file is no longer maintained.  Please use the <a href="http://help.joomla.org/index2.php?option=com_content&task=findkey&pop=1&keyref=screen.menus.type.15">online version</a>.</p>
-</body>
-</html>
diff -aruN --binary 11/administrator/help/en-GB/screen.messages.conf.html 12/administrator/help/en-GB/screen.messages.conf.html
--- 11/administrator/help/en-GB/screen.messages.conf.html	2008-06-28 06:14:44.000000000 +0200
+++ 12/administrator/help/en-GB/screen.messages.conf.html	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
-<head>
-<title>Messaging Configuration</title>
-<link href="css/help.css" rel="stylesheet" type="text/css" />
-<meta name="copyright" content="Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." />
-<meta name="license" content="http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL" />
-</head>
-<body>
-<h1>Messaging Configuration</h1>
-<p>The local copy of this help file is no longer maintained.  Please use the <a href="http://help.joomla.org/index2.php?option=com_content&task=findkey&pop=1&keyref=screen.messages.conf.15">online version</a>.</p>
-</body>
-</html>
diff -aruN --binary 11/administrator/includes/framework.php 12/administrator/includes/framework.php
--- 11/administrator/includes/framework.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/administrator/includes/framework.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: framework.php 11992 2009-06-03 03:21:10Z ian $
+* @version		$Id: framework.php 12389 2009-07-01 00:34:45Z ian $
 * @package		Joomla
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_admin.ini 12/administrator/language/ca-ES/ca-ES.com_admin.ini
--- 11/administrator/language/ca-ES/ca-ES.com_admin.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_admin.ini	2009-03-13 23:39:58.000000000 +0100
@@ -0,0 +1,59 @@
+# $Id: ca-ES.com_admin.ini 11613 2009-03-13 22:35:01Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009 Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CACHE DIRECTORY=Directori de la memòria cau
+CHANGELOG=Registre de canvis
+CLEAR RESULTS=Neteja els resultats
+CONFIGURATION FILE=Fitxer de configuració
+CONTROL PANEL=Tauler de control
+CREDITS=Crèdits
+DATABASE COLLATION=Ordre alfabètic de la base de dades
+DATABASE VERSION=Versió de la base de dades
+DESCDIRWRITABLE=Perquè totes les funcions i característiques del Joomla! funcionin correctament, s'ha de poder escriure a tots els directoris següents:
+DIRECTORY=Directori
+DISABLED FUNCTIONS=Funcions inhabilitades
+DISPLAY ERRORS=Mostra els errors (Display errors)
+FILE UPLOADS=Càrregues de fitxers (File uploads)
+GLOSSARY=Glossari
+ICONV AVAILABLE=Iconv disponible
+INDEX=Índex
+INFORMATION=Informació
+LATEST VERSION CHECK=Cerca la darrera versió
+LICENSE=Llicència
+LOG DIRECTORY=Directori del registre
+MAGIC QUOTES=Cometes màgiques (Magic Quotes)
+MBSTRING ENABLED=Mbstring habilitat
+JOOMLA! VERSION=Versió del Joomla!
+OPEN BASEDIR=Directori base d'obertura (Open basedir)
+OPEN IN NEW WINDOW=Obre en una nova finestra
+OUTPUT BUFFERING=Emmagatzematge a la memòria intermèdia de sortida (Output Buffering)
+PHP BUILT ON=PHP muntat a
+PHP INFO=Dades del PHP (PHP Info)
+PHP INFORMATION=Informació del PHP
+PHP SETTINGS=Configuració del PHP
+PHP VERSION=Versió del PHP
+REGISTER GLOBALS=Registra els globals (Register Globals)
+RELEVANT PHP SETTINGS=Paràmetres del PHP rellevants
+SAFE MODE=Mode segur (Safe Mode)
+SESSION AUTO START=Inici automàtic de la sessió (Session Auto Start)
+SESSION SAVE PATH=Camí on desar la sessió (Session Save Path)
+SETTING=Paràmetre
+SHORT OPEN TAGS=Etiquetes d'obertura curtes (Short Open Tags)
+SITE PREVIEW=Previsualització del lloc
+STATUS=Estat
+SUPPORT=Suport
+SYSTEM INFO=Dades del sistema
+SYSTEM INFORMATION=Informació del sistema
+TEMP DIRECTORY=Directori temporal
+USER AGENT=Agent de l'usuari
+VALUE=Valor
+WEB SERVER=Servidor web
+WEBSERVER TO PHP INTERFACE=Interfície del servidor web al PHP
+WYSIWYG EDITOR=Editor WYSIWYG
+XML ENABLED=XML habilitat
+ZLIB ENABLED=Zlib habilitat
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_banners.ini 12/administrator/language/ca-ES/ca-ES.com_banners.ini
--- 11/administrator/language/ca-ES/ca-ES.com_banners.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_banners.ini	2008-12-31 19:07:04.000000000 +0100
@@ -0,0 +1,61 @@
+# $Id: ca-ES.com_banners.ini 10554 2008-07-28 06:29:09Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BANNER=Bàner
+BANNER CLIENT=Client del bàner
+BANNER CLIENT MANAGER=Gestor de clients de bàners
+BANNER IMAGE=Imatge del bàner
+BANNER MANAGER=Gestor de bàners
+BANNER NAME=Nom del bàner
+BANNER IMAGE SELECTOR=Selector d'imatges del bàner
+CLEAR RESULTS=Neteja els resultats
+CLICK URL=URL del clic
+CLICKS=Clics
+CLIENT=Client
+CLIENT NAME=Nom del Client
+CLIENTS=Clients
+CONTACT EMAIL=Correu electrònic del contacte
+CONTACT NAME=Nom del contacte
+CUSTOM BANNER CODE=Codi del bàner personalitzat
+DESCRIPTION/NOTES=Descripció/Notes
+EXTRA INFO=Informació extra
+HEIGHT=Alçada
+IMPRESSIONS=Impressions
+IMPRESSIONS LEFT=Impressions restants
+IMPRESSIONS MADE=Impressions realitzades
+IMPRESSIONS PURCHASED=Impressions comprades
+LATEST VERSION CHECK=Cerca la darrera versió
+NO. OF ACTIVE BANNERS=Nombre de bàners
+PLEASE FILL IN THE CLIENT NAME.=Si us plau introduïu el nom del client.
+PLEASE FILL IN THE CONTACT EMAIL.=Si us plau introduïu el correu electrònic del contacte.
+PLEASE FILL IN THE CONTACT NAME.=Si us plau introduïu el nom del contacte.
+PLEASE FILL IN THE URL FOR THE BANNER.=Si us plau introduïu la URL per al bàner.
+PLEASE PROVIDE A VALID CONTACT EMAIL.=Si us plau proporcioneu una adreça de correu del contacte vàlida.
+PLEASE SELECT A CLIENT.=Si us plau seleccioneu un client.
+PLEASE SELECT AN IMAGE.=Si us plau seleccioneu una imatge.
+RESET BANNER CLICKS=Reinicialitza els clics del bàner
+RESET CLICKS=Reinicialitza els clics
+SELECT CLIENT=Seleccioneu un client
+SHOW BANNER=Mostra el bàner
+STICKY=Permanent
+TAGS=Etiquetes (Tags)
+TAG PREFIX=Prefix de l'etiqueta
+THE CLIENT=El Client
+THIS COMPONENT MANAGES BANNERS AND BANNER CLIENTS=Aquest component gestiona els bàners i els clients dels bàners.
+TAG PREFIX LABEL=Prefix de l'etiqueta
+TAG PREFIX DESC=Quan concordin etiquetes (Tags), només cerca etiquetes amb aquest prefix (millora el rendiment).
+TRACK BANNER IMPRESSION DESC=Registra les impressions (visualitzacions) dels bàners sobre una base diària.
+TRACK BANNER IMPRESSION LABEL=Seguiment de les impressions dels bàners
+TRACK BANNER CLICK DESC=Registra el nombre de clics als bàners sobre una base diària.
+TRACK BANNER CLICK LABEL=Seguiment dels clics als bàners
+UNLIMITED=Il·limitat
+WARNCANNOTDELCLIENTBANNER=Actualment no es pot eliminar aquest client ja que té un bàner actiu.
+WARNEDITEDBYPERSON=El client [ %s ] està actualment sent editat per una altra persona.
+YES=Sí
+YOU MUST PROVIDE A BANNER NAME.=Heu de proporcionar un nom per al bàner.
+FILTER RESET=Reinicialitza
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_banners.menu.ini 12/administrator/language/ca-ES/ca-ES.com_banners.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_banners.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_banners.menu.ini	2008-12-31 19:08:00.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.com_banners.menu.ini 10388 2008-07-28 06:30:00Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COM_BANNERS=Bàner
+COM_BANNERS.BANNERS=Bàners
+COM_BANNERS.CLIENTS=Clients
+COM_BANNERS.CATEGORIES=Categories
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_cache.ini 12/administrator/language/ca-ES/ca-ES.com_cache.ini
--- 11/administrator/language/ca-ES/ca-ES.com_cache.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_cache.ini	2009-01-10 17:54:48.000000000 +0100
@@ -0,0 +1,24 @@
+# $Id: ca-ES.com_cache.ini 11403 2009-01-10 17:54:22Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009 Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CACHE MANAGER - CLEAN CACHE ADMIN=Gestor de la memòria cau - Buida la cau de l'administració
+CACHE MANAGER - PURGE CACHE ADMIN=Gestor de la memòria cau - Purga la cau de l'administració
+PURGE EXPIRED=Purga els vençuts
+PURGE EXPIRED ITEMS=Purga els elements vençuts
+WARNING: THIS CAN BE RESOURCE INTENSIVE ON SITES WITH LARGE NUMBER OF ITEMS!=AVÍS: Això pot suposar un ús intensiu de recursos a llocs amb un elevat nombre d'elements!
+CLICK ON THE PURGE EXPIRED ICON IN THE TOOLBAR TO DELETE ALL EXPIRED CACHE FILES. NOTE: CACHE FILES THAT ARE STILL CURRENT WILL NOT BE DELETED.=Feu clic a la icona Purga els vençuts de la barra d'eines per a eliminar els fitxers de cau que hagin vençut. Nota: No s'eliminaran els fitxers de cau que són encara en vigor.
+EXPIRED ITEMS HAVE BEEN PURGED=S'han purgat els elements vençuts
+SUCCESS!=Èxit!
+CACHE DIRECTORY IS UNWRITABLE=No es pot escriure al directori de la memòria cau.
+CACHE DIRECTORY IS WRITABLE=Es pot escriure al directori de la memòria cau.
+NUM=#
+CACHE GROUP=Grup de la memòria cau
+NUMBER OF FILES=Nombre de fitxers
+SIZE=Mida
+WRITABLE=Es pot escriure
+UNWRITABLE=No es pot escriure
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_categories.ini 12/administrator/language/ca-ES/ca-ES.com_categories.ini
--- 11/administrator/language/ca-ES/ca-ES.com_categories.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_categories.ini	2009-03-13 23:40:22.000000000 +0100
@@ -0,0 +1,93 @@
+# $Id: ca-ES.com_categories.ini 11622 2009-03-13 22:36:11Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A LONG NAME TO BE DISPLAYED IN HEADINGS=Un nom llarg per mostrar als encapçalaments.
+ACTIVE=Actiu
+ALIAS=Àlies
+ALL CATEGORIES=Totes les categories
+ALL CONTENT=Tots els continguts
+ALL CONTENT:=Tots els continguts:
+AND ALL THE ITEMS WITHIN THE CATEGORY (ALSO LISTED)=i tots els ítems de la categoria (també els llistats)
+ARTICLES BEING MOVED=Articles que es mouen
+ARTICLES BEING COPIED=Articles que es copien
+BACK TO=Enrere
+CATEGORIES ALREADY IN=Les categories %s ja són a %s
+CATEGORIES BEING COPIED=Categories que es copien
+CATEGORIES BEING MOVED=Categories que es mouen
+CATEGORIES COPIED TO=%s categories copiades a %s
+CATEGORIES MOVED TO=Categories mogudes a %s
+CATEGORY ALREADY IN=La categoria %s ja és a %s
+CATEGORY BLOG=Bloc de la categoria
+CATEGORY BLOG ARCHIVE=Arxiu del bloc de la categoria
+CATEGORY DETAILS=Detalls de la categoria
+CATEGORY ID=ID de la categoria
+CATEGORY INFORMATION=Informació de la categoria
+CATEGORY MANAGER=Gestor de categories
+CATEGORY MUST HAVE A NAME=La categoria ha de tenir un nom
+CATEGORY MUST HAVE A TITLE=La categoria ha de tenir un títol
+CATEGORY SAVED=Categoria desada
+CATEGORY TABLE=Taula de categories
+CATEGORY(S)=Categoria -es
+CATSUCCESSCREATED=%s ( %s ) al menú: %s creat amb èxit
+CHANGES TO CATEGORY SAVED=S'han desat els canvis a la categoria
+COMPONENT:=Component: %s
+CONTACT=Contacte
+CONTACT CATEGORY TABLE=Taula de categories de contactes
+CONTACTS CATEGORIES=Categories de contactes
+CONTACT_DETAILS=Detalls del contacte
+CONTACTS MANAGER=Gestor de contactes
+CONTENT CATEGORY ARCHIVE BLOG=Bloc dels continguts arxivats de la categoria
+CONTENT CATEGORY BLOG=Bloc dels continguts de la categoria
+CONTENT CATEGORY BLOG ARCHIVE=Arxiu del bloc del continguts de la categoria
+CONTENT CATEGORY TABLE=Taula dels continguts de la categoria
+CONTENT:=Contingut: %s
+CONTENT: ALL=Contingut: tot
+COPY CATEGORY=Copia la categoria
+COPY OF=Còpia de %s
+COPY TO SECTION=Copia a la secció
+DESCNEWITEMSLAST=Les noves categories van per defecte a la darrera posició. L'ordre es pot canviar després de desar la categoria.
+IMAGE POSITION=Posició de la imatge
+MOVE CATEGORY=Mou la categoria
+MOVE TO SECTION=Mou a la secció
+N/A=No disponible
+NEW CATEGORY=Nova categoria
+NEWSFEEDS=Canals d'informació
+NEWS FEEDS CATEGORIES=Categories dels canals d'informació
+NEWS FEEDS MANAGER=Gestor dels canals d'informació
+NEWSFEED CATEGORY TABLE=Taula de categories dels canals d'informació
+NOTE: IF SAME SECTION=NOTA: Si la mateixa secció és seleccionada es crearà una nova "Còpia de <em>nom de categoria</em>" en aquesta secció.
+ORDER BY=Ordre
+ORDERING=Ordre de la categoria
+PLEASE ENTER A NAME FOR THIS MENU ITEM=Si us plau introduïu un nom per a aquest element de menú
+PLEASE SELECT A MENU TYPE=Si us plau seleccioneu un tipus de menú
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select a Category from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau seleccioneu una categoria de la llista per a %s
+PUBLISH ITEM=Publica aquesta categoria
+SELECT A CATEGORY TO=Seleccioneu una categoria per a
+SELECT A CATEGORY TO DELETE=Seleccioneu una categoria per a eliminar
+SELECT MENU TYPE=Seleccioneu un tipus de menú
+SELECT AN ITEM TO MOVE=Seleccineu una categoria per a moure
+SELECT TYPE=Seleccioneu un tipus
+SELECT A SECTION=Seleccioneu una secció
+THE CATEGORY=La categoria
+THIS WILL MOVE THE CATEGORIES LISTED=Això mourà les categories llistades
+THERE ARE NO CATEGORIES=No hi ha categories
+TO THE SELECTED SECTION=a la secció seleccionada
+UNCATEGORIZED=Sense categoria
+UNPUBLISH ITEM=No publiquis aquesta categoria
+WARNNOTREMOVEDRECORDS=Resulta impossible eliminar la(les) categoria(es): %s perquè s'hi troben articles. Actualment pot haver-hi articles dintre del gestor de la paperera d'articles que primer hauríeu d'eliminar.
+WEB LINKS CATEGORIES=Categories d'enllaços web
+WEB LINKS MANAGER=Gestor dels enllaços web
+WEBLINK CATEGORY TABLE=Taula de categories d'enllaços web
+WARNSECTION=Necessiteu tenir almenys una secció abans que pugueu crear una categoria.
+WEBLINKS=Enllaços web
+WILL CREATE NEW MENU ITEM IN MENU SELECTED=Això crearà un nou element al menú seleccionat
+YOU MUST CREATE A CATEGORY FIRST.=Primer heu de crear una categoria.
+PLEASE SELECT A SECTION FROM THE LIST=Si us plau trieu una secció de la llista.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_checkin.ini 12/administrator/language/ca-ES/ca-ES.com_checkin.ini
--- 11/administrator/language/ca-ES/ca-ES.com_checkin.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_checkin.ini	2008-12-31 19:10:04.000000000 +0100
@@ -0,0 +1,17 @@
+# $Id: ca-ES.com_checkin.ini 10388 2008-07-28 06:43:31Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CHECKED-IN=Verificat
+CHECKED OUT ITEMS HAVE NOW BEEN ALL CHECKED IN=Tots els ítems no verificats han estat ara verificats.
+CHECKING TABLE=Verificant la taula
+DATABASE TABLE=Taula de la base de dades
+DESCITEMCHECKEDIN=Tots els ítems no verificats han estat ara verificats.
+GLOBAL CHECK-IN=Verificació global
+ITEMS=Ítems
+NUM OF ITEMS=Nombre d'ítems
+TICK=Marca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_config.ini 12/administrator/language/ca-ES/ca-ES.com_config.ini
--- 11/administrator/language/ca-ES/ca-ES.com_config.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_config.ini	2009-06-26 08:51:58.000000000 +0200
@@ -0,0 +1,224 @@
+# $Id: ca-ES.com_config.ini 11784 2009-06-26 08:51:57 dverger ~0 $
+# author Joomla! Catalan Translation
+# copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# license Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+
+# Note : All ini files need to be saved as UTF-8
+
+ADD SUFFIX TO URLS=Afegeix sufix als URL
+ADMINISTRATOR ONLY=Només l'administració
+ALLOW USER REGISTRATION=Permet el registre d'usuaris
+ALLOWED_USERGROUP=Nivell mínim d'usuari per al gestor multimèdia
+ALLOWED_USERGROUP_DESC=Seleccioneu el més baix nivell d'usuari que podrà utilitzar el gestor multimèdia a la part pública. Els usuaris d'aquest grup i de grups superiors podran accedir al gestor multimèdia.
+ATOM=Àtom
+AUTHOR NAMES=Nom de l'autor
+CACHE=Memòria cau
+CACHE FOLDER=Carpeta de la memòria cau
+CACHE HANDLER=Gestor de la memòria cau
+CACHE SETTINGS=Configuració de la memòria cau
+CACHE TIME=Temps de la memòria cau
+CACHING=Utilitza la memòria cau
+COMPRESS BUFFERED OUTPUT IF SUPPORTED=Comprimeix la memòria intermèdia de sortida si és possible.
+COULD NOT MAKE CONFIGURATION.PHP WRITABLE=No es pot donar permís d'escriptura al configuration.php.
+CREATED DATE AND TIME=Data i hora de creació
+DATABASE=Base de dades
+DATABASE PREFIX=Prefix de la base de dades
+DATABASE SETTINGS=Configuració de la base de dades
+DATABASE TYPE=Tipus de la base de dades
+DEBUG=Depuració
+DEBUG SYSTEM=Depura el sistema
+DEBUG LANGUAGE=Depura l'idioma
+DEBUG SETTINGS=Configuració de la depuració
+DEFAULT WYSIWYG EDITOR=Editor WYSIWYG per defecte
+DESCFTP=Per actualitzar el fitxer configuration.php, el Joomla! segurament necessitarà els detalls del vostre compte FTP. Si us plau introduïu-los als camps a sota.
+DESCFTPTITLE=Detalls d'entrada a l'FTP
+ENABLE FLASH UPLOADER=Habilita el carregador Flash
+ENABLE FLASH UPLOADER DESC=Seleccioneu si utilitzar o no el carregador Flash per a penjar fitxers al gestor multimèdia
+EDIT PREFERENCES=Edita les preferències
+EMAIL ICON=Icona de correu electrònic
+ENABLE FTP=Habilita l'FTP
+ENABLE DEBUGGING=Habilita la depuració
+ENABLE LOGGING=Habilita el registre d'esdeveniments
+ENABLE WEB SERVICES=Habilita els serveis web
+ENTIRE SITE=Tot el lloc
+ERROR REPORTING=Informe d'errors
+ERRORCONFIGFILE=S'ha produït un error! No es pot obrir el fitxer configuration.php per escriure-hi!
+FEED EMAIL=Correu electrònic del canal
+FEEDLIMIT=Límit del canal
+FEED LENGTH=Longitud del canal
+FOR EACH ARTICLE, SHOW=Per a cada article, mostra
+FORCE SSL=Força l'SSL
+FROM NAME=Nom del remitent
+FRONT-END USER PARAMS=Paràmetres per als usuaris del lloc públic
+FTP=FTP
+FTP HOST=Amfitrió de l'FTP
+FTP PASSWORD=Contrasenya de l'FTP
+FTP PATH=Camí de l'FTP
+FTP PORT=Port de l'FTP
+FTP ROOT=Arrel de l'FTP
+FTP SETTINGS=Configuració de l'FTP
+FTP USERNAME=Nom d'usuari de l'FTP
+FULL TEXT=Text complet
+GLOBAL CONFIGURATION=Configuració global
+GLOBAL SITE META DESCRIPTION=Metadescripció del lloc (Meta Description)
+GLOBAL SITE META KEYWORDS=Paraules clau del lloc (Meta Keywords)
+GZIP PAGE COMPRESSION=Compressió GZIP de pàgines
+HELP SERVER=Servidor de l'ajuda
+HELPREFRESH ERROR FETCH=No s'ha pogut obtenir la llista actual de llocs d'ajuda del servidor remot
+HELPREFRESH ERROR STORE=No s'ha pogut desar la nova llista de llocs d'ajuda
+HELPREFRESH SUCCESS=S'ha actualitzat la llista de llocs d'ajuda
+HOST=Amfitrió
+HOSTNAME=Nom de l'amfitrió
+INTRO TEXT=Text d'introducció
+ITEM RATING/VOTING=Puntuació/Valoració dels articles
+JCLIENTHELPER::SETCREDENTIALSFROMREQUEST FAILED=No es pot connectar al servidor amb les credencials donades.
+LEGAL EXTENSIONS LABEL=Extensions permeses (tipus de fitxers)
+LEGAL EXTENSIONS DESC=Les extensions (tipus de fitxers) dels fitxers que permeteu penjar (separades per comes).
+LEGAL IMAGE EXTENSIONS LABEL=Extensions d'imatge vàlides (tipus de fitxers)
+LEGAL IMAGE EXTENSIONS DESC=Extensions d'imatge (tipus de fitxers) que permeteu penjar (separades per comes). S'utilitzen per a comprovar encapçalaments d'imatge vàlids.
+RESTRICT UPLOADS=Restringeix les càrregues
+RESTRICT UPLOADS DESC=Restringeix les càrregues per a usuaris amb permisos inferiors a gestor (manager) si Fileinfo o MIME Magic no es troben instal·lats
+CHECK MIME=Comprova tipus MIME
+CHECK MIME DESC=Utilitza MIME Magic o Fileinfo per mirar de verificar els fitxers. Deshabiliteu-ho si rebeu errors de tipus MIME invàlid.
+IGNORED EXTENSIONS LABEL=Extensions ignorades
+IGNORED EXTENSIONS DESC=Extensions de fitxer ignorades per a comprovació de tipus MIME i càrregues restringides
+LEGAL MIME TYPES LABEL=Tipus MIME permesos
+LEGAL MIME TYPES DESC=Una llista separada per comes dels tipus MIME permesos per penjar
+ILLEGAL MIME TYPES=Tipus MIME no permesos
+ILLEGAL MIME TYPES DESC=Una llista separada per comes dels tipus MIME no permesos per penjar (llista negra)
+LINKED TITLES=Títols hipertextuals
+LOCALE SETTINGS=Configuració de la localització
+MAIL FROM=Correu des de
+MAIL SETTINGS=Configuració del correu
+MAILER=Programa de correu
+MAXIMUM=Màxim
+MAXIMUM SIZE LABEL=Mida màxima (en bytes)
+MAXIMUM SIZE DESC=La mida màxima per a una càrrega (en bytes). Introduïu zero per a il·limitat.
+MEDIA SETTINGS=Configuració multimèdia
+MEMCACHE=Memòria cau
+MEMCACHE PERSISTENT=Memòria cau persistent
+MEMCACHE COMPRESSION=Compressió de la memòria cau
+MEMCACHE SERVER=Servidor de la memòria cau
+METADATA=Metadades
+METADATA SETTINGS=Configuració de les metadades
+MODIFIED DATE AND TIME=Data i hora de modificació
+NEW USER ACCOUNT ACTIVATION=Activació del compte per a usuaris nous
+NEW USER REGISTRATION TYPE=Tipus de registre per a usuaris nous
+NONE=Cap
+OFFLINE MESSAGE=Missatge de fora de línia
+PATH TO LOG-FOLDER=Camí a la carpeta del registre
+PATH TO TEMP-FOLDER=Camí a la carpeta temporal
+PATH TO IMAGE FOLDER=Camí a la carpeta d'imatges
+PATH TO FILE FOLDER=Camí a la carpeta de multimèdia
+PDF ICON=Icona PDF
+PHP MAIL FUNCTION=Funció de correu del PHP
+PORT=Port
+READ MORE LINK=Enllaç Llegeix-ne més...
+REFRESH=Refresca
+RSS=RSS
+SEARCH ENGINE FRIENDLY URLS=URL amigables amb els motors de cerca (SEF)
+SEARCH ENGINE OPTIMIZATION SETTINGS=Seleccioneu si optimitzar o no els URL per als motors de cerca.
+SECRET WORD=Paraula secreta
+SENDMAIL=Sendmail
+SENDMAIL PATH=Camí al sendmail
+SEO=SEO
+SEO SETTINGS=Configuració SEO
+SERVER=Servidor
+SERVER SETTINGS=Configuració del servidor
+SESSION HANDLER=Gestor de la sessió
+SESSION LIFETIME=Temps de vida de la sessió
+SESSION SETTINGS=Configuració de la sessió
+SHOW AUTHOR META TAG=Mostra l'etiqueta meta de l'autor
+SHOW THE MOST RECENT=Mostra el més recent
+SHOW TITLE META TAG=Mostra l'etiqueta meta del títol
+SHOW UNAUTHORIZED LINKS=Mostra els enllaços no autoritzats
+SIMPLE=Simple
+SITE NAME=Nom del lloc
+SITE OFFLINE=Lloc fora de línia
+SITE EMAIL=Correu electrònic del lloc
+SITE SETTINGS=Configuració del lloc
+SMTP AUTH=Autorització de l'SMTP
+SMTP HOST=Amfitrió de l'SMTP
+SMTP PASS=Contrasenya de l'SMTP
+SMTP PORT=SMTP Port
+SMTP SERVER=Servidor de l'SMTP
+SMTP SECURITY=SMTP Security
+SMTP USER=Usuari de l'SMTP
+STATISTICS=Estadístiques
+SYSTEM=Sistema
+SYSTEM DEFAULT=Valor per defecte del sistema
+SYSTEM SETTINGS=Configuració del sistema
+THE CONFIGURATION DETAILS HAVE BEEN UPDATED=S'han desat els detalls de la configuració global
+TIPALLOWUSERREG=Si trieu 'Sí', els nous usuaris es podran auto-registrar.
+TIPAUTOLOGOUTTIMEOF=Desconnecta automàticament un usuari després d'aquests minuts d'inactivitat. No ho poseu massa alt.
+TIPCACHETIME=El temps màxim, en minuts, que s'emmagatzemarà un fitxer de memòria cau abans no es refresqui.
+TIPCACHE=Selecciona si la memòria cau està habilitada o no.
+TIPCACHEHANDLER=El mecanisme de memòria cau per defecte està basat en fitxers.
+TIPDATETIMEDISPLAY=La data i hora actuals es mostraran així
+TIPDATABASEHOSTNAME=El nom d'amfitrió per a la base de dades introduït al procés d'instal·lació. No ho editeu si no és absolutament necessari (p.ex. en cas de transferència de la base de dades a un nou proveïdor d'allotjament).
+TIPDATABASENAME=El nom de la base de dades introduït al procés d'instal·lació. No ho editeu si no és absolutament necessari (p.ex. en cas de transferència de la base de dades a un nou proveïdor d'allotjament).
+TIPDATABASEPREFIX=El prefix utilitzat per a la base de dades introduït al procés d'instal·lació. No ho editeu si no és absolutament necessari (p.ex. en cas de transferència de la base de dades a un nou proveïdor d'allotjament).
+TIPDTATABASETYPE=El tipus de la base de dades introduït al procés d'instal·lació. No ho editeu excepte en cas que hagueu de migrar a un tipus distint de base de dades, tal vegada a causa de canviar de proveïdor d'allotjament.
+TIPDATABASEUSERNAME=El nom d'usuari per accedir a la base de dades introduït al procés d'instal·lació. No ho editeu si no és absolutament necessari (p.ex. en cas de transferència de la base de dades a un nou proveïdor d'allotjament).
+TIPDEBUGGINGINFO=Si ho habiliteu, la informació de diagnòstic, traducció d'idioma i errors SQL (si n'hi ha) seran mostrats. La informació es mostrarà al peu de cada pàgina que mireu tant al lloc públic com al d'administració del Joomla! No és recomanable deixar activat el mode de depuració a llocs web que estiguin en producció.
+TIPDEBUGLANGUAGE=Seleccioneu si es mostraran els indicadors de depuració (<bold>&bull;...&bull;</bold>) o (<bold>?...?</bold>) per als fitxers d'idioma del Joomla!. <em>Depura l'idioma</em> funcionarà encara que <em>Depura el sistema</em> no estigui actiu, però no rebreu detalls addicionals que vos ajudarien a corregir els errors.
+TIPDEFWYSIWYG=Seleccioneu l'editor WYSIWYG per defecte per al vostre lloc. Els usuaris registrats podran canviar la seva preferència als seus Detalls Personals si ho permeteu.
+TIPENABLEWEBSERVICES=Habilita la capacitat de la instal·lació per fer RPC (Crides a Procediment Remot) utilitzant HTTP com a mitjà de transport i XML com a llenguatge de codificació. Aquesta funció és necessària per assegurar que moltes extensions de tercers funcionin. El valor per defecte és No.
+TIPERRORREPORTING=Seleccioneu el nivell apropiat d'informe de la llista desplegable. Vegeu la pantalla d'ajuda per a més detalls.
+TIPFEEDEMAIL=Els canals d'informació RSS i Atom inclouen l'adreça electrònica de l'autor. Seleccioneu Correu electrònic de l'autor per a utilitzar cadascun dels correus electrònics d'autor (des del Gestor d'usuaris) al canal d'informació. Seleccioneu Correu electrònic del lloc per a incloure l'adreça electrònica 'Correu des de' del lloc per a cada article.
+TIPFROMNAME=Per defecte aquest camp pren per valor el nom del lloc introduït durant la instal·lació.
+TIPFRONTENDUSERPARAMS=Si trieu 'Mostra', els usuaris podran triar les seves preferències d'idioma, editor i lloc d'ajuda a la seva pantalla de detalls quan tinguin sessió iniciada al lloc públic.
+TIPENABLEFTP=Habilita la funcionalitat FTP integrada del Joomla! en comptes de la funcionalitat normal de càrregues del Joomla!
+TIPFORCESSL=Obliga que l'accés al lloc es faci sempre sota SSL (https) per a les àrees seleccionades. No podreu accedir a les àrees seleccionades si no és via ssl. Per a utilitzar aquesta opció heu de tenir habilitat l'SSL al servidor.
+TIPFTPHOST=Introduïu el nom de l'amfitrió del vostre servidor FTP
+TIPFTPPASSWORD=Introduïu la vostra contrasenya FTP
+TIPFTPPORT=Introduïu el port on s'ha d'accedir a l'FTP. Per defecte és el port 21.
+TIPFTPROOT=El camí al directori arrel del servidor FTP. El directori arrel és el directori base al qual el servidor FTP hi té accés.
+TIPFTPUSERNAME=El nom d'usuari utilitzat per a accedir al servidor FTP.
+TIPGLOBALSITEMETATADESC=Introduïu una descripció del lloc web en general per ser utilitzada pels motors de cerca. Normalment amb 20 paraules n'hi ha prou.
+TIPGLOBALSITEMETAKEY=Introduïu les paraules clau i frases que millor descriuen el vostre lloc web. Separeu les paraules clau amb comes i agrupeu les frases amb cometes simples.
+TIPHELPSERVER=Seleccioneu el nom del servidor d'ajuda que el sistema utilitzarà per rebre les pantalles d'ajuda. Trieu Local per a utilitzar els fitxers que venien amb la instal·lació del Joomla! Feu clic al botó Reinicialitza per a restaurar el servidor d'ajuda per defecte. Avís: Prémer el botó Reinicialitza eliminarà qualsevol servidor d'ajuda que hàgiu afegit.
+TIPIFSETTOSHOWAUTHOR=Si trieu 'Mostra' es mostrarà el nom de l'autor. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'article.
+TIPIFSETTOSHOWDATETIMECREATED=Si trieu 'Mostra' es mostrarà la data i hora de creació de l'article. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'article.
+TIPIFSETTOSHOWDATETIMEMODIFIED=Si trieu 'Mostra' es mostrarà la data de l'última modificació de l'article. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'article.
+TIPIFSETTOSHOWHITS=Si trieu 'Mostra' es mostrarà el nombre de visites d'un article en particular. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'article.
+TIPIFSETTOSHOWREADMORELINK=Si trieu 'Mostra' es mostrarà l'enllaç "Llegeix-ne més..." si proporcioneu text principal a l'article.
+TIPIFSETTOSHOWVOTING=Si trieu 'Mostra' s'habilitarà un sistema de votació per als articles.
+TIPIFYESTITLECONTENTITEMS=Si trieu 'Sí' el títol dels articles serà enllaçat al propi article.
+TIPIFYESUSERMAILEDLINK=Si trieu 'Sí', s'enviarà un correu electrònic a l'usuari amb un enllaç per activar el seu compte abans que pugui entrar.
+TIPIFYOURSITEISOFFLINE=Un missatge que es mostra al lloc públic si el lloc està fora de línia.
+TIPIMAGEFOLDERWARN=Podeu crear una nova carpeta per a utilitzar-la amb el gestor d'imatges i introduir aquí el camí a tal carpeta. Si voleu accedir aquesta carpeta des del gestor multimèdia, empreu el mateix nom de carpeta o feu-la subcarpeta de la carpeta del gestor multimèdia. Avís: No elimineu ni canvieu la carpeta images/stories existent ja que és emprada per l'aplicació.
+TIPFILEFOLDERWARN=Podeu crear una nova carpeta per a utilitzar-la amb el gestor multimèdia i introduir aquí el camí a tal carpeta. Avís: No elimineu ni canvieu la carpeta images existent. Les carpetes images/banners, images/M_images, images/smilies i images/stories són emprades per l'aplicació.
+TIPLOGFOLDER=Per al registre d'esdeveniments del Joomla!. Si us plau indiqueu una carpeta.
+TIPMAILER=Seleccioneu quin programa de correu voleu utilitzar per enviar els correus electrònics del lloc.
+TIPMAILFROM=L'adreça de correu electrònic que s'utilitzarà com a remitent dels correus electrònics del lloc.
+TIPLINKS=Si trieu 'Sí', els enllaços a continguts registrats es mostraran fins i tot si no teniu sessió iniciada. Haureu d'iniciar sessió per a veure l'element complet.
+TIPNEWUSERTYPE=El nivell d'accés per defecte que s'aplicarà als nous usuaris que es registrin pel lloc públic.
+TIPPRINTPDFEMAIL=Les funcions d'impressió, PDF i correu electrònic es representaran per icones o per text
+TIPSECRETWORD=És un codi alfanumèric únic i autogenerat per a cada instal·lació de Joomla! És utilitzat per a funcions de seguretat.
+TIPSENDMAILPATH=Introduïu el camí al directori del programa Sendmail del servidor amfitrió.
+TIPSESSIONHANDLER=El mecanisme amb el qual Joomla! identifica un usuari un cop s'ha connectat al lloc utilitzant galetes no persistents.
+TIPSETSDEFAULTLENGTHLISTS=Estableix la longitud per defecte de les llistes al tauler de control per a tots els usuaris
+TIPSETYOURSITEISOFFLINE=Seleccioneu si està disponible l'accés al lloc públic. Si trieu 'Sí', el lloc públic mostrarà el missatge a sota.
+TIPSHOWAUTHORMETATAGITEMS=Mostra l'etiqueta meta de l'autor quan es mostrin els articles
+TIPFEEDLIMIT=Trieu el nombre d'ítems a mostrar al canal d'informació
+TIPSHOWTITLEMETATAGITEMS=Mostra l'etiqueta meta del títol quan es mostrin els articles
+TIPSITENAME=Introduïu el nom del vostre lloc web. S'utilitzarà a diversos llocs (p.ex. a la barra de títol al lloc d'administració i a les pàgines <em>Lloc fora de línia</em>).
+TIPSMTPAUTH=Trieu 'Sí' si el vostre amfitrió SMTP necessita autenticació SMTP.
+TIPSMTPPORT=Enter the port number of your SMTP server.  Use 25 for most unsecure servers, and 465 or 587 for most secure servers.
+TIPSMTPSECURITY=Select the security model that your SMTP server uses.
+TIPSMTPHOST=Introduïu el nom de l'amfitrió SMTP.
+TIPSMTPUSER=Introduïu el nom d'usuari per a accedir a l'SMTP
+TIPSMTPPASS=Introduïu la contrasenya per a accedir a l'SMTP
+TIPTMPFOLDER=Si us plau trieu una carpeta temporal on es pugui escriure.
+TIPURLSUFFIX=Si trieu Sí, el sistema afegirà un sufix a l'URL segons el tipus de document.
+TIPUSEMODREWRITE=Seleccioneu si utilitzar el Rewrite Module de l'Apache per a capturar els URL que compleixin determinades condicions i reescriure'ls com s'indiqui.
+URL SUFFIX=Sufix URL
+USE MOD_REWRITE=Utilitza el <em>mod_rewrite</em> de l'Apache
+USER SETTINGS=Configuració de l'usuari
+USERS=Usuaris
+WARNAPACHEONLY=Només usuaris d'Apache! Renombreu htaccess.txt a .htaccess abans d'activar-ho.
+WARNPATHCHANGES=Podeu establir noves ubicacions per a les carpetes 'Camí a la carpeta de multimèdia' i 'Camí a la carpeta d'imatges'. Per altra banda, no elimineu ni canvieu la carpeta images existent. Les carpetes images/banners, images/M_images, images/smilies i images/stories són emprades per l'aplicació. Vegeu el tema d'ajuda per a aquesta pàgina si necessiteu assistència sobre com tornar a l'estructura de directoris original.
+WARNDONOTCHANGEDATABASETABLESPREFIX=No ho canvieu exceptuant el cas que tingueu una base de dades amb taules amb el prefix que esteu establint.
+WARNING=AVÍS!
+WYSIWYG EDITOR=Editor WYSIWYG
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_contact.ini 12/administrator/language/ca-ES/ca-ES.com_contact.ini
--- 11/administrator/language/ca-ES/ca-ES.com_contact.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_contact.ini	2009-03-13 23:40:40.000000000 +0100
@@ -0,0 +1,146 @@
+# $Id: ca-ES.com_contact.ini 11624 2009-03-13 22:38:44Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A CONTACTS CATEGORY=Una categoria de contactes
+ACCESS=Nivell d'accés
+ADDRESS ICON=Icona de l'adreça
+ALIGNMENT OF THE IMAGE=Alineació de la imatge
+BANNED EMAIL LABEL=Correu electrònic bandejat
+BANNED EMAIL DESC=Les adreces electròniques que continguin qualsevol de les paraules llistades seran bandejades. Separeu les paraules amb punt i comes (p.ex. ban;text;etc.).
+BANNED SUBJECT LABEL=Assumpte bandejat
+BANNED SUBJECT DESC=Els assumptes que continguin qualsevol de les paraules llistades seran bandejats. Separeu les paraules amb punt i comes (p.ex. ban;text;etc.).
+BANNED TEXT LABEL=Text bandejat
+BANNED TEXT DESC=Els textos que continguin qualsevol de les paraules llistades seran bandejats. Separeu les paraules amb punt i comes (p.ex. ban;text;etc.).
+CATEGORY DESCRIPTION=Descripció de la categoria
+CATEGORY LIST - CATEGORY=Llista de categories - Categoria
+CATEGORY LIST - SECTION=Llista de categories - Secció
+CHANGED TO CONTACT SAVED=S'han desat els canvis al contacte
+CHOOSE A CONTACT LAYOUT.=Trieu un format de contacte.
+CHOOSE A CONTACT CATEGORY LAYOUT.=Trieu un format de categoria de contactes.
+CONTACT CATEGORY LAYOUT=Format de categoria de contactes.
+CONTACTS CATEGORY LAYOUT=Format de categoria de contactes.
+CONTACT CATEGORY LAYOUT DESC=El format de categoria de contactes mostra tots el contactes publicats d'una categoria.
+CONTACT DETAILS=Detalls del contacte
+CONTACT ITEMS=Ítems del contacte
+CONTACT MANAGER=Gestor de contactes
+CONTACT PARAMETERS=Paràmetres del contacte
+CONTACT'S POSITION=Càrrec del contacte
+CONTACT SAVED=S'ha desat el contacte
+COUNTRY=País
+CUSTOM REPLY=Resposta personalitzada
+CUSTOM REPLY DESC=Desactiva la resposta automatitzada permetent que els connectors gestionin la integració amb altres sistemes.
+DESCNEWITEMSLAST=Els nous contactes van per defecte a la darrera posició. L'ordre es pot canviar després de desar el contacte.
+DESCPARAMWHENCLICKCONTAC=* Aquests paràmetres controlen només què es veu quan feu clic per veure un ítem de contacte. *
+DESCRIPTION TEXT=Text descriptiu
+DROP DOWN=Desplegable
+E-MAIL=Correu electrònic
+E-MAIL PARAMETERS=Paràmetres del correu electrònic
+EDIT CONTACT=Edita el contacte
+EMAIL=Correu electrònic
+EMAIL COLUMN=Columna de correu electrònic
+EMAIL COPY=Còpia de correu electrònic
+EMAIL DESCRIPTION=Descripció del correu electrònic
+EMAIL FORM=Formulari de correu electrònic
+EMAIL ICON=Icona del correu electrònic
+ENABLE VCARD=Habilita la targeta de presentació electrònica
+ENABLE VCARD SUPPORT FOR CONTACTS=Habilita el suport de targeta de presentació electrònica per als contactes
+FAX COLUMN=Columna de fax
+FAX ICON=Icona del fax
+SHOW CATEGORY IN BREADCRUMBS=Mostra la categoria a la ruta de navegació
+ICON FOR THE ADDRESS INFO=Icona per a la informació de l'adreça
+ICON FOR THE EMAIL INFO=Icona per a la informació del correu electrònic
+ICON FOR THE FAX INFO=Icona per a la informació del fax
+ICON FOR THE MISC INFO=Icona per a la informació de la miscel·lània
+ICON FOR THE MOBILE INFO=Icona per a la informació del mòbil
+ICON FOR THE TELEPHONE INFO=Icona per a la informació del telèfon
+ICONS/TEXT=Icones/Text
+IMAGE=Imatge del contacte
+IMAGE ALIGN=Alineació de la imatge
+IMAGE INFO=Informació de la imatge
+INFORMATION=Informació
+LIMIT BOX=Quadre de limitació
+LINKED TO USER=Enllaçat a l'usuari
+MISC ICON=Icona de la miscel·lània
+MISC INFO=Informació de la miscel·lània
+MISCELLANEOUS INFO=Informació miscel·lània
+MOBILE=Número de telèfon mòbil
+MOBILE ICON=Icona del mòbil
+NEW CONTACT=Contacte nou
+NO=No
+NUM CATEGORY ITEMS=Nombre d'ítems a la categoria
+PARAMCONTACTICONS=Utilitza icones, text o no res al costat de la informació del contacte
+PARAMDROPDOWN=Mostra/Amaga la llista desplegable a la visualització de contactes
+PARAMEMAIL=Mostra/Amaga la informació del correu electrònic. Si trieu 'Mostra', l'adreça es protegirà contra robots de correu brossa amb ocultació JavaScript.
+PARAMEMAILCOPY=Mostra/Amaga la casella de selecció per a enviar per correu una còpia al remitent
+PARAMCATLIST=Mostra/Amaga la llista de categories a la visualització en llista
+PARAMCATLISTCAT=Mostra/Amaga la llista de categories a la visualització en taula
+PARAMCATDESC=Mostra/Amaga la descripció de la categoria
+PARAMNUMCATITEM=Mostra/Amaga el nombre d'ítems a cada categoria
+PARAMEMAILDESCTEXT=El text descriptiu per al formulari de correu electrònic. Si es deixa en blanc, s'utilitzarà la definició de _EMAIL_DESCRIPTION del fitxer d'idioma.
+PARAMPRINT=Mostra/Amaga el botó d'impressió (només afecta a aquesta pàgina).
+PARAMDESCTEXT=Descripció per a aquesta pàgina. Si es deixa en blanc es carregarà _WEBLINKS_DESC del vostre fitxer d'idioma.
+PARAMIMAGE=La imatge per a aquesta pàgina ha de ser a la carpeta /images/stories. Per defecte es carregarà web_links.jpg. 'Cap imatge' vol dir que no es carregarà cap imatge
+PARAMSHOWLIMIT=Mostra/Amaga el quadre de limitació
+PARAMSPECCAT=Mostra els contactes només de la categoria seleccionada
+POSITION COLUMN=Columna de càrrec
+POST/ZIP CODE=Codi postal
+POSTAL CODE/ZIP=Codi postal/ZIP
+SAVE & NEW=Desa i nou
+SAVE TO COPY=Desa per a copiar
+SELECT AN ITEM TO=Seleccioneu un contacte per a aplicar l'acció
+SELECT CATEGORY=Seleccioneu una categoria
+SELECT CONTACT=Seleccioneu un contacte
+SESSION CHECK LABEL=Comprovació de sessió
+SESSION CHECK DESC=Comprova si existeix una galeta de sessió. Això significa que els usuaris sense les galetes habilitades no podran enviar correus electrònics.
+SHOW CONTACT'S POSITION=Mostra el càrrec del contacte
+SHOW EMAIL ADDRESS=Mostra l'adreça de correu electrònic
+SHOW FAX NUMBER=Mostra el número de fax
+SHOW MOBILE NUMBER=Mostra el número de telèfon mòbil
+SHOW PAGE TITLE=Mostra el títol de la pàgina
+SHOW PHONE NUMBER=Mostra el número de telèfon
+SHOW TABLE HEADINGS=Mostra els encapçalaments
+SHOW/HIDE THE CATEGORY IN THE BREADCRUMBS=Mostra/Amaga la categoria a la ruta de navegació
+SHOW/HIDE THE COUNTRY INFO=Mostra/Amaga la informació del país
+SHOW/HIDE THE CONTACT POSITION=Mostra/Amaga el càrrec del contacte
+SHOW/HIDE THE DESCRIPTION TEXT BELOW=Mostra/Amaga la descripció a sota
+SHOW/HIDE THE EMAIL ADDRESS=Mostra/Amaga l'adreça de correu electrònic
+SHOW/HIDE THE EMAIL TO FORM=Mostra/Amaga el formulari de correu electrònic
+SHOW/HIDE THE FAX INFO=Mostra/Amaga la informació del fax
+SHOW/HIDE THE FAX NUMBER=Mostra/Amaga el número de fax
+SHOW/HIDE THE IMAGE=Mostra/Amaga la imatge
+SHOW/HIDE THE MISCELLANEOUS INFO=Mostra/Amaga la informació miscel.lània
+SHOW/HIDE THE MOBILE INFO=Mostra/Amaga la informació del telèfon mòbil
+SHOW/HIDE THE MOBILE NUMBER=Mostra/Amaga el número de telèfon mòbil
+SHOW/HIDE THE NAME INFO=Mostra/Amaga la informació del nom
+SHOW/HIDE THE POSITION COLUMN=Mostra/Amaga la columna de càrrec
+SHOW/HIDE THE POSITION INFO=Mostra/Amaga la informació del càrrec
+SHOW/HIDE THE POST CODE INFO=Mostra/Amaga la informació del codi postal
+SHOW/HIDE THE STATE INFO=Mostra/Amaga la informació de l'estat
+SHOW/HIDE THE STREET ADDRESS INFO=Mostra/Amaga la informació de l'adreça del carrer
+SHOW/HIDE THE SUBURB INFO=Mostra/Amaga la informació de la població
+SHOW/HIDE THE TABLE HEADINGS=Mostra/Amaga els encapçalaments de taula
+SHOW/HIDE THE TELEPHONE INFO=Mostra/Amaga la informació del telèfon
+SHOW/HIDE THE TELEPHONE NUMBER=Mostra/Amaga el número de telèfon
+SHOW/HIDE THE WEBPAGE=Mostra/Amaga l'URL de la web del contacte
+SHOW/HIDE VCARD=Mostra/Amaga la targeta de presentació electrònica
+SITE DEFAULT=Valor per defecte del lloc
+SPECIAL DEFINED CATEGORY=Categoria definida de manera especial
+STANDARD CONTACT LAYOUT=Format estàndard de contacte
+STANDARD CONTACT LAYOUT DESC=El format estàndard de contacte mostra els detalls d'un sol contacte.
+STATE/COUNTY=Comunitat Autònoma/Regió
+STREET ADDRESS=Adreça de carrer
+TABLE HEADINGS=Encapçalament de taula
+THE CONTACT TO LINK TO=El contacte a enllaçar
+TELEPHONE COLUMN=Columna de telèfon
+TELEPHONE ICON=Icona del telèfon
+THIS COMPONENT SHOWS A LISTING OF CONTACT INFORMATION=Aquest component mostra una llista amb la informació dels contactes
+TOWN/SUBURB=Població
+VCARD=Targeta de presentació electrònica
+WEBPAGE=URL del web
+YES=Sí
+YOU MUST PROVIDE A NAME.=Heu d'indicar un nom per a aquest contacte.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_contact.menu.ini 12/administrator/language/ca-ES/ca-ES.com_contact.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_contact.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_contact.menu.ini	2008-12-31 19:11:42.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.com_contact.menu.ini 10388 2008-07-28 17:40:19Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COM_CONTACT=Contactes
+COM_CONTACT.CONTACTS=Contactes
+COM_CONTACT.CATEGORIES=Categories
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_content.ini 12/administrator/language/ca-ES/ca-ES.com_content.ini
--- 11/administrator/language/ca-ES/ca-ES.com_content.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_content.ini	2009-03-13 23:41:04.000000000 +0100
@@ -0,0 +1,190 @@
+# $Id: ca-ES.com_content.ini 11625 2009-03-13 22:44:06Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ACROSS=A través de
+ALIAS=Àlies
+ALTERNATIVE READ MORE TEXT=Text alternatiu <em>Llegiu-ne més:</em>
+AN ERROR HAS OCCURRED=S'ha produït un error!
+APPENDIX=Apèndix
+ARCHIVE=Arxiva
+ARCHIVED=Arxivat
+ARCHIVED ARTICLE LIST LAYOUT=Llista d'articles arxivats
+ARCHIVED ARTICLE LIST LAYOUT DESC=El format d'articles arxivats mostra els articles que han estat arxivats i s'hi poden fer cerques per data.
+ARTICLE=Article
+ARTICLE ID=ID de l'article
+ARTICLE MANAGER=Gestor d'articles
+ARTICLE MUST HAVE A TITLE=L'article ha de tenir un títol
+ARTICLE MUST HAVE SOME TEXT=L'article ha de tenir quelcom de text
+ARTICLE ORDER=Ordre de l'article
+ARTICLE PARAMETERS=Paràmetres de l'article
+ARTICLE RATING:: INVALID RATING:=Valoració de l'article:: Valoració no vàlida:
+ARTICLE SELECTION=Selecció de l'article
+ARTICLE SUBMISSION LAYOUT=Format de tramesa d'article
+ARTICLE SUBMISSION LAYOUT DESC=Permet als usuaris trametre un article. Nota: això només funcionarà per a usuaris del grup Autors o superior!
+ARTICLE TITLE=Títol de l'article
+ARTICLES BEING COPIED=Articles que es copien:
+ARTICLES BEING MOVED=Articles que es mouen:
+AUTHOR NAMES=Nom de l'autor
+BLACK LIST (DEFAULT)=Llista negra (Per defecte)
+BOOK=Llibre
+CALENDAR=Calendari
+CAPTION=Llegenda
+CATEGORY BLOG LAYOUT=Format de categoria en bloc
+CATEGORY BLOG LAYOUT DESC=Mostra una categoria d'articles en format bloc.
+CATEGORY NAME=Nom de la categoria
+CATEGORY NAME LINKABLE=Nom de la categoria hipertextual
+CHAPTER=Capítol
+CONTENT LANGUAGE=Idioma del contingut
+COPY ARTICLES=Copia els articles
+COPY TO SECTION/CATEGORY=Copia a la Secció/Categoria
+CREATED=Creat
+CREATED DATE AND TIME=Data i hora de creació
+DESCCONTENT=Això mostra una sola pàgina de contingut
+DETAILAUTHOR=Nom de l'autor
+DETAILAUTHORALIAS=Nom alternatiu per a l'autor
+DETAILACCESS=Nivell d'accéss per a aquest article
+DETAILCREATED=Data de creació de l'article
+DETAILSTART=Data/Hora d'inici d'edició
+DETAILFINISH=Data/Hora de final d'edició
+DOWN=Avall
+DRAFT UNPUBLISHED=Esborrany retirat
+EDIT THE IMAGE SELECTED=Edita la imatge seleccionada
+FILTER ATTRIBUTES=Atributs de filtre
+FILTER GROUPS=Grups de filtre
+FILTERING OPTIONS=Opcions de filtratge
+FILTER TAGS=Etiquetes de filtre
+FILTER TYPE=Tipus de filtre
+EMAIL ICON=Icona del correu electrònic
+FILTER BY TITLE OR ENTER ARTICLE ID=Filtreu per títol o introduïu un ID d'article
+FOR EACH FEED ITEM SHOW=Per a cada element del canal mostra
+FRONT PAGE=Portada
+FRONTPAGE=Portada
+FRONTPAGE BLOG LAYOUT=Format de portada en bloc
+FRONTPAGE BLOG LAYOUT DESC=El format estàndard de portada en bloc mostra articles que han estat establerts com a articles per a la portada en un format de bloc.
+GLOSSARY=Glossari
+IMAGE ALIGN=Alineació de la imatge
+INTRO TEXT=Text d'introducció
+FULL TEXT=Text complet
+ITEM RATING=Valoració de l'article
+ITEM RATING/VOTING=Valoració/Votació de l'article
+ITEM(S) SENT TO THE TRASH=%s article(s) s'ha(n) enviat a la paperera.
+ITEM(S) SUCCESSFULLY ARCHIVED=%s article(s) s'ha(n) arxivat amb èxit.
+ITEM(S) SUCCESSFULLY COPIED TO SECTION=%s article(s) s'ha(n) copiat amb èxit a la Secció: %s, Categoria: %s.
+ITEM(S) SUCCESSFULLY MOVED TO SECTION=%s article(s) s'ha(n) mogut amb èxit a la Secció: %s, Categoria: %s.
+ITEM(S) SUCCESSFULLY MOVED TO UNCATEGORIZED=%s articles(s) s'ha(n) mogut amb èxit al contingut no categoritzat.
+ITEM(S) SUCCESSFULLY PUBLISHED=%s article(s) s'ha(n) publicat amb èxit.
+ITEM(S) SUCCESSFULLY UNPUBLISHED=%s article(s) s'ha(n) retirat amb èxit.
+ITEM(S) SUCCESSFULLY UNARCHIVED=%s article(s) s'ha(n) recuperat de l'arxiu amb èxit.
+ITEMS BEING COPIED=Articles que es copien.
+ITEMS BEING MOVED=Articles que es mouen.
+KEY REFERENCE=Referència clau
+KEYWORDS=Paraules clau
+LINKED TITLES=Títol hipertextual
+MAKE YOUR ITEM TITLES LINKABLE=Feu del títol de l'article un enllaç a l'article real. Això és idoni quan només es mostra el text d'introducció.
+METADATA INFORMATION=Informació de les metadades
+METADESC=Metadescripció (Meta Description)
+METAKEYS=Paraules clau (Meta Keywords)
+METAROBOTS=Paraules clau per als robots
+METAAUTHOR=Nom de l'autor dins la informació Meta
+MODIFIED=Modificat
+MODIFIED DATE AND TIME=Data i hora de modificació
+MOVE ARTICLES=Mou els articles
+MOVE TO SECTION/CATEGORY=Mou a la Secció/Categoria
+MULTI COLUMN ORDER=Ordre de columna múltiple
+NEVER=Mai
+NEW DOCUMENT=Nou document
+NO HTML=Sense html
+NOT MODIFIED=No modificat
+ORDER THAT THE ARTICLES WILL BE DISPLAYED IN=Ordre en què es mostraran els articles.
+PAGEBREAK=Salt de pàgina
+PARAMDOWNORACROSS=Ordena els articles avall o a través de columnes
+PARAMALTREADMORE=Introduïu el text que voleu que es mostri a l'enllaç <em>Llegiu-ne més:</em> dinàmic en comptes de l'opció per defecte d'utilitzar el títol de l'article.
+PARAMAUTHOR=Mostra/Amaga l'autor de l'article (només afecta a aquesta pàgina)
+PARAMCATEG=Mostra/Amaga el nom de la categoria a la qual pertany l'article
+PARAMCATEGLINK=El títol de la categoria esdevé un enllaç cap a la categoria
+PARAMCREATEDATE=Mostra/Amaga la data de creació de l'article (només afecta a aquesta pàgina)
+PARAMEMAIL=Mostra/Amaga el botó de correu de l'article (només afecta a aquesta pàgina)
+PARAMCONTENTLANGUAGE=L'idioma amb el qual s'escriu l'article
+PARAMKEYREF=Una clau amb la qual un article pot ser referenciat (p.ex. una referència per a l'ajuda)
+PARAMMODIFYDATE=Mostra/Amaga la data en què es va modificar per última vegada l'article (només afecta a aquesta pàgina).
+PARAMPDF=Mostra/Amaga el botó PDF (només afecta a aquesta pàgina)
+PARAMPRINT=Mostra/Amaga el botó d'impressió (només afecta a aquesta pàgina)
+PARAMRATING=Mostra/Amaga la valoració de l'article (només afecta a aquesta pàgina)
+PARAMSECTION=Mostra/Amaga el nom de la secció a la qual pertany l'article
+PARAMSECTIONLINK=El títol de la secció esdevé un enllaç cap a la secció
+PARAMETERS - ADVANCED=Paràmetres (Avançat)
+PARAMETERS - ARTICLE=Paràmetres (Article)
+PARAMNAVIGATIONARTICLE=Mostra una funció de navegació entre articles.
+PART=Part
+PDF ICON=Icona PDF
+PGB TOC ALIAS PROMPT=Àlies de la taula de continguts:
+PGB PAGE TITLE=Títol de la pàgina:
+PGB INS PAGEBRK=Insereix un salt de pàgina
+PGB ARTICLE PAGEBRK=Salt de pàgina de l'article
+PLEASE SELECT A SECTION=Si us plau seleccioneu una secció
+PLEASE SELECT SOMETHING=Si us plau seleccioneu una secció/categoria on moure l'article(s).
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select an Article from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau trieu un article de la llista per a %s
+READ MORE LINK=Enllaç Llegiu-ne més...
+READMORE=Llegiu-ne més...
+REFENTRY=Refentry
+REMOVE=Elimina
+RESET HIT COUNT=Reinicialitza el comptador de visites
+REVISED=Revisat
+ROBOTS=Robots
+SAMPLE IMAGE=Imatge de mostra
+SECTION BLOG LAYOUT=Format de secció en bloc
+SECTION BLOG LAYOUT DESC=Mostra una llista d'articles d'una secció en un format de bloc.
+SECTION NAME=Nom de la secció
+SECTION NAME LINKABLE=Nom de la secció hipertextual
+SECTION: ALL=Secció: Tot
+SELECT A SECTION=Seleccioneu una secció
+SELECT AN ITEM TO TOGGLE=Seleccioneu un ítem que vulgueu commutar d'estat
+SELECT LANGUAGE=Seleccioneu un idioma
+SELECT SECTION=Seleccioneu una secció
+SELECT CATEGORY=Seleccioneu una categoria
+STANDARD ARTICLE LAYOUT=Format d'article
+STANDARD ARTICLE LAYOUT DESC=El format estàndard d'article mostra un sol article.
+STANDARD CATEGORY LAYOUT=Format de categoria
+STANDARD CATEGORY LAYOUT DESC=Aquest format mostra els articles d'una categoria.
+STANDARD SECTION LAYOUT=Format de secció
+STANDARD SECTION LAYOUT DESC=Mostra una llista de categories d'una secció.
+SHOW ARTICLE TITLE=Mostra el títol de l'article
+SHOW INTRO TEXT=Mostra el text d'introducció
+SHOW NAVIGATION=Mostra la navegació
+SHOW PAGE TITLE=Mostra el títol de la pàgina
+SHOW TITLE=Mostra el títol
+SHOW UNAUTHORIZED LINKS=Mostra els enllaços no autoritzats
+SHOW/HIDE THE INTRO TEXT=Mostra/Amaga el text d'introducció
+SHOW/HIDE THE ITEMS TITLE=Mostra/Amaga el títol dels ítems
+SHOW/HIDE THE ARTICLES TITLE=Mostra/Amaga el títol dels articles
+SSL ENABLED=És permès SSL
+STATE=Estat
+SUB-FOLDER=Subcarpeta
+SUCCESSFULLY RESET HIT COUNT=El comptador de visites s'ha reinicialitzat amb èxit
+SUCCESSFULLY SAVED CHANGES TO ARTICLE=Els canvis a l'article: %s s'han desat amb èxit
+SUCCESSFULLY SAVED ITEM=L'article: %s s'ha desat amb èxit
+SUCCESSFULLY SAVED ARTICLE=L'article s'ha desat amb èxit
+TIMES=Vegades
+TIPFILTERGROUPS=Això estableix els grups d'usuaris als quals voleu aplicar els filtres. No es realitzarà el filtratge als altres grups.
+TIPFILTERINGOPTIONS=Opcions de filtratge que donen més control sobre l'HTML que els proveïdors de contingut trameten. Podeu ser tan estrictes o tan liberals com volgueu segons les necessitats del vostre lloc. El filtratge ve de fàbrica i la configuració per defecte proporciona una bona protecció contra marques associades normalment amb atacs a llocs web.
+TIPSFILTERTAGS=Indiqueu etiquetes addicionals, separant cada nom d'etiqueta amb un espai o amb una coma.
+TIPSFILTERATTRIBUTES=Indiqueu atributs addicionals, separant cada nom d'atribut amb un espai o amb una coma.
+TIPSFILTERTYPE=La llista negra permet totes les etiquetes i atributs a excepció del que es troba a la llista negra.<br /><strong>--</strong>La llista negra per defecte inclou les etiquetes següents: 'applet', 'body', 'bgsound', 'base', 'basefont', 'embed', 'frame', 'frameset', 'head', 'html', 'id', 'iframe', 'ilayer', 'layer', 'link', 'meta', 'name', 'object', 'script', 'style', 'title', 'xml'<br /><strong>--</strong> La llista negra per defecte inclou els atributs següents:\n'action', 'background', 'codebase', 'dynsrc', 'lowsrc'<br /><strong>--</strong>Podeu prohibir etiquetes i atributs addicionals afegint-los als camps Etiquetes de filtre i Atributs de filtre, separant cada nom d'etiqueta o d'atribut amb un espai o amb una coma.</p><p> La llista blanca només permet les etiquetes que es troben als camps Etiquetes de filtre i Atributs de filtre.</p><p>Sense HTML elimina totes les etiquetes HTML del contingut quan aquest es desa.</p> <p>Observeu que aquesta configuració funciona independentment de l'editor que esteu emprant. <br />Inclús si utilitzeu un editor WYSIWYG, la configuració del filtratge pot eliminar etiquetes i atributs el moment abans de desar la informació a la base de dades.
+TIPSHOWFEEDITEM=Mostra només el text d'introducció o el text complet.
+UNARCHIVE=Recupera de l'arxiu
+UNCATEGORIZED=No categoritzat
+VALIDSELECTIONLISTSENDTRASH=Si us plau seleccioneu de la llista per a enviar a la paperera.
+VALIDSELECTSECTCATCOPYITEMS=Si us plau seleccioneu una secció/categoria on copiar els articles.
+VALIDTRASHSELECTEDITEMS=Esteu segur que voleu enviar a la paperera els articles seleccionats? Això no eliminarà els articles permanentment.
+WHITE LIST=Llista blanca
+YOU CANNOT EDIT AN ARCHIVED ITEM=No podeu editar un article arxivat.
+YOU MUST SELECT A CATEGORY=Heu de seleccionar una categoria.
+YOU MUST SELECT A SECTION=Heu de seleccionar una secció.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_cpanel.ini 12/administrator/language/ca-ES/ca-ES.com_cpanel.ini
--- 11/administrator/language/ca-ES/ca-ES.com_cpanel.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_cpanel.ini	2008-12-31 19:12:58.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.com_cpanel.ini 10388 2008-07-28 19:01:05Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CONTROL PANEL=Tauler de control
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_frontpage.ini 12/administrator/language/ca-ES/ca-ES.com_frontpage.ini
--- 11/administrator/language/ca-ES/ca-ES.com_frontpage.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_frontpage.ini	2008-12-31 19:13:40.000000000 +0100
@@ -0,0 +1,60 @@
+# $Id: ca-ES.com_frontpage.ini 10496 2008-07-28 19:08:46Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AUTHOR NAMES=Nom de l'autor
+ARCHIVE=Arxiva
+CATEGORY NAME=Nom de la categoria
+CATEGORY NAME LINKABLE=Nom de la categoria hipertextual
+CREATED DATE AND TIME=Data i hora de creació
+EMAIL ICON=Icona del correu electrònic
+FRONTPAGE ITEMS=Articles de la portada
+FRONTPAGE MANAGER=Gestor de la portada
+ITEM RATING=Valoració de l'article
+ITEM TITLES=Títols d'articles
+LINKED TITLES=Títols hipertextuals
+MAKE YOUR ITEM TITLES LINKABLE=Els títols dels articles esdevenen enllaços
+MODIFIED=Modificat
+MODIFIED DATE AND TIME=Data i hora de modificació
+NUM INTRO=Amb introducció
+NUM LEADING=Capdavanters
+NUMBER OF ITEMS TO DISPLAY AS LINKS.=Nombre d'articles a mostrar com a enllaços.
+ORDER ITEMS BY CATEGORY=Ordena els articles per categoria
+ORDER THAT THE ITEMS WILL BE DISPLAYED IN.=L'ordre en el qual es mostraran els articles.
+PAGINATION=Paginació
+PAGINATION RESULTS=Resultats de la paginació
+PARAMAUTHOR=Mostra/Amaga l'autor de l'article (només afecta a aquesta pàgina)
+PARAMCATEG=Mostra/Amaga la categoria a la qual pertany l'article
+PARAMCATEGLINK=El títol de la categoria esdevé un enllaç cap a la categoria
+PARAMCOLUMNS=A l'organització del text d'introducció identifica quantes columnes es mostraran per fila.
+PARAMCREATEDATE=Mostra/Amaga la data de creació de l'article (només afecta a aquesta pàgina)
+PARAMEMAIL=Mostra/Amaga el botó de correu electrònic d'article (només afecta a aquesta pàgina)
+PARAMINTRO=Nombre d'articles a mostrar amb el text d'introducció.
+PARAMLEADING=Nombre d'articles a mostrar com a articles capdavanters (amplada màxima). 0 vol dir que no es mostrarà cap article com a capdavanter.
+PARAMMODIFYDATE=Mostra/Amaga la data de modificació de l'article (només afecta a aquesta pàgina)
+PARAMPAGINATIONRESULTS=Mostra/Amaga la informació dels resultats de paginació (p.ex. 1-4 de 4)
+PARAMPDF=Mostra/Amaga el botó PDF (només afecta a aquesta pàgina)
+PARAMPRINT=Mostra/Amaga el botó d'impressió (només afecta a aquesta pàgina)
+PARAMRATING=Mostra/Amaga la valoració de l'article (només afecta a aquesta pàgina)
+PARAMSECTION=Mostra/Amaga el nom de la secció a la qual pertany l'article
+PARAMSECTIONLINK=El títol de la secció esdevé un enllaç cap a la secció
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select an Article from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau trieu un article per a %s
+PDF ICON=Icona PDF
+PRIMARY ORDER=Ordre primari
+READ MORE=Llegiu-ne més...
+REMOVE=Elimina
+SELECT A SECTION=Seleccioneu una secció
+SECTION NAME=Nom de la secció
+SECTION NAME LINKABLE=Nom de la secció hipertextual
+SELECT CATEGORY=Seleccioneu una categoria
+SHOW/HIDE PAGINATION SUPPORT=Mostra/Amaga el suport de paginació
+SHOW/HIDE THE ITEMS TITLE=Mostra/Amaga el títol de l'article
+SHOW/HIDE THE READ MORE LINK=Mostra/Amaga l'enllaç Llegiu-ne més...
+UNCATEGORIZED=No categoritzat
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_installer.ini 12/administrator/language/ca-ES/ca-ES.com_installer.ini
--- 11/administrator/language/ca-ES/ca-ES.com_installer.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_installer.ini	2009-05-16 03:18:36.000000000 +0200
@@ -0,0 +1,164 @@
+# $Id: ca-ES.com_installer.ini 11788 2009-05-16 03:15:36Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADMIN=Administració
+ADMIN MODULES=Mòduls de l'administració
+ADMIN LANGUAGES=Idiomes de l'administració
+ADMIN TEMPLATES=Plantilles de l'administració
+ALL=Tots
+ALREADY EXISTS!=Ja existeix!
+ANOTHER COMPONENT IS ALREADY USING DIRECTORY=Un altre component està utilitzant el directori
+ANOTHER TEMPLATE IS ALREADY USING DIRECTORY=Una altra plantilla està utilitzant el directori
+ANOTHER MODULE IS ALREADY USING DIRECTORY=Un altre mòdul està utilitzant el directori
+AUTHOR=Autor
+AUTHOR INFORMATION=Informació de l'autor
+BACK TO LANGUAGE MANAGER=Torna al gestor d'idiomes
+BACK TO TEMPLATES=Torna a les plantilles
+CANNOT FIND OR READ FILE=No s'ha pogut trobar o llegir el fitxer seleccionat
+CANNOT FIND, READ OR WRITE FILE=No fou possible trobar, llegir o escriure el fitxer seleccionat
+CLIENT=Client
+COMPATIBILITY=Compatibilitat
+COMPATIBLE EXTENSION=Aquesta extensió funciona nativament amb el Joomla! 1.5
+COMPONENT MENU LINK=Enllaç de menú al component
+COMPONENT=Component
+COMPONENTS=Components
+CONTINUE ...=Continua...
+COPY FAILED=No s'ha pogut copiar el fitxer seleccionat.
+COULD NOT COPY PHP INSTALL FILE.=No es pot copiar el fitxer instal·lador PHP.
+COULD NOT COPY PHP UNINSTALL FILE.=No es pot copiar el fitxer desinstal·lador PHP.
+CURRENTLY INSTALLED=Component
+DELETING XML FILE=Eliminació del fitxer XML
+DELETE FAILED=No s'ha pogut eliminar el fitxer seleccionat.
+DESCFTP=Per a instal·lar o desinstal·lar extensions, el Joomla! necessita els detalls del vostre compte FTP. Si us plau, introduïu-los als camps a sota.
+DESCFTPTITLE=Detalls d'entrada a l'FTP
+DESCLANGUAGES=Només són accessibles aquells idiomes que es poden desintal·lar. L'idioma per defecte no es pot eliminar.
+DESCMODULES=Només són accessibles aquells mòduls que es poden desinstal·lar. Alguns mòduls del nucli no es poden eliminar.
+DESCPLUGINS=Només són accessibles aquells connectors que es poden desinstal·lar. Alguns connectors del nucli no es poden eliminar.
+DESCTEMPLATES=Només són accessibles aquelles plantilles que es poden desinstal·lar. La plantilla per defecte no es pot eliminar.
+DIRECTORY.=Directori.
+DIRECTORY DOES NOT EXIST=El directori no existeix.
+DIRECTORY DOES NOT EXIST, CANNOT REMOVE FILES=El directori no existeix i els fitxers no es poden eliminar.
+DISABLE=Inhabilita
+ENABLE=Habilita
+ERROR=Error
+ERRORNOTFINDJOOMLAXMLSETUPFILE=Error! No s'ha pogut trobar un fitxer de configuració XML de Joomla! al paquet.
+ERRORNOTFINDXMLSETUPFILE=Error! No s'ha pogut trobar un fitxer de configuració XML al paquet.
+ERRORREMOVEMANUALLY=Si aquesta extensió ha creat taules o ha instal·lat fitxers addicionals, s'han d'eliminar manualment.
+ERRORUNKOWNEXTENSION=L'instal·lador no ha pogut eliminar l'extensió. Es requereix que l'elimineu manualment.
+EXTENSION MANAGER=Gestor d'extensions
+EXTRACT ERROR=S'ha produït un error d'extracció!
+FAILED TO COPY FILE TO=No s'ha pogut copiar el fitxer: %s a %s
+FAILED TO MOVE UPLOADED FILE TO=No s'ha pogut moure el fitxer penjat al directori <code>/media</code>.
+FILE DOES NOT EXIST=El fitxer '%s' no existeix.
+FOLDER FIELD EMPTY, CANNOT REMOVE FILES=El camp de carpeta és buit i no es poden eliminar els fitxers
+INSTALL=Instal·la
+INSTALLEXT=Instal·la %s %s
+INSTALL AN EXTENSION=Instal·la una extensió
+INSTALL DETECTION ERROR=Instal·lació %s - (Error de detecció!)
+INSTALL DIRECTORY=Directori d'instal·lació
+INSTALL FROM DIRECTORY=Instal·la des del directori
+INSTALL FROM URL=Instal·la des de l'URL
+INSTALL NEW ELEMENT=Instal·la nou %s - %s
+INSTALL NEW EXTENSION=Instal·la una nova extensió
+INSTALL NEW LANGUAGE - SITE=Instal·la un nou idioma (lloc)
+INSTALL NEW TEMPLATE=Instal·la una nova plantilla
+INSTALL URL=URL d'instal·lació
+INSTALLATION FILE NOT FOUND=No s'ha trobat el fitxer d'instal·lació
+INSTALLED MODULES=Mòduls instal·lats
+INSTALLED PLUGINS=Connectors instal·lats
+INSTALLER - ERROR=S'ha produït un error d'instal·lador!
+INSTALLER LANG NOT INSTALLED=El fitxer d'idioma '%s' no s'ha pogut instal·lar perquè el paquet d'idioma %s per a '%s' no s'ha instal·lat o no existeix.
+INSTALLER NOT AVAILABLE FOR ELEMENT=L'instal·lador no és disponible per a l'element
+INSTALLER NOT FOUND FOR ELEMENT=No s'ha trobat l'instal·lador per a l'element
+INVALID URL=URL no vàlida
+IS NOT A VALID JOOMLA! INSTALLATION FILE=no és un fitxer d'instal·lació Joomla! vàlid
+JCLIENTHELPER::SETCREDENTIALSFROMREQUEST FAILED=No es pot connectar al servidor amb les credencials donades.
+LANGUAGE ID EMPTY, CANNOT REMOVE FILES=L'ID d'idioma és buit i no es poden eliminar els fitxers
+LANGUAGE=Idioma
+LANGUAGES=Idiomes
+METHOD "INSTALL" CANNOT BE CALLED BY CLASS=No es pot cridar el mètode <strong>instal·la</strong> per part de la classe
+METHOD "UNINSTALL" CANNOT BE CALLED BY CLASS=No es pot cridar el mètode <strong>desinstal·la</strong> per part de la classe
+MODULE FILE=Mòdul
+MODULE=Mòdul
+MODULES=Mòduls
+NO CORE PACK EXISTS FOR THE LANGUAGE=No existeix cap paquet per a l'idioma
+NO CUSTOM MODULES INSTALLED=No hi ha mòduls personalitzats instal·lats
+NO LANGUAGES INSTALLED=No hi ha idiomes instal·lats
+NO LANGUAGE TAG?=El paquet no ha especificat una etiqueta d'idioma. Potser esteu intentant instal·lar un paquet d'idioma antic?
+NO INSTALLED TEMPLATES=No hi ha plantilles instal·lades
+NO INSTALL TYPE FOUND=No s'ha trobat cap tipus d'instal·lador
+NO FILE IS MARKED AS PLUGIN FILE=No hi ha cap fitxer marcat com a connector
+NO FILE IS MARKED AS MODULE FILE=No hi ha cap fitxer marcat com a mòdul
+NO FILE SELECTED=No s'ha seleccionat cap fitxer
+NO FILENAME SPECIFIED=No s'ha especificat cap nom de fitxer
+NOT COMPATIBLE EXTENSION=Aquesta extensió no funciona nativament amb el Joomla! 1.5. Es necessita que el Mode llegat estigui Activat. Contacteu amb l'autor de l'extensió per a més informació.
+PACKAGE MANIFEST FILE INVALID OR NOT FOUND=El fitxer de manifest del paquet no s'ha trobat o és no vàlid.
+PATH DOES NOT HAVE A VALID PACKAGE=El camí no conté un paquet vàlid.
+PATH IS NOT A FOLDER=El camí no apunta a una carpeta vàlida o la carpeta s'ha eliminat.
+PLEASE ENTER A PACKAGE DIRECTORY=Si us plau, introduïu un directori de paquet
+PLEASE ENTER A URL=Si us plau, introduïu una URL
+PLEASE SELECT A DIRECTORY=Si us plau, seleccioneu un directori
+PLUGIN=Connector
+PLUGINS=Connectors
+RENAMING FAILED=El fitxer seleccionat no s'ha pogut reanomenar.
+SESSION PATH IS WRITABLE=Es pot escriure al camí de sessió
+SITE MODULES=Mòduls del lloc
+SITE LANGUAGES=Idiomes del lloc
+SITE TEMPLATES=Plantilles del lloc
+SQLERRORORFILE=S'ha produït un error SQL o bé el fitxer SQL és il·legible o no es troba.
+SUCCESS=Èxit
+TEMPLATE=Plantilla
+TEMPLATE ID IS EMPTY, CANNOT REMOVE FILES=L'ID de la plantilla és buit, no es poden eliminar els fitxers
+THE XML FILE DID NOT CONTAIN AN ADMINISTRATION ELEMENT=El fitxer XML no contenia un element d'administració.
+THERE IS ALREADY A FILE CALLED=Ja hi ha un fitxer anomenat
+UNABLE TO DETECT THE TYPE OF INSTALL=No es pot detectar el tipus d'instal·lació per a %s
+UNABLE TO FIND INSTALL PACKAGE=No es pot trobar el paquet d'instal·lació
+UNABLE TO FIND VALID XML INSTALL=No es pot trobar un fitxer d'instal·lació XML vàlid per a %s
+UNABLE TO OPEN=No s'ha pogut obrir el fitxer seleccionat
+UNINSTALL=Desinstal·la
+UNINSTALLEXT=Desinstal·la %s %s
+UNINSTALL LANGUAGE=Si desinstal·leu l'idioma s'eliminaran definitivament tots els fitxers d'dioma d'extensions corresponents a aquest idioma i no es podran utilitzar mai més!
+UNINSTALLLANGPUBLISHEDALREADY=No es pot eliminar l'idioma per defecte
+UNKNOWN=Desconegut
+UNKNOWN CLIENT TYPE=Tipus de client desconegut
+UNKNOWNARCHIVETYPE=Tipus d'arxiu desconegut
+UNRECOVERABLE ERROR=S'ha produït un error irrecuperable!
+UPLOAD ERROR=Penja %s - (Error de càrrega!)
+UPLOAD FAILED=Penja %s - (La càrrega ha fallat!)
+UPLOAD FAILED AS=La càrrega ha fallat ja que
+UPLOAD FILE=Penja el fitxer
+UPLOAD PACKAGE FILE=Penja el paquet
+UPLOAD NEW=Penja nou %s - (%s)
+UPLOAD NEW MODULE - ERROR=Penja un mòdul nou - S'ha produït un error!
+UPLOADFAILEDNOTEXIST=La càrrega ha fallat ja que el directori <code>/media</code> no existeix.
+UPLOADFAILEDNOTWRITABLE=La càrrega ha fallat ja que no es pot escriure al directori <code>/media</code>.
+UPLOADSUCCESSOR=Puja %s - (%s)
+WARNCOOKIESNOTENABLED=Sembla que el vostre navegador no està configurat per permetre galetes. Aquest és un dels requisits per al correcte funcionament del Joomla!
+WARNCORECOMPONENT=%s és un component del nucli i no es pot desinstal·lar.
+WARNCORECOMPONENT2=Heu d'inhabilitar-lo si no el voleu utilitzar.
+WARNCOREELEMENT=%s és un element del nucli i no es pot desinstal·lar.
+WARNCOREMODULE=%s és un mòdul del nucli i no es pot desinstal·lar.
+WARNFS_ERR01=Avís! No s'han pogut canviar els permisos del fitxer.
+WARNFS_ERR02=Avís! No s'ha pogut moure el fitxer.
+WARNFS_ERR03=La càrrega ha fallat. No es pot escriure al directori destí.
+WARNFS_ERR04=La càrrega ha fallat. El directori destí no existeix.
+WARNINSTALLFILE=L'instal·lador no pot continuar mentre no s'habiliti la càrrega de fitxers.
+WARNINSTALLZLIB=L'instal·lador no pot continuar mentre no s'instal·li el Zlib.
+WARNINSTALLUPLOADERROR=S'ha produït un error quan es penjava el fitxer al servidor.
+WARNNONONCORE=Hi ha connectors personalitzats, que no formen part del nucli, instal·lats.
+WARNPERMISSIONS=No s'han pogut canviar els permisos del fitxer penjat.
+WARNSAME=Ja hi ha una carpeta anomenada '%s'. Si us plau comproveu si:<br />&bull; l'extensió ja està instal·lada<br />&bull; els noms de fitxer al fitxer XML estan ben escrits<br />&bull; no hi ha fitxers XML escrits dins el fitxer <code>extension.xml</code> <br />&bull; tots els fitxers (menys els XML) estan correctament escrits dins el fitxer <code>extension.xml</code> i no hi ha entrades duplicades <br />&bull; hi ha una carpeta buida d'un intent anterior d'instal·lació<br />
+XML SETUP FILE IS NOT FOR A=El fitxer de configuració XML no és per a
+SERVER_CONNECT_FAILED=Ha fallat la connexió al servidor remot
+THERE ARE NO CUSTOM COMPONENTS INSTALLED=No hi ha components propis instal·lats.
+THERE ARE NO CUSTOM TEMPLATES INSTALLED=No hi ha plantilles pròpies instal·lades.
+THERE ARE NO CUSTOM LANGUAGES INSTALLED=No hi ha idiomes propis instal·lats.
+THERE ARE NO CUSTOM MODULES INSTALLED=No hi ha mòduls propis instal·lats.
+THERE ARE NO CUSTOM PLUGINS INSTALLED=No hi ha connectors propis instal·lats.
+INVALIDINSTALLFILE=El fitxer %s detectat és incorrecte, per a més informació vegeu <a href="http://docs.joomla.org/Incorrect_Install_File">fitxer d'instal·lació incorrecte</a> al wiki de documentació.
+BLANKSCRIPTELEMENT=El valor de l'script %s estava en blanc! Poseu-hi un valor o elimineu la marca.
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_languages.ini 12/administrator/language/ca-ES/ca-ES.com_languages.ini
--- 11/administrator/language/ca-ES/ca-ES.com_languages.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_languages.ini	2008-12-31 19:14:32.000000000 +0100
@@ -0,0 +1,23 @@
+# $Id: ca-ES.com_languages.ini 10496 2008-07-28 19:31:42Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADMINISTRATOR=Administrador
+DESCFTP=Per a establir idiomes com a "per defecte", el Joomla! segurament necessitarà els detalls del vostre compte FTP. Si us plau introduïu-los als camps a sota.
+DESCFTPTITLE=Detalls d'entrada a l'FTP
+IS=és
+JCLIENTHELPER::SETCREDENTIALSFROMREQUEST FAILED=No es pot connectar al servidor amb les credencials donades.
+LANGUAGE EDITOR=Editor d'idiomes
+LANGUAGE MANAGER=Gestor d'idiomes
+OPERATION FAILED: CONTENT EMPTY.=L'operació ha fallat! El contingut és buit.
+OPERATION FAILED: COULD NOT OPEN=L'operació ha fallat! No s'ha pogut obrir %s
+OPERATION FAILED: NO LANGUAGE SPECIFIED.=L'operació ha fallat! No s'ha especificat cap idioma.
+OPERATION FAILED: THE FILE IS NOT WRITABLE.=L'operació ha fallat! No es pot escriure al fitxer.
+SIZE=Mida
+WARNOPENFILE=L'operació ha fallat! No s'ha pogut obrir el fitxer per a escriure-hi.
+WRITABLE=Es pot escriure
+YOU CAN NOT DELETE LANGUAGE IN USE.=No ho podeu eliminar perquè aquest idioma és en ús.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_login.ini 12/administrator/language/ca-ES/ca-ES.com_login.ini
--- 11/administrator/language/ca-ES/ca-ES.com_login.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_login.ini	2008-12-31 19:15:02.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.com_login.ini 10388 2008-07-28 19:32:27Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCUSEVALIDLOGIN=Utilitzeu un nom d'usuari i una contrasenya vàlids per a accedir a l'Administració.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_massmail.ini 12/administrator/language/ca-ES/ca-ES.com_massmail.ini
--- 11/administrator/language/ca-ES/ca-ES.com_massmail.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_massmail.ini	2008-12-31 19:15:38.000000000 +0100
@@ -0,0 +1,27 @@
+# $Id: ca-ES.com_massmail.ini 10496 2008-07-28 19:35:06Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALL USER GROUPS=Tots els grups d'usuaris
+BODYSUFFIXTIP=S'afegirà això després del text del correu
+DESCMASSMAIL=Aquest component us permet enviar correus massius a determinats grups d'usuaris
+E-MAIL SENT TO=S'ha enviat el correu electrònic a %s usuaris
+GROUP=Grup
+MAILBODY SUFFIX=Sufix del cos del correu
+MAIL TO CHILD GROUPS=Envia-ho als grups fills
+MASS MAIL=Correu massiu
+PLEASE FILL IN THE FORM CORRECTLY=Si us plau, ompliu correctament el formulari
+PLEASE FILL IN THE SUBJECT=Si us plau, introduïu un assumpte
+PLEASE FILLIN THE MESSAGE=Si us plau, introduïu un missatge
+PLEASE SELECT A GROUP=Si us plau, seleccioneu un grup
+RECIPIENTS AS BCC=Destinataris com a BCC. <br /> Afegeix còpia al correu del lloc.
+SEND AS BLIND CARBON COPY=Amaga la llista de destinatari.
+SEND IN HTML MODE=Envia-ho en mode HTML
+SEND MAIL=Envia el correu
+SUBJECT PREFIX=Prefix de l'assumpte
+SUBJECTPREFIXTIP=S'afegirà això davant l'assumpte del correu
+USERS=Usuaris
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_media.ini 12/administrator/language/ca-ES/ca-ES.com_media.ini
--- 11/administrator/language/ca-ES/ca-ES.com_media.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_media.ini	2008-12-31 19:16:12.000000000 +0100
@@ -0,0 +1,100 @@
+# $Id: ca-ES.com_media.ini 10496 2008-07-28 20:00:40Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CLEAR COMPLETED=Neteja els acabats
+*CLICK FOR IMAGE CODE*=*Feu clic per al codi de la imatge*
+*CLICK FOR URL*=*Feu clic per a l'URL*
+*CLICK TO ENLARGE*=*Feu clic per a ampliar*
+*CLICK TO OPEN*=*Feu clic per a obrir*
+ADD MORE FILES=Afegiu més fitxers
+ADD FILE=Afegeix el fitxer
+ALIGN=Alineació
+BROWSE=Explora
+BROWSE FILES=Explora els fitxers
+CAPTION=Llegenda
+CODE=Codi
+CONFIGURATION PROBLEM=Problema de configuració
+CREATE=Crea
+CREATE FOLDER=Crea una carpeta
+DETAIL VIEW=Vista detallada
+DELETE FILE=Elimina el fitxer
+DELETE FOLDER=Elimina la carpeta
+DELETE ITEM=Elimina l'element
+DESCFTP=Per a penjar, canviar i eliminar fitxers multimèdia, el Joomla! segurament necessitarà els detalls del vostre compte FTP. Si us plau introduïu-los als camps a sota.
+DESCFTPTITLE=Detalls d'entrada a l'FTP
+DIMENSIONS=Dimensions
+DIRECTORIES=Directoris
+DIRECTORY=Directori
+DIRECTORY UP=Directori pare
+DOES NOT EXIST.=no existeix!
+ERROR. UNABLE TO UPLOAD FILE=Error. No es pot carregar el fitxer.
+FILESIZE=Mida del fitxer
+FILES/FOLDERS IN=fitxers/carpetes a
+FIRST.=primer.
+FOLDERS=Carpetes
+HEIGHT=Alçada
+IMAGE CODE=Codi de la imatge
+IMAGE DESCRIPTION=Descripció de la imatge
+IMAGE URL=URL de la imatge
+IMAGE/URL CODE=Codi de la imatge/URL
+IMAGES FOLDER=Carpeta d'imatges
+INSERT=Insereix
+INSERT IMAGE=Insereix una imatge
+INSERT YOUR TEXT HERE=Insereix aquí el text
+JCLIENTHELPER::SETCREDENTIALSFROMREQUEST FAILED=No es pot connectar al servidor amb les credencials donades
+LEGAL EXTENSIONS LABEL=Extensions permeses (tipus de fitxers)
+LEGAL EXTENSIONS DESC=Les extensions (tipus de fitxers) dels fitxers que permeteu penjar (separades per comes).
+LEGAL IMAGE EXTENSIONS LABEL=Extensions d'imatge vàlides (tipus de fitxers)
+LEGAL IMAGE EXTENSIONS DESC=Extensions d'imatge (tipus de fitxers) que permeteu penjar (separades per comes). S'utilitzen per a comprovar encapçalaments d'imatge vàlids.
+RESTRICT UPLOADS=Restringeix les càrregues
+RESTRICT UPLOADS DESC=Restringeix les càrregues per a usuaris amb permisos inferiors a gestor (manager) a solament imatges si Fileinfo o MIME Magic no es troben instal·lats.
+CHECK MIME=Comprova tipus MIME
+CHECK MIME DESC=Utilitza MIME Magic o Fileinfo per mirar de verificar els fitxers. Proveu d'inhabilitar-ho si rebeu errors de tipus MIME no vàlid
+IGNORED EXTENSIONS LABEL=Extensions ignorades
+IGNORED EXTENSIONS DESC=Extensions de fitxer ignorades per a comprovació de tipus MIME i càrregues restringides
+LEGAL MIME TYPES LABEL=Tipus MIME permesos
+LEGAL MIME TYPES DESC=Una llista separada per comes dels tipus MIME permesos per penjar
+ILLEGAL MIME TYPES=Tipus MIME no permesos
+ILLEGAL MIME TYPES DESC=Una llista separada per comes dels tipus MIME no permesos per penjar (llista negra)
+MAX=Màxim =
+MAXIMUM SIZE LABEL=Mida màxima
+MAXIMUM SIZE DESC=La mida màxima per a una càrrega (en bytes). Introduïu zero per a il·limitat. Nota: el vostre servidor té un límit màxim.
+MEDIA MANAGER=Gestor multimèdia
+NAME=Nom de la imatge
+NO IMAGES FOUND=No s'han trobat imatges
+NOT SET=No establert
+NUMFILES=Fitxers:
+NUMFOLDERS=Carpetes:
+PLEASE DELETE ALL FILES/FOLDER IN=Si us plau, elimineu tots els fitxers/carpetes a
+PX=px
+REMOVE FROM QUEUE=Elimina de la cua
+SELECT FILE=Fitxer seleccionat
+SIZE=Mida
+START UPLOAD=Comença a penjar
+TITLE=Títol de la imatge
+THERE ARE=Hi ha
+THIS COMPONENT MANAGES SITE MEDIA=Aquest component gestiona els fitxers multimèdia del lloc web
+THIS FILE TYPE IS NOT SUPPORTED=Aquest tipus de fitxer no és suportat
+THUMBNAIL VIEW=Vista en miniatura
+UNABLE TO DELETE: NOT EMPTY!=No es pot eliminar! No és buit!
+UP=Amunt
+UPLOAD=Penja
+UPLOAD COMPLETE=Càrrega acabada
+UPLOAD FAILED=Ha fallat la càrrega!
+UPLOAD FILE=Penja un fitxer
+UPLOAD FILES=Penja fitxers
+UPLOAD FAILED. FILE ALREADY EXISTS=La càrrega ha fallat! El fitxer ja existeix.
+WARNSAFEMODE=No es permet la creació de directoris durant l'execució en MODE SEGUR (safe mode) ja que pot causar problemes.
+WARNDIRNAME=El nom del directori ha de contenir només caràcters alfanumèrics i no pot contenir espais.
+WARNFILENAME=El nom del fitxer ha de contenir només caràcters alfanumèrics, subratllats, guions i espais.
+WARNFILETYPE=Aquest tipus de fitxer no és suportat.
+WARNFILETOOLARGE=Aquest fitxer és massa gran.
+WARNINVALIDIMG=No és una imatge vàlida.
+WARNINVALIDMIME=S'ha detectat tipus MIME no vàlid o no permès.
+WARNNOTADMIN=El fitxer penjat no és una imatge i no sou gestor o superior.
+WARNIEXSS=S'ha trobat un possible atac IE XSS.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_menus.ini 12/administrator/language/ca-ES/ca-ES.com_menus.ini
--- 11/administrator/language/ca-ES/ca-ES.com_menus.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_menus.ini	2009-03-13 23:41:48.000000000 +0100
@@ -0,0 +1,321 @@
+# $Id: ca-ES.com_menus.ini 11625 2009-03-13 22:59:40Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A DESCRIPTION FOR THE MENU=Una descripció per al menú
+A PROPER TITLE FOR THE MENU=Un títol adequat per al menú
+ADVANCED PARAMETERS=Paràmetres avançats
+ALIAS=Àlies
+ALIGNMENT OF THE IMAGE=Alineació de la imatge
+ALL CATEGORIES=Totes les categories
+ALL SECTIONS=Totes les seccions
+AN ARTICLE=Un article
+ARTICLE=Article
+ARCHIVE=Arxiu
+ARCHIVED ARTICLE LIST LAYOUT DESC=El format d'articles arxivats mostra els articles que han estat arxivats i s'hi poden fer cerques per data.
+ARTICLES COLUMN=Columna d'articles
+AUTHOR ALPHABETICAL=Autor - Ordre alfabètic
+AUTHOR NAMES=Nom de l'autor
+AUTHOR REVERSE-ALPHABETICAL=Autor - Ordre alfabètic invers
+AUTO=Automàtic
+AUTO ADD=Afegeix automàticament
+AUTO HEIGHT=Alçada automàtica
+ATOM=ÀTOM
+BASIC PARAMETERS=Paràmetres bàsics
+BLOG=Bloc
+CANNOT SAVE: EMPTY MENU TYPE=No es pot desar: Tipus de menú buit
+CATEGORY DESCRIPTION=Descripció de la categoria
+CATEGORY LIST - SECTION=Llista de categories - Secció
+CATEGORY NAME=Nom de la categoria
+CATEGORY NAME LINKABLE=Nom de la categoria hipertextual
+CATEGORY ORDER=Ordre de la categoria
+CHANGE MENU ITEM=Canvia l'ítem de menú
+CHANGE TYPE=Canvia el tipus
+CHOOSE A CATEGORY...=Trieu una categoria...
+CHOOSE A SECTION...=Trieu una secció...
+CID=CID
+COLUMNS=Columnes
+COMPLETE RESET LAYOUT=Format de finalització del canvi
+COMPLETE RESET LAYOUT DESC=Crea un format per a la visualització de Canvi de contrasenya acabat
+COMPONENT PARAMETERS=Paràmetres del component
+COMPONENTS=Components
+CONFIRM DELETE MENU TYPE=Confirma l'eliminació de tipus de menú
+CONFIRM RESET LAYOUT=Format de confirmació del canvi
+CONFIRM RESET LAYOUT DESC=Crea un format per a la visualització de Canvi de contrasenya confirmat
+CONTACT TO LINK=Contacte a enllaçar
+CONTENT TO LINK=Contingut a enllaçar
+COPY OF MENU CREATED=S'ha creat la còpia del menú '%s' que conté %s ítem(s) de menú
+COPY MENU=Copia el menú
+COPY MENU ITEMS=Copia el(s) ítem(s) de menú
+COPY TO MENU=Copia al menú
+CREATED DATE AND TIME=Data i hora de creació
+DATE COLUMN=Columna de data
+DATE FORMAT=Format de data
+DEFAULT ITEM LABEL=Ítem de menú per defecte
+DEFAULT ITEM DESC=L'ítem de menú per defecte
+DEFAULT LOGIN LAYOUT DESC=Crea un format per a la visualització per defecte d'Inici de sessió d'usuari
+DEFAULT LOGIN LAYOUT=Format per defecte d'Inici de sessió
+DEFAULT REMIND LAYOUT=Format per defecte de Recordatori
+DEFAULT REMIND LAYOUT DESC=Crea un format per a la visualització per defecte de Recordatori de nom d'usuari
+DEFAULT RESET LAYOUT=Format per defecte de canvi
+DEFAULT RESET LAYOUT DESC=Crea un format per a la visualització per defecte de Canvi de contrasenya
+DEFAULT MENU ITEM SET=Joc per defecte d'ítems de menú
+DEFAULT REGISTER LAYOUT=Format per defecte de Registre
+DEFAULT REGISTER LAYOUT DESC=Crea un format per a la visualització per defecte de Registre d'usuari
+DEFAULT USER LAYOUT=Format per defecte d'Usuari
+DEFAULT USER LAYOUT DESC=Aquest format mostra un missatge de benvinguda quan l'usuari accedeix la zona registrada. Això només s'associa amb el mòdul <em>mod_login</em>.
+DELETE MENU=Elimina el menú
+DESCNEWITEMSLAST=Els nous ítems de menú van per defecte a la darrera posició. L'ordre es pot canviar després de desar l'ítem de menú.
+DESCRIPTION FOR PAGE=Descripció per a la pàgina
+DESCRIPTION IMAGE=Imatge de la descripció
+DESCRIPTION TEXT=Text de la descripció
+DISPLAY IN=Mostra a
+DISPLAY SELECT=Mostra el selector
+EDIT MENU=Feu clic per a editar aquest ítem de menú
+EDIT MENU ITEMS=Edita ítem(s) de menú
+EDIT MENU NAME=Edita el nom del menú
+ELEMENT NOT DEFINED FOR TYPE=L'element no està definit per al tipus de menú
+EMAIL ICON=Icona del correu electrònic
+EMPTY CATEGORIES=Categories buides
+EMPTY CATEGORIES IN SECTION=Categories buides a la secció
+ERROR SAVING MENU ITEM=S'ha produït un error en desar l'ítem de menú
+ERRORMENUNAMEEXISTS=Ja existeix un menú amb aquest nom. Heu d'introduir un nom únic.
+EXTERNAL LINK=Enllaç extern
+EXTERNAL LINK PARAMETERS...=Crea un ítem de menú que enllaci a un altre lloc web.
+FEED DESCRIPTION=Descripció del canal
+FILTER FIELD=Camp de filtre
+FORM=Formulari
+FRONTPAGE=Portada
+HEIGHT=Alçada
+HITS=Visites
+ICON=Icona
+IMAGE ALIGN=Alineació de la imatge
+INACTIVE=Inactiu
+INTERNAL LINK=Enllaç intern
+INVALID ID PROVIDED=S'ha donat un ID no vàlid
+ITEM DESCRIPTION=Descripció de l'ítem
+ITEM MUST HAVE A TITLE=L'ítem ha de tenir un títol
+ITEM RATING=Valoració de l'ítem
+ITEM TITLES=Títols d'ítems
+ITEM(S) SENT TO THE TRASH=S'ha(n) enviat(s) %s ítem(s) a la paperera.
+ITEMID=ID de l'ítem
+LAYOUT=Format
+LEAST HITS=Els menys visitats
+LINK=Enllaç
+LINK DESCRIPTIONS=Descripcions d'enllaços
+LINKED TITLES=Títols hipertextuals
+MAKE YOUR ITEM TITLES LINKABLE=Els títols dels ítems esdevenen enllaços
+MAX LEVELS=Nivells màxims
+MENU=Menú
+MENU BEING COPIED=Menú que es copia
+MENU DETAILS=Menú
+MENU ITEM=Ítem de menú
+MENU ITEM DETAILS=Detalls de l'ítem de menú
+MENU ITEM MOVED DOWN=S'ha mogut avall l'ítem de menú
+MENU ITEM MOVED UP=S'ha mogut amunt l'ítem de menú
+MENU ITEM PARAMETERS=Paràmetres de l'ítem de menú
+MENU ITEM SAVED=S'ha desat l'ítem de menú
+MENU ITEM TYPE=Tipus de l'ítem de menú
+MENU ITEM TO LINK TO...=Ítem de menú per a Enllaçar a...
+MENU ITEMS=Ítems de menú
+MENU ITEMS & MODULES UPDATED=S'han actualitzat els ítems de menú i els mòduls
+MENU ITEMS BEING COPIED=Ítems de menú que es copien
+MENU ITEMS BEING DELETED=Ítems de menú que s'eliminen
+MENU ITEMS BEING MOVED=Ítems de menú que es mouen
+MENU ITEMS COPIED TO=S'han copiat %s ítems de menú a %s
+MENU ITEMS MOVED TO=S'han mogut %s ítems de menú a %s
+MENU ITEMS PUBLISHED=S'han publicat %s ítems de menú
+MENU ITEMS SET PUBLIC=S'han establert a accés públic %s ítems de menú
+MENU ITEMS SET REGISTERED=S'han establert a accés registrat %s ítems de menú
+MENU ITEMS SET SPECIAL=S'han establert a accés especial %s ítems de menú
+MENU ITEMS UNPUBLISHED=S'han retirat %s ítems de menú
+MENU LINK=Enllaç de menú
+MENU LINK PARAMETERS...=Aquest ítem de menú crea un enllaç a un ítem de menú existent. Agafarà la configuració de paràmetres de l'ítem de menú destí.
+MENU TYPE=Nom únic
+MENUS=Menús
+MISCELLANEOUS=Miscel·lània
+MODIFIED DATE AND TIME=Data i hora de modificació
+MODULE TITLE=Títol del mòdul
+MODULE(S) BEING DELETED=Mòduls que s'eliminen
+MODULE NAME=Nom del mòdul
+MOD_MENU=mod_menu
+MOST HITS=Els més visitats
+MOST RECENT FIRST=Els més recents primer
+MOVE MENU ITEMS=Mou ítems de menú
+MOVE TO MENU=Mou al menú
+NAME COLUMN=Columna de nom
+NEW MENU=Nou menú
+NEW MENU CREATED=S'ha creat el nou menú [%s]
+NEW MENU NAME=Nou nom de menú
+NEW MODULE NAME=Nou nom de mòdul
+NUM MODULES=Nombre de mòduls
+NO, ORDER BY PRIMARY ORDER ONLY=No, ordena només per l'ordre primari
+NUM ARTICLES COLUMN=Columna de nombre d'articles
+NUM CATEGORY ITEMS=Nombre d'ítems a la categoria
+NUM INTRO=Amb introducció
+NUM LEADING=Capdavanters
+NUMBER 5=5
+NUMBER 10=10
+NUMBER 15=15
+NUMBER 20=20
+NUMBER 25=25
+NUMBER 30=30
+NUMBER 50=50
+NUMBER 100=100
+NUMBER OF ITEMS TO DISPLAY AS LINKS.=Nombre d'ítems a mostrar com a enllaços.
+OLDEST FIRST=Els més antics primer
+ON CLICK, OPEN IN=En fer clic, obre-ho dins
+OPML=OPML
+ORDER BY=Ordre
+ORDER ITEMS BY CATEGORY=Ordena els ítems per categoria
+ORDER THAT THE ITEMS WILL BE DISPLAYED IN.=L'ordre en el qual es mostraran els ítems.
+OTHER=Altre
+OTHER CATEGORIES=Altres categories
+PAGINATION=Paginació
+PAGINATION RESULTS=Resultats de la paginació
+PARAMADD=Per defecte s'afegirà http:// si no es detecta http:// o https:// a l'enllaç URL que doneu. Això permet desactivar aquesta funcionalitat.
+PARAMETERS - ADVANCED=Paràmetres avançats
+PARAMARTICLES=Mostra/Amaga el nombre d'articles al canal
+PARAMAUTHOR=Mostra/Amaga el nom de l'autor de l'article (només afecta a aquesta pàgina)
+PARAMHORIVERT=Mostra/Amaga les barres de desplaçament horitzontal i vertical.
+PARAMCATDESC=Mostra/Amaga la descripció de la categoria
+PARAMCATEG=Mostra/Amaga la categoria a la qual pertany l'ítem
+PARAMCATEGLINK=El títol de la categoria esdevé un enllaç cap a la categoria
+PARAMCATITEMS=Mostra/Amaga el nombre d'ítems a cada categoria
+PARAMCATLIST=Mostra/Amaga la llista de categories a la visualització en llista
+PARAMCATLISTCAT=Mostra/Amaga la llista de categories a la visualització en taula
+PARAMCOLUMNS=Quan es mostra el text d'introducció, estableix quantes columnes s'utilitzen per fila
+PARAMSHOWHIDE=Mostra/Amaga la descripció de la categoria. Apareixerà sota el nom de la categoria.
+PARAMSHOWHIDELINKS=Mostra/Amaga el text descriptiu dels enllaços
+PARAMCREATEDATE=Mostra/Amaga la data de creació de l'ítem (només afecta a aquesta pàgina)
+PARAMDATEFORMAT=El format amb el qual mostrar la data (utilitzant el format de la comanda strftime del PHP). Si es deixa en blanc s'utilitzarà el format segons el fitxer d'idioma.
+PARAMEMAIL=Mostra/Amaga el botó de correu de l'ítem (només afecta a aquesta pàgina)
+PARAMFEEDDESC=Mostra/Amaga el text descriptiu del canal
+PARAMHEIGHT=Alçada de la finestra IFrame
+PARAMHEIGHTAUTO=L'alçada s'establirà automàticament a la mida de la pàgina externa. Això només funcionarà per a pàgines del vostre propi domini. Si veieu un error de JavaScript, assegureu-vos que aquest paràmetre està inhabilitat. Això interromprà la compatibilitat XHTML per a aquest pàgina.
+PARAMIMAGE=La imatge per a aquesta pàgina ha de ser a la carpeta /images/stories. Seleccioneu la imatge desitjada de la llista desplegable. Si no voleu que es mostri cap imatge trieu <i>'Cap seleccionat'</i>.
+PARAMINTRO=Nombre d'articles a mostrar amb el text d'introducció.
+PARAMITEMDESC=Mostra/Amaga la descripció o el text d'introducció d'un article.
+PARAMLEADING=Nombre d'articles a mostrar com a articles capdavanters (amplada màxima). 0 vol dir que no es mostrarà cap article com a capdavanter.
+PARAMMODIFYDATE=Mostra/Amaga la data de modificació de l'ítem (només afecta a aquesta pàgina)
+PARAMORDERBY=Això sobreescriu l'ordre dels ítems.
+PARAMORDERBYSEC=Ordre en el qual es mostraran els ítems.
+PARAMOTHERCAT=Mostra/Amaga la descripció per a la llista d'altres categories
+PARAMOTHERCATSECTION=Mostra/Amaga la llista de categories a la visualització en llista
+PARAMTABLECATSEC=Mostra/Amaga la llista de categories a la visualització en taula
+PARAMPAGINATIONRESULTS=Mostra/Amaga la informació dels resultats de paginació (ex. 1-4 de 4)
+PARAMPDF=Mostra/Amaga el botó PDF (només afecta a aquesta pàgina)
+PARAMPRINT=Mostra/Amaga el botó d'impressió (només afecta a aquesta pàgina)
+PARAMRATING=Mostra/Amaga la valoració d'ítem (només afecta a aquesta pàgina)
+PARAMSECTIONLINK=El títol de la secció esdevé un enllaç cap a la secció
+PARAMSECURE=Tria si aquest enllaç ha d'utilitzar o no l'SSL i l'URL de lloc segur
+PARAMSHOWFEEDLINK=Tria si es mostraran o no els enllaços del canal
+PARAMSPECCAT=Mostra els contactes només de la categoria seleccionada
+PARAMWIDTH=Amplada de la finestra iframe. Podeu introduir una mida absoluta en píxels o bé una relativa afegint un %.
+PARAMWORDCOUNT=Permet limitar la quantitat de descripció visible. 0 mostrarà tot el text.
+PARAMWHENVIEWCAT=En visualitzar una categoria, Mostra/Amaga la llista de les altres categories
+PARAMETERS - BASIC=Paràmetres (Bàsic)
+PARAMETERS - COMPONENT=Paràmetres (Component)
+PARAMETERS - SYSTEM=Paràmetres (Sistema)
+PDF ICON=Icona PDF
+PLEASE ENTER A MENU NAME=Si us plau introduïu un nom (no repetit) per al menú
+PLEASE ENTER A MODULE NAME FOR YOUR MENU=Si us plau introduïu un nom de mòdul per al menú
+PLEASE ENTER A NAME FOR THE COPY OF THE MENU=Si us plau introduïu un nom per a la còpia del menú.
+PLEASE ENTER A NAME FOR THE NEW MODULE=Si us plau introduïu un nom per al nou mòdul.
+PLEASE SELECT A CATEGORY=Si us plau seleccioneu una categoria
+PLEASE SELECT A MENU FROM THE LIST=Si us plau seleccioneu un menú de la llista
+PLEASE SELECT AN ARTICLE=Si us plau seleccioneu un article
+POLL=Enquesta
+PRIMARY ORDER=Ordre primari
+READ MORE=Llegiu-ne més...
+RSS=RSS
+SCROLL BARS=Barres de desplaçament
+SEARCH=Cerca
+SECTION NAME=Nom de la secció
+SECTION NAME LINKABLE=Nom de la secció hipertextual
+SECTION TITLE=Títol de la secció
+SELECT=Selecciona
+SELECT AN ARTICLE=Seleccioneu un article
+SELECT ARTICLE=Seleccioneu l'article
+SELECT ITEM=Seleccioneu l'ítem
+SELECT MENU ITEM TYPE=Seleccioneu el tipus d'ítem de menú
+SEPARATOR=Separador
+SEPARATOR PARAMETERS...=Aquest ítem de menú crea un agafador d'espai o un separador dins el menú. <br />S'utilitza per a classificar menús llargs o per a afegir ítems de menú provisionals que ajudin a la visualització del menú.
+SHOW AUTHOR=Mostra l'autor
+SHOW CREATED DATE AND TIME=Mostra la data i hora de creació
+SHOW A FEED LINK=Mostra un enllaç del canal
+SHOW THE SEARCH AREAS CHECKBOXES=Mostra les caselles de selecció de les àrees de cerca
+SHOW/HIDE EMPTY(NO ITEMS) CATEGORIES=Mostra/Amaga les categories buides (sense ítems)
+SHOW/HIDE EMPTY(NO ITEMS) CATEGORIES IN SECTION VIEW=Mostra/Amaga categories buides (sense ítems) a la visualització de secció
+SHOW/HIDE PAGINATION SUPPORT=Mostra/Amaga el suport de paginació
+SHOW/HIDE THE CATEGORY DESCRIPTION=Mostra/Amaga la descripció de la categoria
+SHOW/HIDE THE CATEGORY IMAGE=Mostra/Amaga la imatge de la categoria
+SHOW/HIDE THE DATE COLUMN=Mostra/Amaga la columna Data
+SHOW/HIDE THE DESCRIPTION BELOW=Mostra/Amaga la descripció a sota
+SHOW/HIDE THE DISPLAY SELECT DROPDOWN=Mostra/Amaga el desplegable de selecció de visualització
+SHOW/HIDE THE FEED LINK COLUMN=Mostra/Amaga la columna d'enllaços del canal
+SHOW/HIDE THE FEED NAME COLUMN=Mostra/Amaga la columna de nom del canal
+SHOW/HIDE THE FILTER ABILITY=Mostra/Amaga el filtre
+SHOW/HIDE THE IMAGE OF THE FEED=Mostra/Amaga la imatge del canal
+SHOW/HIDE THE ITEMS TITLE=Mostra/Amaga el títol de l'ítem
+SHOW/HIDE THE TABLE HEADINGS=Mostra/Amaga els encapçalaments de taula
+SSL ENABLED=SSL habilitat
+STEP=Pas
+SUBMIT=Tramet
+TABLE HEADINGS=Encapçalaments de taula
+TELEPHONE COLUMN=Columna de telèfon
+THE DEFAULT MENU ITEM MUST BE PUBLISHED=L'ítem de menú per defecte ha de publicar-se.
+THE MENU NAME CANNOT CONTAIN A '=El nom del menú no pot contenir el caràcter <dfn title="apòstrof">'</dfn>.
+THERE ARE NO PARAMETERS FOR THIS ITEM=No hi ha paràmetres per a aquest ítem de menú
+THERE ARE NO ADVANCED PARAMETERS FOR THIS ITEM=No hi ha paràmetres avançats per a aquest ítem de menú
+TIPLINKS=Si trieu 'Sí', els enllaços a continguts registrats es mostraran fins i tot si no teniu sessió iniciada. L'usuari haurà d'iniciar sessió per a veure l'article complet.
+TIPIFYESTITLECONTENTITEMS=Si trieu 'Sí', els títols dels articles esdevindran enllaços als propis articles.
+TIPIFSETTOSHOWAUTHOR=Si trieu 'Mostra' es mostrarà el nom de l'autor. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'ítem.
+TIPIFSETTOSHOWDATETIMECREATED=Si trieu 'Mostra' es mostrarà la data i hora de creació de l'article. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'ítem.
+TIPIFSETTOSHOWDATETIMEMODIFIED=Si trieu 'Mostra' es mostrarà la data de l'última modificació de l'article. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'ítem.
+TIPIFSETTOSHOWREADMORELINK=Si trieu 'Mostra' es mostrarà l'enllaç "Llegiu-ne més..." si proporcioneu text principal a l'article.
+TIPIFSETTOSHOWVOTING=Si trieu 'Mostra' s'habilitarà un sistema de votació per als articles.
+TIPPRINTPDFEMAIL=Les funcions d'impressió, PDF i correu electrònic es representaran per icones o per text
+TIPIFSETTOSHOWHITS=Si trieu 'Mostra' es mostrarà el nombre de visites d'un article en particular. Aquest és un paràmetre global però es pot canviar a nivell de menú i d'article.
+TIPNAMEUSEDTOIDENTIFYMENU=Aquest és el nom utilitzat pel Joomla! per a identificar aquest menú dins el codi i per tant ha de ser únic. Recomanem que no poseu espais en aquest nom
+TIPPARAMLISTMENUITEM=La llista de paràmetres serà disponible quan deseu aquest nou ítem de menú.
+TIPTITLEMAINMENUMODULEREQUIRED=El títol que es donarà al mòdul <code>mod_mainmenu</code> al gestor de mòduls. Si es deixa en blanc, no es crearà cap mòdul i el menú no es podrà mostrar al lloc públic.
+TITLE ALPHABETICAL=Títol (Ordre alfabètic)
+TITLE REVERSE-ALPHABETICAL=Títol (Ordre alfabètic invers)
+TYPE=Tipus
+TYPEARTICLAYDESC=Trieu un format de visualització d'article.
+TYPEARCHLAYDESC=Trieu un format de visualització d'arxiu.
+TYPECATEGLAYDESC=Trieu un format de visualització de categoria.
+TYPECATEGORIESDESC=Aquesta visualització mostra totes les categories d'enllaços web
+TYPECATEGORYDESC=Aquesta visualització mostra una categoria d'enllaços web
+TYPEFRONTLAYDESC=La portada és una visualització especialitzada del component d'articles que mostra articles seleccionats específicament per mostrar-se a la portada.
+TYPELOGINDESC=Trieu un format de visualització d'inici de sessió.
+TYPEREGISTERDESC=Crea un nou format per al formulari Registre
+TYPEREMINDDESC=Crea un nou format per al formulari Recordatori de contrasenya
+TYPERESETDESC=Crea un nou format per al formulari Canvi de contrasenya
+TYPESECTLAYDESC=Trieu un format de visualització de secció.
+TYPEPOLLDESC=Crea un nou format de visualització d'enquestes.
+TYPESEARCHDESC=Crea un nou format de visualització de cerques.
+TYPEUSERDESC=Crea nous formats de visualització associats a usuaris
+TYPEWEBLINKDESC=Aquesta visualització mostra el format d'un sol enllaç web
+TYPEWRAPPERDESC=Aquesta visualització mostra el format d'un wrapper
+URL TO OPEN IN AN IFRAME=URL per a obrir en un IFrame
+USE SEARCH AREAS=Utilitza les àrees de cerca
+USER FORM LAYOUT=Format de formulari d'usuari
+USER FORM LAYOUT DESC=Aquest format permet a un usuari editar els detalls del seu compte, triar una nova contrasenya, la preferència d'idioma tant per al backend com per al lloc públic, així com també la zona horària. <br />Els usuaris amb permisos de publicació també podran triar un editor de text. <br />Els usuaris amb permisos d'administrador podran triar també quin lloc d'ajuda utilitzar al backend.
+USER SELF-MANAGEMENT=Autogestió d'usuaris
+VIEW MENUS=Mostra els menús
+VIEW MENU ITEMS=Mostra els ítems de menú
+WEB LINK=Enllaç web
+WHICH FIELD SHALL THE FILTER APPLY TO=Seleccioneu a quin camp s'ha d'aplicar el filtre
+WORD COUNT=Comptatge de paraules
+WRAPPER=Wrapper
+WRAPPER URL=URL del wrapper
+YOU CANNOT TRASH THE DEFAULT MENU ITEM=No podeu enviar a la paperera l'ítem de menú per defecte.
+YOU CANNOT UNPUBLISH THE DEFAULT MENU ITEM=No podeu retirar l'ítem de menú per defecte.
+ARTICLE ORDER=Ordre d'article
+ORDER THAT THE ARTICLES WILL BE DISPLAYED IN.=Ordre en què es mostraran els articles.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_menus.menu.ini 12/administrator/language/ca-ES/ca-ES.com_menus.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_menus.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_menus.menu.ini	2008-12-31 19:17:08.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.com_menus.menu.ini 10388 2008-07-29 11:26:33Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select a Menu Item from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau trieu un ítem de menú de la llista per a %s
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_messages.ini 12/administrator/language/ca-ES/ca-ES.com_messages.ini
--- 11/administrator/language/ca-ES/ca-ES.com_messages.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_messages.ini	2008-12-31 19:17:34.000000000 +0100
@@ -0,0 +1,35 @@
+# $Id: ca-ES.com_messages.ini 10496 2008-07-29 11:50:11Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A NEW PRIVATE MESSAGE HAS ARRIVED=Ha arribat un nou missatge privat de %s
+ARE YOU SURE?=Esteu segur?
+AUTO PURGE MESSAGES=Purga automàtica de missatges
+DAYS OLD=dies d'antiguitat
+FROM=De
+GENERAL=General
+LOCK INBOX=Bloqueja la safata d'entrada
+MAIL ME ON NEW MESSAGE=Envia'm un correu en cas de nou missatge
+MESSAGE_FAILED=Ha fallat el missatge. L'usuari ha bloquejat la seva bústia.
+NEW PRIVATE MESSAGE=Nou missatge privat
+PLEASE LOGIN TO READ YOUR MESSAGE=Inicieu sessió a %s per a llegir el missatge.
+POSTED=Enviat
+PRIVATE MESSAGING=Missatgeria privada
+PRIVATE MESSAGING CONFIGURATION=Configuració de la missatgeria privada
+READ=Llegit
+REPLY=Respon
+SELECT STATE=Seleccioneu estat
+SELECT USER=Seleccioneu usuari
+SEND=Envia
+SETTINGS=Configuració
+TO=A
+UNREAD=No llegit
+VIEW PRIVATE MESSAGE=Mostra el missatge privat
+WRITE PRIVATE MESSAGE=Escriu un missatge privat
+YOU MUST PROVIDE A MESSAGE.=Heu d'introduir un missatge.
+YOU MUST PROVIDE A SUBJECT.=Heu d'introduir un assumpte.
+YOU MUST SELECT A RECIPIENT.=Heu de seleccionar un destinatari.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_modules.ini 12/administrator/language/ca-ES/ca-ES.com_modules.ini
--- 11/administrator/language/ca-ES/ca-ES.com_modules.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_modules.ini	2008-12-31 19:18:04.000000000 +0100
@@ -0,0 +1,78 @@
+# $Id: ca-ES.com_modules.ini 10496 2008-07-29 13:31:18Z dverger  ~0 $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADMIN=administració
+ADMINISTRATOR=Administrador
+ADMIN MENU=Menú de l'administració
+ADMIN SUBMENU=Submenú de l'administració
+ALL=Tots
+CACHE TIME=Temps de la memòria cau
+CACHING=Utilitza la memòria cau
+COMPONENT LIST=Llista de components
+COPY OF=Còpia de %s
+CUSTOM HTML=HTML personalitzat
+CUSTOM OUTPUT=Sortida personalitzada
+EDIT=Edita
+EDIT MENU=Feu clic per a editar aquest menú
+EDIT MODULE=Feu clic per a editar aquest mòdul
+FEED DISPLAY=Visualització del canal
+FOOTER=Peu de pàgina
+GO=Vés
+ITEMS STATS=Estadístiques d'ítem
+LATEST NEWS=Informacions darreres
+LOGGED IN USERS=Usuaris amb sessió iniciada
+LOGIN FORM=Formulari d'inici de sessió
+MENU TAG ID=Etiqueta ID del menú
+MODULE=Mòdul
+MODULE_POSITION_TIP_TEXT=Podeu seleccionar una posició per al mòdul del quadre combinat desplegable o bé introduir la vostra pròpia posició teclejant el nom.
+MODULE_POSITION_TIP_TITLE=Posicions de mòdul
+MODULE CLASS SUFFIX=Sufix de classe de mòdul
+MODULE MANAGER=Gestor de mòduls
+MODULE MUST HAVE A TITLE=El mòdul ha de tenir un títol
+MODULE NAME=Nom del mòdul
+MODULE PARAMETERS=Paràmetres del mòdul
+MODULE TYPE=Tipus de mòdul
+MODULE(S)=Mòdul(s)
+MODULES=Mòduls
+MENU ASSIGNMENT=Assignació de menú
+NEVER=Mai
+NEW MODULE=Nou mòdul
+NEW=Nou
+NO CACHING=No utilitzis la memòria cau
+NUM=Núm.
+ONLINE USERS=Usuaris en línia
+PAGES=Pàgines
+PARAMMODULECLASSSUFFIX=Sufix per a aplicar a la classe CSS del mòdul. Això permet el disseny individual del mòdul.
+POPULAR ITEMS=Articles populars
+PUBLISH=Habilita
+PUBLISH ITEM=Habilita el mòdul
+PUBLISHED=Habilitat
+RESET=Reinicialitza
+SELECT FROM LIST=Trieu almenys un ítem de menú de la llista
+SELECT WHETHER TO CACHE THE CONTENT OF THIS MODULE=Seleccioneu si voleu utilitzar la memòria cau per a aquest mòdul
+SELECT POSITION=Seleccioneu una posició
+SELECT TEMPLATE=Seleccioneu una plantilla
+SELECT TYPE=Seleccioneu un tipus
+SHOW TITLE=Mostra el títol
+SITE MODULES=Mòduls del lloc
+THE TIME BEFORE THE MODULE IS RECACHED=El temps en minuts abans que es regeneri la memòria cau del mòdul.
+THERE ARE NO PARAMETERS FOR THIS ITEM=No hi ha paràmetres per a aquest mòdul
+THIS MODULE DISPLAYS THE BREADCRUMBS=Aquest mòdul mostra la ruta de navegació
+THIS MODULE ALLOWS THE DISPLAYING OF A SYNDICATED FEED=Aquest mòdul permet la visualització d'un canal d'informació
+TOOLBAR=Barra d'eines
+UNASSIGNED=No assignat
+UNPUBLISH=Inhabilita
+UNPUBLISH ITEM=Inhabilita el mòdul
+UNPUBLISHED=Inhabilitat
+UNREAD ITEMS=Missatges no llegits
+USER STATUS=Estat de l'usuari
+VARIES=Varis
+WARNMAINMENU=No podeu eliminar el mòdul <em>mod_mainmenu</em> perquè és un menú del nucli.
+WARNMODULES=no poden ser eliminats, només poden desinstal·lar-se ja que són mòduls del Joomla!
+YOU CAN ONLY PREVIEW NEW MODULES.=Només podeu previsualitzar nous mòduls.
+WHO'S ONLINE=Qui està en línia
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_newsfeeds.ini 12/administrator/language/ca-ES/ca-ES.com_newsfeeds.ini
--- 11/administrator/language/ca-ES/ca-ES.com_newsfeeds.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_newsfeeds.ini	2009-01-10 18:52:38.000000000 +0100
@@ -0,0 +1,81 @@
+# $Id: ca-ES.com_newsfeeds.ini 11371 2009-01-10 18:44:15Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A FEED=Un canal
+ALIGNMENT OF THE IMAGE=Alineació de la imatge.
+CACHE DIRECTORY=Directori de la memòria cau
+CACHE TIME=Temps de la memòria cau
+CATEGORY DESCRIPTION=Descripció de la categoria
+CATEGORIES GROUP=Totes les categories
+CATEGORIES GROUP DESC=Aquesta visualització mostra totes les categories de canal d'informació.
+CATEGORY GROUP=Categoria
+CATEGORY GROUP DESC=Aquesta visualització mostra una categoria de canal d'informació.
+CATEGORY LIST - CATEGORY=Llista de categories  (Categoria)
+CATEGORY LIST - SECTION=Llista de categories  (Secció)
+CHANGES TO NEWSFEED SAVED=S'han desat els canvis al canal d'informació
+DESCNEWITEMSLAST=Els nous canals d'informació van per defecte a la darrera posició. L'ordre es pot canviar després de desar el canal d'informació.
+DESCRIPTION FOR PAGE=Descripció per a la pàgina
+DESCRIPTION TEXT=Text descriptiu
+EDIT NEWSFEED=Edita el canal d'informació
+FEED=Canal
+FEED DESCRIPTION=Descripció del canal
+IMAGE ALIGN=Alineació de la imatge
+INDIVIDUAL FEED GROUP=Canal individual
+INDIVIDUAL FEED GROUP DESC=Aquesta visualització mostra un sol canal d'informació.
+ITEM DESCRIPTION=Descripció de l'ítem
+LEFT TO RIGHT DIRECTION=Direcció d'esquerra a dreta
+LINK=Enllaç
+LINK COLUMN=Columna d'enllaç
+NAME COLUMN=Columna de nom
+NEWS FEED=Nom del canal d'informació
+NEWSFEED=Canal d'informació
+NEWSFEED CATEGORY LAYOUT=Format de categoria
+NEWSFEED CATEGORY LAYOUT DESC=Aquest format mostra una llista dels canals d'informació a una categoria.
+NEWSFEED CATEGORY LIST LAYOUT=Format de llista de categories
+NEWSFEED CATEGORY LIST LAYOUT DESC=Aquest format mostra una llista de totes les categories de canals d'informació.
+NEWSFEED LAYOUT=Format de canal d'informació
+NEWSFEED MANAGER=Gestor de canals d'informació
+NEWSFEED SINGLE LAYOUT=Format de canal individual
+NEWSFEED SINGLE LAYOUT DESC=Aquest format mostra un sol canal d'informació.
+NEWSFEED SAVED=S'ha desat el canal d'informació
+NUM CATEGORY ITEMS=Nombre d'ítems a la categoria
+NUM ARTICLES=Nombre d'articles
+NUM ARTICLES COLUMN=Columna de nombre d'articles
+NUMBER OF ARTICLES=Nombre d'articles
+PARAMARTICLES=Mostra/Amaga els nombre d'articles del canal
+PARAMCATDESC=Mostra/Amaga la descripció de la categoria
+PARAMCATSELECT=Categoria del canal d'informació (opcional)
+PARAMCATITEMS=Mostra/Amaga el nombre d'ítems de cada categoria
+PARAMFEEDDESC=Mostra/Amaga el text descriptiu del canal
+PARAMIMAGE=La imatge per a la pàgina ha de ser a la carpeta /images/stories. Per defecte es carregarà web_links.jpg. 'Cap imatge' vol dir que no es carregarà cap imatge.
+PARAMITEMDESC=Mostra/Amaga la descripció o el text d'introducció d'un ítem
+PARAMOTHERCAT=Mostra/Amaga la llista de categories a la visualització en taula
+PARAMOTHERCATSECTION=Mostra/Amaga la llista de categories a la visualització en llista
+PARAMWORDCOUNT=Permet limitar la quantitat de descripció visible. 0 mostrarà tot el text.
+PLEASE FILL IN THE CACHE REFRESH TIME.=Si us plau, introduïu el temps de refresc de la memòria cau.
+PLEASE FILL IN THE NEWSFEED LINK.=Si us plau, introduïu l'enllaç del canal d'informació.
+PLEASE FILL IN THE NEWSFEED NAME.=Si us plau, introduïu el nom del canal d'informació.
+PLEASE SELECT A FEED=Seleccioneu un canal
+RTL FEED=Canal en RTL (Right to Left, de dreta a esquerra)
+RIGHT TO LEFT DIRECTION=Direcció de dreta a esquerra
+SELECT FEED=Seleccioneu el canal
+SHOW/HIDE THE DESCRIPTION BELOW=Mostra/Amaga la descripció a sota
+SHOW/HIDE THE FEED LINK COLUMN=Mostra/Amaga la columna d'enllaç del canal
+SHOW/HIDE THE FEED NAME COLUMN=Mostra/Amaga la columna de nom del canal
+SHOW/HIDE THE IMAGE OF THE FEED=Mostra/Amaga la imatge del canal
+SHOW LIMIT BOX=Mostra el quadre de limitació
+SHOW/HIDE THE LIMIT BOX=Mostra/Amaga el quadre de limitació
+SHOW/HIDE THE TABLE HEADINGS=Mostra/Amaga els encapçalaments de taula
+SITE LANGUAGE DIRECTION=Direcció de l'idioma del lloc
+TABLE HEADINGS=Encapçalaments de taula
+THIS COMPONENT MANAGES RSS/RDF NEWSFEEDS=Aquest component gestiona els canals d'informació RSS/RDF
+TIPCACHETIME=El nombre de minuts abans que no es refresqui la memòria cau dels canals d'informació.
+UNWRITABLE=No es pot escriure
+VALIDARTICLESDISPLAY=Si us plau, introduïu el nombre d'articles a mostrar.
+WORD COUNT=Comptatge de paraules
+WRITABLE=Es pot escriure
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_newsfeeds.menu.ini 12/administrator/language/ca-ES/ca-ES.com_newsfeeds.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_newsfeeds.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_newsfeeds.menu.ini	2008-12-31 19:19:02.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.com_newsfeeds.menu.ini 10388 2008-07-29 13:45:39Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COM_NEWSFEEDS=Canals d'informació
+COM_NEWSFEEDS.FEEDS=Canals
+COM_NEWSFEEDS.CATEGORIES=Categories
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_plugins.ini 12/administrator/language/ca-ES/ca-ES.com_plugins.ini
--- 11/administrator/language/ca-ES/ca-ES.com_plugins.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_plugins.ini	2008-12-31 19:19:42.000000000 +0100
@@ -0,0 +1,32 @@
+# $Id: ca-ES.com_plugins.ini 10388 2008-07-29 13:47:23Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+FOLDER=Directori
+PLUGIN=Connector
+PLUGIN DETAILS=Detalls del connector
+PLUGIN FILE=Fitxer del connector
+PLUGIN MANAGER=Gestor de connectors
+PLUGIN MUST HAVE A FILENAME=El fitxer del connector ha de tenir un nom
+PLUGIN MUST HAVE A NAME=El connector ha de tenir un nom
+PLUGIN NAME=Nom del connector
+PLUGIN PARAMETERS=Paràmetres del connector
+PUBLISH=Habilita
+PUBLISH ITEM=Habilita el connector
+PUBLISHED=Habilitat
+NO PARAMETERS=Sense paràmetres
+SELECT A PLUGIN TO=Seleccioneu un connector per a
+SELECT TYPE=Seleccioneu un tipus
+SITE=Lloc
+SITE PLUGIN=Connector del lloc
+SUCCESSFULLY SAVED CHANGES TO PLUGIN=S'han desat amb èxit els canvis al connector: %s
+SUCCESSFULLY SAVED PLUGIN=S'ha desat amb èxit el connector: %s
+THERE ARE NO PARAMETERS FOR THIS ITEM=No hi ha paràmetres per a aquest connector
+THIS PLUGIN CANNOT BE REORDERED=Aquest connector no pot ser reordenat
+UNPUBLISH=Inhabilita
+UNPUBLISH ITEM=Inhabilita el connector
+UNPUBLISHED=Inhabilitat
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_poll.ini 12/administrator/language/ca-ES/ca-ES.com_poll.ini
--- 11/administrator/language/ca-ES/ca-ES.com_poll.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_poll.ini	2008-12-31 19:20:12.000000000 +0100
@@ -0,0 +1,36 @@
+# $Id: ca-ES.com_poll.ini 10496 2008-07-29 13:52:17Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A POLL=Una enquesta
+ALL=Tots
+CHANGES TO POLL SAVED=S'han desat els canvis a l'enquesta
+(SECONDS BETWEEN VOTES)=(segons entre vots)
+EDIT POLL=Edita l'enquesta
+LAG=Retard
+MENU ITEM LINK(S)=Enllaç(os) als ítems de menú
+OPTION=Opció
+OPTIONS=Opcions
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select a Poll from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau seleccioneu una enquesta de la llista per a %s
+PLEASE SELECT A POLL=Seleccioneu una enquesta
+POLL=Enquesta
+POLL LAYOUT=Format d'enquesta
+POLL MANAGER=Gestor d'enquestes
+POLL MUST HAVE A NON-ZERO LAG TIME=L'enquesta ha de tenir un retard diferent de zero
+POLL MUST HAVE A TITLE=L'enquesta ha de tenir un títol
+POLL TITLE=Títol de l'enquesta
+POLL SAVED=S'ha desat l'enquesta
+SELECT POLL=Selecciona l'enquesta
+SHOW ON MENU ITEMS=Mostra als ítems de menú
+STANDARD POLL LAYOUT DESC=El format d'enquesta mostra els resultats de l'enquesta.
+THE POLL=L'enquesta
+THIS COMPONENT MANAGES POLLS=Aquest component gestiona les enquestes
+UNASSIGNED=No assignat
+VOTES=Vots
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_poll.menu.ini 12/administrator/language/ca-ES/ca-ES.com_poll.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_poll.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_poll.menu.ini	2008-12-31 19:21:12.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.com_poll.menu.ini 10388 2008-07-29 13:53:38Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COM_POLL=Enquestes
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_search.ini 12/administrator/language/ca-ES/ca-ES.com_search.ini
--- 11/administrator/language/ca-ES/ca-ES.com_search.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_search.ini	2008-12-31 19:21:44.000000000 +0100
@@ -0,0 +1,21 @@
+# $Id: ca-ES.com_search.ini 10388 2008-07-29 14:51:06Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCSEARCH=Aquest component gestiona la funcionalitat de cerca.
+GATHER SEARCH STATISTICS=Proveeix-te de les estadístiques de cerca
+HIDE SEARCH RESULTS=Amaga els resultats de la cerca
+RESULTS RETURNED=Resultats tornats
+SEARCH LOGGING=Registre de cerca
+SEARCH STATISTICS=Estadístiques de cerca
+SEARCH TEXT=Text de les cerques
+SHOW CREATED DATE=Mostra la data de creació
+SHOW SEARCH RESULTS=Mostra els resultats de la cerca
+STANDARD SEARCH FORM=Formulari estàndard de cerca
+STANDARD SEARCH LAYOUT DESC=El format estàndard de cerca mostra el formulari de cerca i els resultats.
+TIMES REQUESTED=Vegades demanat
+TIPSEARCHSTATISTICS=Habilita/Inhabilita aplegar estadístiques del lloc
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_search.menu.ini 12/administrator/language/ca-ES/ca-ES.com_search.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_search.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_search.menu.ini	2008-12-31 19:22:14.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.com_search.menu.ini 10388 2008-07-29 14:52:03Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COM_SEARCH=Cerca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_sections.ini 12/administrator/language/ca-ES/ca-ES.com_sections.ini
--- 11/administrator/language/ca-ES/ca-ES.com_sections.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_sections.ini	2008-12-31 19:22:44.000000000 +0100
@@ -0,0 +1,50 @@
+# $Id: ca-ES.com_sections.ini 10388 2008-07-29 14:55:33Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ARTICLES BEING COPIED=Articles que es copien
+CANNOT PUBLISH AN EMPTY SECTION=No es pot publicar una secció buida
+CATEGORIES BEING COPIED=Categories que es copien
+CHANGES TO SECTION SAVED=S'han desat els canvis a la secció.
+COPY SECTION=Copia la secció
+COPY TO SECTION=Copia a la secció
+DESCCATANDITEMSCOPIED=La secció %s i totes les seves categories i articles han estat copiats com a %s
+DESCALLITEMSWITHINCAT=i tots els articles dins la categoria (també els llistats)
+DESCCANNOTBEREMOVED=Secció(ns): %s no es pot eliminar ja que conté(enen) categories
+DESCNEWITEMSLAST=Les noves seccions van per defecte a la darrera posició. L'ordre es pot canviar després de desar la secció.
+DESCNEWMENUITEM=Això crea un nou ítem de menú al menú que seleccioneu
+GO TO MENU=Aneu al menú
+GO TO MENU ITEM=Aneu a l'ítem de menú
+IMAGE POSITION=Posició de la imatge
+ITEM NAME=Nom de l'ítem
+MENU=Menú
+MENUTYPE SUCCESSFULLY CREATED=%s ( %s ) al menú: %s s'ha creat amb èxit
+NEW SECTION=Nova secció
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select a Section from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau trieu una secció de la llista per a %s
+PLEASE SELECT A MENU TYPE=Si us plau seleccioneu un tipus de menú
+PUBLISH ITEM=Publica aquesta secció
+SCOPE=Abast
+SECTION BLOG=Bloc de la secció
+SECTION DETAILS=Detalls de la secció
+SECTION ID=Id. de la secció
+SECTION LIST=Llista de seccions
+SECTION MANAGER=Gestor de seccions
+SECTION MUST HAVE A TITLE=La secció ha de tenir un títol
+SECTION SAVED=S'ha desat la secció
+SECTION TABLE=Taula de la secció
+SECTIONS SUCCESSFULLY DELETED=S'ha(n) eliminat amb èxit la(es) secció(ons): %s
+SELECT A SECTION TO=Seleccioneu una secció per a
+SELECT A SECTION TO DELETE=Seleccioneu una secció per a eliminar
+SELECT TYPE=Seleccioneu un tipus
+SUCCESSFULLY DELETED=Eliminat amb èxit
+THE NEW SECTION TITLE=El nou títol de la secció
+THE SECTION=La secció
+TO THE NEW SECTION CREATED.=a la nova secció creada.
+UNPUBLISH ITEM=Retira aquesta secció
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_templates.ini 12/administrator/language/ca-ES/ca-ES.com_templates.ini
--- 11/administrator/language/ca-ES/ca-ES.com_templates.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_templates.ini	2008-12-31 19:23:38.000000000 +0100
@@ -0,0 +1,67 @@
+# $Id: ca-ES.com_templates.ini 10496 2008-07-29 15:08:25Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADMINISTRATOR=Administrador
+ASSIGNED=Assignat
+AUTHOR INFORMATION=Nom i detalls de l'autor
+CONTENT EMPTY.=El contingut és buit.
+COULD NOT MAKE THE CSS FILE WRITABLE=No s'han pogut donar permisos d'escriptura al fitxer css
+COULD NOT MAKE THE CSS FILE UNWRITABLE=No s'han pogut revocar els permisos d'escriptura al fitxer css
+COULD NOT MAKE THE TEMPLATE FILE WRITABLE=No s'han pogut donar permisos d'escriptura al fitxer de plantilla
+COULD NOT MAKE THE TEMPLATE FILE UNWRITABLE=No s'han pogut revocar els permisos d'escriptura al fitxer de plantilla
+COULD NOT MAKE THE TEMPLATE PARAMETER FILE WRITABLE=No s'han pogut donar permisos d'escriptura al fitxer de paràmetres de la plantilla
+COULD NOT MAKE THE TEMPLATE PARAMETER FILE UNWRITABLE=No s'han pogut revocar els permisos d'escriptura al fitxer de paràmetres de la plantilla
+COULD NOT OPEN=No s'ha pogut obrir
+DESCFTP=Per a l'edició de plantilles i canvis als paràmetres de les plantilles, el Joomla! segurament necessitarà els detalls del vostre compte FTP. Si us plau introduïu-los als camps a sota.
+DESCFTPTITLE=Detalls d'entrada a l'FTP
+EDIT CSS=Edita els CSS
+EDIT HTML=Edita l'HTML
+FAILED TO OPEN FILE FOR WRITING.=No s'ha pogut obrir el fitxer %s per a escriure-hi.
+FILED SAVED=S'ha desat el fitxer
+IS=és
+IS NOT WRITABLE.=no s'hi pot escriure.
+JCLIENTHELPER::SETCREDENTIALSFROMREQUEST FAILED=No es pot connectar al servidor amb les credencials donades
+MANAGE POSITIONS=Gestiona les posicions
+MODULE POSITIONS=Posició dels mòduls
+NO PREVIEW AVAILABLE=No hi ha cap previsualització disponible
+NO TEMPLATE SPECIFIED.=No s'ha especificat cap plantilla.
+OPEN IN NEW WINDOW=Obre en una nova finestra
+OPERATION FAILED=L'operació ha fallat!
+OPERATION FAILED COULD NOT OPEN=L'operació ha fallat! No s'ha pogut obrir %s
+OPERATION FAILED IS NOT WRITABLE=L'operació ha fallat! No es pot escriure a %s
+PAGE(S)=Pàgina(es)
+PARAMS=Paràmetres
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select a Template from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau trieu una plantilla de la llista per a %s
+POSITIONS=Posicions
+POSITIONS SAVED=S'han desat les posicions
+PREVIEW TEMPLATE=Previsualitza la plantilla
+SITE=Lloc
+SITE PREVIEW=Previsualització del lloc
+TEMPLATE=Plantilla
+TEMPLATE CSS EDITOR=Editor dels CSS de plantilla
+TEMPLATE_CSS.CSS IS=El fitxer CSS és
+TEMPLATE HTML EDITOR=Editor de l'HTML de plantilla
+TEMPLATE MANAGER=Gestor de plantilles
+TEMPLATE PARAMETERS=Paràmetres de la plantilla
+TEMPLATE NAME=Nom de la plantilla
+TEMPLATE NOT SPECIFIED=No heu especificat la plantilla
+TEMPLATE SOURCE SAVED=S'ha desat el codi font de la plantilla
+THE FILE IS NOT WRITABLE.=No es pot escriure al fitxer.
+THERE ARE NO PARAMETERS FOR THIS ITEM=No hi ha paràmetres per a aquest ítem.
+THIS FILE IS=Aquest fitxer és
+YOU CAN NOT DELETE TEMPLATE IN USE.=No podeu eliminar una plantilla que s'està utilitzant.
+WRONG FILE TYPE GIVEN, ONLY CSS FILES CAN BE EDITED.=Heu donat un tipus de fitxer erroni. Només es poden editar els arxius CSS.
+MENU ASSIGNMENT=Assignació de menú
+CANNOT ASSIGN DEFAULT TEMPLATE=No es pot assignar la plantilla per defecte.
+CANNOT ASSIGN AN ADMINISTRATOR TEMPLATE=No es pot assignar una plantilla de lloc d'administració
+CANNOT ASSIGN ADMINISTRATOR TEMPLATE=No es pot assignar una plantilla de lloc d'administració
+PARAMSWRITABLE=<font color="green">Es pot escriure</font> al fitxer de paràmetres %s !
+PARAMSUNWRITABLE=<font color="red">No es pot escriure</font> al fitxer de paràmetres %s !
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_translationsmanager.ini 12/administrator/language/ca-ES/ca-ES.com_translationsmanager.ini
--- 11/administrator/language/ca-ES/ca-ES.com_translationsmanager.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_translationsmanager.ini	2009-06-26 09:00:00.000000000 +0200
@@ -0,0 +1,150 @@
+# version 1.5.0 2009-06-26 09:00:01 ~0
+# author Manuel Soler
+# copyright email manuel.soler@uv.es
+# license copyright (C) 2005 Open Source Matters. All rights reserved.
+
+# Note : All ini files need to be saved as UTF-8
+
+ANY CLIENT=Qualsevol client
+ANY STATE=Qualsevol estat
+ANY STATUS=Qualsevol estatus
+ADD PHRASES=Feu click aquí per afegir una nova frase a aquest fitxer de traducció
+CHECKED OUT BY="%s" ho comprova "%s" %s
+CLIENT=Client
+COMPLETE=Completat
+COMPLETE DESC=Totes les frases d'aquest fitxer són traduïdes
+COPY STRING=Copia la cadena de referència
+DELETE PHRASE=Suprimeix frase(s)
+DELETE PHRASE DESC=Desmarqueu la casella de selecció per suprimir les frases del fitxer de traducció
+DOES NOT EXIST=El fitxer no existeix
+DOES NOT EXIST DESC=Aquest fitxer de traducció encara no existeix.  Es crearà automàticament quan l'editeu per per primera volta.
+EDIT INI=Edita el fitxer INI de traducció
+EDIT INI DESC=Feu clic aquí per editar el fitxer INI
+EDIT XML=Edita el fitxer XML de llengua
+EDIT XML DESC=Feu click aquí per editar el fitxer XML d'aquest set client-llengua
+EXTRA=Frases extra
+EXTRA DESC=Les següents frases no existeixen en el fixter de llengua de referència. Podeu suprimir-les sense perill a no ser que sapieu que són necessàries.
+EXTRA STRINGS=%s extra
+FORCE CHECKIN=Imposa la comprobació
+IN PROGRESS=En procés
+INSTALLATION=Instal·lació
+KEY=Clau
+LANGUAGES=Llengües
+LANGUAGE FILES=Fitxers de llengua
+MARK AS COMPLETE=Marca aquest fitxer de traducció com a complet
+MARK AS COMPLETE DESC=No cal traduïr algunes frases.  L'estatus d'un fitxer com a complet en veure la llista de fitxers en un set client-llengua s'assegura marcant-lo com a complet.  L'estatus es pot reinicialitzar quan es facen canvis al fitxer de llengua de referència.
+MATCHES REF FILE=%d Matches for "%s" in reference file
+MATCHES TRAN FILE=%d Matches for "%s" in translation file
+NEW INI=Crea un fitxer de traducció
+NEW PHRASES=Frases noves
+NEW PHRASES DESC=Faciliteu una clau i una frase per crear noves frases en qualsevol fitxer de llengua.  Quan creeu una frase nova en un fitxer d'idioma de referència, la clau es crearà automàticament en els altres idiomes la pròxima volta que s'obriguen per a edició.
+NO REFERENCE FILE=No hi ha cap fitxer de llengua de referència
+NO REFERENCE FILE DESC=Aquest fitxer no existeix en la llengua de referència i, per tant, no es pot traduir.  Encara podeu editar el fitxer.
+NOT STARTED=No s'ha iniciat
+NOT STARTED DESC=Encara no heu començat a traduir les frases d'aquest fitxer
+NOT UTF-8=No és un fitxer UTF-8
+NOT UTF-8 DESC=Tots els fitxers INI de traducció s'han de codificar com UTF-8. Feu click aquí per a més informació
+OF PUBLISHED=%s fitxers, %s publicats, %s referència
+OF TRANSLATED=%s de %s frases traduïdes
+OVERLIB EXTRA=%s no és en la llengua de referència
+OVERLIB MISSING=%s no hi és
+OVERLIB STRINGS=%s frases
+OVERLIB UNCHANGED=%s per traduir
+RESET STRING=Torna la frase al seu valor original
+SEARCH=Cerca
+SEARCH TRANSLATION FILES=Cerca una frases en tots el fitxers de traducció d'aquest set  Això cercarà la llengua de referència i la llengua de traducció.  Inicieu la frase de cerca amb `/` per poder utilitzar una expressió regular vàlida.
+SELECT STATUS=Estatus
+STATUS=Estatus
+STRINGS=Frases
+STRING CHANGED=Frase traduïda
+STRING UNCHANGED=Frase no modificada
+STRING EXTRA=La frase no hi és al fitxer de referència
+TRANSLATION=Traducció
+TRANSLATION MANAGER=Gestor de Traduccions
+TRANSLATION MANAGER BY=<b>Gestor de Traduccions</b> de
+TRANSLATION MANAGER DONATE=Útil? S'agraeixen les <a href="%s" target="_blank">donacions</a>
+USE THE DEFAULT=Utilitza %s per defecte
+VIEW FILES=Visualitza els fitxers
+VIEW FILES DESC=Feu click aquí per veure una llista dels fitxers d'aquest set client-llengua
+XML=XML
+
+# Configuration
+
+AUTOCORRECT=Corregeix automàticament
+AUTOCORRECT DESC=Enter strings which will be changed automatically as you type, as a list of pairs separated by semicolons (eg: a^=Ã¢;i&quot;=Ã¯).  These strings will only be changed when they are the last characters in the input box, and you do not press any key for half a second.
+BACKTICKS=Canvia les cometes senzilles
+BACKTICKS DESC=Canvia automàticament qualsevol cometa senzilla a cometa invertida (això ajuda a la compatibilitat amb javascript)
+GLOBAL CHANGES=Aplica els canvis a tots els fitxers de traducció
+GLOBAL CHANGES DESC=Quan canvieu una traducció, automàticament es cercarà una parella clau-frase idèntica en tots els fitxers de traducció i s'aplicarà el mateix canvi.  Pot trigar uns segons, sobretot si heu fet molts canvis a traduccions llargues.
+REF LANG=Llengua de referència
+REF LANG DESC=Seleccioneu la llengua de referència.  Aquesta traducció deuria ser completa així que deurieu utilitzar 'en-GB'.  Podeu utilitzar l'idioma per defecte per a l'administrador.
+REVERSE (BACKTICK TO SINGLE-QUOTE)=Inversió (cometes invertides a cometes senzilles)
+SEARCHSTYLE=Estil de cerca
+SEARCHSTYLE DESC=Una definició d'estil CSS que realçarà els termes de la cerca quan mireu els continguts d'un fitxer de traducció de llengua.
+YES (SINGLE-QUOTE TO BACKTICK)=Sí (cometes senzilles a cometes invertides)
+ZIPPATH=Fitxer comprimit
+ZIPPATH DESC=El camí i el nom del fitxer a utilitzar quan es crea un paquet d'instal·lació.  Els testimonis [client] [etiqueta] i [versió] es canviaràn de manera automàtica als valors pertinents.  Podeu traduir l'etiqueta d'idioma utilitzant un testimoni amb el format [etiqueta=xx-XX]. Els fitxers seleccionats seràn renombrats en l'arxiu juntament amb els valors XML pertinents. El format del paquet dependrà de l'extensió del fitxer - provat amb .zip, encara que Joomla! deuria ser permetre l'ús de bzip2 gzip i tar.
+
+# Form Headings Field Names and Descriptions
+
+AUTHOR DESC=L'autor d'aquest fitxer o set client-llengua
+AUTHOR DETAILS=Detalls de l'autor
+AUTHOREMAIL=Correu electrònic de l'autor
+AUTHORURL=Lloc web de l'autor
+BACKWARDLANG=Nom del llegat
+BACKWARDLANG DESC=Un nom utilitzat per compatibilitat amb Joomla 1.0
+CREATIONDATE=Data de creació
+CREATIONDATE DESC=Una data per al set d'idioma. Cada fitxer de traducció té la seua data
+DESCRIPTION DESC=Una descripció explicativa de l'idioma
+FILENAME=Nom del fitxer
+FILENAME DESC=Introduïu un nom per al nou fitxer (el nom del fitxer no deu incloure l'etiqueta de la llengua ni la terminació .ini)
+LANGUAGE DETAILS=Detalls de la llengua
+LICENSE DESC=La llicència deuria ser generalment de codi obert, tal i com la llicència GNU/GPL
+LOCALE=Localitzacions de llengua
+LOCALE DESC=Una llista de codis de localitzacions que són específics per a cada sistema operatiu i que són passats mitjançant PHP al sistema operatiu. El primer codi reconegut pel sistema operatiu serà el que s'utilitze. (Els codis poden i deuen incloure una extensió .utf-8 p.ex. â€˜eng_GB.utf-8â€™)
+NAME DESC=El nom de la llengua que apareixerà en les caselles de selecció i per tot arreu.
+NEW XML=Crea una llengua nova
+PDFFONTNAME=Tipus de lletra PDF
+PDFFONTNAME DESC=El tipus de lletra PDF a emprar en aquesta llengua
+RTL=Dreta-a-esquerra
+RTL DESC=Un senyalador (passat al navegador) per a mostrar la llengua de dreta a esquerra
+TAG=Etiqueta ISO de la llengua
+TAG DESC=La etiqueta ISO de la llengua ha de tenir el format xx-YY, on xx es un codi de llengua ISO-639-1 de dues lletres en minúscules i YY es un codi de llengua ISO-3166 de dues lletres en majúscules.
+WINCODEPAGE=Pàgina de codi Windows
+WINCODEPAGE DESC=La página de codi Windows per a la llengua (p.ex.  iso-8859-1)
+
+# User Messages
+
+ALWAYS CREATE IN REFERENCE LANGUAGE=Esteu creant un fitxer INI nou en una llengua de traducció.  Deuria considerar crear el nou fitxer en l'idioma de referència per tal que el fitxer de traducció siga creat automàticament per a cada idioma instal·lat.
+APPLY REMINDER=Fa 5 minuts que no heu desat el treball. Voleu aplicar els canvis?
+CHECKIN SUCCESS=%s fitxer(s) de traducció comprobats
+CONFIRM DELETE STRING=Esteu segur que voleu suprimir aquesta frase?
+CONFIRM DELETE INI=Esteu segur que voleu suprimir el(s) fitxers de traducció?
+CONFIRM DELETE XML=Esteu segur que voleu suprimir aquesta instal·lació de llengua?
+COULD NOT WRITE TO FILE=Could not write to file "%s" - please check directory permissions
+DEFAULT LANGUAGE SAVED=%s Default Language set to "%s"
+FOLDER CREATED=S'ha creat la carpeta de la llengua "%s"
+GLOBAL STRING CHANGE=S'han canviat automàticament les frases en %d fitxer(s) de traducció <span style='font-weight:normal;font-size:smaller'>(%s)</span>
+INVALID LANGUAGE TAG="%s" no és un tipus d'etiqueta de llengua vàlida
+INVALID REGEXP="%s" no és una expressió regular vàlida
+INVALID XML FILE=El fitxer XML "%s" no hi és o no és vàlid
+LANGUAGE INI CREATED=S'ha creat el %s fitxer de traducció "%s"
+LANGUAGE INI EXISTS=Ja hi ha un fitxer de traducció amb nom "%s". Seleccioneu un altre nom.
+LANGUAGE INI SAVED=%s fitxer de traducció "%s" desat
+LANGUAGE XML CREATED=%s idioma "%s" creat
+LANGUAGE XML EXISTS=Ja hi ha un idioma amb nom "%s". Seleccioneu un altre nom.
+LANGUAGE XML SAVED=%s llengua "%s" desat
+PUBLISH SUCCESS=%s fitxer(s) de traducció publicat(s) <span style='font-weight:normal;font-size:smaller'>(%s)</span>
+REMOVE SUCCESS=%s fitxer(s) de traducció eliminat(s) <span style='font-weight:normal;font-size:smaller'>(%s)</span>
+REMOVEXML INIFILE=No podeu eliminar aquest idioma perque hi ha fitxers de traducció publicats.
+REMOVEXML SUCCESS=%s idioma(es) elimininat(s) <span style='font-weight:normal;font-size:smaller'>(%s)</span>
+UNPUBLISH REFFILE=%s fitxer(s) de traducció de d'idioma de referènciale() no s'han pogut despublicar
+UNPUBLISH SUCCESS=%s fitxer(s) de traducció no publicats <span style='font-weight:normal;font-size:smaller'>(%s)</span>
+VALUES REQUIRED=Completeu els camps realçats (%s)
+WARNING DEFAULT LANGUAGE=Aquesta és la llengua de referència
+ZIP CREATE SUCCESS=S'ha creat el fitxer d'instal·lació de la llengua <a href="%1$s">%1$s</a>
+ZIP CREATE FAILURE=No s'ha pogut crear el fitxer d'instal·lació de la llengua '%s'
+ZIP NO ADAPTER=Fitxer d'instal·lació de la llengua - No hi ha adaptador del tipus '%s'
+ZIP NO XML=Fitxer d'instal·lació de la llengua - no s'ha trobat '%s'
+ZIP NO FILES=Fitxer d'instal·lació de la llengua - no hi ha fitxers en '%s'
+ZIP TRANSLATE TAG=L'etiqueta de la llengua s'ha canviat de '%s' a '%s' en tots el noms dels fitxers i en tot el contigut dels fitxers XML
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_trash.ini 12/administrator/language/ca-ES/ca-ES.com_trash.ini
--- 11/administrator/language/ca-ES/ca-ES.com_trash.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_trash.ini	2008-12-31 19:24:20.000000000 +0100
@@ -0,0 +1,31 @@
+# $Id: ca-ES.com_trash.ini 10496 2008-07-29 15:12:31Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+PERMDELETETHESEITEMS=* Això <strong><font color="#FF0000">eliminarà permanentment</font></strong> <br />aquests ítems de la base de dades *
+RESTOREITEMS=* Això <strong><font color="#FF0000">restaurarà</font></strong> aquests ítems,
+DELETE=Elimina
+DELETE ITEMS=Elimina permanentment els ítems
+ITEM(S) SUCCESSFULLY DELETED=S'ha(n) eliminat permanentment %s ítem(s).
+ITEM(S) SUCCESSFULLY RESTORED=S'ha(n) restaurat amb èxit %s ítem(s).
+ITEMS BEING DELETED=Ítems que s'eliminen
+ITEMS BEING RESTORED=Ítems que es restauren
+MENU=Menú
+MENU ITEMS=Ítems de menú
+NUMBER OF ITEMS=Nombre d'ítems
+PARAMTRASH=Aquest component gestiona la funcionalitat de la paperera.
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select an Item from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau seleccioneu un ítem de la llista per a %s
+PERMANENTLY DELETE=Elimina permanentment
+RESTORE ITEMS=Restaura els ítems
+TIPWILLBERETURNED=es tornaran als seus llocs d'origen com a ítems no publicats. *
+TRASH MANAGER=Gestor de la paperera
+UNCATEGORIZED=No categoritzat
+WARNRESTORE=Esteu segur que voleu restaurar els ítems llistats?
+WARNWANTDELLISTEDITEMS=Esteu segur que voleu eliminar els ítems llistats? <br />Això els <strong><font color="#FF0000">eliminarà permanentment</font></strong> de la base de dades.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_user.ini 12/administrator/language/ca-ES/ca-ES.com_user.ini
--- 11/administrator/language/ca-ES/ca-ES.com_user.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_user.ini	2009-03-13 23:12:24.000000000 +0100
@@ -0,0 +1,42 @@
+# $Id: ca-ES.com_user.ini 11623 2009-03-13 23:09:48Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALIGNMENT FOR LOGIN IMAGE=Alineació per a la imatge d'inici de sessió
+ALIGNMENT FOR LOGOUT IMAGE=Alineació per a la imatge de final de sessió
+IMAGE FOR THE LOGIN PAGE=Imatge per a la pàgina d'inici de sessió
+IMAGE FOR THE LOGOUT PAGE=Imatge per a la pàgina de final de sessió
+LOGIN DESCRIPTION=Descripció de l'inici de sessió
+LOGIN DESCRIPTION TEXT=Text de descripció de l'inici de sessió
+LOGIN IMAGE=Imatge de l'inici de sessió
+LOGIN IMAGE ALIGN=Alineació de la imatge de l'inici de sessió
+LOGIN JS MESSAGE=Missatge JS de l'inici de sessió
+LOGIN PAGE TITLE=Títol de la pàgina d'inici de sessió
+LOGIN REDIRECTION URL=URL de redirecció de l'inici de sessió
+LOGOUT DESCRIPTION=Descripció del final de sessió
+LOGOUT DESCRIPTION TEXT=Text de descripció del final de sessió
+LOGOUT IMAGE=Imatge del final de sessió
+LOGOUT IMAGE ALIGN=Alineació de la imatge del final de sessió
+LOGOUT JS MESSAGE=Missatge JS del final de sessió
+LOGOUT PAGE TITLE=Títol de la pàgina de final de sessió
+LOGOUT REDIRECTION URL=URL de redirecció del final de sessió
+PARAMETERS FOR LOGIN COMPONENT=Paràmetres per al component d'inici de sessió
+PARAMLOGINDESCTEXT=Text a mostrar a la pàgina d'inici de sessió. Si es deixa en blanc s'utilitzarà _LOGIN_DESCRIPTION.
+PARAMLOGINJSMESSAGE=Mostra/Amaga la finestra emergent JavaScript que indica l'èxit de l'inici de sessió.
+PARAMLOGINURL=Pàgina a la qual es redirigirà l'usuari després d'un inici de sessió amb èxit. Si es deixa en blanc el paràmetre per defecte és la portada.
+PARAMLOGOUTDESCTEXT=Text a mostrar a la pàgina de final de sessi. Si es deixa en blanc s'utilitzarà _LOGOUT_DESCRIPTION.
+PARAMLOGOUTJSMESSAGE=Mostra/Amaga la finestra emergent JavaScript que indica l'èxit del final de sessió
+PARAMLOGOUTPAGETITLE=Text a mostrar a la part superior de la pàgina. Si es deixa en blanc, s'utilitzarà per defecte el nom del menú.
+PARAMLOGOUTURL=Pàgina a la qual es redirigirà l'usuari després d'un final de sessió amb èxit. Si es deixa en blanc el paràmetre per defecte és carregar la portada.
+PARAMWELCOMEDESC=Introduïu el text a mostrar en aquesta pàgina. Si es deixa en blanc s'utilitzarà el text WELCOME_DESC del fitxer d'idioma.
+SHOW LOGIN PAGE TITLE=Mostra el títol de la pàgina d'inici de sessió
+SHOW LOGOUT PAGE TITLE=Mostra el títol de la pàgina de final de sessió
+SHOW/HIDE THE LOGIN PAGE TITLE=Mostra/Amaga el títol de la pàgina d'inici de sessió
+SHOW/HIDE THE LOGOUT PAGE TITLE=Mostra/Amaga el títol de la pàgina de final de sessió
+SHOW/HIDE THE LOGIN DESCRIPTION BELOW=Mostra/Amaga la descripció de l'inici de sessió de sota
+SHOW/HIDE THE LOGOUT DESCRIPTION BELOW=Mostra/Amaga la descripció del final de sessió de sota
+WELCOME DESCRIPTION=Descripció de benvinguda
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_users.ini 12/administrator/language/ca-ES/ca-ES.com_users.ini
--- 11/administrator/language/ca-ES/ca-ES.com_users.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_users.ini	2008-12-31 19:25:10.000000000 +0100
@@ -0,0 +1,78 @@
+# $Id: ca-ES.com_users.ini 10496 2008-07-29 16:02:12Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BACK-END LANGUAGE=Idioma de l'Administració
+BLOCK USER=Bloqueja l'usuari
+BLOCKED=Bloquejat
+CANNOT SAVE THE USER INFORMATION=No es pot desar la informació de l'usuari
+CHANGE CONTACT DETAILS=Canvia els detalls de contacte
+CONTACT INFORMATION=Informació de contacte
+COMPONENTS -> CONTACT -> MANAGE CONTACTS=Components -&gt; Contactes -&gt; Gestiona els contactes
+DELETE=Elimina
+E-MAIL=Correu electrònic
+EDIT=Edita
+FRONT-END LANGUAGE=Idioma del lloc públic
+HELP SITE=Lloc d'ajuda
+HELP SITE FOR THIS USER=Lloc d'ajuda per a aquest usuari
+IMAGE=Imatge del contacte
+LAST VISIT=Darrera visita
+LAST VISIT DATE=Data de la darrera visita
+LOGGED IN=Connectat
+LOGOUT=Finalitza la sessió
+MISC=Informació <br />Miscel·lània
+NEVER=Mai
+NEW PASSWORD=Nova contrasenya
+NEW_USER_MESSAGE=Hola %s,\n\n\nHeu estat afegit com a usuari a %s per un Administrador.\n\nAquest correu electrònic conté el nom d'usuari i la contrasenya per a accedir a %s\n\nNom d'usuari: %s\nContrasenya: %s\n\n\nSi us plau no respongueu a aquest missatge ja que s'ha generat automàticament i només té el propòsit d'informar.
+NEW_USER_MESSAGE_SUBJECT=Detalls del nou usuari
+NO CONTACT DETAILS LINKED TO THIS USER=No hi ha detalls de contacte enllaçats a aquest usuari
+NOTICE=Avís
+PARAMADMINLANGUAGE=Seleccioneu l'idioma per a l'interfície d'administració. Això només afectarà a aquest usuari.
+PARAMLANGUAGE=Seleccioneu l'idioma per a l'interfície del lloc públic. Això només afectarà a aquest usuari.
+PASSWORD DO NOT MATCH.=Les contrasenyes no coincideixen.
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please select a User from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau seleccioneu un usuari de la llista per a %s
+PLEASE SELECT A USER=Si us plau seleccioneu un usuari
+POSITION=Càrrec
+RECEIVE SYSTEM EMAILS=Rebrà correus electrònics del sistema
+REGISTER DATE=Data de registre
+SEECOMPCONTACTFORDETAILS=Per als detalls veieu Components &rArr;Contactes &rArr;Gestiona els contactes
+SELECT A USER TO DELETE=Seleccioneu un usuari per a eliminar
+SELECT AN ITEM TO=Seleccioneu un usuari per a aplicar l'acció
+SELECT EDITOR=Seleccioneu un editor
+SELECT LANGUAGE=Seleccioneu un idioma
+SELECT GROUP=Seleccioneu un grup
+SELECT LOG STATUS=Seleccioneu un estat
+SUCCESSFULLY SAVED CHANGES TO USER=S'han desat amb èxit els canvis a l'usuari: %s
+SUCCESSFULLY SAVED USER=S'ha desat amb èxit l'usuari: %s
+TIME ZONE FOR THIS USER=Zona horària per a aquest usuari
+USER DELETED=S'ha eliminat amb èxit l'usuari.
+USER DETAILS=Detalls de l'usuari
+USER EDITOR=Editor de l'usuari
+USER MANAGER=Gestor d'usuaris
+USERS=Usuaris
+USER SESSION ENDED=Ha finalitzat la sessió de l'usuari.
+VERIFY PASSWORD=Verifica la contrasenya
+WARN_ONLY_SUPER=No podeu canviar el grup d'aquest usuari perquè l'usuari és l'únic superadministrador actiu del lloc.
+WARNDELETE=No podeu eliminar un altre administrador. Només els superadministradors tenen aquesta potestat.
+WARNLOGININVALID=El seu nom d'usuari conté caràcters no vàlids o és massa curt.
+WARNREG_EMAIL_INUSE=Aquesta adreça electrònica ja està registrada.
+WARNREG_MAIL=Si us plau introduïu una adreça electrònica vàlida.
+WARNREG_INUSE=Aquest nom d'usuari ja s'està utilitzant.
+WARNSELECTPB=Si us plau seleccioneu un altre grup. El Backend públic no és una opció seleccionable.
+WARNSELECTPF=Si us plau seleccioneu un altre grup. El Frontend públic no és una opció seleccionable.
+WARNSUPERADMINCREATE=No podeu crear un usuari amb aquest nivell de grup d'usuaris. Només els superadministradors tenen aquesta capacitat.
+WYSIWYG EDITOR FOR THIS USER=Editor WYSIWYG per a aquest usuari
+YOU CANNOT DELETE A SUPER ADMINISTRATOR=No podeu eliminar un superadministrador.
+YOU CANNOT BLOCK A SUPER ADMINISTRATOR=No podeu bloquejar un superadministrador.
+YOU CANNOT DELETE YOURSELF!=No podeu eliminar el vostre propi usuari!
+YOU MUST ASSIGN USER TO A GROUP.=Heu d'assignar l'usuari a un grup.
+YOU MUST PROVIDE A NAME.=Heu de proporcionar un nom.
+YOU MUST PROVIDE A USER LOGIN NAME.=Heu de proporcionar un nom d'identificació d'usuari.
+YOU MUST PROVIDE AN EMAIL ADDRESS.=Heu de proporcionar una adreça electrònica.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_weblinks.ini 12/administrator/language/ca-ES/ca-ES.com_weblinks.ini
--- 11/administrator/language/ca-ES/ca-ES.com_weblinks.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_weblinks.ini	2008-12-31 19:25:40.000000000 +0100
@@ -0,0 +1,50 @@
+# $Id: ca-ES.com_weblinks.ini 10496 2008-07-29 16:11:32Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALIGNMENT OF THE IMAGE=Alineació de la imatge
+BACK BUTTON=Botó Enrere
+CATEGORY LIST - SECTION=Llista de categories (Secció)
+CATEGORY LIST - CATEGORY=Llista de categories (Categoria)
+CHANGES TO WEBLINK SAVED=S'han desat els canvis a l'enllaç web
+DESCRIPTION TEXT=Text descriptiu
+DESCNEWITEMSLAST=Els nous enllaços web van per defecte a la darrera posició. L'ordre es pot canviar després de desar l'enllaç web.
+EDIT WEBLINKS=Edita els enllaços web
+ICON=Icona
+IMAGE ALIGN=Alineació de la imatge
+LINK DESCRIPTIONS=Descripcions dels enllaços
+OTHER CATEGORIES=Altres Categories
+PARAMBACKBUTTON=Mostra/Amaga el botó Enrere, que us torna a la pàgina visualitzada anteriorment.
+PARAMCATSELECT=Una categoria d'enllaços web (opcional)
+PARAMICONIMG=Icona a utilitzar a l'esquerra dels enllaços URL a la visualització en taula
+PARAMSHOWHIDEDESC=Mostra/Amaga el text descriptiu dels enllaços
+PARAMSHOWHIDELINKS=Mostra/Amaga els enllaços
+PARAMOTHERCATSECTION=Mostra/Amaga la llista de categories a la visualització en llista
+PARAMOTHERCAT=Mostra/Amaga la llista de categories a la visualització en taula
+PARAMIMAGE=La imatge per a aquesta pàgina ha de ser a la carpeta /images/stories. Per defecte es carregarà web_links.jpg. 'Cap imatge' vol dir que no es carregarà cap imatge.
+PARAMLINKICONS=Icona a utilitzar a l'esquerra dels enllaços URL a la visualització en taula
+PARAMWHENVIEWCAT=Mostra/Amaga altres categories d'enllaços web
+SHOW/HIDE THE DESCRIPTION BELOW=Mostra/Amaga la descripció a sota
+SHOW/HIDE THE HITS COLUMN=Mostra/Amaga la columna de visites
+SHOW/HIDE THE TABLE HEADINGS=Mostra/Amaga els encapçalaments de taula
+TABLE HEADINGS=Encapçalaments de taula
+TARGET=Objectiu
+TARGET WINDOW WHEN THE LINK IS CLICKED=Finestra objectiu del navegador quan es fa clic a l'enllaç
+THIS COMPONENT SHOWS A LISTING OF WEBLINKS=Aquest component mostra una llista dels enllaços web
+WEBLINK=Enllaç web
+WEBLINK ITEM MUST HAVE A TITLE=L'enllaç web ha de tenir un títol
+WEBLINK MANAGER=Gestor d'enllaços web
+WEBLINK SAVED=S'ha desat l'enllaç web
+WEBLINK CATEGORY LIST LAYOUT=Format de llista de categories d'enllaços web
+WEBLINK CATEGORY LIST LAYOUT DESC=Aquest format mostra una llista de totes les categories d'enllaços web.
+WEBLINK STANDARD CATEGORY LAYOUT=Format de llista de la categoria
+WEBLINK STANDARD CATEGORY LAYOUT DESC=Aquest format mostra una llista de tots els enllaços web d'una categoria concreta.
+WEBLINK SUBMISSION LAYOUT=Format de tramesa d'enllaços web
+WEBLINK SUBMISSION LAYOUT DESC=Permet als usuaris registrats trametre un enllaç web.
+WEBLINKS INTRO=Introducció d'enllaços web
+WEBLINKS_INTRO_DESC=Aquest text es mostra sobre la descripció de les categories.
+YOU MUST HAVE A URL.=Heu d'introduir una URL.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_weblinks.menu.ini 12/administrator/language/ca-ES/ca-ES.com_weblinks.menu.ini
--- 11/administrator/language/ca-ES/ca-ES.com_weblinks.menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_weblinks.menu.ini	2008-12-31 19:26:06.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.com_weblinks.menu.ini 10388 2008-07-29 16:12:42Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COM_WEBLINKS=Enllaços web
+COM_WEBLINKS.LINKS=Enllaços
+COM_WEBLINKS.CATEGORIES=Categories
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.com_wrapper.ini 12/administrator/language/ca-ES/ca-ES.com_wrapper.ini
--- 11/administrator/language/ca-ES/ca-ES.com_wrapper.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.com_wrapper.ini	2008-12-31 19:27:02.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.com_wrapper.ini 10496 2008-07-29 16:15:29Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+WRAPPER=Embolcall
+WRAPPER DESC=Mostra un iframe que embolcarà una pàgina externa dins Joomla!
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.date.php 12/administrator/language/ca-ES/ca-ES.date.php
--- 11/administrator/language/ca-ES/ca-ES.date.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.date.php	2009-04-13 00:59:26.000000000 +0200
@@ -0,0 +1,57 @@
+<?php
+/**
+* @version	$Id: ca-ES.date.php 2008-11-11 dverger $
+* @package	Catalan Language Pack
+* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+* @copyright	Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+* @license	http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+*/
+
+// Check to ensure this file is within the rest of the framework
+defined('JPATH_BASE') or die();
+
+/**
+ * JDateca_ES overrides JDate class
+ *
+ * @author	Damià Verger <dverger@joomla.cat>
+ *
+ * @package	Catalan Language Pack
+ * @since	1.5.8
+ */
+
+class JDateca_ES extends JDate
+{
+	/**
+	 * Gets the date in a specific format
+	 *
+	 * @access protected
+	 * @param string $format The date format specification string (see {@link PHP_MANUAL#strftime})
+	 * @param int $time Unix timestamp
+	 * @return string a date in a specific format
+	 */
+	function _strftime($format, $time) 
+	{
+		if (date('n',$time) == 4 || date('n',$time) == 8 || date('n',$time) == 10) // abril, agost o octubre
+		{
+			if(strpos($format, 'de %B') !== false)
+				$format = str_replace('de %B','d\'%B',$format);
+			if(strpos($format, 'de %b') !== false)
+				$format = str_replace('de %b','d\'%b',$format);
+		}
+
+		if(strpos($format, '%a') !== false)
+			$format = str_replace('%a', $this->_dayToString(date('w', $time), true), $format);
+		if(strpos($format, '%A') !== false) 
+			$format = str_replace('%A', $this->_dayToString(date('w', $time)), $format);
+		if(strpos($format, '%b') !== false)
+			$format = str_replace('%b', $this->_monthToString(date('n', $time), true), $format);
+		if(strpos($format, '%B') !== false)
+			$format = str_replace('%B', $this->_monthToString(date('n', $time)), $format);
+
+		if(strpos($format, '%e') !== false)
+			$format = str_replace('%e', date('j', $time), $format);
+
+		$date = strftime($format, $time);
+		return $date;
+	}
+}
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.ini 12/administrator/language/ca-ES/ca-ES.ini
--- 11/administrator/language/ca-ES/ca-ES.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.ini	2009-06-26 08:49:04.000000000 +0200
@@ -0,0 +1,605 @@
+# $Id: ca-ES.ini 11779 2009-06-26 08:49:04 dverger ~0 $
+# author Joomla! Catalan Translation
+# copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# license Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+
+# Note : All ini files need to be saved as UTF-8
+
+
+DATE_FORMAT_LC=%A, %e de %B de %Y
+DATE_FORMAT_LC1=%A, %e de %B de %Y
+DATE_FORMAT_LC2=%A, %e de %B de %Y %H:%M
+DATE_FORMAT_LC3=%e de %B de %Y
+DATE_FORMAT_LC4=%d.%m.%y
+DATE_FORMAT_JS1=y-m-d
+%Y-%M-%D=%Y-%M-%D
+%A, %B %E=%A, %e de %B
+
+# Months
+
+JANUARY_SHORT=gen.
+JANUARY=gener
+FEBRUARY_SHORT=febr.
+FEBRUARY=febrer
+MARCH_SHORT=març
+MARCH=març
+APRIL_SHORT=abr.
+APRIL=abril
+MAY_SHORT=maig
+MAY=maig
+JUNE_SHORT=juny
+JUNE=juny
+JULY_SHORT=jul.
+JULY=juliol
+AUGUST_SHORT=ag.
+AUGUST=agost
+SEPTEMBER_SHORT=set.
+SEPTEMBER=setembre
+OCTOBER_SHORT=oct.
+OCTOBER=octubre
+NOVEMBER_SHORT=nov.
+NOVEMBER=novembre
+DECEMBER_SHORT=des.
+DECEMBER=desembre
+
+#Days of the Week
+
+SAT=ds.
+SATURDAY=dissabte
+SUN=dg.
+SUNDAY=diumenge
+MON=dl.
+MONDAY=dilluns
+TUE=dm.
+TUESDAY=dimarts
+WED=dc.
+WEDNESDAY=dimecres
+THU=dj.
+THURSDAY=dijous
+FRI=dv.
+FRIDAY=divendres
+
+#Other Calendar Strings
+(TODAY)=(Avui)
+(SHIFT-)CLICK OR DRAG TO CHANGE VALUE=Feu (Majúscules-)clic o arrossegueu per a canviar el valor.
+ABOUT THE CALENDAR=Quant al calendari
+DISPLAY %S FIRST=Mostra %s primer
+DRAG TO MOVE=Arrossegueu per a moure
+GO TODAY=Vés a avui
+NEXT MONTH (HOLD FOR MENU)=Feu clic per a anar al mes següent. Feu clic i manteniu per a veure una llista dels mesos.
+NEXT YEAR (HOLD FOR MENU)=Feu clic per a anar a l'any següent. Feu clic i manteniu per a veure una llista dels anys.
+PREV. MONTH (HOLD FOR MENU)=Feu clic per a anar al mes anterior. Feu clic i manteniu per a veure una llista dels mesos.
+PREV. YEAR (HOLD FOR MENU)=Feu clic per a anar a l'any anterior. Feu clic i manteniu per a veure una llista dels anys.
+SELECT DATE=Seleccioneu una data.
+TIME=Hora
+TIME:=Hora:
+CLOSE=Tanca
+TODAY=Avui
+WK=setm.
+
+# Time Zones
+
+TIME ZONE=Zona horària
+(UTC -12:00) INTERNATIONAL DATE LINE WEST=(UTC -12:00) Línia Internacional de Data Oest
+(UTC -11:00) MIDWAY ISLAND, SAMOA=(UTC -11:00) Illa de Midway, Samoa
+(UTC -10:00) HAWAII=(UTC -10:00) Hawaii
+(UTC -09:30) TAIOHAE, MARQUESAS ISLANDS=(UTC -09:30) Taiohae, Illes Marqueses
+(UTC -09:00) ALASKA=(UTC -09:00) Alaska
+(UTC -08:00) PACIFIC TIME (US &AMP; CANADA)=(UTC -08:00) Hora del Pacífic (EUA i Canadà)
+(UTC -07:00) MOUNTAIN TIME (US &AMP; CANADA)=(UTC -07:00) Hora de les Muntanyes Rocalloses (EUA i Canadà)
+(UTC -06:00) CENTRAL TIME (US &AMP; CANADA), MEXICO CITY=(UTC -06:00) Hora del Centre (EUA i Canadà), Ciutat de Mèxic
+(UTC -05:00) EASTERN TIME (US &AMP; CANADA), BOGOTA, LIMA=(UTC -05:00) Hora de l'Est (EUA i Canadà), Bogotà, Lima
+(UTC -04:30) VENEZUELA=(UTC -04:30) Veneçuela
+(UTC -04:00) ATLANTIC TIME (CANADA), CARACAS, LA PAZ=(UTC -04:00) Hora de l'Atlàntic (Canadà), Caracas, La Paz
+(UTC -03:30) ST. JOHN'S, NEWFOUNDLAND, LABRADOR=(UTC -03:30) St. John's, Terranova i Labrador
+(UTC -03:00) BRAZIL, BUENOS AIRES, GEORGETOWN=(UTC -03:00) Brasil, Buenos Aires, Georgetown
+(UTC -02:00) MID-ATLANTIC=(UTC -02:00) Atlàntic Mitjà
+(UTC -01:00) AZORES, CAPE VERDE ISLANDS=(UTC -01:00) Açores, Illes Cap Verd
+(UTC 00:00) WESTERN EUROPE TIME, LONDON, LISBON, CASABLANCA=(UTC 00:00) Hora d'Europa occidental, Londres, Lisboa, Casablanca
+(UTC +01:00) AMSTERDAM, BERLIN, BRUSSELS, COPENHAGEN, MADRID, PARIS=(UTC +01:00) Amsterdam, Barcelona, Berlín, Brussel·les, Copenhaguen, Madrid, París
+(UTC +02:00) ISTANBUL, JERUSALEM, KALININGRAD, SOUTH AFRICA=(UTC +02:00) Istanbul, Jerusalem, Kaliningrad, Sud-àfrica
+(UTC +03:00) BAGHDAD, RIYADH, MOSCOW, ST. PETERSBURG=(UTC +03:00) Bagdad, Al-Riyad, Moscou, Sant Petersburg
+(UTC +03:30) TEHRAN=(UTC +03:30) Teheran
+(UTC +04:00) ABU DHABI, MUSCAT, BAKU, TBILISI=(UTC +04:00) Abu Zaby, Masqat, Bakú, Tbilisi
+(UTC +04:30) KABUL=(UTC +04:30) Kabul
+(UTC +05:00) EKATERINBURG, ISLAMABAD, KARACHI, TASHKENT=(UTC +05:00) Ekaterinburg, Islamabad, Karachi, Taixkent
+(UTC +05:30) BOMBAY, CALCUTTA, MADRAS, NEW DELHI, COLOMBO=(UTC +05:30) Bombai, Calcuta, Madràs, Nova Delhi, Colombo
+(UTC +05:45) KATHMANDU=(UTC +05:45) Kàtmandu
+(UTC +06:00) ALMATY, DHAKA=(UTC +06:00) Almati, Dhaka
+(UTC +06:30) YAGOON=(UTC +06:30) Yangon
+(UTC +07:00) BANGKOK, HANOI, JAKARTA=(UTC +07:00) Bangkok, Hanoi, Jakarta
+(UTC +08:00) BEIJING, PERTH, SINGAPORE, HONG KONG=(UTC +08:00) Pequín, Perth, Singapur, Hong Kong
+(UTC +08:00) WESTERN AUSTRALIA=(UTC +08:00) Australia Occidental
+(UTC +09:00) TOKYO, SEOUL, OSAKA, SAPPORO, YAKUTSK=(UTC +09:00) Tòquio, Seül, Osaka, Sapporo, Iakutsk
+(UTC +09:30) ADELAIDE, DARWIN, YAKUTSK=(UTC +09:30) Adelaida, Darwin, Iakutsk
+(UTC +10:00) EASTERN AUSTRALIA, GUAM, VLADIVOSTOK=(UTC +10:00) Austràlia oriental, Guam, Vladivostok
+(UTC +10:30) LORD HOWE ISLAND (AUSTRALIA)=(UTC +10:30) Illa Lord Howe (Austràlia)
+(UTC +11:00) MAGADAN, SOLOMON ISLANDS, NEW CALEDONIA=(UTC +11:00) Magadan, Illes Solomó, Nova Caledònia
+(UTC +11:30) NORFOLK ISLAND=(UTC +11:30) Illa de Norfolk
+(UTC +12:00) AUCKLAND, WELLINGTON, FIJI, KAMCHATKA=(UTC +12:00) Auckland, Wellington, Fiji, Kamtxatka
+(UTC +12:45) CHATHAM ISLAND=(UTC +12:45) Illes Chatham
+(UTC +13:00) TONGA=(UTC +13:00) Tonga
+(UTC +14:00) KIRIBATI=(UTC +14:00) Kiribati
+
+# Mailer Codes
+PHPMAILER_PROVIDE_ADDRESS=Heu de proporcionar almenys una adreça electrònica de destinatari.
+PHPMAILER_MAILER_IS_NOT_SUPPORTED=El programa de correu no és suportat.
+PHPMAILER_EXECUTE=No s'ha pogut executar:
+PHPMAILER_INSTANTIATE=No s'ha pogut instanciar la funció de correu.
+PHPMAILER_AUTHENTICATE=S'ha produït un error d'SMTP! No s'ha pogut autenticar.
+PHPMAILER_FROM_FAILED=La següent adreça remitent ha fallat:
+PHPMAILER_RECIPIENTS_FAILED=S'ha produït un error d'SMTP! Els següents destinataris han fallat:
+PHPMAILER_DATA_NOT_ACCEPTED=S'ha produït un error d'SMTP! No s'han acceptat les dades.
+PHPMAILER_CONNECT_HOST=S'ha produït un error d'SMTP! No s'ha pogut connectar a l'amfitrió SMTP.
+PHPMAILER_FILE_ACCESS=No s'ha pogut accedir al fitxer:
+PHPMAILER_FILE_OPEN=No s'ha pogut obrir el fitxer:
+PHPMAILER_ENCODING=Codificació desconeguda:
+PHPMAILER_SIGNING=Error de signatura:
+
+A SHORT ALT ATTRIBUTE FOR IMAGE=Una etiqueta alternativa (Alt) breu per a una imatge
+ACCESS=Accés
+ACCESS LEVEL=Nivell d'accés
+ADD=Afegeix
+ADMINISTRATION=Administració
+ADMINISTRATION MESSAGES=Missatges d'administració
+ADMINISTRATOR=Administrador
+ADMINISTRATOR FILES=Fitxers de l'administrador
+ADVANCED PARAMETERS=Paràmetres avançats
+ALERTNOTAUTH=No esteu autoritzat a visualitzar aquest recurs.
+ALIAS=Àlies
+ALIASTIP=Deixeu això en blanc i el Joomla! ho emplenarà amb un valor per defecte, el qual és el títol en minúscules i amb guions en lloc d'espais. Podeu introduir un àlies manualment. Utilitzeu lletres minúscules i guions (-). No es permeten espais ni subratllats. L'àlies s'utilitzarà als URL SEF. El valor per defecte serà una data i hora si el títol és escrit en lletres no llatines.
+ALIGN=Alineació
+ALL=tots
+ALPHABETICAL INDEX=Índex alfabètic
+ALREADY EXISTS=Ja hi ha un enllaç Llegiu-ne més... Només es permet un sol enllaç d'aquest tipus. Utilitzeu {pagebreak} per a dividir l'article en més pàgines.
+ALT TEXT=Text alternatiu
+ANY=Cap
+AN ERROR HAS OCCURRED=S'ha produït un error.
+ANOTHER TEMPLATE IS ALREADY USING DIRECTORY=Ja hi ha una plantilla utilitzant el directori anomenat. Potser esteu provant de carregar de nou la mateixa plantilla?
+APPLY=Aplica
+ARCHIVE=Arxiva
+ARCHIVED=Arxivat
+ARCHIVED ARTICLE LIST LAYOUT DESC=Format de llista d'articles arxivats
+ARTICLES=Articles
+ARTICLE PREVIEW=Previsualització de l'article
+ASSIGN=Assigna
+ATTEMPT TO DELETE BASE DIRECTORY=No podeu eliminar un directori base.
+AUTHOR=Autor
+AUTHOR ALIAS=Àlies de l'autor
+AUTHOR EMAIL=Correu electrònic de l'autor
+AUTHOR URL=URL de l'autor
+BACK=Enrere
+BACKUP EXISTING FILES=Fes còpia de seguretat dels fitxers existents
+BACKUP SUFFIX=Sufix de la còpia de seguretat
+BANNER CATEGORIES=Categories de bàners
+BANNER=Bàner
+BANNERS=Bàners
+BORDER=Contorn
+BOTTOM=Part inferior
+BROWSE=Explora
+BROWSER=Navegador
+BY=Per
+CANCEL=Cancel·la
+CANNOT GET OR PARSE CLASS NAME.=No s'ha pogut obtenir el nom de la classe.
+CATEGORIES=Categories
+CATEGORY=Categoria
+CATEGSUBMENU=Categories %s
+CENTER=Centra
+CHANGE CREATOR=Canvia el creador
+CHANGES TO X SAVED=S'han desat els canvis a %s
+CHECKED OUT=No verificat
+CHECKIN MANAGER=Gestor de verificacions
+CLICK ON ICON TO TOGGLE STATE.=Feu clic a la icona per a commutar d'estat
+CLICK TO CHECK IN=Feu clic per a verificar-ho
+CLICK TO SORT THIS COLUMN=Feu clic per a ordenar per aquesta columna
+CLIENTS=Clients
+CLOSE ALL=Tanca-ho tot
+CONFIGURATION=Configuració global
+COMPONENT=Component
+COMPONENT MANAGER=Gestor de components
+COMPONENT NOT FOUND=No s'ha trobat el component
+CONTACT=Contacte
+CONTACT CATEGORIES=Categories de contactes
+CONTACTS=Contactes
+CONTENT=Contingut
+CONTENT IMAGES=Imatges del contingut
+CONTINUE=Continua
+COPY=Copia
+COPYRIGHT=Copyright
+COULD NOT CREATE DIRECTORY=No s'ha pogut crear el directori
+COULD NOT DELETE FOLDER=No s'ha pogut eliminar la carpeta
+COULD NOT MAKE CONFIGURATION.PHP UNWRITABLE=No s'han pogut revocar els permisos d'escriptura al configuration.php.
+COULD NOT COPY SETUP FILE=No s'ha pogut copiar el fitxer de configuració
+CREATED DATE=Data de creació
+CREATOR=Creador
+CURRENT=Actual
+DATE=Data
+DEFAULT=Per defecte
+DELETE=Elimina
+DELETED=Eliminat
+DELETING=Eliminació
+DESCBEINGEDITTED=En aquests moments un altre administrador està editant %s %s
+DESCNEWITEMSFIRST=Els nous ítems van per defecte a la primera posició. L'ordre es pot canviar després de desar l'ítem.
+DESCNEWITEMSLAST=Els nous ítems van per defecte a la darrera posició. L'ordre es pot canviar després de desar l'ítem.
+DESCRIPTION=Descripció
+DESCUSEVALIDLOGIN=Utilitzeu un nom d'usuari i contrasenya vàlids per a accedir al tauler de control de l'administrador.
+DETAILS=Detalls
+DIRECTORY PERMISSIONS=Permisos de directori
+DISABLE=Inhabilita
+DISABLED=Inhabilitat
+DISPLAY NUM=Mostra'n
+DO NOT USE=Cap seleccionat
+DONE=Fet
+E_LOGIN_AUTHENTICATE=El nom d'usuari i contrasenya no coincideixen
+E_NOLOGIN_ACCESS=No teniu accés a la secció d'administrador del lloc.
+E_NOLOGIN_BLOCKED=S'ha denegat l'inici de sessió! O bé el vostre compte ha estat bloquejat o bé encara no l'heu activat.
+EDIT=Edita
+EDIT CATEGORY=Edita la categoria
+EDIT CONTENT=Edita el contingut
+EDIT FILE=Edita el fitxer
+EDITOR=Editor
+EDIT PLUGIN=Edita el connector
+EDIT SECTION=Edita la secció
+EDIT USER=Edita l'usuari
+EDIT USER INFORMATION=Edita la informació de l'usuari
+EDIT XML=Edita&nbsp;l'XML
+EDIT XML FILE=Edita el fitxer XML
+EMAIL=Correu electrònic
+ENABLE=Habilita
+ENABLED=Habilitat
+ENABLE PLUGIN=Habilita el connector
+END=Final
+END PAGE=Finalitza la pàgina
+ENGLISH=Anglès
+ERROR=Error
+ERROR SAVING FILE=S'ha produït un error en desar el fitxer
+ERRORELEMENTNOTFOUND=Error. No s'ha trobat l'element.
+ERRORNOADMINS=No podeu iniciar sessió. No hi ha cap administrador configurat.
+ERRORNOFILE=Error. No s'ha indicat el fitxer.
+ERRORXMLNOTFOUND=Error. No s'ha trobat el fitxer XML.
+EXCLUDE IN FILE SEARCH=Exclou a la cerca de fitxers
+EXISTING MENU LINKS=Enllaços de menú que existeixen
+EXPIRED=Vençut
+EXPIRES=Venç
+EXPORT=Exporta
+FAILED=Ha fallat
+FAILED TO CREATE DIRECTORY=No s'ha pogut crear el directori.
+FAILED TO OPEN XML FILE=No s'ha pogut obrir el fitxer XML.
+FAX=Fax
+FEED IMAGE=Imatge del canal
+FEEDS=Canals
+FILE=Fitxer
+FILE NOT FOUND=No s'ha trobat el fitxer
+FILE SAVED=S'ha desat el fitxer
+FILE UPLOAD=Càrrega de fitxers
+FILES=Fitxers
+FILTER=Filtre
+FILTERS=Filtres
+FINISH=Finalitza
+FINISH PUBLISHING=Finalitza la publicació
+FINISH: NO EXPIRY=Finalitza: Sense venciment
+FINISHED=Finalitzat
+FIRST=Primer
+FIRST PAGE=Primera pàgina
+FILE SETTINGS=Configuració del fitxer
+FORCE USER LOGOUT=Imposa la desconnexió de l'usuari
+GALLERY IMAGES=Galeria d'imatges
+GO=Vés
+GO TO FULL COMPONENT LIST=Vés a la llista completa de components
+GREEN=verd
+GROUP=Grup
+HELP=Ajuda
+HIDE=Amaga
+HITS=Visites
+ICONS=Icones
+ID=ID
+IGNORE=Ignora
+IMAGE=Imatge
+IMAGE ALREADY EXISTS=La imatge %s ja existeix.
+IMAGES=Imatges
+IN MENU=Al menú
+INSTALL=Instal·la
+ITEM SAVED=S'ha desat l'ítem.
+ITEMS COPIED=S'ha(n) copiat %s ítem(s).
+ITEMS PUBLISHED=S'ha(n) publicat %s ítem(s).
+ITEMS UNPUBLISHED=S'ha(n) retirat %s ítem(s).
+ITEMS REMOVED=S'ha(n) eliminat %s ítem(s).
+UNINSTALL=Desinstal·la
+ISFREESOFTWARE=és un programari lliure distribuït sota la <a href="http://www.gnu.org/licenses/gpl-2.0.html">llicència GNU/GPL</a>.
+ITEM=Ítem
+ITEM CHECKED IN=S'ha verificat l'ítem.
+ITEM DETAILS=Detalls de l'ítem
+ITEM TITLE=Títol de l'ítem
+JOOMLA!=Joomla!
+JOOMLA! ADMINISTRATION LOGIN=Entrada a l'administració del Joomla!
+JOOMLA! LOGO=Logotip del Joomla!
+JOOMLA WARNING=Avís del Joomla!
+LANGUAGE=Nom de l'idioma
+LAST=Darrer
+LAST MODIFIED=Darrera modificació
+LATEST ITEMS=Darrers ítems
+LAYOUT=Format
+LEFT=Esquerra
+LEGACY PARAMETERS=Paràmetres llegats (legacy)
+LICENSE=Llicència
+LINK TO MENU=Enllaç al menú
+LINKS=Enllaços
+LIST FILES=Llista els fitxers
+LIST LENGTH=Longitud de la llista
+LIST OF COMPONENTS=Llista de components
+LIST PACKAGES=Llista de paquets
+LOCAL=Local
+LOGIN=Connexió
+LOGIN_BLOCKED=La vostra connexió ha estat bloquejada. Si us plau contacteu amb l'administrador.
+LOGIN_INCOMPLETE=Si us plau completeu els camps de nom d'usuari i contrasenya.
+LOGIN_INCORRECT=S'ha introduït un nom d'usuari o contrasenya incorrecte.
+LOGIN_NOADMINS=No podeu iniciar sessió. No hi ha cap administrador configurat.
+LOGGED IN USER=Usuari amb sessió iniciada
+LOGGED=Connectat
+LOGOUT=Finalitza la sessió
+MAIL=Correu
+MAIL_FUNCTION_DISABLED=S'ha inhabilitat la funció mail() i no s'ha pogut enviar el correu.
+MANAGE BANNERS=Gestiona els bàners
+MANAGE CLIENTS=Gestiona els clients
+MANAGE CONTACTS=Gestiona els contactes
+MANAGE NEWS FEEDS=Gestiona els canals d'informació
+MANAGE CATEGORIES=Gestiona les categories
+MANAGER=Gestor
+MASS MAIL=Correu massiu
+MAX SIZE=Mida màxima
+MAXIMUM=Màxim
+MEDIA=Multimèdia
+MENU IMAGE=Imatge de menú
+MENU ITEM NAME=Títol d'ítem de menú
+MENU LINKS AVAILABLE WHEN SAVED=Els enllaços de menú esdevindran disponibles quan es desi.
+MENU MANAGER=Gestor de menús
+MENU ITEM MANAGER=Gestor d'ítems de menú
+MENU SELECTION=Selecció de menú
+MENUS=Menús
+MESSAGE=Missatge
+META DATA=Metadades
+METHOD=Mètode
+MINUTES=Minuts
+MODULE=Mòdul
+MODULE PREVIEW=Previsualització del mòdul
+MOVE=Mou
+MOVE DOWN=Mou avall
+MOVE UP=Mou amunt
+MUSTENABLELEGACY=Aquesta extensió sembla que s'hagi escrit per a una versió més antiga del Joomla!. Heu d'habilitar el <em>Sistema - Connector de compatibilitat</em> al <strong>Gestor de connectors</strong> si voleu acabar aquesta tasca.
+NAME=Nom
+NAVIGATOR=Navegador
+NEXT=Següent
+NEW=Nou
+NEW ORDERING SAVED=S'ha desat el nou ordre
+NEW WINDOW WITH BROWSER NAVIGATION=Nova finestra amb navegació
+NEW WINDOW WITHOUT BROWSER NAVIGATION=Nova finestra sense navegació
+NEWSFEED=Canal d'informació
+NEWS FEEDS=Canals d'informació
+NO=No
+NO ITEMS SELECTED=No s'han seleccionat ítems
+NO RECORDS FOUND=No s'han trobat registres
+NO USER=Cap usuari
+NONE=Cap
+NOT A VALID COMPONENT=No és un component vàlid
+NOT FOUND=No s'ha trobat
+NOT FOUND IN FILE=No s'ha trobat al fitxer
+NOT MODIFIED=No s'ha modificat
+NOT PUBLISHED=No s'ha publicat
+NOTICE=Anunci
+NUM=#
+NUM ACTIVE=Actius
+NUM CATEGORIES=Categories
+NUM ITEMS=Ítems
+NUM PUBLISHED=Publicats
+NUM TRASH=A la paperera
+NUM UNPUBLISHED=Retirats
+NUM LINKS=Enllaços
+OF=de
+OFF=Inactiu
+ON=Actiu
+OPEN ALL=Obre'ls tots
+OPERATION FAILED=L'operació ha fallat
+OPTION=Opció
+OPTIONS=Opcions
+OR=o
+ORDER=Ordre
+ORDER BY=Ordre
+ORDER BY CATEGORY NAME=Ordena pel títol de categoria
+ORDER BY ORDER=Ordena per l'ordre
+ORDER BY SECTION TITLE=Ordena pel títol de la secció
+ORDER BY TITLE=Ordena pel títol
+OTHER PARAMETERS=Altres paràmetres
+OVERRIDE WRITE PROTECTION WHILE SAVING=Substitueix la protecció contra escriptura quan desis
+ORDERING=Ordre
+OVERWRITE EXISTING FILES=Sobreescriu els fitxers existents
+PACKAGE=Paquet
+PACKAGE FILE=Fitxer del paquet
+PACKAGE MADE=Fitxer creat
+PAGE=Pàgina
+PAGE CLASS SUFFIX=Sufix de classe de pàgina
+PAGE TITLE=Títol de la pàgina
+PAGE WAS GENERATED IN=La pàgina s'ha generat en
+PARAMETER CONTROL=Control de paràmetres
+PARAMETERS=Paràmetres
+PARAMENABLED=Habilita aquest connector.
+PARAMMENUIMAGE=Una imatge petita a col·locar al costat de l'ítem de menú. Les imatges han de ser a images/stories/
+PARAMPAGECLASSSFX=Un sufix per a aplicar-lo a les classes CSS de la pàgina. Això permet el disseny individual de pàgina.
+PARAMPAGETITLE=Text a mostrar com a títol de la pàgina. Si es deixa en blanc, s'utilitzarà un títol per defecte.
+PARAMPAGEHEADER=Text a mostrar a la part superior de la pàgina. Si es deixa en blanc, s'utilitzarà el títol del menú.
+PARENT ITEM=Ítem pare
+PARENT WINDOW WITH BROWSER NAVIGATION=Finestra pare amb navegació
+PASSWORD=Contrasenya
+PENDING=Pendent
+PERMISSIONS=Permisos
+PLEASE ENTER A NAME FOR THIS MENU ITEM=Si us plau introduïu un títol per a aquest ítem de menú
+PLEASE ENTER A PASSWORD=Si us plau introduïu una contrasenya
+#If the variable does not work in your language use following line
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Please make a selection from the list
+#instead of
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau feu una selecció de la llista per a %s
+PLEASE MAKE CACHE DIRECTORY WRITABLE.=Si us plau doneu permisos d'escriptura al directori de la memòria cau.
+PLEASE SELECT A CATEGORY.=Si us plau seleccioneu una categoria.
+PLEASE SELECT A MENU=Si us plau seleccioneu un menú
+PLEASE SELECT A NEWS STORY TO=Si us plau seleccioneu una notícia per a aplicar l'acció
+PLEASE SELECT AN IMAGE TO UPLOAD=Si us plau seleccioneu una imatge a penjar
+PLEASE SELECT AN ITEM FROM THE LIST TO=Si us plau seleccioneu un ítem de la llista per a aplicar l'acció
+PLEASE SELECT AN ITEM TO=Si us plau seleccioneu un ítem per a aplicar l'acció
+PLEASE SELECT AN ITEM TO MAKE=Si us plau seleccioneu un ítem per a crear
+POLL PREVIEW=Previsualització de l'enquesta
+POLLS=Enquestes
+POSITION=Posició
+POST STORE FAILED=Ha fallat l'emmagatzemament del missatge!
+PREFERENCES=Paràmetres
+PREV=Anterior
+PREVIEW=Previsualització
+PREVIOUS=Anterior
+PREVIOUS PAGE=Pàgina anterior
+PRINT ICON=Icona d'impressió
+PROMPT_CLOSE=Tanca la finestra
+PROVIDES SYSTEM LOGGING=Proporciona el registre del sistema
+PROVIDES REMEMBER ME FUNCTIONALITY=Proporciona la funcionalitat de <em>Recorda'm!</em>
+PUBLIC=Públic
+PUBLIC BACKEND=Backend públic
+PUBLIC FRONTEND=Lloc públic
+PUBLISH=Publica
+PUBLISH INFORMATION=Publica la informació
+PUBLISH ITEM=Publica l'ítem
+PUBLISHED=Publicat
+PUBLISHED AND IS=S'ha publicat i és
+PUBLISHED, BUT HAS=S'ha publicat, però ha
+PUBLISHED, BUT IS=S'ha publicat, però és
+PUBLISHER=Publicador
+PUBLISHING=Publicació
+PUBLISHING INFO=Informació de la publicació
+QUICK TIP=Consell ràpid
+RIGHT=Dreta
+REFRESH FILES=Refresca els fitxers
+REGISTER=Registra
+REGISTERED=Registrat
+RELATED LINKS=Enllaços relacionats
+REMEMBER TO RENAME HTACCESS.TXT TO .HTACCESS=Recordeu-vos de canviar el nom del fitxer htaccess.txt per .htaccess
+REMIND=Recorda
+REORDER=Reordena
+RESET=Reinicialitza
+RESOURCE NOT FOUND=El Joomla! no ha pogut ubicar el recurs.
+RESTORE=Restaura
+RESULTS=Resultats
+RESULTS OF=Resultats %s - %s de %s
+RETURN TO SITE HOME PAGE=Torna a la pàgina inicial del lloc
+SAVE=Desa
+SAVE ORDER=Desa l'ordre
+SEARCH=Cerca
+SECONDS=Segons
+SECTION=Secció
+SECURITY=Seguretat
+SELECT CLIENT=Seleccioneu un client
+SELECT A CATEGORY=Seleccioneu una categoria
+SELECT A MENU=Seleccioneu un menú
+SELECT AUTHOR=Seleccioneu l'autor
+SELECT AN ITEM TO=Seleccioneu un ítem per a
+SELECT AN ITEM TO DELETE=Seleccioneu un ítem a eliminar
+SELECT AN ITEM TO EDIT=Seleccioneu un ítem a editar
+SELECT AN ITEM TO MOVE=Seleccioneu un ítem a moure
+SELECT AN ITEM TO PUBLISH=Seleccioneu un ítem a publicar
+SELECT AN ITEM TO UNPUBLISH=Seleccioneu un ítem a retirar
+SELECT CATEGORY=Seleccioneu la categoria
+SELECT FROM LIST=Seleccioneu de la llista
+SELECT IMAGE=Seleccioneu la imatge
+SELECT ITEM=Seleccioneu un ítem
+SELECT SECTION=Seleccioneu la secció
+SELECT STATE=Seleccioneu un estat
+SERVER OFFSET=Òfset del servidor
+SESSION_EXPIRED=La vostra sessió ha vençut. Si us plau torneu-la a iniciar.
+SETTINGS=Configuració
+SHOW=Mostra
+SHOW PAGE TITLE=Mostra el títol de la pàgina
+SHOW/HIDE THE PAGES TITLE=Mostra/Amaga el títol de la pàgina
+SITE=Lloc
+SITE FILES=Fitxers del lloc
+SOURCE=Codi font
+SPECIAL=Especial
+SQL ERROR=S'ha produït un error d'SQL.
+START=Inicia
+START PUBLISHING=Inicia la publicació
+START: ALWAYS=Inicia: Sempre
+STATE=Estat
+STORE FAILED=ha fallat l'emmagatzemament
+SUBJECT=Assumpte
+SUCCESS=Èxit
+SUCCESSFUL=Correctament
+SUCCESSFULLY CREATED=S'ha creat amb èxit
+SUCCESSFULLY SAVED=S'ha desat amb èxit
+SUCCESSFULLY SAVED CHANGES=Els canvis s'han desat amb èxit
+SUPER ADMINISTRATOR=Superadministrador
+SUPPORT=Suport
+SYNDICATE=Sindicat
+TASK=Tasca
+TELEPHONE=Telèfon
+TEMPLATE=Plantilla
+TEMPLATE NOT FOUND=No s'ha trobat la plantilla %s
+TEMPLATES=Plantilles
+TEXT=Text
+THE FILE MUST BE=El fitxer ha de ser
+THE ITEM=L'article
+THE MODULE=El mòdul
+THIS WILL COPY THE CATEGORIES LISTED=Això copiarà les categories llistades
+TIME ZONE FOR THIS USER=Zona horària per a aquest usuari
+TIPTITLEFIELD=Títol de la vostra informació
+TITLE=Títol
+TITLE ALIAS=Àlies del títol
+TO=a
+TOOLTIP=Indicador de funció
+TOOLS=Eines
+TOP=Part superior
+TRASH=Elimina
+TRASHED CONTENT=Articles a la paperera
+TRASHED MENU ITEMS=Ítems de menú a la paperera
+TRAWL=Arrossegar
+TYPE=Tipus
+UNABLE TO CONNECT TO DATABASE:=No es pot connectar a la base de dades:
+UNABLE TO LOAD DATABASE DRIVER:=No es pot carregar el controlador de la base de dades:
+UNABLE TO REMOVE LANGUAGE DIRECTORY=No es pot eliminar el directori d'idioma indicat.
+UNABLE TO REMOVE THE COMPONENT ADMIN DIRECTORY=No es pot eliminar el directori d'administració del component
+UNABLE TO REMOVE THE COMPONENT SITE DIRECTORY=No es pot eliminar el directori de la part pública del component
+UNKNOWN METHOD $MODEL::$METHOD() WAS NOT FOUND=El mètode desconegut $model::$method() no s'ha trobat
+UNPUBLISH=Retira
+UNPUBLISH ITEM=Retira l'ítem
+UNPUBLISHED=Retirat
+UNWRITABLE=No es pot escriure
+UP=amunt
+UPLOAD=Penja
+UPLOAD A FILE=Penja un fitxer
+UPLOAD OF=Càrrega de
+UPLOAD OF IMAGE FAILED=La càrrega de %s ha fallat.
+UPLOAD OF IMAGE SUCCESSFUL=La càrrega de %s a %s s'ha fet amb èxit.
+URL=URL
+USE DEFAULT=Utilitza el valor per defecte
+USE GLOBAL=Utilitza el valor global
+USER=Usuari
+USERNAME=Nom d'usuari
+VALIDALPHANOSPACES=El nom del fitxer ha de contenir només caràcters alfanumèrics i no pot contenir espais.
+VALIDDELETEITEMS=Esteu segur que voleu eliminar els ítems seleccionats?
+VALIDUSERPASS=Nom d'usuari i/o contrasenya incorrectes. Si us plau torneu-ho a provar.
+VALIDUSERPASSACCESS=Nom d'usuari, contrasenya o nivell d'accés incorrectes. Si us plau torneu-ho a provar.
+VERSION=Versió
+VIEW=Mostra
+VIEW ALL=Mostra'ls tots
+VISIBLE=Visible
+VOTE=Vota
+WARNFS_ERR01=Avís: No s'han pogut canviar els permisos al fitxer!
+WARNFS_ERR02=Avís: No s'ha pogut moure el fitxer!
+WARNFS_ERR03=Ha fallat la càrrega. No es pot escriure al directori.
+WARNFS_ERR04=Ha fallat la càrrega. El directori no existeix.
+WARNING=Avís
+WARNJAVASCRIPT=Avís! El JavaScript ha d'estar habilitat per a un funcionament correcte del backend d'administració.
+WEB=Web
+WEBLINK=Enllaç web
+WEB LINKS=Enllaços web
+WEBLINK ITEMS=Ítems d'enllaços web
+WEBLINK CATEGORIES=Categories d'enllaços web
+WELCOME TO JOOMLA!=Benvingut al Joomla!
+WIDTH=Amplada
+WRITABLE=Es pot escriure
+YES=Sí
+YOU MUST SELECT A CATEGORY=Heu de seleccionar una categoria
+YOU MUST SELECT A SECTION=Heu de seleccionar una secció
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_components.ini 12/administrator/language/ca-ES/ca-ES.mod_components.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_components.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_components.ini	2008-12-31 19:30:18.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.mod_components.ini 10388 2008-07-29 16:24:13Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COMPONENTS=Components
+FULL COMPONENT LIST=Llista completa de components
+NUMBER OF COMPONENTS TO DISPLAY=Nombre de components a mostrar
+THIS MODULE SHOWS A LIST OF INSTALLED COMPONENTS=Aquest mòdul mostra una llista dels components instal·lats
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_custom.ini 12/administrator/language/ca-ES/ca-ES.mod_custom.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_custom.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_custom.ini	2008-12-31 19:30:48.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.mod_custom.ini 10388 2008-07-29 16:26:04Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCMODCUSTOM=Aquest mòdul us permet escriure HTML utilitzant un editor WYSIWYG
+MOD_CUSTOM=mod_custom
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_feed.ini 12/administrator/language/ca-ES/ca-ES.mod_feed.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_feed.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_feed.ini	2009-01-10 19:06:40.000000000 +0100
@@ -0,0 +1,25 @@
+# $Id: ca-ES.mod_feed.ini 11299 2009-01-10 19:01:49Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
+
+# Note : All ini files need to be saved as UTF-8
+
+DISPLAY FEED IN RTL DIRECTION=Mostra el canal en direcció de dreta a esquerra (RTL)
+DISPLAY NEWS FEED TITLE=Mostra el títol del canal d'informació
+ENTER NUMBER OF RSS ITEMS TO DISPLAY=Introduïu el nombre d'ítems RSS a mostrar
+ENTER THE URL OF THE RSS/RDF FEED=Introduïu l'URL del canal RSS/RDF
+ERROR LOADING FEED DATA=S'ha produït un error en carregar les dades del canal
+FEED DESCRIPTION=Descripció del canal
+FEED TITLE=Títol del canal
+FEED URL=URL del canal
+ITEM DESCRIPTION=Descripció de l'ítem
+ITEMS=Ítems
+MOD_FEED=mod_feed
+PARAMITEMDESC=Mostra la descripció o el text d'introducció d'ítems individuals RSS
+PARAMWORDCOUNT=Permet limitar la quantitat de descripció d'ítem visible. 0 mostrarà tot el text
+RTL FEED=Canal RTL
+SHOW THE DESCRIPTION TEXT FOR THE WHOLE FEED=Mostra el text de descripció per al canal sencer
+SHOW THE IMAGE ASSOCIATED WITH THE WHOLE FEED=Mostra la imatge associada amb el canal sencer
+WORD COUNT=Comptatge de paraules
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_footer.ini 12/administrator/language/ca-ES/ca-ES.mod_footer.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_footer.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_footer.ini	2008-12-31 19:32:06.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.mod_footer.ini 10496 2008-07-29 23:04:12Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CHECK FOR LATEST VERSION=Cerca la darrera versió
+MOD_FOOTER=mod_footer
+THERE ARE NO PARAMETERS FOR THIS ITEM=No hi ha paràmetres per a aquest mòdul
+THIS MODULE SHOWS THE JOOMLA! COPYRIGHT INFORMATION=Aquest mòdul mostra la informació de copyright del Joomla!
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_latest.ini 12/administrator/language/ca-ES/ca-ES.mod_latest.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_latest.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_latest.ini	2008-12-31 19:36:26.000000000 +0100
@@ -0,0 +1,19 @@
+# $Id: ca-ES.mod_latest.ini 10388 2008-07-29 23:05:41Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A FILTER FOR THE AUTHORS=Un filtre per als autors
+ADDED OR MODIFIED BY ME=Afegit o modificat per mi
+ANYONE=Qualsevol
+AUTHORS=Autors
+DESCLATESTNEWS=Aquest mòdul mostra una llista dels articles publicats més recentment els quals encara són actuals. Alguns dels que es mostren potser hagin vençut tot i ser els més recents.
+MOD_LATEST=mod_latest
+NO MATCHING RESULTS=Cap resultat coincident
+NOT ADDED OR MODIFIED BY ME=No afegit o modificat per mi
+ORDERING OPTIONS=Opcions d'ordre
+RECENTLY ADDED FIRST=Primer els que s'han afegit recentment
+RECENTLY MODIFIED FIRST=Primer els que s'han modificat recentment
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_logged.ini 12/administrator/language/ca-ES/ca-ES.mod_logged.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_logged.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_logged.ini	2008-12-31 19:37:18.000000000 +0100
@@ -0,0 +1,14 @@
+# $Id: ca-ES.mod_logged.ini 10388 2008-07-29 23:06:41Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CLIENT=Client
+FORCE LOGOUT USER=Imposa la desconnexió de l'usuari
+MOD_LOGGED=mod_logged
+THIS MODULE SHOWS A LIST OF THE CURRENTLY LOGGED IN USERS=Aquest mòdul mostra una llista dels usuaris amb sessió iniciada actualment
+LAST ACTIVITY=Darrera activitat
+ACTIVITY HOURS=fa %.1f hores
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_login.ini 12/administrator/language/ca-ES/ca-ES.mod_login.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_login.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_login.ini	2008-12-31 19:38:32.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.mod_login.ini 10388 2008-07-29 23:07:45Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCLOGINFORM=Aquest mòdul mostra un formulari d'inici de sessió amb nom d'usuari i contrasenya. No es pot inhabilitar.
+MOD_LOGIN=mod_login
+LANGUAGE=Idioma
+ENCRYPT LOGIN FORM=Encripta el formulari d'inici de sessió
+SUBMIT ENCRYPTED LOGIN DATA (REQUIRES SSL)=Tramet de forma encriptada les dades d'inici de sessió (necessita l'SSL).  No habiliteu aquesta opció si el Joomla no és accessible utilitzant el prefix de protocol https://
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_menu.ini 12/administrator/language/ca-ES/ca-ES.mod_menu.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_menu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_menu.ini	2009-01-10 19:11:18.000000000 +0100
@@ -0,0 +1,88 @@
+# $Id: ca-ES.mod_menu.ini 11393 2009-01-10 19:08:52Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADD/EDIT=Afegeix/Edita
+ARCHIVE=Arxiva
+ARTICLE MANAGER=Gestor d'articles
+ARTICLE TRASH=Paperera d'articles
+ARTICLE STATISTICS=Estadístiques dels articles
+BACK=Enrere
+BROWSER, OS, DOMAIN=Navegador, Sistema Operatiu, Domini
+CATEGORIES=Categories
+CATEGORY MANAGER=Gestor de categories
+CHECK-IN ALL CHECKED-OUT ITEMS=Verifica tots els articles no verificats
+CLEAN ALL CACHES=Neteja totes les memòries cau
+CLEAN CONTENT CACHE=Neteja la memòria cau de continguts
+CLEAN THE ARTICLES CACHE=Neteja la memòria cau d'articles
+COMPONENT MANAGEMENT=Gestió de components
+COMPONENTS=Components
+CONFIGURATION=Configuració global
+CONTENT BY SECTION=Continguts per secció
+CONTENT MANAGEMENT=Gestió de continguts
+CONTENT MANAGERS=Gestors de continguts
+CONTROL PANEL=Tauler de control
+ELEMENT LIST=Llista d'elements
+EXTENSIONS=Extensions
+EXTENSION MANAGER=Gestor d'extensions
+FRONTPAGE MANAGER=Gestor de la portada
+GLOBAL CHECKIN=Verificació global
+INSTALL EXTENSIONS=Instal·la extensions
+INSTALL/UNINSTALL=Instal·la/Desinstal·la
+INSTALLER=Instal·lador
+ITEMS=Ítems
+JOOMLA! HELP=Ajuda del Joomla!
+LANGUAGE MANAGER=Gestor d'idiomes
+LANGUAGES=Idiomes
+LOGOUT=Finalitza la sessió
+MANAGE ARTICLES=Gestiona els articles
+MANAGE CONTENT CATEGORIES=Gestiona les categories de continguts
+MANAGE CONTENT SECTIONS=Gestiona les seccions de continguts
+MANAGE FRONTPAGE ITEMS=Gestiona els articles de la portada
+MANAGE LANGUAGES=Gestiona els idiomes
+MANAGE MEDIA FILES=Gestiona els fitxers multimèdia
+MANAGE MENU=Gestiona els menús
+MANAGE TRASH=Gestiona la paperera
+MANAGE USERS=Gestiona els usuaris
+MEDIA MANAGER=Gestor multimèdia
+MENUS=Menús
+MENU INACTIVE FOR THIS PAGE=Aquest menu és inactiu per a aquesta pàgina.
+MENU MANAGEMENT=Gestió del menú
+READ MESSAGES=Llegeix els missatges
+MOD_CSSMENU=mod_cssmenu
+MODULE MANAGER=Gestor de mòduls
+MODULES=Mòduls
+MOD_MENU=mod_menu
+MORE COMPONENTS...=Més components...
+PAGE HITS=Visites de la pàgina
+PREVIEW...=Previsualització...
+PLUGIN MANAGEMENT=Gestió de connectors
+PLUGIN MANAGER=Gestor de connectors
+PLUGINS=Connectors
+SEARCH TEXT=Text de les cerques
+SECTION MANAGER=Gestor de seccions
+SITE MANAGEMENT=Gestió del lloc
+SITE STATISTICS=Estadístiques del lloc
+STATISTICS=Estadístiques
+SYNDICATE=Sindicat
+SYSTEM=Sistema
+SYSTEM INFO=Informació del sistema
+SYSTEM INFORMATION=Informació del sistema
+SYSTEM MANAGEMENT=Gestió del sistema
+TEMPLATES - ADMIN=Plantilles - Administració
+TEMPLATES - SITE=Plantilles - Lloc
+TEMPLATE MANAGER=Gestor de plantilles
+THEMEOFFICE=ThemeOffice
+THIS MODULE SHOWS THE MAIN ADMIN NAVIGATION MODULE=Aquest mòdul mostra el mòdul de navegació administratiu principal
+MENU TRASH=Paperera de menús
+UNINSTALL COMPONENTS=Desinstal·la components
+USER MANAGER=Gestor d'usuaris
+UNINSTALL PLUGINS=Desinstal·la connectors
+UNINSTALL MODULES=Desinstal·la mòduls
+WRITE MESSAGE=Escriviu un missatge
+CLEAN CACHE=Neteja la memòria cau
+PURGE EXPIRED CACHE=Purga els fitxers vençuts de la cau
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_online.ini 12/administrator/language/ca-ES/ca-ES.mod_online.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_online.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_online.ini	2008-12-31 19:39:58.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.mod_online.ini 10388 2008-07-29 23:19:12Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MOD_ONLINE=mod_online
+THIS MODULE SHOWS A LIST OF THE BACKEND USERS LOGGED IN=Aquest mòdul mostra una llista dels usuaris del Backend amb sessió iniciada.
+USERS ONLINE=Usuaris en línia
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_popular.ini 12/administrator/language/ca-ES/ca-ES.mod_popular.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_popular.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_popular.ini	2008-12-31 19:40:54.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.mod_popular.ini 10388 2008-07-29 23:22:00Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CREATED=Creat
+MOD_POPULAR=mod_popular
+MOST POPULAR ITEMS=Els articles més populars
+DESCPOPULARITEMS=Aquest mòdul mostra una llista dels articles populars publicats els quals encara són actuals. Alguns dels que es mostren potser hagin vençut tot i ser els més populars.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_quickicon.ini 12/administrator/language/ca-ES/ca-ES.mod_quickicon.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_quickicon.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_quickicon.ini	2009-06-25 14:22:12.000000000 +0200
@@ -0,0 +1,23 @@
+# $Id: ca-ES.mod_quickicon.ini 10388 2008-07-29 23:23:12Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8--MODIFICADO POR Joomla! Spanish
+
+ADD NEW ARTICLE=Afegeix un nou article
+CATEGORY MANAGER=Gestor de categories
+ARTICLE MANAGER=Gestor d'articles
+FRONTPAGE MANAGER=Gestor de la portada
+GLOBAL CONFIGURATION=Configuració global
+LANGUAGE MANAGER=Gestor d'idiomes
+MEDIA MANAGER=Gestor multimèdia
+MENU MANAGER=Gestor de menús
+MOD_QUICKICON=mod_quickicon
+QUICK ICONS=Icones d'execució ràpida
+SECTION MANAGER=Gestor de seccions
+THIS MODULE SHOWS QUICK ICONS THAT ARE VISIBLE ON THE ADMIN AREA HOME PAGE=Aquest mòdul mostra les icones d'execució ràpida que són visibles al tauler de control.
+TRASH MANAGER=Gestor de la paperera
+USER MANAGER=Gestor d'usuaris
+TRANSLATION MANAGER=Administrador de Traduccions
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_stats.ini 12/administrator/language/ca-ES/ca-ES.mod_stats.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_stats.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_stats.ini	2008-12-31 19:42:32.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.mod_stats.ini 10388 2008-07-29 23:24:10Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MENU=Menú
+MENU ITEMS=Ítems de menú
+MOD_STATS=mod_stats
+DESCITEMSSTATS=Aquest mòdul mostra detalls del nombre d'ítems de menú els quals encara són actuals en cadascun dels menús. Alguns dels que es mostren potser hagin vençut tot i ser els més recents.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_status.ini 12/administrator/language/ca-ES/ca-ES.mod_status.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_status.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_status.ini	2008-12-31 19:42:58.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.mod_status.ini 10388 2008-07-29 23:24:59Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+LEGACY=Llegat
+MOD_STATUS=mod_status
+THIS MODULE SHOWS THE STATUS OF THE LOGGED IN USER.=Aquest mòdul mostra l'estat dels usuaris amb sessió iniciada.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_submenu.ini 12/administrator/language/ca-ES/ca-ES.mod_submenu.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_submenu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_submenu.ini	2008-12-31 19:43:28.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.mod_submenu.ini 10388 2008-07-29 23:26:01Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MOD_SUBMENU=mod_submenu
+THIS MODULE SHOWS THE SUBMENU NAVIGATION MODULE=Aquest mòdul mostra el mòdul de navegació de submenú
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_title.ini 12/administrator/language/ca-ES/ca-ES.mod_title.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_title.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_title.ini	2008-12-31 19:43:52.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.mod_title.ini 10388 2008-07-29 23:26:53Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MOD_TITLE=mod_title
+THIS MODULE SHOWS THE TOOLBAR COMPONENT TITLE=Aquest mòdul mostra el títol del component de barra d'eines
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_toolbar.ini 12/administrator/language/ca-ES/ca-ES.mod_toolbar.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_toolbar.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_toolbar.ini	2008-12-31 19:44:22.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.mod_toolbar.ini 10496 2008-07-29 23:28:19Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MOD_TOOLBAR=mod_toolbar
+THIS MODULE SHOWS THE TOOLBAR ICONS USED TO CONTROL ACTIONS THROUGHOUT THE ADMINISTRATOR AREA=Aquest mòdul mostra les icones de la barra d'eines utilitzades per a controlar les accions mitjançant l'àrea d'administrador.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.mod_unread.ini 12/administrator/language/ca-ES/ca-ES.mod_unread.ini
--- 11/administrator/language/ca-ES/ca-ES.mod_unread.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.mod_unread.ini	2008-12-31 19:44:56.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.mod_unread.ini 10388 2008-07-29 23:29:04Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MOD_UNREAD=mod_unread
+THIS MODULE SHOWS A LIST OF UNREAD ITEMS=Aquest mòdul mostra una llista de missatges de correu no llegits
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_authentication_example.ini 12/administrator/language/ca-ES/ca-ES.plg_authentication_example.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_authentication_example.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_authentication_example.ini	2008-12-31 19:45:28.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_authentication_example.ini 10496 2008-07-29 23:30:24Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCUSERBOT=Proporciona lligams per a sincronitzar el Joomla! amb una aplicació de tercers
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_authentication_gmail.ini 12/administrator/language/ca-ES/ca-ES.plg_authentication_gmail.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_authentication_gmail.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_authentication_gmail.ini	2008-12-31 19:45:58.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_authentication_gmail.ini 10388 2008-07-29 23:32:03Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+HANDLES USER AUTHENTICATION WITH A GMAIL ACCOUNT=Gestiona l'autenticació d'usuari amb un compte de GMail (Necessita el cURL)
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_authentication_joomla.ini 12/administrator/language/ca-ES/ca-ES.plg_authentication_joomla.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_authentication_joomla.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_authentication_joomla.ini	2008-12-31 19:46:32.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.plg_authentication_joomla.ini 10496 2008-07-29 23:34:32Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+HANDLES JOOMLAS DEFAULT USER AUTHENTICATION=Gestiona l'autenticació d'usuaris per defecte del Joomla!
+JOOMLA CAN NOT HAVE A BLANK PASSWORD=El Joomla no pot tenir una contrasenya en blanc
+INVALID PASSWORD=Contrasenya no vàlida
+INVALID RESPONSE FROM DATABASE=Hi ha una resposta no vàlida de la base de dades.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_authentication_ldap.ini 12/administrator/language/ca-ES/ca-ES.plg_authentication_ldap.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_authentication_ldap.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_authentication_ldap.ini	2008-12-31 19:47:02.000000000 +0100
@@ -0,0 +1,50 @@
+# $Id: ca-ES.plg_authentication_ldap.ini 10496 2008-07-29 23:55:21Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AUTHORIZATION METHOD=Mètode d'autorització
+ANONYMOUS COMPARE=Comparació anònima
+AUTHENTICATE THEN BIND=Autentica llavors vincula
+BASE DN=DN base
+BIND AS USER=Vincula com a usuari
+BIND AND SEARCH=Vincula i cerca
+BIND DIRECTLY AS USER=Vincula directament com a usuari
+CONNECT PASSWORD=Contrasenya de connexió
+CONNECT USERNAME=Nom d'usuari de connexió
+DEFAULT PORT IS 389=El port per defecte és el 389
+FOLLOW REFERRALS=Segueix els referents
+FOR EXAMPLE, OPENLDAP.MYCOMPANY.ORG=Per exemple: openldap.mycompany.org
+HANDLES USER AUTHENTICATION AGAINST AN LDAP SERVER=Gestiona l'autenticació d'usuari contra un servidor LDAP
+HOST=Amfitrió
+LDAP AUTHENTICATION=Autenticació LDAP
+LDAP V3=LDAP V3
+MAP FULLNAME=Mapa: Nom complet
+MAP EMAIL=Mapa: Correu electrònic
+MAP USER ID=Mapa: ID d'usuari
+MAP PASSWORD=Mapa: Contrasenya
+NEGOTIATE TLS=Negocia TLS
+NO=No
+PARAMLDAPHOST=Per exemple: openldap.mycompany.org
+PARAMLDAPPORT=El port per defecte és el 389
+PARAMBASEDN=El DN base del servidor LDAP
+PARAMAUTHMETHOD=El mètode d'autorització per a validar les credencials
+PARAMCONNECTSTRING=El nom d'usuari i contrasenya de connexió defineixen els paràmetres de connexió per a la fase de cerca de DN. Hi ha dues opcions disponibles: - Cerca de DN anònima. Deixeu els dos camps en blanc. - Connexió administrativa: El nom d'usuari de connexió és el nom d'usuari d'un compte d'administració, per exemple Administrador. La contrasenya de connexió és la contrasenya del compte d'administració.
+PARAMCONNECTPASSWORD=La contrasenya de connexió és la contrasenya d'un compte d'administració. S'utilitza als mètodes d'autorització Autentica llavors vincula i Comparació autenticada
+PARAMLDAPV3=Per defecte és LDAP2, però versions posteriors d'OpenLdap necessiten que els clients utilitzin LDAPV3
+PARAMNEGOCIATETLS=Negocia l'encriptació TLS amb el servidor LDAP. Això requereix que tot el tràfic cap a i des del servidor LDAP sigui encriptat.
+PARAMFOLLOW=Aquesta opció estableix el valor del senyalador LDAP_OPT_REFERRALS. Necessiteu posar-ho a No per a servidors Windows 2003.
+PARAMSEARCHSTRING=Una cadena de consulta utilitzada per a cercar un usuari donat. La clau [search] es reemplaça dinàmicament amb les dades de connexió proporcionades per l'usuari. Un exemple de cadena és: uid=[search]. Es poden utilitzar diverses cadenes separades per punt i coma. Només s'utilitza en cercar.
+PARAMUSERSDN=La clau [username] es reemplaça dinàmicament amb les dades de connexió proporcionades per l'usuari. Un exemple de cadena és: uid=[username], dc=my-domain, dc=com. Es poden utilitzar diverses cadenes, separades per punt i coma. Només s'utilitza per a vincles directes.
+PARAMMAPFN=Atribut de l'LDAP que conté el nom complet de l'usuari
+PARAMMAPEMAIL=Atribut de l'LDAP que conté l'adreça electrònica de l'usuari
+PARAMMAPUID=Atribut de l'LDAP que conté l'identificador de connexió de l'usuari. Per a Active Directory això és sAMAccountName
+PARAMMAPPASSWORD=Atribut de l'LDAP que conté la contrasenya de l'usuari contra la qual comparar.
+PORT=Port
+SEARCH STRING=Cadena de cerca
+THE BASE DN OF YOUR LDAP SERVER=El DN base del servidor LDAP, p.ex. o=mydomain.com
+USERS DN=DN de l'usuari
+YES=Sí
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_authentication_openid.ini 12/administrator/language/ca-ES/ca-ES.plg_authentication_openid.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_authentication_openid.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_authentication_openid.ini	2009-01-10 19:24:30.000000000 +0100
@@ -0,0 +1,20 @@
+# $Id: ca-ES.plg_authentication_openid.ini 11403 2009-01-10 19:14:46Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+HANDLES USER AUTHENTICATION WITH AN OPENID (REQUIRES PHP5)=Gestiona l'autenticació d'usuari amb un OpenID (requereix el PHP5)
+LOGIN_WITH_OPENID=Inici de sessió amb un OpenID
+NORMAL_LOGIN=Torna a l'inici de sessió normal
+WHAT_IS_OPENID=Què és OpenId?
+CONVERT OLD USERNAMES=Converteix els antics noms d'usuari
+OPENID_USERMODE_DESC=Si esteu actualitzant un lloc que ja estava utilitzant l'OpenId, hauríeu d'establir això a sí. En altre cas, establiu-ho a no. Vegeu les notes del llançament de la versió 1.5.9 per a més informació.
+REQUIRE POLICY PHISHING RESISTANT=Exigeix polítiques de resistència a la pesca electrònica
+PHISHING_RESISTANT_DESC=Exigeix que els OP s'hagin de configurar segons http://schemas.openid.net/pape/policies/2007/06/phishing-resistant
+REQUIRE POLICY MULTI FACTOR=Exigeix polítiques multifactor
+MULTI_FACTOR_DESC=Exigeix que els OP s'hagin de configurar segons http://schemas.openid.net/pape/policies/2007/06/multi-factor
+REQUIRE POLICY MULTI FACTOR PHYSICAL=Exigeix polítiques físiques multifactor
+MULTI_FACTOR_PHYSICAL_DESC=Exigeix que els OP s'hagin de configurar segons http://schemas.openid.net/pape/policies/2007/06/multi-factor-physical
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_code.ini 12/administrator/language/ca-ES/ca-ES.plg_content_code.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_code.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_code.ini	2008-12-31 19:48:14.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.plg_content_code.ini 10388 2008-07-29 23:51:49Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+MOSCODE=codi
+DISPLAYS FORMATTED CODE IN CONTENT ITEMS=Mostra codi formatat als articles
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_emailcloak.ini 12/administrator/language/ca-ES/ca-ES.plg_content_emailcloak.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_emailcloak.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_emailcloak.ini	2008-12-31 19:48:40.000000000 +0100
@@ -0,0 +1,14 @@
+# $Id: ca-ES.plg_content_emailcloak.ini 10496 2008-07-29 23:54:48Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AS LINKABLE MAILTO ADDRESS=Adreça electrònica com a enllaç
+DESCMOSEMAILCLOAK=Protegeix tots els correus electrònics del contingut contra robots de correu brossa utilitzant JavaScript
+MODE=Mode
+MOSEMAILCLOAK=mosemailcloak
+NONLINKABLE TEXT=Text no enllaçable
+SELECT HOW THE EMAILS WILL BE DISPLAYED=Seleccioneu com es mostraran els correus electrònics
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_geshi.ini 12/administrator/language/ca-ES/ca-ES.plg_content_geshi.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_geshi.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_geshi.ini	2008-12-31 19:49:06.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.plg_content_geshi.ini 10388 2008-07-29 23:56:09Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+GESHI=GeSHi
+DESCGESHI=Mostra codi formatat als articles basat en el motor de realçament GeSHi
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_image.ini 12/administrator/language/ca-ES/ca-ES.plg_content_image.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_image.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_image.ini	2008-12-31 19:49:34.000000000 +0100
@@ -0,0 +1,15 @@
+# $Id: ca-ES.plg_content_image.ini 10496 2008-07-30 00:01:17Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCIMAGE=Fa possible inserir imatges als articles, configurar les propietats de la imatge i penjar nous fitxers d'imatge.
+MARGIN=Marge
+UP=Amunt
+PADDING=Separació
+PARAMMARGIN=Marge (en píxels) del DIV que envolta la imatge i la llegenda (només s'aplica si s'utilitza una llegenda)
+PARAMPADDING=Separació (en píxels) del DIV que envolta la imatge i la llegenda (només s'aplica si s'utilitza una llegenda)
+IMAGE=Imatge
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_loadmodule.ini 12/administrator/language/ca-ES/ca-ES.plg_content_loadmodule.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_loadmodule.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_loadmodule.ini	2008-12-31 19:50:06.000000000 +0100
@@ -0,0 +1,17 @@
+# $Id: ca-ES.plg_content_loadmodule.ini 10496 2008-07-30 00:04:53Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CODE THAT WILL WRAP MODULES=Codi que embolcarà els mòduls
+DESCLOADPOSITION=Carrega les posicions del mòdul en el contingut, sintaxi: {loadposition user1}
+LOADPOSITION=loadposition
+NO WRAPPING - RAW OUTPUT=Sense embolcall (sortida en brut)
+STYLE=Estil
+WRAPPED BY DIVS=Embolcat per Divs
+WRAPPED BY MULTIPLE DIVS=Embolcat per Divs múltiples
+WRAPPED BY TABLE - COLUMN=Embolcat per taula (columna)
+WRAPPED BY TABLE - HORIZONTAL=Embolcat per taula (horitzontal)
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_pagebreak.ini 12/administrator/language/ca-ES/ca-ES.plg_content_pagebreak.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_pagebreak.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_pagebreak.ini	2008-12-31 19:50:30.000000000 +0100
@@ -0,0 +1,27 @@
+# $Id: ca-ES.plg_content_pagebreak.ini 10496 2008-07-30 00:10:02Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+&GT;=&gt;
+&LT;=&lt;
+ALL PAGES=Totes les pàgines
+ARTICLE INDEX=Índex de l'article
+DESCCONTENTPAGEBREAK=Afegeix la funcionalitat de Taula de continguts a un article paginat. Això es fa automàticament mitjançant el botó "Salt de pàgina" afegit a la part inferior del quadre de text d'un article. S'inclou aquí el codi HTML com a referència del que hi ha disponible. El salt de pàgina es mostrarà a la finestra de text com una línia horitzontal.<br />Sintaxi:  Sintaxi: &lt;hr class="system-pagebreak" /&gt;<br />&lt;hr class="system-pagebreak" title="El títol de la pàgina" /&gt; or <br />&lt;hr class="system-pagebreak" alt="La primera pàgina" /&gt; or <br />&lt;hr class="system-pagebreak" title="El títol de la pàgina" alt="La primera pàgina" /&gt; or <br />&lt;hr class="system-pagebreak" alt="La primera pàgina" title="El títol de la pàgina" /&gt;
+HIDE=Amaga
+NEXT=Següent
+NO=No
+PAGE #=Pàgina %s
+PARAMENABLED=Selecciona si el connector està habilitat o no.
+PARAMSITETITLE=els atributs de títol i encapçalament del connector afegits a l'etiqueta del títol del lloc
+PARAMSITETOC=Mostra una taula de continguts als articles multipàgina.
+PARAMSITESHOWALL=Permet als usuaris seleccionar la funció "Mostra-ho tot"
+PREV=Anterior
+SHOW=Mostra
+SHOW ALL=Mostra-ho tot
+SITE TITLE=Títol del lloc
+TABLE OF CONTENTS=Taula de continguts
+YES=Sí
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_pagenavigation.ini 12/administrator/language/ca-ES/ca-ES.plg_content_pagenavigation.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_pagenavigation.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_pagenavigation.ini	2008-12-31 19:50:54.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_content_pagenavigation.ini 10388 2008-07-30 00:11:17Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ABOVE=A sobre
+DESCPAGENAVIGATION=Us habilita afegir la funcionalitat <em>Següent &amp; Anterior</em> a un article.
+BELOW=A sota
+POSITION=Posició
+POSITION OF PAGE NAVIGATION IN RELATION TO TEXT=La posició de la funció <em>Navegació de pàgina</em> a la pàgina visualitzada en relació amb el text.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_content_vote.ini 12/administrator/language/ca-ES/ca-ES.plg_content_vote.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_content_vote.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_content_vote.ini	2008-12-31 19:51:22.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_content_vote.ini 10388 2008-07-30 00:11:56Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADD THE VOTING FUNCTIONALITY TO ITEMS=Afegeix la funcionalitat de votació als articles
+BEST=Millor
+POOR=Pitjor
+RATE=Valora
+USER RATING=Valoració d'usuari
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_editors_none.ini 12/administrator/language/ca-ES/ca-ES.plg_editors_none.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_editors_none.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_editors_none.ini	2008-12-31 19:51:54.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_editors_none.ini 10496 2008-07-30 00:19:59Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+THIS LOADS A BASIC TEXT ENTRY FIELD=Això carrega un camp bàsic d'entrada de text.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_editors_tinymce.ini 12/administrator/language/ca-ES/ca-ES.plg_editors_tinymce.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_editors_tinymce.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_editors_tinymce.ini	2008-12-31 19:52:22.000000000 +0100
@@ -0,0 +1,96 @@
+# $Id: ca-ES.plg_editors_tinymce.ini 10496 2008-07-30 00:48:54Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ABILITY TO CHANGE TEXT DIRECTION=Capacitat per a canviar la direcció del text
+ABSOLUTE=Absolut
+ADVANCED=Avançat
+ALWAYS=Sempre
+AUTOMATIC LANGUAGE SELECTION=Selecció automàtica de l'idioma
+BR ELEMENTS=Elements BR
+CLEANS CODE ON EDITOR LOAD=Neteja el codi quan es carrega l'editor
+CODE CLEANUP=Neteja de codi
+CODE CLEANUP ON SAVE=Neteja de codi en desar
+CODE CLEANUP ON STARTUP=Neteja de codi a l'engegada
+CODE CLEANUP UPON SAVING ARTICLE=Neteja de codi en desar l'article
+COMPRESSED VERSION=Versió comprimida
+CUSTOM CSS CLASSES=Classes CSS personalitzades
+DATE FORMAT=Format de la data
+DESCLANGCODE=Idioma de la interfície d'usuari de l'editor. Un valor aquí és obligatori si es tria la selecció manual d'idioma.
+DESCLANGMODE=Si trieu 'Sí', l'idioma de l'editor es seleccionarà automàticament amb l'idioma de la interfície d'usuari. No ho activeu si no hi ha instal·lats els idiomes de l'editor necessaris.
+DESCTINYMCE=TinyMCE és un editor HTML WYSIWYG JavaScript independent de plataforma basat en web.
+DIRECTIONALITY=Direcció
+DO NOT CLEAN ENTITIES=No netegis les entitats HTML.
+ELEMENT PATH=Camí de l'element
+ELEMENTS THAT WILL BE CLEANED FROM THE TEXT=Elements que es netejaran del text
+EXTENDED VALID ELEMENTS=Elements vàlids ampliats
+FLASH=Flash
+FORMAT OF INSERTED DATE. ONLY WORKS IN ADVANCED MODE=Format de la data inserida. Només funciona en mode avançat.
+FORMAT OF INSERTED TIME. ONLY WORKS IN ADVANCED MODE=Format de l'hora inserida. Només funciona en mode avançat
+FRONT ONLY=Només davant.
+FULLSCREEN=Pantalla completa
+FUNCTIONALITY=Funcionalitat
+HORIZONTAL RULE=Regle horitzontal
+HTML HEIGHT=Alçada HTML
+HTML WIDTH=Amplada HTML
+INSERT DATE=Insereix la data
+INSERT TIME=Insereix l'hora
+LANGUAGE CODE=Codi d'idioma
+LAYER=Capa
+LEFT TO RIGHT=D'esquerra a dreta
+LOAD CSS CLASSES FROM TEMPLATE_CSS.CSS=Carrega les classes CSS des de template_css.css
+NEVER=Mai
+NEWLINES=Noves línies
+NEWLINES WILL BE MADE INTO THE SELECTED OPTION=Les noves línies es crearan utilitzant l'opció seleccionada.
+P ELEMENTS=Elements P
+PARAMCODECLEANUP=Per defecte el TinyMCE netejarà el vostre codi de certs elements HTML com etiquetes center i script i farà comprovacions de seguretat i de compliment XHTML. Recomanem que no ho desactiveu
+PARAMCOMPRESSEDVERSION=El Tiny es pot executar en mode comprimit donant uns temps de càrrega més ràpids. Tot i així, aquest mode no sempre funciona (especialment a l'Internet Explorer) així que per defecte està desactivat. Aneu amb compte en activar-ho per a assegurar que funciona al vostre sistema.
+PARAMCUSTOMCSS=Podeu indicar la càrrega d'un fitxer CSS personalitzat. Només cal que introduïu l'URL complet al fitxer CSS que voleu carregar. Si introduïu un valor en aquest camp, tindrà preferència sobre el paràmetre de classes CSS de la plantilla.
+PARAMDIRECTIONALITY=Tria si es mostra el botó RTL. Només funciona en mode avançat
+PARAMELEMENTPATH=Si trieu 'Activa', mostra el conjunt de classes per al text marcat.
+PARAMENTITIECLEANUP=Si trieu 'No', les entitats s'eliminen del codi.
+PARAMEXTVALIDELEMENTS=Permet l'addició d'elements vàlids específics al conjunt existent de normes.
+PARAMFLASH=Mostra/Amaga el botó de Flash. Només funciona en mode avançat.
+PARAMFULLSCREEN=Mostra/Amaga el botó de pantalla completa. Només funciona en mode avançat.
+PARAMINSERTDATE=Mostra/Amaga el botó d'inserir data. Només funciona en mode avançat.
+PARAMINSERTTIME=Mostra/Amaga el botó d'inserir l'hora. Només funciona en mode avançat.
+PARAMHTMLHEIGHT=Alçada de la finestra emergent de mode HTML. Només funciona en mode avançat.
+PARAMHTMLWIDTH=Amplada de la finestra emergent de mode HTML. Només funciona en mode avançat.
+PARAMLAYER=Mostra/Amaga el botó de control de capes. Només funciona en mode avançat.
+PARAMPREVIEW=Mostra/Amaga els botons de previsualització. Només funciona en mode avançat.
+PARAMPREVIEWHEIGHT=Alçada de la finestra emergent de mode de previsualització. Només funciona en mode avançat.
+PARAMPREVIEWWIDTH=Amplada de la finestra emergent de mode de previsualització. Només funciona en mode avançat.
+PARAMSEARCHREPLACE=Mostra/Amaga el botó Cerca &amp; Reemplaça. Només funciona en mode avançat.
+PARAMSMILIES=Mostra/Amaga els botons d'emoticones. Només funciona en mode avançat.
+PARAMSTYLE=Mostra/Amaga el botó de control d'estils CSS. Només funciona en mode avançat.
+PARAMTABLE=Mostra/Amaga el botó de control de taules. Només funciona en mode avançat.
+PARAMTEMPLATE=Mostra/Amaga el botó de nova capa. Només funciona en mode avançat.
+PARAMTEMPLATECSS=Per defecte el connector cerca un fitxer editor.css. Si no en pot trobar cap a la plantilla per defecte carrega el fitxer editor.css de la plantilla del sistema.
+PARAMXHTMLXTRAS=Mostra/Amaga les funcions XHTML addicionals. Només funciona en mode avançat.
+POSITION OF THE TOOLBAR=Posició de la barra d'eines
+PREVIEW=Previsualització
+PREVIEW HEIGHT=Alçada de la previsualització
+PREVIEW WIDTH=Amplada de la previsualització
+PROHIBITED ELEMENTS=Elements prohibits
+RELATIVE=Relatiu
+RIGHT TO LEFT=De dreta a esquerra
+SAVE WARNING=Avís de desat
+SAVE WARNING - GIVES WARNING IF YOU CANCEL WITHOUT SAVING CHANGES=Avís de desat: dóna un avís si cancel·leu sense desar els canvis.
+SEARCH AND REPLACE=Cerca &amp; Reemplaça
+SELECT FUNCTIONALITY=Funcionalitat de selecció
+SHOW/HIDE THE HORIZONTAL RULE BUTTON=Mostra/Amaga el botó de regle horitzontal
+SIMPLE=Simple
+SMILIES=Emoticones
+STYLE=Estil
+TABLE=Taula
+TEMPLATE CSS CLASSES=Classes CSS de plantilla
+TEXT DIRECTION=Direcció del text
+TIME FORMAT=Format de l'hora
+TOOLBAR=Barra d'eines
+URL BEHAVIOUR=Comportament URL
+URLS=URL
+XHTMLXTRAS=XHTMLxtras
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_editors_xstandard.ini 12/administrator/language/ca-ES/ca-ES.plg_editors_xstandard.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_editors_xstandard.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_editors_xstandard.ini	2008-12-31 19:52:50.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_editors_xstandard.ini 10496 2008-07-30 00:51:45Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCXSTANDARD=XStandard és l'editor WYSIWYG més avançat en compatibilitat amb els estàndards per a aplicacions d'escriptori i sistemes de gestió de continguts basats en navegadors (IE/Mozilla/Firefox/Netscape).
+PARAMEDITORMODE=Aquest paràmetre es pot utilitzar per a establir la visualització per defecte de l'editor.
+EDITOR MODE=Mode de l'editor
+SCREEN-READER=Lector de pantalla
+WYSIWYG=WYSIWYG
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_editors-xtd_image.ini 12/administrator/language/ca-ES/ca-ES.plg_editors-xtd_image.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_editors-xtd_image.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_editors-xtd_image.ini	2008-12-31 19:53:16.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_editors-xtd_image.ini 10496 2008-07-30 00:14:52Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCIMAGE=Mostra un botó que possibilita inserir imatges dins un article. Mostra una finestra emergent que us permet configurar les propietats de la imatge i penjar nous fitxers d'imatge.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_editors-xtd_pagebreak.ini 12/administrator/language/ca-ES/ca-ES.plg_editors-xtd_pagebreak.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_editors-xtd_pagebreak.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_editors-xtd_pagebreak.ini	2008-12-31 19:53:38.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_editors-xtd_pagebreak.ini 10388 2008-07-30 00:15:35Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCPAGEBREAK=Proporciona un botó per a habilitar la inserció d'un <em>salt de pàgina</em> en un article. Una finestra emergent us permet configurar els paràmetres a utilitzar.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_editors-xtd_readmore.ini 12/administrator/language/ca-ES/ca-ES.plg_editors-xtd_readmore.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_editors-xtd_readmore.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_editors-xtd_readmore.ini	2008-12-31 19:54:04.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_editors-xtd_readmore.ini 10496 2008-07-30 00:18:18Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCREADMORE=Habilita un botó que us permet inserir fàcilment l'enllaç <em>Llegiu-ne més...</em> a un article.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_search_categories.ini 12/administrator/language/ca-ES/ca-ES.plg_search_categories.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_search_categories.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_search_categories.ini	2008-12-31 19:54:32.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_search_categories.ini 10388 2008-07-30 00:52:23Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALLOWS SEARCHING OF CATEGORIES INFORMATION=Habilita la cerca d'informació de categories
+CATEGORY BLOG=Bloc de la categoria
+CATEGORY LIST=Llista de la categoria
+NUMBER OF SEARCH ITEMS TO RETURN=Nombre d'ítems de cerca per tornar
+SEARCH LIMIT=Límit de la cerca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_search_contacts.ini 12/administrator/language/ca-ES/ca-ES.plg_search_contacts.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_search_contacts.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_search_contacts.ini	2008-12-31 19:55:20.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.plg_search_contacts.ini 10496 2008-07-30 00:54:15Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALLOWS SEARCHING OF CONTACTS COMPONENT=Habilita la cerca al component de contactes
+NUMBER OF SEARCH ITEMS TO RETURN=Nombre d'ítems de cerca per tornar
+SEARCH LIMIT=Límit de la cerca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_search_content.ini 12/administrator/language/ca-ES/ca-ES.plg_search_content.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_search_content.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_search_content.ini	2008-12-31 19:55:44.000000000 +0100
@@ -0,0 +1,19 @@
+# $Id: ca-ES.plg_search_content.ini 10388 2008-07-30 00:55:21Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALLOWS SEARCHING OF ALL ARTICLES=Habilita estendre la cerca a tots els articles
+ARCHIVED CONTENT=Articles arxivats
+CONTENT ITEMS=Articles
+NO=No
+NUMBER OF SEARCH ITEMS TO RETURN=Nombre d'ítems de cerca per tornar
+SEARCH ARCHIVED CONTENT?=Cerca als articles arxivats?
+SEARCH CONTENT ITEMS?=Cerca als articles?
+SEARCH LIMIT=Límit de la cerca
+SEARCH UNCATEGORISED CONTENT?=Cerca als articles no categoritzats?
+UNCATEGORISED CONTENT=Articles no categoritzats
+YES=Sí
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_search_newsfeeds.ini 12/administrator/language/ca-ES/ca-ES.plg_search_newsfeeds.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_search_newsfeeds.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_search_newsfeeds.ini	2008-12-31 19:56:20.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.plg_search_newsfeeds.ini 10388 2008-07-30 00:56:02Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALLOWS SEARCHING OF NEWSFEEDS=Habilita la cerca als canals d'informació
+NEWSFEEDS=Canals d'informació
+NUMBER OF SEARCH ITEMS TO RETURN=Nombre d'ítems de cerca per tornar
+SEARCH LIMIT=Límit de la cerca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_search_sections.ini 12/administrator/language/ca-ES/ca-ES.plg_search_sections.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_search_sections.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_search_sections.ini	2008-12-31 19:56:48.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_search_sections.ini 10388 2008-07-30 00:56:44Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALLOWS SEARCHING OF CONTENT SECTION INFORMATION=Habilita la cerca d'informació de seccions d'article
+NUMBER OF SEARCH ITEMS TO RETURN=Nombre d'ítems de cerca per tornar
+SECTION BLOG=Bloc de la secció
+SECTION LIST=Llista de seccions
+SEARCH LIMIT=Límit de la cerca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_search_weblinks.ini 12/administrator/language/ca-ES/ca-ES.plg_search_weblinks.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_search_weblinks.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_search_weblinks.ini	2008-12-31 19:57:16.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.plg_search_weblinks.ini 10388 2008-07-30 00:57:21Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALLOWS SEARCHING OF WEBLINKS COMPONENT=Habilita la cerca al component d'enllaços web
+NUMBER OF SEARCH ITEMS TO RETURN=Nombre d'ítems de cerca per tornar
+SEARCH LIMIT=Límit de la cerca
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_system_backlink.ini 12/administrator/language/ca-ES/ca-ES.plg_system_backlink.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_system_backlink.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_system_backlink.ini	2008-12-31 19:57:42.000000000 +0100
@@ -0,0 +1,16 @@
+# $Id: ca-ES.plg_system_backlink.ini 10496 2008-07-30 01:00:42Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ATTEMPT LEGACY SEF=Intenta el SEF llegat
+IF YES, IT SEARCHES FOR OLD QUERY STRINGS THAT MIGHT MATCH AND REDIRECTS=Si se selecciona <strong>Sí</strong>, el sistema cercarà cadenes de consulta antigues que puguin coincidir i llavors hi redirigirà.
+IF YES, IT USES OLD STYLE SEF AND ATTEMPTS TO GENERATE A VALID LINK=Si se selecciona <strong>Sí</strong>, el sistema utilitzarà el format SEF estil antic i intentarà generar un enllaç vàlid.
+IF YES, IT USES OLD STYLE SEF AND DIRECTS IT TO THE NEW LINK=Si se selecciona <strong>Sí</strong>, el sistema utilitzarà el format SEF estil antic i redirigirà al nou enllaç.
+PROVIDES BACKLINK SUPPORT=El connector d'enllaç antic proporciona suport per a enllaços del Joomla 1.0.x llegats. Redirigeix els enllaços de documents i els URL d'estil antic cap als objectius del Joomla! 1.5 correctes.
+SEARCH QUERY STRINGS=Cerca cadenes de consulta
+SEARCH SEF=Cerca SEF
+"%S" HAS MOVED TO <A HREF="%s">%s</a>. CLICK THE LINK IF YOUR BROWSER DOES NOT REDIRECT YOU AUTOMATICALLY.="%s" s'ha mogut a <a href="%s">%s</a>. Feu clic a l'enllaç si el navegador no us redirigeix automàticament.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_system_cache.ini 12/administrator/language/ca-ES/ca-ES.plg_system_cache.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_system_cache.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_system_cache.ini	2008-12-31 19:58:12.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_system_cache.ini 10388 2008-07-30 01:01:16Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+PAGE CACHE LIFETIME IN MINUTES=Temps de vida de la memòria cau de pàgina en minuts
+CACHE LIFETIME=Temps de vida de la memòria cau
+IF YES, USE MECHANISM FOR STORING PAGE CACHE IN THE BROWSER=Si trieu 'Sí', utilitza un mecanisme per a emmagatzemar la memòria cau de pàgina al navegador
+PROVIDES PAGE CACHING=Proporciona memòria cau de pàgina
+USE BROWSER CACHING=Utilitza la memòria cau del navegador
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_system_debug.ini 12/administrator/language/ca-ES/ca-ES.plg_system_debug.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_system_debug.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_system_debug.ini	2008-12-31 19:58:46.000000000 +0100
@@ -0,0 +1,35 @@
+# $Id: ca-ES.plg_system_debug.ini 10496 2008-07-30 01:11:22Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALL MODES=Tots els modes
+DESIGNER MODE=Mode dissenyador
+DIAGNOSTIC MODE=Mode diagnòstic
+DISPLAY LOADED LANGUAGE FILES=Mostra els fitxers d'idioma carregats
+DISPLAYS ORPHANED STRINGS IN DIFFERENT WAYS=Mostra les cadenes òrfenes de diferents maneres
+IF YES, DISPLAY A LIST OF THE LANGUAGE FILES LOADED=Si trieu 'Sí', mostra una llista dels fitxers d'idioma carregats.
+STRING FORMAT=Format de cadena
+STRIP STRING PREFIX=Prefix clau a treure
+STRIP STRING PREFIX DESC=Treu aquest prefix de la cadena actual abans de mostrar els resultats de dissenyador
+DISPLAY PROFILING INFORMATION=Mostra la informació del perfil
+IF YES, DISPLAY PROFILING INFORMATION=Si trieu 'Sí', mostra la informació del perfil
+
+DISPLAY SQL QUERY LOG=Mostra el registre de consultes SQL
+DISPLAY MEMORY USAGE=Mostra l'ús de memòria
+DISPLAY UNDEFINED LANGUAGE STRINGS=Mostra les cadenes de text d'idioma no definides.
+IF YES, DISPLAY SQL QUERY LOG=Si trieu 'Sí', mostra el registre de consultes SQL.
+IF YES, DISPLAY MEMORY USAGE=Si trieu 'Sí', mostra l'ús de memòria.
+IF YES, DISPLAY UNDEFINED LANGUAGE STRINGS=Si trieu 'Sí', mostra les cadenes de text d'idioma no definides.
+LANGUAGE FILES LOADED=S'han carregat els fitxers d'idioma
+MEMORY USAGE=Ús de memòria
+PROFILE INFORMATION=Informació del perfil
+PROVIDES DEBUG INFORMATION=Proporciona informació de depuració
+QUERIES LOGGED=%s consultes registrades.
+LEGACY QUERIES LOGGED=%s consultes de llegat registrades.
+UNTRANSLATED STRINGS=Cadenes no traduïdes
+UNTRANSLATED STRINGS DESIGNER=Cadenes no traduïdes mode dissenyador
+UNTRANSLATED STRINGS DIAGNOSTIC=Cadenes no traduïdes mode diagnòstic
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_system_legacy.ini 12/administrator/language/ca-ES/ca-ES.plg_system_legacy.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_system_legacy.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_system_legacy.ini	2008-12-31 19:59:08.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.plg_system_legacy.ini 10388 2008-07-30 01:11:59Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+USE LEGACY URL ROUTING=Utilitza l'encaminament URL llegat
+IF YES, USE LEGACY URL ROUTING MECHANISM=Si trieu 'Sí', utilitza el mecanisme d'encaminament URL llegat
+PROVIDES LEGACY SUPPORT FOR OLDER VERSION OF JOOMLA!=Proporciona suport llegat per a versions més antigues del Joomla!
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_system_sef.ini 12/administrator/language/ca-ES/ca-ES.plg_system_sef.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_system_sef.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_system_sef.ini	2008-12-31 19:59:44.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_system_sef.ini 10388 2008-07-30 01:12:47Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCPLGSYSTEMSEF=Afegeix suport SEF per als enllaços del document. Opera directament sobre l'HTML i no necessita una etiqueta especial.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_user_joomla.ini 12/administrator/language/ca-ES/ca-ES.plg_user_joomla.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_user_joomla.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_user_joomla.ini	2008-12-31 20:00:22.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.plg_user_joomla.ini 10388 2008-07-30 01:13:33Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AUTO CREATE USERS=Crea usuaris automàticament
+PARAMAUTOCREATEUSERS=Crea automàticament usuaris registrats quan sigui possible
+PLG_USER_JOOMLA=Gestiona la sincronització d'usuaris per defecte del Joomla!
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_xmlrpc_blogger.ini 12/administrator/language/ca-ES/ca-ES.plg_xmlrpc_blogger.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_xmlrpc_blogger.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_xmlrpc_blogger.ini	2008-12-31 20:00:44.000000000 +0100
@@ -0,0 +1,28 @@
+# $Id: ca-ES.plg_xmlrpc_blogger.ini 10496 2008-07-30 01:16:41Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BLOGGER XML-RPC API=API del blocaire XML-RPC
+EDIT POSTS=Edita els missatges
+NEW POSTS=Nous missatges
+PARAMCATEGORY=Estableix la categoria on posar els nous missatges
+PARAMSECTION=Estableix la secció d'on rebre els missatges
+LOGIN FAILED=La connexió ha fallat
+POST CHECK FAILED=La comprovació de missatge ha fallat
+POST STORE FAILED=L'emmagatzemament de missatge ha fallat
+POST DELETE FAILED=L'eliminació de missatge ha fallat
+SORRY, NO SUCH POST=No existeix aquest missatge.
+SORRY, POST IS ALREADY BEING EDITED=El missatge ja està editant-se.
+NO POSTS AVAILABLE, OR AN ERROR HAS OCCURRED=No hi ha missatges disponibles, o s'ha produït un error.
+METHOD NOT IMPLEMENTED=Mètode no implementat
+RETURNS A LIST OF WEBLOGS TO WHICH AN AUTHOR HAS POSTING PRIVILEGES.=Torna una llista de blocs en els quals un autor hi té privilegis de publicació.
+RETURNS INFORMATION ABOUT AN AUTHOR IN THE SYSTEM.=Torna informació sobre un autor del sistema.
+RETURNS INFORMATION ABOUT A SPECIFIC POST.=Torna informació sobre un missatge determinat.
+RETURNS A LIST OF THE MOST RECENT POSTS IN THE SYSTEM.=Torna una llista dels missatges més recents del sistema.
+CREATES A NEW POST, AND OPTIONALLY PUBLISHES IT.=Crea un nou missatge i opcionalment el publica.
+DELETES A POST.=Elimina un misatge.
+UPDATES THE INFORMATION ABOUT AN EXISTING POST.=Actualitza la informació sobre un missatge existent.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.plg_xmlrpc_joomla.ini 12/administrator/language/ca-ES/ca-ES.plg_xmlrpc_joomla.ini
--- 11/administrator/language/ca-ES/ca-ES.plg_xmlrpc_joomla.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.plg_xmlrpc_joomla.ini	2008-12-31 20:01:20.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_xmlrpc_joomla.ini 10388 2008-07-30 01:17:23Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+JOOMLA! XML-RPC API=API de l'XML-RPC del Joomla!
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.tpl_beez.ini 12/administrator/language/ca-ES/ca-ES.tpl_beez.ini
--- 11/administrator/language/ca-ES/ca-ES.tpl_beez.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.tpl_beez.ini	2008-12-31 20:01:46.000000000 +0100
@@ -0,0 +1,17 @@
+# $Id: ca-ES.tpl_beez.ini 10388 2008-07-30 01:18:26Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+HEADER LEVEL COMPONENT=Nivell de capçalera per als components
+HEADER LEVEL PAGE TITLE=Nivell de capçalera per als títols de pàgina
+H1=H1
+H2=H2
+H3=H3
+H4=H4
+H5=H5
+BEEZ=Beez
+ACCESSIBLE TEMPLATE FOR JOOMLA 1.5=Plantilla accessible per al Joomla! 1.5
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.tpl_ja_purity.ini 12/administrator/language/ca-ES/ca-ES.tpl_ja_purity.ini
--- 11/administrator/language/ca-ES/ca-ES.tpl_ja_purity.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.tpl_ja_purity.ini	2009-06-26 08:50:06.000000000 +0200
@@ -0,0 +1,60 @@
+# $Id: ca-ES.tpl_ja_purity.ini 11403 2009-06-26 08:50:06 dverger ~0 $
+# author Joomla! Catalan Translation
+# copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# license Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+
+# Note : All ini files need to be saved as UTF-8
+
+JA_PURITY=JA Purity
+JA PURITY DESCRIPTION=JA Purity ha estat dissenyada per JoomlArt.com: una plantilla amb elevat nivell d'accessibilitat, elegant i fàcil de personalitzar.
+LOGO TYPE=Tipus de logo
+LOGO TYPE DESCRIPTION=Si no voleu utilitzar una imatge com a logo, situada a &lt;b&gt;templates/aquest template/images/logo.gif&lt;/b&gt;, empreu el logo textual.
+IMAGE=Imatge
+TEXT=Text
+LOGO TEXT=Logo textual
+LOGO TEXT DESCRIPTION=Si Tipus de logo és definit com &quot;logo textual&quot;, escriviu el text del logo aquí. Deixeu-ho en blanc per tal que surti el nom del lloc
+SLOGAN=Eslògan
+SLOGAN DESCRIPTION=Si Tipus de logo és definit com &quot;logo textual&quot;, es mostrarà l'eslògan a sota del logo textual
+FONT SIZE=Mida de la font
+FONT SIZE DESCRIPTION=Mida de la font per defecte del lloc web
+TEMPLATE WIDTH=Amplada de la plantilla
+TEMPLATE WIDTH DESCRIPTION=Amplada de la plantilla. Automàtica per a una plantilla extensible.
+AUTO=Automàtica (extensible)
+NARROW SCREEN=Pantalla estreta
+WIDE SCREEN=Pantalla ampla
+SPECIFIED PERCENTAGE=Indicat en percentatge (extensible)
+SPECIFIED PIXEL=Indicat en píxels
+SPECIFIED WIDTH=Amplada indicada
+SPECIFIED WIDTH DESCRIPTION=Si indiqueu una amplada de plantilla (en percentatge o bé en píxels), indiqueu aquí el valor
+HEADER THEMES=Temes d'encapçalament
+HEADER THEMES DESCRIPTION=Admet 3 temes
+BACKGROUND THEMES=Fons del tema
+BACKGROUND THEMES DESCRIPTION=Tipus de fons per al tema seleccionat
+PRIMARY ELEMENTS=Elements principals
+PRIMARY ELEMENTS DESCRIPTION=Color dels elements principals
+HORIZONTAL NAVIGATION TYPE=Tipus de menú horitzontal
+SUCKERFISH MENU OR JAMOO MENU=Menú Suckerfish o menú JAMoo. Llegiu les instruccions a la descripció de la plantilla per a activar el menú horitzontal.
+JAMOO MENU=Menú JAMoo
+SUCKERFISH MENU=Menú Suckerfish
+RIGHT MODULES COLLAPSIBLE FUNCTION=Funció d'ocultació dels mòduls de la dreta
+RIGHT MODULES COLLAPSIBLE FUNCTION DESCRIPTION=Activa/desactiva l'ocultació de la columna de la dreta
+ENABLE=Habilita
+DEFAULT STATUS=Estat per defecte
+DEFAULT STATUS DESCRIPTION=Per defecte, oculta tot o mostra tot
+EXPAND ALL=Mostra tot
+COLLAPSE ALL=Oculta tot
+EXCLUDE MODULES=Mòduls exclosos
+EXCLUDE MODULES DESCRIPTION=ID dels mòduls per als quals la funció d'ocultació no s'aplicarà (separats per comes)
+1=1
+2=2
+3=3
+4=4
+5=5
+6=6
+7=7
+TEMPLATE LOGO=<b>Logo de la plantilla</b>
+HORIZONTAL NAVIGATION=<hr /><b>Navegació horitzontal</b>
+TEMPLATE FONT SIZE=<hr /><b>Mida de font de la plantilla</b>
+TEMPLATE_WIDTH=<hr /><b>Amplada de la plantilla</b>
+TEMPLATE STYLES=<hr /><b>Estils de la plantilla</b>
+RIGHT MODULES=<hr /><b>Funció d'ocultació dels mòduls de la dreta</b>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.tpl_khepri.ini 12/administrator/language/ca-ES/ca-ES.tpl_khepri.ini
--- 11/administrator/language/ca-ES/ca-ES.tpl_khepri.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.tpl_khepri.ini	2008-12-31 20:02:42.000000000 +0100
@@ -0,0 +1,16 @@
+# $Id: ca-ES.tpl_khepri.ini 10388 2008-07-30 01:23:40Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADMINISTRATION TEMPLATE FOR JOOMLA! 1.5=Khepri és una nova plantilla per al backend administratiu del Joomla! El disseny net d'aquesta plantilla la fa molt lleugera i ràpida. <br /><br />Icones NuoveXT: Copyright Alexandre Moore (Saki), Llicència Pública General (GPL) del GNU
+ENABLE/DISABLE ROUNDED CORNER EFFECT=Habilita o inhabilita l'efecte de cantonada arrodonida per a la plantilla.
+HEADER COLOR=Color de la capçalera
+KHEPRI=Khepri
+SHOW SITE NAME=Mostra el nom del lloc
+SHOW THE SITE NAME IN THE TEMPLATE HEADER=Mostra el nom del lloc a la capçalera de la plantilla
+THE COLOR OF THE BAR UNDER THE HEADER=El color de la barra sota la capçalera
+USE ROUNDED CORNERS=Utilitza cantonades arrodonides
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini 12/administrator/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini
--- 11/administrator/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini	2009-01-10 19:36:48.000000000 +0100
@@ -0,0 +1,26 @@
+# $Id: ca-ES.tpl_rhuk_milkyway.ini 11394 2009-01-10 19:36:17Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COLOR VARIATION=Variació de color
+COLOR VARIATION TO USE=Variació de color a utilitzar
+BACKGROUND VARIATION=Variació del fons
+BACKGROUND COLOR VARIATION TO USE=Variació del color de fons a utilitzar.
+TEMPLATE WIDTH=Amplada de la plantilla
+WIDTH STYLE OF THE TEMPLATE=Seleccioneu del desplegable el mètode per a l'estil d'amplada de la plantilla.
+FLUID=Fluid
+FLUID WITH MAXIMUM=Fluid amb màxim
+MEDIUM=Mitjà
+SMALL=Petit
+BLUE=Blau
+RED=Vermell
+GREEN=Verd
+WHITE=Blanc
+BLACK=Negre
+ORANGE=Taronja
+RHUK_MILKYWAY=Plantilla RHUK Milkyway
+TPL_RHUK_MILKYWAY=MilkyWay és una nova plantilla per al Joomla! El disseny net la fa molt lleugera i ràpida.
diff -aruN --binary 11/administrator/language/ca-ES/ca-ES.xml 12/administrator/language/ca-ES/ca-ES.xml
--- 11/administrator/language/ca-ES/ca-ES.xml	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/ca-ES.xml	2009-05-16 03:29:10.000000000 +0200
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<metafile version="1.5" client="administrator">
+	<tag>ca-ES</tag>
+	<name>Catalan</name>
+	<description>Catalan language administrator pack for Joomla</description>
+	<version>1.5.11</version>
+	<creationDate>2009-05-16</creationDate>
+	<author>Catalan Joomla Translation Team</author>
+	<authorUrl>www.joomla.cat</authorUrl>
+	<authorEmail>dverger@joomla.cat</authorEmail>
+	<copyright>Copyright (C) 2005 - 2009 Open Source Matters.  All rights reserved.</copyright>
+	<copyright>Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat</copyright>
+	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
+	<metadata>
+		<name>Catalan</name>
+		<tag>ca-ES</tag>
+		<rtl>0</rtl>
+		<locale>ca_ES.utf8, ca_ES.UTF-8, ca-ES, ca_ES, ca_ES.UTF-8@euro, ca_AD.utf8, ca_AD.UTF-8, ca_AD, ca_FR.utf8, ca_FR.UTF-8, ca_FR, ca_IT.utf8, ca_IT.UTF-8, ca_IT, Catalan_Standard, catalan, ca</locale>
+		<winCodePage>iso-8859-1</winCodePage>
+		<backwardLang>catalan</backwardLang>
+	</metadata>
+	<params />
+</metafile>
diff -aruN --binary 11/administrator/language/ca-ES/index.html 12/administrator/language/ca-ES/index.html
--- 11/administrator/language/ca-ES/index.html	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/language/ca-ES/index.html	2008-07-30 01:45:54.000000000 +0200
@@ -0,0 +1 @@
+<html><body bgcolor="#FFFFFF"></body></html>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/en-GB/en-GB.com_config.ini 12/administrator/language/en-GB/en-GB.com_config.ini
--- 11/administrator/language/en-GB/en-GB.com_config.ini	2009-06-02 23:51:34.000000000 +0200
+++ 12/administrator/language/en-GB/en-GB.com_config.ini	2009-06-30 22:01:32.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: en-GB.com_config.ini 11784 2009-04-24 17:34:11Z kdevine $
+# $Id: en-GB.com_config.ini 12308 2009-06-23 04:05:28Z ian $
 # Joomla! Project
 # Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 # License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
@@ -139,7 +139,9 @@
 SMTP AUTH=SMTP Authentication
 SMTP HOST=SMTP Host
 SMTP PASS=SMTP Password
+SMTP PORT=SMTP Port
 SMTP SERVER=SMTP Server
+SMTP SECURITY=SMTP Security
 SMTP USER=SMTP Username
 STATISTICS=Statistics
 SYSTEM=System
@@ -202,6 +204,8 @@
 TIPSHOWTITLEMETATAGITEMS=Show the Title Meta Tag when viewing Articles
 TIPSITENAME=Enter the name of your Web site. This will be used in various locations (e.g. the back-end browser title bar and <em>Site Offline</em> pages).
 TIPSMTPAUTH=Select Yes if your SMTP Host requires SMTP Authentication.
+TIPSMTPPORT=Enter the port number of your SMTP server.  Use 25 for most unsecure servers, and 465 or 587 for most secure servers.
+TIPSMTPSECURITY=Select the security model that your SMTP server uses.
 TIPSMTPHOST=Enter the name of the SMTP host.
 TIPSMTPUSER=Enter the username for access to the SMTP host
 TIPSMTPPASS=Enter the password for access to the SMTP host
diff -aruN --binary 11/administrator/language/en-GB/en-GB.com_content.ini 12/administrator/language/en-GB/en-GB.com_content.ini
--- 11/administrator/language/en-GB/en-GB.com_content.ini	2009-05-21 05:37:52.000000000 +0200
+++ 12/administrator/language/en-GB/en-GB.com_content.ini	2009-06-30 22:01:32.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: en-GB.com_content.ini 11625 2009-02-15 15:32:42Z kdevine $
+# $Id: en-GB.com_content.ini 12386 2009-06-30 01:15:31Z ian $
 # Joomla! Project
 # Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 # License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
@@ -186,3 +186,4 @@
 YOU CANNOT EDIT AN ARCHIVED ITEM=You cannot edit an Archived Article.
 YOU MUST SELECT A CATEGORY=You must select a Category.
 YOU MUST SELECT A SECTION=You must select a Section.
+TOGGLE EDITOR=Toggle editor
diff -aruN --binary 11/administrator/language/en-GB/en-GB.ini 12/administrator/language/en-GB/en-GB.ini
--- 11/administrator/language/en-GB/en-GB.ini	2009-06-02 23:51:34.000000000 +0200
+++ 12/administrator/language/en-GB/en-GB.ini	2009-06-30 22:01:32.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: en-GB.ini 11799 2009-05-06 02:15:50Z ian $
+# $Id: en-GB.ini 12308 2009-06-23 04:05:28Z ian $
 # Joomla! Project
 # Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 # License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
@@ -12,7 +12,7 @@
 DATE_FORMAT_LC3=%d %B %Y
 DATE_FORMAT_LC4=%d.%m.%y
 DATE_FORMAT_JS1=y-m-d
-%Y-%M-%D=%Y-%M-%D
+%Y-%M-%D=%Y-%m-%d
 %A, %B %E=%A, %B %e
 
 # Months
@@ -134,6 +134,7 @@
 PHPMAILER_FILE_ACCESS=Could not access file:
 PHPMAILER_FILE_OPEN=File Error. Could not open file:
 PHPMAILER_ENCODING=Unknown encoding:
+PHPMAILER_SIGNING=Signing Error:
 
 A SHORT ALT ATTRIBUTE FOR IMAGE=A short Alt (alternative) attribute for an image
 ACCESS=Access Level
diff -aruN --binary 11/administrator/language/en-GB/en-GB.mod_quickicon.ini 12/administrator/language/en-GB/en-GB.mod_quickicon.ini
--- 11/administrator/language/en-GB/en-GB.mod_quickicon.ini	2008-07-11 05:35:32.000000000 +0200
+++ 12/administrator/language/en-GB/en-GB.mod_quickicon.ini	2009-06-25 14:03:52.000000000 +0200
@@ -19,3 +19,4 @@
 TRASH MANAGER=Trash Manager
 USER MANAGER=User Manager
 
+TRANSLATION MANAGER=Translation Manager
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/en-GB/en-GB.plg_editors_tinymce.ini 12/administrator/language/en-GB/en-GB.plg_editors_tinymce.ini
--- 11/administrator/language/en-GB/en-GB.plg_editors_tinymce.ini	2008-07-11 05:35:30.000000000 +0200
+++ 12/administrator/language/en-GB/en-GB.plg_editors_tinymce.ini	2009-06-30 22:01:32.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: en-GB.plg_editors_tinymce.ini 10496 2008-07-03 07:08:39Z ircmaxell $
+# $Id: en-GB.plg_editors_tinymce.ini 12386 2009-06-30 01:15:31Z ian $
 # Joomla! Project
 # Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 # License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
@@ -27,8 +27,8 @@
 ELEMENTS THAT WILL BE CLEANED FROM THE TEXT=Elements that will be cleaned from the text
 EXTENDED VALID ELEMENTS=Extended Valid Elements
 FLASH=Flash
-FORMAT OF INSERTED DATE. ONLY WORKS IN ADVANCED MODE=Format of inserted date. Only works in Advanced mode.
-FORMAT OF INSERTED TIME. ONLY WORKS IN ADVANCED MODE=Format of inserted time. Only works in Advanced mode
+FORMAT OF INSERTED DATE. ONLY WORKS IN ADVANCED MODE=Format of inserted date. Only applies in Extended mode.
+FORMAT OF INSERTED TIME. ONLY WORKS IN ADVANCED MODE=Format of inserted time. Only applies in Extended mode.
 FRONT ONLY=Front Only.
 FULLSCREEN=Fullscreen
 FUNCTIONALITY=Functionality
@@ -52,23 +52,23 @@
 PARAMELEMENTPATH=If set to ON, it shows the set classes for the marked text.
 PARAMENTITIECLEANUP=If set to No, entities are stripped from the code.
 PARAMEXTVALIDELEMENTS=Allows the addition of specific valid_elements to the existing rule set.
-PARAMFLASH=Show/Hide the Flash button. Only works in advanced mode.
-PARAMFULLSCREEN=Show/Hide the Fullscreen button. Only works in advanced mode.
-PARAMINSERTDATE=Show/Hide the Insert Date button. Only works in advanced mode.
-PARAMINSERTTIME=Show/Hide the Insert Time button. Only works in advanced mode.
-PARAMHTMLHEIGHT=Height of HTML mode pop-up window. Only works in advanced mode.
-PARAMHTMLWIDTH=Width of HTML mode pop-up window. Only works in advanced mode.
-PARAMLAYER=Show/Hide the Layer control button. Only works in advanced mode.
-PARAMPREVIEW=Show/Hide the Preview buttons. Only works in advanced mode.
-PARAMPREVIEWHEIGHT=Height of Preview mode pop-up window. Only works in advanced mode.
-PARAMPREVIEWWIDTH=Width of Preview mode pop-up window. Only works in advanced mode.
-PARAMSEARCHREPLACE=Show/Hide the Search &amp; Replace button. Only works in advanced mode.
-PARAMSMILIES=Show/Hide the smilies buttons. Only works in advanced mode.
-PARAMSTYLE=Show/Hide the CSS Style control button. Only works in advanced mode.
-PARAMTABLE=Show/Hide the table control buttons. Only works in advanced mode.
-PARAMTEMPLATE=Show/Hide the Add new Layer button. Only works in Advanced mode.
+PARAMFLASH=Show/Hide the Flash button. Only applies in Extended mode.
+PARAMFULLSCREEN=Show/Hide the Fullscreen button. Only applies in Extended mode.
+PARAMINSERTDATE=Show/Hide the Insert Date button. Only applies in Extended mode.
+PARAMINSERTTIME=Show/Hide the Insert Time button. Only applies in Extended mode.
+PARAMHTMLHEIGHT=Height of HTML mode pop-up window. Only applies in Advanced mode.
+PARAMHTMLWIDTH=Width of HTML mode pop-up window. Only applies in Advanced mode.
+PARAMLAYER=Show/Hide the Layer control button. Only applies in Extended mode.
+PARAMPREVIEW=Show/Hide the Preview buttons. Only applies in Extended mode.
+PARAMPREVIEWHEIGHT=Height of Preview mode pop-up window. Only applies in Extended mode.
+PARAMPREVIEWWIDTH=Width of Preview mode pop-up window. Only applies in Extended mode.
+PARAMSEARCHREPLACE=Show/Hide the Search &amp; Replace button. Only applies in Extended mode.
+PARAMSMILIES=Show/Hide the smilies buttons. Only applies in Extended mode.
+PARAMSTYLE=Show/Hide the CSS Style control button. Only applies in Extended mode.
+PARAMTABLE=Show/Hide the table control buttons. Only applies in Extended mode.
+PARAMTEMPLATE=Show/Hide the Insert predefined template content button. Only applies in Extended mode.
 PARAMTEMPLATECSS=By default the Plugin looks for an editor.css file. If it cannot find one in the default template, it loads the editor.css file in the system template.
-PARAMXHTMLXTRAS=Show/Hide the additional XHTML features. Only works in advanced mode.
+PARAMXHTMLXTRAS=Show/Hide the additional XHTML features. Only applies in Extended mode.
 POSITION OF THE TOOLBAR=Position of the toolbar
 PREVIEW=Preview
 PREVIEW HEIGHT=Preview Height
@@ -93,4 +93,48 @@
 URLS=URLs
 XHTMLXTRAS=XHTMLxtras
 
+# New definitions
+SKIN=Skin
+SELECT SKIN=Select skin
 
+ADD CUSTOM BUTTON(S)=Add custom button(s)
+ADD CUSTOM PLUGIN(S)=Add custom plugin(s)
+ADVANCED IMAGE=Advanced image
+ADVANCED LINK=Advanced link
+ALIGNMENT OF THE TOOLBAR=Alignment of the toolbar
+ALL DIALOGS TO OPEN AS FLOATING DIV LAYERS INSTEAD OF POPUP WINDOWS. THIS OPTION CAN BE VERY USEFUL IN ORDER TO GET AROUND POPUP BLOCKERS.=All dialogs to open as floating DIV layers instead of popup windows. This option can be very useful in order to get around popup blockers.
+COLORS=Colors
+CONTEXT MENU=Context menu
+CONTROLS HOW ENTITIES GET PROCESSED BY EDITOR=Controls how entities get processed by editor
+CUSTOM BUTTON=Custom button
+CUSTOM PLUGIN=Custom plugin
+ENTITY ENCODING=Entity Encoding
+EXTENDED=Extended
+FONTS=Fonts
+INLINE POPUPS=Inline popups
+INSERT NONBREAKING SPACE ENTITIES=Insert nonbreaking space entities
+NAMED=named
+NONBREAKING=Nonbreaking
+NUMERIC=numeric
+OFFICE2007 BLACK=Office2007 Black
+OFFICE2007 BLUE=Office2007 Blue
+OFFICE2007 SILVER=Office2007 Silver
+PARAMCOLORS=Show/Hide the Colors control buttons. Only applies in Extended mode
+PARAMS EXTENDED MODE=<strong>Extended Mode Options</strong><br />These options only apply in Extended mode.
+PARAMFONTS=Show/Hide the Fonts control selectors. Only applies in Extended mode
+PARAMMEDIA=Show/Hide the Media button. Only applies in Extended mode
+PARAMPASTE=Show/Hide the Paste buttons. Only applies in Extended mode
+PASTE=Paste
+POSSIBILITY TO SEE INVISIBLE CHARACTERS=Possibility to see invisible characters
+RAW=raw
+SAFARI COMPATIBILITY=Safari compatibility
+SEARCH-REPLACE=Search-Replace
+TEMPLATE=Template
+TINYBROWSER=Tinybrowser
+TOOLBAR ALIGN=Toolbar align
+TURN ON/OFF A MORE ADVANCED IMAGE DIALOG=Turn on/off a more advanced image dialog
+TURN ON/OFF A MORE ADVANCED LINK DIALOG=Turn on/off a more advanced link dialog
+TURN ON/OFF CONTEXT MENU=Turn on/off Context menu
+TURN ON/OFF SAFARI COMPATIBILITY PLUGIN=Turn on/off Safari compatibility plugin
+TURN ON/OFF TINYBROWSER FOR IMAGES/LINKS=Turn on/off Tinybrowser for images/links
+VISUALCHARS=Visualchars
diff -aruN --binary 11/administrator/language/es-ES/es-ES.com_checkin.ini 12/administrator/language/es-ES/es-ES.com_checkin.ini
--- 11/administrator/language/es-ES/es-ES.com_checkin.ini	2009-05-21 08:21:20.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.com_checkin.ini	2009-06-28 06:42:34.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.com_checkin.ini 1.5.0 2009-05-21 08:21:19 15:32:52 ~0 $
+# $Id: es-ES.com_checkin.ini 1.5.0 2009-06-28 06:42:35 15:32:52 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/copyleft/gpl.html GNU/GPL
diff -aruN --binary 11/administrator/language/es-ES/es-ES.com_config.ini 12/administrator/language/es-ES/es-ES.com_config.ini
--- 11/administrator/language/es-ES/es-ES.com_config.ini	2009-05-21 08:35:40.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.com_config.ini	2009-07-01 10:19:40.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.com_config.ini 1.5.0 2009-05-21 08:35:39 15:45:22 ~0 $
+# $Id: es-ES.com_config.ini 1.5.0 2009-07-01 10:19:41 15:45:22 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/copyleft/gpl.html GNU/GPL
@@ -140,7 +140,9 @@
 SMTP AUTH=Autenticacion SMTP
 SMTP HOST=Servidor SMTP
 SMTP PASS=Contraseña SMTP
+SMTP PORT=SMTP Port
 SMTP SERVER=Servidor SMTP
+SMTP SECURITY=SMTP Security
 SMTP USER=Usuario SMTP
 STATISTICS=Estadísticas
 SYSTEM=Sistema
@@ -163,7 +165,7 @@
 TIPDEFWYSIWYG=Selecciona el editor WYSIWYG por defecto para tu sitio. Lo usuarios registrados podrán cambiarlo desde sus detalles de cuenta personales, si permites esa opción.
 TIPENABLEWEBSERVICES=Habilita la capacidad de la instalación a hacer RPC(Llamadas remotas a procedimientos) usando HTTP como medio de transporte y XML como la codificación del lenguaje. Esta función es necesaria para asegurar que muchas de las extensiones de terceros funcionen. Por defecto, está habilitada.
 TIPERRORREPORTING=Selecciona el nivel apropiado de informes desde la siguiente lista seleccionable. Mira la pantalla de ayuda para detalles completos.
-TIPFEEDEMAIL=El RSS y Atom de noticias incluyen la dirección de correo electrónico del autor. Seleccione Autor Enviar un correo electrónico a cada uno de los autores del uso de correo electrónico (desde el Administrador de usuarios) en las noticias. Seleccione Sitio Enviar un correo electrónico a incluir el sitio "Correo de 'dirección de correo electrónico para cada uno de los artículos.
+TIPFEEDEMAIL=El RSS y Atom de noticias incluyen la dirección de correo electrónico del autor. Seleccione Autor Enviar un correo electrónico a cada uno de los autores del uso de correo electrónico (desde el Administrador de usuarios) en las noticias. Seleccione Sitio Enviar un correo electrónico a incluir el sitio Correo de dirección de correo electrónico para cada uno de los artículos.
 TIPFROMNAME=Por defecto, este campo se cumplimenta con el nombre del sitio, introducido durante el proceso de instalación.
 TIPFRONTENDUSERPARAMS=Si esta configurado en mostrar, los usuarios podrán seleccionar su idioma, editor y preferencias de ayuda del sitio desde sus perfiles, una vez estén logueados en el sitio.
 TIPENABLEFTP=Habilita la funcionalidad del FTP(Protocolo de trasferencia de archivos)dentro de Joomla!, para ser usado en lugar de la funcionalidad normal de subida de archivos de Joomla!
@@ -203,6 +205,8 @@
 TIPSHOWTITLEMETATAGITEMS=Muestra los metatag del título mientras se están viendo artículos
 TIPSITENAME=Introduce el nombre de tu sitio web. Ésto puede usarse en varias ubicaciones, por ejemplo, en la administración con la barra de título del navegador y en páginas <em>Sitio fuera de línea</em>.
 TIPSMTPAUTH=Selecciona sí, si tu servidor SMTP requiere de autentificación SMTP.
+TIPSMTPPORT=Introduce el número de puerto de su servidor SMTP. Utilice 25 para anular la seguridad de la mayoría de los servidores, y 465 o 587 para la mayoría de servidores seguros.
+TIPSMTPSECURITY=Seleccione el modelo de seguridad que utiliza el servidor SMTP.
 TIPSMTPHOST=Introduce el nombre del servidor SMTP.
 TIPSMTPUSER=Introduce el nombre de usuario para acceder al servidor SMTP
 TIPSMTPPASS=Introduce la contraseña  para acceder al servidor SMTP
diff -aruN --binary 11/administrator/language/es-ES/es-ES.com_content.ini 12/administrator/language/es-ES/es-ES.com_content.ini
--- 11/administrator/language/es-ES/es-ES.com_content.ini	2009-05-21 08:44:54.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.com_content.ini	2009-07-01 10:20:40.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.com_content.ini 1.5.0 2009-05-21 08:41:26 21:06:30 ~0 $
+# $Id: es-ES.com_content.ini 1.5.0 2009-07-01 10:20:41 21:06:30 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/copyleft/gpl.html GNU/GPL
@@ -186,4 +186,5 @@
 WHITE LIST=Lista blanca
 YOU CANNOT EDIT AN ARCHIVED ITEM=No puedes editar un artículo archivado.
 YOU MUST SELECT A CATEGORY=Debes seleccionar una categoría.
-YOU MUST SELECT A SECTION=Debes seleccionar una sección.
\ No hay ningún carácter de nueva línea al final del fichero
+YOU MUST SELECT A SECTION=Debes seleccionar una sección.
+TOGGLE EDITOR=Ocultar editor
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/es-ES/es-ES.com_frontpage.ini 12/administrator/language/es-ES/es-ES.com_frontpage.ini
--- 11/administrator/language/es-ES/es-ES.com_frontpage.ini	2009-05-21 08:47:50.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.com_frontpage.ini	2009-06-28 08:55:58.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.com_frontpage.ini 1.5.0 2009-05-21 08:47:49 02:30:43 ~0 $
+# $Id: es-ES.com_frontpage.ini 1.5.0 2009-06-28 08:55:58 02:30:43 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/copyleft/gpl.html GNU/GPL
@@ -6,7 +6,7 @@
 # Note : All ini files need to be saved as UTF-8
 
 AUTHOR NAMES=Nombres de autor
-ARCHIVE=Archivar
+ARCHIVE=Archivo
 CATEGORY NAME=Nombre de la categoría
 CATEGORY NAME LINKABLE=Nombre de la categoría enlazable
 CREATED DATE AND TIME=Fecha y hora de creación
@@ -16,7 +16,7 @@
 ITEM RATING=Valoración del artículo
 ITEM TITLES=Títulos de artículo
 LINKED TITLES=Títulos enlazados
-MAKE YOUR ITEM TITLES LINKABLE=Hacer tus títulos de artículo enlazables
+MAKE YOUR ITEM TITLES LINKABLE=Hacer los títulos de artículo enlazables
 MODIFIED=Modificado
 MODIFIED DATE AND TIME=Fecha y hora de modificación
 NUM INTRO=# Introducción
@@ -38,21 +38,21 @@
 PARAMPAGINATIONRESULTS=Mostrar/Ocultar información de los resultados de paginación ( Por ejemplo 1-4 de 4 )
 PARAMPDF=Mostrar/Ocultar el botón PDF - solo afecta a esta página
 PARAMPRINT=Mostrar/Ocultar boton imprimir - solo afecta a esta página
-PARAMRATING=Mostrar/Ocultar el ítem valoración - solo afecta a esta página
+PARAMRATING=Mostrar/Ocultar el ítem de valoración - solo afecta a esta página
 PARAMSECTION=Mostrar/Ocultar el nombre a la sección del artículo
-PARAMSECTIONLINK=Convertir el nombre de la seccion a enlace a la sección
+PARAMSECTIONLINK=Hacer el nombre de la sección un enlace a la página de la actual sección
 #If the variable does not work in your language use following line
 # PLEASE MAKE A SELECTION FROM THE LIST TO=Please select an Article from the list
 #instead of
-PLEASE MAKE A SELECTION FROM THE LIST TO=Por favor, selecciona el artículo al que aplicar la acción de %s
+PLEASE MAKE A SELECTION FROM THE LIST TO=Por favor seleccionar un artículo de la lista para %s
 PDF ICON=Icono PDF
 PRIMARY ORDER=Orden primario
 READ MORE=Leer más...
 REMOVE=Eliminar
-SELECT A SECTION=Selecciona una sección
+SELECT A SECTION=Seleccionar sección
 SECTION NAME=Nombre de la sección
 SECTION NAME LINKABLE=Nombre de la sección enlazable
-SELECT CATEGORY=Selecciona la categoría
+SELECT CATEGORY=Seleccionar categoría
 SHOW/HIDE PAGINATION SUPPORT=Mostrar/Ocultar el soporte de paginación
 SHOW/HIDE THE ITEMS TITLE=Mostrar/Ocultar título del artículo
 SHOW/HIDE THE READ MORE LINK=Mostrar/Ocultar el enlace Leer más...
diff -aruN --binary 11/administrator/language/es-ES/es-ES.com_templates.ini 12/administrator/language/es-ES/es-ES.com_templates.ini
--- 11/administrator/language/es-ES/es-ES.com_templates.ini	2009-05-23 05:18:54.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.com_templates.ini	2009-06-28 08:48:04.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.com_templates.ini 1.5.0 2009-05-23 05:18:52 16:07:35 ~0 $
+# $Id: es-ES.com_templates.ini 1.5.0 2009-06-28 08:48:05 16:07:35 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
@@ -61,6 +61,6 @@
 MENU ASSIGNMENT=Asignación de menú
 CANNOT ASSIGN DEFAULT TEMPLATE=No pudo asignar la plantilla por predeterminada
 CANNOT ASSIGN AN ADMINISTRATOR TEMPLATE=No puedo asignar una plantilla de andminitrador
-CANNOT ASSIGN ADMINISTRATOR TEMPLATE=No puedo asignalar la plantilla de arministrador
+CANNOT ASSIGN ADMINISTRATOR TEMPLATE=No puedo asignar la plantilla de arministrador
 PARAMSWRITABLE=El parámetro del archivo %s es <font color="green>Escrible</font>!
 PARAMSUNWRITABLE=El parámetro del archivo  %s es <font color="red">No escribible</font>!
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/es-ES/es-ES.com_translationsmanager.ini 12/administrator/language/es-ES/es-ES.com_translationsmanager.ini
--- 11/administrator/language/es-ES/es-ES.com_translationsmanager.ini	2008-05-02 12:19:36.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.com_translationsmanager.ini	2009-06-28 06:52:46.000000000 +0200
@@ -60,7 +60,7 @@
 STRING UNCHANGED=Frase sin cambiar
 STRING EXTRA=Frase no está en el Archivo de Referencia
 TRANSLATION=Traducción
-TRANSLATION MANAGER=Administrador de Traducciones.
+TRANSLATION MANAGER=Administrador de Traducciones
 TRANSLATION MANAGER BY=<b>Administrador de Traducciones</b> por
 TRANSLATION MANAGER DONATE=¿Útil? Las <a href="%s" target="_blank">Donaciones</a> son recibidas con agradecimiento.
 USE THE DEFAULT=Usa el asignado por defecto %s
diff -aruN --binary 11/administrator/language/es-ES/es-ES.ini 12/administrator/language/es-ES/es-ES.ini
--- 11/administrator/language/es-ES/es-ES.ini	2009-05-21 08:07:32.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.ini	2009-07-01 10:18:34.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.ini 1.5.0 2009-05-21 08:07:31 16:28:06 ~0 $
+# $Id: es-ES.ini 1.5.0 2009-07-01 10:18:34 16:28:06 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/copyleft/gpl.html GNU/GPL
@@ -134,6 +134,7 @@
 PHPMAILER_FILE_ACCESS=No puedo acceder al archivo:
 PHPMAILER_FILE_OPEN=Error de archivo: No puedo abrir el archivo:
 PHPMAILER_ENCODING=Codificación desconocida:
+PHPMAILER_SIGNING=Firma de error:
 
 A SHORT ALT ATTRIBUTE FOR IMAGE=Una etiqueta alternativa (ALT) para la imagen
 ACCESS=Acceso
diff -aruN --binary 11/administrator/language/es-ES/es-ES.plg_editors_tinymce.ini 12/administrator/language/es-ES/es-ES.plg_editors_tinymce.ini
--- 11/administrator/language/es-ES/es-ES.plg_editors_tinymce.ini	2008-07-08 21:20:46.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.plg_editors_tinymce.ini	2009-07-01 10:35:30.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.plg_editors_tinymce.ini 1.5.0 2008-07-08 18:46:39 20:37:15 ~0 $
+# $Id: es-ES.plg_editors_tinymce.ini 1.5.0 2009-07-01 10:35:31 20:37:15 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -92,4 +92,50 @@
 TOOLBAR=Barra de herramientas
 URL BEHAVIOUR=Comportamiento URL
 URLS=URLs
-XHTMLXTRAS=XHTMLxtras
\ No hay ningún carácter de nueva línea al final del fichero
+XHTMLXTRAS=XHTMLxtras
+
+# New definitions
+SKIN=Skin
+SELECT SKIN=Seleccionar skin
+
+ADD CUSTOM BUTTON(S)=Añadir custom button(s)
+ADD CUSTOM PLUGIN(S)=Añadir custom plugin(s)
+ADVANCED IMAGE=Imagen avanzada
+ADVANCED LINK=Enlace avanzado
+ALIGNMENT OF THE TOOLBAR=Alineación de la barra de herramientas
+ALL DIALOGS TO OPEN AS FLOATING DIV LAYERS INSTEAD OF POPUP WINDOWS. THIS OPTION CAN BE VERY USEFUL IN ORDER TO GET AROUND POPUP BLOCKERS.=Todos los cuadros de diálogo para abrir capas flotantes como DIV en lugar de ventanas emergentes. Esta opción puede ser muy útil a fin de evitar bloqueadores de popups.
+COLORS=Colores
+CONTEXT MENU=Contexto menu
+CONTROLS HOW ENTITIES GET PROCESSED BY EDITOR=Controla la forma como las entidades obtienen procesos por el editor
+CUSTOM BUTTON=Custom button
+CUSTOM PLUGIN=Custom plugin
+ENTITY ENCODING=Entidad de codificación
+EXTENDED=Extendido
+FONTS=Fuentes
+INLINE POPUPS=Inline popups
+INSERT NONBREAKING SPACE ENTITIES=Insertar nonbreaking entidades espaciales
+NAMED=nombre
+NONBREAKING=Nonbreaking
+NUMERIC=númerico
+OFFICE2007 BLACK=Office2007 Black
+OFFICE2007 BLUE=Office2007 Blue
+OFFICE2007 SILVER=Office2007 Silver
+PARAMCOLORS=Mostrar / Ocultar los colores de los botones de control. Sólo se aplica en el modo Extended
+PARAMS EXTENDED MODE=<strong>Opciones del modo extendido</strong><br />Estas opciones sólo se aplican en modo Extended.
+PARAMFONTS=Mostrar / Ocultar el control de fuentes. Sólo se aplica en el modo Extended
+PARAMMEDIA=Mostrar / Ocultar el botón de los medios multimedia. Sólo se aplica en el modo Extended
+PARAMPASTE=Mostrar / Ocultar el botón Pegar. Sólo se aplica en el modo Extended
+PASTE=Pegar
+POSSIBILITY TO SEE INVISIBLE CHARACTERS=Posibilidad de ver los caracteres invisibles
+RAW=raw
+SAFARI COMPATIBILITY=Safari compatibility
+SEARCH-REPLACE=Búsqueda-Sustituir
+TEMPLATE=Template-Plantilla
+TINYBROWSER=Tinybrowser
+TOOLBAR ALIGN=Ajustar la barra de herramientas
+TURN ON/OFF A MORE ADVANCED IMAGE DIALOG=Activar/desactivar una imagen más avanzada de diálogo
+TURN ON/OFF A MORE ADVANCED LINK DIALOG=Activar/desactivar un vínculo más avanzado de diálogo
+TURN ON/OFF CONTEXT MENU=Activar/desactivar el menú de contexto
+TURN ON/OFF SAFARI COMPATIBILITY PLUGIN=Activar/desactivar el plugin de compatibilidad de Safari
+TURN ON/OFF TINYBROWSER FOR IMAGES/LINKS=Activar/desactivarTinybrowser para images/links
+VISUALCHARS=Visualchars
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/language/es-ES/es-ES.tpl_ja_purity.ini 12/administrator/language/es-ES/es-ES.tpl_ja_purity.ini
--- 11/administrator/language/es-ES/es-ES.tpl_ja_purity.ini	2009-03-28 21:28:30.000000000 +0100
+++ 12/administrator/language/es-ES/es-ES.tpl_ja_purity.ini	2009-06-25 13:35:30.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.tpl_ja_purity.ini 1.5.4 2009-03-28 20:28:28 ff ~0 $
+# $Id: es-ES.tpl_ja_purity.ini 1.5.4 2009-06-25 13:35:31 ff ~0 $
 # author Joomla! Spanish
 # copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
diff -aruN --binary 11/administrator/language/es-ES/es-ES.xml 12/administrator/language/es-ES/es-ES.xml
--- 11/administrator/language/es-ES/es-ES.xml	2009-05-21 16:10:22.000000000 +0200
+++ 12/administrator/language/es-ES/es-ES.xml	2009-06-26 09:01:04.000000000 +0200
@@ -3,7 +3,7 @@
 	<tag>es-ES</tag>
 	<name>Español (spanish formal Internacional)</name>
 	<description>Idioma para usar en la parte administrativa de Joomla! 1.5. Creado por Joomla! Spanish - Traductor oficial asociado</description>
-	<version>1.5.11</version>
+	<version>1.5.12</version>
 	<creationDate>2009-05-21</creationDate>
 	<author>Joomla! Spanish</author>
 	<authorUrl>www.joomlaspanish.org</authorUrl>
@@ -20,4 +20,4 @@
 		<pdfFontName>vera</pdfFontName>
 	</metadata>
 	<params></params>
-</metafile>
\ No hay ningún carácter de nueva línea al final del fichero
+</metafile>
diff -aruN --binary 11/administrator/modules/mod_quickicon/mod_quickicon.php 12/administrator/modules/mod_quickicon/mod_quickicon.php
--- 11/administrator/modules/mod_quickicon/mod_quickicon.php	2008-07-09 02:02:08.000000000 +0200
+++ 12/administrator/modules/mod_quickicon/mod_quickicon.php	2009-06-28 06:34:54.000000000 +0200
@@ -71,7 +71,7 @@
 
 		if ( $user->get('gid') > 24 ) {
 			$link = 'index.php?option=com_translationsmanager';
-			quickiconButton( $link, 'icon-48-language.png', JText::_( 'Translation Manager' ) );
+			quickiconButton( $link, 'icon-48-language_t.png', JText::_( 'Translation Manager' ) );
 		}
 
 		if ( $user->get('gid') > 23 ) {
diff -aruN --binary 11/administrator/modules/mod_quickicon/mod_quickicon.xml 12/administrator/modules/mod_quickicon/mod_quickicon.xml
--- 11/administrator/modules/mod_quickicon/mod_quickicon.xml	2008-07-07 00:38:52.000000000 +0200
+++ 12/administrator/modules/mod_quickicon/mod_quickicon.xml	2009-06-29 02:04:04.000000000 +0200
@@ -8,13 +8,13 @@
 	<authorEmail>admin@joomla.org</authorEmail>
 	<authorUrl>www.joomla.org</authorUrl>
 	<version>1.0.0</version>
-	<description>This module shows Quick Icons that are visible on the Admin area Home Page</description>
+	<description>Este módulo muestra los iconos rápidos que son visibles en el área de administración de la Página de inicio</description>
 	<files>
 		<filename module="mod_quickicon">mod_quickicon.php</filename>
 	</files>
 	<params>
-		<param name="cache" type="list" default="1" label="Caching" description="Select whether to cache the content of this module">
-			<option value="1">Use global</option>
+		<param name="cache" type="list" default="1" label="Caching" description="Seleccione si desea la caché del contenido en este módulo">
+			<option value="1">Usar global</option>
 			<option value="0">No caching</option>
 		</param>
 	</params>
diff -aruN --binary 11/administrator/templates/khepri/css/icon.css 12/administrator/templates/khepri/css/icon.css
--- 11/administrator/templates/khepri/css/icon.css	2009-06-02 23:51:34.000000000 +0200
+++ 12/administrator/templates/khepri/css/icon.css	2009-06-28 07:12:28.000000000 +0200
@@ -70,6 +70,7 @@
 .icon-48-inbox 		{ background-image: url(../images/header/icon-48-inbox.png); }
 .icon-48-msgconfig 	{ background-image: url(../images/header/icon-48-message_config.png); }
 .icon-48-langmanager { background-image: url(../images/header/icon-48-language.png); }
+.icon-48-langmanager_t { background-image: url(../images/header/icon-48-language_t.png); }
 .icon-48-mediamanager{ background-image: url(../images/header/icon-48-media.png); }
 .icon-48-plugin 	{ background-image: url(../images/header/icon-48-plugin.png); }
 .icon-48-help_header { background-image: url(../images/header/icon-48-help_header.png); }
diff -aruN --binary 11/administrator/templates/khepri/images/header/icon-48-language_t.png 12/administrator/templates/khepri/images/header/icon-48-language_t.png
--- 11/administrator/templates/khepri/images/header/icon-48-language_t.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/administrator/templates/khepri/images/header/icon-48-language_t.png	2009-06-28 06:36:20.000000000 +0200
@@ -0,0 +1,6 @@
+PNG
+
+   IHDR   0   0   `	   sBITO  PLTEr_ؠҾQARƲәI𸻾ԾW굽̾ﲷ鴶Ƿ̻˾i𬯹γ£޲ү]𙞉d֝𕕛ƞՖݑV̒aދ膍dֈ߆z~{|q~}dHzTyY{{])uYlmlstvsJzoe'}cXv}brbbbVls]SZZ\\YaO}UyZClskroUhcp fP|TOOYq`oDvilKKedGHKBJl[hJ2GtN{^DDZg?<ALu[xYWiVT^8C.e8;9`;SsTS231<++YI+7-F[F#13F(</~   	pHYs  
+  
+B4   tEXtSoftware Adobe FireworksON   tEXtCreation Time 02/15/06j  IDATHՕ_SUǿۮmf.Aw▅[b9e[9D'FBP(3,̞̇(eY*2ν{c=;$,ހɗKJhNgR'GWRVp\&ZGi='4%.t)ITj'448hv4ѰVQ,{Vtjр5kAֹsR{7M	u^׋w/',qY[XV	uuٿ~5(-&x<{'ǞU!z`nMP\nqZ"LbL blbAZ(3&}B&Bj7j++mMMM-;~oaM<2X===L;">ݲ;[[_/?`(*LD4E?G-Gϑ9|*=OFNWH`v?==;×h*P}[[[{u^n:u2N&#^g R/o8ؕb0bҶ r@(JNXѱvmG# U`y<B(>xgμ:,@ŒG1X0R9/B9jE3'Y!7(]l8҆`KkʍLj{ $H?0+X(_+F)ʓ@͜(n(b;k$K;7lq,w"|sԆ`p8	zAyR^%EL^XeC'>
+V_O)^ܲ7NX5^>>##?<!~{I'pBťJ]pn͌	>8E*N;ybrF	巁Hߠc+J*50aQ6AsRcUb._%HkAOuJD.wJt<Q.τ    IENDB`
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/administrator/templates/khepri/templateDetails.xml 12/administrator/templates/khepri/templateDetails.xml
--- 11/administrator/templates/khepri/templateDetails.xml	2009-01-10 04:58:06.000000000 +0100
+++ 12/administrator/templates/khepri/templateDetails.xml	2009-06-28 05:52:00.000000000 +0200
@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd">
-<install type="template" version="1.5.0" client="administrator">
-	<name>Khepri</name>
-	<creationDate>05/24/06</creationDate>
-	<author>Andy Miller</author>
-	<authorEmail>admin@joomla.org</authorEmail>
-	<authorUrl>http://www.joomla.org</authorUrl>
-	<copyright></copyright>
-	<license>GNU/GPL</license>
-	<version>1.0</version>
-	<description>Administration template for Joomla! 1.5</description>
-	<files>
-		<filename>index.php</filename>
-		<filename>css/template.css</filename>
-	</files>
-	<positions>
-		<position>menu</position>
-		<position>submenu</position>
-		<position>toolbar</position>
-		<position>title</position>
-		<position>status</position>
-		<position>icon</position>
-		<position>cp_shell</position>
-		<position>cpanel</position>
-		<position>debug</position>
-	</positions>
-	<params>
-		<param name="useRoundedCorners" type="radio" default="1" label="Use Rounded Corners" description="Enable/Disable Rounded Corner Effect">
-			<option value="0">No</option>
-			<option value="1">Yes</option>
-		</param>
-		<param name="showSiteName" type="radio" default="0" label="Show Site Name" description="Show the site name in the template header">
-			<option value="0">No</option>
-			<option value="1">Yes</option>
-		</param>
-		<param name="headerColor" type="folderlist" default="h_green" directory="administrator/templates/khepri/images" filter="^h_." hide_none="1" hide_default="1" label="Header Color" description="The color of the bar under the header" />
-	</params>
-</install>
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd">
+<install type="template" version="1.5.0" client="administrator">
+	<name>Khepri</name>
+	<creationDate>05/24/06</creationDate>
+	<author>Andy Miller</author>
+	<authorEmail>admin@joomla.org</authorEmail>
+	<authorUrl>http://www.joomla.org</authorUrl>
+	<copyright></copyright>
+	<license>GNU/GPL</license>
+	<version>1.0</version>
+	<description>Administration template for Joomla! 1.5</description>
+	<files>
+		<filename>index.php</filename>
+		<filename>css/template.css</filename>
+	</files>
+	<positions>
+		<position>menu</position>
+		<position>submenu</position>
+		<position>toolbar</position>
+		<position>title</position>
+		<position>status</position>
+		<position>icon</position>
+		<position>cp_shell</position>
+		<position>cpanel</position>
+		<position>debug</position>
+	</positions>
+	<params>
+		<param name="useRoundedCorners" type="radio" default="1" label="Usar esquinas redondeadas" description="Activar/desactivar el efecto de esquinas redondeadas">
+			<option value="0">No</option>
+			<option value="1">Si</option>
+		</param>
+		<param name="showSiteName" type="radio" default="0" label="Mostrar el nombre del sitio" description="Mostrar el nombre del sitio en el header de la plantilla">
+			<option value="0">No</option>
+			<option value="1">Si</option>
+		</param>
+		<param name="headerColor" type="folderlist" default="h_green" directory="administrator/templates/khepri/images" filter="^h_." hide_none="1" hide_default="1" label="Color del Header" description="El color de la barra de debajo del header" />
+	</params>
+</install>
diff -aruN --binary 11/CHANGELOG.php 12/CHANGELOG.php
--- 11/CHANGELOG.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/CHANGELOG.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: CHANGELOG.php 11987 2009-06-03 01:08:57Z ian $
+* @version		$Id: CHANGELOG.php 12389 2009-07-01 00:34:45Z ian $
 * @package		Joomla
 * @copyright	Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
@@ -37,6 +37,57 @@
 - -> Removed
 ! -> Note
 
+-------------------- 1.5.12 Stable Release [30-June-2009] ------------------
+
+29-Jun-2009 Ian MacLennan
+ # [#16977] Incomplete language definitions in TinyMCE 3.2
+ # [#17006] Revert escaping of html in contact miscellaneous information.
+
+28-Jun-2009 Ian MacLennan
+ + Added mk-MK installer language pack
+
+27-Jun-2009 Ian MacLennan
+ # [#17005] Installer SQL shows TinyMCE as version 2.0
+
+-------------------- 1.5.12 Release Candidate [24-June-2009] ------------------
+
+24-Jun-2009 Ian MacLennan
+ $ [#16950] Lots of missing language strings in TinyMCE v3
+ # [#16593] JFile::upload() uses chmod 777 in FTP mode
+ # [#15673] Different time create date and start publishing in beez
+ # [#16601] Section filter on article manager showing non content sections as well 
+ # [#16607] Mod Newsflash read more link broken with Beez template
+ # [#16719] JHTML::tooltip quote problem
+ # [#16753] CSS file is not updated when you edit the joomla
+ # [#16890] Page title isn't displayed at Default login page
+ # [#16896] Modified Date disappears in 1.5.11
+ $ Added language string for Toggle Editor
+ ^ Updated LICENSES.php and CREDITS.php to reflect library license changes and updates
+
+23-Jun-2009 Ian MacLennan
+ # [#12376] Update to TinyMCE 3.2.4.1
+
+22-Jun-2009 Ian MacLennan
+ # [#12886] PHPMailer version used in 1.5 does not allow secure connection to SMTP servers
+
+20-Jun-2009 Ian MacLennan
+ # [#14540] Component Contact at Beez
+ # [#16686] pagebreak - duplicate title, not respecting show titles
+ # [#16779] JA_Purity: Anchor tag for Category Title not closed in Front Page Blog Layout
+ # [#16820] Untranslated strings in Beez template
+ # [#15727] Module cache, id, Itemid - reverted
+
+14-Jun-2009 Ian MacLennan
+ # [#16235] mod_feed Tool tip is incorrect
+ # [#16511] Language date format isn't correct
+ # [#16595] Category table view output wrong due to error in file
+ # [#16597] Parameter "Minimum User Level for Media Manager" doesn't work
+ # [#16742] Wrong link to OpenID login-bg.gif in system.css
+
+09-Jun-2009 Ian MacLennan
+ # [#12746] Replace PEAR with a GPL compatible alternative
+ # [#15541] Article Catagory Layout incorrectly sorted
+
 -------------------- 1.5.11 Stable Release [03-June-2009] ------------------
 
 01-Jun-2009 Ian MacLennan
diff -aruN --binary 11/components/com_contact/views/contact/tmpl/default_address.php 12/components/com_contact/views/contact/tmpl/default_address.php
--- 11/components/com_contact/views/contact/tmpl/default_address.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/components/com_contact/views/contact/tmpl/default_address.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-/** $Id: default_address.php 11917 2009-05-29 19:37:05Z ian $ */
+/** $Id: default_address.php 12387 2009-06-30 01:17:44Z ian $ */
 defined( '_JEXEC' ) or die( 'Restricted access' );
 ?>
 <?php if ( ( $this->contact->params->get( 'address_check' ) > 0 ) &&  ( $this->contact->address || $this->contact->suburb  || $this->contact->state || $this->contact->country || $this->contact->postcode ) ) : ?>
@@ -115,7 +115,7 @@
 		<?php echo $this->contact->params->get( 'marker_misc' ); ?>
 	</td>
 	<td>
-		<?php echo $this->escape($this->contact->misc); ?>
+		<?php echo nl2br($this->contact->misc); ?>
 	</td>
 </tr>
 </table>
diff -aruN --binary 11/components/com_content/models/category.php 12/components/com_content/models/category.php
--- 11/components/com_content/models/category.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/components/com_content/models/category.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: category.php 11794 2009-05-06 01:56:42Z ian $
+ * @version		$Id: category.php 12028 2009-06-10 02:06:27Z ian $
  * @package		Joomla
  * @subpackage	Content
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -387,12 +387,6 @@
 		{
 			$orderby .= $filter_order .' '. $filter_order_Dir.', ';
 		}
-	    elseif($filter_order == '' && $filter_order_Dir == '')
-		{
-				$filter_order='a.ordering';
-				$filter_order_Dir='ASC';
-				$orderby .= $filter_order .' '. $filter_order_Dir.', ';
-		}
 
 		if ($filter_order == 'author')
 		{
diff -aruN --binary 11/components/com_content/views/article/tmpl/form.php 12/components/com_content/views/article/tmpl/form.php
--- 11/components/com_content/views/article/tmpl/form.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/components/com_content/views/article/tmpl/form.php	2009-06-30 22:01:32.000000000 +0200
@@ -222,7 +222,7 @@
 <input type="hidden" name="id" value="<?php echo $this->article->id; ?>" />
 <input type="hidden" name="version" value="<?php echo $this->article->version; ?>" />
 <input type="hidden" name="created_by" value="<?php echo $this->article->created_by; ?>" />
-<input type="hidden" name="referer" value="<?php echo @$_SERVER['HTTP_REFERER']; ?>" />
+<input type="hidden" name="referer" value="<?php echo str_replace(array('"', '<', '>', "'"), '', @$_SERVER['HTTP_REFERER']); ?>" />
 <?php echo JHTML::_( 'form.token' ); ?>
 <input type="hidden" name="task" value="" />
 </form>
diff -aruN --binary 11/components/com_content/views/article/tmpl/pagebreak.php 12/components/com_content/views/article/tmpl/pagebreak.php
--- 11/components/com_content/views/article/tmpl/pagebreak.php	2008-07-07 00:39:02.000000000 +0200
+++ 12/components/com_content/views/article/tmpl/pagebreak.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,5 @@
+<?php // no direct access
+defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
 		<script type="text/javascript">
 			function insertPagebreak(editor)
 			{
diff -aruN --binary 11/components/com_content/views/category/tmpl/default_items.php 12/components/com_content/views/category/tmpl/default_items.php
--- 11/components/com_content/views/category/tmpl/default_items.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/components/com_content/views/category/tmpl/default_items.php	2009-06-30 22:01:32.000000000 +0200
@@ -65,7 +65,7 @@
 </tr>
 <?php endif; ?>
 <?php foreach ($this->items as $item) : ?>
-<tr class="sectiontableentry<?php echo ($item->odd +1 ) . $this->escape($this->params->get('pageclass_sfx')); ?>; ?>" >
+<tr class="sectiontableentry<?php echo ($item->odd +1 ) . $this->escape($this->params->get('pageclass_sfx')); ?>" >
 	<td align="right">
 		<?php echo $this->pagination->getRowOffset( $item->count ); ?>
 	</td>
diff -aruN --binary 11/components/com_user/controller.php 12/components/com_user/controller.php
--- 11/components/com_user/controller.php	2008-11-11 02:30:12.000000000 +0100
+++ 12/components/com_user/controller.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: controller.php 11215 2008-10-26 02:25:51Z ian $
+ * @version		$Id: controller.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla
  * @subpackage	Content
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -83,7 +83,7 @@
 				$msg	= JText::_('PASSWORDS_DO_NOT_MATCH');
 				// something is wrong. we are redirecting back to edit form.
 				// TODO: HTTP_REFERER should be replaced with a base64 encoded form field in a later release
-				$return = @$_SERVER['HTTP_REFERER'];
+				$return = str_replace(array('"', '<', '>', "'"), '', @$_SERVER['HTTP_REFERER']);
 				if (empty($return) || !JURI::isInternal($return)) {
 					$return = JURI::base();
 				}
diff -aruN --binary 11/components/com_user/views/login/tmpl/default.php 12/components/com_user/views/login/tmpl/default.php
--- 11/components/com_user/views/login/tmpl/default.php	2008-07-07 00:38:58.000000000 +0200
+++ 12/components/com_user/views/login/tmpl/default.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,3 +1,8 @@
 <?php defined('_JEXEC') or die('Restricted access'); ?>
+<?php if ($this->params->get( 'show_page_title', 1)) : ?>
+<div class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
+	<?php echo $this->escape($this->params->get('page_title')); ?>
+</div>
+<?php endif; ?>
 <?php echo $this->loadTemplate($this->type); ?>
 
diff -aruN --binary 11/components/com_user/views/login/view.html.php 12/components/com_user/views/login/view.html.php
--- 11/components/com_user/views/login/view.html.php	2008-07-07 00:38:58.000000000 +0200
+++ 12/components/com_user/views/login/view.html.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: view.html.php 10381 2008-06-01 03:35:53Z pasamio $
+* @version		$Id: view.html.php 12352 2009-06-24 13:52:57Z ian $
 * @package		Joomla
 * @subpackage	Login
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -47,7 +47,10 @@
 		$type = (!$user->get('guest')) ? 'logout' : 'login';
 
 		// Set some default page parameters if not set
-		$params->def( 'page_title', 				1 );
+		$params->def( 'show_page_title', 				1 );
+		if (!$params->get( 'page_title')) {
+				$params->set('page_title',	JText::_( 'Login' ));
+			}
 		if(!$item)
 		{
 			$params->def( 'header_login', 			'' );
diff -aruN --binary 11/CREDITS.php 12/CREDITS.php
--- 11/CREDITS.php	2009-06-02 23:51:34.000000000 +0200
+++ 12/CREDITS.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: CREDITS.php 11924 2009-05-30 08:11:59Z pasamio $
+ * @version		$Id: CREDITS.php 12356 2009-06-24 18:20:14Z ian $
  * @package		Joomla
  * @copyright	Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
  * @license		GNU/GPL, see LICENSE.php
@@ -251,8 +251,8 @@
 Pear
 ----
 Author:		Sterling Hughes, Stig Bakken, Tomas V.V.Cox, Greg Beaver
-Copyright:	Copyright (C) 1997-2006 The PHP Group
-License:	PHP License 3.0
+Copyright:	Copyright (C) 1997-2009 The PHP Group
+License:	BSD License
 
 PHPGACL
 -------
@@ -268,8 +268,9 @@
 
 PHPMailer
 --------
-Author:		Brent R. Matzelle
+Author:		Andy Prevost, Brent R. Matzelle
 Copyright:	Copyright (C) 2001 - 2003 Brent R. Matzelle
+		Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.
 License:	GNU Lesser General Public License (LGPL) 2.1
 
 phpUTF8
@@ -299,7 +300,7 @@
 TinyMCE
 -------
 Author:		Moxiecode Systems
-Copyright:	Copyright (C) 2005-2006, Moxiecode Systems AB, All rights reserved.
+Copyright:	Copyright (C) 2005-2009, Moxiecode Systems AB, All rights reserved.
 License:	GNU Lesser General Public License (LGPL) 2.1
 
 VCard
diff -aruN --binary 11/images/stories/joomla_logo_black.jpg 12/images/stories/joomla_logo_black.jpg
--- 11/images/stories/joomla_logo_black.jpg	1970-01-01 01:00:00.000000000 +0100
+++ 12/images/stories/joomla_logo_black.jpg	2009-06-26 09:24:32.000000000 +0200
@@ -0,0 +1,42 @@
+ JFIF ++   C 		
+
+
+
+           C                                                   G^               L 
+    !1"AQ2BaqRu#378br$%46S5Cs              5      !12AQa"q#BR3br   ? ̫z&9\!hq9!=9s5ͪ}]oHk@`*#}qgѼW9xpY]ԭW:%ǸY]&ŧ3Շ'=wo+(]S~UarÏ5ku:y?~5k\952x^Sx?`&ַ~2d־oXusM̖ITG(Y.txKɬĈcz}8
+@P(
+@P(
+@P(
+@P(
+
+٨mlٰR|iWilwarVkm*I%w4磂ԒrRi[m^[Jର)EʉO^ZӷOv4dSs<tG@T#gxCAYlBӵ+?ϣO,m?'7yP[pqy<4>;>VSts[6y#krLd()a)Dď,ٕ8\yy!ѱqT2C⼒*vijP(ߨs/L{ǡ r4]@P(
+@P(
+A:LiHmM3op(
+{^	4V jbg;	JPXI"a@P(
+6ٴftkS\7r!t'wws<A[	Jbsn[#l+	 o AJ+	\P~6z\(=pm,j	JI>A6+WO.8܆!%XB=Ƽz5/]h诬0)u6Tp+Ro;0	sC=ٗ"Z8oyIBW$9Ei4_#M]7,7i%`'}gI's~}k/{RJS~{qg,s[W_yb/kf<ycK*J%a`!DpF7<Gf	Ƿ:ٍzc[|=km's`,-\7'8$dO<r7zv
+63KsVʹE!Kj)8iZi[Qy9wL-{޺5k|i1፩SiίKP(i?2~ zPP(
+@P(
+@P@}VoS%avqiՓ۵a%%P(
+i ߧ'j>sr$9źŪYB8F6tYnJ˭돸p= T	,ԎC'h:*U/,cL{\vXr[vQXWҴO_nJ&,eCgaBy'V^ɏw<1cR~Z4GvՖMQt35̉ol!?8KO1ixmӞ| YS?W{G䉴lR1nyJUw٫\7LSWehĘ=!IW#y|ˎ6߳P2Ϭ[? ?:65Pa\wG1
+p3=~goO.
+AL'OǨ%	+Y	JFT <MTD۵tD/Rac<onvųמU[~m5&z4p{Y)@Нvs^n=úPɷ-p$U%k@vt(,d>$|OA	j~>DvW2n1Su٧Gh};:yQ<9~JA(=gպ*DhS/jCisd5w, . pÐ<J	Q^MHdrޖԘQBUyz+JnnWQyAkt#,ܫ#$v|Y!}"ϳ]FPԷ?]BOAkf9酭4B{δUXy-ܪnl[^I4<U8냫hk ^8GjRz.M	89u~
+ϓݦf<mIYLkM76I4ۖH.)U^ZP%.*}*ީ+˳cN~ݫ	.[m#F訉nXqNTGs%SII+S; e:~ [oJC資/m՛=YY]u	% f:-i`]y(x HWTnj]!iȌ2$)EW NNj*BAmC-p)CAe{~uxqԎZ'/ 7"\	AF6ҲAcY՞Κn.܂MC&Qz@<}\OY<S$fz~$Kimjt|+>okF.Wr<%MJGYs➾*co?t5|H?VlZLCGϠC֞J%'V*5ybzscJmcK"|{e@ܡQl̫Y"yci fq䉬, VE(
+2OL-?K;yggEq GwtI!$l`WFۣ˹Ej穔3HqGJ$'~ꨕ<RRo$ "ۧg=x:j-mC!H@*ZKiǪ>b+nWt'y}RfZ[K.wSqH%kN[Ҷ%y.1	Hi#RIN|076[D$1e$=qtt9N:g\Yڗy	q
+ U}u;RQR7WTFy1Et.^`;/7%|sAL֜5qWX*/$)SW|R	ZjjueM%t8m/<#:b&t<T1fZ+n^>o3%vx[qZvR>'S))*
+CG˩4-S䡦;jTe6$Azuӵ%}i;JRHt*f:n-Է}Ku-?5]t6j=]-׭TRIJqyh{ ubӖb}5yUWV njkD0yiA
+ANr^\[ҭi]F|k[Q~g+ ߧ'qjAs6sT2Uʕb=onZ)~tɒu~kY?mnUDm=6缦:
+АoVooOว{w:xMFlxp^Cq~baGB'{=Rj$n$cnX鈞͎-en5\7LQZOL}k/AlU'tk5z_tmA+QCoOcg̨ǭXyRyn/7O3ڶΝӍþ(Bd(|04@kZW/S%c~ g\oVl[:9zDI*#M5}b)yÛR?Y|-NmG(
+2ք];T%1?	ol8%5܁!6pPc#6nP[kHZNA @EtpWBI#Mn'h)v4kku^O:t,8ޟzL3)LXgwxE"UBA@+i
+O#DlSqlISC3s]Lp.kӱ>>[gvPT~u oAXh3I|'ة+6    NUkVSdW!I-rS}I4=֐'31ӭ$ n?iW;1>ۄ4~8ȩ+	bߒ+{?U`;[e&SWe[.[E[jPq;@֐!'NE:3T%ANϕ{ty?V=^#DM1j$z5+<ǘV[źV|v1rvح	F&[4 89#ZktigF[o0u4ɞb*c}!2}a{k~<phi9gqo+k"d!Md%ZH8Ty
+Z^kKZ_>H#yГivsW*e`9}*R7lWϩZ~kXfV|bkO=kPjf\%X)	IZ1~ٵ	}4Lir9m;s@\g%2.wAVR+ON;Sk)i=mn<h`]b {I9'VchOZ;E]r^Z&ͩna-[Qe.8XSuٵfo(xۃ(sm4]5)J'CI.{қ>=5YqG;.\%$!%ciiL=C @ZO2O0G~j!1Mly-kczuÆhy )tҢwji*>oF*r>7n֛/ʌι=!xI'ާJ1nl_MjUKXʓ *L) .yX]lճ7dUL*ܧ x!GU;=ϿU4b7p7˜3 ӺK6=Xelw#!@x7Jiڣd.V3r+_~&{Ⲥm. 1φTJʛjJY[-6*9"+*︥c<ͧm:oiko3L*QRI'Ϊ9[gvB~@GQ;?QV4wm  	CH؍;K<ԦmC)RU)ऑVl[h2J6.M B3CM+uFOWS^ FՖiV:Ym|;ӫ6{|+wMvn&+N=ai?юZBڶkmA՚	h¶ +I4rG_1QVcnG kJ!<$
+ v'RZm	Y/)RЯWtwqύMeEZ_x)5Ѕ[Wyb=!ΪiYZi<J*A<*Lq^μQ@Lͼ VAC
+i\c':+.zZ8qdYJi|G:]58Gxz\gglE,lsqtp.+XLsK[Pi	1<߾_zL 7}Jj[SūDuYSdR~ZZLcz^'`?kNd6IJkĽ[N125\d/Dg7r>u7>-.Bꋜ͢X1榝>ֽkOoҺ</%7lCa5;e[5Z^صZJԀh2C]Zl!>:<f{(?)Kam$"#A&f]pRc6~;4Kvmnp9L[ptsњRA!BBRIH AqZlz=X *ChuE.ƶTץm?5}X-i.~AǸ[(nBFjd7jBaٙ[|ks+}ƢRc $A@:R%b٠tRNn;H|HVU|6
+mL\K<Ka7
+p33.ϵė.D}i'q
+)yxPdl6[5YFa	m$ 2Nh2h57#oŞXm}JP$PhF6Rg A8:Pt;`7ô[bьer=PyxӚ~xE%K)ouc8ˇ
+(DqXi!#JSf-7`DfO[փPAXW):?gBR_d$+z!`xޟ|#]!C5+_u`%>C*?P}U1F;B/LX#Yᒴ2	uȸ⹭gzy
+3朖קt3WXki\Xr1 r5ӟ]>ĭ޳c୷j})w%yA/VvK|~%ga>eXHx50CV d4^_=o_}ҽ{ڙ@P(
+@P(
+@P(
+@P(
+@
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/includes/framework.php 12/includes/framework.php
--- 11/includes/framework.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/includes/framework.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: framework.php 11987 2009-06-03 01:08:57Z ian $
+* @version		$Id: framework.php 12389 2009-07-01 00:34:45Z ian $
 * @package		Joomla
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
diff -aruN --binary 11/language/ca-ES/ca-ES.com_banners.ini 12/language/ca-ES/ca-ES.com_banners.ini
--- 11/language/ca-ES/ca-ES.com_banners.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_banners.ini	2008-12-31 20:24:38.000000000 +0100
@@ -0,0 +1,15 @@
+# $Id: ca-ES.com_banners.ini 10388 2008-07-21 04:01:50Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BNR_CLIENT_NAME=Heu de seleccionar un nom per al client.
+BNR_CONTACT=Heu de seleccionar un contacte per al client.
+BNR_VALID_EMAIL=Heu de seleccionar una adreça electrònica vàlida per al client.
+BNR_CLIENT=Heu de seleccionar un client,
+BNR_NAME=Heu de seleccionar un nom per al bàner.
+BNR_IMAGE=Heu de seleccionar una imatge per al bàner.
+BNR_URL=Heu de seleccionar un URL/codi de bàner personalitzat per al bàner.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_contact.ini 12/language/ca-ES/ca-ES.com_contact.ini
--- 11/language/ca-ES/ca-ES.com_contact.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_contact.ini	2009-03-13 23:24:52.000000000 +0100
@@ -0,0 +1,46 @@
+# $Id: ca-ES.com_contact.ini 11624 2009-03-13 23:25:04Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADDRESS=Adreça
+ALL=tot
+CONTACT_FORM_NC=Si us plau assegureu-vos que el formulari és complet i vàlid.
+CONTACTS=Contactes
+CLOAKING=Aquesta adreça electrònica s'està protegint contra robots de correu brossa. Necessiteu que el JavaScript estigui habilitat per a mostrar-la.
+CONTACT=Contacte
+COPY_TEXT=Això és una còpia del següent missatge que heu enviat a %s via %s
+COPY OF:=Còpia de:
+DISPLAY NUM=Mostra'n
+DOWNLOAD INFORMATION AS A=Descarrega la informació com a
+EMAIL=Correu electrònic
+EMAIL ADDRESS=Adreça electrònica
+EMAIL_A_COPY=Envia una còpia d'aquest missatge a la vostra adreça.
+ENQUIRY=Petició d'informació
+ENQUIRY_TEXT=Aquest és un correu electrònic de petició d'informació via %s de:
+ENTER YOUR MESSAGE=Introduïu el missatge
+ENTER YOUR NAME=Introduïu el nom
+FAX=Fax
+INFORMATION=Informació
+MAILENQUIRY=%s Petició d'informació
+MESGHASBANNEDTEXT=El %s del correu electrònic conté text bandejat.
+MESSAGE=Missatge
+MESSAGE SUBJECT=Assumpte del missatge
+MOBILE=Número de telèfon mòbil
+NAME=Nom
+POSITION=Càrrec
+PHONE=Telèfon
+SELECT CONTACT=Seleccioneu el contacte
+SEND=Envia
+SUBJECT=Assumpte
+SUBURB=Població
+TELEPHONE=Telèfon
+THANK_MESSAGE=Gràcies pel correu electrònic.
+THANK YOU FOR YOUR E-MAIL=Gràcies pel correu electrònic.
+THE CONTACT LIST FOR THIS WEBSITE.=La llista de contactes per a aquest lloc web.
+THERE ARE NO CONTACT DETAILS LISTED.=No hi ha detalls de contacte llistats.
+VCARD=Targeta de presentació electrònica
+YOU CANNOT ENTER MORE THAN ONE EMAIL ADDRESS=No podeu introduir més d'una adreça electrònica.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_content.ini 12/language/ca-ES/ca-ES.com_content.ini
--- 11/language/ca-ES/ca-ES.com_content.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_content.ini	2009-03-13 23:26:08.000000000 +0100
@@ -0,0 +1,118 @@
+# $Id: ca-ES.com_content.ini 11654 2009-03-13 23:26:36Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ACCESS LEVEL=Nivell d'accés
+ADD=Afegeix
+ALIGN=Alinea
+ALT TEXT=Text alternatiu
+ALREADY EXISTS=Ja existeix
+ALTERNATIVE READ MORE TEXT=Llegiu-ne més alternatiu:
+PARAMALTREADMORE=Introduïu el text que voleu que es mostri a l'enllaç <em>Llegiu-ne més:</em>. Es mostrarà en comptes d'utilitzar el títol de l'article.
+ARCHIVES=Arxius
+ARTICLES BEING MOVED=Articles que es mouen:
+ARTICLES BEING COPIED=Articles que es copien:
+ARTICLE CATEGORY NOT PUBLISHED=La categoria de l'article no està publicada
+ARTICLE MUST HAVE A TITLE=L'article ha de tenir un títol
+ARTICLE MUST HAVE SOME TEXT=L'article ha de tenir text
+ARTICLE SECTION NOT PUBLISHED=La secció de l'article no està publicada
+ARTICLE # NOT FOUND=No s'ha trobat l'article #%d
+ARTICLE RATING=Valoració de l'article
+AUTHOR=Autor
+AUTHOR ALIAS=Àlies de l'autor
+AUTHOR FILTER=Filtra per autor
+BORDER=Contorn
+BOTTOM=Part inferior
+CAPTION=Llegenda
+CONTENT=Contingut
+CREATED=Creat
+DATE=Data
+DESCNEWITEMSFIRST=Un article nou va per defecte a la primera posició. L'ordre es pot canviar després de desar l'article.
+DESCRIPTION=Descripció
+DISPLAY NUM=Mostra'n
+DOWN=Avall
+EDIT IMAGE=Edita la imatge
+EDIT ITEM=Edita l'article
+EDITOR=Editor
+EMAIL=Correu electrònic
+EMAIL_MSG=La següent pàgina del lloc web "%s" us ha estat enviada per %s ( %s ).\n\nPodeu accedir-hi pel següent URL:\n %s
+EMAIL_ERR_NOINFO=Heu d'introduir la vostra adreça electrònica vàlida i un correu electrònic vàlid per al destinatari.
+FILTER=Filtre
+FINISH PUBLISHING=Finalitza la publicació
+GREEN=Verd
+HITS=Visites
+HITS FILTER=Filtra per visites
+IMAGES=Imatges
+INFO=Informació
+INSERT=Insereix
+INTRO TEXT=Text d'introducció
+INVALID RATING=Valoració no vàlida
+ITEM=Article
+ITEM SENT BY=Article enviat per %s
+ITEM SUCCESSFULLY SAVED.=L'article s'ha desat amb èxit.
+ITEMS=Articles
+ITEM TITLE=Títol de l'article
+KEY NOT FOUND=No s'ha trobat la clau
+KEYWORDS=Paraules clau
+LAST MODIFIED=Darrera modificació
+MESSAGE SUBJECT=Assumpte del missatge
+METADATA=Metadades
+MORE=Més...
+NEVER=Mai
+NEW ITEM=Nou ítem
+NO IMAGE=Cap imatge
+NO=No
+NUM=#
+ON_NEW_CONTENT=[ %s ] ha enviat un nou article titulat [ %s ]  des de la secció [ %s ]  i la categoria  [ %s ]
+OPTIONAL=Opcional
+ORDER=Ordena
+ORDERING=Ordre
+PAGE=Pàgina
+PDF=PDF
+PGB TOC ALIAS PROMPT=Àlies de la Taula de continguts:
+PGB PAGE TITLE=Títol de la pàgina:
+PGB INS PAGEBRK=Insereix un salt de pàgina
+PGB ARTICLE PAGEBRK=Salt de pàgina d'article
+PLEASE SELECT A CATEGORY=Si us plau seleccioneu una categoria
+PUBLISHED=Publicat
+PUBLISHING=Publicació
+REGISTER TO READ MORE...=Registreu-vos per llegir-ne més...
+READ MORE=Llegiu-ne més: %s
+REGISTERED USERS ONLY=Només per a usuaris registrats
+REQUIRED=Necessari
+REMOVE=Elimina
+SEND EMAIL=Envia el correu electrònic
+SELECT CATEGORY=Seleccioneu una categoria
+SELECT SECTION=Seleccioneu una secció
+SHOW ON FRONT PAGE=Mostra-ho a la portada
+SOURCE=Codi font
+START PUBLISHING=Inicia la publicació
+STATE=Estat
+SUB-FOLDER=Subcarpeta
+SUBMIT AN ARTICLE=Tramet un article
+THANK_SUB=Gràcies per la vostra tramesa. Es revisarà abans que sigui enviada al lloc.
+THANKS FOR RATING!=Gràcies per la valoració!
+THE MODULE=El mòdul
+THIS CATEGORY IS CURRENTLY EMPTY=Aquesta categoria és buida en aquests moments.
+THIS ITEM HAS BEEN SENT TO=Aquest article fou enviat a
+TITLE=Títol
+TITLE ASC=Títol asc.
+TITLE DESC=Títol desc.
+TITLE FILTER=Filtra per títol
+TOP=Part superior
+UNABLE TO LOAD DATA=No es poden carregar les dades.
+UNCATEGORIZED=No categoritzat
+UP=Amunt
+VERSION=Versió
+VIEW ALL=Mostra'ls tots
+WARNUSER=Si us plau o bé cancel·leu o bé deseu el canvi actual.
+WRITTEN BY=Escrit per %s
+YES=Sí
+YOU ALREADY RATED THIS ARTICLE TODAY!=Ja heu valorat aquest article avui!
+YOUR EMAIL=El vostre correu electrònic
+YOUR FRIENDS EMAIL=El correu electrònic del vostre amic
+YOUR NAME=El vostre nom
diff -aruN --binary 11/language/ca-ES/ca-ES.com_frontpage.ini 12/language/ca-ES/ca-ES.com_frontpage.ini
--- 11/language/ca-ES/ca-ES.com_frontpage.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_frontpage.ini	2008-12-31 20:26:54.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.com_frontpage.ini 10498 2008-07-21 04:33:09Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+EMPTY_BLOG=No hi ha articles per a mostrar.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_mailto.ini 12/language/ca-ES/ca-ES.com_mailto.ini
--- 11/language/ca-ES/ca-ES.com_mailto.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_mailto.ini	2009-01-10 20:06:44.000000000 +0100
@@ -0,0 +1,22 @@
+# $Id: ca-ES.com_mailto.ini 11391 2009-01-10 20:05:22Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+EMAIL_ERR_NOINFO=Si us plau proporcioneu una adreça electrònica vàlida.
+EMAIL_INVALID=L'adreça '%s' no sembla ser una adreça electrònica vàlida.
+EMAIL_THIS_LINK_TO_A_FRIEND=Envia per correu electrònic aquest enllaç a un amic.
+EMAIL_TO=Envia per correu electrònic a
+SENDER=Remitent
+YOUR_EMAIL=El vostre correu electrònic
+SUBJECT=Assumpte
+SEND=Envia
+CANCEL=Cancel·la
+EMAIL_SENT=El correu electrònic s'ha enviat amb èxit.
+EMAIL_NOT_SENT=No s'ha pogut enviar el correu electrònic.
+EMAIL_MSG=Això és un correu electrònic de (%s) enviat per %s (%s). Podeu trobar també interessant l'enllaç següent: %s
+CLOSE_WINDOW=Tanca la finestra
+ITEM SENT BY=Element enviat per
diff -aruN --binary 11/language/ca-ES/ca-ES.com_media.ini 12/language/ca-ES/ca-ES.com_media.ini
--- 11/language/ca-ES/ca-ES.com_media.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_media.ini	2008-12-31 20:27:50.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.com_media.ini 10388 2008-07-21 04:42:56Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ERROR. UNABLE TO UPLOAD FILE=S'ha produït un error. No s'ha pogut penjar el fitxer.
+BROWSE=Explora
+BROWSE FILES=Explora fitxers
+CLEAR COMPLETED=Neteja completada
+REMOVE FROM QUEUE=Elimina de la cua
diff -aruN --binary 11/language/ca-ES/ca-ES.com_messages.ini 12/language/ca-ES/ca-ES.com_messages.ini
--- 11/language/ca-ES/ca-ES.com_messages.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_messages.ini	2008-12-31 20:28:22.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.com_messages.ini 10498 2008-07-21 04:47:58Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A NEW PRIVATE MESSAGE HAS ARRIVED=Ha arribat un nou missatge privat de %s.
+MESSAGE_FAILED=Ha fallat el missatge. L'usuari ha bloquejat la seva bústia.
+PLEASE LOGIN TO READ YOUR MESSAGE=Inicieu sessió a %s per a llegir el missatge.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_newsfeeds.ini 12/language/ca-ES/ca-ES.com_newsfeeds.ini
--- 11/language/ca-ES/ca-ES.com_newsfeeds.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_newsfeeds.ini	2008-12-31 20:28:46.000000000 +0100
@@ -0,0 +1,15 @@
+# $Id: ca-ES.com_newsfeeds.ini 10498 2008-07-21 04:49:52Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+NEWS_FEEDS=Canals d'informació
+DISPLAY NUM=Mostra'n
+ERROR: FEED NOT RETRIEVED=S'ha produït un error. No s'ha recuperat el canal.
+FEED LINK=Enllaç del canal
+FEED NAME=Nom del canal
+NUM ARTICLES=Nombre d'articles
+NEWS FEEDS=Canals d'informació
diff -aruN --binary 11/language/ca-ES/ca-ES.com_poll.ini 12/language/ca-ES/ca-ES.com_poll.ini
--- 11/language/ca-ES/ca-ES.com_poll.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_poll.ini	2008-12-31 20:29:12.000000000 +0100
@@ -0,0 +1,21 @@
+# $Id: ca-ES.com_poll.ini 10498 2008-07-21 04:52:43Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CONTINUE=Continua
+COOKIES MUST BE ENABLED!=Les galetes han de estar habilitades!
+FIRST VOTE=Primer vot
+LAST VOTE=Darrer vot
+NUMBER OF VOTERS=Nombre de votants
+SELECT POLL=Seleccioneu una enquesta
+SELECT POLL FROM THE LIST=Seleccioneu una enquesta de la llista
+THANKS FOR YOUR VOTE!=Gràcies per votar!
+THERE ARE NO RESULTS FOR THIS POLL.=Encara no hi ha resultats per a aquesta enquesta.
+WARNSELECT=No s'ha seleccionat res. Si us plau torneu-ho a provar.
+YOU ALREADY VOTED FOR THIS POLL TODAY!=Avui ja heu votat per a aquesta enquesta!
+YOUR POLL MUST CONTAIN A TITLE.=L'enquesta ha de tenir un títol.
+YOUR POLL MUST HAVE A NON-ZERO LAG TIME.=L'enquesta ha de tenir un retard diferent de zero.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_search.ini 12/language/ca-ES/ca-ES.com_search.ini
--- 11/language/ca-ES/ca-ES.com_search.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_search.ini	2008-12-31 20:29:38.000000000 +0100
@@ -0,0 +1,30 @@
+# $Id: ca-ES.com_search.ini 10498 2008-07-21 04:56:00Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALL WORDS=Totes les paraules
+ALPHABETICAL=Alfabètic
+ANY WORDS=Qualsevol paraula
+DISPLAY NUM=Mostra'n
+EXACT PHRASE=Frase exacta
+IGNOREKEYWORD=S'han ignorat una o més paraules comunes a la cerca.
+MOST POPULAR=Els més populars
+NEWEST FIRST=Els més nous primer
+NO RESULTS WERE FOUND=No s'han trobat resultats.
+OLDEST FIRST=Els més antics primer
+ORDERING=Ordre
+SEARCH=Cerca
+SEARCH KEYWORD=Cerca paraula clau
+SEARCH_MESSAGE=El terme de cerca ha de tenir un mínim de 3 caràcters i un màxim de 20 caràcters.
+SEARCH ONLY=Cerca només
+SECTION/CATEGORY=Secció/Categoria
+TOTALRESULTSFOUND=Total: s'han trobat %s resultats.
+WITH=amb
+SEARCH_AGAIN=Cerca de nou
+SEARCH_RESULT=Resultats de la cerca
+UNCATEGORISED CONTENT=Contingut no categoritzat
+SEARCH PARAMETERS=Paràmetres de la cerca
diff -aruN --binary 11/language/ca-ES/ca-ES.com_user.ini 12/language/ca-ES/ca-ES.com_user.ini
--- 11/language/ca-ES/ca-ES.com_user.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_user.ini	2009-03-13 23:28:18.000000000 +0100
@@ -0,0 +1,147 @@
+# $Id: ca-ES.com_user.ini 11623 2009-03-13 23:28:38Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ACCOUNT DETAILS FOR=Detalls del compte de %s a %s
+BACK-END LANGUAGE=Idioma de l'Administració:
+BUTTON_LOGIN=Connexió
+BUTTON_LOGOUT=Finalitza la sessió
+CHECKED IN=Verificat
+CHECKING TABLE=Verificant la taula
+CONF_CHECKED_IN=Tots els ítems no verificats han estat ara verificats.
+CONFIRM YOUR ACCOUNT=Confirmeu el vostre compte.
+COULD_NOT_FIND_EMAIL=no s'ha pogut trobar un usuari amb l'adreça electrònica indicada.
+COULD_NOT_FIND_USER=no s'ha pogut trobar un usuari amb el nom d'usuari i l'adreça electrònica indicats.
+EDIT YOUR DETAILS=Editeu els detalls
+DATABASE_ERROR=s'ha produït un error de base de dades. Si us plau torneu-ho a provar més tard.
+DESCLOGINFORM=Aquest mòdul mostra un formulari d'inici de sessió amb nom d'usuari i contrasenya. També mostra un enllaç per a recuperar una contrasenya oblidada. Si el registre d'usuaris està habilitat (mireu-ho a la Configuració Global), es mostrarà un altre enllaç per a convidar els usuaris a registrar-se.
+EMAIL=Correu electrònic
+EMAIL ADDRESS=Adreça electrònica
+ERROR_SENDING_CONFIRMATION_EMAIL=s'ha trobat un error en enviar el correu electrònic de confirmació.
+ERROR_SENDING_REMINDER_EMAIL=s'ha trobat un error en enviar el correu electrònic recordatori de nom d'usuari.
+E_SESSION_TIMEOUT=La vostra sessió pot haver vençut. Si us plau torneu-ho a provar.
+FAILED TO COPY=La còpia ha fallat.
+FAX=Fax
+FORGOT_YOUR_PASSWORD=Heu oblidat la contrasenya?
+FORGOT_YOUR_USERNAME=Heu oblidat el nom d'usuari?
+FRONT-END LANGUAGE=Idioma de la portada:
+GREETING=Salutació
+HELP SITE=Lloc d'ajuda:
+HELP SITE FOR THIS USER=Lloc d'ajuda per a aquest usuari
+HINAME=Hola %s,
+IMAGE=Imatge
+ITEMS=Ítems
+INVALID_EMAIL_ADDRESS=l'adreça electrònica no ha sigut vàlida.
+INVALID_TOKEN=el símbol no ha sigut vàlid.
+JAUTHENTICATION::__CONSTRUCT: COULD NOT LOAD AUTHENTICATION LIBRARIES.=JAuthentication::__construct: No s'han pogut carregar les llibreries d'autenticació.
+LOGIN=Connexió
+LOGOUT=Finalitza la sessió
+LOGIN MESSAGE=Missatge de l'inici de sessió
+LOGIN REDIRECTION URL=Pàgina de redirecció de l'inici de sessió
+LOGOUT MESSAGE=Missatge del final de sessió
+LOGOUT REDIRECTION URL=Pàgina de redirecció del final de sessió
+LOGIN_DESCRIPTION=Per a accedir a l'àrea privada d'aquest lloc, si us plau inicieu la sessió.
+LOGOUT_DESCRIPTION=En aquests moments us trobeu connectats a l'àrea privada d'aquest lloc.
+MOD_LOGIN=<em>mod_login</em>
+NAME=Nom
+NAME/USERNAME=Nom/Nom d'usuari
+NEWPASS_MAIL_MSG=El compte d'usuari %s %s %s %s %s %s
+NEWPASS_MSG1=hi té associat aquest correu electrònic.\n Un usuari web de
+NEWPASS_MSG2=ha demanat que se li enviï una nova contrasenya.\n\nLa nova contrasenya és:
+NEWPASS_MSG3=Si no heu demanat això, no us preocupeu. Sou només vós que veieu aquest missatge, no ells. Si ha sigut un error simplement inicieu sessió amb la nova contrasenya i canvieu-la per la que vulgueu que sigui.
+NEW PASSWORD FOR=%s :: Nova contrasenya per a - %s
+NEW USER PASSWORD CREATED AND SENT!=S'ha creat i enviat la nova contrasenya d'usuari!
+NO ACCOUNT YET?=Encara no teniu cap compte?
+NOTICE=Avís
+PARAMPOSTTEXT=Aquest és el text o l'HTML que es mostra sota el formulari d'inici de sessió.
+PARAMPRETEXT=Aquest és el text o l'HTML que es mostra sobre el formulari d'inici de sessió.
+PARAMLOGINREDIRECTURL=Seleccioneu la pàgina a la qual es redirigirà l'usuari després d'un inici de sessió amb èxit. Seleccioneu-ne una de totes les pàgines llistades al desplegable. Si no feu cap selecció, per defecte es carregarà la portada.
+PARAMLOGOUTREDIRECTURL=Seleccioneu la pàgina a la qual es redirigirà l'usuari després d'un final de sessió amb èxit. Seleccioneu-ne una de totes les pàgines llistades al desplegable. Si no feu cap selecció, per defecte es carregarà la portada.
+PARAMLOGINMESSAGE=Mostra/Amaga la finestra emergent JavaScript que indica un inici de sessió amb èxit
+PARAMLOGOUTMESSAGE=Mostra/Amaga la finestra emergent JavaScript que indica un final de sessió amb èxit
+PASSWORD=Contrasenya
+PASSWORD_RESET_CONFIRMATION_EMAIL_TEXT=Hola,\n\ns'ha fet una petició per a reinicialitzar la contrasenya del vostre compte %s.  Per a reinicialitzar la contrasenya, necessiteu enviar aquest codi per tal de verificar que la petició és legítima.\n\nEl codi és %s .\n\nFeu clic a l'URL de sota per a introduir el codi i procedir a la reinicialització de la contrasenya.\n\n%s\n\nGràcies.
+PASSWORD_RESET_CONFIRMATION_EMAIL_TITLE=La vostra %s petició de reinicialització de contrasenya
+PASSWORD_RESET_CONFIRMATION_FAILED=La confirmació de reinicialització de contrasenya ha fallat perquè %s.
+PASSWORD_RESET_FAILED=La reinicialització de contrasenya ha fallat perquè %s.
+PASSWORD_RESET_REQUEST_FAILED=La petició de reinicialització de contrasenya ha fallat perquè %s.
+PASSWORD_RESET_SUCCESS=S'ha reinicialitzat la vostra contrasenya.
+PASSWORDS_DO_NOT_MATCH=Les contrasenyes no coincideixen.
+PASSWORDS_DO_NOT_MATCH_LOW=les contrasenyes no coincideixen
+PLEASE ENTER A VALID E-MAIL ADDRESS.=Si us plau introduïu una adreça electrònica vàlida.
+PLEASE VERIFY THE PASSWORD.=Si us plau verifiqueu la contrasenya.
+POST-TEXT=Text posterior
+PRE-TEXT=Text anterior
+REGERROR=Error de registre
+REGISTER=Registra
+REGISTERED AREA=Àrea per a registrats
+REGISTRATION=Registreu-vos
+REGISTER_REQUIRED=Els camps marcats amb un asterisc (*) són necessaris.
+REG_ACTIVATE_COMPLETE_TITLE=S'ha completat l'activació!
+REG_ACTIVATE_COMPLETE=El vostre compte s'ha activat amb èxit. Ara podeu iniciar sessió utilitzant el nom d'usuari i la contrasenya que triàreu durant el registre.
+REG_ACTIVATE_NOT_FOUND_TITLE=L'enllaç d'activació no és vàlid!
+REG_ACTIVATE_NOT_FOUND=No hi ha tal compte a la base de dades o bé el compte ja s'ha activat.
+REG_COMPLETE_TITLE=S'ha completat el registre!
+REG_COMPLETE=Podeu ara iniciar sessió.
+REG_COMPLETE_ACTIVATE_TITLE=Heu completat el registre!
+REG_COMPLETE_ACTIVATE=El vostre compte s'ha creat i s'ha enviat un correu electrònic amb l'enllaç d'activació a l'adreça electrònica que heu introduït. Observeu que heu d'activar el compte fent clic a l'enllaç d'activació quan obtingueu el correu electrònic abans de poder iniciar sessió.
+REMEMBER ME=Recorda'm
+REMIND_USERNAME_DESCRIPTION=Si us plau introduïu l'adreça electrònica associada al vostre compte d'usuari. S'enviarà per correu electrònic el vostre nom d'usuari a l'adreça.
+REMIND_USERNAME_EMAIL_TIP_TITLE=Adreça electrònica
+REMIND_USERNAME_EMAIL_TIP_TEXT=Si us plau introduïu l'adreça electrònica associada al vostre compte.
+RESEND USERNAME FOR=Reenvia el nom d'usuari per a %s
+RESEND_MAIL_MSG=El compte d'usuari %s %s %s %s %s
+RESEND_MSG1=hi té associat aquest correu electrònic.\n Un usuari web de
+RESEND_MSG2=ha demanat que se li reenviï el nom d'usuari.
+RESEND_MSG3=Si no sou vós que heu demanat això, no us preocupeu. Sou vós que veieu aquest missatge, no ells.
+RESET_PASSWORD_COMPLETE_DESCRIPTION=Per a acabar el procés de reinicialització de contrasenya, introduïu la nova contrasenya.
+RESET_PASSWORD_CONFIRM_DESCRIPTION=S'ha enviat un correu electrònic a la vostra adreça. El correu conté un codi de verificació, si us plau enganxeu aquest codi al camp de sota per a provar que sou el propietari d'aquest compte.
+RESET_PASSWORD_EMAIL_TIP_TEXT=Si us plau introduïu l'adreça electrònica per al vostre compte.
+RESET_PASSWORD_EMAIL_TIP_TITLE=Adreça electrònica
+RESET_PASSWORD_PASSWORD1_TIP_TEXT=Si us plau introduïu una nova contrasenya per al vostre compte.
+RESET_PASSWORD_PASSWORD1_TIP_TITLE=Contrasenya
+RESET_PASSWORD_PASSWORD2_TIP_TEXT=Si us plau torneu a introduir la contrasenya.
+RESET_PASSWORD_PASSWORD2_TIP_TITLE=Comprova la contrasenya
+RESET_PASSWORD_REQUEST_DESCRIPTION=Si us plau introduïu l'adreça electrònica per al vostre compte. Se us enviarà un codi de verificació. Una vegada l'hagueu rebut, podreu triar una nova contrasenya per al vostre compte.
+RESET_PASSWORD_TOKEN_TIP_TEXT=Si us plau introduïu el codi que s'ha enviat a la vostra adreça electrònica.
+RESET_PASSWORD_TOKEN_TIP_TITLE=Codi
+RESET_PASSWORD_USERNAME_TIP_TEXT=Si us plau introduïu el nom d'usuari per al vostre compte.
+RESET_PASSWORD_USERNAME_TIP_TITLE=Nom d'usuari
+RESET YOUR PASSWORD=Reinicialitza la contrasenya
+SELECT A USER TO DELETE=Seleccioneu un usuari a eliminar
+SEND=Envia
+SEND_MSG=Hola %s,\n\nGràcies per registrar-vos a %s.\n\nAra podeu iniciar sessió a %s utilitzant el nom d'usuari i la contrasenya amb què us heu registrat.
+SEND_MSG_ACTIVATE=Hola %s,\n\nGràcies per registrar-vos a %s. S'ha creat el compte i aquest s'ha d'activar abans que pugueu utilitzar-lo.\nPer a activar el compte feu clic al següent enllaç o copieu-lo i enganxeu-lo al vostre navegador:\n%s\n\nDesprés de l'activació podreu iniciar sessió a %s utilitzant el següent nom d'usuari i contrasenya:\n\nNom d'usuari: %s\nContrasenya: %s
+SEND_MSG_ADMIN=Hola %s,\n\nUn nou usuari s'ha registrat a %s.\nAquest correu electrònic conté els seus detalls:\n\nNom: %s\nCorreu electrònic: %s\nNom d'usuari: %s\n\nSi us plau no respongueu a aquest missatge. S'ha generat automàticament i només té el propòsit d'informar.
+SEND REGISTRATION=Envia el registre
+SHOW/HIDE THE SIMPLE GREETING TEXT=Mostra/Amaga el text simple de salutació
+SORRY, NO CORRESPONDING USER WAS FOUND=No s'ha trobat cap usuari que correspongui.
+SUBMISSION SUCCESS!=Tramesa correcta!
+SUBMIT=Tramet
+SUBMIT_SUCCESS_DESC=L'ítem s'ha tramès amb èxit als administradors. Serà revisat abans de publicar-lo al lloc.
+TIME ZONE FOR THIS USER=Zona horària per a aquest usuari
+TOKEN=Codi
+UNABLE TO FIND A USER WITH GIVEN ACTIVATION STRING=El sistema no pot trobar un usuari amb la cadena d'activació donada. Potser que el compte ja es trobi activat o bé que el codi d'activació hagi vençut. Si ha vençut necessiteu tornar a registrar-vos al lloc.
+UPDATE=Actualitza
+UP_EXISTS=La imatge $Userfile_name ja existeix. Si us plau canvieu el nom al fitxer i torneu-ho a provar.
+UP_SIZE=No podeu penjar fitxers més grans que 15kb de mida.
+USERNAME RESENT=S'ha reenviat el nom d'usuari
+USERNAME_REMINDER_EMAIL_TEXT=Hola,\n\nS'ha demanat un recordatori del nom d'usuari per al vostre %s compte.\n\nEl vostre nom d'usuari és %s.\n\nPer a connectar al vostre compte, feu clic a l'enllaç de sota.\n\n%s\n\nGràcies.
+USERNAME_REMINDER_EMAIL_TITLE=El vostre %s nom d'usuari
+USERNAME_REMINDER_FAILED=El recordatori del vostre nom d'usuari ha fallat perquè %s.
+USERNAME_REMINDER_SUCCESS=S'ha enviat el vostre nom d'usuari a %s.
+USER EDITOR=Editor de l'usuari:
+USER NAME=Nom d'usuari
+USER UNKNOWN=Usuari desconegut
+VERIFY PASSWORD=Verifica la contrasenya
+WARNJAVASCRIPT=Avís! El JavaScript ha d'estar habilitat per a un funcionament correcte.
+WELCOME!=Benvingut!
+WELCOME_DESC=Benvingut a l'àrea per a usuaris registrats del lloc.
+YOU MAY ONLY UPLOAD A GIF, OR JPG IMAGE.=Només podeu penjar una imatge .gif o .jpg.
+YOUR NAME=El vostre nom
+YOUR SETTINGS HAVE BEEN SAVED.=S'ha desat la vostra configuració.
+YOU ARE ALREADY REGISTERED.=Ja esteu registrat.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_weblinks.ini 12/language/ca-ES/ca-ES.com_weblinks.ini
--- 11/language/ca-ES/ca-ES.com_weblinks.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_weblinks.ini	2008-12-31 20:30:28.000000000 +0100
@@ -0,0 +1,32 @@
+# $Id: ca-ES.com_weblinks.ini 10498 2008-07-21 06:08:25Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALL=Tots
+CLICK TO SORT THIS COLUMN=Feu clic per a ordenar per aquesta columna.
+DESCNEWITEMSLAST=Els nous enllaços web van per defecte a la primera posició. L'ordre es pot canviar després de desar l'enllaç.
+DESCRIPTION=Descripció
+DISPLAY NUM=Mostra'n
+ERROR SAVING WEBLINK=S'ha produït un error en desar l'enllaç web.
+HITS=Visites
+LINKS=Enllaços
+NAME=Nom
+NO=No
+NUM=#
+ORDERING=Ordre
+PLEASE PROVIDE A VALID URL=Si us plau proporcioneu un URL vàlid.
+SUBMIT A WEB LINK=Trameteu un enllaç web
+THANK_SUB=Gràcies per la vostra tramesa. Es revisarà abans de ser enviada al lloc.
+URL=URL
+WEB LINK=Enllaç web
+WEBLINK ITEM MUST HAVE A TITLE=L'ítem d'enllaç web ha de tenir un títol.
+WEBLINKS_DESC=Estem regularment explorant el web. Quan trobem un bon lloc el llistem.
+WEBLINK SAVED=S'ha desat l'enllaç web
+YES=Sí
+YOU MUST HAVE A URL.=Heu d'introduir un URL.
+YOU MUST SELECT A CATEGORY.=Heu de seleccionar una categoria.
+YOUR WEBLINK MUST CONTAIN A TITLE.=L'enllaç web ha de contenir un títol.
diff -aruN --binary 11/language/ca-ES/ca-ES.com_wrapper.ini 12/language/ca-ES/ca-ES.com_wrapper.ini
--- 11/language/ca-ES/ca-ES.com_wrapper.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.com_wrapper.ini	2008-12-31 20:31:02.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.com_wrapper.ini 10498 2008-07-21 06:10:57Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+NO_IFRAMES=Aquesta opció no funcionarà correctament. Desgraciadament el vostre navegador no soporta els marcs en línia (iframes).
diff -aruN --binary 11/language/ca-ES/ca-ES.date.php 12/language/ca-ES/ca-ES.date.php
--- 11/language/ca-ES/ca-ES.date.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.date.php	2009-04-13 00:58:06.000000000 +0200
@@ -0,0 +1,56 @@
+<?php
+/**
+* @version	$Id: ca-ES.date.php 2008-11-11 dverger $
+* @package	Catalan Language Pack
+* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+* @license	http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+*/
+
+// Check to ensure this file is within the rest of the framework
+defined('JPATH_BASE') or die();
+
+/**
+ * JDateca_ES overrides JDate class
+ *
+ * @author	Damià Verger <dverger@joomla.cat>
+ *
+ * @package	Catalan Language Pack
+ * @since	1.5.8
+ */
+
+class JDateca_ES extends JDate
+{
+	/**
+	 * Gets the date in a specific format
+	 *
+	 * @access protected
+	 * @param string $format The date format specification string (see {@link PHP_MANUAL#strftime})
+	 * @param int $time Unix timestamp
+	 * @return string a date in a specific format
+	 */
+	function _strftime($format, $time) 
+	{
+		if (date('n',$time) == 4 || date('n',$time) == 8 || date('n',$time) == 10) // abril, agost o octubre
+		{
+			if(strpos($format, 'de %B') !== false)
+				$format = str_replace('de %B','d\'%B',$format);
+			if(strpos($format, 'de %b') !== false)
+				$format = str_replace('de %b','d\'%b',$format);
+		}
+
+		if(strpos($format, '%a') !== false)
+			$format = str_replace('%a', $this->_dayToString(date('w', $time), true), $format);
+		if(strpos($format, '%A') !== false) 
+			$format = str_replace('%A', $this->_dayToString(date('w', $time)), $format);
+		if(strpos($format, '%b') !== false)
+			$format = str_replace('%b', $this->_monthToString(date('n', $time), true), $format);
+		if(strpos($format, '%B') !== false)
+			$format = str_replace('%B', $this->_monthToString(date('n', $time)), $format);
+
+		if(strpos($format, '%e') !== false)
+			$format = str_replace('%e', date('j', $time), $format);
+	
+		$date = strftime($format, $time);
+		return $date;
+	}
+}
diff -aruN --binary 11/language/ca-ES/ca-ES.ignore.php 12/language/ca-ES/ca-ES.ignore.php
--- 11/language/ca-ES/ca-ES.ignore.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.ignore.php	2008-12-31 20:34:24.000000000 +0100
@@ -0,0 +1,23 @@
+<?php
+/**
+* @version		$Id: ca-ES.ignore.php 2008-03-17Z dverger $
+* @package		Joomla
+* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+* @translation_author	Catalan Joomla Translation Team
+* @translation_copyright  Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+* @license		GNU/GPL, see LICENSE.php
+* Joomla! is free software. This version may have been modified pursuant
+* to the GNU General Public License, and as distributed it includes or
+* is derivative of works licensed under the GNU General Public License or
+* other free or open source software licenses.
+* See COPYRIGHT.php for copyright notices and details.
+*/
+
+$search_ignore[] = "i";
+$search_ignore[] = "a";
+$search_ignore[] = "al";
+$search_ignore[] = "als";
+$search_ignore[] = "de";
+$search_ignore[] = "dels";
+$search_ignore[] = "en";
+?>
diff -aruN --binary 11/language/ca-ES/ca-ES.ini 12/language/ca-ES/ca-ES.ini
--- 11/language/ca-ES/ca-ES.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.ini	2009-01-10 20:11:32.000000000 +0100
@@ -0,0 +1,328 @@
+# $Id: ca-ES.ini 11391 2009-01-10 20:11:35Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+
+DATE_FORMAT_LC=%A, %e de %B de %Y
+DATE_FORMAT_LC1=%A, %e de %B de %Y
+DATE_FORMAT_LC2=%A, %e de %B de %Y %H:%M
+DATE_FORMAT_LC3=%e de %B de %Y
+DATE_FORMAT_LC4=%d.%m.%y
+DATE_FORMAT_JS1=y-m-d
+%Y-%M-%D=%Y-%M-%D
+%A, %B %E=%A, %e de %B
+
+# Months
+
+JANUARY_SHORT=gen.
+JANUARY=gener
+FEBRUARY_SHORT=febr.
+FEBRUARY=febrer
+MARCH_SHORT=març
+MARCH=març
+APRIL_SHORT=abr.
+APRIL=abril
+MAY_SHORT=maig
+MAY=maig
+JUNE_SHORT=juny
+JUNE=juny
+JULY_SHORT=jul.
+JULY=juliol
+AUGUST_SHORT=ag.
+AUGUST=agost
+SEPTEMBER_SHORT=set.
+SEPTEMBER=setembre
+OCTOBER_SHORT=oct.
+OCTOBER=octubre
+NOVEMBER_SHORT=nov.
+NOVEMBER=novembre
+DECEMBER_SHORT=des.
+DECEMBER=desembre
+
+#Days of the Week
+SAT=ds.
+SATURDAY=dissabte
+SUN=dg.
+SUNDAY=diumenge
+MON=dl.
+MONDAY=dilluns
+TUE=dm.
+TUESDAY=dimarts
+WED=dc.
+WEDNESDAY=dimecres
+THU=dj.
+THURSDAY=dijous
+FRI=dv.
+FRIDAY=divendres
+#Other Calendar
+(TODAY)=(Avui)
+(SHIFT-)CLICK OR DRAG TO CHANGE VALUE=Feu (Majúscules-)clic o arrossegueu per a canviar el valor.
+ABOUT THE CALENDAR=Quant al calendari
+DISPLAY %S FIRST=Mostra %s primer
+DRAG TO MOVE=Arrossegueu per a moure
+GO TODAY=Vés a avui
+NEXT MONTH (HOLD FOR MENU)=Feu clic per a anar al mes següent. Feu clic i manteniu per a veure una llista dels mesos.
+NEXT YEAR (HOLD FOR MENU)=Feu clic per a anar a l'any següent. Feu clic i manteniu per a veure una llista dels anys.
+PREV. MONTH (HOLD FOR MENU)=Feu clic per a anar al mes anterior. Feu clic i manteniu per a veure una llista dels mesos.
+PREV. YEAR (HOLD FOR MENU)=Feu clic per a anar a l'any anterior. Feu clic i manteniu per a veure una llista dels anys.
+SELECT DATE=Seleccioneu una data
+TIME=Hora
+TIME:=Hora:
+CLOSE=Tanca
+TODAY=Avui
+WK=setm.
+
+
+# Time Zones
+
+(UTC -12:00) INTERNATIONAL DATE LINE WEST=(UTC -12:00) Línia Internacional de Data Oest
+(UTC -11:00) MIDWAY ISLAND, SAMOA=(UTC -11:00) Illa de Midway, Samoa
+(UTC -10:00) HAWAII=(UTC -10:00) Hawaii
+(UTC -09:30) TAIOHAE, MARQUESAS ISLANDS=(UTC -09:30) Taiohae, Illes Marqueses
+(UTC -09:00) ALASKA=(UTC -09:00) Alaska
+(UTC -08:00) PACIFIC TIME (US &AMP; CANADA)=(UTC -08:00) Hora del Pacífic (EUA i Canadà)
+(UTC -07:00) MOUNTAIN TIME (US &AMP; CANADA)=(UTC -07:00) Hora de les Muntanyes Rocalloses (EUA i Canadà)
+(UTC -06:00) CENTRAL TIME (US &AMP; CANADA), MEXICO CITY=(UTC -06:00) Hora del Centre (EUA i Canadà), Ciutat de Mèxic
+(UTC -05:00) EASTERN TIME (US &AMP; CANADA), BOGOTA, LIMA=(UTC -05:00) Hora de l'Est (EUA i Canadà), Bogotà, Lima
+(UTC -04:30) VENEZUELA=(UTC -04:30) Veneçuela
+(UTC -04:00) ATLANTIC TIME (CANADA), CARACAS, LA PAZ=(UTC -04:00) Hora de l'Atlàntic (Canadà), Caracas, La Paz
+(UTC -03:30) ST. JOHN'S, NEWFOUNDLAND, LABRADOR=(UTC -03:30) St. John's, Terranova i Labrador
+(UTC -03:00) BRAZIL, BUENOS AIRES, GEORGETOWN=(UTC -03:00) Brasil, Buenos Aires, Georgetown
+(UTC -02:00) MID-ATLANTIC=(UTC -02:00) Atlàntic Mitjà
+(UTC -01:00) AZORES, CAPE VERDE ISLANDS=(UTC -01:00) Açores, Illes Cap Verd
+(UTC 00:00) WESTERN EUROPE TIME, LONDON, LISBON, CASABLANCA=(UTC 00:00) Hora d'Europa occidental, Londres, Lisboa, Casablanca
+(UTC +01:00) AMSTERDAM, BERLIN, BRUSSELS, COPENHAGEN, MADRID, PARIS=(UTC +01:00) Amsterdam, Barcelona, Berlín, Brussel·les, Copenhaguen, Madrid, París
+(UTC +02:00) ISTANBUL, JERUSALEM, KALININGRAD, SOUTH AFRICA=(UTC +02:00) Istanbul, Jerusalem, Kaliningrad, Sud-àfrica
+(UTC +03:00) BAGHDAD, RIYADH, MOSCOW, ST. PETERSBURG=(UTC +03:00) Bagdad, Al-Riyad, Moscou, Sant Petersburg
+(UTC +03:30) TEHRAN=(UTC +03:30) Teheran
+(UTC +04:00) ABU DHABI, MUSCAT, BAKU, TBILISI=(UTC +04:00) Abu Zaby, Masqat, Bakú, Tbilisi
+(UTC +04:30) KABUL=(UTC +04:30) Kabul
+(UTC +05:00) EKATERINBURG, ISLAMABAD, KARACHI, TASHKENT=(UTC +05:00) Ekaterinburg, Islamabad, Karachi, Taixkent
+(UTC +05:30) BOMBAY, CALCUTTA, MADRAS, NEW DELHI, COLOMBO=(UTC +05:30) Bombai, Calcuta, Madràs, Nova Delhi, Colombo
+(UTC +05:45) KATHMANDU=(UTC +05:45) Kàtmandu
+(UTC +06:00) ALMATY, DHAKA=(UTC +06:00) Almati, Dhaka
+(UTC +06:30) YAGOON=(UTC +06:30) Yangon
+(UTC +07:00) BANGKOK, HANOI, JAKARTA=(UTC +07:00) Bangkok, Hanoi, Jakarta
+(UTC +08:00) BEIJING, PERTH, SINGAPORE, HONG KONG=(UTC +08:00) Pequín, Perth, Singapur, Hong Kong
+(UTC +08:00) WESTERN AUSTRALIA=(UTC +08:00) Australia Occidental
+(UTC +09:00) TOKYO, SEOUL, OSAKA, SAPPORO, YAKUTSK=(UTC +09:00) Tòquio, Seül, Osaka, Sapporo, Iakutsk
+(UTC +09:30) ADELAIDE, DARWIN, YAKUTSK=(UTC +09:30) Adelaida, Darwin, Iakutsk
+(UTC +10:00) EASTERN AUSTRALIA, GUAM, VLADIVOSTOK=(UTC +10:00) Austràlia oriental, Guam, Vladivostok
+(UTC +10:30) LORD HOWE ISLAND (AUSTRALIA)=(UTC +10:30) Illa Lord Howe (Austràlia)
+(UTC +11:00) MAGADAN, SOLOMON ISLANDS, NEW CALEDONIA=(UTC +11:00) Magadan, Illes Solomó, Nova Caledònia
+(UTC +11:30) NORFOLK ISLAND=(UTC +11:30) Illa de Norfolk
+(UTC +12:00) AUCKLAND, WELLINGTON, FIJI, KAMCHATKA=(UTC +12:00) Auckland, Wellington, Fiji, Kamtxatka
+(UTC +12:45) CHATHAM ISLAND=(UTC +12:45) Illes Chatham
+(UTC +13:00) TONGA=(UTC +13:00) Tonga
+(UTC +14:00) KIRIBATI=(UTC +14:00) Kiribati
+
+# Mailer Codes
+PHPMAILER_PROVIDE_ADDRESS=Heu de proporcionar almenys una adreça electrònica de destinatari.
+PHPMAILER_MAILER_IS_NOT_SUPPORTED=El programa de correu no és suportat.
+PHPMAILER_EXECUTE=No s'ha pogut executar:
+PHPMAILER_INSTANTIATE=No s'ha pogut instanciar la funció de correu.
+PHPMAILER_AUTHENTICATE=S'ha produït un error d'SMTP! No s'ha pogut autenticar.
+PHPMAILER_FROM_FAILED=La següent adreça remitent ha fallat:
+PHPMAILER_RECIPIENTS_FAILED=S'ha produït un error d'SMTP! Els següents destinataris han fallat:
+PHPMAILER_DATA_NOT_ACCEPTED=S'ha produït un error d'SMTP! No s'han acceptat les dades.
+PHPMAILER_CONNECT_HOST=S'ha produït un error d'SMTP! No s'ha pogut connectar a l'amfitrió SMTP.
+PHPMAILER_FILE_ACCESS=No s'ha pogut accedir al fitxer:
+PHPMAILER_FILE_OPEN=No s'ha pogut obrir el fitxer:
+PHPMAILER_ENCODING=Codificació desconeguda:
+
+&LT=&lt;
+&GT=&gt;
+A USER SUBMITTED=Un usuari ha tramès
+ACCESS DENIED=Accés denegat!
+ACCESS FORBIDDEN=Accés prohibit!
+ADMINISTRATOR=administrador
+ALERTNOTAUTH=No esteu autoritzat a visualitzar aquest recurs.
+ALL=Tots
+AN ERROR HAS OCCURED=S'ha produït un error
+AN ERROR HAS OCCURRED WHILE PROCESSING YOUR REQUEST.=S'ha produït un error mentre es processava la vostra sol·licitud.
+AN OUT-OF-DATE BOOKMARK/FAVOURITE=un <strong>enllaç preferit obsolet</strong>
+APPLY=Aplica
+ARCHIVE=Arxiva
+ARCHIVED=Arxivat
+ARE YOU SURE YOU WANT TO DELETE SELECTED ITEMS.=Esteu segur que voleu eliminar els elements seleccionats?
+A SEARCH ENGINE THAT HAS AN OUT-OF-DATE LISTING FOR THIS SITE=un motor de cerca que té una  <strong>llista obsoleta per a aquest lloc</strong>
+A MIS-TYPED ADDRESS=una <strong>adreça mal escrita</strong>
+ATTENTION OPEN IN A NEW WINDOW=Atenció: s'obre en una nova finestra.
+BACK=[ Enrere ]
+BANNER=Bàner
+CACHE DIRECTORY UNWRITABLE=No es pot escriure al directori de memòria cau
+CANCEL=Cancel·la
+CANNOT FIND SOURCE FILE=No es pot trobar el fitxer font
+CATEGORY=Categoria
+CENTER=Centre
+CHECKED OUT=No verificat
+CLICK TO SORT THIS COLUMN=Feu clic per a ordenar per aquesta columna
+CLOAKING=Aquesta adreça electrònica s'està protegint contra robots de correu brossa. Necessiteu que el JavaScript estigui habilitat per a mostrar-la
+CLOSE WINDOW=Tanca la finestra
+COMPONENT NOT FOUND=No s'ha trobat el component
+CONTACT=Contacte
+CONTRIBUTED BY=Contribuït per
+COPY FAILED=La còpia ha fallat
+DELETE=Elimina
+DESCBEINGEDITTED=En aquests moments un altre editor o administrador està editant %s %s
+DESCNEWITEMSFIRST=Els nous ítems van per defecte a la primera posició. L'ordre es pot canviar després de desar l'ítem.
+DESCNEWITEMSLAST=Els nous ítems van per defecte a la darrera posició. L'ordre es pot canviar després de desar l'ítem.
+DIRECTORY UNWRITABLE=No es pot escriure al directori
+E_LOGIN_AUTHENTICATE=El nom d'usuari i la contrasenya no coincideixen o bé encara no teniu un compte.
+E_NOLOGIN_BLOCKED=S'ha denegat l'inici de sessió! O bé el vostre compte ha estat bloquejat o bé encara no l'heu activat. No heu rebut el correu electrònic d'activació i seguit l'enllaç de validació?
+EDIT=edita
+EDIT CSS=Edita els CSS
+EDIT HTML=Edita l'HTML
+END=Final
+ERROR=Error
+ERROR LOADING FEED DATA=S'ha produït un error en carregar dades del canal.
+ERROR LOADING MODULES=S'ha produït un error en carregar els mòduls:
+ERRORXMLSETUP=No s'han trobat fitxers xml a la carpeta d'instal·lació.
+FAILED TO SET LDAP_OPT_REFERRALS OPTION=no s'ha pogut establir l'opció <code>LDAP_OPT_REFERRALS</code>
+FAILED TO SET LDAP PROTOCOL V3=no s'ha pogut establir el <code>Protocol LDAP V3</code>
+FIRST=primer
+GENERATED=Generat
+GO TO THE HOME PAGE=Vés a la pàgina inicial
+HAS BEEN JUST SUBMITTED BY USER=acaba de ser tramès per l'usuari
+HANDLER NOT DEFINED FOR TYPE=El gestor no està definit per al tipus
+HOME=Inici
+HOME PAGE=Pàgina inicial
+ICON_SEP=|
+IF DIFFICULTIES PERSIST, PLEASE CONTACT THE SYSTEM ADMINISTRATOR OF THIS SITE.=Si continuen les dificultats contacteu l'administrador de sistemes d'aquest lloc.
+IMAGE=Imatge
+ITEMS=ítems
+JOOMLA WARNING=<font color="red">Avís del Joomla!</font>
+LAST=darrer
+LAST UPDATED=Darrera actualització
+LAST_UPDATED2=Darrera actualització de %s
+LDAP_START_TLS FAILED=ha fallat l'ldap_start_tls
+LEFT=Esquerra
+LIBRARY=Biblioteca
+LINK IS MISSING=Manca l'enllaç
+LOCAL=Local
+LOGIN=Connexió
+LOGIN_BLOCKED=La vostra connexió ha estat bloquejada. Si us plau contacteu amb l'administrador.
+LOGIN_INCOMPLETE=Si us plau completeu els camps de nom d'usuari i contrasenya.
+LOGIN_INCORRECT=S'ha introduït un nom d'usuari o contrasenya incorrecte.
+LOGIN_SUCCESS=Heu iniciat sessió correctament.
+LOGOUT_SUCCESS=Heu finalitzat la sessió correctament.
+MAIL_FUNCTION_DISABLED=S'ha inhabilitat la funció mail() i no s'ha pogut enviar el correu.
+MAIL_MSG=Si us plau no respongueu a aquest missatge ja que s'ha generat automàticament i només té el propòsit d'informar.
+MAIL_MSG_ADMIN=Hola %s,\n\n\nUn usuari ha enviat %s:\n [ %s ]\nacaba de ser tramès per l'usuari:\n [ %s ]\nper a %s.\n\n\n\nSi us plau aneu a %s/%s per a visualitzar i aprovar aquest %s.
+MESSAGE=Missatge
+METHOD=Mètode
+METHOD NOT FOUND:=No s'ha trobat el mètode:
+MODULE=Mòdul
+MONTH=Mes
+MORE ARTICLES...=Més articles...
+MUST CONTAIN A TITLE=El vostre %s ha de contenir un títol.
+MUST HAVE A NAME=El vostre %s ha de tenir un nom.
+NEW=Nou
+NEW WINDOW WITH BROWSER NAVIGATION=Nova finestra amb funcionalitat de navegació
+NEW WINDOW WITHOUT BROWSER NAVIGATION=Nova finestra sense funcionalitat de navegació
+NEXT=Següent
+NO SORTING=Sense ordre
+NONE=Cap
+NOT AUTHORISED=Sense autorització!
+NOT_EXIST=La pàgina que proveu d'accedir no existeix.<br />Si us plau seleccioneu una pàgina del menú principal.
+NOT FOUND=no s'ha trobat
+NOTICE=Anunci
+NUM=#
+OF=de
+PAGE COULD NOT BE FOUND=No s'ha pogut trobar la pàgina.
+PAGEBREAK=Salt de pàgina
+PATH IS NOT A FOLDER=No és una carpeta el camí:
+PARAMADMINLANGUAGE=Idioma per defecte per al backend d'administrador
+PARAMLANGUAGE=Idioma per defecte per al frontal del lloc
+PASSWORD=Contrasenya
+PAGE=Pàgina
+PARENT WINDOW WITH BROWSER NAVIGATION=Finestra pare amb funcionalitat de navegació
+PLEASE ENTER A USER NAME.=Si us plau introduïu un nom d'usuari:
+PLEASE ENTER A VALID E-MAIL ADDRESS.=Si us plau introduïu una adreça electrònica vàlida:
+PLEASE ENTER YOUR NAME.=Si us plau introduïu el vostre nom:
+PLEASE GO TO=Si us plau aneu a
+#Si la variable no funciona per al vostre idioma empreu la línia següent
+# PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau feu una selecció de la llista
+#en lloc de
+PLEASE MAKE A SELECTION FROM THE LIST TO=Si us plau feu una selecció de la llista per a aplicar l'acció %s
+PLEASE SELECT A NEWS STORY TO=Si us plau seleccioneu una notícia per a aplicar l'acció
+PLEASE SELECT AN ITEM FROM THE LIST TO=Si us plau seleccioneu un ítem de la llista per a aplicar l'acció
+PLEASE TRY ONE OF THE FOLLOWING PAGES:=Si us plau proveu una de les pàgines següents:
+POWERED BY=Funciona amb
+PREV=Anterior
+PREVIEW=Previsualitza
+PRINT=Imprimeix
+PUBLIC=Públic
+PUBLISH=Publica
+PUBLISHED=Publicat
+READMORE=Llegiu-ne més
+READ MORE...=Llegiu-ne més...
+REGISTERED=Registrat
+REMEMBER ME=Recorda'm
+RESOURCE NOT FOUND=No s'ha trobat el recurs
+RESULTS=Resultats
+RESULTS OF=Resultats %s - %s de %s
+RIGHT=Dreta
+SAVE=Desa
+SECTION=Secció
+SELECT A CATEGORY=Seleccioneu una categoria
+SELECT A SECTION=Seleccioneu una secció
+SELECT EDITOR=Seleccioneu un editor
+SELECT LANGUAGE=Seleccioneu un idioma
+SESSION_EXPIRED=La vostra sessió ha vençut. Si us plau torneu-la a iniciar.
+SORT ASCENDING=Ordenament en sentit ascendent
+SORT DESCENDING=Ordenament en sentit descendent
+SPECIAL=Especial
+START=Inicia
+STORE FAILED=Ha fallat l'emmagatzemament
+SUBURB=Població
+TASK=Tasca
+TEMPLATE_WARN=No s'ha trobat el fitxer de plantilla! Se cercava la plantilla: %s
+THE MEMCACHE EXTENSION IS NOT AVAILABLE=L'extensió <abbr title="memòria cau d'objectes">memcache</abbr> no és disponible
+THE APC EXTENSION IS NOT AVAILABLE=L'extensió <abbr title="memòria cau PHP alternativa">APC</abbr> no és disponible
+THE EACCELERATOR EXTENSION IS NOT AVAILABLE=L'extensió  <dfn title="Optimitzador de memòria cau de contingut dinàmic i accelerador PHP lliure i de codi font obert.">eAccelerator</dfn> no és disponible
+THE ITEM=L'article
+THERE ARE NO PARAMETERS FOR THIS ITEM=No hi ha paràmetres per a aquest ítem.
+THE REQUESTED RESOURCE WAS NOT FOUND=No s'ha trobat el recurs sol·licitat.
+TO VIEW AND APPROVE THIS=per a visualitzar i aprovar això
+TIME ZONE=Zona horària
+UNABLE TO ROUTE REQUEST=No es pot encaminar la sol·licitud
+UNABLE TO LOAD DATABASE DRIVER:=No es pot carregar el controlador de la base de dades:
+UNABLE TO CONNECT TO THE DATABASE:=No es pot connectar a la base de dades:
+UNARCHIVE=Recupera de l'arxiu
+UNKNOWN=Desconegut
+UNPUBLISH=Retira
+UNPUBLISHED=Retirat
+UNWRITABLE=No es pot escriure
+UPLOAD IMAGE=Penja una imatge
+USER SUBMITTED=Tramès per un usuari
+USERNAME=Nom d'usuari
+VALID_AZ09=Si us plau introduïu un %s vàlid. Sense espais, amb almenys %d caràcters i que contingui <strong>només</strong> lletres i nombres.
+VIEW ALL=Mostra'ls tots
+VIEW NOT FOUND [NAME, TYPE, PREFIX]:=No s'ha trobat la visualització [nom, tipus, prefix]:
+WARNING=Avís
+WARNINSTALL=Per a la vostra seguretat elimineu completament el directori d'instal·lació incloent tots els fitxers i subcarpetes. Llavors refresqueu aquesta pàgina.
+WARNNAMETRYAGAIN=Ja hi ha un %s amb aquest nom. Torneu-ho a provar.
+WARNFS_ERR01=Avís! - No s'han pogut canviar els permisos del fitxer.
+WARNFS_ERR02=Avís! - No s'ha pogut moure el fitxer.
+WARNFS_ERR03=La càrrega ha fallat. No es pot escriure al directori.
+WARNFS_ERR04=La càrrega ha fallat. El directori no existeix.
+WARNMOSUSER=S'ha produït un error, mosUser::setLastVisit no pot cridar un mètode estàticament sense ID
+WARNREG_EMAIL_INUSE=Aquesta adreça electrònica ja està registrada. Si heu oblidat la contrasenya feu clic a <strong>Heu oblidat la contrasenya</strong> i s'enviarà una nova contrasenya.
+WARNREG_INUSE=Aquest nom d'usuari/contrasenya ja s'està utilitzant. Si us plau proveu-ne un altre.
+WARNREG_MAIL=Si us plau introduïu una adreça electrònica vàlida.
+WARNSUPERADMINCREATE=No podeu crear un usuari amb aquest nivell de grup d'usuaris. Només els superadministradors tenen aquesta capacitat.
+WEB LINKS=Enllaços web
+WRITABLE=Es pot escriure
+WRITTEN BY=Escrit per
+WYSIWYG EDITOR FOR THIS USER=Editor WYSIWYG per a aquest usuari
+YEAR=Any
+YOU HAVE NO ACCESS TO THIS PAGE=<strong>no teniu accés</strong> a aquesta pàgina
+YOU MAY NOT BE ABLE TO VISIT THIS PAGE BECAUSE OF:=Potser no podeu visitar aquesta pàgina perquè:
+YOU MUST LOGIN FIRST=Primer heu d'iniciar sessió
+YOU NEED TO LOGIN.=Cal que inicieu la sessió.
+YOUR=El vostre
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_archive.ini 12/language/ca-ES/ca-ES.mod_archive.ini
--- 11/language/ca-ES/ca-ES.mod_archive.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_archive.ini	2009-01-10 20:44:04.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.mod_archive.ini 11308 2009-01-10 20:43:03Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ARCHIVED CONTENT=Continguts arxivats
+COUNT=Comptatge
+DESCARCHIVE=Aquest mòdul mostra una llista de mesos del calendari el quals contenen continguts arxivats. Després que hagueu canviat l'estat d'un article a arxivat, aquesta llista es generarà automàticament.
+MOD_ARCHIVE=<em>mod_archive</em>
+THE NUMBER OF ITEMS TO DISPLAY (DEFAULT IS 10)=El nombre de mesos a mostrar (per defecte és 10)
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_banners.ini 12/language/ca-ES/ca-ES.mod_banners.ini
--- 11/language/ca-ES/ca-ES.mod_banners.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_banners.ini	2008-12-31 20:36:18.000000000 +0100
@@ -0,0 +1,28 @@
+# $Id: ca-ES.mod_banners.ini 10498 2008-07-21 06:15:56Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BANNER=Bàner
+BANNER CLIENT=Client del bàner
+COUNT=Comptatge
+DESCBANNER=EL mòdul Bàner permet mostrar els bàners actius al vostre lloc.
+FOOTER TEXT=Text del peu de pàgina
+HEADER TEXT=Text de la capçalera
+MOD_BANNERS=<em>mod_banners</em>
+PARAMCATEGORY=Selecciona bànners només d'una sola categoria.
+PARAMFOOTERTEXT=Text a mostrar després del grup de bàners
+PARAMHEADERTEXT=Encapçalament a mostrar abans del grup de bàners
+PARAMRANDOMISE=Aleatoritza l'ordre dels bàners
+PARAMSEARCHBYTAG=El bàner se selecciona comparant les etiquetes de bàner amb les paraules clau del document actual.
+PARAMSINGLECLIENT=Selecciona bànners només d'un sol client.
+PARAMTARGET=Finestra objectiu quan es fa clic a l'enllaç
+PARAMNUMBERITEMS=Nombre de bàners a mostrar (per defecte 5)
+RANDOMISE=Aleatoritza
+SEARCH BY TAGS=Cerca per etiquetes
+STICKY,ORDERING=Permanent, Ordre
+STICKY,RANDOMISE=Permanent, Aleatoritza
+TARGET=Objectiu
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_breadcrumbs.ini 12/language/ca-ES/ca-ES.mod_breadcrumbs.ini
--- 11/language/ca-ES/ca-ES.mod_breadcrumbs.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_breadcrumbs.ini	2009-01-10 20:45:46.000000000 +0100
@@ -0,0 +1,20 @@
+# $Id: ca-ES.mod_breadcrumbs.ini 11394 2009-01-10 20:45:25Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A TEXT SEPARATOR=Un separador de text
+MOD_BREADCRUMBS=<em>mod_breadcrumbs</em>
+BREADCRUMBS=Ruta de navegació
+PARAMSHOWHOME=Mostra/Amaga l'element Inici al camí
+PARAMSHOWLAST=Mostra/Amaga el darrer element al camí
+PARAMHOMETEXT=Aquest text es mostrarà com a l'entrada de l'Inici
+PARAMSHOWCOMPONENT=Mostra/Amaga l'element de component al camí
+SHOW HOME=Mostra l'Inici
+SHOW LAST=Mostra el darrer
+TEXT FOR HOME ENTRY=Text per a l'entrada de l'Inici
+TEXT SEPARATOR=Separador de text
+THIS MODULE DISPLAYS THE BREADCRUMBS=Aquest mòdul mostra la ruta de navegació
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_custom.ini 12/language/ca-ES/ca-ES.mod_custom.ini
--- 11/language/ca-ES/ca-ES.mod_custom.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_custom.ini	2008-12-31 20:37:42.000000000 +0100
@@ -0,0 +1,11 @@
+# $Id: ca-ES.mod_custom.ini 10498 2008-07-21 06:21:35Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCMODCUSTOM=Aquest mòdul us permet crear el vostre propi mòdul HTML emprant un editor WYSIWYG.
+MOD_CUSTOM=<em>mod_custom</em>
+CUSTOM HTML=HTML personalitzat
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_feed.ini 12/language/ca-ES/ca-ES.mod_feed.ini
--- 11/language/ca-ES/ca-ES.mod_feed.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_feed.ini	2009-01-10 20:49:26.000000000 +0100
@@ -0,0 +1,31 @@
+# $Id: ca-ES.mod_feed.ini 11371 2009-01-10 20:46:22Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DISPLAY FEED IN RTL DIRECTION=Mostra el canal en direcció de dreta a esquerra (RTL)
+DISPLAY NEWS FEED TITLE=Mostra el títol del canal d'informació
+ENTER NUMBER OF RSS ITEMS TO DISPLAY=Introduïu el nombre d'ítems RSS a mostrar
+ENTER THE URL OF THE RSS/RDF FEED=Introduïu l'URL del canal RSS/RDF
+FEED DESCRIPTION=Descripció del canal
+FEED IMAGE=Imatge del canal
+FEED DISPLAY=Visualització del canal
+FEED TITLE=Títol del canal
+ITEM DESCRIPTION=Descripció d'ítem
+ITEMS=Ítems
+MOD_FEED=<em>mod_Feed</em>
+NO FEED URL SPECIFIED.=No s'ha indicat cap URL de canal.
+PARAMITEMDESC=Mostra la descripció o el text d'introducció d'ítems individuals RSS
+PARAMWORDCOUNT=Permet limitar la quantitat de descripció d'ítem visible. 0 (zero) mostrarà tot el text
+PLEASE MAKE CACHE DIRECTORY WRITABLE.=Si us plau doneu permisos d'escriptura al directori de la memòria cau.
+RSS=RSS
+RTL FEED=Canal RTL
+FEED URL=URL del canal
+SHOW THE DESCRIPTION TEXT FOR THE WHOLE FEED=Mostra el text de descripció per al canal sencer.
+SHOW THE IMAGE ASSOCIATED WITH THE WHOLE FEED=Mostra la imatge associada amb el canal sencer.
+THIS MODULE ALLOWS THE DISPLAYING OF A SYNDICATED FEED=Aquest mòdul permet la visualització d'un canal sindicat.
+WORD COUNT=Comptatge de paraules
+THE TIME IN SECONDS BEFORE THE MODULE IS RE-CACHED.=Temps en segons abans que el mòdul es torni a carregar a la memòria cau.
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_footer.ini 12/language/ca-ES/ca-ES.mod_footer.ini
--- 11/language/ca-ES/ca-ES.mod_footer.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_footer.ini	2008-12-31 20:38:34.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.mod_footer.ini 10498 2008-07-21 06:27:44Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+FOOTER=Peu de pàgina
+FOOTER_LINE1=Copyright &#169; %date% %sitename%. Tots els drets són reservats.
+FOOTER_LINE2=<a href="http://www.joomla.org">Joomla!</a> és un programari lliure distribuït sota la <a href="http://www.gnu.org/licenses/gpl-2.0.html">llicència GNU/GPL.</a>
+MOD_FOOTER=<em>mod_footer</em>
+THIS MODULE SHOWS THE JOOMLA! COPYRIGHT INFORMATION=Aquest mòdul mostra la informació de copyright del Joomla!
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_latestnews.ini 12/language/ca-ES/ca-ES.mod_latestnews.ini
--- 11/language/ca-ES/ca-ES.mod_latestnews.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_latestnews.ini	2008-12-31 20:38:56.000000000 +0100
@@ -0,0 +1,30 @@
+# $Id: ca-ES.mod_latestnews.ini 11236 2008-11-11 17:17:37Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BOTH=Ambdós
+CATEGORY ID=ID de la categoria
+COUNT=Comptatge
+DESCLATESTNEWS=Aquest mòdul mostra una llista dels articles actuals i publicats més recentment. Alguns dels que es mostren potser hagin vençut tot i ser els més recents.
+FRONTPAGE ITEMS=Articles de la portada
+LATEST NEWS=Informacions darreres
+MOD_LATESTNEWS=<em>mod_latestnews</em>
+MODULE MODE=Mode del mòdul
+PARAMCATEGORYID=Selecciona els articles d'una categoria o conjunt de categories que s'indiqui. Introduïu l'ID de categoria segons el gestor de categories. Per a indicar més d'una categoria, separeu cada ID amb una coma.
+PARAMENABLECACHE=Seleccioneu si voleu utilitzar la memòria cau per a aquest mòdul
+PARAMFRONTPAGEITEMS=Mosta/Amaga els articles designats per a la portada
+PARAMSECTIONID=Selecciona els articles d'una secció o conjunt de seccions que s'indiqui. Introduïu l'ID de secció segons el gestor de categories. Per a indicar més d'una secció, separeu cada ID amb una coma.
+SECTION ID=ID de la secció
+THE NUMBER OF ITEMS TO DISPLAY (DEFAULT 5)=Nombre d'articles a mostrar (per defecte 5)
+RECENTLY ADDED FIRST=Primer els que s'han afegit recentment
+RECENTLY MODIFIED FIRST=Primer els que s'han modificat recentment
+AUTHORS=Autors
+ANYONE=Qualsevol
+ORDERING OPTIONS=Opcions d'ordre
+ADDED OR MODIFIED BY ME=Afegit o modificat per mi
+NOT ADDED OR MODIFIED BY ME=No afegit o modificat per mi
+A FILTER FOR THE AUTHORS=Filtre per autor
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_login.ini 12/language/ca-ES/ca-ES.mod_login.ini
--- 11/language/ca-ES/ca-ES.mod_login.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_login.ini	2008-12-31 20:39:26.000000000 +0100
@@ -0,0 +1,36 @@
+# $Id: ca-ES.mod_login.ini 2008-03-17 2008-07-23 23:17:17Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BUTTON_LOGIN=Connexió
+BUTTON_LOGOUT=Finalitza la sessió
+DESCLOGINFORM=Aquest mòdul mostra un formulari d'inici de sessió amb nom d'usuari i contrasenya. També mostra un enllaç per a recuperar una contrasenya oblidada. Si el registre d'usuaris està habilitat (mireu-ho a la Configuració global), es mostrarà un altre enllaç per a habilitar el registre d'usuaris.
+ENCRYPT LOGIN FORM=Encripta el formulari d'inici de sessió
+FORGOT_YOUR_PASSWORD=Heu oblidat la contrasenya?
+FORGOT_YOUR_USERNAME=Heu oblidat el nom d'usuari?
+GREETING=Salutació
+HINAME=Hola %s,
+LOGIN MESSAGE=Missatge de l'inici de sessió
+LOGIN REDIRECTION URL=Pàgina de redirecció de l'inici de sessió
+LOGOUT MESSAGE=Missatge del final de sessió
+LOGOUT REDIRECTION URL=Pàgina de redirecció del final de sessió
+MOD_LOGIN=<em>mod_login</em>
+NAME/USERNAME=Nom/Nom d'usuari
+NO ACCOUNT YET?=Encara no teniu cap compte?
+PARAMPOSTTEXT=Aquest és el text o l'HTML que es mostra sota el formulari d'inici de sessió.
+PARAMPRETEXT=Aquest és el text o l'HTML que es mostra sobre el formulari d'inici de sessió.
+PARAMLOGINREDIRECTURL=Seleccioneu la pàgina a la qual es redirigirà l'usuari després d'un inici de sessió amb èxit. Seleccioneu-ne una de totes les pàgines llistades al desplegable. Si no feu cap selecció per defecte es carregarà la portada.
+PARAMLOGOUTREDIRECTURL=Seleccioneu la pàgina a la qual es redirigirà l'usuari després d'un final de sessió amb èxit. Seleccioneu-ne una de totes les pàgines llistades al desplegable. Si no feu cap selecció per defecte es carregarà la portada.
+PARAMLOGINMESSAGE=Mostra/Amaga la finestra emergent JavaScript que indica un inici de sessió amb èxit
+PARAMLOGOUTMESSAGE=Mostra/Amaga la finestra emergent JavaScript que indica un final de sessió amb èxit
+PASSWORD=Contrasenya
+POST-TEXT=Text posterior
+PRE-TEXT=Text anterior
+REGISTER=Crea un compte
+REMEMBER ME=Recorda'm
+SHOW/HIDE THE SIMPLE GREETING TEXT=Mostra/Amaga el text simple de salutació
+SUBMIT ENCRYPTED LOGIN DATA (REQUIRES SSL)=Tramet de forma encriptada les dades d'inici de sessió (necessita l'SSL).  No habiliteu aquesta opció si el Joomla no és accessible utilitzant el prefix de protocol https://
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_mainmenu.ini 12/language/ca-ES/ca-ES.mod_mainmenu.ini
--- 11/language/ca-ES/ca-ES.mod_mainmenu.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_mainmenu.ini	2008-12-31 20:39:58.000000000 +0100
@@ -0,0 +1,71 @@
+# $Id: ca-ES.mod_mainmenu.ini 10498 2008-07-23 23:25:46Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ACTIVATE PARENT=Activa el pare
+ALIGNMENT OF THE MENU ICONS=Alineació de les imatges de menú
+ALWAYS SHOW SUBMENU ITEMS=Mostra sempre els ítems de submenú
+CHOOSE WHICH INDENT IMAGE SYSTEM TO UTILISE=Trieu quin sistema d'imatges de sagnat utilitzar
+DISPLAYS A MENU.=Mostra un menú.
+END LEVEL=Darrer nivell
+END SPACER=Separador final
+END SPACER FOR HORIZONTAL MENU=Separador final per a menú horitzontal
+EXPAND MENU=Expandeix el menú
+FLAT LIST=Llista plana
+FULL ACTIVE HIGHLIGHTING=Realçament actiu
+HORIZONTAL=Horitzontal
+IMAGE FOR THE FIRST SUB-LEVEL=Imatge per al primer subnivell
+IMAGE FOR THE SECOND SUB-LEVEL=Imatge per al segon subnivell
+IMAGE FOR THE THIRD SUB-LEVEL=Imatge per al tercer subnivell
+IMAGE FOR THE FOURTH SUB-LEVEL=Imatge per al quart subnivell
+IMAGE FOR THE FIFTH SUB-LEVEL=Imatge per al cinquè subnivell
+IMAGE FOR THE SIXTH SUB-LEVEL=Imatge per al sisè subnivell
+INDENT IMAGE=Imatge de sagnat
+INDENT IMAGE 1=Imatge de sagnat 1
+INDENT IMAGE 2=Imatge de sagnat 2
+INDENT IMAGE 3=Imatge de sagnat 3
+INDENT IMAGE 4=Imatge de sagnat 4
+INDENT IMAGE 5=Imatge de sagnat 5
+INDENT IMAGE 6=Imatge de sagnat 6
+JOOMLA! DEFAULT IMAGES=Imatges per defecte del Joomla!
+LEGACY - FLAT LIST=Llegat - Llista plana
+LEGACY - HORIZONTAL=Llegat - Horitzontal
+LEGACY - VERTICAL=Llegat - Vertical
+LIST=Llista
+MENU=Menú
+MENU CLASS SUFFIX=Sufix de classe de menú
+MENU ICON ALIGNMENT=Alineació d'imatge de menú
+MENU ICON LINK=Enllaç d'imatge de menú
+MENU MODULE=Mòdul del menú
+MENU NAME=Nom del menú
+MENU STYLE=Estil del menú
+MOD_MAINMENU=<em>mod_mainmenu</em>
+PARAMACTIVATEPARENT=Estableix l'ID d'activació també per a tots els menús pare de l'arbre
+PARAMEXPANDMENU=Expandeix el menú i fes que els seus ítems de submenú siguin visibles sempre
+PARAMFULLACTIVEHIGHLIGHTING=Habilita el realçament dels ítems de menú actius, incloent Enllaç-Article i Enllaç-URL. Això pot causar la pèrdua del compliment XHTML si més d'un ítem és actiu.
+PARAMMENUCLASSSUFFIX=Un sufix a aplicar a la classe CSS dels ítems de menú
+PARAMMENUICONLINK=Enllaços com a imatges en lloc de texts. S'ha de seleccionar una imatge als ítems de menú.
+PARAMMENUTAGID=Un atribut d'id a assignar a l'etiqueta ul arrel del menú (opcional)
+PARAMSHOWMENUICONS=Mostra les imatges de menú que heu seleccionat per als ítems de menú
+PARAMSHOWSUBMENUITEMS=Mostra tots els ítems de submenú tant si el pare és actiu com si no ho és.
+PARAMSTARTLEVEL=A quin nivell començar la renderització del menú.
+PARAMSTOPLEVEL=A quin nivell aturar la renderització del menú.
+PARAMTARGETPOSITION=Valors JavaScript per a posicionar una finestra emergent, p.ex., top=50,left=50,width=200,height=300
+PARAMMENUMAXDEPTH=Aquest és el nombre màxim de profunditat abans que els ítems de menú s'ignorin a causa de pares absents. Augmenteu-lo si trobeu que els ítems de menú fills profunds no apareixen al menú.
+MAXIMUM MENU DEPTH=Profunditat de menú màxima
+SELECT MENU=Seleccioneu un menú
+SHOW MENU ICONS=Mostra les imatges de menú
+SHOW WHITESPACE=Mostra l'espai en blanc
+SHOW WHITESPACE DESC=Seleccioneu si mostrar o no l'espai en blanc a l'XHTML renderitzat
+SPACER=Separador
+SPACER FOR HORIZONTAL MENU=Separador per a menú horitzontal
+START LEVEL=Nivell d'inici
+TARGET POSITION=Posició de l'objectiu
+THE MENU STYLE=L'estil del menú
+THE NAME OF THE MENU (DEFAULT IS MAINMENU)=El nom del menú. Per defecte és <em>mainmenu</em>.
+USE PARAMS BELOW=Utilitza els paràmetres següents
+VERTICAL=Vertical
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_mostread.ini 12/language/ca-ES/ca-ES.mod_mostread.ini
--- 11/language/ca-ES/ca-ES.mod_mostread.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_mostread.ini	2008-12-31 20:40:22.000000000 +0100
@@ -0,0 +1,21 @@
+# $Id: ca-ES.mod_mostread.ini 10498 2008-07-23 23:36:34Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BOTH=Ambdós
+CATEGORY ID=ID de la categoria
+COUNT=Comptatge
+DESCMOSTREAD=Aquest mòdul mostra una llista dels articles actualment publicats que tenen el nombre més elevat de visualitzacions de pàgina.
+FRONTPAGE ITEMS=Articles de la portada
+MOD_MOSTREAD=<em>mod_mostread</em>
+MODULE MODE=Mode del mòdul
+MOST READ CONTENT=Contingut més llegit
+PARAMCATEGORYID=Selecciona els articles d'una categoria o conjunt de categories. Introduïu l'ID de categoria segons el gestor de categories. Per a indicar més d'una categoria, separeu cada ID amb una coma.
+PARAMFRONTPAGEITEMS=Mosta/Amaga els articles designats per a la portada. Això només funciona en mode Només article.
+PARAMSECTIONID=Selecciona els articles d'una secció o conjunt de seccions. Introduïu l'ID de secció segons el gestor de seccions. Per a indicar més d'una secció, separeu cada ID amb una coma.
+SECTION ID=ID de la secció
+THE NUMBER OF ITEMS TO DISPLAY (DEFAULT IS 5)=Nombre d'articles a mostrar (per defecte 5)
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_newsflash.ini 12/language/ca-ES/ca-ES.mod_newsflash.ini
--- 11/language/ca-ES/ca-ES.mod_newsflash.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_newsflash.ini	2008-12-31 20:40:48.000000000 +0100
@@ -0,0 +1,34 @@
+# $Id: ca-ES.mod_newsflash.ini 10498 2008-07-23 23:50:48Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+A CONTENT CATEGORY=Una categoria d'articles
+ARTICLE TITLE=Títol de l'article
+CATEGORY=Categoria
+DESCNEWSFLASH=El mòdul Butlletí informatiu selecciona aleatòriament un dels articles publicats d'una categoria en cada refresc de pàgina. També pot mostrar múltiples articles en una configuració vertical o horitzontal.
+DISPLAY ARTICLE IMAGES=Mostra les imatges dels articles
+HORIZONTAL=Horitzontal
+ITEM TITLE=Títol de l'article
+LAYOUT=Format
+LINKED TITLES=Títols hipertextuals
+MAKE THE ITEM TITLES LINKABLE=Fes els títols d'article hipertextuals per a obrir els propis articles.
+MOD_NEWSFLASH=<em>mod_newsflash/</em>
+NEWSFLASH=Butlletí informatiu
+NO OF ITEMS TO DISPLAY=Nombre d'articles a mostrar en aquest mòdul
+NO. OF ITEMS=Núm. dels articles
+RANDOMLY CHOOSE ONE AT A TIME=Tria'n aleatòriament un a la vegada
+READ MORE=Enllaç Llegiu-ne més...
+READ MORE TEXT=Llegiu-ne més...
+SELECT CONTENT CATEGORY=Seleccioneu una categoria d'articles
+SHOW ARTICLE TITLE=Mostra el títol de l'article
+SHOW IMAGES=Mostra les imatges
+SHOW ITEM TITLE=Mostra el títol de l'ítem
+SHOW/HIDE THE READ MORE BUTTON=Mostra/Amaga el Llegiu-ne més...
+SHOW LAST SEPARATOR=Mostra un separador últim
+SHOW SEPARATOR AFTER LAST ARTICLE=Mostra un separador després de l'article últim
+THE LAYOUT TO DISPLAY THE CATEGORY=El format amb què mostrar la categoria
+VERTICAL=Vertical
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_online.ini 12/language/ca-ES/ca-ES.mod_online.ini
--- 11/language/ca-ES/ca-ES.mod_online.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_online.ini	2008-12-31 20:41:20.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.mod_online.ini 10388 2008-07-23 23:53:45Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ONLINE USERS=Usuaris en línia
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_poll.ini 12/language/ca-ES/ca-ES.mod_poll.ini
--- 11/language/ca-ES/ca-ES.mod_poll.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_poll.ini	2008-12-31 20:41:46.000000000 +0100
@@ -0,0 +1,14 @@
+# $Id: ca-ES.mod_poll.ini 10388 2008-07-23 23:52:43Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCPOLL=Aquest mòdul complementa el component d'enquestes. S'utilitza per a mostrar les enquestes configurades. Podeu seleccionar una enquesta concreta a mostrar al mòdul d'enquestes.
+MOD_POLL=<em>mod_poll</em>
+POLL=Enquesta
+VOTE=Vota
+PARAMMODULEPOLL=L'enquesta a mostrar
+SELECT POLL=Seleccioneu una enquesta
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_random_image.ini 12/language/ca-ES/ca-ES.mod_random_image.ini
--- 11/language/ca-ES/ca-ES.mod_random_image.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_random_image.ini	2008-12-31 20:42:10.000000000 +0100
@@ -0,0 +1,22 @@
+# $Id: ca-ES.mod_random_image.ini 10498 2008-07-23 23:59:44Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCRANDOMIMAGE=Aquest mòdul mostra una imatge aleatòria del directori triat.
+HEIGHT (PX)=Altura (px)
+IMAGE FOLDER=Carpeta d'imatges
+IMAGE TYPE=Tipus d'imatge
+LINK=Enllaç
+MOD_RANDOM_IMAGE=<em>mod_random_image</em>
+NO IMAGES=Cap imatge
+PARAMHEIGHTPX=L'altura d'imatge imposa que totes les imatges es mostrin amb aquesta altura en píxels.
+PARAMIMAGEFOLDER=Camí a la carpeta d'imatges relatiu a l'URL del lloc (p.ex. images/stories).
+PARAMLINK=Un URL cap a on redirigir si es fa clic a la imatge (p.ex. http://www.joomla.org).
+PARAMWIDTHPX=L'amplada d'imatge imposa que totes les imatges es mostrin amb aquesta amplada en píxels.
+RANDOM IMAGE=Imatge aleatòria
+TYPE OF IMAGE PNG/GIF/JPG ETC. (DEFAULT IS JPG)=Tipus d'imatge PNG/GIF/JPG etc. (per defecte és JPG)
+WIDTH (PX)=Amplada (px)
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_related_items.ini 12/language/ca-ES/ca-ES.mod_related_items.ini
--- 11/language/ca-ES/ca-ES.mod_related_items.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_related_items.ini	2008-12-31 20:42:34.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.mod_related_items.ini 10388 2008-07-24 00:02:06Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+DESCRELATEDITEMS=Aquest mòdul mostra altres articles que estan relacionats amb el que es mostra en aquests moments. Aquestes relacions s'estableixen gràcies a les paraules clau. <br />Totes les paraules clau de l'article actual es comproven amb les paraules clau dels altres articles publicats. Per exemple, podeu tenir un article sobre "La cria de lloros" i un altre sobre "Fer créixer les cacatues negres". Si incloeu la paraula clau "lloro" en ambdós articles, llavors el mòdul d'ítems relacionats llistarà "La cria de lloros" quan es visualitzi "Fer créixer les cacatues negres" i viceversa.
+MOD_RELATED_ITEMS=<em>mod_related_items</em>
+RELATED ITEMS=Articles relacionats
+SHOW DATE=Mostra la data
+SHOW/HIDE DATE=Mostra/Amaga la data
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_search.ini 12/language/ca-ES/ca-ES.mod_search.ini
--- 11/language/ca-ES/ca-ES.mod_search.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_search.ini	2009-01-10 20:51:48.000000000 +0100
@@ -0,0 +1,26 @@
+# $Id: ca-ES.mod_search.ini 11391 2009-01-10 20:50:35Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+BOX WIDTH=Amplada del quadre
+BUTTON POSITION=Posició del botó
+BUTTON TEXT=Text del botó
+DISPLAY A SEARCH BUTTON=Mostra un botó de cerca
+MOD_SEARCH=<em>mod_search</em>
+PARAMBUTTONTEXT=El text que apareix al botó de cerca. Si es deixa en blanc es carregarà la cadena 'cerca' del fitxer d'idioma.
+PARAMTEXT=El text que apareix al quadre de cerca. Si es deixa en blanc es carregarà la cadena 'quadre de cerca' del fitxer d'idioma.
+POSITION OF THE BUTTON RELATIVE TO THE SEARCH BOX=Posició del botó en relació al quadre de cerca.
+SEARCH=Cerca
+SEARCH BUTTON=Botó de cerca
+SEARCH BUTTON AS IMAGE=Botó de cerca com a imatge
+SEARCH...=cerca...
+SEARCH MODULE=Mòdul de cerca
+SET ITEMID=Estableix l'ItemID
+SIZE OF THE SEARCH TEXT BOX IN CHARACTERS=Mida del quadre de cerca en caràcters
+TEXT=Text
+THIS MODULE WILL DISPLAY A SEARCH BOX=Aquest mòdul mostra un quadre de cerca.
+USE AN IMAGE AS BUTTON=Utilitza una imatge com a botó. Aquesta imatge s'ha d'anomenar searchButton.gif i ha de ser a /images/M_images/
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_sections.ini 12/language/ca-ES/ca-ES.mod_sections.ini
--- 11/language/ca-ES/ca-ES.mod_sections.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_sections.ini	2008-12-31 20:43:24.000000000 +0100
@@ -0,0 +1,15 @@
+# $Id: ca-ES.mod_sections.ini 10498 2008-07-24 00:29:27Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+COUNT=Comptatge
+DESCSECTIONS=El mòdul de seccions mostra una llista de totes les seccions configurades a la base de dades. Les seccions es refereixen aquí només a seccions d'articles. Si el paràmetre <em>Mostra els enllaços no autoritzats</em> està establert com a No, la llista es limitarà a les seccions que el nivell d'accés de l'usuari li permet veure.
+MOD_SECTIONS=<em>mod_sections</em>
+SECTIONS=Seccions
+SHOW UNAUTHORIZED LINKS=Mostra els enllaços no autoritzats
+THE NUMBER OF ITEMS TO DISPLAY (DEFAULT IS 5)=El nombre de seccions a mostrar (per defecte és cinc).
+TIPLINKS=Si trieu NO, la llista es limitarà a les seccions que el nivell d'accés de l'usuari li permet veure.
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_stats.ini 12/language/ca-ES/ca-ES.mod_stats.ini
--- 11/language/ca-ES/ca-ES.mod_stats.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_stats.ini	2008-12-31 20:43:50.000000000 +0100
@@ -0,0 +1,34 @@
+# $Id: ca-ES.mod_stats.ini 10498 2008-07-24 00:46:12Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CACHING=Utilitza la memòria cau
+CONTENT=Contingut
+CONTENT VIEW HITS=Visites del contingut
+DESCSTATISTICS=El mòdul d'estadístiques mostra informació sobre la instal·lació del servidor i estadístiques dels usuaris del lloc web, nombre d'articles a la base de dades i nombre d'enllaços web que proporcioneu.
+DISABLED=Inhabilitat
+DISPLAY HIT COUNTER=Mostra el comptador de visites
+DISPLAY SERVER INFORMATION=Mostra la informació del servidor
+DISPLAY SITE INFORMATION=Mostra la informació del lloc
+ENABLED=Habilitat
+ENTER THE AMOUNT OF HITS TO INCREASE COUNTER BY=Introduïu la quantitat de visites amb la qual augmentar el comptador.
+GZIP=GZIP
+HIT COUNTER=Comptador de visites
+HITS_STAT=Visites
+INCREASE COUNTER=Augmenta el comptador
+MEMBERS=Membres
+MOD_STATS=<em>mod_stats</em>
+MYSQL=MySQL
+NEWS=Notícies
+OS=S.O.
+PHP=PHP
+SERVER INFO=Informació del Servidor
+SITE INFO=Informació del lloc
+STATISTICS=Estadístiques
+TIME=Hora
+VISITORS=Visitants
+WEBLINKS=Enllaços web
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_syndicate.ini 12/language/ca-ES/ca-ES.mod_syndicate.ini
--- 11/language/ca-ES/ca-ES.mod_syndicate.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_syndicate.ini	2008-12-31 20:44:22.000000000 +0100
@@ -0,0 +1,17 @@
+# $Id: ca-ES.mod_syndicate.ini 10388 2008-07-24 00:47:18Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ATOM 1.0=Àtom 1.0
+FORMAT=Format
+MOD_SYNDICATE=<em>mod_syndicate</em>
+PARAMFEEDFORMAT=Seleccioneu el format per al canal d'informació
+PARAMTEXT=Introduïu el text a mostrar juntament amb els enllaços RSS
+RSS 2.0=RSS 2.0
+SMART SYNDICATION MODULE THAT CREATES SYNDICATED FEED FOR THE PAGE WHERE THE MODULE IS DISPLAYED=Mòdul de sindicació inteligent (Smart Syndication) que crea un canal sindicat per a la pàgina on es mostra el mòdul.
+SYNDICATE=Sindicat
+TEXT=Text
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_whosonline.ini 12/language/ca-ES/ca-ES.mod_whosonline.ini
--- 11/language/ca-ES/ca-ES.mod_whosonline.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_whosonline.ini	2008-12-31 20:44:46.000000000 +0100
@@ -0,0 +1,26 @@
+# $Id: ca-ES.mod_whosonline.ini 10498 2008-07-24 00:50:46Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AND=i
+BOTH=Ambdós
+DESCWHOSONLINE=El mòdul Qui està en línia mostra el nombre d'usuaris anònims (p.ex. Convidats) i d'usuaris registrats (aquells que han iniciat sessió) que accedeixen al lloc web en aquests moments.
+DISPLAY=Mostra
+MEMBER NAMES=Noms dels membres
+MEMBER ONLINE=&nbsp;%s membre en línia
+MEMBERS ONLINE=&nbsp;%s membres en línia
+MOD_WHOSONLINE=<em>mod_whosonline</em>
+NO USERS ONLINE=Cap usuari en línia.
+NUMBER OF GUESTS/MEMBERS=Núm. de visitants / membres
+ONLINE=en línia
+SELECT WHAT SHALL BE SHOWN=Seleccioneu què es mostrarà
+GUEST=%s visitant
+GUESTS=%s visitants
+MEMBER=%s membre
+MEMBERS=%s membres
+WE HAVE=Tenim
+WHO'S ONLINE=Qui està en línia
diff -aruN --binary 11/language/ca-ES/ca-ES.mod_wrapper.ini 12/language/ca-ES/ca-ES.mod_wrapper.ini
--- 11/language/ca-ES/ca-ES.mod_wrapper.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.mod_wrapper.ini	2008-12-31 20:45:06.000000000 +0100
@@ -0,0 +1,28 @@
+# $Id: ca-ES.mod_wrapper.ini 10498 2008-07-24 00:55:09Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AUTO=Automàtic
+AUTO ADD=Afegeix automàticament
+AUTO HEIGHT=Alçada automàtica
+HEIGHT=Alçada
+HEIGHT OF THE IFRAME WINDOW=Alçada de la finestra IFrame
+MOD_WRAPPER=<em>mod_wrapper</em>
+NAME OF THE IFRAME WHEN USED AS TARGET=Nom de l'IFrame quan s'utilitza com a objectiu
+NO_IFRAMES=Sense Iframes
+PARAMAUTOADD=Per defecte s'afegirà http:// tret que es detecti http:// o https:// a l'URL que proporcioneu. Això us permet desactivar aquesta capacitat.
+PARAMAUTOHEIGHT=L'alçada s'establirà automàticament a la mida de la pàgina externa. Això només funcionarà per a les pàgines del propi domini.
+PARAMWIDTH=Amplada de la finestra iframe. Podeu introduir una mida absoluta en píxels o bé una relativa afegint un %.
+SCROLL BARS=Barres de desplaçament
+SHOW/HIDE HORIZONTAL AND VERTICAL SCROLL BARS.=Mostra/Amaga les barres de desplaçament horitzontal &amp; vertical.
+TARGET NAME=Nom de l'objectiu
+THIS MODULE SHOWS AN IFRAME WINDOW TO SPECIFIED LOCATION=Aquest mòdul mostra una finestra iframe a la ubicació indicada.
+URL=URL
+URL TO SITE/FILE YOU WISH TO DISPLAY WITHIN THE IFRAME=URL al lloc/fitxer que voleu mostrar dins l'iframe.
+WRAPPER=Embolcall
+WIDTH=Amplada
+WRAPPER MODULE=Mòdul d'embolcall
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_content_pagebreak.ini 12/language/ca-ES/ca-ES.plg_content_pagebreak.ini
--- 11/language/ca-ES/ca-ES.plg_content_pagebreak.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_content_pagebreak.ini	2009-03-13 23:32:32.000000000 +0100
@@ -0,0 +1,12 @@
+# $Id: ca-ES.plg_content_pagebreak.ini 11654 2009-03-13 23:33:32Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008 - 2009  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALL PAGES=Totes les pàgines
+ARTICLE INDEX=Índex d'article
+PAGE #=Pàgina %s
+
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_content_vote.ini 12/language/ca-ES/ca-ES.plg_content_vote.ini
--- 11/language/ca-ES/ca-ES.plg_content_vote.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_content_vote.ini	2008-12-31 20:45:28.000000000 +0100
@@ -0,0 +1,13 @@
+# $Id: ca-ES.plg_content_vote.ini 10388 2008-07-24 00:57:32Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADD THE VOTING FUNCTIONALITY TO ITEMS=Afegeix la funcionalitat de votació als articles
+BEST=Millor
+POOR=Pitjor
+RATE=Valora
+USER RATING=Valoració d'usuari
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_search_categories.ini 12/language/ca-ES/ca-ES.plg_search_categories.ini
--- 11/language/ca-ES/ca-ES.plg_search_categories.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_search_categories.ini	2008-12-31 20:45:52.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_search_categories.ini 10388 2008-07-24 01:00:58Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CATEGORIES=Categories
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_search_contacts.ini 12/language/ca-ES/ca-ES.plg_search_contacts.ini
--- 11/language/ca-ES/ca-ES.plg_search_contacts.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_search_contacts.ini	2008-12-31 20:46:18.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_search_contacts.ini 10388 2008-07-24 01:02:13Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+CONTACTS=Contactes
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_search_content.ini 12/language/ca-ES/ca-ES.plg_search_content.ini
--- 11/language/ca-ES/ca-ES.plg_search_content.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_search_content.ini	2008-12-31 20:46:42.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_search_content.ini 10388 2008-07-24 01:02:49Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ARTICLES=Articles
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_search_newsfeeds.ini 12/language/ca-ES/ca-ES.plg_search_newsfeeds.ini
--- 11/language/ca-ES/ca-ES.plg_search_newsfeeds.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_search_newsfeeds.ini	2008-12-31 20:47:10.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_search_newsfeeds.ini 10388 2008-07-24 01:03:35Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+NEWSFEEDS=Canals d'informació
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_search_sections.ini 12/language/ca-ES/ca-ES.plg_search_sections.ini
--- 11/language/ca-ES/ca-ES.plg_search_sections.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_search_sections.ini	2008-12-31 20:47:36.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_search_sections.ini 10388 2008-07-24 01:03:54Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+SECTIONS=Seccions
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_search_weblinks.ini 12/language/ca-ES/ca-ES.plg_search_weblinks.ini
--- 11/language/ca-ES/ca-ES.plg_search_weblinks.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_search_weblinks.ini	2008-12-31 20:48:02.000000000 +0100
@@ -0,0 +1,9 @@
+# $Id: ca-ES.plg_search_weblinks.ini 10388 2008-07-24 01:04:49Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+WEBLINKS=Enllaços web
diff -aruN --binary 11/language/ca-ES/ca-ES.plg_system_debug.ini 12/language/ca-ES/ca-ES.plg_system_debug.ini
--- 11/language/ca-ES/ca-ES.plg_system_debug.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.plg_system_debug.ini	2008-12-31 20:48:42.000000000 +0100
@@ -0,0 +1,35 @@
+# $Id: ca-ES.plg_system_debug.ini 10457 2008-07-24 01:16:27Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ALL MODES=Tots els modes
+DESIGNER MODE=Mode dissenyador
+DIAGNOSTIC MODE=Mode diagnòstic
+DISPLAY LOADED LANGUAGE FILES=Mostra els fitxers d'idioma carregats
+DISPLAYS ORPHANED STRINGS IN DIFFERENT WAYS=Mostra les cadenes òrfenes de diferents maneres
+IF YES, DISPLAY A LIST OF THE LANGUAGE FILES LOADED=Si trieu 'Sí', mostra una llista dels fitxers d'idioma carregats
+STRING FORMAT=Format de cadena
+STRIP STRING PREFIX=Prefix clau a treure
+STRIP STRING PREFIX DESC=Treu aquest prefix de la cadena actual abans de mostrar els resultats de dissenyador
+DISPLAY PROFILING INFORMATION=Mostra la informació del perfil
+IF YES, DISPLAY PROFILING INFORMATION=Si trieu 'Sí', mostra la informació del perfil
+
+DISPLAY SQL QUERY LOG=Mostra el registre de consultes SQL
+DISPLAY MEMORY USAGE=Mostra l'ús de memòria
+DISPLAY UNDEFINED LANGUAGE STRINGS=Mostra les cadenes de text d'idioma no definides
+IF YES, DISPLAY SQL QUERY LOG=Si trieu 'Sí', mostra el registre de consultes SQL
+IF YES, DISPLAY MEMORY USAGE=Si trieu 'Sí', mostra l'ús de memòria
+IF YES, DISPLAY UNDEFINED LANGUAGE STRINGS=Si trieu 'Sí', mostra les cadenes de text d'idioma no definides
+LANGUAGE FILES LOADED=S'han carregat els fitxers d'idioma
+MEMORY USAGE=Ús de memòria
+PROFILE INFORMATION=Informació del perfil
+PROVIDES DEBUG INFORMATION=Proporciona informació de depuració
+QUERIES LOGGED=%s consultes registrades
+LEGACY QUERIES LOGGED=%s consultes de llegat registrades
+UNTRANSLATED STRINGS=Cadenes no traduïdes
+UNTRANSLATED STRINGS DESIGNER=Cadenes no traduïdes mode dissenyador
+UNTRANSLATED STRINGS DIAGNOSTIC=Cadenes no traduïdes mode diagnòstic
diff -aruN --binary 11/language/ca-ES/ca-ES.tpl_beez.ini 12/language/ca-ES/ca-ES.tpl_beez.ini
--- 11/language/ca-ES/ca-ES.tpl_beez.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.tpl_beez.ini	2008-12-31 20:49:10.000000000 +0100
@@ -0,0 +1,26 @@
+# $Id: ca-ES.tpl_beez.ini 10388 2008-07-24 01:17:10Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+ADDITIONAL INFORMATION=Informació addicional
+BIGGER=més gran
+DECREASE SIZE=Disminueix la mida
+INCREASE SIZE=Augmenta la mida
+FONTSIZE=Mida de la font:
+GRAPH=Gràfica
+HITS=Visites
+JOOMLA ACCESSIBLE TEMPLATE=Plantilla accessible per a Joomla!
+JUMP TO ADDITIONAL INFORMATION=Salta a la informació addicional
+JUMP TO MAIN NAVIGATION AND LOGIN=Salta a la navegació principal i connexió
+LOGO BEEZ, THREE LITTLE BEES=Logo Beez, tres abelles petites
+PERCENT=Percentatge
+RESET=reinicialitza
+REVERT STYLES TO DEFAULT=Reverteix els estils als valors per defecte
+SEARCH, VIEW AND NAVIGATION=Cerca, Visualització i Navegació
+SKIP TO CONTENT=Vés al contingut
+SMALLER=més petit
+YOU ARE HERE=Sou aquí:
diff -aruN --binary 11/language/ca-ES/ca-ES.tpl_ja_purity.ini 12/language/ca-ES/ca-ES.tpl_ja_purity.ini
--- 11/language/ca-ES/ca-ES.tpl_ja_purity.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.tpl_ja_purity.ini	2008-12-31 20:49:56.000000000 +0100
@@ -0,0 +1,18 @@
+# $Id: ca-ES.tpl_ja_purity.ini 10498 2008-07-24 01:18:42Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+SITE SLOGAN=...because open source matters
+INCREASE FONT SIZE=Augmenta la mida de la font
+DEFAULT FONT SIZE=Mida de la font per defecte
+DECREASE FONT SIZE=Disminueix la mida de la font
+XHTML VALIDITY=Aquest lloc té validesa XHTML 1.0 Transicional
+CSS VALIDITY=Aquest lloc té validesa CSS
+SKIP TO CONTENT=Vés al contingut
+SKIP TO MAIN NAVIGATION=Vés a la navegació principal
+SKIP TO 1ST COLUMN=Vés a la primera columna
+SKIP TO 2ND COLUMN=Vés a la segona columna
diff -aruN --binary 11/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini 12/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini
--- 11/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.tpl_rhuk_milkyway.ini	2008-12-31 20:50:24.000000000 +0100
@@ -0,0 +1,10 @@
+# $Id: ca-ES.tpl_rhuk_milkyway.ini 10388 2008-07-24 01:22:31Z dverger $
+# Joomla! Catalan Translation
+# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+# Copyright (C) Translation 2008  Catalan Joomla Translation Team - joomla.cat
+# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+
+# Note : All ini files need to be saved as UTF-8
+
+AND=i
+VALID=vàlid
diff -aruN --binary 11/language/ca-ES/ca-ES.xml 12/language/ca-ES/ca-ES.xml
--- 11/language/ca-ES/ca-ES.xml	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/ca-ES.xml	2009-05-16 03:30:22.000000000 +0200
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<metafile version="1.5"  client="site" >
+	<tag>ca-ES</tag>
+	<name>Catalan</name>
+	<description>Catalan language site pack for Joomla</description>
+	<version>1.5.11</version>
+	<creationDate>2009-05-16</creationDate>
+	<author>Catalan Joomla Translation Team</author>
+	<authorUrl>www.joomla.cat</authorUrl>
+	<authorEmail>dverger@joomla.cat</authorEmail>
+	<copyright>Copyright (C) 2005 - 2009 Open Source Matters.  All rights reserved.</copyright>
+	<copyright>Copyright (C) Translation 2008 - 2009 Catalan Joomla Translation Team - joomla.cat</copyright>
+	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
+	<metadata>
+		<name>Catalan</name>
+		<tag>ca-ES</tag>
+		<rtl>0</rtl>
+		<locale>ca_ES.utf8, ca_ES.UTF-8, ca-ES, ca_ES, ca_ES.UTF-8@euro, ca_AD.utf8, ca_AD.UTF-8, ca_AD, ca_FR.utf8, ca_FR.UTF-8, ca_FR, ca_IT.utf8, ca_IT.UTF-8, ca_IT, Catalan_Standard, catalan, ca</locale>
+		<winCodePage>iso-8859-1</winCodePage>
+		<backwardLang>catalan</backwardLang>
+		<pdfFontName>freesans</pdfFontName>
+	</metadata>
+	<params />
+</metafile>
diff -aruN --binary 11/language/ca-ES/index.html 12/language/ca-ES/index.html
--- 11/language/ca-ES/index.html	1970-01-01 01:00:00.000000000 +0100
+++ 12/language/ca-ES/index.html	2008-07-30 01:46:48.000000000 +0200
@@ -0,0 +1 @@
+<html><body bgcolor="#FFFFFF"></body></html>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/en-GB/en-GB.com_content.ini 12/language/en-GB/en-GB.com_content.ini
--- 11/language/en-GB/en-GB.com_content.ini	2009-05-21 05:38:24.000000000 +0200
+++ 12/language/en-GB/en-GB.com_content.ini	2009-06-30 22:01:32.000000000 +0200
@@ -114,3 +114,4 @@
 YOUR EMAIL=Your E-mail
 YOUR FRIENDS EMAIL=Your friend's e-mail
 YOUR NAME=Your Name
+TOGGLE EDITOR=Toggle editor
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/en-GB/en-GB.ini 12/language/en-GB/en-GB.ini
--- 11/language/en-GB/en-GB.ini	2009-05-21 05:38:22.000000000 +0200
+++ 12/language/en-GB/en-GB.ini	2009-06-30 22:01:32.000000000 +0200
@@ -12,7 +12,7 @@
 DATE_FORMAT_LC3=%d %B %Y
 DATE_FORMAT_LC4=%d.%m.%y
 DATE_FORMAT_JS1=y-m-d
-%Y-%M-%D=%Y-%M-%D
+%Y-%M-%D=%Y-%m-%d
 %A, %B %E=%A, %B %e
 
 # Months
diff -aruN --binary 11/language/en-GB/en-GB.mod_feed.ini 12/language/en-GB/en-GB.mod_feed.ini
--- 11/language/en-GB/en-GB.mod_feed.ini	2009-05-21 05:38:22.000000000 +0200
+++ 12/language/en-GB/en-GB.mod_feed.ini	2009-06-30 22:01:32.000000000 +0200
@@ -26,4 +26,4 @@
 SHOW THE IMAGE ASSOCIATED WITH THE WHOLE FEED=Show the image associated with the whole feed.
 THIS MODULE ALLOWS THE DISPLAYING OF A SYNDICATED FEED=This Module allows the displaying of a syndicated feed.
 WORD COUNT=Word Count
-THE TIME IN SECONDS BEFORE THE MODULE IS RE-CACHED.=The time in seconds before the module is re-cached.
\ No hay ningún carácter de nueva línea al final del fichero
+THE TIME IN MINUTES BEFORE THE MODULE IS RE-CACHED.=The time in minutes before the module is re-cached.
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/en-GB/en-GB.tpl_beez.ini 12/language/en-GB/en-GB.tpl_beez.ini
--- 11/language/en-GB/en-GB.tpl_beez.ini	2009-05-21 05:38:22.000000000 +0200
+++ 12/language/en-GB/en-GB.tpl_beez.ini	2009-06-30 22:01:32.000000000 +0200
@@ -22,4 +22,5 @@
 SEARCH, VIEW AND NAVIGATION=Search, View and Navigation
 SKIP TO CONTENT=Skip to Content
 SMALLER=smaller
-YOU ARE HERE=You are here:
\ No hay ningún carácter de nueva línea al final del fichero
+YOU ARE HERE=You are here:
+LOST PASSWORD?=Lost Password?
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.com_banners.ini 12/language/es-ES/es-ES.com_banners.ini
--- 11/language/es-ES/es-ES.com_banners.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_banners.ini	2009-06-28 09:27:54.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_banners.ini 1.5.0 2008-07-08 19:32:33 2007-10-06 ~0 $
+# $Id: es-ES.com_banners.ini 1.5.0 2009-06-28 09:27:54 2007-10-06 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
diff -aruN --binary 11/language/es-ES/es-ES.com_contact.ini 12/language/es-ES/es-ES.com_contact.ini
--- 11/language/es-ES/es-ES.com_contact.ini	2009-03-28 21:03:58.000000000 +0100
+++ 12/language/es-ES/es-ES.com_contact.ini	2009-06-28 09:31:40.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_contact.ini 1.5.0 2009-03-28 20:03:57 2007-09-18 ~0 $
+# $Id: es-ES.com_contact.ini 1.5.0 2009-06-28 09:31:41 2007-09-18 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2007 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -19,7 +19,7 @@
 EMAIL ADDRESS=Dirección de e-mail
 EMAIL_A_COPY=Enviar una copia de este mensaje a su propio E-mail
 ENQUIRY=Pedido
-ENQUIRY_TEXT=Este es un e-mail de pedido por %s de:
+ENQUIRY_TEXT=Esta es una consulta de correo electrónico %s a través de:
 ENTER YOUR MESSAGE=Escriba su mensaje
 ENTER YOUR NAME=Escriba su nombre y apellidos
 FAX=Fax
diff -aruN --binary 11/language/es-ES/es-ES.com_content.ini 12/language/es-ES/es-ES.com_content.ini
--- 11/language/es-ES/es-ES.com_content.ini	2009-03-28 21:04:38.000000000 +0100
+++ 12/language/es-ES/es-ES.com_content.ini	2009-07-01 10:15:40.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_content.ini 1.5.0 2009-03-28 20:04:36 2007-10-06 ~0 $
+# $Id: es-ES.com_content.ini 1.5.0 2009-07-01 10:15:40 2007-10-06 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -114,4 +114,5 @@
 YOU ALREADY RATED THIS ARTICLE TODAY!=¡Hoy ya introdujo una calificación para este artículo!
 YOUR EMAIL=Su e-mail
 YOUR FRIENDS EMAIL=E-mail de su amigo
-YOUR NAME=Su nombre
\ No hay ningún carácter de nueva línea al final del fichero
+YOUR NAME=Su nombre
+TOGGLE EDITOR=Ocultar editor
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.com_frontpage.ini 12/language/es-ES/es-ES.com_frontpage.ini
--- 11/language/es-ES/es-ES.com_frontpage.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_frontpage.ini	2009-06-28 09:32:48.000000000 +0200
@@ -1,8 +1,8 @@
-# $Id: es-ES.com_frontpage.ini 1.5.0 2008-07-08 19:34:24 2007-09-01 ~0 $
+# $Id: es-ES.com_frontpage.ini 1.5.0 2009-06-28 09:32:48 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
-EMPTY_BLOG=No hay artículos para ver
\ No hay ningún carácter de nueva línea al final del fichero
+EMPTY_BLOG=No hay artículos para mostrar.
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.com_mailto.ini 12/language/es-ES/es-ES.com_mailto.ini
--- 11/language/es-ES/es-ES.com_mailto.ini	2009-01-10 22:02:22.000000000 +0100
+++ 12/language/es-ES/es-ES.com_mailto.ini	2009-06-28 09:34:10.000000000 +0200
@@ -1,12 +1,12 @@
-# $Id: es-ES.com_mailto.ini 1.5.0 2009-01-10 21:02:21 2007-09-01 ~0 $
+# $Id: es-ES.com_mailto.ini 1.5.0 2009-06-28 09:34:10 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
 EMAIL_ERR_NOINFO=Por favor introduzca una dirección e-mail válida
-EMAIL_INVALID='%s' no parece ser una dirección de e-mail válida
+EMAIL_INVALID=La dirección '%s'  no parece ser una dirección de e-mail válida
 EMAIL_THIS_LINK_TO_A_FRIEND=Enviar este enlace a un amigo por e-mail
 EMAIL_TO=Enviar e-mail a:
 SENDER=Remitente
diff -aruN --binary 11/language/es-ES/es-ES.com_media.ini 12/language/es-ES/es-ES.com_media.ini
--- 11/language/es-ES/es-ES.com_media.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_media.ini	2009-06-28 09:35:30.000000000 +0200
@@ -1,12 +1,12 @@
-# $Id: es-ES.com_media.ini 1.5.0 2008-07-08 19:35:26 ian ~0 $
+# $Id: es-ES.com_media.ini 1.5.0 2009-06-28 09:35:30 ian ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
 ERROR. UNABLE TO UPLOAD FILE=Error. No se puede cargar el archivo.
 BROWSE=Navegador
-BROWSE FILES=Navegación de archivos
+BROWSE FILES=Navegador de archivos
 CLEAR COMPLETED=Limpieza completada
 REMOVE FROM QUEUE=Eliminar desde la cola
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.com_messages.ini 12/language/es-ES/es-ES.com_messages.ini
--- 11/language/es-ES/es-ES.com_messages.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_messages.ini	2009-06-28 09:37:06.000000000 +0200
@@ -1,10 +1,10 @@
-# $Id: es-ES.com_messages.ini 1.5.0 2008-07-08 19:35:50 version ~0 $
+# $Id: es-ES.com_messages.ini 1.5.0 2009-06-28 09:37:07 version ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
-A NEW PRIVATE MESSAGE HAS ARRIVED=Un nuevo mensaje privado ha llegado
+A NEW PRIVATE MESSAGE HAS ARRIVED=Un nuevo mensaje privado ha llegado de %s.
 MESSAGE_FAILED=El usuario tiene bloqueado su buzón. El mensaje no llego a su destino.
-PLEASE LOGIN TO READ YOUR MESSAGE=por favor loguearse para %s leer sus mensajes
\ No hay ningún carácter de nueva línea al final del fichero
+PLEASE LOGIN TO READ YOUR MESSAGE=Por favor loguearse para %s leer sus mensajes
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.com_newsfeeds.ini 12/language/es-ES/es-ES.com_newsfeeds.ini
--- 11/language/es-ES/es-ES.com_newsfeeds.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_newsfeeds.ini	2009-06-28 09:37:48.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_newsfeeds.ini 1.5.0 2008-07-08 19:36:11 2007-09-01 ~0 $
+# $Id: es-ES.com_newsfeeds.ini 1.5.0 2009-06-28 09:37:48 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
diff -aruN --binary 11/language/es-ES/es-ES.com_poll.ini 12/language/es-ES/es-ES.com_poll.ini
--- 11/language/es-ES/es-ES.com_poll.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_poll.ini	2009-06-28 09:39:22.000000000 +0200
@@ -1,12 +1,12 @@
-# $Id: es-ES.com_poll.ini 1.5.0 2008-07-08 19:36:31 2007-09-01 ~0 $
+# $Id: es-ES.com_poll.ini 1.5.0 2009-06-28 09:39:23 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
 CONTINUE=Continuar
-COOKIES MUST BE ENABLED!=Las cookies deben estar habilitadas!
+COOKIES MUST BE ENABLED!=¡Las cookies deben estar habilitadas!
 FIRST VOTE=Primer voto
 LAST VOTE=Último voto
 NUMBER OF VOTERS=Número de votantes
@@ -15,6 +15,6 @@
 THANKS FOR YOUR VOTE!=¡Gracias por su voto!
 THERE ARE NO RESULTS FOR THIS POLL.=No hay resultados disponibles para esta encuesta.
 WARNSELECT=No ha seleccionado una opción, por favor, inténtelo de nuevo.
-YOU ALREADY VOTED FOR THIS POLL TODAY!=Usted ya votó en esta encuesta hoy!
+YOU ALREADY VOTED FOR THIS POLL TODAY!=¡Usted ya votó en esta encuesta hoy!
 YOUR POLL MUST CONTAIN A TITLE.=Su encuesta debe tener un título
 YOUR POLL MUST HAVE A NON-ZERO LAG TIME.=El tiempo mínimo entre votos no puede ser igual a cero (0)
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.com_search.ini 12/language/es-ES/es-ES.com_search.ini
--- 11/language/es-ES/es-ES.com_search.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_search.ini	2009-06-28 09:41:58.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_search.ini 1.5.0 2008-07-08 19:36:56 2007-10-06 ~0 $
+# $Id: es-ES.com_search.ini 1.5.0 2009-06-28 09:41:58 2007-10-06 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -14,11 +14,11 @@
 MOST POPULAR=Más popular
 NEWEST FIRST=La más nuevo primero
 NO RESULTS WERE FOUND=No se encontraron coincidencias
-OLDEST FIRST=La más antigua primero
+OLDEST FIRST=El más antiguo primero
 ORDERING=Ordenando
 SEARCH=Buscar
 SEARCH KEYWORD=Buscar palabra clave
-SEARCH_MESSAGE=Los términos a buscar deben tener un mínimo de 3 y un máximo de 20 caracteres
+SEARCH_MESSAGE=El término de búsqueda debe tener un mínimo de 3 caracteres y un máximo de 20 caracteres.
 SEARCH ONLY=Sólo buscar
 SECTION/CATEGORY=Sección/Categoría
 TOTALRESULTSFOUND=Total: %s resultados encontrados.
diff -aruN --binary 11/language/es-ES/es-ES.com_user.ini 12/language/es-ES/es-ES.com_user.ini
--- 11/language/es-ES/es-ES.com_user.ini	2009-03-28 21:06:00.000000000 +0100
+++ 12/language/es-ES/es-ES.com_user.ini	2009-06-28 09:52:44.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_user.ini 1.5.0 2009-03-28 20:05:58 2007-10-06 ~0 $
+# $Id: es-ES.com_user.ini 1.5.0 2009-06-28 09:52:44 2007-10-06 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -84,18 +84,18 @@
 REG_ACTIVATE_COMPLETE=Su cuenta fue activada correctamente. Puede acceder a partir de ahora con el nombre de usuario y contraseña que eligió al registrarse
 REG_ACTIVATE_NOT_FOUND_TITLE=Enlace de activación inválido
 REG_ACTIVATE_NOT_FOUND=No existe esa cuenta en nuestra base de datos o esa cuenta ya fue activada.
-REG_COMPLETE_TITLE=Registración finalizada
+REG_COMPLETE_TITLE=Registro completado!
 REG_COMPLETE=Puede acceder al sitio ahora
-REG_COMPLETE_ACTIVATE_TITLE=Registración finalizada
+REG_COMPLETE_ACTIVATE_TITLE=Registro completado!
 REG_COMPLETE_ACTIVATE=Se ha creado su cuenta y se ha enviado un enlace de activación a la dirección e-mail que nos ha proporcionado. Deberá activar su cuenta haciendo clic en el enlace antes de poder acceder al sitio.
 REMEMBER ME=Recordarme
-REMIND_USERNAME_DESCRIPTION=Proporcione una dirección de correo asociada con su cuenta de usuario. Le enviaremos su nombre de usuario a la dirección de e-mail registrada.
+REMIND_USERNAME_DESCRIPTION=Proporcione una dirección de correo asociada con su cuenta de usuario. Le enviaremos su nombre de usuario a la dirección de e-mail con la que se registro.
 REMIND_USERNAME_EMAIL_TIP_TITLE=Dirección de e-mail
 REMIND_USERNAME_EMAIL_TIP_TEXT=Introducir una dirección de e-mail asociada con su cuenta.
 RESEND USERNAME FOR=Volver a enviar el nombre de usuario para %s
 RESEND_MAIL_MSG=La cuenta del usuario %s %s %s %s %s
 RESEND_MSG1=tiene este e-mail asociado.\n un usuario web de
-RESEND_MSG2=a requerido que le sea reenviado su nombre de usuario
+RESEND_MSG2=Ha solicitado que le sea reenviado su nombre de usuario
 RESEND_MSG3=Si no pidió este cambio no se preocupe. Usted esta viendo este mensaje, no los demás.
 RESET_PASSWORD_COMPLETE_DESCRIPTION=Para completar la renovación de su contraseña introduzca una nueva contraseña.
 RESET_PASSWORD_CONFIRM_DESCRIPTION=Enviamos un e-mail a su dirección. Contiene una contraseña de verificación. Copie y pegue esa contraseña en el campo de abajo para probar que es el dueño de dicha cuenta.
@@ -106,7 +106,7 @@
 RESET_PASSWORD_PASSWORD2_TIP_TEXT=Por favor, introduzca nuevamente su contraseña.
 RESET_PASSWORD_PASSWORD2_TIP_TITLE=Verifique su contraseña
 RESET_PASSWORD_REQUEST_DESCRIPTION=Introduzca su nombre de usuario o la dirección de e-mail de su cuenta. Le enviaremos una contraseña de verificación. Una vez que haya recibido la contraseña, podrá elegir una contraseña nueva para su cuenta.
-RESET_PASSWORD_TOKEN_TIP_TEXT=Introduzca la contraseña que enviamos a su e-mail.
+RESET_PASSWORD_TOKEN_TIP_TEXT=Introduzca la contraseña que le enviamos a su e-mail.
 RESET_PASSWORD_TOKEN_TIP_TITLE=Clave
 RESET_PASSWORD_USERNAME_TIP_TEXT=Ingrese el nombre de usuario de su cuenta
 RESET_PASSWORD_USERNAME_TIP_TITLE=Nombre de usuario
@@ -118,7 +118,7 @@
 SEND_MSG_ADMIN=Hola %s,\n\nSe ha registrado un nuevo usuario en %s.\nEste mensaje contiene los detalles:\n\nNombre - %s\nE-mail - %s\nNombre de usuario - %s\n\nNo responda a este mensaje ya que ha sido generado automáticamente para su información.
 SEND REGISTRATION=Enviar registro
 SHOW/HIDE THE SIMPLE GREETING TEXT=Mostrar / Ocultar un simple texto de saludo
-SORRY, NO CORRESPONDING USER WAS FOUND=Lo sentimos, no encontramos un usuario que se corresponda
+SORRY, NO CORRESPONDING USER WAS FOUND=Lo sentimos, no encontramos un usuario que se corresponda.
 SUBMISSION SUCCESS!=¡Artículo enviado con exito!
 SUBMIT=Enviar
 SUBMIT_SUCCESS_DESC=Su artículo has sido enviado correctamente a nuestros administradores. Será revisado antes de ser publicado en nuestro sitio web.
@@ -126,8 +126,8 @@
 TOKEN=Clave
 UNABLE TO FIND A USER WITH GIVEN ACTIVATION STRING=El sistema no puede encontrar a un usuario con la secuencia dada de la activación. La cuenta puede ser activada ya que el código de la activación ha expirado.Es posible que usted necesite volver a registrarse en este sitio.
 UPDATE=Actualizar
-UP_EXISTS=Imagen  $Userfile_name ya existe. Por favor renombre el archivo y repitalo otra vez.
-UP_SIZE=Usted no puede cargar archivos mayores a los 15Kb de tamaño.
+UP_EXISTS=Imagen  $Userfile_name ya existe. Por favor renombre el archivo y repita la operación otra vez.
+UP_SIZE=Usted no puede cargar archivos mayores de 15Kb de tamaño.
 USERNAME RESENT=Nombre de usuario enviado
 USERNAME_REMINDER_EMAIL_TEXT=Hola,\n\nHemos recibido una solicitud para enviarle un recordatorio de su nombre de usuario para su cuenta %s.\n\nSu nombre de usuario es %s.\n\nPara iniciar sesión en su cuenta, haga clic en el siguiente enlace:\n\n%s\n\nMuchas gracias.
 USERNAME_REMINDER_EMAIL_TITLE=Su nombre de usuario %s
@@ -136,8 +136,8 @@
 USER EDITOR=Editor del usuario
 USER NAME=Nombre de usuario
 USER UNKNOWN=Usuario desconocido
-VERIFY PASSWORD=Verifique su clave
-WARNJAVASCRIPT=¡Advertencia! Javascript debe estar activado para un funcionamiento correcto del sitio
+VERIFY PASSWORD=Verifique su contraseña
+WARNJAVASCRIPT=¡Advertencia! el Javascript de su navegador debe estar activado para un funcionamiento correcto del sitio
 WELCOME!=Bienvenido
 WELCOME_DESC=Bienvenido al contenido de usuarios registrados de nuestro sitio web
 YOU MAY ONLY UPLOAD A GIF, OR JPG IMAGE.=Puede subir únicamente imágenes .gif o .jpg
diff -aruN --binary 11/language/es-ES/es-ES.com_weblinks.ini 12/language/es-ES/es-ES.com_weblinks.ini
--- 11/language/es-ES/es-ES.com_weblinks.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_weblinks.ini	2009-06-28 09:54:48.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_weblinks.ini 1.5.0 2008-07-08 19:39:42 2007-09-01 ~0 $
+# $Id: es-ES.com_weblinks.ini 1.5.0 2009-06-28 09:54:48 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -18,7 +18,7 @@
 NUM=#
 ORDERING=Solicitando
 PLEASE PROVIDE A VALID URL=Por favor, introduzca una URL válida
-SUBMIT A WEB LINK=Sugerir un enlace web
+SUBMIT A WEB LINK=Enviar un enlace web
 THANK_SUB=Gracias por su sugerencia. Será revisada por un administrador antes de ser publicada en nuestro sitio.
 URL=URL
 WEB LINK=Enlaces web
diff -aruN --binary 11/language/es-ES/es-ES.com_wrapper.ini 12/language/es-ES/es-ES.com_wrapper.ini
--- 11/language/es-ES/es-ES.com_wrapper.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.com_wrapper.ini	2009-06-28 09:55:54.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.com_wrapper.ini 1.5.0 2008-07-08 19:40:39 2007-09-01 ~0 $
+# $Id: es-ES.com_wrapper.ini 1.5.0 2009-06-28 09:55:55 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
diff -aruN --binary 11/language/es-ES/es-ES.ini 12/language/es-ES/es-ES.ini
--- 11/language/es-ES/es-ES.ini	2009-01-10 21:57:54.000000000 +0100
+++ 12/language/es-ES/es-ES.ini	2009-07-01 10:14:58.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.ini 1.5.0 2009-01-10 20:57:52 2007-10-06 ~0 $
+# $Id: es-ES.ini 1.5.0 2009-07-01 10:14:58 2007-10-06 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -183,9 +183,9 @@
 ERRORXMLSETUP=No se han encontrado archivos xml en el directorio de instalación
 FAILED TO SET LDAP_OPT_REFERRALS OPTION=Falló al configurar la opción <code>LDAP_OPT_REFERRALS</code>
 FAILED TO SET LDAP PROTOCOL V3=Falló al configurar el protocolo <code>LDAP V3</code>
-FIRST=primer
+FIRST=primero
 GENERATED=Generado
-GO TO THE HOME PAGE=vaya a la página de inicio
+GO TO THE HOME PAGE=Ir a la página de inicio
 HAS BEEN JUST SUBMITTED BY USER=ha sido definido por el usuario
 HANDLER NOT DEFINED FOR TYPE=El manejador no ha sido definido por el ipo
 HOME=Inicio
@@ -229,7 +229,7 @@
 NOT AUTHORISED=No está autorizado
 NOT_EXIST=La página que usted trata de acceder no existe.<br />Por favor seleccione una página del menú principal.
 NOT FOUND=no encontrado
-NOTICE=Notice
+NOTICE=Noticia
 NUM=#
 OF=de
 PAGE COULD NOT BE FOUND=La página no fue encontrada
diff -aruN --binary 11/language/es-ES/es-ES.mod_archive.ini 12/language/es-ES/es-ES.mod_archive.ini
--- 11/language/es-ES/es-ES.mod_archive.ini	2009-01-10 22:03:02.000000000 +0100
+++ 12/language/es-ES/es-ES.mod_archive.ini	2009-06-28 09:56:52.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.mod_archive.ini 1.5.0 2009-01-10 21:03:00 19:14:51 ~0 $
+# $Id: es-ES.mod_archive.ini 1.5.0 2009-06-28 09:56:53 19:14:51 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
diff -aruN --binary 11/language/es-ES/es-ES.mod_banners.ini 12/language/es-ES/es-ES.mod_banners.ini
--- 11/language/es-ES/es-ES.mod_banners.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.mod_banners.ini	2009-06-28 09:57:56.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.mod_banners.ini 1.5.0 2008-07-08 19:42:50 2007-09-01 ~0 $
+# $Id: es-ES.mod_banners.ini 1.5.0 2009-06-28 09:57:56 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
diff -aruN --binary 11/language/es-ES/es-ES.mod_breadcrumbs.ini 12/language/es-ES/es-ES.mod_breadcrumbs.ini
--- 11/language/es-ES/es-ES.mod_breadcrumbs.ini	2009-01-10 22:03:30.000000000 +0100
+++ 12/language/es-ES/es-ES.mod_breadcrumbs.ini	2009-06-28 10:02:58.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.mod_breadcrumbs.ini 1.5.0 2009-01-10 21:03:28 2007-09-01 ~0 $
+# $Id: es-ES.mod_breadcrumbs.ini 1.5.0 2009-06-28 10:02:59 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -8,12 +8,12 @@
 A TEXT SEPARATOR=Separador de texto
 MOD_BREADCRUMBS=<em>mod_breadcrumbs</em>
 BREADCRUMBS=Ruta de acceso
-PARAMSHOWHOME=Mostrar/Ocultar el elemento Inicio en la ruta o Pathway
+PARAMSHOWHOME=Mostrar/Ocultar el elemento en la ruta o Pathway del Inicio
 PARAMSHOWLAST=Mostrar/Ocultar el ultimo elemento en la ruta (pathway)
-PARAMHOMETEXT=Este texto se mostrará como la entrada Inicio
+PARAMHOMETEXT=Este texto se mostrará como la entrada de Inicio
 PARAMSHOWCOMPONENT=Mostrar/Ocultar el elemento componente en la ruta
-SHOW HOME=Mostrar inicio del sitio
-SHOW LAST=Mostrar ultimo
+SHOW HOME=Mostrar en el inicio del sitio
+SHOW LAST=Mostrar el ultimo
 TEXT FOR HOME ENTRY=Texto de entrada para el inicio
 TEXT SEPARATOR=Separador de texto
 THIS MODULE DISPLAYS THE BREADCRUMBS=Este módulo muestra la ruta del sitio
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.mod_custom.ini 12/language/es-ES/es-ES.mod_custom.ini
--- 11/language/es-ES/es-ES.mod_custom.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.mod_custom.ini	2009-06-28 10:03:46.000000000 +0200
@@ -1,10 +1,10 @@
-# $Id: es-ES.mod_custom.ini 1.5.0 2008-07-08 19:45:17 19:19:58 ~0 $
+# $Id: es-ES.mod_custom.ini 1.5.0 2009-06-28 10:03:47 19:19:58 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
-DESCMODCUSTOM=Este módulo permite que crees tu propio módulo usando HTML en un editor WYSIWYG
+DESCMODCUSTOM=Este módulo permite crear su propio módulo usando HTML en un editor WYSIWYG
 MOD_CUSTOM=<em>mod_custom</em>
 CUSTOM HTML=Personalizar HTML
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.mod_feed.ini 12/language/es-ES/es-ES.mod_feed.ini
--- 11/language/es-ES/es-ES.mod_feed.ini	2009-01-10 22:04:28.000000000 +0100
+++ 12/language/es-ES/es-ES.mod_feed.ini	2009-07-01 10:16:20.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.mod_feed.ini 1.5.0 2009-01-10 21:04:26 2007-10-06 ~0 $
+# $Id: es-ES.mod_feed.ini 1.5.0 2009-07-01 10:16:20 2007-10-06 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -27,4 +27,4 @@
 SHOW THE IMAGE ASSOCIATED WITH THE WHOLE FEED=Muestra la imagen asociada con todo el Feed
 THIS MODULE ALLOWS THE DISPLAYING OF A SYNDICATED FEED=Este módulo muestra la presentación de la sindicación feed
 WORD COUNT=Contador general
-THE TIME IN SECONDS BEFORE THE MODULE IS RE-CACHED.=El tiempo en segundos antes de que el módulo vuelva a re-cachéar
\ No hay ningún carácter de nueva línea al final del fichero
+THE TIME IN MINUTES BEFORE THE MODULE IS RE-CACHED.=El tiempo en segundos antes de que el módulo vuelva a re-cachéar
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.mod_wrapper.ini 12/language/es-ES/es-ES.mod_wrapper.ini
--- 11/language/es-ES/es-ES.mod_wrapper.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.mod_wrapper.ini	2009-06-28 09:25:32.000000000 +0200
@@ -1,6 +1,6 @@
-# $Id: es-ES.mod_wrapper.ini 1.5.0 2008-07-08 20:14:42 2007-09-01 ~0 $
+# $Id: es-ES.mod_wrapper.ini 1.5.0 2009-06-28 09:25:32 2007-09-01 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
@@ -13,7 +13,7 @@
 MOD_WRAPPER=<em>mod_wrapper</em>
 NAME OF THE IFRAME WHEN USED AS TARGET=Nombre del IFrame al ser utilizado como objetivo
 NO_IFRAMES=No Iframes
-PARAMAUTOADD=Se añadirá http:// al principio a menos que se detecte http:// o https:// en el enlace url que ha puesto.
+PARAMAUTOADD=Se añadirá http:// al principio a menos que se detecte http:// o https:// en el enlace url que ha puesto.Esto le permite cambiar la habilidad de apagado.
 PARAMAUTOHEIGHT=La altura se ajustará automáticamente al tamaño de la página externa. Esto funcionará solamente en páginas de su propio dominio.
 PARAMWIDTH=Ancho de la ventana IFrame, puede introducir medidas absolutas en pixeles, o una medida relativa agregando %
 SCROLL BARS=Barras de desplazamiento
diff -aruN --binary 11/language/es-ES/es-ES.plg_system_debug.ini 12/language/es-ES/es-ES.plg_system_debug.ini
--- 11/language/es-ES/es-ES.plg_system_debug.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.plg_system_debug.ini	2009-06-28 09:20:28.000000000 +0200
@@ -1,21 +1,21 @@
-# $Id: es-ES.plg_system_debug.ini 1.5.0 2008-07-08 20:18:13 19:15:38 ~0 $
+# $Id: es-ES.plg_system_debug.ini 1.5.0 2009-06-28 09:20:28 19:15:38 ~0 $
 # author Joomla! Spanish
-# copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
+# copyright (C) 2009 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 
 # Note : All ini files need to be saved as UTF-8
 
-ALL MODES=All modes
-DESIGNER MODE=Designer mode
-DIAGNOSTIC MODE=Diagnostic mode
-DISPLAY LOADED LANGUAGE FILES=Display loaded language files
-DISPLAYS ORPHANED STRINGS IN DIFFERENT WAYS=Displays orphaned strings in different ways
-IF YES, DISPLAY A LIST OF THE LANGUAGE FILES LOADED=If yes, display a list of the language files loaded
-STRING FORMAT=String Format
-STRIP STRING PREFIX=Strip Key Prefix
-STRIP STRING PREFIX DESC=Strips this prefix from the actual string prior to displaying designer results
-DISPLAY PROFILING INFORMATION=Display Profiling Information
-IF YES, DISPLAY PROFILING INFORMATION=If yes, display profiling information
+ALL MODES=Todos los modos
+DESIGNER MODE=Modo de diseñador
+DIAGNOSTIC MODE=Modo de diagnóstico
+DISPLAY LOADED LANGUAGE FILES=Mostrar los archivos del idioma cargados
+DISPLAYS ORPHANED STRINGS IN DIFFERENT WAYS=Muestra cadenas huérfanas de diferentes maneras
+IF YES, DISPLAY A LIST OF THE LANGUAGE FILES LOADED=En caso afirmativo, mostrar una lista de los archivos cargados
+STRING FORMAT=Formato de cadenas
+STRIP STRING PREFIX=Zona del prefijo clave
+STRIP STRING PREFIX DESC=Zonas de este prefijo de la cadena antes de mostrar los resultados de diseño
+DISPLAY PROFILING INFORMATION=Mostrar información de perfiles
+IF YES, DISPLAY PROFILING INFORMATION=En caso afirmativo, mostrar la información de perfiles
 
 DISPLAY SQL QUERY LOG=Ver SQL query log
 DISPLAY MEMORY USAGE=Ver uso de la memoria
@@ -24,11 +24,11 @@
 IF YES, DISPLAY MEMORY USAGE=En caso afirmativo, mostrar el uso de la memoria
 IF YES, DISPLAY UNDEFINED LANGUAGE STRINGS=En caso afirmativo, mostrar cadenas del idioma indefinidas
 LANGUAGE FILES LOADED=Archivos de idioma cargados
-MEMORY USAGE=Memoria Usada
+MEMORY USAGE=Memoria usada
 PROFILE INFORMATION=Perfíl de la información
 PROVIDES DEBUG INFORMATION=Proporciona información debug
 QUERIES LOGGED=%s queries identificadas
-LEGACY QUERIES LOGGED=%s legacy queries identificadas
+LEGACY QUERIES LOGGED=%s legado de las queries identificadas
 UNTRANSLATED STRINGS=Cadenas sin traducir
-UNTRANSLATED STRINGS DESIGNER=Untranslated Strings Designer
-UNTRANSLATED STRINGS DIAGNOSTIC=Untranslated Strings Diagnostic
\ No hay ningún carácter de nueva línea al final del fichero
+UNTRANSLATED STRINGS DESIGNER=Sin traducir las cadenas de diseñador
+UNTRANSLATED STRINGS DIAGNOSTIC=Sin traducir las cadenas de diagnóstico
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.tpl_beez.ini 12/language/es-ES/es-ES.tpl_beez.ini
--- 11/language/es-ES/es-ES.tpl_beez.ini	2008-07-08 21:20:28.000000000 +0200
+++ 12/language/es-ES/es-ES.tpl_beez.ini	2009-07-01 10:17:02.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: es-ES.tpl_beez.ini 1.5.0 2008-07-08 20:18:44 03:11:55 ~0 $
+# $Id: es-ES.tpl_beez.ini 1.5.0 2009-07-01 10:17:02 03:11:55 ~0 $
 # author Joomla! Spanish
 # copyright (C) 2008 JoomlaSpanish.org  All rights reserved.
 # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
@@ -22,4 +22,5 @@
 SEARCH, VIEW AND NAVIGATION=Search, View and Navigation
 SKIP TO CONTENT=Saltar al contenido
 SMALLER=smaller
-YOU ARE HERE=Usted está aquí:
\ No hay ningún carácter de nueva línea al final del fichero
+YOU ARE HERE=Usted está aquí:
+LOST PASSWORD?=Lost Password?
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/language/es-ES/es-ES.xml 12/language/es-ES/es-ES.xml
--- 11/language/es-ES/es-ES.xml	2009-05-21 07:55:10.000000000 +0200
+++ 12/language/es-ES/es-ES.xml	2009-06-26 09:01:26.000000000 +0200
@@ -3,7 +3,7 @@
 	<tag>es-ES</tag>
 	<name>Español (spanish formal Internacional)</name>
 	<description>Idioma creado por Joomla! Spanish para Joomla 1.5 zona frontal - Traductor oficial asociado</description>
-	<version>1.5.11</version>
+	<version>1.5.12</version>
 	<creationDate>2009-05-21</creationDate>
 	<author>Joomla! Spanish</author>
 	<authorUrl>www.joomlaspanish.org</authorUrl>
diff -aruN --binary 11/libraries/bitfolge/feedcreator.php 12/libraries/bitfolge/feedcreator.php
--- 11/libraries/bitfolge/feedcreator.php	2008-09-09 17:19:40.000000000 +0200
+++ 12/libraries/bitfolge/feedcreator.php	2009-06-30 22:01:32.000000000 +0200
@@ -798,7 +798,7 @@
 	 * @access private
 	 */
 	function _generateFilename() {
-		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		$fileInfo = pathinfo(str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"]));
 		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml";
 	}
 
@@ -1541,7 +1541,7 @@
 	 * @access private
 	 */
 	function _generateFilename() {
-		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		$fileInfo = pathinfo(str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"]));
 		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".mbox";
 	}
 }
@@ -1745,7 +1745,7 @@
 	 * @access private
 	 */
 	function _generateFilename() {
-		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		$fileInfo = pathinfo(str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"]));
 		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".html";
 	}
 }
@@ -1784,7 +1784,7 @@
 	 * @access private
 	 */
 	function _generateFilename() {
-		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		$fileInfo = pathinfo(str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"]));
 		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".js";
 	}
 
@@ -1880,4 +1880,4 @@
 
 
 
-***************************************************************************/
\ No hay ningún carácter de nueva línea al final del fichero
+***************************************************************************/
diff -aruN --binary 11/libraries/joomla/config.php 12/libraries/joomla/config.php
--- 11/libraries/joomla/config.php	2008-07-07 00:39:38.000000000 +0200
+++ 12/libraries/joomla/config.php	2009-06-30 22:01:32.000000000 +0200
@@ -20,6 +20,8 @@
 	var $fromname 	= '';
 	var $sendmail 	= '/usr/sbin/sendmail';
 	var $smtpauth 	= '0';
+	var $smtpsecure = 'none';
+	var $smtpport	= '25';
 	var $smtpuser 	= '';
 	var $smtppass 	= '';
 	var $smtphost 	= 'localhost';
diff -aruN --binary 11/libraries/joomla/document/html/renderer/module.php 12/libraries/joomla/document/html/renderer/module.php
--- 11/libraries/joomla/document/html/renderer/module.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/libraries/joomla/document/html/renderer/module.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: module.php 11810 2009-05-13 16:14:07Z ian $
+* @version		$Id: module.php 12231 2009-06-21 02:16:14Z ian $
 * @package		Joomla.Framework
 * @subpackage	Document
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -79,7 +79,7 @@
 			$cache->setLifeTime( $mod_params->get( 'cache_time', $conf->getValue( 'config.cachetime' ) * 60 ) );
 			$cache->setCacheValidation(true);
 
-			$contents =  $cache->get( array('JModuleHelper', 'renderModule'), array( $module, $params ), $module->id. $user->get('aid', 0).md5(JRequest::getURI()) );
+			$contents =  $cache->get( array('JModuleHelper', 'renderModule'), array( $module, $params ), $module->id. $user->get('aid', 0) );
 		} else {
 			$contents = JModuleHelper::renderModule($module, $params);
 		}
diff -aruN --binary 11/libraries/joomla/environment/uri.php 12/libraries/joomla/environment/uri.php
--- 11/libraries/joomla/environment/uri.php	2008-09-09 17:19:42.000000000 +0200
+++ 12/libraries/joomla/environment/uri.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: uri.php 10919 2008-09-09 20:50:29Z willebil $
+ * @version		$Id: uri.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla.Framework
  * @subpackage	Environment
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -220,7 +220,7 @@
 
 				if (strpos(php_sapi_name(), 'cgi') !== false && !empty($_SERVER['REQUEST_URI'])) {
 					//Apache CGI
-					$base['path'] =  rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
+					$base['path'] =  rtrim(dirname(str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"])), '/\\');
 				} else {
 					//Others
 					$base['path'] =  rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\');
diff -aruN --binary 11/libraries/joomla/factory.php 12/libraries/joomla/factory.php
--- 11/libraries/joomla/factory.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/libraries/joomla/factory.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: factory.php 11811 2009-05-13 16:16:52Z ian $
+ * @version		$Id: factory.php 12389 2009-07-01 00:34:45Z ian $
  * @package		Joomla.Framework
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
  * @license		GNU/GPL, see LICENSE.php
@@ -591,6 +591,8 @@
 		$smtpuser 	= $conf->getValue('config.smtpuser');
 		$smtppass  	= $conf->getValue('config.smtppass');
 		$smtphost 	= $conf->getValue('config.smtphost');
+		$smtpsecure	= $conf->getValue('config.smtpsecure');
+		$smtpport	= $conf->getValue('config.smtpport');
 		$mailfrom 	= $conf->getValue('config.mailfrom');
 		$fromname 	= $conf->getValue('config.fromname');
 		$mailer 	= $conf->getValue('config.mailer');
@@ -605,7 +607,7 @@
 		switch ($mailer)
 		{
 			case 'smtp' :
-				$mail->useSMTP($smtpauth, $smtphost, $smtpuser, $smtppass);
+				$mail->useSMTP($smtpauth, $smtphost, $smtpuser, $smtppass, $smtpsecure, $smtpport);
 				break;
 			case 'sendmail' :
 				$mail->useSendmail($sendmail);
@@ -655,7 +657,7 @@
 		}
 
 		$tmpl->addGlobalVar( 'option', 				$GLOBALS['option'] );
-		$tmpl->addGlobalVar( 'self', 				$_SERVER['PHP_SELF'] );
+		$tmpl->addGlobalVar( 'self', 				str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"]) );
 		$tmpl->addGlobalVar( 'uri_query', 			$_SERVER['QUERY_STRING'] );
 		$tmpl->addGlobalVar( 'REQUEST_URI',			JRequest::getURI() );
 		if (isset($GLOBALS['Itemid'])) {
diff -aruN --binary 11/libraries/joomla/filesystem/file.php 12/libraries/joomla/filesystem/file.php
--- 11/libraries/joomla/filesystem/file.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/libraries/joomla/filesystem/file.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: file.php 11807 2009-05-10 00:33:43Z kdevine $
+ * @version		$Id: file.php 12346 2009-06-24 13:16:14Z ian $
  * @package		Joomla.Framework
  * @subpackage	FileSystem
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -334,9 +334,9 @@
 			$dest = JPath::clean(str_replace(JPATH_ROOT, $FTPOptions['root'], $dest), '/');
 
 			// Copy the file to the destination directory
-			if ($ftp->store($src, $dest)) {
-				$ftp->chmod($dest, 0777);
-				$ret = true;
+			if (is_uploaded_file($src) && $ftp->store($src, $dest))
+			{
+                		unlink($src);
 			} else {
 				JError::raiseWarning(21, JText::_('WARNFS_ERR02'));
 			}
diff -aruN --binary 11/libraries/joomla/html/editor.php 12/libraries/joomla/html/editor.php
--- 11/libraries/joomla/html/editor.php	2008-09-09 17:19:42.000000000 +0200
+++ 12/libraries/joomla/html/editor.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: editor.php 10707 2008-08-21 09:52:47Z eddieajau $
+ * @version		$Id: editor.php 12075 2009-06-14 18:32:10Z ian $
  * @package		Joomla.Framework
  * @subpackage	HTML
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -257,8 +257,9 @@
 				$plugin = new $className($this, (array)$plugin);
 			}
 
-			// Try to authenticate
-			$result[] = $plugin->onDisplay($editor);
+			// Try to authenticate -- only add to array if authentication is successful
+			$resultTest = $plugin->onDisplay($editor);
+			if ($resultTest) $result[] =  $resultTest;
 		}
 
 		return $result;
diff -aruN --binary 11/libraries/joomla/html/html/list.php 12/libraries/joomla/html/html/list.php
--- 11/libraries/joomla/html/html/list.php	2008-09-09 17:19:42.000000000 +0200
+++ 12/libraries/joomla/html/html/list.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: list.php 10713 2008-08-21 10:09:57Z eddieajau $
+* @version		$Id: list.php 12348 2009-06-24 13:34:12Z ian $
 * @package		Joomla.Framework
 * @subpackage		HTML
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -210,7 +210,7 @@
 	/**
 	* Select list of active sections
 	*/
-	function section( $name, $active = NULL, $javascript = NULL, $order = 'ordering', $uncategorized = true )
+	function section( $name, $active = NULL, $javascript = NULL, $order = 'ordering', $uncategorized = true, $scope = 'content' )
 	{
 		$db =& JFactory::getDBO();
 
@@ -223,6 +223,7 @@
 		$query = 'SELECT id AS value, title AS text'
 		. ' FROM #__sections'
 		. ' WHERE published = 1'
+		. ' AND scope = ' . $db->Quote($scope)
 		. ' ORDER BY ' . $order
 		;
 		$db->setQuery( $query );
@@ -232,4 +233,4 @@
 
 		return $category;
 	}
-}
\ No hay ningún carácter de nueva línea al final del fichero
+}
diff -aruN --binary 11/libraries/joomla/html/html.php 12/libraries/joomla/html/html.php
--- 11/libraries/joomla/html/html.php	2008-07-07 00:39:36.000000000 +0200
+++ 12/libraries/joomla/html/html.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: html.php 10381 2008-06-01 03:35:53Z pasamio $
+ * @version		$Id: html.php 12350 2009-06-24 13:42:16Z ian $
  * @package		Joomla.Framework
  * @subpackage	HTML
  * @copyright	Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
@@ -239,8 +239,8 @@
 	 */
 	function tooltip($tooltip, $title='', $image='tooltip.png', $text='', $href='', $link=1)
 	{
-		$tooltip	= addslashes(htmlspecialchars($tooltip));
-		$title		= addslashes(htmlspecialchars($title));
+		$tooltip	= addslashes(htmlspecialchars($tooltip, ENT_QUOTES, 'UTF-8'));
+		$title		= addslashes(htmlspecialchars($title, ENT_QUOTES, 'UTF-8'));
 
 		if ( !$text ) {
 			$image 	= JURI::root(true).'/includes/js/ThemeOffice/'. $image;
diff -aruN --binary 11/libraries/joomla/mail/mail.php 12/libraries/joomla/mail/mail.php
--- 11/libraries/joomla/mail/mail.php	2008-09-09 17:19:42.000000000 +0200
+++ 12/libraries/joomla/mail/mail.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: mail.php 10707 2008-08-21 09:52:47Z eddieajau $
+ * @version		$Id: mail.php 12308 2009-06-23 04:05:28Z ian $
  * @package		Joomla.Framework
  * @subpackage	Mail
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -298,22 +298,24 @@
 	 * @param string $host SMTP Host [optional]
 	 * @param string $user SMTP Username [optional]
 	 * @param string $pass SMTP Password [optional]
+	 * @param string $secure SMTP Secure ssl,tls [optinal]
+	 * @param string $port SMTP Port [optional]
 	 * @return boolean True on success
 	 * @since 1.5
 	 */
-	function useSMTP($auth = null, $host = null, $user = null, $pass = null)
+	function useSMTP($auth = null, $host = null, $user = null, $pass = null,$secure = null, $port = 25)
 	{
 		$this->SMTPAuth = $auth;
 		$this->Host 	= $host;
 		$this->Username = $user;
 		$this->Password = $pass;
+		$this->Port     = $port;
+		if ($secure == 'ssl' || $secure == 'tls') {
+			$this->SMTPSecure = $secure;
+		}
 
 		if ($this->SMTPAuth !== null && $this->Host !== null && $this->Username !== null && $this->Password !== null) {
 			$this->IsSMTP();
-			return true;
-		} else {
-			$this->IsMail();
-			return false;
 		}
 	}
 }
diff -aruN --binary 11/libraries/joomla/version.php 12/libraries/joomla/version.php
--- 11/libraries/joomla/version.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/libraries/joomla/version.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: version.php 11987 2009-06-03 01:08:57Z ian $
+ * @version		$Id: version.php 12389 2009-07-01 00:34:45Z ian $
  * @package	Joomla.Framework
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
  * @license		GNU/GPL, see LICENSE.php
@@ -24,21 +24,21 @@
 	/** @var int Main Release Level */
 	var $RELEASE 	= '1.5';
 	/** @var string Development Status */
-	var $DEV_STATUS = 'Production/Stable';
+	var $DEV_STATUS = 'Stable';
 	/** @var int Sub Release Level */
-	var $DEV_LEVEL 	= '11';
+	var $DEV_LEVEL 	= '12';
 	/** @var int build Number */
 	var $BUILD	= '';
 	/** @var string Codename */
-	var $CODENAME 	= 'Vea';
+	var $CODENAME 	= 'Wojmamni Ama Woi';
 	/** @var string Date */
-	var $RELDATE 	= '03-June-2009';
+	var $RELDATE 	= '01-July-2009';
 	/** @var string Time */
-	var $RELTIME 	= '03:30';
+	var $RELTIME 	= '02:00';
 	/** @var string Timezone */
 	var $RELTZ 	= 'GMT';
 	/** @var string Copyright Text */
-	var $COPYRIGHT 	= 'Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.';
+	var $COPYRIGHT 	= 'Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.';
 	/** @var string URL */
 	var $URL 	= '<a href="http://www.joomla.org">Joomla!</a> is Free Software released under the GNU General Public License.';
 
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Association.php 12/libraries/openid/Auth/OpenID/Association.php
--- 11/libraries/openid/Auth/OpenID/Association.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Association.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * @access private
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/AX.php 12/libraries/openid/Auth/OpenID/AX.php
--- 11/libraries/openid/Auth/OpenID/AX.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/AX.php	2009-06-30 22:01:32.000000000 +0200
@@ -7,6 +7,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require utility classes and functions for the consumer.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/BigMath.php 12/libraries/openid/Auth/OpenID/BigMath.php
--- 11/libraries/openid/Auth/OpenID/BigMath.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/BigMath.php	2009-06-30 22:01:32.000000000 +0200
@@ -15,6 +15,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Needed for random number generation
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Consumer.php 12/libraries/openid/Auth/OpenID/Consumer.php
--- 11/libraries/openid/Auth/OpenID/Consumer.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Consumer.php	2009-06-30 22:01:32.000000000 +0200
@@ -157,6 +157,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require utility classes and functions for the consumer.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/CryptUtil.php 12/libraries/openid/Auth/OpenID/CryptUtil.php
--- 11/libraries/openid/Auth/OpenID/CryptUtil.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/CryptUtil.php	2009-06-30 22:01:32.000000000 +0200
@@ -15,6 +15,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 if (!defined('Auth_OpenID_RAND_SOURCE')) {
     /**
      * The filename for a source of random bytes. Define this yourself
diff -aruN --binary 11/libraries/openid/Auth/OpenID/DatabaseConnection.php 12/libraries/openid/Auth/OpenID/DatabaseConnection.php
--- 11/libraries/openid/Auth/OpenID/DatabaseConnection.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/DatabaseConnection.php	2009-06-30 22:01:32.000000000 +0200
@@ -10,6 +10,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * An empty base class intended to emulate PEAR connection
  * functionality in applications that supply their own database
diff -aruN --binary 11/libraries/openid/Auth/OpenID/DiffieHellman.php 12/libraries/openid/Auth/OpenID/DiffieHellman.php
--- 11/libraries/openid/Auth/OpenID/DiffieHellman.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/DiffieHellman.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once 'Auth/OpenID.php';
 require_once 'Auth/OpenID/BigMath.php';
 
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Discover.php 12/libraries/openid/Auth/OpenID/Discover.php
--- 11/libraries/openid/Auth/OpenID/Discover.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Discover.php	2009-06-30 22:01:32.000000000 +0200
@@ -4,6 +4,9 @@
  * The OpenID and Yadis discovery implementation for OpenID 1.2.
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once "Auth/OpenID.php";
 require_once "Auth/OpenID/Parse.php";
 require_once "Auth/OpenID/Message.php";
diff -aruN --binary 11/libraries/openid/Auth/OpenID/DumbStore.php 12/libraries/openid/Auth/OpenID/DumbStore.php
--- 11/libraries/openid/Auth/OpenID/DumbStore.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/DumbStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Import the interface for creating a new store class.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Extension.php 12/libraries/openid/Auth/OpenID/Extension.php
--- 11/libraries/openid/Auth/OpenID/Extension.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Extension.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,6 +6,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require the Message implementation.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/FileStore.php 12/libraries/openid/Auth/OpenID/FileStore.php
--- 11/libraries/openid/Auth/OpenID/FileStore.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/FileStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require base class for creating a new interface.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/HMAC.php 12/libraries/openid/Auth/OpenID/HMAC.php
--- 11/libraries/openid/Auth/OpenID/HMAC.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/HMAC.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once 'Auth/OpenID.php';
 
 /**
diff -aruN --binary 11/libraries/openid/Auth/OpenID/HMACSHA1.php 12/libraries/openid/Auth/OpenID/HMACSHA1.php
--- 11/libraries/openid/Auth/OpenID/HMACSHA1.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Auth/OpenID/HMACSHA1.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,72 +0,0 @@
-<?php
-
-/**
- * This is the HMACSHA1 implementation for the OpenID library.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @access private
- * @package OpenID
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-/**
- * SHA1_BLOCKSIZE is this module's SHA1 blocksize used by the fallback
- * implementation.
- */
-define('Auth_OpenID_SHA1_BLOCKSIZE', 64);
-
-if (!function_exists('sha1')) {
-    /**
-     * Return a raw SHA1 hash of the given string
-     *
-     * XXX: include the SHA1 code from Dan Libby's OpenID library
-     */
-    function Auth_OpenID_SHA1($text)
-    {
-        trigger_error('No SHA1 function found', E_USER_ERROR);
-    }
-} else {
-    /**
-     * @ignore
-     */
-    function Auth_OpenID_SHA1($text)
-        {
-            $hex = sha1($text);
-            $raw = '';
-            for ($i = 0; $i < 40; $i += 2) {
-                $hexcode = substr($hex, $i, 2);
-                $charcode = (int)base_convert($hexcode, 16, 10);
-                $raw .= chr($charcode);
-            }
-            return $raw;
-        }
-}
-
-/**
- * Compute an HMAC/SHA1 hash.
- *
- * @access private
- * @param string $key The HMAC key
- * @param string $text The message text to hash
- * @return string $mac The MAC
- */
-function Auth_OpenID_HMACSHA1($key, $text)
-{
-    if (strlen($key) > Auth_OpenID_SHA1_BLOCKSIZE) {
-        $key = Auth_OpenID_SHA1($key, true);
-    }
-
-    $key = str_pad($key, Auth_OpenID_SHA1_BLOCKSIZE, chr(0x00));
-    $ipad = str_repeat(chr(0x36), Auth_OpenID_SHA1_BLOCKSIZE);
-    $opad = str_repeat(chr(0x5c), Auth_OpenID_SHA1_BLOCKSIZE);
-    $hash1 = Auth_OpenID_SHA1(($key ^ $ipad) . $text, true);
-    $hmac = Auth_OpenID_SHA1(($key ^ $opad) . $hash1, true);
-    return $hmac;
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Interface.php 12/libraries/openid/Auth/OpenID/Interface.php
--- 11/libraries/openid/Auth/OpenID/Interface.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Interface.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * This is the interface for the store objects the OpenID library
  * uses. It is a single class that provides all of the persistence
diff -aruN --binary 11/libraries/openid/Auth/OpenID/KVForm.php 12/libraries/openid/Auth/OpenID/KVForm.php
--- 11/libraries/openid/Auth/OpenID/KVForm.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/KVForm.php	2009-06-30 22:01:32.000000000 +0200
@@ -15,6 +15,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Container for key-value/comma-newline OpenID format and parsing
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/MemcachedStore.php 12/libraries/openid/Auth/OpenID/MemcachedStore.php
--- 11/libraries/openid/Auth/OpenID/MemcachedStore.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/MemcachedStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -15,6 +15,9 @@
  * Contributed by Open Web Technologies <http://openwebtech.ru/>
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Import the interface for creating a new store class.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Message.php 12/libraries/openid/Auth/OpenID/Message.php
--- 11/libraries/openid/Auth/OpenID/Message.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Message.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,6 +6,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Import tools needed to deal with messages.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/MySQLStore.php 12/libraries/openid/Auth/OpenID/MySQLStore.php
--- 11/libraries/openid/Auth/OpenID/MySQLStore.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/MySQLStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,6 +6,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require the base class file.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Nonce.php 12/libraries/openid/Auth/OpenID/Nonce.php
--- 11/libraries/openid/Auth/OpenID/Nonce.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Nonce.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,6 +6,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Need CryptUtil to generate random strings.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/PAPE.php 12/libraries/openid/Auth/OpenID/PAPE.php
--- 11/libraries/openid/Auth/OpenID/PAPE.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/PAPE.php	2009-06-30 22:01:32.000000000 +0200
@@ -8,6 +8,9 @@
  * http://openid.net/developers/specs/
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once "Auth/OpenID/Extension.php";
 
 define('Auth_OpenID_PAPE_NS_URI',
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Parse.php 12/libraries/openid/Auth/OpenID/Parse.php
--- 11/libraries/openid/Auth/OpenID/Parse.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Parse.php	2009-06-30 22:01:32.000000000 +0200
@@ -79,6 +79,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require Auth_OpenID::arrayGet().
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/PostgreSQLStore.php 12/libraries/openid/Auth/OpenID/PostgreSQLStore.php
--- 11/libraries/openid/Auth/OpenID/PostgreSQLStore.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/PostgreSQLStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,6 +6,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require the base class file.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/Server.php 12/libraries/openid/Auth/OpenID/Server.php
--- 11/libraries/openid/Auth/OpenID/Server.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/Server.php	2009-06-30 22:01:32.000000000 +0200
@@ -89,6 +89,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Required imports
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/ServerRequest.php 12/libraries/openid/Auth/OpenID/ServerRequest.php
--- 11/libraries/openid/Auth/OpenID/ServerRequest.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/ServerRequest.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Imports
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/SQLiteStore.php 12/libraries/openid/Auth/OpenID/SQLiteStore.php
--- 11/libraries/openid/Auth/OpenID/SQLiteStore.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/SQLiteStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,6 +6,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require the base class file.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/SQLStore.php 12/libraries/openid/Auth/OpenID/SQLStore.php
--- 11/libraries/openid/Auth/OpenID/SQLStore.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/SQLStore.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require the PEAR DB module because we'll need it for the SQL-based
  * stores implemented here.  We silence any errors from the inclusion
diff -aruN --binary 11/libraries/openid/Auth/OpenID/SReg.php 12/libraries/openid/Auth/OpenID/SReg.php
--- 11/libraries/openid/Auth/OpenID/SReg.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/SReg.php	2009-06-30 22:01:32.000000000 +0200
@@ -39,6 +39,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Import message and extension internals.
  */
diff -aruN --binary 11/libraries/openid/Auth/OpenID/TrustRoot.php 12/libraries/openid/Auth/OpenID/TrustRoot.php
--- 11/libraries/openid/Auth/OpenID/TrustRoot.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/TrustRoot.php	2009-06-30 22:01:32.000000000 +0200
@@ -12,6 +12,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once 'Auth/OpenID/Discover.php';
 
 /**
diff -aruN --binary 11/libraries/openid/Auth/OpenID/URINorm.php 12/libraries/openid/Auth/OpenID/URINorm.php
--- 11/libraries/openid/Auth/OpenID/URINorm.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID/URINorm.php	2009-06-30 22:01:32.000000000 +0200
@@ -9,6 +9,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once 'Auth/Yadis/Misc.php';
 
 // from appendix B of rfc 3986 (http://www.ietf.org/rfc/rfc3986.txt)
diff -aruN --binary 11/libraries/openid/Auth/OpenID.php 12/libraries/openid/Auth/OpenID.php
--- 11/libraries/openid/Auth/OpenID.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/Auth/OpenID.php	2009-06-30 22:01:32.000000000 +0200
@@ -17,6 +17,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * The library version string
  */
diff -aruN --binary 11/libraries/openid/Auth/Yadis/HTTPFetcher.php 12/libraries/openid/Auth/Yadis/HTTPFetcher.php
--- 11/libraries/openid/Auth/Yadis/HTTPFetcher.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/HTTPFetcher.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require logging functionality
  */
diff -aruN --binary 11/libraries/openid/Auth/Yadis/Manager.php 12/libraries/openid/Auth/Yadis/Manager.php
--- 11/libraries/openid/Auth/Yadis/Manager.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/Manager.php	2009-06-30 22:01:32.000000000 +0200
@@ -7,6 +7,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * The base session class used by the Auth_Yadis_Manager.  This
  * class wraps the default PHP session machinery and should be
diff -aruN --binary 11/libraries/openid/Auth/Yadis/Misc.php 12/libraries/openid/Auth/Yadis/Misc.php
--- 11/libraries/openid/Auth/Yadis/Misc.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/Misc.php	2009-06-30 22:01:32.000000000 +0200
@@ -9,6 +9,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 function Auth_Yadis_getUCSChars()
 {
     return array(
diff -aruN --binary 11/libraries/openid/Auth/Yadis/ParanoidHTTPFetcher.php 12/libraries/openid/Auth/Yadis/ParanoidHTTPFetcher.php
--- 11/libraries/openid/Auth/Yadis/ParanoidHTTPFetcher.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/ParanoidHTTPFetcher.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Interface import
  */
diff -aruN --binary 11/libraries/openid/Auth/Yadis/ParseHTML.php 12/libraries/openid/Auth/Yadis/ParseHTML.php
--- 11/libraries/openid/Auth/Yadis/ParseHTML.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/ParseHTML.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * This class is responsible for scanning an HTML string to find META
  * tags and their attributes.  This is used by the Yadis discovery
diff -aruN --binary 11/libraries/openid/Auth/Yadis/PlainHTTPFetcher.php 12/libraries/openid/Auth/Yadis/PlainHTTPFetcher.php
--- 11/libraries/openid/Auth/Yadis/PlainHTTPFetcher.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/PlainHTTPFetcher.php	2009-06-30 22:01:32.000000000 +0200
@@ -14,6 +14,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Interface import
  */
diff -aruN --binary 11/libraries/openid/Auth/Yadis/XML.php 12/libraries/openid/Auth/Yadis/XML.php
--- 11/libraries/openid/Auth/Yadis/XML.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/XML.php	2009-06-30 22:01:32.000000000 +0200
@@ -7,6 +7,9 @@
  * @package OpenID
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * The base class for wrappers for available PHP XML-parsing
  * extensions.  To work with this Yadis library, subclasses of this
diff -aruN --binary 11/libraries/openid/Auth/Yadis/XRDS.php 12/libraries/openid/Auth/Yadis/XRDS.php
--- 11/libraries/openid/Auth/Yadis/XRDS.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/XRDS.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Require the XPath implementation.
  */
diff -aruN --binary 11/libraries/openid/Auth/Yadis/XRI.php 12/libraries/openid/Auth/Yadis/XRI.php
--- 11/libraries/openid/Auth/Yadis/XRI.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/XRI.php	2009-06-30 22:01:32.000000000 +0200
@@ -9,6 +9,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once 'Auth/Yadis/Misc.php';
 require_once 'Auth/Yadis/Yadis.php';
 require_once 'Auth/OpenID.php';
diff -aruN --binary 11/libraries/openid/Auth/Yadis/XRIRes.php 12/libraries/openid/Auth/Yadis/XRIRes.php
--- 11/libraries/openid/Auth/Yadis/XRIRes.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/XRIRes.php	2009-06-30 22:01:32.000000000 +0200
@@ -4,6 +4,9 @@
  * Code for using a proxy XRI resolver.
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 require_once 'Auth/Yadis/XRDS.php';
 require_once 'Auth/Yadis/XRI.php';
 
diff -aruN --binary 11/libraries/openid/Auth/Yadis/Yadis.php 12/libraries/openid/Auth/Yadis/Yadis.php
--- 11/libraries/openid/Auth/Yadis/Yadis.php	2009-01-10 05:01:40.000000000 +0100
+++ 12/libraries/openid/Auth/Yadis/Yadis.php	2009-06-30 22:01:32.000000000 +0200
@@ -13,6 +13,9 @@
  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
  */
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 /**
  * Need both fetcher types so we can use the right one based on the
  * presence or absence of CURL.
diff -aruN --binary 11/libraries/openid/consumer.php 12/libraries/openid/consumer.php
--- 11/libraries/openid/consumer.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/libraries/openid/consumer.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,4 +1,8 @@
 <?php
+
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 $path_extra = dirname(__FILE__);
 $path = ini_get('include_path');
 $path = $path_extra . DS . $path;
diff -aruN --binary 11/libraries/openid/Services/index.html 12/libraries/openid/Services/index.html
--- 11/libraries/openid/Services/index.html	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/index.html	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-<html><body bgcolor="#FFFFFF"></body></html>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/HTTPFetcher.php 12/libraries/openid/Services/Yadis/HTTPFetcher.php
--- 11/libraries/openid/Services/Yadis/HTTPFetcher.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/HTTPFetcher.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,92 +0,0 @@
-<?php
-
-/**
- * This module contains the HTTP fetcher interface
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-class Services_Yadis_HTTPResponse {
-    function Services_Yadis_HTTPResponse($final_url = null, $status = null,
-                                         $headers = null, $body = null)
-    {
-        $this->final_url = $final_url;
-        $this->status = $status;
-        $this->headers = $headers;
-        $this->body = $body;
-    }
-}
-
-/**
- * This class is the interface for HTTP fetchers the Yadis library
- * uses.  This interface is only important if you need to write a new
- * fetcher for some reason.
- *
- * @access private
- * @package Yadis
- */
-class Services_Yadis_HTTPFetcher {
-
-    var $timeout = 20; // timeout in seconds.
-
-    /**
-     * Return whether a URL should be allowed. Override this method to
-     * conform to your local policy.
-     *
-     * By default, will attempt to fetch any http or https URL.
-     */
-    function allowedURL($url)
-    {
-        return $this->URLHasAllowedScheme($url);
-    }
-
-    /**
-     * Is this an http or https URL?
-     *
-     * @access private
-     */
-    function URLHasAllowedScheme($url)
-    {
-        return (bool)preg_match('/^https?:\/\//i', $url);
-    }
-
-    /**
-     * @access private
-     */
-    function _findRedirect($headers)
-    {
-        foreach ($headers as $line) {
-            if (strpos($line, "Location: ") === 0) {
-                $parts = explode(" ", $line, 2);
-                return $parts[1];
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Fetches the specified URL using optional extra headers and
-     * returns the server's response.
-     *
-     * @param string $url The URL to be fetched.
-     * @param array $extra_headers An array of header strings
-     * (e.g. "Accept: text/html").
-     * @return mixed $result An array of ($code, $url, $headers,
-     * $body) if the URL could be fetched; null if the URL does not
-     * pass the URLHasAllowedScheme check or if the server's response
-     * is malformed.
-     */
-    function get($url, $headers)
-    {
-        trigger_error("not implemented", E_USER_ERROR);
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/index.html 12/libraries/openid/Services/Yadis/index.html
--- 11/libraries/openid/Services/Yadis/index.html	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/index.html	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-<html><body bgcolor="#FFFFFF"></body></html>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/Manager.php 12/libraries/openid/Services/Yadis/Manager.php
--- 11/libraries/openid/Services/Yadis/Manager.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/Manager.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,496 +0,0 @@
-<?php
-
-/**
- * Yadis service manager to be used during yadis-driven authentication
- * attempts.
- *
- * @package Yadis
- */
-
-/**
- * The base session class used by the Services_Yadis_Manager.  This
- * class wraps the default PHP session machinery and should be
- * subclassed if your application doesn't use PHP sessioning.
- *
- * @package Yadis
- */
-class Services_Yadis_PHPSession {
-    /**
-     * Set a session key/value pair.
-     *
-     * @param string $name The name of the session key to add.
-     * @param string $value The value to add to the session.
-     */
-    function set($name, $value)
-    {
-        $_SESSION[$name] = $value;
-    }
-
-    /**
-     * Get a key's value from the session.
-     *
-     * @param string $name The name of the key to retrieve.
-     * @param string $default The optional value to return if the key
-     * is not found in the session.
-     * @return string $result The key's value in the session or
-     * $default if it isn't found.
-     */
-    function get($name, $default=null)
-    {
-        if (array_key_exists($name, $_SESSION)) {
-            return $_SESSION[$name];
-        } else {
-            return $default;
-        }
-    }
-
-    /**
-     * Remove a key/value pair from the session.
-     *
-     * @param string $name The name of the key to remove.
-     */
-    function del($name)
-    {
-        unset($_SESSION[$name]);
-    }
-
-    /**
-     * Return the contents of the session in array form.
-     */
-    function contents()
-    {
-        return $_SESSION;
-    }
-}
-
-/**
- * A session helper class designed to translate between arrays and
- * objects.  Note that the class used must have a constructor that
- * takes no parameters.  This is not a general solution, but it works
- * for dumb objects that just need to have attributes set.  The idea
- * is that you'll subclass this and override $this->check($data) ->
- * bool to implement your own session data validation.
- */
-class Services_Yadis_SessionLoader {
-    /**
-     * Override this.
-     */
-    function check($data)
-    {
-        return true;
-    }
-
-    /**
-     * Given a session data value (an array), this creates an object
-     * (returned by $this->newObject()) whose attributes and values
-     * are those in $data.  Returns null if $data lacks keys found in
-     * $this->requiredKeys().  Returns null if $this->check($data)
-     * evaluates to false.  Returns null if $this->newObject()
-     * evaluates to false.
-     */
-    function fromSession($data)
-    {
-        if (!$data) {
-            return null;
-        }
-
-        $required = $this->requiredKeys();
-
-        foreach ($required as $k) {
-            if (!array_key_exists($k, $data)) {
-                return null;
-            }
-        }
-
-        if (!$this->check($data)) {
-            return null;
-        }
-
-        $data = array_merge($data, $this->prepareForLoad($data));
-        $obj = $this->newObject($data);
-
-        if (!$obj) {
-            return null;
-        }
-
-        foreach ($required as $k) {
-            $obj->$k = $data[$k];
-        }
-
-        return $obj;
-    }
-
-    /**
-     * Prepares the data array by making any necessary changes.
-     * Returns an array whose keys and values will be used to update
-     * the original data array before calling $this->newObject($data).
-     */
-    function prepareForLoad($data)
-    {
-        return array();
-    }
-
-    /**
-     * Returns a new instance of this loader's class, using the
-     * session data to construct it if necessary.  The object need
-     * only be created; $this->fromSession() will take care of setting
-     * the object's attributes.
-     */
-    function newObject($data)
-    {
-        return null;
-    }
-
-    /**
-     * Returns an array of keys and values built from the attributes
-     * of $obj.  If $this->prepareForSave($obj) returns an array, its keys
-     * and values are used to update the $data array of attributes
-     * from $obj.
-     */
-    function toSession($obj)
-    {
-        $data = array();
-        foreach ($obj as $k => $v) {
-            $data[$k] = $v;
-        }
-
-        $extra = $this->prepareForSave($obj);
-
-        if ($extra && is_array($extra)) {
-            foreach ($extra as $k => $v) {
-                $data[$k] = $v;
-            }
-        }
-
-        return $data;
-    }
-
-    /**
-     * Override this.
-     */
-    function prepareForSave($obj)
-    {
-        return array();
-    }
-}
-
-class Auth_OpenID_ServiceEndpointLoader extends Services_Yadis_SessionLoader {
-    function newObject($data)
-    {
-        return new Auth_OpenID_ServiceEndpoint();
-    }
-
-    function requiredKeys()
-    {
-        $obj = new Auth_OpenID_ServiceEndpoint();
-        $data = array();
-        foreach ($obj as $k => $v) {
-            $data[] = $k;
-        }
-        return $data;
-    }
-
-    function check($data)
-    {
-        return is_array($data['type_uris']);
-    }
-}
-
-class Services_Yadis_ManagerLoader extends Services_Yadis_SessionLoader {
-    function requiredKeys()
-    {
-        return array('starting_url',
-                     'yadis_url',
-                     'services',
-                     'session_key',
-                     '_current',
-                     'stale');
-    }
-
-    function newObject($data)
-    {
-        return new Services_Yadis_Manager($data['starting_url'],
-                                          $data['yadis_url'],
-                                          $data['services'],
-                                          $data['session_key']);
-    }
-
-    function check($data)
-    {
-        return is_array($data['services']);
-    }
-
-    function prepareForLoad($data)
-    {
-        $loader = new Auth_OpenID_ServiceEndpointLoader();
-        $services = array();
-        foreach ($data['services'] as $s) {
-            $services[] = $loader->fromSession($s);
-        }
-        return array('services' => $services);
-    }
-
-    function prepareForSave($obj)
-    {
-        $loader = new Auth_OpenID_ServiceEndpointLoader();
-        $services = array();
-        foreach ($obj->services as $s) {
-            $services[] = $loader->toSession($s);
-        }
-        return array('services' => $services);
-    }
-}
-
-/**
- * The Yadis service manager which stores state in a session and
- * iterates over <Service> elements in a Yadis XRDS document and lets
- * a caller attempt to use each one.  This is used by the Yadis
- * library internally.
- *
- * @package Yadis
- */
-class Services_Yadis_Manager {
-
-    /**
-     * Intialize a new yadis service manager.
-     *
-     * @access private
-     */
-    function Services_Yadis_Manager($starting_url, $yadis_url,
-                                    $services, $session_key)
-    {
-        // The URL that was used to initiate the Yadis protocol
-        $this->starting_url = $starting_url;
-
-        // The URL after following redirects (the identifier)
-        $this->yadis_url = $yadis_url;
-
-        // List of service elements
-        $this->services = $services;
-
-        $this->session_key = $session_key;
-
-        // Reference to the current service object
-        $this->_current = null;
-
-        // Stale flag for cleanup if PHP lib has trouble.
-        $this->stale = false;
-    }
-
-    /**
-     * @access private
-     */
-    function length()
-    {
-        // How many untried services remain?
-        return count($this->services);
-    }
-
-    /**
-     * Return the next service
-     *
-     * $this->current() will continue to return that service until the
-     * next call to this method.
-     */
-    function nextService()
-    {
-
-        if ($this->services) {
-            $this->_current = array_shift($this->services);
-        } else {
-            $this->_current = null;
-        }
-
-        return $this->_current;
-    }
-
-    /**
-     * @access private
-     */
-    function current()
-    {
-        // Return the current service.
-        // Returns None if there are no services left.
-        return $this->_current;
-    }
-
-    /**
-     * @access private
-     */
-    function forURL($url)
-    {
-        return in_array($url, array($this->starting_url, $this->yadis_url));
-    }
-
-    /**
-     * @access private
-     */
-    function started()
-    {
-        // Has the first service been returned?
-        return $this->_current !== null;
-    }
-}
-
-/**
- * State management for discovery.
- *
- * High-level usage pattern is to call .getNextService(discover) in
- * order to find the next available service for this user for this
- * session. Once a request completes, call .finish() to clean up the
- * session state.
- *
- * @package Yadis
- */
-class Services_Yadis_Discovery {
-
-    /**
-     * @access private
-     */
-    var $DEFAULT_SUFFIX = 'auth';
-
-    /**
-     * @access private
-     */
-    var $PREFIX = '_yadis_services_';
-
-    /**
-     * Initialize a discovery object.
-     *
-     * @param Services_Yadis_PHPSession $session An object which
-     * implements the Services_Yadis_PHPSession API.
-     * @param string $url The URL on which to attempt discovery.
-     * @param string $session_key_suffix The optional session key
-     * suffix override.
-     */
-    function Services_Yadis_Discovery(&$session, $url,
-                                      $session_key_suffix = null)
-    {
-        /// Initialize a discovery object
-        $this->session =& $session;
-        $this->url = $url;
-        if ($session_key_suffix === null) {
-            $session_key_suffix = $this->DEFAULT_SUFFIX;
-        }
-
-        $this->session_key_suffix = $session_key_suffix;
-        $this->session_key = $this->PREFIX . $this->session_key_suffix;
-    }
-
-    /**
-     * Return the next authentication service for the pair of
-     * user_input and session. This function handles fallback.
-     */
-    function getNextService($discover_cb, &$fetcher)
-    {
-        $manager = $this->getManager();
-        if (!$manager || (!$manager->services)) {
-            $this->destroyManager();
-            $http_response = array();
-
-            $services = call_user_func($discover_cb, $this->url,
-                                       $fetcher);
-
-            $manager = $this->createManager($services, $this->url);
-        }
-
-        if ($manager) {
-            $loader = new Services_Yadis_ManagerLoader();
-            $service = $manager->nextService();
-            $this->session->set($this->session_key,
-                                serialize($loader->toSession($manager)));
-        } else {
-            $service = null;
-        }
-
-        return $service;
-    }
-
-    /**
-     * Clean up Yadis-related services in the session and return the
-     * most-recently-attempted service from the manager, if one
-     * exists.
-     */
-    function cleanup()
-    {
-        $manager = $this->getManager();
-        if ($manager) {
-            $service = $manager->current();
-            $this->destroyManager();
-        } else {
-            $service = null;
-        }
-
-        return $service;
-    }
-
-    /**
-     * @access private
-     */
-    function getSessionKey()
-    {
-        // Get the session key for this starting URL and suffix
-        return $this->PREFIX . $this->session_key_suffix;
-    }
-
-    /**
-     * @access private
-     */
-    function &getManager()
-    {
-        // Extract the YadisServiceManager for this object's URL and
-        // suffix from the session.
-
-        $manager_str = $this->session->get($this->getSessionKey());
-        $manager = null;
-
-        if ($manager_str !== null) {
-            $loader = new Services_Yadis_ManagerLoader();
-            $manager = $loader->fromSession(unserialize($manager_str));
-        }
-
-        if ($manager && $manager->forURL($this->url)) {
-            return $manager;
-        } else {
-            $unused = null;
-            return $unused;
-        }
-    }
-
-    /**
-     * @access private
-     */
-    function &createManager($services, $yadis_url = null)
-    {
-        $key = $this->getSessionKey();
-        if ($this->getManager()) {
-            return $this->getManager();
-        }
-
-        if ($services) {
-            $loader = new Services_Yadis_ManagerLoader();
-            $manager = new Services_Yadis_Manager($this->url, $yadis_url,
-                                              $services, $key);
-            $this->session->set($this->session_key,
-                                serialize($loader->toSession($manager)));
-            return $manager;
-        } else {
-            // Oh, PHP.
-            $unused = null;
-            return $unused;
-        }
-    }
-
-    /**
-     * @access private
-     */
-    function destroyManager()
-    {
-        if ($this->getManager() !== null) {
-            $key = $this->getSessionKey();
-            $this->session->del($key);
-        }
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/Misc.php 12/libraries/openid/Services/Yadis/Misc.php
--- 11/libraries/openid/Services/Yadis/Misc.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/Misc.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,59 +0,0 @@
-<?php
-
-/**
- * Miscellaneous utility values and functions for OpenID and Yadis.
- *
- * @package OpenID
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-function Services_Yadis_getUCSChars()
-{
-    return array(
-                 array(0xA0, 0xD7FF),
-                 array(0xF900, 0xFDCF),
-                 array(0xFDF0, 0xFFEF),
-                 array(0x10000, 0x1FFFD),
-                 array(0x20000, 0x2FFFD),
-                 array(0x30000, 0x3FFFD),
-                 array(0x40000, 0x4FFFD),
-                 array(0x50000, 0x5FFFD),
-                 array(0x60000, 0x6FFFD),
-                 array(0x70000, 0x7FFFD),
-                 array(0x80000, 0x8FFFD),
-                 array(0x90000, 0x9FFFD),
-                 array(0xA0000, 0xAFFFD),
-                 array(0xB0000, 0xBFFFD),
-                 array(0xC0000, 0xCFFFD),
-                 array(0xD0000, 0xDFFFD),
-                 array(0xE1000, 0xEFFFD)
-                 );
-}
-
-function Services_Yadis_getIPrivateChars()
-{
-    return array(
-                 array(0xE000, 0xF8FF),
-                 array(0xF0000, 0xFFFFD),
-                 array(0x100000, 0x10FFFD)
-                 );
-}
-
-function Services_Yadis_pct_escape_unicode($char_match)
-{
-    $c = $char_match[0];
-    $result = "";
-    for ($i = 0; $i < strlen($c); $i++) {
-        $result .= "%".sprintf("%X", ord($c[$i]));
-    }
-    return $result;
-}
-
-function Services_Yadis_startswith($s, $stuff)
-{
-    return strpos($s, $stuff) === 0;
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/ParanoidHTTPFetcher.php 12/libraries/openid/Services/Yadis/ParanoidHTTPFetcher.php
--- 11/libraries/openid/Services/Yadis/ParanoidHTTPFetcher.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/ParanoidHTTPFetcher.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,179 +0,0 @@
-<?php
-// Check to ensure this file is within the rest of the framework
-defined('JPATH_BASE') or die();
-
-/**
- * This module contains the CURL-based HTTP fetcher implementation.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-/**
- * Interface import
- */
-require_once "Services/Yadis/HTTPFetcher.php";
-
-/**
- * A paranoid {@link Services_Yadis_HTTPFetcher} class which uses CURL
- * for fetching.
- *
- * @package Yadis
- */
-class Services_Yadis_ParanoidHTTPFetcher extends Services_Yadis_HTTPFetcher {
-    function Services_Yadis_ParanoidHTTPFetcher()
-    {
-        $this->reset();
-    }
-
-    function reset()
-    {
-        $this->headers = array();
-        $this->data = "";
-    }
-
-    /**
-     * @access private
-     */
-    function _writeHeader($ch, $header)
-    {
-        array_push($this->headers, rtrim($header));
-        return strlen($header);
-    }
-
-    /**
-     * @access private
-     */
-    function _writeData($ch, $data)
-    {
-        $this->data .= $data;
-        return strlen($data);
-    }
-
-    function get($url, $extra_headers = null)
-    {
-        $stop = time() + $this->timeout;
-        $off = $this->timeout;
-
-        $redir = true;
-
-        while ($redir && ($off > 0)) {
-            $this->reset();
-
-            $c = curl_init();
-            if (defined('CURLOPT_NOSIGNAL')) {
-                curl_setopt($c, CURLOPT_NOSIGNAL, true);
-            }
-
-            if (!$this->allowedURL($url)) {
-                trigger_error(sprintf("Fetching URL not allowed: %s", $url),
-                              E_USER_WARNING);
-                return null;
-            }
-
-            curl_setopt($c, CURLOPT_WRITEFUNCTION,
-                        array(&$this, "_writeData"));
-            curl_setopt($c, CURLOPT_HEADERFUNCTION,
-                        array(&$this, "_writeHeader"));
-
-            if ($extra_headers) {
-                curl_setopt($c, CURLOPT_HTTPHEADER, $extra_headers);
-            }
-
-            curl_setopt($c, CURLOPT_TIMEOUT, $off);
-            curl_setopt($c, CURLOPT_URL, $url);
-
-            curl_exec($c);
-
-            $code = curl_getinfo($c, CURLINFO_HTTP_CODE);
-            $body = $this->data;
-            $headers = $this->headers;
-
-            if (!$code) {
-                return null;
-            }
-
-            if (in_array($code, array(301, 302, 303, 307))) {
-                $url = $this->_findRedirect($headers);
-                $redir = true;
-            } else {
-                $redir = false;
-                curl_close($c);
-
-                $new_headers = array();
-
-                foreach ($headers as $header) {
-                    if (preg_match("/:/", $header)) {
-                        list($name, $value) = explode(": ", $header, 2);
-                        $new_headers[$name] = $value;
-                    }
-                }
-
-                return new Services_Yadis_HTTPResponse($url, $code,
-                                                    $new_headers, $body);
-            }
-
-            $off = $stop - time();
-        }
-
-        trigger_error(sprintf("Timed out fetching: %s", $url),
-                      E_USER_WARNING);
-
-        return null;
-    }
-
-    function post($url, $body)
-    {
-        $this->reset();
-
-        if (!$this->allowedURL($url)) {
-            trigger_error(sprintf("Fetching URL not allowed: %s", $url),
-                          E_USER_WARNING);
-            return null;
-        }
-
-        $c = curl_init();
-
-        curl_setopt($c, CURLOPT_NOSIGNAL, true);
-        curl_setopt($c, CURLOPT_POST, true);
-        curl_setopt($c, CURLOPT_POSTFIELDS, $body);
-        curl_setopt($c, CURLOPT_TIMEOUT, $this->timeout);
-        curl_setopt($c, CURLOPT_URL, $url);
-        curl_setopt($c, CURLOPT_WRITEFUNCTION,
-                    array(&$this, "_writeData"));
-
-        curl_exec($c);
-
-        $code = curl_getinfo($c, CURLINFO_HTTP_CODE);
-
-        if (!$code) {
-            trigger_error("No HTTP code returned", E_USER_WARNING);
-            return null;
-        }
-
-        $body = $this->data;
-
-        curl_close($c);
-
-        $new_headers = array();
-
-        foreach ($this->headers as $header) {
-            if (preg_match("/:/", $header)) {
-                list($name, $value) = explode(": ", $header, 2);
-                $new_headers[$name] = $value;
-            }
-
-        }
-
-        return new Services_Yadis_HTTPResponse($url, $code,
-                                               $new_headers, $body);
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/ParseHTML.php 12/libraries/openid/Services/Yadis/ParseHTML.php
--- 11/libraries/openid/Services/Yadis/ParseHTML.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/ParseHTML.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,244 +0,0 @@
-<?php
-
-/**
- * This is the HTML pseudo-parser for the Yadis library.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-/**
- * This class is responsible for scanning an HTML string to find META
- * tags and their attributes.  This is used by the Yadis discovery
- * process.  This class must be instantiated to be used.
- *
- * @package Yadis
- */
-class Services_Yadis_ParseHTML {
-
-    /**
-     * @access private
-     */
-    var $_re_flags = "si";
-
-    /**
-     * @access private
-     */
-    var $_tag_expr = "<%s%s(?:\s.*?)?%s>";
-
-    /**
-     * @access private
-     */
-    var $_attr_find = '\b([-\w]+)=(".*?"|\'.*?\'|.+?)[\s>]';
-
-    function Services_Yadis_ParseHTML()
-    {
-        $this->_attr_find = sprintf("/%s/%s",
-                                    $this->_attr_find,
-                                    $this->_re_flags);
-
-        $this->_entity_replacements = array(
-                                            'amp' => '&',
-                                            'lt' => '<',
-                                            'gt' => '>',
-                                            'quot' => '"'
-                                            );
-
-        $this->_ent_replace =
-            sprintf("&(%s);", implode("|",
-                                      $this->_entity_replacements));
-    }
-
-    /**
-     * Replace HTML entities (amp, lt, gt, and quot) as well as
-     * numeric entities (e.g. #x9f;) with their actual values and
-     * return the new string.
-     *
-     * @access private
-     * @param string $str The string in which to look for entities
-     * @return string $new_str The new string entities decoded
-     */
-    function replaceEntities($str)
-    {
-        foreach ($this->_entity_replacements as $old => $new) {
-            $str = preg_replace(sprintf("/&%s;/", $old), $new, $str);
-        }
-
-        // Replace numeric entities because html_entity_decode doesn't
-        // do it for us.
-        $str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
-        $str = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $str);
-
-        return $str;
-    }
-
-    /**
-     * Strip single and double quotes off of a string, if they are
-     * present.
-     *
-     * @access private
-     * @param string $str The original string
-     * @return string $new_str The new string with leading and
-     * trailing quotes removed
-     */
-    function removeQuotes($str)
-    {
-        $matches = array();
-        $double = '/^"(.*)"$/';
-        $single = "/^\'(.*)\'$/";
-
-        if (preg_match($double, $str, $matches)) {
-            return $matches[1];
-        } else if (preg_match($single, $str, $matches)) {
-            return $matches[1];
-        } else {
-            return $str;
-        }
-    }
-
-    /**
-     * Create a regular expression that will match an opening
-     * or closing tag from a set of names.
-     *
-     * @access private
-     * @param mixed $tag_names Tag names to match
-     * @param mixed $close false/0 = no, true/1 = yes, other = maybe
-     * @param mixed $self_close false/0 = no, true/1 = yes, other = maybe
-     * @return string $regex A regular expression string to be used
-     * in, say, preg_match.
-     */
-    function tagPattern($tag_names, $close, $self_close)
-    {
-        if (is_array($tag_names)) {
-            $tag_names = '(?:'.implode('|',$tag_names).')';
-        }
-        if ($close) {
-            $close = '\/' . (($close == 1)? '' : '?');
-        } else {
-            $close = '';
-        }
-        if ($self_close) {
-            $self_close = '(?:\/\s*)' . (($self_close == 1)? '' : '?');
-        } else {
-            $self_close = '';
-        }
-        $expr = sprintf($this->_tag_expr, $close, $tag_names, $self_close);
-
-        return sprintf("/%s/%s", $expr, $this->_re_flags);
-    }
-
-    /**
-     * Given an HTML document string, this finds all the META tags in
-     * the document, provided they are found in the
-     * <HTML><HEAD>...</HEAD> section of the document.  The <HTML> tag
-     * may be missing.
-     *
-     * @access private
-     * @param string $html_string An HTMl document string
-     * @return array $tag_list Array of tags; each tag is an array of
-     * attribute -> value.
-     */
-    function getMetaTags($html_string)
-    {
-        $key_tags = array($this->tagPattern('html', false, false),
-                          $this->tagPattern('head', false, false),
-                          $this->tagPattern('head', true, false),
-                          $this->tagPattern('html', true, false),
-                          $this->tagPattern(array(
-                          'body', 'frameset', 'frame', 'p', 'div',
-                          'table','span','a'), 'maybe', 'maybe'));
-        $key_tags_pos = array();
-        foreach ($key_tags as $pat) {
-            $matches = array();
-            preg_match($pat, $html_string, $matches, PREG_OFFSET_CAPTURE);
-            if($matches) {
-                $key_tags_pos[] = $matches[0][1];
-            } else {
-                $key_tags_pos[] = null;
-            }
-        }
-        // no opening head tag
-        if (is_null($key_tags_pos[1])) {
-            return array();
-        }
-        // the effective </head> is the min of the following
-        if (is_null($key_tags_pos[2])) {
-            $key_tags_pos[2] = strlen($html_string);
-        }
-        foreach (array($key_tags_pos[3], $key_tags_pos[4]) as $pos) {
-            if (!is_null($pos) && $pos < $key_tags_pos[2]) {
-                $key_tags_pos[2] = $pos;
-            }
-        }
-        // closing head tag comes before opening head tag
-        if ($key_tags_pos[1] > $key_tags_pos[2]) {
-            return array();
-        }
-        // if there is an opening html tag, make sure the opening head tag
-        // comes after it
-        if (!is_null($key_tags_pos[0]) && $key_tags_pos[1] < $key_tags_pos[0]) {
-            return array();
-        }
-        $html_string = substr($html_string, $key_tags_pos[1], ($key_tags_pos[2]-$key_tags_pos[1]));
-
-        $link_data = array();
-        $link_matches = array();
-
-        if (!preg_match_all($this->tagPattern('meta', false, 'maybe'),
-                            $html_string, $link_matches)) {
-            return array();
-        }
-
-        foreach ($link_matches[0] as $link) {
-            $attr_matches = array();
-            preg_match_all($this->_attr_find, $link, $attr_matches);
-            $link_attrs = array();
-            foreach ($attr_matches[0] as $index => $full_match) {
-                $name = $attr_matches[1][$index];
-                $value = $this->replaceEntities(
-                              $this->removeQuotes($attr_matches[2][$index]));
-
-                $link_attrs[strtolower($name)] = $value;
-            }
-            $link_data[] = $link_attrs;
-        }
-
-        return $link_data;
-    }
-
-    /**
-     * Looks for a META tag with an "http-equiv" attribute whose value
-     * is one of ("x-xrds-location", "x-yadis-location"), ignoring
-     * case.  If such a META tag is found, its "content" attribute
-     * value is returned.
-     *
-     * @param string $html_string An HTML document in string format
-     * @return mixed $content The "content" attribute value of the
-     * META tag, if found, or null if no such tag was found.
-     */
-    function getHTTPEquiv($html_string)
-    {
-        $meta_tags = $this->getMetaTags($html_string);
-
-        if ($meta_tags) {
-            foreach ($meta_tags as $tag) {
-                if (array_key_exists('http-equiv', $tag) &&
-                    (in_array(strtolower($tag['http-equiv']),
-                              array('x-xrds-location', 'x-yadis-location'))) &&
-                    array_key_exists('content', $tag)) {
-                    return $tag['content'];
-                }
-            }
-        }
-
-        return null;
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/PlainHTTPFetcher.php 12/libraries/openid/Services/Yadis/PlainHTTPFetcher.php
--- 11/libraries/openid/Services/Yadis/PlainHTTPFetcher.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/PlainHTTPFetcher.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,247 +0,0 @@
-<?php
-// Check to ensure this file is within the rest of the framework
-defined('JPATH_BASE') or die();
-
-/**
- * This module contains the plain non-curl HTTP fetcher
- * implementation.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-/**
- * Interface import
- */
-require_once "Services/Yadis/HTTPFetcher.php";
-
-/**
- * This class implements a plain, hand-built socket-based fetcher
- * which will be used in the event that CURL is unavailable.
- *
- * @package Yadis
- */
-class Services_Yadis_PlainHTTPFetcher extends Services_Yadis_HTTPFetcher {
-    function get($url, $extra_headers = null)
-    {
-        if (!$this->allowedURL($url)) {
-            trigger_error("Bad URL scheme in url: " . $url,
-                          E_USER_WARNING);
-            return null;
-        }
-
-        $redir = true;
-
-        $stop = time() + $this->timeout;
-        $off = $this->timeout;
-
-        while ($redir && ($off > 0)) {
-
-            $parts = parse_url($url);
-
-            $specify_port = true;
-
-            // Set a default port.
-            if (!array_key_exists('port', $parts)) {
-                $specify_port = false;
-                if ($parts['scheme'] == 'http') {
-                    $parts['port'] = 80;
-                } elseif ($parts['scheme'] == 'https') {
-                    $parts['port'] = 443;
-                } else {
-                    trigger_error("fetcher post method doesn't support " .
-                                  " scheme '" . $parts['scheme'] .
-                                  "', no default port available",
-                                  E_USER_WARNING);
-                    return null;
-                }
-            }
-
-            $host = $parts['host'];
-
-            if ($parts['scheme'] == 'https') {
-                $host = 'ssl://' . $host;
-            }
-
-            $user_agent = "PHP Yadis Library Fetcher";
-
-            $headers = array(
-                             "GET ".$parts['path'].
-                             (array_key_exists('query', $parts) ?
-                              "?".$parts['query'] : "").
-                                 " HTTP/1.0",
-                             "User-Agent: $user_agent",
-                             "Host: ".$parts['host'].
-                                ($specify_port ? ":".$parts['port'] : ""),
-                             "Port: ".$parts['port']);
-
-            $errno = 0;
-            $errstr = '';
-
-            if ($extra_headers) {
-                foreach ($extra_headers as $h) {
-                    $headers[] = $h;
-                }
-            }
-
-            @$sock = fsockopen($host, $parts['port'], $errno, $errstr,
-                               $this->timeout);
-            if ($sock === false) {
-                return false;
-            }
-
-            stream_set_timeout($sock, $this->timeout);
-
-            fputs($sock, implode("\r\n", $headers) . "\r\n\r\n");
-
-            $data = "";
-            while (!feof($sock)) {
-                $data .= fgets($sock, 1024);
-            }
-
-            fclose($sock);
-
-            // Split response into header and body sections
-            list($headers, $body) = explode("\r\n\r\n", $data, 2);
-            $headers = explode("\r\n", $headers);
-
-            $http_code = explode(" ", $headers[0]);
-            $code = $http_code[1];
-
-            if (in_array($code, array('301', '302'))) {
-                $url = $this->_findRedirect($headers);
-                $redir = true;
-            } else {
-                $redir = false;
-            }
-
-            $off = $stop - time();
-        }
-
-        $new_headers = array();
-
-        foreach ($headers as $header) {
-            if (preg_match("/:/", $header)) {
-                list($name, $value) = explode(": ", $header, 2);
-                $new_headers[$name] = $value;
-            }
-
-        }
-
-        return new Services_Yadis_HTTPResponse($url, $code, $new_headers, $body);
-    }
-
-    function post($url, $body, $extra_headers = null)
-    {
-        if (!$this->allowedURL($url)) {
-            trigger_error("Bad URL scheme in url: " . $url,
-                          E_USER_WARNING);
-            return null;
-        }
-
-        $parts = parse_url($url);
-
-        $headers = array();
-
-        $post_path = $parts['path'];
-        if (isset($parts['query'])) {
-            $post_path .= '?' . $parts['query'];
-        }
-
-        $headers[] = "POST ".$post_path." HTTP/1.0";
-        $headers[] = "Host: " . $parts['host'];
-        $headers[] = "Content-type: application/x-www-form-urlencoded";
-        $headers[] = "Content-length: " . strval(strlen($body));
-
-        if ($extra_headers &&
-            is_array($extra_headers)) {
-            $headers = array_merge($headers, $extra_headers);
-        }
-
-        // Join all headers together.
-        $all_headers = implode("\r\n", $headers);
-
-        // Add headers, two newlines, and request body.
-        $request = $all_headers . "\r\n\r\n" . $body;
-
-        // Set a default port.
-        if (!array_key_exists('port', $parts)) {
-            if ($parts['scheme'] == 'http') {
-                $parts['port'] = 80;
-            } elseif ($parts['scheme'] == 'https') {
-                $parts['port'] = 443;
-            } else {
-                trigger_error("fetcher post method doesn't support scheme '" .
-                              $parts['scheme'] .
-                              "', no default port available",
-                              E_USER_WARNING);
-                return null;
-            }
-        }
-
-        if ($parts['scheme'] == 'https') {
-            $parts['host'] = sprintf("ssl://%s", $parts['host']);
-        }
-
-        // Connect to the remote server.
-        $errno = 0;
-        $errstr = '';
-
-        $sock = fsockopen($parts['host'], $parts['port'], $errno, $errstr,
-                          $this->timeout);
-
-        if ($sock === false) {
-            trigger_error("Could not connect to " . $parts['host'] .
-                          " port " . $parts['port'],
-                          E_USER_WARNING);
-            return null;
-        }
-
-        stream_set_timeout($sock, $this->timeout);
-
-        // Write the POST request.
-        fputs($sock, $request);
-
-        // Get the response from the server.
-        $response = "";
-        while (!feof($sock)) {
-            if ($data = fgets($sock, 128)) {
-                $response .= $data;
-            } else {
-                break;
-            }
-        }
-
-        // Split the request into headers and body.
-        list($headers, $response_body) = explode("\r\n\r\n", $response, 2);
-
-        $headers = explode("\r\n", $headers);
-
-        // Expect the first line of the headers data to be something
-        // like HTTP/1.1 200 OK.  Split the line on spaces and take
-        // the second token, which should be the return code.
-        $http_code = explode(" ", $headers[0]);
-        $code = $http_code[1];
-
-        $new_headers = array();
-
-        foreach ($headers as $header) {
-            if (preg_match("/:/", $header)) {
-                list($name, $value) = explode(": ", $header, 2);
-                $new_headers[$name] = $value;
-            }
-
-        }
-
-        return new Services_Yadis_HTTPResponse($url, $code,
-                                               $headers, $response_body);
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/XML.php 12/libraries/openid/Services/Yadis/XML.php
--- 11/libraries/openid/Services/Yadis/XML.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/XML.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,365 +0,0 @@
-<?php
-
-/**
- * XML-parsing classes to wrap the domxml and DOM extensions for PHP 4
- * and 5, respectively.
- *
- * @package Yadis
- */
-
-/**
- * The base class for wrappers for available PHP XML-parsing
- * extensions.  To work with this Yadis library, subclasses of this
- * class MUST implement the API as defined in the remarks for this
- * class.  Subclasses of Services_Yadis_XMLParser are used to wrap
- * particular PHP XML extensions such as 'domxml'.  These are used
- * internally by the library depending on the availability of
- * supported PHP XML extensions.
- *
- * @package Yadis
- */
-class Services_Yadis_XMLParser {
-    /**
-     * Initialize an instance of Services_Yadis_XMLParser with some
-     * XML and namespaces.  This SHOULD NOT be overridden by
-     * subclasses.
-     *
-     * @param string $xml_string A string of XML to be parsed.
-     * @param array $namespace_map An array of ($ns_name => $ns_uri)
-     * to be registered with the XML parser.  May be empty.
-     * @return boolean $result True if the initialization and
-     * namespace registration(s) succeeded; false otherwise.
-     */
-    function init($xml_string, $namespace_map)
-    {
-        if (!$this->setXML($xml_string)) {
-            return false;
-        }
-
-        foreach ($namespace_map as $prefix => $uri) {
-            if (!$this->registerNamespace($prefix, $uri)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Register a namespace with the XML parser.  This should be
-     * overridden by subclasses.
-     *
-     * @param string $prefix The namespace prefix to appear in XML tag
-     * names.
-     *
-     * @param string $uri The namespace URI to be used to identify the
-     * namespace in the XML.
-     *
-     * @return boolean $result True if the registration succeeded;
-     * false otherwise.
-     */
-    function registerNamespace($prefix, $uri)
-    {
-        // Not implemented.
-    }
-
-    /**
-     * Set this parser object's XML payload.  This should be
-     * overridden by subclasses.
-     *
-     * @param string $xml_string The XML string to pass to this
-     * object's XML parser.
-     *
-     * @return boolean $result True if the initialization succeeded;
-     * false otherwise.
-     */
-    function setXML($xml_string)
-    {
-        // Not implemented.
-    }
-
-    /**
-     * Evaluate an XPath expression and return the resulting node
-     * list.  This should be overridden by subclasses.
-     *
-     * @param string $xpath The XPath expression to be evaluated.
-     *
-     * @param mixed $node A node object resulting from a previous
-     * evalXPath call.  This node, if specified, provides the context
-     * for the evaluation of this xpath expression.
-     *
-     * @return array $node_list An array of matching opaque node
-     * objects to be used with other methods of this parser class.
-     */
-    function evalXPath($xpath, $node = null)
-    {
-        // Not implemented.
-    }
-
-    /**
-     * Return the textual content of a specified node.
-     *
-     * @param mixed $node A node object from a previous call to
-     * $this->evalXPath().
-     *
-     * @return string $content The content of this node.
-     */
-    function content($node)
-    {
-        // Not implemented.
-    }
-
-    /**
-     * Return the attributes of a specified node.
-     *
-     * @param mixed $node A node object from a previous call to
-     * $this->evalXPath().
-     *
-     * @return array $attrs An array mapping attribute names to
-     * values.
-     */
-    function attributes($node)
-    {
-        // Not implemented.
-    }
-}
-
-/**
- * This concrete implementation of Services_Yadis_XMLParser implements
- * the appropriate API for the 'domxml' extension which is typically
- * packaged with PHP 4.  This class will be used whenever the 'domxml'
- * extension is detected.  See the Services_Yadis_XMLParser class for
- * details on this class's methods.
- *
- * @package Yadis
- */
-class Services_Yadis_domxml extends Services_Yadis_XMLParser {
-    function Services_Yadis_domxml()
-    {
-        $this->xml = null;
-        $this->doc = null;
-        $this->xpath = null;
-        $this->errors = array();
-    }
-
-    function setXML($xml_string)
-    {
-        $this->xml = $xml_string;
-        $this->doc = @domxml_open_mem($xml_string, DOMXML_LOAD_PARSING,
-                                      $this->errors);
-
-        if (!$this->doc) {
-            return false;
-        }
-
-        $this->xpath = $this->doc->xpath_new_context();
-
-        return true;
-    }
-
-    function registerNamespace($prefix, $uri)
-    {
-        return xpath_register_ns($this->xpath, $prefix, $uri);
-    }
-
-    function &evalXPath($xpath, $node = null)
-    {
-        if ($node) {
-            $result = @$this->xpath->xpath_eval($xpath, $node);
-        } else {
-            $result = @$this->xpath->xpath_eval($xpath);
-        }
-
-        if (!$result->nodeset) {
-            $n = array();
-            return $n;
-        }
-
-        return $result->nodeset;
-    }
-
-    function content($node)
-    {
-        if ($node) {
-            return $node->get_content();
-        }
-    }
-
-    function attributes($node)
-    {
-        if ($node) {
-            $arr = $node->attributes();
-            $result = array();
-
-            if ($arr) {
-                foreach ($arr as $attrnode) {
-                    $result[$attrnode->name] = $attrnode->value;
-                }
-            }
-
-            return $result;
-        }
-    }
-}
-
-/**
- * This concrete implementation of Services_Yadis_XMLParser implements
- * the appropriate API for the 'dom' extension which is typically
- * packaged with PHP 5.  This class will be used whenever the 'dom'
- * extension is detected.  See the Services_Yadis_XMLParser class for
- * details on this class's methods.
- *
- * @package Yadis
- */
-class Services_Yadis_dom extends Services_Yadis_XMLParser {
-    function Services_Yadis_dom()
-    {
-        $this->xml = null;
-        $this->doc = null;
-        $this->xpath = null;
-        $this->errors = array();
-    }
-
-    function setXML($xml_string)
-    {
-        $this->xml = $xml_string;
-        $this->doc = new DOMDocument;
-
-        if (!$this->doc) {
-            return false;
-        }
-
-        if (!@$this->doc->loadXML($xml_string)) {
-            return false;
-        }
-
-        $this->xpath = new DOMXPath($this->doc);
-
-        if ($this->xpath) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    function registerNamespace($prefix, $uri)
-    {
-        return $this->xpath->registerNamespace($prefix, $uri);
-    }
-
-    function &evalXPath($xpath, $node = null)
-    {
-        if ($node) {
-            $result = @$this->xpath->query($xpath, $node);
-        } else {
-            $result = @$this->xpath->query($xpath);
-        }
-
-        $n = array();
-
-        for ($i = 0; $i < $result->length; $i++) {
-            $n[] = $result->item($i);
-        }
-
-        return $n;
-    }
-
-    function content($node)
-    {
-        if ($node) {
-            return $node->textContent;
-        }
-    }
-
-    function attributes($node)
-    {
-        if ($node) {
-            $arr = $node->attributes;
-            $result = array();
-
-            if ($arr) {
-                for ($i = 0; $i < $arr->length; $i++) {
-                    $node = $arr->item($i);
-                    $result[$node->nodeName] = $node->nodeValue;
-                }
-            }
-
-            return $result;
-        }
-    }
-}
-
-global $__Services_Yadis_defaultParser;
-$__Services_Yadis_defaultParser = null;
-
-/**
- * Set a default parser to override the extension-driven selection of
- * available parser classes.  This is helpful in a test environment or
- * one in which multiple parsers can be used but one is more
- * desirable.
- *
- * @param Services_Yadis_XMLParser $parser An instance of a
- * Services_Yadis_XMLParser subclass.
- */
-function Services_Yadis_setDefaultParser(&$parser)
-{
-    global $__Services_Yadis_defaultParser;
-    $__Services_Yadis_defaultParser =& $parser;
-}
-
-function Services_Yadis_getSupportedExtensions()
-{
-    return array(
-                 'dom' => array('classname' => 'Services_Yadis_dom',
-                                'libname' => array('dom.so', 'dom.dll')),
-                 'domxml' => array('classname' => 'Services_Yadis_domxml',
-                                   'libname' => array('domxml.so', 'php_domxml.dll')),
-                 );
-}
-
-/**
- * Returns an instance of a Services_Yadis_XMLParser subclass based on
- * the availability of PHP extensions for XML parsing.  If
- * Services_Yadis_setDefaultParser has been called, the parser used in
- * that call will be returned instead.
- */
-function &Services_Yadis_getXMLParser()
-{
-    global $__Services_Yadis_defaultParser;
-
-    if (isset($__Services_Yadis_defaultParser)) {
-        return $__Services_Yadis_defaultParser;
-    }
-
-    $p = null;
-    $classname = null;
-
-    $extensions = Services_Yadis_getSupportedExtensions();
-
-    // Return a wrapper for the resident implementation, if any.
-    foreach ($extensions as $name => $params) {
-        if (!extension_loaded($name)) {
-            foreach ($params['libname'] as $libname) {
-                if (@dl($libname)) {
-                    $classname = $params['classname'];
-                }
-            }
-        } else {
-            $classname = $params['classname'];
-        }
-        if (isset($classname)) {
-            $p = new $classname();
-            return $p;
-        }
-    }
-
-    if (!isset($p)) {
-        trigger_error('No XML parser was found', E_USER_ERROR);
-    } else {
-        Services_Yadis_setDefaultParser($p);
-    }
-
-    return $p;
-}
-
-?>
diff -aruN --binary 11/libraries/openid/Services/Yadis/XRDS.php 12/libraries/openid/Services/Yadis/XRDS.php
--- 11/libraries/openid/Services/Yadis/XRDS.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/XRDS.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,427 +0,0 @@
-<?php
-// Check to ensure this file is within the rest of the framework
-defined('JPATH_BASE') or die();
-
-/**
- * This module contains the XRDS parsing code.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-/**
- * Require the XPath implementation.
- */
-require_once 'Services/Yadis/XML.php';
-
-/**
- * This match mode means a given service must match ALL filters passed
- * to the Services_Yadis_XRDS::services() call.
- */
-define('SERVICES_YADIS_MATCH_ALL', 101);
-
-/**
- * This match mode means a given service must match ANY filters (at
- * least one) passed to the Services_Yadis_XRDS::services() call.
- */
-define('SERVICES_YADIS_MATCH_ANY', 102);
-
-/**
- * The priority value used for service elements with no priority
- * specified.
- */
-define('SERVICES_YADIS_MAX_PRIORITY', pow(2, 30));
-
-function Services_Yadis_getNSMap()
-{
-    return array('xrds' => 'xri://$xrds',
-                 'xrd' => 'xri://$xrd*($v*2.0)');
-}
-
-/**
- * @access private
- */
-function Services_Yadis_array_scramble($arr)
-{
-    $result = array();
-
-    while (count($arr)) {
-        $index = array_rand($arr, 1);
-        $result[] = $arr[$index];
-        unset($arr[$index]);
-    }
-
-    return $result;
-}
-
-/**
- * This class represents a <Service> element in an XRDS document.
- * Objects of this type are returned by
- * Services_Yadis_XRDS::services() and
- * Services_Yadis_Yadis::services().  Each object corresponds directly
- * to a <Service> element in the XRDS and supplies a
- * getElements($name) method which you should use to inspect the
- * element's contents.  See {@link Services_Yadis_Yadis} for more
- * information on the role this class plays in Yadis discovery.
- *
- * @package Yadis
- */
-class Services_Yadis_Service {
-
-    /**
-     * Creates an empty service object.
-     */
-    function Services_Yadis_Service()
-    {
-        $this->element = null;
-        $this->parser = null;
-    }
-
-    /**
-     * Return the URIs in the "Type" elements, if any, of this Service
-     * element.
-     *
-     * @return array $type_uris An array of Type URI strings.
-     */
-    function getTypes()
-    {
-        $t = array();
-        foreach ($this->getElements('xrd:Type') as $elem) {
-            $c = $this->parser->content($elem);
-            if ($c) {
-                $t[] = $c;
-            }
-        }
-        return $t;
-    }
-
-    /**
-     * Return the URIs in the "URI" elements, if any, of this Service
-     * element.  The URIs are returned sorted in priority order.
-     *
-     * @return array $uris An array of URI strings.
-     */
-    function getURIs()
-    {
-        $uris = array();
-        $last = array();
-
-        foreach ($this->getElements('xrd:URI') as $elem) {
-            $uri_string = $this->parser->content($elem);
-            $attrs = $this->parser->attributes($elem);
-            if ($attrs &&
-                array_key_exists('priority', $attrs)) {
-                $priority = intval($attrs['priority']);
-                if (!array_key_exists($priority, $uris)) {
-                    $uris[$priority] = array();
-                }
-
-                $uris[$priority][] = $uri_string;
-            } else {
-                $last[] = $uri_string;
-            }
-        }
-
-        $keys = array_keys($uris);
-        sort($keys);
-
-        // Rebuild array of URIs.
-        $result = array();
-        foreach ($keys as $k) {
-            $new_uris = Services_Yadis_array_scramble($uris[$k]);
-            $result = array_merge($result, $new_uris);
-        }
-
-        $result = array_merge($result,
-                              Services_Yadis_array_scramble($last));
-
-        return $result;
-    }
-
-    /**
-     * Returns the "priority" attribute value of this <Service>
-     * element, if the attribute is present.  Returns null if not.
-     *
-     * @return mixed $result Null or integer, depending on whether
-     * this Service element has a 'priority' attribute.
-     */
-    function getPriority()
-    {
-        $attributes = $this->parser->attributes($this->element);
-
-        if (array_key_exists('priority', $attributes)) {
-            return intval($attributes['priority']);
-        }
-
-        return null;
-    }
-
-    /**
-     * Used to get XML elements from this object's <Service> element.
-     *
-     * This is what you should use to get all custom information out
-     * of this element. This is used by service filter functions to
-     * determine whether a service element contains specific tags,
-     * etc.  NOTE: this only considers elements which are direct
-     * children of the <Service> element for this object.
-     *
-     * @param string $name The name of the element to look for
-     * @return array $list An array of elements with the specified
-     * name which are direct children of the <Service> element.  The
-     * nodes returned by this function can be passed to $this->parser
-     * methods (see {@link Services_Yadis_XMLParser}).
-     */
-    function getElements($name)
-    {
-        return $this->parser->evalXPath($name, $this->element);
-    }
-}
-
-/**
- * This class performs parsing of XRDS documents.
- *
- * You should not instantiate this class directly; rather, call
- * parseXRDS statically:
- *
- * <pre>  $xrds = Services_Yadis_XRDS::parseXRDS($xml_string);</pre>
- *
- * If the XRDS can be parsed and is valid, an instance of
- * Services_Yadis_XRDS will be returned.  Otherwise, null will be
- * returned.  This class is used by the Services_Yadis_Yadis::discover
- * method.
- *
- * @package Yadis
- */
-class Services_Yadis_XRDS {
-
-    /**
-     * Instantiate a Services_Yadis_XRDS object.  Requires an XPath
-     * instance which has been used to parse a valid XRDS document.
-     */
-    function Services_Yadis_XRDS(&$xmlParser, &$xrdNodes)
-    {
-        $this->parser =& $xmlParser;
-        $this->xrdNode = $xrdNodes[count($xrdNodes) - 1];
-        $this->allXrdNodes =& $xrdNodes;
-        $this->serviceList = array();
-        $this->_parse();
-    }
-
-    /**
-     * Parse an XML string (XRDS document) and return either a
-     * Services_Yadis_XRDS object or null, depending on whether the
-     * XRDS XML is valid.
-     *
-     * @param string $xml_string An XRDS XML string.
-     * @return mixed $xrds An instance of Services_Yadis_XRDS or null,
-     * depending on the validity of $xml_string
-     */
-    function &parseXRDS($xml_string, $extra_ns_map = null)
-    {
-        $_null = null;
-
-        if (!$xml_string) {
-            return $_null;
-        }
-
-        $parser = Services_Yadis_getXMLParser();
-
-        $ns_map = Services_Yadis_getNSMap();
-
-        if ($extra_ns_map && is_array($extra_ns_map)) {
-            $ns_map = array_merge($ns_map, $extra_ns_map);
-        }
-
-        if (!($parser && $parser->init($xml_string, $ns_map))) {
-            return $_null;
-        }
-
-        // Try to get root element.
-        $root = $parser->evalXPath('/xrds:XRDS[1]');
-        if (!$root) {
-            return $_null;
-        }
-
-        if (is_array($root)) {
-            $root = $root[0];
-        }
-
-        $attrs = $parser->attributes($root);
-
-        if (array_key_exists('xmlns:xrd', $attrs) &&
-            $attrs['xmlns:xrd'] != 'xri://$xrd*($v*2.0)') {
-            return $_null;
-        } else if (array_key_exists('xmlns', $attrs) &&
-                   preg_match('/xri/', $attrs['xmlns']) &&
-                   $attrs['xmlns'] != 'xri://$xrd*($v*2.0)') {
-            return $_null;
-        }
-
-        // Get the last XRD node.
-        $xrd_nodes = $parser->evalXPath('/xrds:XRDS[1]/xrd:XRD');
-
-        if (!$xrd_nodes) {
-            return $_null;
-        }
-
-        $xrds = new Services_Yadis_XRDS($parser, $xrd_nodes);
-        return $xrds;
-    }
-
-    /**
-     * @access private
-     */
-    function _addService($priority, $service)
-    {
-        $priority = intval($priority);
-
-        if (!array_key_exists($priority, $this->serviceList)) {
-            $this->serviceList[$priority] = array();
-        }
-
-        $this->serviceList[$priority][] = $service;
-    }
-
-    /**
-     * Creates the service list using nodes from the XRDS XML
-     * document.
-     *
-     * @access private
-     */
-    function _parse()
-    {
-        $this->serviceList = array();
-
-        $services = $this->parser->evalXPath('xrd:Service', $this->xrdNode);
-
-        foreach ($services as $node) {
-            $s =& new Services_Yadis_Service();
-            $s->element = $node;
-            $s->parser =& $this->parser;
-
-            $priority = $s->getPriority();
-
-            if ($priority === null) {
-                $priority = SERVICES_YADIS_MAX_PRIORITY;
-            }
-
-            $this->_addService($priority, $s);
-        }
-    }
-
-    /**
-     * Returns a list of service objects which correspond to <Service>
-     * elements in the XRDS XML document for this object.
-     *
-     * Optionally, an array of filter callbacks may be given to limit
-     * the list of returned service objects.  Furthermore, the default
-     * mode is to return all service objects which match ANY of the
-     * specified filters, but $filter_mode may be
-     * SERVICES_YADIS_MATCH_ALL if you want to be sure that the
-     * returned services match all the given filters.  See {@link
-     * Services_Yadis_Yadis} for detailed usage information on filter
-     * functions.
-     *
-     * @param mixed $filters An array of callbacks to filter the
-     * returned services, or null if all services are to be returned.
-     * @param integer $filter_mode SERVICES_YADIS_MATCH_ALL or
-     * SERVICES_YADIS_MATCH_ANY, depending on whether the returned
-     * services should match ALL or ANY of the specified filters,
-     * respectively.
-     * @return mixed $services An array of {@link
-     * Services_Yadis_Service} objects if $filter_mode is a valid
-     * mode; null if $filter_mode is an invalid mode (i.e., not
-     * SERVICES_YADIS_MATCH_ANY or SERVICES_YADIS_MATCH_ALL).
-     */
-    function services($filters = null,
-                      $filter_mode = SERVICES_YADIS_MATCH_ANY)
-    {
-
-        $pri_keys = array_keys($this->serviceList);
-        sort($pri_keys, SORT_NUMERIC);
-
-        // If no filters are specified, return the entire service
-        // list, ordered by priority.
-        if (!$filters ||
-            (!is_array($filters))) {
-
-            $result = array();
-            foreach ($pri_keys as $pri) {
-                $result = array_merge($result, $this->serviceList[$pri]);
-            }
-
-            return $result;
-        }
-
-        // If a bad filter mode is specified, return null.
-        if (!in_array($filter_mode, array(SERVICES_YADIS_MATCH_ANY,
-                                          SERVICES_YADIS_MATCH_ALL))) {
-            return null;
-        }
-
-        // Otherwise, use the callbacks in the filter list to
-        // determine which services are returned.
-        $filtered = array();
-
-        foreach ($pri_keys as $priority_value) {
-            $service_obj_list = $this->serviceList[$priority_value];
-
-            foreach ($service_obj_list as $service) {
-
-                $matches = 0;
-
-                foreach ($filters as $filter) {
-                    if (call_user_func_array($filter, array($service))) {
-                        $matches++;
-
-                        if ($filter_mode == SERVICES_YADIS_MATCH_ANY) {
-                            $pri = $service->getPriority();
-                            if ($pri === null) {
-                                $pri = SERVICES_YADIS_MAX_PRIORITY;
-                            }
-
-                            if (!array_key_exists($pri, $filtered)) {
-                                $filtered[$pri] = array();
-                            }
-
-                            $filtered[$pri][] = $service;
-                            break;
-                        }
-                    }
-                }
-
-                if (($filter_mode == SERVICES_YADIS_MATCH_ALL) &&
-                    ($matches == count($filters))) {
-
-                    $pri = $service->getPriority();
-                    if ($pri === null) {
-                        $pri = SERVICES_YADIS_MAX_PRIORITY;
-                    }
-
-                    if (!array_key_exists($pri, $filtered)) {
-                        $filtered[$pri] = array();
-                    }
-                    $filtered[$pri][] = $service;
-                }
-            }
-        }
-
-        $pri_keys = array_keys($filtered);
-        sort($pri_keys, SORT_NUMERIC);
-
-        $result = array();
-        foreach ($pri_keys as $pri) {
-            $result = array_merge($result, $filtered[$pri]);
-        }
-
-        return $result;
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/XRI.php 12/libraries/openid/Services/Yadis/XRI.php
--- 11/libraries/openid/Services/Yadis/XRI.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/XRI.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,235 +0,0 @@
-<?php
-// Check to ensure this file is within the rest of the framework
-defined('JPATH_BASE') or die();
-
-/**
- * Routines for XRI resolution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-require_once 'Services/Yadis/Misc.php';
-require_once 'Services/Yadis/Yadis.php';
-require_once 'Auth/OpenID.php';
-
-function Services_Yadis_getDefaultProxy()
-{
-    return 'http://proxy.xri.net/';
-}
-
-function Services_Yadis_getXRIAuthorities()
-{
-    return array('!', '=', '@', '+', '$', '(');
-}
-
-function Services_Yadis_getEscapeRE()
-{
-    $parts = array();
-    foreach (array_merge(Services_Yadis_getUCSChars(),
-                         Services_Yadis_getIPrivateChars()) as $pair) {
-        list($m, $n) = $pair;
-        $parts[] = sprintf("%s-%s", chr($m), chr($n));
-    }
-
-    return sprintf('/[%s]/', implode('', $parts));
-}
-
-function Services_Yadis_getXrefRE()
-{
-    return '/\((.*?)\)/';
-}
-
-function Services_Yadis_identifierScheme($identifier)
-{
-    if (Services_Yadis_startswith($identifier, 'xri://') ||
-        (in_array($identifier[0], Services_Yadis_getXRIAuthorities()))) {
-        return "XRI";
-    } else {
-        return "URI";
-    }
-}
-
-function Services_Yadis_toIRINormal($xri)
-{
-    if (!Services_Yadis_startswith($xri, 'xri://')) {
-        $xri = 'xri://' . $xri;
-    }
-
-    return Services_Yadis_escapeForIRI($xri);
-}
-
-function _escape_xref($xref_match)
-{
-    $xref = $xref_match[0];
-    $xref = str_replace('/', '%2F', $xref);
-    $xref = str_replace('?', '%3F', $xref);
-    $xref = str_replace('#', '%23', $xref);
-    return $xref;
-}
-
-function Services_Yadis_escapeForIRI($xri)
-{
-    $xri = str_replace('%', '%25', $xri);
-    $xri = preg_replace_callback(Services_Yadis_getXrefRE(),
-                                 '_escape_xref', $xri);
-    return $xri;
-}
-
-function Services_Yadis_toURINormal($xri)
-{
-    return Services_Yadis_iriToURI(Services_Yadis_toIRINormal($xri));
-}
-
-function Services_Yadis_iriToURI($iri)
-{
-    if (1) {
-        return $iri;
-    } else {
-        // According to RFC 3987, section 3.1, "Mapping of IRIs to URIs"
-        return preg_replace_callback(Services_Yadis_getEscapeRE(),
-                                     'Services_Yadis_pct_escape_unicode', $iri);
-    }
-}
-
-
-function Services_Yadis_XRIAppendArgs($url, $args)
-{
-    // Append some arguments to an HTTP query.  Yes, this is just like
-    // OpenID's appendArgs, but with special seasoning for XRI
-    // queries.
-
-    if (count($args) == 0) {
-        return $url;
-    }
-
-    // Non-empty array; if it is an array of arrays, use multisort;
-    // otherwise use sort.
-    if (array_key_exists(0, $args) &&
-        is_array($args[0])) {
-        // Do nothing here.
-    } else {
-        $keys = array_keys($args);
-        sort($keys);
-        $new_args = array();
-        foreach ($keys as $key) {
-            $new_args[] = array($key, $args[$key]);
-        }
-        $args = $new_args;
-    }
-
-    // According to XRI Resolution section "QXRI query parameters":
-    //
-    // "If the original QXRI had a null query component (only a
-    //  leading question mark), or a query component consisting of
-    //  only question marks, one additional leading question mark MUST
-    //  be added when adding any XRI resolution parameters."
-    if (strpos(rtrim($url, '?'), '?') !== false) {
-        $sep = '&';
-    } else {
-        $sep = '?';
-    }
-
-    return $url . $sep . Auth_OpenID::httpBuildQuery($args);
-}
-
-function Services_Yadis_providerIsAuthoritative($providerID, $canonicalID)
-{
-    $lastbang = strrpos($canonicalID, '!');
-    $p = substr($canonicalID, 0, $lastbang);
-    return $p == $providerID;
-}
-
-function Services_Yadis_rootAuthority($xri)
-{
-    // Return the root authority for an XRI.
-
-    $root = null;
-
-    if (Services_Yadis_startswith($xri, 'xri://')) {
-        $xri = substr($xri, 6);
-    }
-
-    $authority = explode('/', $xri, 2);
-    $authority = $authority[0];
-    if ($authority[0] == '(') {
-        // Cross-reference.
-        // XXX: This is incorrect if someone nests cross-references so
-        //   there is another close-paren in there.  Hopefully nobody
-        //   does that before we have a real xriparse function.
-        //   Hopefully nobody does that *ever*.
-        $root = substr($authority, 0, strpos($authority, ')') + 1);
-    } else if (in_array($authority[0], Services_Yadis_getXRIAuthorities())) {
-        // Other XRI reference.
-        $root = $authority[0];
-    } else {
-        // IRI reference.
-        $_segments = explode("!", $authority);
-        $segments = array();
-        foreach ($_segments as $s) {
-            $segments = array_merge($segments, explode("*", $s));
-        }
-        $root = $segments[0];
-    }
-
-    return Services_Yadis_XRI($root);
-}
-
-function Services_Yadis_XRI($xri)
-{
-    if (!Services_Yadis_startswith($xri, 'xri://')) {
-        $xri = 'xri://' . $xri;
-    }
-    return $xri;
-}
-
-function Services_Yadis_getCanonicalID($iname, $xrds)
-{
-    // Returns FALSE or a canonical ID value.
-
-    // Now nodes are in reverse order.
-    $xrd_list = array_reverse($xrds->allXrdNodes);
-    $parser =& $xrds->parser;
-    $node = $xrd_list[0];
-
-    $canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node);
-
-    if (!$canonicalID_nodes) {
-        return false;
-    }
-
-    $canonicalID = $canonicalID_nodes[count($canonicalID_nodes) - 1];
-    $canonicalID = Services_Yadis_XRI($parser->content($canonicalID));
-
-    $childID = $canonicalID;
-
-    for ($i = 1; $i < count($xrd_list); $i++) {
-        $xrd = $xrd_list[$i];
-
-        $parent_sought = substr($childID, 0, strrpos($childID, '!'));
-        $parent_list = array();
-
-        foreach ($parser->evalXPath('xrd:CanonicalID', $xrd) as $c) {
-            $parent_list[] = Services_Yadis_XRI($parser->content($c));
-        }
-
-        if (!in_array($parent_sought, $parent_list)) {
-            // raise XRDSFraud.
-            return false;
-        }
-
-        $childID = $parent_sought;
-    }
-
-    $root = Services_Yadis_rootAuthority($iname);
-    if (!Services_Yadis_providerIsAuthoritative($root, $childID)) {
-        // raise XRDSFraud.
-        return false;
-    }
-
-    return $canonicalID;
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/XRIRes.php 12/libraries/openid/Services/Yadis/XRIRes.php
--- 11/libraries/openid/Services/Yadis/XRIRes.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/XRIRes.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,70 +0,0 @@
-<?php
-// Check to ensure this file is within the rest of the framework
-defined('JPATH_BASE') or die();
-
-require_once 'Services/Yadis/XRDS.php';
-require_once 'Services/Yadis/XRI.php';
-
-class Services_Yadis_ProxyResolver {
-    function Services_Yadis_ProxyResolver(&$fetcher, $proxy_url = null)
-    {
-        $this->fetcher =& $fetcher;
-        $this->proxy_url = $proxy_url;
-        if (!$this->proxy_url) {
-            $this->proxy_url = Services_Yadis_getDefaultProxy();
-        }
-    }
-
-    function queryURL($xri, $service_type = null)
-    {
-        // trim off the xri:// prefix
-        $qxri = substr(Services_Yadis_toURINormal($xri), 6);
-        $hxri = $this->proxy_url . $qxri;
-        $args = array(
-                      '_xrd_r' => 'application/xrds+xml'
-                      );
-
-        if ($service_type) {
-            $args['_xrd_t'] = $service_type;
-        } else {
-            // Don't perform service endpoint selection.
-            $args['_xrd_r'] .= ';sep=false';
-        }
-
-        $query = Services_Yadis_XRIAppendArgs($hxri, $args);
-        return $query;
-    }
-
-    function query($xri, $service_types, $filters = array())
-    {
-        $services = array();
-        $canonicalID = null;
-        foreach ($service_types as $service_type) {
-            $url = $this->queryURL($xri, $service_type);
-            $response = $this->fetcher->get($url);
-            if ($response->status != 200) {
-                continue;
-            }
-            $xrds = Services_Yadis_XRDS::parseXRDS($response->body);
-            if (!$xrds) {
-                continue;
-            }
-            $canonicalID = Services_Yadis_getCanonicalID($xri,
-                                                         $xrds);
-
-            if ($canonicalID === false) {
-                return null;
-            }
-
-            $some_services = $xrds->services($filters);
-            $services = array_merge($services, $some_services);
-            // TODO:
-            //  * If we do get hits for multiple service_types, we're
-            //    almost certainly going to have duplicated service
-            //    entries and broken priority ordering.
-        }
-        return array($canonicalID, $services);
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/openid/Services/Yadis/Yadis.php 12/libraries/openid/Services/Yadis/Yadis.php
--- 11/libraries/openid/Services/Yadis/Yadis.php	2008-07-07 00:39:26.000000000 +0200
+++ 12/libraries/openid/Services/Yadis/Yadis.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,315 +0,0 @@
-<?php
-// Check to ensure this file is within the rest of the framework
-defined('JPATH_BASE') or die();
-
-/**
- * The core PHP Yadis implementation.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package Yadis
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005 Janrain, Inc.
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- */
-
-/**
- * Need both fetcher types so we can use the right one based on the
- * presence or absence of CURL.
- */
-require_once "Services/Yadis/PlainHTTPFetcher.php";
-require_once "Services/Yadis/ParanoidHTTPFetcher.php";
-
-/**
- * Need this for parsing HTML (looking for META tags).
- */
-require_once "Services/Yadis/ParseHTML.php";
-
-/**
- * Need this to parse the XRDS document during Yadis discovery.
- */
-require_once "Services/Yadis/XRDS.php";
-
-/**
- * This is the core of the PHP Yadis library.  This is the only class
- * a user needs to use to perform Yadis discovery.  This class
- * performs the discovery AND stores the result of the discovery.
- *
- * First, require this library into your program source:
- *
- * <pre>  require_once "Services/Yadis/Yadis.php";</pre>
- *
- * To perform Yadis discovery, first call the "discover" method
- * statically with a URI parameter:
- *
- * <pre>  $http_response = array();
- *  $fetcher = Services_Yadis_Yadis::getHTTPFetcher();
- *  $yadis_object = Services_Yadis_Yadis::discover($uri,
- *                                    $http_response, $fetcher);</pre>
- *
- * If the discovery succeeds, $yadis_object will be an instance of
- * {@link Services_Yadis_Yadis}.  If not, it will be null.  The XRDS
- * document found during discovery should have service descriptions,
- * which can be accessed by calling
- *
- * <pre>  $service_list = $yadis_object->services();</pre>
- *
- * which returns an array of objects which describe each service.
- * These objects are instances of Services_Yadis_Service.  Each object
- * describes exactly one whole Service element, complete with all of
- * its Types and URIs (no expansion is performed).  The common use
- * case for using the service objects returned by services() is to
- * write one or more filter functions and pass those to services():
- *
- * <pre>  $service_list = $yadis_object->services(
- *                               array("filterByURI",
- *                                     "filterByExtension"));</pre>
- *
- * The filter functions (whose names appear in the array passed to
- * services()) take the following form:
- *
- * <pre>  function myFilter(&$service) {
- *       // Query $service object here.  Return true if the service
- *       // matches your query; false if not.
- *  }</pre>
- *
- * This is an example of a filter which uses a regular expression to
- * match the content of URI tags (note that the Services_Yadis_Service
- * class provides a getURIs() method which you should use instead of
- * this contrived example):
- *
- * <pre>
- *  function URIMatcher(&$service) {
- *      foreach ($service->getElements('xrd:URI') as $uri) {
- *          if (preg_match("/some_pattern/",
- *                         $service->parser->content($uri))) {
- *              return true;
- *          }
- *      }
- *      return false;
- *  }</pre>
- *
- * The filter functions you pass will be called for each service
- * object to determine which ones match the criteria your filters
- * specify.  The default behavior is that if a given service object
- * matches ANY of the filters specified in the services() call, it
- * will be returned.  You can specify that a given service object will
- * be returned ONLY if it matches ALL specified filters by changing
- * the match mode of services():
- *
- * <pre>  $yadis_object->services(array("filter1", "filter2"),
- *                          SERVICES_YADIS_MATCH_ALL);</pre>
- *
- * See {@link SERVICES_YADIS_MATCH_ALL} and {@link
- * SERVICES_YADIS_MATCH_ANY}.
- *
- * Services described in an XRDS should have a library which you'll
- * probably be using.  Those libraries are responsible for defining
- * filters that can be used with the "services()" call.  If you need
- * to write your own filter, see the documentation for {@link
- * Services_Yadis_Service}.
- *
- * @package Yadis
- */
-class Services_Yadis_Yadis {
-
-    /**
-     * Returns an HTTP fetcher object.  If the CURL extension is
-     * present, an instance of {@link Services_Yadis_ParanoidHTTPFetcher}
-     * is returned.  If not, an instance of
-     * {@link Services_Yadis_PlainHTTPFetcher} is returned.
-     */
-    function getHTTPFetcher($timeout = 20)
-    {
-        if (Services_Yadis_Yadis::curlPresent()) {
-            $fetcher = new Services_Yadis_ParanoidHTTPFetcher($timeout);
-        } else {
-            $fetcher = new Services_Yadis_PlainHTTPFetcher($timeout);
-        }
-        return $fetcher;
-    }
-
-    function curlPresent()
-    {
-        return function_exists('curl_init');
-    }
-
-    /**
-     * @access private
-     */
-    function _getHeader($header_list, $names)
-    {
-        foreach ($header_list as $name => $value) {
-            foreach ($names as $n) {
-                if (strtolower($name) == strtolower($n)) {
-                    return $value;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * @access private
-     */
-    function _getContentType($content_type_header)
-    {
-        if ($content_type_header) {
-            $parts = explode(";", $content_type_header);
-            return strtolower($parts[0]);
-        }
-    }
-
-    /**
-     * This should be called statically and will build a Yadis
-     * instance if the discovery process succeeds.  This implements
-     * Yadis discovery as specified in the Yadis specification.
-     *
-     * @param string $uri The URI on which to perform Yadis discovery.
-     *
-     * @param array $http_response An array reference where the HTTP
-     * response object will be stored (see {@link
-     * Services_Yadis_HTTPResponse}.
-     *
-     * @param Services_Yadis_HTTPFetcher $fetcher An instance of a
-     * Services_Yadis_HTTPFetcher subclass.
-     *
-     * @param array $extra_ns_map An array which maps namespace names
-     * to namespace URIs to be used when parsing the Yadis XRDS
-     * document.
-     *
-     * @param integer $timeout An optional fetcher timeout, in seconds.
-     *
-     * @return mixed $obj Either null or an instance of
-     * Services_Yadis_Yadis, depending on whether the discovery
-     * succeeded.
-     */
-    function discover($uri, &$http_response, &$fetcher,
-                      $extra_ns_map = null, $timeout = 20)
-    {
-        if (!$uri) {
-            return null;
-        }
-
-        $request_uri = $uri;
-        $headers = array("Accept: application/xrds+xml");
-
-        if (!$fetcher) {
-            $fetcher = Services_Yadis_Yadis::getHTTPFetcher($timeout);
-        }
-
-        $response = $fetcher->get($uri, $headers);
-        $http_response = $response;
-
-        if (!$response) {
-            return null;
-        }
-
-        if ($response->status != 200) {
-          return null;
-        }
-
-        $xrds_uri = $response->final_url;
-        $uri = $response->final_url;
-        $body = $response->body;
-
-        $xrds_header_uri = Services_Yadis_Yadis::_getHeader(
-                                                    $response->headers,
-                                                    array('x-xrds-location',
-                                                          'x-yadis-location'));
-
-        $content_type = Services_Yadis_Yadis::_getHeader($response->headers,
-                                                         array('content-type'));
-
-        if ($xrds_header_uri) {
-            $xrds_uri = $xrds_header_uri;
-            $response = $fetcher->get($xrds_uri);
-            $http_response = $response;
-            if (!$response) {
-                return null;
-            } else {
-                $body = $response->body;
-                $headers = $response->headers;
-                $content_type = Services_Yadis_Yadis::_getHeader($headers,
-                                                       array('content-type'));
-            }
-        }
-
-        if (Services_Yadis_Yadis::_getContentType($content_type) !=
-            'application/xrds+xml') {
-            // Treat the body as HTML and look for a META tag.
-            $parser = new Services_Yadis_ParseHTML();
-            $new_uri = $parser->getHTTPEquiv($body);
-            $xrds_uri = null;
-            if ($new_uri) {
-                $response = $fetcher->get($new_uri);
-                if ($response->status != 200) {
-                  return null;
-                }
-                $http_response = $response;
-                $body = $response->body;
-                $xrds_uri = $new_uri;
-                $content_type = Services_Yadis_Yadis::_getHeader(
-                                                         $response->headers,
-                                                         array('content-type'));
-            }
-        }
-
-        $xrds = Services_Yadis_XRDS::parseXRDS($body, $extra_ns_map);
-
-        if ($xrds !== null) {
-            $y = new Services_Yadis_Yadis();
-
-            $y->request_uri = $request_uri;
-            $y->xrds = $xrds;
-            $y->uri = $uri;
-            $y->xrds_uri = $xrds_uri;
-            $y->body = $body;
-            $y->content_type = $content_type;
-
-            return $y;
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Instantiates an empty Services_Yadis_Yadis object.  This
-     * constructor should not be used by any user of the library.
-     * This constructor results in a completely useless object which
-     * must be populated with valid discovery information.  Instead of
-     * using this constructor, call
-     * Services_Yadis_Yadis::discover($uri).
-     */
-    function Services_Yadis_Yadis()
-    {
-        $this->request_uri = null;
-        $this->uri = null;
-        $this->xrds = null;
-        $this->xrds_uri = null;
-        $this->body = null;
-        $this->content_type = null;
-    }
-
-    /**
-     * Returns the list of service objects as described by the XRDS
-     * document, if this yadis object represents a successful Yadis
-     * discovery.
-     *
-     * @return array $services An array of {@link Services_Yadis_Service}
-     * objects
-     */
-    function services()
-    {
-        if ($this->xrds) {
-            return $this->xrds->services();
-        }
-
-        return null;
-    }
-}
-
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/pear/PEAR5.php 12/libraries/pear/PEAR5.php
--- 11/libraries/pear/PEAR5.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/libraries/pear/PEAR5.php	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,33 @@
+<?php
+/**
+ * This is only meant for PHP 5 to get rid of certain strict warning
+ * that doesn't get hidden since it's in the shutdown function
+ */
+class PEAR5
+{
+    /**
+    * If you have a class that's mostly/entirely static, and you need static
+    * properties, you can use this method to simulate them. Eg. in your method(s)
+    * do this: $myVar = &PEAR5::getStaticProperty('myclass', 'myVar');
+    * You MUST use a reference, or they will not persist!
+    *
+    * @access public
+    * @param  string $class  The calling classname, to prevent clashes
+    * @param  string $var    The variable to retrieve.
+    * @return mixed   A reference to the variable. If not set it will be
+    *                 auto initialised to NULL.
+    */
+    static function &getStaticProperty($class, $var)
+    {
+        static $properties;
+        if (!isset($properties[$class])) {
+            $properties[$class] = array();
+        }
+
+        if (!array_key_exists($var, $properties[$class])) {
+            $properties[$class][$var] = null;
+        }
+
+        return $properties[$class][$var];
+    }
+}
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/pear/PEAR.php 12/libraries/pear/PEAR.php
--- 11/libraries/pear/PEAR.php	2008-07-07 00:39:28.000000000 +0200
+++ 12/libraries/pear/PEAR.php	2009-06-30 22:01:32.000000000 +0200
@@ -6,21 +6,15 @@
  *
  * PHP versions 4 and 5
  *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
  * @category   pear
  * @package    PEAR
  * @author     Sterling Hughes <sterling@php.net>
  * @author     Stig Bakken <ssb@php.net>
  * @author     Tomas V.V.Cox <cox@idecnet.com>
  * @author     Greg Beaver <cellog@php.net>
- * @copyright  1997-2006 The PHP Group
- * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: PEAR.php 10381 2008-06-01 03:35:53Z pasamio $
+ * @copyright  1997-2009 The Authors
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: PEAR.php 12356 2009-06-24 18:20:14Z ian $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -52,15 +46,6 @@
     define('PEAR_OS',    'Unix'); // blatant assumption
 }
 
-// instant backwards compatibility
-if (!defined('PATH_SEPARATOR')) {
-    if (OS_WINDOWS) {
-        define('PATH_SEPARATOR', ';');
-    } else {
-        define('PATH_SEPARATOR', ':');
-    }
-}
-
 $GLOBALS['_PEAR_default_error_mode']     = PEAR_ERROR_RETURN;
 $GLOBALS['_PEAR_default_error_options']  = E_USER_NOTICE;
 $GLOBALS['_PEAR_destructor_object_list'] = array();
@@ -92,8 +77,8 @@
  * @author     Tomas V.V. Cox <cox@idecnet.com>
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
- * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.10
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    Release: 1.8.1
  * @link       http://pear.php.net/package/PEAR
  * @see        PEAR_Error
  * @since      Class available since PHP 4.0.2
@@ -230,6 +215,14 @@
     function &getStaticProperty($class, $var)
     {
         static $properties;
+        if (!isset($properties[$class])) {
+            $properties[$class] = array();
+        }
+
+        if (!array_key_exists($var, $properties[$class])) {
+            $properties[$class][$var] = null;
+        }
+
         return $properties[$class][$var];
     }
 
@@ -272,16 +265,17 @@
      */
     function isError($data, $code = null)
     {
-        if (is_a($data, 'PEAR_Error')) {
-            if (is_null($code)) {
-                return true;
-            } elseif (is_string($code)) {
-                return $data->getMessage() == $code;
-            } else {
-                return $data->getCode() == $code;
-            }
+        if (!is_a($data, 'PEAR_Error')) {
+            return false;
         }
-        return false;
+
+        if (is_null($code)) {
+            return true;
+        } elseif (is_string($code)) {
+            return $data->getMessage() == $code;
+        }
+
+        return $data->getCode() == $code;
     }
 
     // }}}
@@ -449,7 +443,6 @@
     function delExpect($error_code)
     {
         $deleted = false;
-
         if ((is_array($error_code) && (0 != count($error_code)))) {
             // $error_code is a non-empty array here;
             // we walk through it trying to unset all
@@ -469,10 +462,10 @@
             } else {
                 return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
             }
-        } else {
-            // $error_code is empty
-            return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
         }
+
+        // $error_code is empty
+        return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
     }
 
     // }}}
@@ -539,6 +532,7 @@
                 $mode = PEAR_ERROR_RETURN;
             }
         }
+
         // No mode given, try global ones
         if ($mode === null) {
             // Class error handler
@@ -559,13 +553,20 @@
         } else {
             $ec = 'PEAR_Error';
         }
-        if ($skipmsg) {
-            $a = &new $ec($code, $mode, $options, $userinfo);
+
+        if (intval(PHP_VERSION) < 5) {
+            // little non-eval hack to fix bug #12147
+            include 'PEAR/FixPHP5PEARWarnings.php';
             return $a;
+        }
+
+        if ($skipmsg) {
+            $a = new $ec($code, $mode, $options, $userinfo);
         } else {
-            $a = &new $ec($message, $code, $mode, $options, $userinfo);
-            return $a;
+            $a = new $ec($message, $code, $mode, $options, $userinfo);
         }
+
+        return $a;
     }
 
     // }}}
@@ -585,10 +586,10 @@
         if (isset($this) && is_a($this, 'PEAR')) {
             $a = &$this->raiseError($message, $code, null, null, $userinfo);
             return $a;
-        } else {
-            $a = &PEAR::raiseError($message, $code, null, null, $userinfo);
-            return $a;
         }
+
+        $a = &PEAR::raiseError($message, $code, null, null, $userinfo);
+        return $a;
     }
 
     // }}}
@@ -739,6 +740,7 @@
             if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
                 return false;
             }
+
             if (OS_WINDOWS) {
                 $suffix = '.dll';
             } elseif (PHP_OS == 'HP-UX') {
@@ -750,14 +752,20 @@
             } else {
                 $suffix = '.so';
             }
+
             return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix);
         }
+
         return true;
     }
 
     // }}}
 }
 
+if (PEAR_ZE2) {
+    include_once 'PEAR5.php';
+}
+
 // {{{ _PEAR_call_destructors()
 
 function _PEAR_call_destructors()
@@ -767,9 +775,16 @@
         sizeof($_PEAR_destructor_object_list))
     {
         reset($_PEAR_destructor_object_list);
-        if (@PEAR::getStaticProperty('PEAR', 'destructlifo')) {
+        if (PEAR_ZE2) {
+            $destructLifoExists = PEAR5::getStaticProperty('PEAR', 'destructlifo');
+        } else {
+            $destructLifoExists = PEAR::getStaticProperty('PEAR', 'destructlifo');
+        }
+
+        if ($destructLifoExists) {
             $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
         }
+
         while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
             $classname = get_class($objref);
             while ($classname) {
@@ -807,8 +822,8 @@
  * @author     Tomas V.V. Cox <cox@idecnet.com>
  * @author     Gregory Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
- * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.10
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    Release: 1.8.1
  * @link       http://pear.php.net/manual/en/core.pear.pear-error.php
  * @see        PEAR::raiseError(), PEAR::throwError()
  * @since      Class available since PHP 4.0.2
@@ -858,9 +873,17 @@
         $this->code      = $code;
         $this->mode      = $mode;
         $this->userinfo  = $userinfo;
-        if (function_exists("debug_backtrace")) {
-            if (@!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) {
-                $this->backtrace = debug_backtrace();
+
+        if (PEAR_ZE2) {
+            $skiptrace = PEAR5::getStaticProperty('PEAR_Error', 'skiptrace');
+        } else {
+            $skiptrace = PEAR::getStaticProperty('PEAR_Error', 'skiptrace');
+        }
+
+        if (!$skiptrace) {
+            $this->backtrace = debug_backtrace();
+            if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) {
+                unset($this->backtrace[0]['object']);
             }
         }
         if ($mode & PEAR_ERROR_CALLBACK) {
@@ -1041,6 +1064,12 @@
 
     // }}}
     // {{{ toString()
+    function __toString()
+    {
+        return $this->getMessage();
+    }
+    // }}}
+    // {{{ toString()
 
     /**
      * Make a string representation of this object.
@@ -1098,4 +1127,3 @@
  * c-basic-offset: 4
  * End:
  */
-?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/phpmailer/language/phpmailer.lang-en.php 12/libraries/phpmailer/language/phpmailer.lang-en.php
--- 11/libraries/phpmailer/language/phpmailer.lang-en.php	2008-07-07 00:39:20.000000000 +0200
+++ 12/libraries/phpmailer/language/phpmailer.lang-en.php	2009-06-30 22:01:32.000000000 +0200
@@ -19,4 +19,6 @@
 $PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.';
 $PHPMAILER_LANG["file_access"] = 'Could not access file: ';
 $PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: ';
-$PHPMAILER_LANG["encoding"] = 'Unknown encoding: ';
\ No hay ningún carácter de nueva línea al final del fichero
+$PHPMAILER_LANG["encoding"] = 'Unknown encoding: ';$PHPMAILER_LANG["signing"]              = 'Signing Error: ';
+
+?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/phpmailer/language/phpmailer.lang-joomla.php 12/libraries/phpmailer/language/phpmailer.lang-joomla.php
--- 11/libraries/phpmailer/language/phpmailer.lang-joomla.php	2008-07-07 00:39:20.000000000 +0200
+++ 12/libraries/phpmailer/language/phpmailer.lang-joomla.php	2009-06-30 22:01:32.000000000 +0200
@@ -18,3 +18,6 @@
 $PHPMAILER_LANG["file_access"] = 'PHPMAILER_FILE_ACCESS';
 $PHPMAILER_LANG["file_open"] = 'PHPMAILER_FILE_OPEN';
 $PHPMAILER_LANG["encoding"] = 'PHPMAILER_ENCODING';
+$PHPMAILER_LANG["signing"] ='PHPMAILER_SIGNING'
+
+?>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/libraries/phpmailer/phpmailer.php 12/libraries/phpmailer/phpmailer.php
--- 11/libraries/phpmailer/phpmailer.php	2008-07-07 00:39:20.000000000 +0200
+++ 12/libraries/phpmailer/phpmailer.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,1500 +1,1909 @@
 <?php
-////////////////////////////////////////////////////
-// PHPMailer - PHP email class
-//
-// Class for sending email using either
-// sendmail, PHP mail(), or SMTP.  Methods are
-// based upon the standard AspEmail(tm) classes.
-//
-// Copyright (C) 2001 - 2003  Brent R. Matzelle
-//
-// License: LGPL, see LICENSE
-////////////////////////////////////////////////////
+/*~ class.phpmailer.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 2.0.4                                                          |
+|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
+|      Info: http://phpmailer.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/phpmailer/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost (project admininistrator)                         |
+|    Author: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2004-2007, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services (www.codeworxtech.com):                |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
 
 /**
  * PHPMailer - PHP email transport class
  * @package PHPMailer
- * @author Brent R. Matzelle
- * @copyright 2001 - 2003 Brent R. Matzelle
+ * @author Andy Prevost
+ * @copyright 2004 - 2009 Andy Prevost
  */
-class PHPMailer
-{
-    /////////////////////////////////////////////////
-    // PUBLIC VARIABLES
-    /////////////////////////////////////////////////
-
-    /**
-     * Email priority (1 = High, 3 = Normal, 5 = low).
-     * @var int
-     */
-    var $Priority          = 3;
-
-    /**
-     * Sets the CharSet of the message.
-     * @var string
-     */
-    var $CharSet           = "utf-8";
-
-    /**
-     * Sets the Content-type of the message.
-     * @var string
-     */
-    var $ContentType        = "text/plain";
-
-    /**
-     * Sets the Encoding of the message. Options for this are "8bit",
-     * "7bit", "binary", "base64", and "quoted-printable".
-     * @var string
-     */
-    var $Encoding          = "8bit";
-
-    /**
-     * Holds the most recent mailer error message.
-     * @var string
-     */
-    var $ErrorInfo         = "";
-
-    /**
-     * Sets the From email address for the message.
-     * @var string
-     */
-    var $From               = "root@localhost";
-
-    /**
-     * Sets the From name of the message.
-     * @var string
-     */
-    var $FromName           = "Root User";
-
-    /**
-     * Sets the Sender email (Return-Path) of the message.  If not empty,
-     * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
-     * @var string
-     */
-    var $Sender            = "";
-
-    /**
-     * Sets the Subject of the message.
-     * @var string
-     */
-    var $Subject           = "";
-
-    /**
-     * Sets the Body of the message.  This can be either an HTML or text body.
-     * If HTML then run IsHTML(true).
-     * @var string
-     */
-    var $Body               = "";
-
-    /**
-     * Sets the text-only body of the message.  This automatically sets the
-     * email to multipart/alternative.  This body can be read by mail
-     * clients that do not have HTML email capability such as mutt. Clients
-     * that can read HTML will view the normal Body.
-     * @var string
-     */
-    var $AltBody           = "";
-
-    /**
-     * Sets word wrapping on the body of the message to a given number of
-     * characters.
-     * @var int
-     */
-    var $WordWrap          = 0;
-
-    /**
-     * Method to send mail: ("mail", "sendmail", or "smtp").
-     * @var string
-     */
-    var $Mailer            = "mail";
-
-    /**
-     * Sets the path of the sendmail program.
-     * @var string
-     */
-    var $Sendmail          = "/usr/sbin/sendmail";
-
-    /**
-     * Path to PHPMailer plugins.  This is now only useful if the SMTP class
-     * is in a different directory than the PHP include path.
-     * @var string
-     */
-    var $PluginDir         = "";
-
-    /**
-     *  Holds PHPMailer version.
-     *  @var string
-     */
-    var $Version           = "1.73";
-
-    /**
-     * Sets the email address that a reading confirmation will be sent.
-     * @var string
-     */
-    var $ConfirmReadingTo  = "";
-
-    /**
-     *  Sets the hostname to use in Message-Id and Received headers
-     *  and as default HELO string. If empty, the value returned
-     *  by SERVER_NAME is used or 'localhost.localdomain'.
-     *  @var string
-     */
-    var $Hostname          = "";
-
-    /////////////////////////////////////////////////
-    // SMTP VARIABLES
-    /////////////////////////////////////////////////
-
-    /**
-     *  Sets the SMTP hosts.  All hosts must be separated by a
-     *  semicolon.  You can also specify a different port
-     *  for each host by using this format: [hostname:port]
-     *  (e.g. "smtp1.example.com:25;smtp2.example.com").
-     *  Hosts will be tried in order.
-     *  @var string
-     */
-    var $Host        = "localhost";
-
-    /**
-     *  Sets the default SMTP server port.
-     *  @var int
-     */
-    var $Port        = 25;
-
-    /**
-     *  Sets the SMTP HELO of the message (Default is $Hostname).
-     *  @var string
-     */
-    var $Helo        = "";
-
-    /**
-     *  Sets SMTP authentication. Utilizes the Username and Password variables.
-     *  @var bool
-     */
-    var $SMTPAuth     = false;
-
-    /**
-     *  Sets SMTP username.
-     *  @var string
-     */
-    var $Username     = "";
-
-    /**
-     *  Sets SMTP password.
-     *  @var string
-     */
-    var $Password     = "";
-
-    /**
-     *  Sets the SMTP server timeout in seconds. This function will not
-     *  work with the win32 version.
-     *  @var int
-     */
-    var $Timeout      = 10;
-
-    /**
-     *  Sets SMTP class debugging on or off.
-     *  @var bool
-     */
-    var $SMTPDebug    = false;
-
-    /**
-     * Prevents the SMTP connection from being closed after each mail
-     * sending.  If this is set to true then to close the connection
-     * requires an explicit call to SmtpClose().
-     * @var bool
-     */
-    var $SMTPKeepAlive = false;
-
-    /**#@+
-     * @access private
-     */
-    var $smtp            = NULL;
-    var $to              = array();
-    var $cc              = array();
-    var $bcc             = array();
-    var $ReplyTo         = array();
-    var $attachment      = array();
-    var $CustomHeader    = array();
-    var $message_type    = "";
-    var $boundary        = array();
-    var $language        = array();
-    var $error_count     = 0;
-    var $LE              = "\n";
-    /**#@-*/
-
-    /////////////////////////////////////////////////
-    // VARIABLE METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Sets message type to HTML.
-     * @param bool $bool
-     * @return void
-     */
-    function IsHTML($bool) {
-        if($bool == true)
-            $this->ContentType = "text/html";
-        else
-            $this->ContentType = "text/plain";
-    }
-
-    /**
-     * Sets Mailer to send message using SMTP.
-     * @return void
-     */
-    function IsSMTP() {
-        $this->Mailer = "smtp";
-    }
-
-    /**
-     * Sets Mailer to send message using PHP mail() function.
-     * @return void
-     */
-    function IsMail() {
-        $this->Mailer = "mail";
-    }
-
-    /**
-     * Sets Mailer to send message using the $Sendmail program.
-     * @return void
-     */
-    function IsSendmail() {
-        $this->Mailer = "sendmail";
-    }
-
-    /**
-     * Sets Mailer to send message using the qmail MTA.
-     * @return void
-     */
-    function IsQmail() {
-        $this->Sendmail = "/var/qmail/bin/sendmail";
-        $this->Mailer = "sendmail";
-    }
-
-
-    /////////////////////////////////////////////////
-    // RECIPIENT METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Adds a "To" address.
-     * @param string $address
-     * @param string $name
-     * @return void
-     */
-    function AddAddress($address, $name = "") {
-        $cur = count($this->to);
-        $this->to[$cur][0] = trim($address);
-        $this->to[$cur][1] = $name;
-    }
-
-    /**
-     * Adds a "Cc" address. Note: this function works
-     * with the SMTP mailer on win32, not with the "mail"
-     * mailer.
-     * @param string $address
-     * @param string $name
-     * @return void
-    */
-    function AddCC($address, $name = "") {
-        $cur = count($this->cc);
-        $this->cc[$cur][0] = trim($address);
-        $this->cc[$cur][1] = $name;
-    }
-
-    /**
-     * Adds a "Bcc" address. Note: this function works
-     * with the SMTP mailer on win32, not with the "mail"
-     * mailer.
-     * @param string $address
-     * @param string $name
-     * @return void
-     */
-    function AddBCC($address, $name = "") {
-        $cur = count($this->bcc);
-        $this->bcc[$cur][0] = trim($address);
-        $this->bcc[$cur][1] = $name;
-    }
-
-    /**
-     * Adds a "Reply-to" address.
-     * @param string $address
-     * @param string $name
-     * @return void
-     */
-    function AddReplyTo($address, $name = "") {
-        $cur = count($this->ReplyTo);
-        $this->ReplyTo[$cur][0] = trim($address);
-        $this->ReplyTo[$cur][1] = $name;
-    }
-
-
-    /////////////////////////////////////////////////
-    // MAIL SENDING METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Creates message and assigns Mailer. If the message is
-     * not sent successfully then it returns false.  Use the ErrorInfo
-     * variable to view description of the error.
-     * @return bool
-     */
-    function Send() {
-        $header = "";
-        $body = "";
-        $result = true;
 
-        if((count($this->to) + count($this->cc) + count($this->bcc)) < 1)
-        {
-            $this->SetError($this->Lang("provide_address"));
-            return false;
-        }
+class PHPMailer {
 
-        // Set whether the message is multipart/alternative
-        if(!empty($this->AltBody))
-            $this->ContentType = "multipart/alternative";
-
-        $this->error_count = 0; // reset errors
-        $this->SetMessageType();
-        $header .= $this->CreateHeader();
-        $body = $this->CreateBody();
-
-        if($body == "") { return false; }
-
-        // Choose the mailer
-        switch($this->Mailer)
-        {
-            case "sendmail":
-                $result = $this->SendmailSend($header, $body);
-                break;
-            case "mail":
-                $result = $this->MailSend($header, $body);
-                break;
-            case "smtp":
-                $result = $this->SmtpSend($header, $body);
-                break;
-            default:
-            $this->SetError($this->Mailer . $this->Lang("mailer_not_supported"));
-                $result = false;
-                break;
+  /////////////////////////////////////////////////
+  // PROPERTIES, PUBLIC
+  /////////////////////////////////////////////////
+
+  /**
+   * Email priority (1 = High, 3 = Normal, 5 = low).
+   * @var int
+   */
+  var $Priority          = 3;
+
+  /**
+   * Sets the CharSet of the message.
+   * @var string
+   */
+  var $CharSet           = 'utf-8';
+
+  /**
+   * Sets the Content-type of the message.
+   * @var string
+   */
+  var $ContentType        = 'text/plain';
+
+  /**
+   * Sets the Encoding of the message. Options for this are "8bit",
+   * "7bit", "binary", "base64", and "quoted-printable".
+   * @var string
+   */
+  var $Encoding          = '8bit';
+
+  /**
+   * Holds the most recent mailer error message.
+   * @var string
+   */
+  var $ErrorInfo         = '';
+
+  /**
+   * Sets the From email address for the message.
+   * @var string
+   */
+  var $From              = 'root@localhost';
+
+  /**
+   * Sets the From name of the message.
+   * @var string
+   */
+  var $FromName          = 'Root User';
+
+  /**
+   * Sets the Sender email (Return-Path) of the message.  If not empty,
+   * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
+   * @var string
+   */
+  var $Sender            = '';
+
+  /**
+   * Sets the Subject of the message.
+   * @var string
+   */
+  var $Subject           = '';
+
+  /**
+   * Sets the Body of the message.  This can be either an HTML or text body.
+   * If HTML then run IsHTML(true).
+   * @var string
+   */
+  var $Body              = '';
+
+  /**
+   * Sets the text-only body of the message.  This automatically sets the
+   * email to multipart/alternative.  This body can be read by mail
+   * clients that do not have HTML email capability such as mutt. Clients
+   * that can read HTML will view the normal Body.
+   * @var string
+   */
+  var $AltBody           = '';
+
+  /**
+   * Sets word wrapping on the body of the message to a given number of
+   * characters.
+   * @var int
+   */
+  var $WordWrap          = 0;
+
+  /**
+   * Method to send mail: ("mail", "sendmail", or "smtp").
+   * @var string
+   */
+  var $Mailer            = 'mail';
+
+  /**
+   * Sets the path of the sendmail program.
+   * @var string
+   */
+  var $Sendmail          = '/usr/sbin/sendmail';
+
+  /**
+   * Path to PHPMailer plugins.  This is now only useful if the SMTP class
+   * is in a different directory than the PHP include path.
+   * @var string
+   */
+  var $PluginDir         = '';
+
+  /**
+   * Holds PHPMailer version.
+   * @var string
+   */
+  var $Version           = "2.0.4";
+
+  /**
+   * Sets the email address that a reading confirmation will be sent.
+   * @var string
+   */
+  var $ConfirmReadingTo  = '';
+
+  /**
+   * Sets the hostname to use in Message-Id and Received headers
+   * and as default HELO string. If empty, the value returned
+   * by SERVER_NAME is used or 'localhost.localdomain'.
+   * @var string
+   */
+  var $Hostname          = '';
+
+  /**
+   * Sets the message ID to be used in the Message-Id header.
+   * If empty, a unique id will be generated.
+   * @var string
+   */
+  var $MessageID         = '';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES FOR SMTP
+  /////////////////////////////////////////////////
+
+  /**
+   * Sets the SMTP hosts.  All hosts must be separated by a
+   * semicolon.  You can also specify a different port
+   * for each host by using this format: [hostname:port]
+   * (e.g. "smtp1.example.com:25;smtp2.example.com").
+   * Hosts will be tried in order.
+   * @var string
+   */
+  var $Host        = 'localhost';
+
+  /**
+   * Sets the default SMTP server port.
+   * @var int
+   */
+  var $Port        = 25;
+
+  /**
+   * Sets the SMTP HELO of the message (Default is $Hostname).
+   * @var string
+   */
+  var $Helo        = '';
+
+  /**
+   * Sets connection prefix.
+   * Options are "", "ssl" or "tls"
+   * @var string
+   */
+  var $SMTPSecure = "";
+
+  /**
+   * Sets SMTP authentication. Utilizes the Username and Password variables.
+   * @var bool
+   */
+  var $SMTPAuth     = false;
+
+  /**
+   * Sets SMTP username.
+   * @var string
+   */
+  var $Username     = '';
+
+  /**
+   * Sets SMTP password.
+   * @var string
+   */
+  var $Password     = '';
+
+  /**
+   * Sets the SMTP server timeout in seconds. This function will not
+   * work with the win32 version.
+   * @var int
+   */
+  var $Timeout      = 10;
+
+  /**
+   * Sets SMTP class debugging on or off.
+   * @var bool
+   */
+  var $SMTPDebug    = false;
+
+  /**
+   * Prevents the SMTP connection from being closed after each mail
+   * sending.  If this is set to true then to close the connection
+   * requires an explicit call to SmtpClose().
+   * @var bool
+   */
+  var $SMTPKeepAlive = false;
+
+  /**
+   * Provides the ability to have the TO field process individual
+   * emails, instead of sending to entire TO addresses
+   * @var bool
+   */
+  var $SingleTo = false;
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PRIVATE
+  /////////////////////////////////////////////////
+
+  var $smtp            = NULL;
+  var $to              = array();
+  var $cc              = array();
+  var $bcc             = array();
+  var $ReplyTo         = array();
+  var $attachment      = array();
+  var $CustomHeader    = array();
+  var $message_type    = '';
+  var $boundary        = array();
+  var $language        = array();
+  var $error_count     = 0;
+  var $LE              = "\n";
+  var $sign_cert_file  = "";
+  var $sign_key_file   = "";
+  var $sign_key_pass   = "";
+
+  /////////////////////////////////////////////////
+  // METHODS, VARIABLES
+  /////////////////////////////////////////////////
+
+  /**
+   * Sets message type to HTML.
+   * @param bool $bool
+   * @return void
+   */
+  function IsHTML($bool) {
+    if($bool == true) {
+      $this->ContentType = 'text/html';
+    } else {
+      $this->ContentType = 'text/plain';
+    }
+  }
+
+  /**
+   * Sets Mailer to send message using SMTP.
+   * @return void
+   */
+  function IsSMTP() {
+    $this->Mailer = 'smtp';
+  }
+
+  /**
+   * Sets Mailer to send message using PHP mail() function.
+   * @return void
+   */
+  function IsMail() {
+    $this->Mailer = 'mail';
+  }
+
+  /**
+   * Sets Mailer to send message using the $Sendmail program.
+   * @return void
+   */
+  function IsSendmail() {
+    $this->Mailer = 'sendmail';
+  }
+
+  /**
+   * Sets Mailer to send message using the qmail MTA.
+   * @return void
+   */
+  function IsQmail() {
+    $this->Sendmail = '/var/qmail/bin/sendmail';
+    $this->Mailer = 'sendmail';
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, RECIPIENTS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds a "To" address.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddAddress($address, $name = '') {
+    $cur = count($this->to);
+    $this->to[$cur][0] = trim($address);
+    $this->to[$cur][1] = $name;
+  }
+
+  /**
+   * Adds a "Cc" address. Note: this function works
+   * with the SMTP mailer on win32, not with the "mail"
+   * mailer.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddCC($address, $name = '') {
+    $cur = count($this->cc);
+    $this->cc[$cur][0] = trim($address);
+    $this->cc[$cur][1] = $name;
+  }
+
+  /**
+   * Adds a "Bcc" address. Note: this function works
+   * with the SMTP mailer on win32, not with the "mail"
+   * mailer.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddBCC($address, $name = '') {
+    $cur = count($this->bcc);
+    $this->bcc[$cur][0] = trim($address);
+    $this->bcc[$cur][1] = $name;
+  }
+
+  /**
+   * Adds a "Reply-To" address.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddReplyTo($address, $name = '') {
+    $cur = count($this->ReplyTo);
+    $this->ReplyTo[$cur][0] = trim($address);
+    $this->ReplyTo[$cur][1] = $name;
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, MAIL SENDING
+  /////////////////////////////////////////////////
+
+  /**
+   * Creates message and assigns Mailer. If the message is
+   * not sent successfully then it returns false.  Use the ErrorInfo
+   * variable to view description of the error.
+   * @return bool
+   */
+  function Send() {
+    $header = '';
+    $body = '';
+    $result = true;
+
+    if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
+      $this->SetError($this->Lang('provide_address'));
+      return false;
+    }
+
+    /* Set whether the message is multipart/alternative */
+    if(!empty($this->AltBody)) {
+      $this->ContentType = 'multipart/alternative';
+    }
+
+    $this->error_count = 0; // reset errors
+    $this->SetMessageType();
+    $header .= $this->CreateHeader();
+    $body = $this->CreateBody();
+
+    if($body == '') {
+      return false;
+    }
+
+    /* Choose the mailer */
+    switch($this->Mailer) {
+      case 'sendmail':
+        $result = $this->SendmailSend($header, $body);
+        break;
+      case 'smtp':
+        $result = $this->SmtpSend($header, $body);
+        break;
+      case 'mail':
+        $result = $this->MailSend($header, $body);
+        break;
+      default:
+        $result = $this->MailSend($header, $body);
+        break;
+        //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported'));
+        //$result = false;
+        //break;
+    }
+
+    return $result;
+  }
+
+  /**
+   * Sends mail using the $Sendmail program.
+   * @access private
+   * @return bool
+   */
+  function SendmailSend($header, $body) {
+    if ($this->Sender != '') {
+      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
+    } else {
+      $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
+    }
+
+    if(!@$mail = popen($sendmail, 'w')) {
+      $this->SetError($this->Lang('execute') . $this->Sendmail);
+      return false;
+    }
+
+    fputs($mail, $header);
+    fputs($mail, $body);
+
+    $result = pclose($mail);
+    if (version_compare(phpversion(), '4.2.3') == -1) {
+      $result = $result >> 8 & 0xFF;
+    }
+    if($result != 0) {
+      $this->SetError($this->Lang('execute') . $this->Sendmail);
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends mail using the PHP mail() function.
+   * @access private
+   * @return bool
+   */
+  function MailSend($header, $body) {
+
+    $to = '';
+    for($i = 0; $i < count($this->to); $i++) {
+      if($i != 0) { $to .= ', '; }
+      $to .= $this->AddrFormat($this->to[$i]);
+    }
+
+    $toArr = split(',', $to);
+
+    $params = sprintf("-oi -f %s", $this->Sender);
+    if ($this->Sender != '' && strlen(ini_get('safe_mode')) < 1) {
+      $old_from = ini_get('sendmail_from');
+      ini_set('sendmail_from', $this->Sender);
+      if ($this->SingleTo === true && count($toArr) > 1) {
+        foreach ($toArr as $key => $val) {
+          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         }
-
-        return $result;
-    }
-
-    /**
-     * Sends mail using the $Sendmail program.
-     * @access private
-     * @return bool
-     */
-    function SendmailSend($header, $body) {
-        if ($this->Sender != "") {
-			$this->Sender = escapeshellcmd($this->Sender);
-            $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);
-		} else {
-            $sendmail = sprintf("%s -oi -t", $this->Sendmail);
-		}
-        if(!@$mail = popen($sendmail, "w"))
-        {
-            $this->SetError($this->Lang("execute") . $this->Sendmail);
-            return false;
-        }
-
-        fputs($mail, $header);
-        fputs($mail, $body);
-
-        $result = pclose($mail) >> 8 & 0xFF;
-        if($result != 0)
-        {
-            $this->SetError($this->Lang("execute") . $this->Sendmail);
-            return false;
+      } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+      }
+    } else {
+      if ($this->SingleTo === true && count($toArr) > 1) {
+        foreach ($toArr as $key => $val) {
+          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         }
-
-        return true;
+      } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
+      }
     }
 
-    /**
-     * Sends mail using the PHP mail() function.
-     * @access private
-     * @return bool
-     */
-    function MailSend($header, $body) {
-        $to = "";
-        for($i = 0; $i < count($this->to); $i++)
-        {
-            if($i != 0) { $to .= ", "; }
-            $to .= $this->to[$i][0];
-        }
-
-        if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1)
-        {
-            $old_from = ini_get("sendmail_from");
-            ini_set("sendmail_from", $this->Sender);
-            $params = sprintf("-oi -f %s", $this->Sender);
-            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body,
-                        $header, $params);
-        }
-        else
-            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);
-
-        if (isset($old_from))
-            ini_set("sendmail_from", $old_from);
-
-        if(!$rt)
-        {
-            $this->SetError($this->Lang("instantiate"));
-            return false;
-        }
+    if (isset($old_from)) {
+      ini_set('sendmail_from', $old_from);
+    }
 
-        return true;
+    if(!$rt) {
+      $this->SetError($this->Lang('instantiate'));
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Sends mail via SMTP using PhpSMTP (Author:
+   * Chris Ryan).  Returns bool.  Returns false if there is a
+   * bad MAIL FROM, RCPT, or DATA input.
+   * @access private
+   * @return bool
+   */
+  function SmtpSend($header, $body) {
+    include_once($this->PluginDir . 'smtp.php');
+    $error = '';
+    $bad_rcpt = array();
+
+    if(!$this->SmtpConnect()) {
+      return false;
+    }
+
+    $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
+    if(!$this->smtp->Mail($smtp_from)) {
+      $error = $this->Lang('from_failed') . $smtp_from;
+      $this->SetError($error);
+      $this->smtp->Reset();
+      return false;
+    }
+
+    /* Attempt to send attach all recipients */
+    for($i = 0; $i < count($this->to); $i++) {
+      if(!$this->smtp->Recipient($this->to[$i][0])) {
+        $bad_rcpt[] = $this->to[$i][0];
+      }
+    }
+    for($i = 0; $i < count($this->cc); $i++) {
+      if(!$this->smtp->Recipient($this->cc[$i][0])) {
+        $bad_rcpt[] = $this->cc[$i][0];
+      }
+    }
+    for($i = 0; $i < count($this->bcc); $i++) {
+      if(!$this->smtp->Recipient($this->bcc[$i][0])) {
+        $bad_rcpt[] = $this->bcc[$i][0];
+      }
     }
 
-    /**
-     * Sends mail via SMTP using PhpSMTP (Author:
-     * Chris Ryan).  Returns bool.  Returns false if there is a
-     * bad MAIL FROM, RCPT, or DATA input.
-     * @access private
-     * @return bool
-     */
-    function SmtpSend($header, $body) {
-        include_once($this->PluginDir . "smtp.php");
-        $error = "";
-        $bad_rcpt = array();
-
-        if(!$this->SmtpConnect())
-            return false;
-
-        $smtp_from = ($this->Sender == "") ? $this->From : $this->Sender;
-        if(!$this->smtp->Mail($smtp_from))
-        {
-            $error = $this->Lang("from_failed") . $smtp_from;
-            $this->SetError($error);
-            $this->smtp->Reset();
-            return false;
+    if(count($bad_rcpt) > 0) { // Create error message
+      for($i = 0; $i < count($bad_rcpt); $i++) {
+        if($i != 0) {
+          $error .= ', ';
         }
+        $error .= $bad_rcpt[$i];
+      }
+      $error = $this->Lang('recipients_failed') . $error;
+      $this->SetError($error);
+      $this->smtp->Reset();
+      return false;
+    }
+
+    if(!$this->smtp->Data($header . $body)) {
+      $this->SetError($this->Lang('data_not_accepted'));
+      $this->smtp->Reset();
+      return false;
+    }
+    if($this->SMTPKeepAlive == true) {
+      $this->smtp->Reset();
+    } else {
+      $this->SmtpClose();
+    }
+
+    return true;
+  }
+
+  /**
+   * Initiates a connection to an SMTP server.  Returns false if the
+   * operation failed.
+   * @access private
+   * @return bool
+   */
+  function SmtpConnect() {
+    if($this->smtp == NULL) {
+      $this->smtp = new SMTP();
+    }
+
+    $this->smtp->do_debug = $this->SMTPDebug;
+    $hosts = explode(';', $this->Host);
+    $index = 0;
+    $connection = ($this->smtp->Connected());
+
+    /* Retry while there is no connection */
+    while($index < count($hosts) && $connection == false) {
+      $hostinfo = array();
+      if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {
+        $host = $hostinfo[1];
+        $port = $hostinfo[2];
+      } else {
+        $host = $hosts[$index];
+        $port = $this->Port;
+      }
 
-        // Attempt to send attach all recipients
-        for($i = 0; $i < count($this->to); $i++)
-        {
-            if(!$this->smtp->Recipient($this->to[$i][0]))
-                $bad_rcpt[] = $this->to[$i][0];
-        }
-        for($i = 0; $i < count($this->cc); $i++)
-        {
-            if(!$this->smtp->Recipient($this->cc[$i][0]))
-                $bad_rcpt[] = $this->cc[$i][0];
-        }
-        for($i = 0; $i < count($this->bcc); $i++)
-        {
-            if(!$this->smtp->Recipient($this->bcc[$i][0]))
-                $bad_rcpt[] = $this->bcc[$i][0];
+      if($this->smtp->Connect(((!empty($this->SMTPSecure))?$this->SMTPSecure.'://':'').$host, $port, $this->Timeout)) {
+        if ($this->Helo != '') {
+          $this->smtp->Hello($this->Helo);
+        } else {
+          $this->smtp->Hello($this->ServerHostname());
         }
 
-        if(count($bad_rcpt) > 0) // Create error message
-        {
-            for($i = 0; $i < count($bad_rcpt); $i++)
-            {
-                if($i != 0) { $error .= ", "; }
-                $error .= $bad_rcpt[$i];
-            }
-            $error = $this->Lang("recipients_failed") . $error;
-            $this->SetError($error);
+        $connection = true;
+        if($this->SMTPAuth) {
+          if(!$this->smtp->Authenticate($this->Username, $this->Password)) {
+            $this->SetError($this->Lang('authenticate'));
             $this->smtp->Reset();
-            return false;
-        }
-
-        if(!$this->smtp->Data($header . $body))
-        {
-            $this->SetError($this->Lang("data_not_accepted"));
-            $this->smtp->Reset();
-            return false;
-        }
-        if($this->SMTPKeepAlive == true)
-            $this->smtp->Reset();
-        else
-            $this->SmtpClose();
-
-        return true;
-    }
-
-    /**
-     * Initiates a connection to an SMTP server.  Returns false if the
-     * operation failed.
-     * @access private
-     * @return bool
-     */
-    function SmtpConnect() {
-        if($this->smtp == NULL) { $this->smtp = new SMTP(); }
-
-        $this->smtp->do_debug = $this->SMTPDebug;
-        $hosts = explode(";", $this->Host);
-        $index = 0;
-        $connection = ($this->smtp->Connected());
-
-        // Retry while there is no connection
-        while($index < count($hosts) && $connection == false)
-        {
-            if(strstr($hosts[$index], ":"))
-                list($host, $port) = explode(":", $hosts[$index]);
-            else
-            {
-                $host = $hosts[$index];
-                $port = $this->Port;
-            }
-
-            if($this->smtp->Connect($host, $port, $this->Timeout))
-            {
-                if ($this->Helo != '')
-                    $this->smtp->Hello($this->Helo);
-                else
-                    $this->smtp->Hello($this->ServerHostname());
-
-                if($this->SMTPAuth)
-                {
-                    if(!$this->smtp->Authenticate($this->Username,
-                                                  $this->Password))
-                    {
-                        $this->SetError($this->Lang("authenticate"));
-                        $this->smtp->Reset();
-                        $connection = false;
-                    }
-                }
-                $connection = true;
-            }
-            $index++;
+            $connection = false;
+          }
         }
-        if(!$connection)
-            $this->SetError($this->Lang("connect_host"));
-
-        return $connection;
+      }
+      $index++;
     }
-
-    /**
-     * Closes the active SMTP session if one exists.
-     * @return void
-     */
-    function SmtpClose() {
-        if($this->smtp != NULL)
-        {
-            if($this->smtp->Connected())
-            {
-                $this->smtp->Quit();
-                $this->smtp->Close();
-            }
-        }
+    if(!$connection) {
+      $this->SetError($this->Lang('connect_host'));
     }
 
-    /**
-     * Sets the language for all class error messages.  Returns false
-     * if it cannot load the language file.  The default language type
-     * is English.
-     * @param string $lang_type Type of language (e.g. Portuguese: "br")
-     * @param string $lang_path Path to the language file directory
-     * @access public
-     * @return bool
-     */
-    function SetLanguage($lang_type, $lang_path = "language/") {
-        if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php'))
-            include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
-        else if(file_exists($lang_path.'phpmailer.lang-en.php'))
-            include($lang_path.'phpmailer.lang-en.php');
-        else
-        {
-            $this->SetError("Could not load language file");
-            return false;
-        }
-        $this->language = $PHPMAILER_LANG;
+    return $connection;
+  }
 
-        return true;
+  /**
+   * Closes the active SMTP session if one exists.
+   * @return void
+   */
+  function SmtpClose() {
+    if($this->smtp != NULL) {
+      if($this->smtp->Connected()) {
+        $this->smtp->Quit();
+        $this->smtp->Close();
+      }
     }
+  }
 
-    /////////////////////////////////////////////////
-    // MESSAGE CREATION METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Creates recipient headers.
-     * @access private
-     * @return string
-     */
-    function AddrAppend($type, $addr) {
-        $addr_str = $type . ": ";
-        $addr_str .= $this->AddrFormat($addr[0]);
-        if(count($addr) > 1)
-        {
-            for($i = 1; $i < count($addr); $i++)
-                $addr_str .= ", " . $this->AddrFormat($addr[$i]);
-        }
-        $addr_str .= $this->LE;
-
-        return $addr_str;
+  /**
+   * Sets the language for all class error messages.  Returns false
+   * if it cannot load the language file.  The default language type
+   * is English.
+   * @param string $lang_type Type of language (e.g. Portuguese: "br")
+   * @param string $lang_path Path to the language file directory
+   * @access public
+   * @return bool
+   */
+  function SetLanguage($lang_type, $lang_path = 'language/') {
+    if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) {
+      include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
+    } elseif (file_exists($lang_path.'phpmailer.lang-en.php')) {
+      include($lang_path.'phpmailer.lang-en.php');
+    } else {
+      $PHPMAILER_LANG = array();
+      $PHPMAILER_LANG["provide_address"]      = 'You must provide at least one ' .
+      $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
+      $PHPMAILER_LANG["execute"]              = 'Could not execute: ';
+      $PHPMAILER_LANG["instantiate"]          = 'Could not instantiate mail function.';
+      $PHPMAILER_LANG["authenticate"]         = 'SMTP Error: Could not authenticate.';
+      $PHPMAILER_LANG["from_failed"]          = 'The following From address failed: ';
+      $PHPMAILER_LANG["recipients_failed"]    = 'SMTP Error: The following ' .
+      $PHPMAILER_LANG["data_not_accepted"]    = 'SMTP Error: Data not accepted.';
+      $PHPMAILER_LANG["connect_host"]         = 'SMTP Error: Could not connect to SMTP host.';
+      $PHPMAILER_LANG["file_access"]          = 'Could not access file: ';
+      $PHPMAILER_LANG["file_open"]            = 'File Error: Could not open file: ';
+      $PHPMAILER_LANG["encoding"]             = 'Unknown encoding: ';
+      $PHPMAILER_LANG["signing"]              = 'Signing Error: ';
+    }
+    $this->language = $PHPMAILER_LANG;
+
+    return true;
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, MESSAGE CREATION
+  /////////////////////////////////////////////////
+
+  /**
+   * Creates recipient headers.
+   * @access private
+   * @return string
+   */
+  function AddrAppend($type, $addr) {
+    $addr_str = $type . ': ';
+    $addr_str .= $this->AddrFormat($addr[0]);
+    if(count($addr) > 1) {
+      for($i = 1; $i < count($addr); $i++) {
+        $addr_str .= ', ' . $this->AddrFormat($addr[$i]);
+      }
     }
+    $addr_str .= $this->LE;
 
-    /**
-     * Formats an address correctly.
-     * @access private
-     * @return string
-     */
-    function AddrFormat($addr) {
-        if(empty($addr[1]))
-            $formatted = $addr[0];
-        else
-        {
-            $formatted = $this->EncodeHeader($addr[1], 'phrase') . " <" .
-                         $addr[0] . ">";
-        }
-
-        return $formatted;
-    }
+    return $addr_str;
+  }
 
-    /**
-     * Wraps message for use with mailers that do not
-     * automatically perform wrapping and for quoted-printable.
-     * Original written by philippe.
-     * @access private
-     * @return string
-     */
-    function WrapText($message, $length, $qp_mode = false) {
-        $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
-
-        $message = $this->FixEOL($message);
-        if (substr($message, -1) == $this->LE)
-            $message = substr($message, 0, -1);
-
-        $line = explode($this->LE, $message);
-        $message = "";
-        for ($i=0 ;$i < count($line); $i++)
-        {
-          $line_part = explode(" ", $line[$i]);
-          $buf = "";
-          for ($e = 0; $e<count($line_part); $e++)
-          {
-              $word = $line_part[$e];
-              if ($qp_mode and (strlen($word) > $length))
-              {
-                $space_left = $length - strlen($buf) - 1;
-                if ($e != 0)
-                {
-                    if ($space_left > 20)
-                    {
-                        $len = $space_left;
-                        if (substr($word, $len - 1, 1) == "=")
-                          $len--;
-                        elseif (substr($word, $len - 2, 1) == "=")
-                          $len -= 2;
-                        $part = substr($word, 0, $len);
-                        $word = substr($word, $len);
-                        $buf .= " " . $part;
-                        $message .= $buf . sprintf("=%s", $this->LE);
-                    }
-                    else
-                    {
-                        $message .= $buf . $soft_break;
-                    }
-                    $buf = "";
-                }
-                while (strlen($word) > 0)
-                {
-                    $len = $length;
-                    if (substr($word, $len - 1, 1) == "=")
-                        $len--;
-                    elseif (substr($word, $len - 2, 1) == "=")
-                        $len -= 2;
-                    $part = substr($word, 0, $len);
-                    $word = substr($word, $len);
-
-                    if (strlen($word) > 0)
-                        $message .= $part . sprintf("=%s", $this->LE);
-                    else
-                        $buf = $part;
-                }
-              }
-              else
-              {
-                $buf_o = $buf;
-                $buf .= ($e == 0) ? $word : (" " . $word);
-
-                if (strlen($buf) > $length and $buf_o != "")
-                {
-                    $message .= $buf_o . $soft_break;
-                    $buf = $word;
-                }
+  /**
+   * Formats an address correctly.
+   * @access private
+   * @return string
+   */
+  function AddrFormat($addr) {
+    if(empty($addr[1])) {
+      $formatted = $this->SecureHeader($addr[0]);
+    } else {
+      $formatted = $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">";
+    }
+
+    return $formatted;
+  }
+
+  /**
+   * Wraps message for use with mailers that do not
+   * automatically perform wrapping and for quoted-printable.
+   * Original written by philippe.
+   * @access private
+   * @return string
+   */
+  function WrapText($message, $length, $qp_mode = false) {
+    $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
+    // If utf-8 encoding is used, we will need to make sure we don't
+    // split multibyte characters when we wrap
+    $is_utf8 = (strtolower($this->CharSet) == "utf-8");
+
+    $message = $this->FixEOL($message);
+    if (substr($message, -1) == $this->LE) {
+      $message = substr($message, 0, -1);
+    }
+
+    $line = explode($this->LE, $message);
+    $message = '';
+    for ($i=0 ;$i < count($line); $i++) {
+      $line_part = explode(' ', $line[$i]);
+      $buf = '';
+      for ($e = 0; $e<count($line_part); $e++) {
+        $word = $line_part[$e];
+        if ($qp_mode and (strlen($word) > $length)) {
+          $space_left = $length - strlen($buf) - 1;
+          if ($e != 0) {
+            if ($space_left > 20) {
+              $len = $space_left;
+              if ($is_utf8) {
+                $len = $this->UTF8CharBoundary($word, $len);
+              } elseif (substr($word, $len - 1, 1) == "=") {
+                $len--;
+              } elseif (substr($word, $len - 2, 1) == "=") {
+                $len -= 2;
               }
+              $part = substr($word, 0, $len);
+              $word = substr($word, $len);
+              $buf .= ' ' . $part;
+              $message .= $buf . sprintf("=%s", $this->LE);
+            } else {
+              $message .= $buf . $soft_break;
+            }
+            $buf = '';
           }
-          $message .= $buf . $this->LE;
-        }
-
-        return $message;
-    }
+          while (strlen($word) > 0) {
+            $len = $length;
+            if ($is_utf8) {
+              $len = $this->UTF8CharBoundary($word, $len);
+            } elseif (substr($word, $len - 1, 1) == "=") {
+              $len--;
+            } elseif (substr($word, $len - 2, 1) == "=") {
+              $len -= 2;
+            }
+            $part = substr($word, 0, $len);
+            $word = substr($word, $len);
 
-    /**
-     * Set the body wrapping.
-     * @access private
-     * @return void
-     */
-    function SetWordWrap() {
-        if($this->WordWrap < 1)
-            return;
-
-        switch($this->message_type)
-        {
-           case "alt":
-              // fall through
-           case "alt_attachments":
-              $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
-              break;
-           default:
-              $this->Body = $this->WrapText($this->Body, $this->WordWrap);
-              break;
+            if (strlen($word) > 0) {
+              $message .= $part . sprintf("=%s", $this->LE);
+            } else {
+              $buf = $part;
+            }
+          }
+        } else {
+          $buf_o = $buf;
+          $buf .= ($e == 0) ? $word : (' ' . $word);
+
+          if (strlen($buf) > $length and $buf_o != '') {
+            $message .= $buf_o . $soft_break;
+            $buf = $word;
+          }
         }
+      }
+      $message .= $buf . $this->LE;
     }
 
-    /**
-     * Assembles message header.
-     * @access private
-     * @return string
-     */
-    function CreateHeader() {
-        $result = "";
-
-        // Set the boundaries
-        $uniq_id = md5(uniqid(time()));
-        $this->boundary[1] = "b1_" . $uniq_id;
-        $this->boundary[2] = "b2_" . $uniq_id;
-
-        $result .= $this->HeaderLine("Date", $this->RFCDate());
-        if($this->Sender == "")
-            $result .= $this->HeaderLine("Return-Path", trim($this->From));
-        else
-            $result .= $this->HeaderLine("Return-Path", trim($this->Sender));
-
-        // To be created automatically by mail()
-        if($this->Mailer != "mail")
-        {
-            if(count($this->to) > 0)
-                $result .= $this->AddrAppend("To", $this->to);
-            else if (count($this->cc) == 0)
-                $result .= $this->HeaderLine("To", "undisclosed-recipients:;");
-            if(count($this->cc) > 0)
-                $result .= $this->AddrAppend("Cc", $this->cc);
-        }
-
-        $from = array();
-        $from[0][0] = trim($this->From);
-        $from[0][1] = $this->FromName;
-        $result .= $this->AddrAppend("From", $from);
-
-        // sendmail and mail() extract Bcc from the header before sending
-        if((($this->Mailer == "sendmail") || ($this->Mailer == "mail")) && (count($this->bcc) > 0))
-            $result .= $this->AddrAppend("Bcc", $this->bcc);
-
-        if(count($this->ReplyTo) > 0)
-            $result .= $this->AddrAppend("Reply-to", $this->ReplyTo);
-
-        // mail() sets the subject itself
-        if($this->Mailer != "mail")
-            $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));
-
-        $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
-        $result .= $this->HeaderLine("X-Priority", $this->Priority);
-        $result .= $this->HeaderLine("X-Mailer", "PHPMailer [version " . $this->Version . "]");
-
-        if($this->ConfirmReadingTo != "")
-        {
-            $result .= $this->HeaderLine("Disposition-Notification-To",
-                       "<" . trim($this->ConfirmReadingTo) . ">");
-        }
-
-        // Add custom headers
-        for($index = 0; $index < count($this->CustomHeader); $index++)
-        {
-            $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]),
-                       $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
-        }
-        $result .= $this->HeaderLine("MIME-Version", "1.0");
+    return $message;
+  }
 
-        switch($this->message_type)
-        {
-            case "plain":
-                $result .= $this->HeaderLine("Content-Transfer-Encoding", $this->Encoding);
-                $result .= sprintf("Content-Type: %s; charset=\"%s\"",
-                                    $this->ContentType, $this->CharSet);
-                break;
-            case "attachments":
-                // fall through
-            case "alt_attachments":
-                if($this->InlineImageExists())
-                {
-                    $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s",
-                                    "multipart/related", $this->LE, $this->LE,
-                                    $this->boundary[1], $this->LE);
-                }
-                else
-                {
-                    $result .= $this->HeaderLine("Content-Type", "multipart/mixed;");
-                    $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
-                }
-                break;
-            case "alt":
-                $result .= $this->HeaderLine("Content-Type", "multipart/alternative;");
-                $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
-                break;
+  /**
+   * Finds last character boundary prior to maxLength in a utf-8
+   * quoted (printable) encoded string.
+   * Original written by Colin Brown.
+   * @access private
+   * @param string $encodedText utf-8 QP text
+   * @param int    $maxLength   find last character boundary prior to this length
+   * @return int
+   */
+  function UTF8CharBoundary($encodedText, $maxLength) {
+    $foundSplitPos = false;
+    $lookBack = 3;
+    while (!$foundSplitPos) {
+      $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
+      $encodedCharPos = strpos($lastChunk, "=");
+      if ($encodedCharPos !== false) {
+        // Found start of encoded character byte within $lookBack block.
+        // Check the encoded byte value (the 2 chars after the '=')
+        $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
+        $dec = hexdec($hex);
+        if ($dec < 128) { // Single byte character.
+          // If the encoded char was found at pos 0, it will fit
+          // otherwise reduce maxLength to start of the encoded char
+          $maxLength = ($encodedCharPos == 0) ? $maxLength :
+          $maxLength - ($lookBack - $encodedCharPos);
+          $foundSplitPos = true;
+        } elseif ($dec >= 192) { // First byte of a multi byte character
+          // Reduce maxLength to split at start of character
+          $maxLength = $maxLength - ($lookBack - $encodedCharPos);
+          $foundSplitPos = true;
+        } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back
+          $lookBack += 3;
         }
-
-        if($this->Mailer != "mail")
-            $result .= $this->LE.$this->LE;
-
-        return $result;
+      } else {
+        // No encoded character found
+        $foundSplitPos = true;
+      }
     }
+    return $maxLength;
+  }
 
-    /**
-     * Assembles the message body.  Returns an empty string on failure.
-     * @access private
-     * @return string
-     */
-    function CreateBody() {
-        $result = "";
-
-        $this->SetWordWrap();
-
-        switch($this->message_type)
-        {
-            case "alt":
-                $result .= $this->GetBoundary($this->boundary[1], "",
-                                              "text/plain", "");
-                $result .= $this->EncodeString($this->AltBody, $this->Encoding);
-                $result .= $this->LE.$this->LE;
-                $result .= $this->GetBoundary($this->boundary[1], "",
-                                              "text/html", "");
-
-                $result .= $this->EncodeString($this->Body, $this->Encoding);
-                $result .= $this->LE.$this->LE;
-
-                $result .= $this->EndBoundary($this->boundary[1]);
-                break;
-            case "plain":
-                $result .= $this->EncodeString($this->Body, $this->Encoding);
-                break;
-            case "attachments":
-                $result .= $this->GetBoundary($this->boundary[1], "", "", "");
-                $result .= $this->EncodeString($this->Body, $this->Encoding);
-                $result .= $this->LE;
-
-                $result .= $this->AttachAll();
-                break;
-            case "alt_attachments":
-                $result .= sprintf("--%s%s", $this->boundary[1], $this->LE);
-                $result .= sprintf("Content-Type: %s;%s" .
-                                   "\tboundary=\"%s\"%s",
-                                   "multipart/alternative", $this->LE,
-                                   $this->boundary[2], $this->LE.$this->LE);
-
-                // Create text body
-                $result .= $this->GetBoundary($this->boundary[2], "",
-                                              "text/plain", "") . $this->LE;
-
-                $result .= $this->EncodeString($this->AltBody, $this->Encoding);
-                $result .= $this->LE.$this->LE;
-
-                // Create the HTML body
-                $result .= $this->GetBoundary($this->boundary[2], "",
-                                              "text/html", "") . $this->LE;
-
-                $result .= $this->EncodeString($this->Body, $this->Encoding);
-                $result .= $this->LE.$this->LE;
-
-                $result .= $this->EndBoundary($this->boundary[2]);
-
-                $result .= $this->AttachAll();
-                break;
-        }
-        if($this->IsError())
-            $result = "";
-
-        return $result;
+  /**
+   * Set the body wrapping.
+   * @access private
+   * @return void
+   */
+  function SetWordWrap() {
+    if($this->WordWrap < 1) {
+      return;
+    }
+
+    switch($this->message_type) {
+      case 'alt':
+        /* fall through */
+      case 'alt_attachments':
+        $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
+        break;
+      default:
+        $this->Body = $this->WrapText($this->Body, $this->WordWrap);
+        break;
+    }
+  }
+
+  /**
+   * Assembles message header.
+   * @access private
+   * @return string
+   */
+  function CreateHeader() {
+    $result = '';
+
+    /* Set the boundaries */
+    $uniq_id = md5(uniqid(time()));
+    $this->boundary[1] = 'b1_' . $uniq_id;
+    $this->boundary[2] = 'b2_' . $uniq_id;
+
+    $result .= $this->HeaderLine('Date', $this->RFCDate());
+    if($this->Sender == '') {
+      $result .= $this->HeaderLine('Return-Path', trim($this->From));
+    } else {
+      $result .= $this->HeaderLine('Return-Path', trim($this->Sender));
+    }
+
+    /* To be created automatically by mail() */
+    if($this->Mailer != 'mail') {
+      if(count($this->to) > 0) {
+        $result .= $this->AddrAppend('To', $this->to);
+      } elseif (count($this->cc) == 0) {
+        $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
+      }
     }
 
-    /**
-     * Returns the start of a message boundary.
-     * @access private
-     */
-    function GetBoundary($boundary, $charSet, $contentType, $encoding) {
-        $result = "";
-        if($charSet == "") { $charSet = $this->CharSet; }
-        if($contentType == "") { $contentType = $this->ContentType; }
-        if($encoding == "") { $encoding = $this->Encoding; }
-
-        $result .= $this->TextLine("--" . $boundary);
-        $result .= sprintf("Content-Type: %s; charset = \"%s\"",
-                            $contentType, $charSet);
-        $result .= $this->LE;
-        $result .= $this->HeaderLine("Content-Transfer-Encoding", $encoding);
+    $from = array();
+    $from[0][0] = trim($this->From);
+    $from[0][1] = $this->FromName;
+    $result .= $this->AddrAppend('From', $from);
+
+    /* sendmail and mail() extract Cc from the header before sending */
+    if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->cc) > 0)) {
+      $result .= $this->AddrAppend('Cc', $this->cc);
+    }
+
+    /* sendmail and mail() extract Bcc from the header before sending */
+    if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
+      $result .= $this->AddrAppend('Bcc', $this->bcc);
+    }
+
+    if(count($this->ReplyTo) > 0) {
+      $result .= $this->AddrAppend('Reply-To', $this->ReplyTo);
+    }
+
+    /* mail() sets the subject itself */
+    if($this->Mailer != 'mail') {
+      $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject)));
+    }
+
+    if($this->MessageID != '') {
+      $result .= $this->HeaderLine('Message-ID',$this->MessageID);
+    } else {
+      $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
+    }
+    $result .= $this->HeaderLine('X-Priority', $this->Priority);
+    $result .= $this->HeaderLine('X-Mailer', 'PHPMailer (phpmailer.sourceforge.net) [version ' . $this->Version . ']');
+
+    if($this->ConfirmReadingTo != '') {
+      $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
+    }
+
+    // Add custom headers
+    for($index = 0; $index < count($this->CustomHeader); $index++) {
+      $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
+    }
+    if (!$this->sign_key_file) {
+      $result .= $this->HeaderLine('MIME-Version', '1.0');
+      $result .= $this->GetMailMIME();
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns the message MIME.
+   * @access private
+   * @return string
+   */
+  function GetMailMIME() {
+    $result = '';
+    switch($this->message_type) {
+      case 'plain':
+        $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
+        $result .= sprintf("Content-Type: %s; charset=\"%s\"", $this->ContentType, $this->CharSet);
+        break;
+      case 'attachments':
+        /* fall through */
+      case 'alt_attachments':
+        if($this->InlineImageExists()){
+          $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 'multipart/related', $this->LE, $this->LE, $this->boundary[1], $this->LE);
+        } else {
+          $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
+          $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        }
+        break;
+      case 'alt':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        break;
+    }
+
+    if($this->Mailer != 'mail') {
+      $result .= $this->LE.$this->LE;
+    }
+
+    return $result;
+  }
+
+  /**
+   * Assembles the message body.  Returns an empty string on failure.
+   * @access private
+   * @return string
+   */
+  function CreateBody() {
+    $result = '';
+    if ($this->sign_key_file) {
+      $result .= $this->GetMailMIME();
+    }
+
+    $this->SetWordWrap();
+
+    switch($this->message_type) {
+      case 'alt':
+        $result .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
+        $result .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->GetBoundary($this->boundary[1], '', 'text/html', '');
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->EndBoundary($this->boundary[1]);
+        break;
+      case 'plain':
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        break;
+      case 'attachments':
+        $result .= $this->GetBoundary($this->boundary[1], '', '', '');
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
         $result .= $this->LE;
+        $result .= $this->AttachAll();
+        break;
+      case 'alt_attachments':
+        $result .= sprintf("--%s%s", $this->boundary[1], $this->LE);
+        $result .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", 'multipart/alternative', $this->LE, $this->boundary[2], $this->LE.$this->LE);
+        $result .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '') . $this->LE; // Create text body
+        $result .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->GetBoundary($this->boundary[2], '', 'text/html', '') . $this->LE; // Create the HTML body
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->EndBoundary($this->boundary[2]);
+        $result .= $this->AttachAll();
+        break;
+    }
+
+    if($this->IsError()) {
+      $result = '';
+    } else if ($this->sign_key_file) {
+      $file = tempnam("", "mail");
+      $fp = fopen($file, "w");
+      fwrite($fp, $result);
+      fclose($fp);
+      $signed = tempnam("", "signed");
+
+      if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
+        $fp = fopen($signed, "r");
+        $result = fread($fp, filesize($this->sign_key_file));
+        $result = '';
+        while(!feof($fp)){
+          $result = $result . fread($fp, 1024);
+        }
+        fclose($fp);
+      } else {
+        $this->SetError($this->Lang("signing").openssl_error_string());
+        $result = '';
+      }
 
-        return $result;
+      unlink($file);
+      unlink($signed);
     }
 
-    /**
-     * Returns the end of a message boundary.
-     * @access private
-     */
-    function EndBoundary($boundary) {
-        return $this->LE . "--" . $boundary . "--" . $this->LE;
-    }
-
-    /**
-     * Sets the message type.
-     * @access private
-     * @return void
-     */
-    function SetMessageType() {
-        if(count($this->attachment) < 1 && strlen($this->AltBody) < 1)
-            $this->message_type = "plain";
-        else
-        {
-            if(count($this->attachment) > 0)
-                $this->message_type = "attachments";
-            if(strlen($this->AltBody) > 0 && count($this->attachment) < 1)
-                $this->message_type = "alt";
-            if(strlen($this->AltBody) > 0 && count($this->attachment) > 0)
-                $this->message_type = "alt_attachments";
-        }
+    return $result;
+  }
+
+  /**
+   * Returns the start of a message boundary.
+   * @access private
+   */
+  function GetBoundary($boundary, $charSet, $contentType, $encoding) {
+    $result = '';
+    if($charSet == '') {
+      $charSet = $this->CharSet;
+    }
+    if($contentType == '') {
+      $contentType = $this->ContentType;
+    }
+    if($encoding == '') {
+      $encoding = $this->Encoding;
+    }
+    $result .= $this->TextLine('--' . $boundary);
+    $result .= sprintf("Content-Type: %s; charset = \"%s\"", $contentType, $charSet);
+    $result .= $this->LE;
+    $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
+    $result .= $this->LE;
+
+    return $result;
+  }
+
+  /**
+   * Returns the end of a message boundary.
+   * @access private
+   */
+  function EndBoundary($boundary) {
+    return $this->LE . '--' . $boundary . '--' . $this->LE;
+  }
+
+  /**
+   * Sets the message type.
+   * @access private
+   * @return void
+   */
+  function SetMessageType() {
+    if(count($this->attachment) < 1 && strlen($this->AltBody) < 1) {
+      $this->message_type = 'plain';
+    } else {
+      if(count($this->attachment) > 0) {
+        $this->message_type = 'attachments';
+      }
+      if(strlen($this->AltBody) > 0 && count($this->attachment) < 1) {
+        $this->message_type = 'alt';
+      }
+      if(strlen($this->AltBody) > 0 && count($this->attachment) > 0) {
+        $this->message_type = 'alt_attachments';
+      }
     }
+  }
 
-    /**
-     * Returns a formatted header line.
-     * @access private
-     * @return string
-     */
-    function HeaderLine($name, $value) {
-        return $name . ": " . $value . $this->LE;
-    }
-
-    /**
-     * Returns a formatted mail line.
-     * @access private
-     * @return string
-     */
-    function TextLine($value) {
-        return $value . $this->LE;
-    }
-
-    /////////////////////////////////////////////////
-    // ATTACHMENT METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Adds an attachment from a path on the filesystem.
-     * Returns false if the file could not be found
-     * or accessed.
-     * @param string $path Path to the attachment.
-     * @param string $name Overrides the attachment name.
-     * @param string $encoding File encoding (see $Encoding).
-     * @param string $type File extension (MIME) type.
-     * @return bool
-     */
-    function AddAttachment($path, $name = "", $encoding = "base64",
-                           $type = "application/octet-stream") {
-        if(!@is_file($path))
-        {
-            $this->SetError($this->Lang("file_access") . $path);
-            return false;
-        }
+  /* Returns a formatted header line.
+   * @access private
+   * @return string
+   */
+  function HeaderLine($name, $value) {
+    return $name . ': ' . $value . $this->LE;
+  }
+
+  /**
+   * Returns a formatted mail line.
+   * @access private
+   * @return string
+   */
+  function TextLine($value) {
+    return $value . $this->LE;
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, ATTACHMENTS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds an attachment from a path on the filesystem.
+   * Returns false if the file could not be found
+   * or accessed.
+   * @param string $path Path to the attachment.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
+    if(!@is_file($path)) {
+      $this->SetError($this->Lang('file_access') . $path);
+      return false;
+    }
+
+    $filename = basename($path);
+    if($name == '') {
+      $name = $filename;
+    }
+
+    $cur = count($this->attachment);
+    $this->attachment[$cur][0] = $path;
+    $this->attachment[$cur][1] = $filename;
+    $this->attachment[$cur][2] = $name;
+    $this->attachment[$cur][3] = $encoding;
+    $this->attachment[$cur][4] = $type;
+    $this->attachment[$cur][5] = false; // isStringAttachment
+    $this->attachment[$cur][6] = 'attachment';
+    $this->attachment[$cur][7] = 0;
+
+    return true;
+  }
+
+  /**
+   * Attaches all fs, string, and binary attachments to the message.
+   * Returns an empty string on failure.
+   * @access private
+   * @return string
+   */
+  function AttachAll() {
+    /* Return text of body */
+    $mime = array();
+
+    /* Add all attachments */
+    for($i = 0; $i < count($this->attachment); $i++) {
+      /* Check for string attachment */
+      $bString = $this->attachment[$i][5];
+      if ($bString) {
+        $string = $this->attachment[$i][0];
+      } else {
+        $path = $this->attachment[$i][0];
+      }
 
-        $filename = basename($path);
-        if($name == "")
-            $name = $filename;
-
-        $cur = count($this->attachment);
-        $this->attachment[$cur][0] = $path;
-        $this->attachment[$cur][1] = $filename;
-        $this->attachment[$cur][2] = $name;
-        $this->attachment[$cur][3] = $encoding;
-        $this->attachment[$cur][4] = $type;
-        $this->attachment[$cur][5] = false; // isStringAttachment
-        $this->attachment[$cur][6] = "attachment";
-        $this->attachment[$cur][7] = 0;
-
-        return true;
-    }
-
-    /**
-     * Attaches all fs, string, and binary attachments to the message.
-     * Returns an empty string on failure.
-     * @access private
-     * @return string
-     */
-    function AttachAll() {
-        // Return text of body
-        $mime = array();
-
-        // Add all attachments
-        for($i = 0; $i < count($this->attachment); $i++)
-        {
-            // Check for string attachment
-            $bString = $this->attachment[$i][5];
-            if ($bString)
-                $string = $this->attachment[$i][0];
-            else
-                $path = $this->attachment[$i][0];
-
-            $filename    = $this->attachment[$i][1];
-            $name        = $this->attachment[$i][2];
-            $encoding    = $this->attachment[$i][3];
-            $type        = $this->attachment[$i][4];
-            $disposition = $this->attachment[$i][6];
-            $cid         = $this->attachment[$i][7];
-
-            $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
-            $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE);
-            $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
-
-            if($disposition == "inline")
-                $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
-
-            $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s",
-                              $disposition, $name, $this->LE.$this->LE);
-
-            // Encode as string attachment
-            if($bString)
-            {
-                $mime[] = $this->EncodeString($string, $encoding);
-                if($this->IsError()) { return ""; }
-                $mime[] = $this->LE.$this->LE;
-            }
-            else
-            {
-                $mime[] = $this->EncodeFile($path, $encoding);
-                if($this->IsError()) { return ""; }
-                $mime[] = $this->LE.$this->LE;
-            }
-        }
+      $filename    = $this->attachment[$i][1];
+      $name        = $this->attachment[$i][2];
+      $encoding    = $this->attachment[$i][3];
+      $type        = $this->attachment[$i][4];
+      $disposition = $this->attachment[$i][6];
+      $cid         = $this->attachment[$i][7];
+
+      $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
+      $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
+      $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
 
-        $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);
+      if($disposition == 'inline') {
+        $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
+      }
 
-        return join("", $mime);
-    }
+      $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
 
-    /**
-     * Encodes attachment in requested format.  Returns an
-     * empty string on failure.
-     * @access private
-     * @return string
-     */
-    function EncodeFile ($path, $encoding = "base64") {
-        if(!@$fd = fopen($path, "rb"))
-        {
-            $this->SetError($this->Lang("file_open") . $path);
-            return "";
+      /* Encode as string attachment */
+      if($bString) {
+        $mime[] = $this->EncodeString($string, $encoding);
+        if($this->IsError()) {
+          return '';
         }
-        $magic_quotes = get_magic_quotes_runtime();
-        set_magic_quotes_runtime(0);
-        $file_buffer = fread($fd, filesize($path));
-        $file_buffer = $this->EncodeString($file_buffer, $encoding);
-        fclose($fd);
-        set_magic_quotes_runtime($magic_quotes);
-
-        return $file_buffer;
-    }
-
-    /**
-     * Encodes string to requested format. Returns an
-     * empty string on failure.
-     * @access private
-     * @return string
-     */
-    function EncodeString ($str, $encoding = "base64") {
-        $encoded = "";
-        switch(strtolower($encoding)) {
-          case "base64":
-              // chunk_split is found in PHP >= 3.0.6
-              $encoded = chunk_split(base64_encode($str), 76, $this->LE);
-              break;
-          case "7bit":
-          case "8bit":
-              $encoded = $this->FixEOL($str);
-              if (substr($encoded, -(strlen($this->LE))) != $this->LE)
-                $encoded .= $this->LE;
-              break;
-          case "binary":
-              $encoded = $str;
-              break;
-          case "quoted-printable":
-              $encoded = $this->EncodeQP($str);
-              break;
-          default:
-              $this->SetError($this->Lang("encoding") . $encoding);
-              break;
+        $mime[] = $this->LE.$this->LE;
+      } else {
+        $mime[] = $this->EncodeFile($path, $encoding);
+        if($this->IsError()) {
+          return '';
         }
-        return $encoded;
+        $mime[] = $this->LE.$this->LE;
+      }
     }
 
-    /**
-     * Encode a header string to best of Q, B, quoted or none.
-     * @access private
-     * @return string
-     */
-    function EncodeHeader ($str, $position = 'text') {
-      $x = 0;
-
-      switch (strtolower($position)) {
-        case 'phrase':
-          if (!preg_match('/[\200-\377]/', $str)) {
-            // Can't use addslashes as we don't know what value has magic_quotes_sybase.
-            $encoded = addcslashes($str, "\0..\37\177\\\"");
-
-            if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str))
-              return ($encoded);
-            else
-              return ("\"$encoded\"");
+    $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);
+
+    return join('', $mime);
+  }
+
+  /**
+   * Encodes attachment in requested format.  Returns an
+   * empty string on failure.
+   * @access private
+   * @return string
+   */
+  function EncodeFile ($path, $encoding = 'base64') {
+    if(!@$fd = fopen($path, 'rb')) {
+      $this->SetError($this->Lang('file_open') . $path);
+      return '';
+    }
+    $magic_quotes = get_magic_quotes_runtime();
+    set_magic_quotes_runtime(0);
+    $file_buffer = fread($fd, filesize($path));
+    $file_buffer = $this->EncodeString($file_buffer, $encoding);
+    fclose($fd);
+    set_magic_quotes_runtime($magic_quotes);
+
+    return $file_buffer;
+  }
+
+  /**
+   * Encodes string to requested format. Returns an
+   * empty string on failure.
+   * @access private
+   * @return string
+   */
+  function EncodeString ($str, $encoding = 'base64') {
+    $encoded = '';
+    switch(strtolower($encoding)) {
+      case 'base64':
+        /* chunk_split is found in PHP >= 3.0.6 */
+        $encoded = chunk_split(base64_encode($str), 76, $this->LE);
+        break;
+      case '7bit':
+      case '8bit':
+        $encoded = $this->FixEOL($str);
+        if (substr($encoded, -(strlen($this->LE))) != $this->LE)
+          $encoded .= $this->LE;
+        break;
+      case 'binary':
+        $encoded = $str;
+        break;
+      case 'quoted-printable':
+        $encoded = $this->EncodeQP($str);
+        break;
+      default:
+        $this->SetError($this->Lang('encoding') . $encoding);
+        break;
+    }
+    return $encoded;
+  }
+
+  /**
+   * Encode a header string to best of Q, B, quoted or none.
+   * @access private
+   * @return string
+   */
+  function EncodeHeader ($str, $position = 'text') {
+    $x = 0;
+
+    switch (strtolower($position)) {
+      case 'phrase':
+        if (!preg_match('/[\200-\377]/', $str)) {
+          /* Can't use addslashes as we don't know what value has magic_quotes_sybase. */
+          $encoded = addcslashes($str, "\0..\37\177\\\"");
+          if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
+            return ($encoded);
+          } else {
+            return ("\"$encoded\"");
           }
-          $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
-          break;
-        case 'comment':
-          $x = preg_match_all('/[()"]/', $str, $matches);
-          // Fall-through
-        case 'text':
-        default:
-          $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
-          break;
-      }
-
-      if ($x == 0)
-        return ($str);
-
-      $maxlen = 75 - 7 - strlen($this->CharSet);
-      // Try to select the encoding which should produce the shortest output
-      if (strlen($str)/3 < $x) {
-        $encoding = 'B';
+        }
+        $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
+        break;
+      case 'comment':
+        $x = preg_match_all('/[()"]/', $str, $matches);
+        /* Fall-through */
+      case 'text':
+      default:
+        $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
+        break;
+    }
+
+    if ($x == 0) {
+      return ($str);
+    }
+
+    $maxlen = 75 - 7 - strlen($this->CharSet);
+    /* Try to select the encoding which should produce the shortest output */
+    if (strlen($str)/3 < $x) {
+      $encoding = 'B';
+      if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
+     // Use a custom function which correctly encodes and wraps long
+     // multibyte strings without breaking lines within a character
+        $encoded = $this->Base64EncodeWrapMB($str);
+      } else {
         $encoded = base64_encode($str);
         $maxlen -= $maxlen % 4;
         $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
-      } else {
-        $encoding = 'Q';
-        $encoded = $this->EncodeQ($str, $position);
-        $encoded = $this->WrapText($encoded, $maxlen, true);
-        $encoded = str_replace("=".$this->LE, "\n", trim($encoded));
       }
+    } else {
+      $encoding = 'Q';
+      $encoded = $this->EncodeQ($str, $position);
+      $encoded = $this->WrapText($encoded, $maxlen, true);
+      $encoded = str_replace('='.$this->LE, "\n", trim($encoded));
+    }
+
+    $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
+    $encoded = trim(str_replace("\n", $this->LE, $encoded));
+
+    return $encoded;
+  }
+
+  /**
+   * Checks if a string contains multibyte characters.
+   * @access private
+   * @param string $str multi-byte text to wrap encode
+   * @return bool
+   */
+  function HasMultiBytes($str) {
+    if (function_exists('mb_strlen')) {
+      return (strlen($str) > mb_strlen($str, $this->CharSet));
+    } else { // Assume no multibytes (we can't handle without mbstring functions anyway)
+      return False;
+    }
+  }
+
+  /**
+   * Correctly encodes and wraps long multibyte strings for mail headers
+   * without breaking lines within a character.
+   * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php
+   * @access private
+   * @param string $str multi-byte text to wrap encode
+   * @return string
+   */
+  function Base64EncodeWrapMB($str) {
+    $start = "=?".$this->CharSet."?B?";
+    $end = "?=";
+    $encoded = "";
+
+    $mb_length = mb_strlen($str, $this->CharSet);
+    // Each line must have length <= 75, including $start and $end
+    $length = 75 - strlen($start) - strlen($end);
+    // Average multi-byte ratio
+    $ratio = $mb_length / strlen($str);
+    // Base64 has a 4:3 ratio
+    $offset = $avgLength = floor($length * $ratio * .75);
+
+    for ($i = 0; $i < $mb_length; $i += $offset) {
+      $lookBack = 0;
+
+      do {
+        $offset = $avgLength - $lookBack;
+        $chunk = mb_substr($str, $i, $offset, $this->CharSet);
+        $chunk = base64_encode($chunk);
+        $lookBack++;
+      }
+      while (strlen($chunk) > $length);
 
-      $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
-      $encoded = trim(str_replace("\n", $this->LE, $encoded));
-
-      return $encoded;
+      $encoded .= $chunk . $this->LE;
     }
 
-    /**
-     * Encode string to quoted-printable.
-     * @access private
-     * @return string
-     */
-    function EncodeQP ($str) {
-        $encoded = $this->FixEOL($str);
-        if (substr($encoded, -(strlen($this->LE))) != $this->LE)
-            $encoded .= $this->LE;
-
-        // Replace every high ascii, control and = characters
-        $encoded = preg_replace('/([\000-\010\013\014\016-\037\075\177-\377])/e',
-                  "'='.sprintf('%02X', ord('\\1'))", $encoded);
-        // Replace every spaces and tabs when it's the last character on a line
-        $encoded = preg_replace("/([\011\040])".$this->LE."/e",
-                  "'='.sprintf('%02X', ord('\\1')).'".$this->LE."'", $encoded);
-
-        // Maximum line length of 76 characters before CRLF (74 + space + '=')
-        $encoded = $this->WrapText($encoded, 74, true);
-
-        return $encoded;
-    }
-
-    /**
-     * Encode string to q encoding.
-     * @access private
-     * @return string
-     */
-    function EncodeQ ($str, $position = "text") {
-        // There should not be any EOL in the string
-        $encoded = preg_replace("[\r\n]", "", $str);
-
-        switch (strtolower($position)) {
-          case "phrase":
-            $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
-            break;
-          case "comment":
-            $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
-          case "text":
-          default:
-            // Replace every high ascii, control =, ? and _ characters
-            $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
-                  "'='.sprintf('%02X', ord('\\1'))", $encoded);
-            break;
+    // Chomp the last linefeed
+    $encoded = substr($encoded, 0, -strlen($this->LE));
+    return $encoded;
+  }
+
+  /**
+   * Encode string to quoted-printable.
+   * @access private
+   * @return string
+   */
+  function EncodeQP( $input = '', $line_max = 76, $space_conv = false ) {
+    $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
+    $lines = preg_split('/(?:\r\n|\r|\n)/', $input);
+    $eol = "\r\n";
+    $escape = '=';
+    $output = '';
+    while( list(, $line) = each($lines) ) {
+      $linlen = strlen($line);
+      $newline = '';
+      for($i = 0; $i < $linlen; $i++) {
+        $c = substr( $line, $i, 1 );
+        $dec = ord( $c );
+        if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E
+          $c = '=2E';
+        }
+        if ( $dec == 32 ) {
+          if ( $i == ( $linlen - 1 ) ) { // convert space at eol only
+            $c = '=20';
+          } else if ( $space_conv ) {
+            $c = '=20';
+          }
+        } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
+          $h2 = floor($dec/16);
+          $h1 = floor($dec%16);
+          $c = $escape.$hex[$h2].$hex[$h1];
+        }
+        if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
+          $output .= $newline.$escape.$eol; //  soft line break; " =\r\n" is okay
+          $newline = '';
+          // check if newline first character will be point or not
+          if ( $dec == 46 ) {
+            $c = '=2E';
+          }
         }
-
-        // Replace every spaces to _ (more readable than =20)
-        $encoded = str_replace(" ", "_", $encoded);
-
-        return $encoded;
+        $newline .= $c;
+      } // end of for
+      $output .= $newline.$eol;
+    } // end of while
+    return $output;
+  }
+
+  /**
+   * Encode string to q encoding.
+   * @access private
+   * @return string
+   */
+  function EncodeQ ($str, $position = 'text') {
+    /* There should not be any EOL in the string */
+    $encoded = preg_replace("[\r\n]", '', $str);
+
+    switch (strtolower($position)) {
+      case 'phrase':
+        $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+        break;
+      case 'comment':
+        $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+      case 'text':
+      default:
+        /* Replace every high ascii, control =, ? and _ characters */
+        $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
+              "'='.sprintf('%02X', ord('\\1'))", $encoded);
+        break;
+    }
+
+    /* Replace every spaces to _ (more readable than =20) */
+    $encoded = str_replace(' ', '_', $encoded);
+
+    return $encoded;
+  }
+
+  /**
+   * Adds a string or binary attachment (non-filesystem) to the list.
+   * This method can be used to attach ascii or binary data,
+   * such as a BLOB record from a database.
+   * @param string $string String attachment data.
+   * @param string $filename Name of the attachment.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return void
+   */
+  function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') {
+    /* Append to $attachment array */
+    $cur = count($this->attachment);
+    $this->attachment[$cur][0] = $string;
+    $this->attachment[$cur][1] = $filename;
+    $this->attachment[$cur][2] = $filename;
+    $this->attachment[$cur][3] = $encoding;
+    $this->attachment[$cur][4] = $type;
+    $this->attachment[$cur][5] = true; // isString
+    $this->attachment[$cur][6] = 'attachment';
+    $this->attachment[$cur][7] = 0;
+  }
+
+  /**
+   * Adds an embedded attachment.  This can include images, sounds, and
+   * just about any other document.  Make sure to set the $type to an
+   * image type.  For JPEG images use "image/jpeg" and for GIF images
+   * use "image/gif".
+   * @param string $path Path to the attachment.
+   * @param string $cid Content ID of the attachment.  Use this to identify
+   *        the Id for accessing the image in an HTML form.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
+
+    if(!@is_file($path)) {
+      $this->SetError($this->Lang('file_access') . $path);
+      return false;
+    }
+
+    $filename = basename($path);
+    if($name == '') {
+      $name = $filename;
+    }
+
+    /* Append to $attachment array */
+    $cur = count($this->attachment);
+    $this->attachment[$cur][0] = $path;
+    $this->attachment[$cur][1] = $filename;
+    $this->attachment[$cur][2] = $name;
+    $this->attachment[$cur][3] = $encoding;
+    $this->attachment[$cur][4] = $type;
+    $this->attachment[$cur][5] = false;
+    $this->attachment[$cur][6] = 'inline';
+    $this->attachment[$cur][7] = $cid;
+
+    return true;
+  }
+
+  /**
+   * Returns true if an inline attachment is present.
+   * @access private
+   * @return bool
+   */
+  function InlineImageExists() {
+    $result = false;
+    for($i = 0; $i < count($this->attachment); $i++) {
+      if($this->attachment[$i][6] == 'inline') {
+        $result = true;
+        break;
+      }
     }
 
-    /**
-     * Adds a string or binary attachment (non-filesystem) to the list.
-     * This method can be used to attach ascii or binary data,
-     * such as a BLOB record from a database.
-     * @param string $string String attachment data.
-     * @param string $filename Name of the attachment.
-     * @param string $encoding File encoding (see $Encoding).
-     * @param string $type File extension (MIME) type.
-     * @return void
-     */
-    function AddStringAttachment($string, $filename, $encoding = "base64",
-                                 $type = "application/octet-stream") {
-        // Append to $attachment array
-        $cur = count($this->attachment);
-        $this->attachment[$cur][0] = $string;
-        $this->attachment[$cur][1] = $filename;
-        $this->attachment[$cur][2] = $filename;
-        $this->attachment[$cur][3] = $encoding;
-        $this->attachment[$cur][4] = $type;
-        $this->attachment[$cur][5] = true; // isString
-        $this->attachment[$cur][6] = "attachment";
-        $this->attachment[$cur][7] = 0;
-    }
-
-    /**
-     * Adds an embedded attachment.  This can include images, sounds, and
-     * just about any other document.  Make sure to set the $type to an
-     * image type.  For JPEG images use "image/jpeg" and for GIF images
-     * use "image/gif".
-     * @param string $path Path to the attachment.
-     * @param string $cid Content ID of the attachment.  Use this to identify
-     *        the Id for accessing the image in an HTML form.
-     * @param string $name Overrides the attachment name.
-     * @param string $encoding File encoding (see $Encoding).
-     * @param string $type File extension (MIME) type.
-     * @return bool
-     */
-    function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64",
-                              $type = "application/octet-stream") {
-
-        if(!@is_file($path))
-        {
-            $this->SetError($this->Lang("file_access") . $path);
-            return false;
-        }
-
-        $filename = basename($path);
-        if($name == "")
-            $name = $filename;
-
-        // Append to $attachment array
-        $cur = count($this->attachment);
-        $this->attachment[$cur][0] = $path;
-        $this->attachment[$cur][1] = $filename;
-        $this->attachment[$cur][2] = $name;
-        $this->attachment[$cur][3] = $encoding;
-        $this->attachment[$cur][4] = $type;
-        $this->attachment[$cur][5] = false; // isStringAttachment
-        $this->attachment[$cur][6] = "inline";
-        $this->attachment[$cur][7] = $cid;
-
-        return true;
-    }
-
-    /**
-     * Returns true if an inline attachment is present.
-     * @access private
-     * @return bool
-     */
-    function InlineImageExists() {
-        $result = false;
-        for($i = 0; $i < count($this->attachment); $i++)
-        {
-            if($this->attachment[$i][6] == "inline")
-            {
-                $result = true;
-                break;
-            }
-        }
+    return $result;
+  }
 
-        return $result;
+  /////////////////////////////////////////////////
+  // CLASS METHODS, MESSAGE RESET
+  /////////////////////////////////////////////////
+
+  /**
+   * Clears all recipients assigned in the TO array.  Returns void.
+   * @return void
+   */
+  function ClearAddresses() {
+    $this->to = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the CC array.  Returns void.
+   * @return void
+   */
+  function ClearCCs() {
+    $this->cc = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the BCC array.  Returns void.
+   * @return void
+   */
+  function ClearBCCs() {
+    $this->bcc = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the ReplyTo array.  Returns void.
+   * @return void
+   */
+  function ClearReplyTos() {
+    $this->ReplyTo = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the TO, CC and BCC
+   * array.  Returns void.
+   * @return void
+   */
+  function ClearAllRecipients() {
+    $this->to = array();
+    $this->cc = array();
+    $this->bcc = array();
+  }
+
+  /**
+   * Clears all previously set filesystem, string, and binary
+   * attachments.  Returns void.
+   * @return void
+   */
+  function ClearAttachments() {
+    $this->attachment = array();
+  }
+
+  /**
+   * Clears all custom headers.  Returns void.
+   * @return void
+   */
+  function ClearCustomHeaders() {
+    $this->CustomHeader = array();
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, MISCELLANEOUS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds the error message to the error container.
+   * Returns void.
+   * @access private
+   * @return void
+   */
+  function SetError($msg) {
+    $this->error_count++;
+    $this->ErrorInfo = $msg;
+  }
+
+  /**
+   * Returns the proper RFC 822 formatted date.
+   * @access private
+   * @return string
+   */
+  function RFCDate() {
+    $tz = date('Z');
+    $tzs = ($tz < 0) ? '-' : '+';
+    $tz = abs($tz);
+    $tz = (int)($tz/3600)*100 + ($tz%3600)/60;
+    $result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz);
+
+    return $result;
+  }
+
+  /**
+   * Returns the appropriate server variable.  Should work with both
+   * PHP 4.1.0+ as well as older versions.  Returns an empty string
+   * if nothing is found.
+   * @access private
+   * @return mixed
+   */
+  function ServerVar($varName) {
+    global $HTTP_SERVER_VARS;
+    global $HTTP_ENV_VARS;
+
+    if(!isset($_SERVER)) {
+      $_SERVER = $HTTP_SERVER_VARS;
+      if(!isset($_SERVER['REMOTE_ADDR'])) {
+        $_SERVER = $HTTP_ENV_VARS; // must be Apache
+      }
     }
 
-    /////////////////////////////////////////////////
-    // MESSAGE RESET METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Clears all recipients assigned in the TO array.  Returns void.
-     * @return void
-     */
-    function ClearAddresses() {
-        $this->to = array();
-    }
-
-    /**
-     * Clears all recipients assigned in the CC array.  Returns void.
-     * @return void
-     */
-    function ClearCCs() {
-        $this->cc = array();
-    }
-
-    /**
-     * Clears all recipients assigned in the BCC array.  Returns void.
-     * @return void
-     */
-    function ClearBCCs() {
-        $this->bcc = array();
-    }
-
-    /**
-     * Clears all recipients assigned in the ReplyTo array.  Returns void.
-     * @return void
-     */
-    function ClearReplyTos() {
-        $this->ReplyTo = array();
-    }
-
-    /**
-     * Clears all recipients assigned in the TO, CC and BCC
-     * array.  Returns void.
-     * @return void
-     */
-    function ClearAllRecipients() {
-        $this->to = array();
-        $this->cc = array();
-        $this->bcc = array();
-    }
-
-    /**
-     * Clears all previously set filesystem, string, and binary
-     * attachments.  Returns void.
-     * @return void
-     */
-    function ClearAttachments() {
-        $this->attachment = array();
-    }
-
-    /**
-     * Clears all custom headers.  Returns void.
-     * @return void
-     */
-    function ClearCustomHeaders() {
-        $this->CustomHeader = array();
-    }
-
-
-    /////////////////////////////////////////////////
-    // MISCELLANEOUS METHODS
-    /////////////////////////////////////////////////
-
-    /**
-     * Adds the error message to the error container.
-     * Returns void.
-     * @access private
-     * @return void
-     */
-    function SetError($msg) {
-        $this->error_count++;
-        $this->ErrorInfo = $msg;
-    }
-
-    /**
-     * Returns the proper RFC 822 formatted date.
-     * @access private
-     * @return string
-     */
-    function RFCDate() {
-        $tz = date("Z");
-        $tzs = ($tz < 0) ? "-" : "+";
-        $tz = abs($tz);
-        $tz = ($tz/3600)*100 + ($tz%3600)/60;
-        $result = sprintf("%s %s%04d", date("D, j M Y H:i:s"), $tzs, $tz);
-
-        return $result;
-    }
-
-    /**
-     * Returns the appropriate server variable.  Should work with both
-     * PHP 4.1.0+ as well as older versions.  Returns an empty string
-     * if nothing is found.
-     * @access private
-     * @return mixed
-     */
-    function ServerVar($varName) {
-        global $HTTP_SERVER_VARS;
-        global $HTTP_ENV_VARS;
-
-        if(!isset($_SERVER))
-        {
-            $_SERVER = $HTTP_SERVER_VARS;
-            if(!isset($_SERVER["REMOTE_ADDR"]))
-                $_SERVER = $HTTP_ENV_VARS; // must be Apache
+    if(isset($_SERVER[$varName])) {
+      return $_SERVER[$varName];
+    } else {
+      return '';
+    }
+  }
+
+  /**
+   * Returns the server hostname or 'localhost.localdomain' if unknown.
+   * @access private
+   * @return string
+   */
+  function ServerHostname() {
+    if ($this->Hostname != '') {
+      $result = $this->Hostname;
+    } elseif ($this->ServerVar('SERVER_NAME') != '') {
+      $result = $this->ServerVar('SERVER_NAME');
+    } else {
+      $result = 'localhost.localdomain';
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns a message in the appropriate language.
+   * @access private
+   * @return string
+   */
+  function Lang($key) {
+    if(count($this->language) < 1) {
+      $this->SetLanguage('en'); // set the default language
+    }
+
+    if(isset($this->language[$key])) {
+      return $this->language[$key];
+    } else {
+      return 'Language string failed to load: ' . $key;
+    }
+  }
+
+  /**
+   * Returns true if an error occurred.
+   * @return bool
+   */
+  function IsError() {
+    return ($this->error_count > 0);
+  }
+
+  /**
+   * Changes every end of line from CR or LF to CRLF.
+   * @access private
+   * @return string
+   */
+  function FixEOL($str) {
+    $str = str_replace("\r\n", "\n", $str);
+    $str = str_replace("\r", "\n", $str);
+    $str = str_replace("\n", $this->LE, $str);
+    return $str;
+  }
+
+  /**
+   * Adds a custom header.
+   * @return void
+   */
+  function AddCustomHeader($custom_header) {
+    $this->CustomHeader[] = explode(':', $custom_header, 2);
+  }
+
+  /**
+   * Evaluates the message and returns modifications for inline images and backgrounds
+   * @access public
+   * @return $message
+   */
+  function MsgHTML($message,$basedir='') {
+    preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
+    if(isset($images[2])) {
+      foreach($images[2] as $i => $url) {
+        // do not change urls for absolute images (thanks to corvuscorax)
+        if (!preg_match('/^[A-z][A-z]*:\/\//',$url)) {
+          $filename = basename($url);
+          $directory = dirname($url);
+          ($directory == '.')?$directory='':'';
+          $cid = 'cid:' . md5($filename);
+          $fileParts = split("\.", $filename);
+          $ext = $fileParts[1];
+          $mimeType = $this->_mime_types($ext);
+          if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
+          if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
+          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
+            $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
+          }
         }
-
-        if(isset($_SERVER[$varName]))
-            return $_SERVER[$varName];
-        else
-            return "";
-    }
-
-    /**
-     * Returns the server hostname or 'localhost.localdomain' if unknown.
-     * @access private
-     * @return string
-     */
-    function ServerHostname() {
-        if ($this->Hostname != "")
-            $result = $this->Hostname;
-        elseif ($this->ServerVar('SERVER_NAME') != "")
-            $result = $this->ServerVar('SERVER_NAME');
-        else
-            $result = "localhost.localdomain";
-
-        return $result;
-    }
-
-    /**
-     * Returns a message in the appropriate language.
-     * @access private
-     * @return string
-     */
-    function Lang($key) {
-        if(count($this->language) < 1)
-            $this->SetLanguage("en"); // set the default language
-
-        if(isset($this->language[$key]))
-            return $this->language[$key];
-        else
-            return "Language string failed to load: " . $key;
-    }
-
-    /**
-     * Returns true if an error occurred.
-     * @return bool
-     */
-    function IsError() {
-        return ($this->error_count > 0);
-    }
-
-    /**
-     * Changes every end of line from CR or LF to CRLF.
-     * @access private
-     * @return string
-     */
-    function FixEOL($str) {
-        $str = str_replace("\r\n", "\n", $str);
-        $str = str_replace("\r", "\n", $str);
-        $str = str_replace("\n", $this->LE, $str);
-        return $str;
-    }
-
-    /**
-     * Adds a custom header.
-     * @return void
-     */
-    function AddCustomHeader($custom_header) {
-        $this->CustomHeader[] = explode(":", $custom_header, 2);
+      }
     }
+    $this->IsHTML(true);
+    $this->Body = $message;
+    $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
+    if ( !empty($textMsg) && empty($this->AltBody) ) {
+      $this->AltBody = html_entity_decode($textMsg);
+    }
+    if ( empty($this->AltBody) ) {
+      $this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n";
+    }
+  }
+
+  /**
+   * Gets the mime type of the embedded or inline image
+   * @access private
+   * @return mime type of ext
+   */
+  function _mime_types($ext = '') {
+    $mimes = array(
+      'ai'    =>  'application/postscript',
+      'aif'   =>  'audio/x-aiff',
+      'aifc'  =>  'audio/x-aiff',
+      'aiff'  =>  'audio/x-aiff',
+      'avi'   =>  'video/x-msvideo',
+      'bin'   =>  'application/macbinary',
+      'bmp'   =>  'image/bmp',
+      'class' =>  'application/octet-stream',
+      'cpt'   =>  'application/mac-compactpro',
+      'css'   =>  'text/css',
+      'dcr'   =>  'application/x-director',
+      'dir'   =>  'application/x-director',
+      'dll'   =>  'application/octet-stream',
+      'dms'   =>  'application/octet-stream',
+      'doc'   =>  'application/msword',
+      'dvi'   =>  'application/x-dvi',
+      'dxr'   =>  'application/x-director',
+      'eml'   =>  'message/rfc822',
+      'eps'   =>  'application/postscript',
+      'exe'   =>  'application/octet-stream',
+      'gif'   =>  'image/gif',
+      'gtar'  =>  'application/x-gtar',
+      'htm'   =>  'text/html',
+      'html'  =>  'text/html',
+      'jpe'   =>  'image/jpeg',
+      'jpeg'  =>  'image/jpeg',
+      'jpg'   =>  'image/jpeg',
+      'hqx'   =>  'application/mac-binhex40',
+      'js'    =>  'application/x-javascript',
+      'lha'   =>  'application/octet-stream',
+      'log'   =>  'text/plain',
+      'lzh'   =>  'application/octet-stream',
+      'mid'   =>  'audio/midi',
+      'midi'  =>  'audio/midi',
+      'mif'   =>  'application/vnd.mif',
+      'mov'   =>  'video/quicktime',
+      'movie' =>  'video/x-sgi-movie',
+      'mp2'   =>  'audio/mpeg',
+      'mp3'   =>  'audio/mpeg',
+      'mpe'   =>  'video/mpeg',
+      'mpeg'  =>  'video/mpeg',
+      'mpg'   =>  'video/mpeg',
+      'mpga'  =>  'audio/mpeg',
+      'oda'   =>  'application/oda',
+      'pdf'   =>  'application/pdf',
+      'php'   =>  'application/x-httpd-php',
+      'php3'  =>  'application/x-httpd-php',
+      'php4'  =>  'application/x-httpd-php',
+      'phps'  =>  'application/x-httpd-php-source',
+      'phtml' =>  'application/x-httpd-php',
+      'png'   =>  'image/png',
+      'ppt'   =>  'application/vnd.ms-powerpoint',
+      'ps'    =>  'application/postscript',
+      'psd'   =>  'application/octet-stream',
+      'qt'    =>  'video/quicktime',
+      'ra'    =>  'audio/x-realaudio',
+      'ram'   =>  'audio/x-pn-realaudio',
+      'rm'    =>  'audio/x-pn-realaudio',
+      'rpm'   =>  'audio/x-pn-realaudio-plugin',
+      'rtf'   =>  'text/rtf',
+      'rtx'   =>  'text/richtext',
+      'rv'    =>  'video/vnd.rn-realvideo',
+      'sea'   =>  'application/octet-stream',
+      'shtml' =>  'text/html',
+      'sit'   =>  'application/x-stuffit',
+      'so'    =>  'application/octet-stream',
+      'smi'   =>  'application/smil',
+      'smil'  =>  'application/smil',
+      'swf'   =>  'application/x-shockwave-flash',
+      'tar'   =>  'application/x-tar',
+      'text'  =>  'text/plain',
+      'txt'   =>  'text/plain',
+      'tgz'   =>  'application/x-tar',
+      'tif'   =>  'image/tiff',
+      'tiff'  =>  'image/tiff',
+      'wav'   =>  'audio/x-wav',
+      'wbxml' =>  'application/vnd.wap.wbxml',
+      'wmlc'  =>  'application/vnd.wap.wmlc',
+      'word'  =>  'application/msword',
+      'xht'   =>  'application/xhtml+xml',
+      'xhtml' =>  'application/xhtml+xml',
+      'xl'    =>  'application/excel',
+      'xls'   =>  'application/vnd.ms-excel',
+      'xml'   =>  'text/xml',
+      'xsl'   =>  'text/xml',
+      'zip'   =>  'application/zip'
+    );
+    return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
+  }
+
+  /**
+   * Set (or reset) Class Objects (variables)
+   *
+   * Usage Example:
+   * $page->set('X-Priority', '3');
+   *
+   * @access public
+   * @param string $name Parameter Name
+   * @param mixed $value Parameter Value
+   * NOTE: will not work with arrays, there are no arrays to set/reset
+   */
+  function set ( $name, $value = '' ) {
+    if ( isset($this->$name) ) {
+      $this->$name = $value;
+    } else {
+      $this->SetError('Cannot set or reset variable ' . $name);
+      return false;
+    }
+  }
+
+  /**
+   * Read a file from a supplied filename and return it.
+   *
+   * @access public
+   * @param string $filename Parameter File Name
+   */
+  function getFile($filename) {
+    $return = '';
+    if ($fp = fopen($filename, 'rb')) {
+      while (!feof($fp)) {
+        $return .= fread($fp, 1024);
+      }
+      fclose($fp);
+      return $return;
+    } else {
+      return false;
+    }
+  }
+
+  /**
+   * Strips newlines to prevent header injection.
+   * @access private
+   * @param string $str String
+   * @return string
+   */
+  function SecureHeader($str) {
+    $str = trim($str);
+    $str = str_replace("\r", "", $str);
+    $str = str_replace("\n", "", $str);
+    return $str;
+  }
+
+  /**
+   * Set the private key file and password to sign the message.
+   *
+   * @access public
+   * @param string $key_filename Parameter File Name
+   * @param string $key_pass Password for private key
+   */
+  function Sign($cert_filename, $key_filename, $key_pass) {
+    $this->sign_cert_file = $cert_filename;
+    $this->sign_key_file = $key_filename;
+    $this->sign_key_pass = $key_pass;
+  }
+
 }
 
 ?>
diff -aruN --binary 11/libraries/phpmailer/smtp.php 12/libraries/phpmailer/smtp.php
--- 11/libraries/phpmailer/smtp.php	2008-07-07 00:39:20.000000000 +0200
+++ 12/libraries/phpmailer/smtp.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,17 +1,28 @@
 <?php
-////////////////////////////////////////////////////
-// SMTP - PHP SMTP class
-//
-// Version 1.02
-//
-// Define an SMTP class that can be used to connect
-// and communicate with any SMTP server. It implements
-// all the SMTP functions defined in RFC821 except TURN.
-//
-// Author: Chris Ryan
-//
-// License: LGPL, see LICENSE
-////////////////////////////////////////////////////
+/*~ class.smtp.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 2.0.4                                                          |
+|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
+|      Info: http://phpmailer.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/phpmailer/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost (project admininistrator)                         |
+|    Author: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2004-2007, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services (www.codeworxtech.com):                |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
 
 /**
  * SMTP is rfc 821 compliant and implements all the rfc 821 SMTP
@@ -21,1023 +32,1029 @@
  * @package PHPMailer
  * @author Chris Ryan
  */
+
 class SMTP
 {
-    /**
-     *  SMTP server port
-     *  @var int
-     */
-    var $SMTP_PORT = 25;
-
-    /**
-     *  SMTP reply line ending
-     *  @var string
-     */
-    var $CRLF = "\r\n";
-
-    /**
-     *  Sets whether debugging is turned on
-     *  @var bool
-     */
-    var $do_debug;       # the level of debug to perform
-
-    /**#@+
-     * @access private
-     */
-    var $smtp_conn;      # the socket to the server
-    var $error;          # error if any on the last call
-    var $helo_rply;      # the reply the server sent to us for HELO
-    /**#@-*/
-
-    /**
-     * Initialize the class so that the data is in a known state.
-     * @access public
-     * @return void
-     */
-    function SMTP() {
-        $this->smtp_conn = 0;
-        $this->error = null;
-        $this->helo_rply = null;
-
-        $this->do_debug = 0;
-    }
-
-    /*************************************************************
-     *                    CONNECTION FUNCTIONS                  *
-     ***********************************************************/
-
-    /**
-     * Connect to the server specified on the port specified.
-     * If the port is not specified use the default SMTP_PORT.
-     * If tval is specified then a connection will try and be
-     * established with the server for that number of seconds.
-     * If tval is not specified the default is 30 seconds to
-     * try on the connection.
-     *
-     * SMTP CODE SUCCESS: 220
-     * SMTP CODE FAILURE: 421
-     * @access public
-     * @return bool
-     */
-    function Connect($host,$port=0,$tval=30) {
-        # set the error val to null so there is no confusion
-        $this->error = null;
-
-        # make sure we are __not__ connected
-        if($this->connected()) {
-            # ok we are connected! what should we do?
-            # for now we will just give an error saying we
-            # are already connected
-            $this->error =
-                array("error" => "Already connected to a server");
-            return false;
-        }
-
-        if(empty($port)) {
-            $port = $this->SMTP_PORT;
-        }
-
-        #connect to the smtp server
-        $this->smtp_conn = fsockopen($host,    # the host of the server
-                                     $port,    # the port to use
-                                     $errno,   # error number if any
-                                     $errstr,  # error message if any
-                                     $tval);   # give up after ? secs
-        # verify we connected properly
-        if(empty($this->smtp_conn)) {
-            $this->error = array("error" => "Failed to connect to server",
-                                 "errno" => $errno,
-                                 "errstr" => $errstr);
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": $errstr ($errno)" . $this->CRLF;
-            }
-            return false;
-        }
-
-        # sometimes the SMTP server takes a little longer to respond
-        # so we will give it a longer timeout for the first read
-        // Windows still does not have support for this timeout function
-        if(substr(PHP_OS, 0, 3) != "WIN")
-           socket_set_timeout($this->smtp_conn, $tval, 0);
-
-        # get any announcement stuff
-        $announce = $this->get_lines();
-
-        # set the timeout  of any socket functions at 1/10 of a second
-        //if(function_exists("socket_set_timeout"))
-        //   socket_set_timeout($this->smtp_conn, 0, 100000);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $announce;
-        }
-
-        return true;
-    }
-
-    /**
-     * Performs SMTP authentication.  Must be run after running the
-     * Hello() method.  Returns true if successfully authenticated.
-     * @access public
-     * @return bool
-     */
-    function Authenticate($username, $password) {
-        // Start authentication
-        fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($code != 334) {
-            $this->error =
-                array("error" => "AUTH not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        // Send encoded username
-        fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($code != 334) {
-            $this->error =
-                array("error" => "Username not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        // Send encoded password
-        fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($code != 235) {
-            $this->error =
-                array("error" => "Password not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns true if connected to a server otherwise false
-     * @access private
-     * @return bool
-     */
-    function Connected() {
-        if(!empty($this->smtp_conn)) {
-            $sock_status = socket_get_status($this->smtp_conn);
-            if($sock_status["eof"]) {
-                # hmm this is an odd situation... the socket is
-                # valid but we aren't connected anymore
-                if($this->do_debug >= 1) {
-                    echo "SMTP -> NOTICE:" . $this->CRLF .
-                         "EOF caught while checking if connected";
-                }
-                $this->Close();
-                return false;
-            }
-            return true; # everything looks good
+  /**
+   *  SMTP server port
+   *  @var int
+   */
+  var $SMTP_PORT = 25;
+
+  /**
+   *  SMTP reply line ending
+   *  @var string
+   */
+  var $CRLF = "\r\n";
+
+  /**
+   *  Sets whether debugging is turned on
+   *  @var bool
+   */
+  var $do_debug;       # the level of debug to perform
+
+  /**
+   *  Sets VERP use on/off (default is off)
+   *  @var bool
+   */
+  var $do_verp = false;
+
+  /**#@+
+   * @access private
+   */
+  var $smtp_conn;      # the socket to the server
+  var $error;          # error if any on the last call
+  var $helo_rply;      # the reply the server sent to us for HELO
+  /**#@-*/
+
+  /**
+   * Initialize the class so that the data is in a known state.
+   * @access public
+   * @return void
+   */
+  function SMTP() {
+    $this->smtp_conn = 0;
+    $this->error = null;
+    $this->helo_rply = null;
+
+    $this->do_debug = 0;
+  }
+
+  /*************************************************************
+   *                    CONNECTION FUNCTIONS                  *
+   ***********************************************************/
+
+  /**
+   * Connect to the server specified on the port specified.
+   * If the port is not specified use the default SMTP_PORT.
+   * If tval is specified then a connection will try and be
+   * established with the server for that number of seconds.
+   * If tval is not specified the default is 30 seconds to
+   * try on the connection.
+   *
+   * SMTP CODE SUCCESS: 220
+   * SMTP CODE FAILURE: 421
+   * @access public
+   * @return bool
+   */
+  function Connect($host,$port=0,$tval=30) {
+    # set the error val to null so there is no confusion
+    $this->error = null;
+
+    # make sure we are __not__ connected
+    if($this->connected()) {
+      # ok we are connected! what should we do?
+      # for now we will just give an error saying we
+      # are already connected
+      $this->error = array("error" => "Already connected to a server");
+      return false;
+    }
+
+    if(empty($port)) {
+      $port = $this->SMTP_PORT;
+    }
+
+    #connect to the smtp server
+    $this->smtp_conn = fsockopen($host,    # the host of the server
+                                 $port,    # the port to use
+                                 $errno,   # error number if any
+                                 $errstr,  # error message if any
+                                 $tval);   # give up after ? secs
+    # verify we connected properly
+    if(empty($this->smtp_conn)) {
+      $this->error = array("error" => "Failed to connect to server",
+                           "errno" => $errno,
+                           "errstr" => $errstr);
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": $errstr ($errno)" . $this->CRLF;
+      }
+      return false;
+    }
+
+    # sometimes the SMTP server takes a little longer to respond
+    # so we will give it a longer timeout for the first read
+    // Windows still does not have support for this timeout function
+    if(substr(PHP_OS, 0, 3) != "WIN")
+     socket_set_timeout($this->smtp_conn, $tval, 0);
+
+    # get any announcement stuff
+    $announce = $this->get_lines();
+
+    # set the timeout  of any socket functions at 1/10 of a second
+    //if(function_exists("socket_set_timeout"))
+    //   socket_set_timeout($this->smtp_conn, 0, 100000);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $announce;
+    }
+
+    return true;
+  }
+
+  /**
+   * Performs SMTP authentication.  Must be run after running the
+   * Hello() method.  Returns true if successfully authenticated.
+   * @access public
+   * @return bool
+   */
+  function Authenticate($username, $password) {
+    // Start authentication
+    fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 334) {
+      $this->error =
+        array("error" => "AUTH not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    // Send encoded username
+    fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 334) {
+      $this->error =
+        array("error" => "Username not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    // Send encoded password
+    fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 235) {
+      $this->error =
+        array("error" => "Password not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Returns true if connected to a server otherwise false
+   * @access private
+   * @return bool
+   */
+  function Connected() {
+    if(!empty($this->smtp_conn)) {
+      $sock_status = socket_get_status($this->smtp_conn);
+      if($sock_status["eof"]) {
+        # hmm this is an odd situation... the socket is
+        # valid but we are not connected anymore
+        if($this->do_debug >= 1) {
+            echo "SMTP -> NOTICE:" . $this->CRLF .
+                 "EOF caught while checking if connected";
         }
+        $this->Close();
         return false;
+      }
+      return true; # everything looks good
     }
+    return false;
+  }
 
-    /**
-     * Closes the socket and cleans up the state of the class.
-     * It is not considered good to use this function without
-     * first trying to use QUIT.
-     * @access public
-     * @return void
-     */
-    function Close() {
-        $this->error = null; # so there is no confusion
-        $this->helo_rply = null;
-        if(!empty($this->smtp_conn)) {
-            # close the connection and cleanup
-            fclose($this->smtp_conn);
-            $this->smtp_conn = 0;
-        }
-    }
-
-
-    /***************************************************************
-     *                        SMTP COMMANDS                       *
-     *************************************************************/
-
-    /**
-     * Issues a data command and sends the msg_data to the server
-     * finializing the mail transaction. $msg_data is the message
-     * that is to be send with the headers. Each header needs to be
-     * on a single line followed by a <CRLF> with the message headers
-     * and the message body being seperated by and additional <CRLF>.
-     *
-     * Implements rfc 821: DATA <CRLF>
-     *
-     * SMTP CODE INTERMEDIATE: 354
-     *     [data]
-     *     <CRLF>.<CRLF>
-     *     SMTP CODE SUCCESS: 250
-     *     SMTP CODE FAILURE: 552,554,451,452
-     * SMTP CODE FAILURE: 451,554
-     * SMTP CODE ERROR  : 500,501,503,421
-     * @access public
-     * @return bool
-     */
-    function Data($msg_data) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Data() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"DATA" . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 354) {
-            $this->error =
-                array("error" => "DATA command not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        # the server is ready to accept data!
-        # according to rfc 821 we should not send more than 1000
-        # including the CRLF
-        # characters on a single line so we will break the data up
-        # into lines by \r and/or \n then if needed we will break
-        # each of those into smaller lines to fit within the limit.
-        # in addition we will be looking for lines that start with
-        # a period '.' and append and additional period '.' to that
-        # line. NOTE: this does not count towards are limit.
-
-        # normalize the line breaks so we know the explode works
-        $msg_data = str_replace("\r\n","\n",$msg_data);
-        $msg_data = str_replace("\r","\n",$msg_data);
-        $lines = explode("\n",$msg_data);
-
-        # we need to find a good way to determine is headers are
-        # in the msg_data or if it is a straight msg body
-        # currently I'm assuming rfc 822 definitions of msg headers
-        # and if the first field of the first line (':' sperated)
-        # does not contain a space then it _should_ be a header
-        # and we can process all lines before a blank "" line as
-        # headers.
-        $field = substr($lines[0],0,strpos($lines[0],":"));
+  /**
+   * Closes the socket and cleans up the state of the class.
+   * It is not considered good to use this function without
+   * first trying to use QUIT.
+   * @access public
+   * @return void
+   */
+  function Close() {
+    $this->error = null; # so there is no confusion
+    $this->helo_rply = null;
+    if(!empty($this->smtp_conn)) {
+      # close the connection and cleanup
+      fclose($this->smtp_conn);
+      $this->smtp_conn = 0;
+    }
+  }
+
+  /***************************************************************
+   *                        SMTP COMMANDS                       *
+   *************************************************************/
+
+  /**
+   * Issues a data command and sends the msg_data to the server
+   * finializing the mail transaction. $msg_data is the message
+   * that is to be send with the headers. Each header needs to be
+   * on a single line followed by a <CRLF> with the message headers
+   * and the message body being seperated by and additional <CRLF>.
+   *
+   * Implements rfc 821: DATA <CRLF>
+   *
+   * SMTP CODE INTERMEDIATE: 354
+   *     [data]
+   *     <CRLF>.<CRLF>
+   *     SMTP CODE SUCCESS: 250
+   *     SMTP CODE FAILURE: 552,554,451,452
+   * SMTP CODE FAILURE: 451,554
+   * SMTP CODE ERROR  : 500,501,503,421
+   * @access public
+   * @return bool
+   */
+  function Data($msg_data) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Data() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"DATA" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 354) {
+      $this->error =
+        array("error" => "DATA command not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    # the server is ready to accept data!
+    # according to rfc 821 we should not send more than 1000
+    # including the CRLF
+    # characters on a single line so we will break the data up
+    # into lines by \r and/or \n then if needed we will break
+    # each of those into smaller lines to fit within the limit.
+    # in addition we will be looking for lines that start with
+    # a period '.' and append and additional period '.' to that
+    # line. NOTE: this does not count towards are limit.
+
+    # normalize the line breaks so we know the explode works
+    $msg_data = str_replace("\r\n","\n",$msg_data);
+    $msg_data = str_replace("\r","\n",$msg_data);
+    $lines = explode("\n",$msg_data);
+
+    # we need to find a good way to determine is headers are
+    # in the msg_data or if it is a straight msg body
+    # currently I am assuming rfc 822 definitions of msg headers
+    # and if the first field of the first line (':' sperated)
+    # does not contain a space then it _should_ be a header
+    # and we can process all lines before a blank "" line as
+    # headers.
+    $field = substr($lines[0],0,strpos($lines[0],":"));
+    $in_headers = false;
+    if(!empty($field) && !strstr($field," ")) {
+      $in_headers = true;
+    }
+
+    $max_line_length = 998; # used below; set here for ease in change
+
+    while(list(,$line) = @each($lines)) {
+      $lines_out = null;
+      if($line == "" && $in_headers) {
         $in_headers = false;
-        if(!empty($field) && !strstr($field," ")) {
-            $in_headers = true;
-        }
-
-        $max_line_length = 998; # used below; set here for ease in change
-
-        while(list(,$line) = @each($lines)) {
-            $lines_out = null;
-            if($line == "" && $in_headers) {
-                $in_headers = false;
-            }
-            # ok we need to break this line up into several
-            # smaller lines
-            while(strlen($line) > $max_line_length) {
-                $pos = strrpos(substr($line,0,$max_line_length)," ");
-
-                # Patch to fix DOS attack
-                if(!$pos) {
-                    $pos = $max_line_length - 1;
-                }
-
-                $lines_out[] = substr($line,0,$pos);
-                $line = substr($line,$pos + 1);
-                # if we are processing headers we need to
-                # add a LWSP-char to the front of the new line
-                # rfc 822 on long msg headers
-                if($in_headers) {
-                    $line = "\t" . $line;
-                }
-            }
-            $lines_out[] = $line;
-
-            # now send the lines to the server
-            while(list(,$line_out) = @each($lines_out)) {
-                if(strlen($line_out) > 0)
-                {
-                    if(substr($line_out, 0, 1) == ".") {
-                        $line_out = "." . $line_out;
-                    }
-                }
-                fputs($this->smtp_conn,$line_out . $this->CRLF);
-            }
-        }
-
-        # ok all the message data has been sent so lets get this
-        # over with aleady
-        fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "DATA not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Expand takes the name and asks the server to list all the
-     * people who are members of the _list_. Expand will return
-     * back and array of the result or false if an error occurs.
-     * Each value in the array returned has the format of:
-     *     [ <full-name> <sp> ] <path>
-     * The definition of <path> is defined in rfc 821
-     *
-     * Implements rfc 821: EXPN <SP> <string> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE FAILURE: 550
-     * SMTP CODE ERROR  : 500,501,502,504,421
-     * @access public
-     * @return string array
-     */
-    function Expand($name) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Expand() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"EXPN " . $name . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "EXPN not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        # parse the reply and place in our array to return to user
-        $entries = explode($this->CRLF,$rply);
-        while(list(,$l) = @each($entries)) {
-            $list[] = substr($l,4);
-        }
-
-        return $list;
-    }
-
-    /**
-     * Sends the HELO command to the smtp server.
-     * This makes sure that we and the server are in
-     * the same known state.
-     *
-     * Implements from rfc 821: HELO <SP> <domain> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE ERROR  : 500, 501, 504, 421
-     * @access public
-     * @return bool
-     */
-    function Hello($host="") {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Hello() without being connected");
-            return false;
-        }
-
-        # if a hostname for the HELO wasn't specified determine
-        # a suitable one to send
-        if(empty($host)) {
-            # we need to determine some sort of appopiate default
-            # to send to the server
-            $host = "localhost";
-        }
-
-        // Send extended hello first (RFC 2821)
-        if(!$this->SendHello("EHLO", $host))
+      }
+      # ok we need to break this line up into several
+      # smaller lines
+      while(strlen($line) > $max_line_length) {
+        $pos = strrpos(substr($line,0,$max_line_length)," ");
+
+        # Patch to fix DOS attack
+        if(!$pos) {
+          $pos = $max_line_length - 1;
+        }
+
+        $lines_out[] = substr($line,0,$pos);
+        $line = substr($line,$pos + 1);
+        # if we are processing headers we need to
+        # add a LWSP-char to the front of the new line
+        # rfc 822 on long msg headers
+        if($in_headers) {
+          $line = "\t" . $line;
+        }
+      }
+      $lines_out[] = $line;
+
+      # now send the lines to the server
+      while(list(,$line_out) = @each($lines_out)) {
+        if(strlen($line_out) > 0)
         {
-            if(!$this->SendHello("HELO", $host))
-                return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Sends a HELO/EHLO command.
-     * @access private
-     * @return bool
-     */
-    function SendHello($hello, $host) {
-        fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER: " . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => $hello . " not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        $this->helo_rply = $rply;
-
-        return true;
-    }
-
-    /**
-     * Gets help information on the keyword specified. If the keyword
-     * is not specified then returns generic help, ussually contianing
-     * A list of keywords that help is available on. This function
-     * returns the results back to the user. It is up to the user to
-     * handle the returned data. If an error occurs then false is
-     * returned with $this->error set appropiately.
-     *
-     * Implements rfc 821: HELP [ <SP> <string> ] <CRLF>
-     *
-     * SMTP CODE SUCCESS: 211,214
-     * SMTP CODE ERROR  : 500,501,502,504,421
-     * @access public
-     * @return string
-     */
-    function Help($keyword="") {
-        $this->error = null; # to avoid confusion
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Help() without being connected");
-            return false;
-        }
-
-        $extra = "";
-        if(!empty($keyword)) {
-            $extra = " " . $keyword;
-        }
-
-        fputs($this->smtp_conn,"HELP" . $extra . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 211 && $code != 214) {
-            $this->error =
-                array("error" => "HELP not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        return $rply;
-    }
-
-    /**
-     * Starts a mail transaction from the email address specified in
-     * $from. Returns true if successful or false otherwise. If True
-     * the mail transaction is started and then one or more Recipient
-     * commands may be called followed by a Data command.
-     *
-     * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE SUCCESS: 552,451,452
-     * SMTP CODE SUCCESS: 500,501,421
-     * @access public
-     * @return bool
-     */
-    function Mail($from) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Mail() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "MAIL not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Sends the command NOOP to the SMTP server.
-     *
-     * Implements from rfc 821: NOOP <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE ERROR  : 500, 421
-     * @access public
-     * @return bool
-     */
-    function Noop() {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Noop() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"NOOP" . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "NOOP not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Sends the quit command to the server and then closes the socket
-     * if there is no error or the $close_on_error argument is true.
-     *
-     * Implements from rfc 821: QUIT <CRLF>
-     *
-     * SMTP CODE SUCCESS: 221
-     * SMTP CODE ERROR  : 500
-     * @access public
-     * @return bool
-     */
-    function Quit($close_on_error=true) {
-        $this->error = null; # so there is no confusion
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Quit() without being connected");
-            return false;
-        }
-
-        # send the quit command to the server
-        fputs($this->smtp_conn,"quit" . $this->CRLF);
-
-        # get any good-bye messages
-        $byemsg = $this->get_lines();
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $byemsg;
-        }
-
-        $rval = true;
-        $e = null;
-
-        $code = substr($byemsg,0,3);
-        if($code != 221) {
-            # use e as a tmp var cause Close will overwrite $this->error
-            $e = array("error" => "SMTP server rejected quit command",
-                       "smtp_code" => $code,
-                       "smtp_rply" => substr($byemsg,4));
-            $rval = false;
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $e["error"] . ": " .
-                         $byemsg . $this->CRLF;
-            }
-        }
-
-        if(empty($e) || $close_on_error) {
-            $this->Close();
-        }
-
-        return $rval;
-    }
-
-    /**
-     * Sends the command RCPT to the SMTP server with the TO: argument of $to.
-     * Returns true if the recipient was accepted false if it was rejected.
-     *
-     * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250,251
-     * SMTP CODE FAILURE: 550,551,552,553,450,451,452
-     * SMTP CODE ERROR  : 500,501,503,421
-     * @access public
-     * @return bool
-     */
-    function Recipient($to) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Recipient() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250 && $code != 251) {
-            $this->error =
-                array("error" => "RCPT not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Sends the RSET command to abort and transaction that is
-     * currently in progress. Returns true if successful false
-     * otherwise.
-     *
-     * Implements rfc 821: RSET <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE ERROR  : 500,501,504,421
-     * @access public
-     * @return bool
-     */
-    function Reset() {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Reset() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"RSET" . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "RSET failed",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Starts a mail transaction from the email address specified in
-     * $from. Returns true if successful or false otherwise. If True
-     * the mail transaction is started and then one or more Recipient
-     * commands may be called followed by a Data command. This command
-     * will send the message to the users terminal if they are logged
-     * in.
-     *
-     * Implements rfc 821: SEND <SP> FROM:<reverse-path> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE SUCCESS: 552,451,452
-     * SMTP CODE SUCCESS: 500,501,502,421
-     * @access public
-     * @return bool
-     */
-    function Send($from) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Send() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"SEND FROM:" . $from . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "SEND not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Starts a mail transaction from the email address specified in
-     * $from. Returns true if successful or false otherwise. If True
-     * the mail transaction is started and then one or more Recipient
-     * commands may be called followed by a Data command. This command
-     * will send the message to the users terminal if they are logged
-     * in and send them an email.
-     *
-     * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE SUCCESS: 552,451,452
-     * SMTP CODE SUCCESS: 500,501,502,421
-     * @access public
-     * @return bool
-     */
-    function SendAndMail($from) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                "error" => "Called SendAndMail() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "SAML not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Starts a mail transaction from the email address specified in
-     * $from. Returns true if successful or false otherwise. If True
-     * the mail transaction is started and then one or more Recipient
-     * commands may be called followed by a Data command. This command
-     * will send the message to the users terminal if they are logged
-     * in or mail it to them if they are not.
-     *
-     * Implements rfc 821: SOML <SP> FROM:<reverse-path> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE SUCCESS: 552,451,452
-     * SMTP CODE SUCCESS: 500,501,502,421
-     * @access public
-     * @return bool
-     */
-    function SendOrMail($from) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                "error" => "Called SendOrMail() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"SOML FROM:" . $from . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250) {
-            $this->error =
-                array("error" => "SOML not accepted from server",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * This is an optional command for SMTP that this class does not
-     * support. This method is here to make the RFC821 Definition
-     * complete for this class and __may__ be implimented in the future
-     *
-     * Implements from rfc 821: TURN <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250
-     * SMTP CODE FAILURE: 502
-     * SMTP CODE ERROR  : 500, 503
-     * @access public
-     * @return bool
-     */
-    function Turn() {
-        $this->error = array("error" => "This method, TURN, of the SMTP ".
-                                        "is not implemented");
-        if($this->do_debug >= 1) {
-            echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF;
-        }
-        return false;
-    }
-
-    /**
-     * Verifies that the name is recognized by the server.
-     * Returns false if the name could not be verified otherwise
-     * the response from the server is returned.
-     *
-     * Implements rfc 821: VRFY <SP> <string> <CRLF>
-     *
-     * SMTP CODE SUCCESS: 250,251
-     * SMTP CODE FAILURE: 550,551,553
-     * SMTP CODE ERROR  : 500,501,502,421
-     * @access public
-     * @return int
-     */
-    function Verify($name) {
-        $this->error = null; # so no confusion is caused
-
-        if(!$this->connected()) {
-            $this->error = array(
-                    "error" => "Called Verify() without being connected");
-            return false;
-        }
-
-        fputs($this->smtp_conn,"VRFY " . $name . $this->CRLF);
-
-        $rply = $this->get_lines();
-        $code = substr($rply,0,3);
-
-        if($this->do_debug >= 2) {
-            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
-        }
-
-        if($code != 250 && $code != 251) {
-            $this->error =
-                array("error" => "VRFY failed on name '$name'",
-                      "smtp_code" => $code,
-                      "smtp_msg" => substr($rply,4));
-            if($this->do_debug >= 1) {
-                echo "SMTP -> ERROR: " . $this->error["error"] .
-                         ": " . $rply . $this->CRLF;
-            }
-            return false;
-        }
-        return $rply;
-    }
-
-    /*******************************************************************
-     *                       INTERNAL FUNCTIONS                       *
-     ******************************************************************/
-
-    /**
-     * Read in as many lines as possible
-     * either before eof or socket timeout occurs on the operation.
-     * With SMTP we can tell if we have more lines to read if the
-     * 4th character is '-' symbol. If it is a space then we don't
-     * need to read anything else.
-     * @access private
-     * @return string
-     */
-    function get_lines() {
-        $data = "";
-        while($str = fgets($this->smtp_conn,515)) {
-            if($this->do_debug >= 4) {
-                echo "SMTP -> get_lines(): \$data was \"$data\"" .
-                         $this->CRLF;
-                echo "SMTP -> get_lines(): \$str is \"$str\"" .
-                         $this->CRLF;
-            }
-            $data .= $str;
-            if($this->do_debug >= 4) {
-                echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF;
-            }
-            # if the 4th character is a space then we are done reading
-            # so just break the loop
-            if(substr($str,3,1) == " ") { break; }
-        }
-        return $data;
+          if(substr($line_out, 0, 1) == ".") {
+            $line_out = "." . $line_out;
+          }
+        }
+        fputs($this->smtp_conn,$line_out . $this->CRLF);
+      }
+    }
+
+    # ok all the message data has been sent so lets get this
+    # over with aleady
+    fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "DATA not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Expand takes the name and asks the server to list all the
+   * people who are members of the _list_. Expand will return
+   * back and array of the result or false if an error occurs.
+   * Each value in the array returned has the format of:
+   *     [ <full-name> <sp> ] <path>
+   * The definition of <path> is defined in rfc 821
+   *
+   * Implements rfc 821: EXPN <SP> <string> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE FAILURE: 550
+   * SMTP CODE ERROR  : 500,501,502,504,421
+   * @access public
+   * @return string array
+   */
+  function Expand($name) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+            "error" => "Called Expand() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"EXPN " . $name . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "EXPN not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    # parse the reply and place in our array to return to user
+    $entries = explode($this->CRLF,$rply);
+    while(list(,$l) = @each($entries)) {
+      $list[] = substr($l,4);
+    }
+
+    return $list;
+  }
+
+  /**
+   * Sends the HELO command to the smtp server.
+   * This makes sure that we and the server are in
+   * the same known state.
+   *
+   * Implements from rfc 821: HELO <SP> <domain> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500, 501, 504, 421
+   * @access public
+   * @return bool
+   */
+  function Hello($host="") {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+            "error" => "Called Hello() without being connected");
+      return false;
+    }
+
+    # if a hostname for the HELO was not specified determine
+    # a suitable one to send
+    if(empty($host)) {
+      # we need to determine some sort of appopiate default
+      # to send to the server
+      $host = "localhost";
+    }
+
+    // Send extended hello first (RFC 2821)
+    if(!$this->SendHello("EHLO", $host))
+    {
+      if(!$this->SendHello("HELO", $host))
+          return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Sends a HELO/EHLO command.
+   * @access private
+   * @return bool
+   */
+  function SendHello($hello, $host) {
+    fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER: " . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => $hello . " not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    $this->helo_rply = $rply;
+
+    return true;
+  }
+
+  /**
+   * Gets help information on the keyword specified. If the keyword
+   * is not specified then returns generic help, ussually contianing
+   * A list of keywords that help is available on. This function
+   * returns the results back to the user. It is up to the user to
+   * handle the returned data. If an error occurs then false is
+   * returned with $this->error set appropiately.
+   *
+   * Implements rfc 821: HELP [ <SP> <string> ] <CRLF>
+   *
+   * SMTP CODE SUCCESS: 211,214
+   * SMTP CODE ERROR  : 500,501,502,504,421
+   * @access public
+   * @return string
+   */
+  function Help($keyword="") {
+    $this->error = null; # to avoid confusion
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Help() without being connected");
+      return false;
+    }
+
+    $extra = "";
+    if(!empty($keyword)) {
+      $extra = " " . $keyword;
+    }
+
+    fputs($this->smtp_conn,"HELP" . $extra . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 211 && $code != 214) {
+      $this->error =
+        array("error" => "HELP not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    return $rply;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command.
+   *
+   * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,421
+   * @access public
+   * @return bool
+   */
+  function Mail($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Mail() without being connected");
+      return false;
+    }
+
+    $useVerp = ($this->do_verp ? "XVERP" : "");
+    fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "MAIL not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the command NOOP to the SMTP server.
+   *
+   * Implements from rfc 821: NOOP <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500, 421
+   * @access public
+   * @return bool
+   */
+  function Noop() {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Noop() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"NOOP" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "NOOP not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the quit command to the server and then closes the socket
+   * if there is no error or the $close_on_error argument is true.
+   *
+   * Implements from rfc 821: QUIT <CRLF>
+   *
+   * SMTP CODE SUCCESS: 221
+   * SMTP CODE ERROR  : 500
+   * @access public
+   * @return bool
+   */
+  function Quit($close_on_error=true) {
+    $this->error = null; # so there is no confusion
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Quit() without being connected");
+      return false;
+    }
+
+    # send the quit command to the server
+    fputs($this->smtp_conn,"quit" . $this->CRLF);
+
+    # get any good-bye messages
+    $byemsg = $this->get_lines();
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $byemsg;
+    }
+
+    $rval = true;
+    $e = null;
+
+    $code = substr($byemsg,0,3);
+    if($code != 221) {
+      # use e as a tmp var cause Close will overwrite $this->error
+      $e = array("error" => "SMTP server rejected quit command",
+                 "smtp_code" => $code,
+                 "smtp_rply" => substr($byemsg,4));
+      $rval = false;
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $e["error"] . ": " .
+                 $byemsg . $this->CRLF;
+      }
+    }
+
+    if(empty($e) || $close_on_error) {
+      $this->Close();
+    }
+
+    return $rval;
+  }
+
+  /**
+   * Sends the command RCPT to the SMTP server with the TO: argument of $to.
+   * Returns true if the recipient was accepted false if it was rejected.
+   *
+   * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250,251
+   * SMTP CODE FAILURE: 550,551,552,553,450,451,452
+   * SMTP CODE ERROR  : 500,501,503,421
+   * @access public
+   * @return bool
+   */
+  function Recipient($to) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Recipient() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250 && $code != 251) {
+      $this->error =
+        array("error" => "RCPT not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the RSET command to abort and transaction that is
+   * currently in progress. Returns true if successful false
+   * otherwise.
+   *
+   * Implements rfc 821: RSET <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500,501,504,421
+   * @access public
+   * @return bool
+   */
+  function Reset() {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Reset() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"RSET" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "RSET failed",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in.
+   *
+   * Implements rfc 821: SEND <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  function Send($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Send() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SEND FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SEND not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in and send them an email.
+   *
+   * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  function SendAndMail($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+          "error" => "Called SendAndMail() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SAML not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in or mail it to them if they are not.
+   *
+   * Implements rfc 821: SOML <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  function SendOrMail($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+          "error" => "Called SendOrMail() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SOML FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SOML not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * This is an optional command for SMTP that this class does not
+   * support. This method is here to make the RFC821 Definition
+   * complete for this class and __may__ be implimented in the future
+   *
+   * Implements from rfc 821: TURN <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE FAILURE: 502
+   * SMTP CODE ERROR  : 500, 503
+   * @access public
+   * @return bool
+   */
+  function Turn() {
+    $this->error = array("error" => "This method, TURN, of the SMTP ".
+                                    "is not implemented");
+    if($this->do_debug >= 1) {
+      echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF;
+    }
+    return false;
+  }
+
+  /**
+   * Verifies that the name is recognized by the server.
+   * Returns false if the name could not be verified otherwise
+   * the response from the server is returned.
+   *
+   * Implements rfc 821: VRFY <SP> <string> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250,251
+   * SMTP CODE FAILURE: 550,551,553
+   * SMTP CODE ERROR  : 500,501,502,421
+   * @access public
+   * @return int
+   */
+  function Verify($name) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Verify() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"VRFY " . $name . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250 && $code != 251) {
+      $this->error =
+        array("error" => "VRFY failed on name '$name'",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return $rply;
+  }
+
+  /*******************************************************************
+   *                       INTERNAL FUNCTIONS                       *
+   ******************************************************************/
+
+  /**
+   * Read in as many lines as possible
+   * either before eof or socket timeout occurs on the operation.
+   * With SMTP we can tell if we have more lines to read if the
+   * 4th character is '-' symbol. If it is a space then we don't
+   * need to read anything else.
+   * @access private
+   * @return string
+   */
+  function get_lines() {
+    $data = "";
+    while($str = @fgets($this->smtp_conn,515)) {
+      if($this->do_debug >= 4) {
+        echo "SMTP -> get_lines(): \$data was \"$data\"" .
+                 $this->CRLF;
+        echo "SMTP -> get_lines(): \$str is \"$str\"" .
+                 $this->CRLF;
+      }
+      $data .= $str;
+      if($this->do_debug >= 4) {
+        echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF;
+      }
+      # if the 4th character is a space then we are done reading
+      # so just break the loop
+      if(substr($str,3,1) == " ") { break; }
     }
+    return $data;
+  }
 
 }
 
diff -aruN --binary 11/libraries/phpxmlrpc/xmlrpcs.php 12/libraries/phpxmlrpc/xmlrpcs.php
--- 11/libraries/phpxmlrpc/xmlrpcs.php	2008-07-07 00:39:20.000000000 +0200
+++ 12/libraries/phpxmlrpc/xmlrpcs.php	2009-06-30 22:01:32.000000000 +0200
@@ -35,6 +35,9 @@
 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 // OF THE POSSIBILITY OF SUCH DAMAGE.
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 	// XML RPC Server class
 	// requires: xmlrpc.inc
 
diff -aruN --binary 11/LICENSES.php 12/LICENSES.php
--- 11/LICENSES.php	2009-03-28 02:43:38.000000000 +0100
+++ 12/LICENSES.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: LICENSES.php 11416 2009-01-17 09:55:02Z willebil $
+ * @version		$Id: LICENSES.php 12356 2009-06-24 18:20:14Z ian $
  * @package		Joomla
  * @copyright	Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
  * @license		GNU/GPL, see LICENSE.php
@@ -22,7 +22,6 @@
  * BSD License
  * GNU Lesser General Public License (GNU LGPL) version 2.1
  * MIT License
- * PHP License version 3.0
 
 
 BSD License:
@@ -540,60 +539,3 @@
 THE SOFTWARE.
 ------------------------------------------------------------------
 
-
-PHP License:
----------------------
-The PHP License, version 3.0
-Copyright (c) 1999 - 2006 The PHP Group. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, is permitted provided that the following conditions
-are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in
-     the documentation and/or other materials provided with the
-     distribution.
-
-  3. The name "PHP" must not be used to endorse or promote products
-     derived from this software without prior written permission. For
-     written permission, please contact group@php.net.
-
-  4. Products derived from this software may not be called "PHP", nor
-     may "PHP" appear in their name, without prior written permission
-     from group@php.net.  You may indicate that your software works in
-     conjunction with PHP by saying "Foo for PHP" instead of calling
-     it "PHP Foo" or "phpfoo"
-
-  5. The PHP Group may publish revised and/or new versions of the
-     license from time to time. Each version will be given a
-     distinguishing version number.
-     Once covered code has been published under a particular version
-     of the license, you may always continue to use it under the terms
-     of that version. You may also choose to use such covered code
-     under the terms of any subsequent version of the license
-     published by the PHP Group. No one other than the PHP Group has
-     the right to modify the terms applicable to covered code created
-     under this License.
-
-  6. Redistributions of any form whatsoever must retain the following
-     acknowledgment:
-     "This product includes PHP, freely available from
-     <http://www.php.net/>".
-
-THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
-ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE PHP
-DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/modules/mod_feed/mod_feed.xml 12/modules/mod_feed/mod_feed.xml
--- 11/modules/mod_feed/mod_feed.xml	2009-01-10 04:58:08.000000000 +0100
+++ 12/modules/mod_feed/mod_feed.xml	2009-06-30 22:01:32.000000000 +0200
@@ -44,6 +44,6 @@
 			<option value="1">Use global</option>
 			<option value="0">No caching</option>
 		</param>
-		<param name="cache_time" type="text" default="15" label="Cache Time" description="The time in seconds before the module is re-cached." />
+		<param name="cache_time" type="text" default="15" label="Cache Time" description="The time in minutes before the module is re-cached." />
 	</params>
 </install>
diff -aruN --binary 11/plugins/content/pagebreak.php 12/plugins/content/pagebreak.php
--- 11/plugins/content/pagebreak.php	2009-03-28 02:44:02.000000000 +0100
+++ 12/plugins/content/pagebreak.php	2009-06-30 22:01:32.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: pagebreak.php 11662 2009-03-08 20:25:57Z willebil $
+* @version		$Id: pagebreak.php 12228 2009-06-21 02:01:44Z ian $
 * @package		Joomla
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
@@ -95,7 +95,9 @@
 
 	// count the number of pages
 	$n = count( $text );
-
+	
+	$row->pagebreaktitle = $row->title;
+	
 	// we have found at least one plugin, therefore at least 2 pages
 	if ($n > 1)
 	{
@@ -114,7 +116,10 @@
 					$attrs = JUtility::parseAttributes($matches[$page-1][0]);
 
 					if ( @$attrs['title'] ) {
-						$row->page_title = $attrs['title'];
+						$row->title = $row->title.' - '.$attrs['title'];
+					} else {
+						$thispage = $page + 1;
+						$row->title = $row->title.' - '.JText::_( 'Page' ).' '.$thispage;
 					}
 				}
 			}
@@ -165,7 +170,7 @@
 function plgContentCreateTOC( &$row, &$matches, &$page )
 {
 
-	$heading = $row->title;
+	if (isset($row->pagebreaktitle)) {$heading = $row->pagebreaktitle;} else {$heading = $row->title;}
 	$limitstart = JRequest::getInt('limitstart', 0);
 	$showall = JRequest::getInt('showall', 0);
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/langs/ca.js 12/plugins/editors/tinymce/jscripts/tiny_mce/langs/ca.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/langs/ca.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/langs/ca.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,154 @@
+tinyMCE.addI18n({ca:{
+common:{
+edit_confirm:"Vols utilitzar el mode visible (WYSIWYG) per a aquesta \u00E0rea de text?",
+apply:"Aplica",
+insert:"Insereix",
+update:"Actualitza",
+cancel:"Cancel\u00B7la",
+close:"Tanca",
+browse:"Explora",
+class_name:"Classe",
+not_set:"-- Sense establir --",
+clipboard_msg:"Copia/Retalla/Enganxa no est\u00E0 disponible en Mozilla/Firefox.\nVols m\u00E9s informaci\u00F3 sobre aquest tema?",
+clipboard_no_support:"Actualment no est\u00E0 suportat pel teu navegador, utilitza les dreceres de teclat en lloc seu.",
+popup_blocked:"Ho sentim, per\u00F2 ens hem adonat que el teu bloquejador de finestres emergents ha desactivat una finestra que proporciona funcionalitat a l'aplicaci\u00F3. Haur\u00E0s de desactivar el blocatge de finestres emergents en aquest lloc per tal d'utilitzar plenament aquesta eina.",
+invalid_data:"Error: Has introdu\u00EFt valors incorrectes, te'ls marquem en vermell.",
+more_colors:"M\u00E9s colors"
+},
+contextmenu:{
+align:"Alineaci\u00F3",
+left:"Esquerra",
+center:"Centrat",
+right:"Dreta",
+full:"Justificat"
+},
+insertdatetime:{
+date_fmt:"%d-%m-%Y",
+time_fmt:"%H:%M:%S",
+insertdate_desc:"Insereix la data",
+inserttime_desc:"Insereix l'hora",
+months_long:"Gener,Febrer,Mar\u00E7,Abril,Maig,Juny,Juliol,Agost,Setembre,Octubre,Novembre,Desembre",
+months_short:"Gen,Feb,Mar,Abr,Mai,Jun,Jul,Ago,Set,Oct,Nov,Des",
+day_long:"Diumenge,Dilluns,Dimarts,Dimecres,Dijous,Divendres,Dissabte,Diumenge",
+day_short:"Dmg,Dll,Dmt,Dmc,Djs,Dvs,Dss,Dmg"
+},
+print:{
+print_desc:"Imprimeix"
+},
+preview:{
+preview_desc:"Vista pr\u00E8via"
+},
+directionality:{
+ltr_desc:"Direcci\u00F3 d'esquerra a dreta",
+rtl_desc:"Direcci\u00F3 de dreta a esquerra"
+},
+layer:{
+insertlayer_desc:"Insereix capa nova",
+forward_desc:"Despla\u00E7a endavant",
+backward_desc:"Despla\u00E7a endarrere",
+absolute_desc:"Canvia el posicionament absolut",
+content:"Nova capa..."
+},
+save:{
+save_desc:"Desa",
+cancel_desc:"Cancel\u00B7la tots els canvis"
+},
+nonbreaking:{
+nonbreaking_desc:"Insereix espai no separable"
+},
+iespell:{
+iespell_desc:"Comprovaci\u00F3 ortogr\u00E0fica",
+download:"No s'ha detectat ieSpell. Vols instal\u00B7lar-lo ara?"
+},
+advhr:{
+advhr_desc:"Regle horitzontal"
+},
+emotions:{
+emotions_desc:"Emoticones"
+},
+searchreplace:{
+search_desc:"Busca",
+replace_desc:"Busca/Substitueix"
+},
+advimage:{
+image_desc:"Insereix/edita imatge"
+},
+advlink:{
+link_desc:"Insereix/edita enlla\u00E7"
+},
+xhtmlxtras:{
+cite_desc:"Citaci\u00F3",
+abbr_desc:"Abreujament",
+acronym_desc:"Acr\u00F2nim",
+del_desc:"Supressi\u00F3",
+ins_desc:"Inserci\u00F3",
+attribs_desc:"Insereix/Edita Atributs"
+},
+style:{
+desc:"Edita l'Estil CSS"
+},
+paste:{
+paste_text_desc:"Enganxa com a Text Planer",
+paste_word_desc:"Enganxa des de Word",
+selectall_desc:"Selecciona-ho Tot"
+},
+paste_dlg:{
+text_title:"Utilitza CTRL+V al teclat per enganxar el text a la finestra.",
+text_linebreaks:"Mantingues els salts de l\u00EDnia",
+word_title:"Utilitza CTRL+V al teclat per enganxar el text a la finestra."
+},
+table:{
+desc:"Insereix una nova taula",
+row_before_desc:"Insereix fila abans",
+row_after_desc:"Insereix fila despr\u00E9s",
+delete_row_desc:"Suprimeix fila",
+col_before_desc:"Insereix columna abans",
+col_after_desc:"Insereix columna despr\u00E9s",
+delete_col_desc:"Elimina columna",
+split_cells_desc:"Parteix les cel\u00B7les refoses de la taula",
+merge_cells_desc:"Refon les cel\u00B7les de la taula",
+row_desc:"Propietats de la fila de la taula",
+cell_desc:"Propietats de la cel\u00B7la de la taula",
+props_desc:"Propietats de la taula",
+paste_row_before_desc:"Enganxa la fila de la taula abans",
+paste_row_after_desc:"Enganxa la fila de la taula despr\u00E9s",
+cut_row_desc:"Retalla la fila de la taula",
+copy_row_desc:"Copia la fila de la taula",
+del:"Suprimeix la taula",
+row:"Fila",
+col:"Columna",
+cell:"Cel\u00B7la"
+},
+autosave:{
+unload_msg:"Els canvis que has fet es perdran si surts d'aquesta p\u00E0gina."
+},
+fullscreen:{
+desc:"Mode de pantalla completa"
+},
+media:{
+desc:"Insereix / edita mitj\u00E0 encastat",
+edit:"Edita mitj\u00E0 encastat"
+},
+fullpage:{
+desc:"Propietats del document"
+},
+template:{
+desc:"Insereix contingut predefinit de plantilla"
+},
+visualchars:{
+desc:"Car\u00E0cters de control visual des/activats."
+},
+spellchecker:{
+desc:"Des/activa el corrector ortogr\u00E0fic",
+menu:"Configuraci\u00F3 del corrector",
+ignore_word:"Ignora",
+ignore_words:"Ignora-les totes",
+langs:"Idiomes",
+wait:"Espera, si et plau...",
+sug:"Suggeriments",
+no_sug:"No hi ha cap suggeriment",
+no_mpell:"No s'ha trobat cap incorrecci\u00F3."
+},
+pagebreak:{
+desc:"Insereix salt de p\u00E0gina."
+}}});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/langs/en.js 12/plugins/editors/tinymce/jscripts/tiny_mce/langs/en.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/langs/en.js	2008-07-07 00:42:44.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/langs/en.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,41 +1,154 @@
-// UK lang variables
-
-tinyMCE.addToLang('',{
-bold_desc : 'Bold (Ctrl+B)',
-italic_desc : 'Italic (Ctrl+I)',
-underline_desc : 'Underline (Ctrl+U)',
-striketrough_desc : 'Strikethrough',
-justifyleft_desc : 'Align left',
-justifycenter_desc : 'Align center',
-justifyright_desc : 'Align right',
-justifyfull_desc : 'Align full',
-bullist_desc : 'Unordered list',
-numlist_desc : 'Ordered list',
-outdent_desc : 'Outdent',
-indent_desc : 'Indent',
-undo_desc : 'Undo (Ctrl+Z)',
-redo_desc : 'Redo (Ctrl+Y)',
-link_desc : 'Insert/edit link',
-unlink_desc : 'Unlink',
-image_desc : 'Insert/edit image',
-cleanup_desc : 'Cleanup messy code',
-focus_alert : 'A editor instance must be focused before using this command.',
-edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',
-insert_link_title : 'Insert/edit link',
-insert : 'Insert',
-update : 'Update',
-cancel : 'Cancel',
-insert_link_url : 'Link URL',
-insert_link_target : 'Target',
-insert_link_target_same : 'Open link in the same window',
-insert_link_target_blank : 'Open link in a new window',
-insert_image_title : 'Insert/edit image',
-insert_image_src : 'Image URL',
-insert_image_alt : 'Image description',
-help_desc : 'Help',
-bold_img : "bold.gif",
-italic_img : "italic.gif",
-underline_img : "underline.gif",
-clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
-});
+tinyMCE.addI18n({en:{
+common:{
+edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
+apply:"Apply",
+insert:"Insert",
+update:"Update",
+cancel:"Cancel",
+close:"Close",
+browse:"Browse",
+class_name:"Class",
+not_set:"-- Not set --",
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",
+clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
+popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
+invalid_data:"Error: Invalid values entered, these are marked in red.",
+more_colors:"More colors"
+},
+contextmenu:{
+align:"Alignment",
+left:"Left",
+center:"Center",
+right:"Right",
+full:"Full"
+},
+insertdatetime:{
+date_fmt:"%Y-%m-%d",
+time_fmt:"%H:%M:%S",
+insertdate_desc:"Insert date",
+inserttime_desc:"Insert time",
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
+months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
+},
+print:{
+print_desc:"Print"
+},
+preview:{
+preview_desc:"Preview"
+},
+directionality:{
+ltr_desc:"Direction left to right",
+rtl_desc:"Direction right to left"
+},
+layer:{
+insertlayer_desc:"Insert new layer",
+forward_desc:"Move forward",
+backward_desc:"Move backward",
+absolute_desc:"Toggle absolute positioning",
+content:"New layer..."
+},
+save:{
+save_desc:"Save",
+cancel_desc:"Cancel all changes"
+},
+nonbreaking:{
+nonbreaking_desc:"Insert non-breaking space character"
+},
+iespell:{
+iespell_desc:"Run spell checking",
+download:"ieSpell not detected. Do you want to install it now?"
+},
+advhr:{
+advhr_desc:"Horizontal rule"
+},
+emotions:{
+emotions_desc:"Emotions"
+},
+searchreplace:{
+search_desc:"Find",
+replace_desc:"Find/Replace"
+},
+advimage:{
+image_desc:"Insert/edit image"
+},
+advlink:{
+link_desc:"Insert/edit link"
+},
+xhtmlxtras:{
+cite_desc:"Citation",
+abbr_desc:"Abbreviation",
+acronym_desc:"Acronym",
+del_desc:"Deletion",
+ins_desc:"Insertion",
+attribs_desc:"Insert/Edit Attributes"
+},
+style:{
+desc:"Edit CSS Style"
+},
+paste:{
+paste_text_desc:"Paste as Plain Text",
+paste_word_desc:"Paste from Word",
+selectall_desc:"Select All"
+},
+paste_dlg:{
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."
+},
+table:{
+desc:"Inserts a new table",
+row_before_desc:"Insert row before",
+row_after_desc:"Insert row after",
+delete_row_desc:"Delete row",
+col_before_desc:"Insert column before",
+col_after_desc:"Insert column after",
+delete_col_desc:"Remove column",
+split_cells_desc:"Split merged table cells",
+merge_cells_desc:"Merge table cells",
+row_desc:"Table row properties",
+cell_desc:"Table cell properties",
+props_desc:"Table properties",
+paste_row_before_desc:"Paste table row before",
+paste_row_after_desc:"Paste table row after",
+cut_row_desc:"Cut table row",
+copy_row_desc:"Copy table row",
+del:"Delete table",
+row:"Row",
+col:"Column",
+cell:"Cell"
+},
+autosave:{
+unload_msg:"The changes you made will be lost if you navigate away from this page."
+},
+fullscreen:{
+desc:"Toggle fullscreen mode"
+},
+media:{
+desc:"Insert / edit embedded media",
+edit:"Edit embedded media"
+},
+fullpage:{
+desc:"Document properties"
+},
+template:{
+desc:"Insert predefined template content"
+},
+visualchars:{
+desc:"Visual control characters on/off."
+},
+spellchecker:{
+desc:"Toggle spellchecker",
+menu:"Spellchecker settings",
+ignore_word:"Ignore word",
+ignore_words:"Ignore all",
+langs:"Languages",
+wait:"Please wait...",
+sug:"Suggestions",
+no_sug:"No suggestions",
+no_mpell:"No misspellings found."
+},
+pagebreak:{
+desc:"Insert page break."
+}}});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/langs/es.js	2006-07-14 11:58:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/langs/es.js	2009-06-22 05:25:10.000000000 +0200
@@ -1,51 +1,154 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-
-tinyMCE.addToLang('',{
-bold_desc : 'Negrita (Ctrl+B)',
-italic_desc : 'Cursiva (Ctrl+I)',
-underline_desc : 'Subrayado (Ctrl+U)',
-striketrough_desc : 'Tachado',
-justifyleft_desc : 'Alinear a la izquierda',
-justifycenter_desc : 'Alinear al centro',
-justifyright_desc : 'Alinear a la derecha',
-justifyfull_desc : 'Alinear justificado',
-bullist_desc : 'Lista sin ordenar',
-numlist_desc : 'Lista ordenada',
-outdent_desc : 'Disminuir sangr&iacute;a',
-indent_desc : 'Aumentar sangr&iacute;a',
-undo_desc : 'Deshacer',
-redo_desc : 'Rehacer',
-link_desc : 'Insertar enlace',
-unlink_desc : 'Quitar enlace',
-image_desc : 'Insertar imagen',
-cleanup_desc : 'Limpiar codigo',
-focus_alert : 'Una instanacia del editor debe ser enfocada antes de usar este comando.',
-edit_confirm : '&#191;Quieres usar el modo WYSIWYG (What You See Is What You Get - "lo que ves es lo que obtienes") para esta area de texto?',
-insert_link_title : 'Insertar/editar enlace',
-insert : 'Insertar',
-update : 'Actualizar',
-cancel : 'Cancelar',
-insert_link_url : 'Direcci&oacute;n del enlace',
-insert_link_target : 'Destino',
-insert_link_target_same : 'Abrir enlace en la misma ventana',
-insert_link_target_blank : 'Abrir enlace en una ventana nueva',
-insert_image_title : 'Insertar/editar imagen',
-insert_image_src : 'Direcci&oacute;n de la imagen',
-insert_image_alt : 'Descripci&oacute;n de la imagen',
-help_desc : 'Ayuda',
-bold_img : "bold_es.gif",
-italic_img : "italic_es.gif",
-underline_img : "underline_es.gif",
-clipboard_msg : 'No se pueden utilizar los comandos Copiar / Cortar / Pegar en Mozilla y en Firefox.\r\nUse el teclado Copiar (Ctrl+C) / Cortar (Ctrl+X) / Pegar (Ctrl+V)\r\n&#191;Quieres obtener m&aacute;s informaci&oacute;n?',
-popup_blocked : 'Lo siento, pero tu bloqueador de popups ha desactivado una ventana que ha lanzado la aplicaci&oacute;n. Debes desactivar tu bloqueador de popups para tener toda la funcionalad de la aplicaci&oacute;n.'
-});
+tinyMCE.addI18n({es:{
+common:{
+edit_confirm:" \u00BFDesea utilizar el modo WYSIWYG para esta caja de texto?",
+apply:"Aplicar",
+insert:"Insertar",
+update:"Actualizar",
+cancel:"Cancelar",
+close:"Cerrar",
+browse:"Examinar",
+class_name:"Clase",
+not_set:"-- Ninguno --",
+clipboard_msg:"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\n \u00BFDesea obtener m\u00E1s informaci\u00F3n acerca de este tema?",
+clipboard_no_support:"Su navegador no soporta las funciones de cortapapeles, use los accesos por teclado.",
+popup_blocked:"Lo sentimos, su bloqueo de ventanas emergentes ha deshabilitado una ventana que provee funcionalidades a la aplicaci\u00F3n. Necesita deshabilitar este bloqueo en este sitio para poder utilizar todas las funciones.",
+invalid_data:"Error: Introdujo un valor no v\u00E1lido, est\u00E1n marcados en rojo.",
+more_colors:"M\u00E1s colores"
+},
+contextmenu:{
+align:"Alineaci\u00F3n",
+left:"Izquierda",
+center:"Centrado",
+right:"Derecha",
+full:"Justificado"
+},
+insertdatetime:{
+date_fmt:"%d-%m-%Y",
+time_fmt:"%H:%M:%S",
+insertdate_desc:"Insertar fecha",
+inserttime_desc:"Insertar hora",
+months_long:"Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre",
+months_short:"Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic",
+day_long:"Domingo,Lunes,Martes,Mi\u00E9rcoles,Jueves,Viernes,S\u00E1bado,Domingo",
+day_short:"Dom,Lun,Mar,Mie,Jue,Vie,Sab,Dom"
+},
+print:{
+print_desc:"Imprimir"
+},
+preview:{
+preview_desc:"Vista previa"
+},
+directionality:{
+ltr_desc:"Direcci\u00F3n izquierda a derecha",
+rtl_desc:"Direcci\u00F3n derecha a izquierda"
+},
+layer:{
+insertlayer_desc:"Insertar nueva capa",
+forward_desc:"Avanzar",
+backward_desc:"Retroceder",
+absolute_desc:"Cambiar a posici\u00F3n absoluta",
+content:"Nueva capa..."
+},
+save:{
+save_desc:"Guardar",
+cancel_desc:"Cancelar todos los cambios"
+},
+nonbreaking:{
+nonbreaking_desc:"Insertar caracter de espacio 'non-breaking'"
+},
+iespell:{
+iespell_desc:"Corrector ortogr\u00E1fico",
+download:"No se detect\u00F3 'ieSpell'.  \u00BFDesea instalarlo ahora?"
+},
+advhr:{
+advhr_desc:"Regla horizontal"
+},
+emotions:{
+emotions_desc:"Emoticones"
+},
+searchreplace:{
+search_desc:"Buscar",
+replace_desc:"Buscar/Reemplazar"
+},
+advimage:{
+image_desc:"Insertar/editar imagen"
+},
+advlink:{
+link_desc:"Insertar/editar hiperv\u00EDnculo"
+},
+xhtmlxtras:{
+cite_desc:"Cita",
+abbr_desc:"Abreviatura",
+acronym_desc:"Acr\u00F3nimo",
+del_desc:"Borrado",
+ins_desc:"Inserci\u00F3n",
+attribs_desc:"Insertar/Editar atributos"
+},
+style:{
+desc:"Editar Estilo CSS"
+},
+paste:{
+paste_text_desc:"Pegar como texto plano",
+paste_word_desc:"Pegar desde Word",
+selectall_desc:"Seleccionar todo"
+},
+paste_dlg:{
+text_title:"Use CTRL+V en su teclado para pegar el texto en la ventana.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V en su teclado para pegar el texto en la ventana."
+},
+table:{
+desc:"Inserta una nueva tabla",
+row_before_desc:"Insertar fila (antes)",
+row_after_desc:"Insertar fila (despu\u00E9s)",
+delete_row_desc:"Suprimir fila",
+col_before_desc:"Insertar columna (antes)",
+col_after_desc:"Insertar columna (despu\u00E9s)",
+delete_col_desc:"Suprimir columna",
+split_cells_desc:"Dividir celdas",
+merge_cells_desc:"Vincular celdas",
+row_desc:"Propiedades de la fila",
+cell_desc:"Propiedades de la celda",
+props_desc:"Propiedades de la tabla",
+paste_row_before_desc:"Pegar filas (antes)",
+paste_row_after_desc:"Pegar filas (despu\u00E9s)",
+cut_row_desc:"Cortar fila",
+copy_row_desc:"Copiar fila",
+del:"Eliminar tabla",
+row:"Fila",
+col:"Columna",
+cell:"Celda"
+},
+autosave:{
+unload_msg:"Los cambios realizados se perder\u00E1n si sale de esta p\u00E1gina."
+},
+fullscreen:{
+desc:"Cambiar a modo Pantalla Completa"
+},
+media:{
+desc:"Insertar/editar medio embebido",
+edit:"Editar medio embebido"
+},
+fullpage:{
+desc:"Propiedades del documento"
+},
+template:{
+desc:"Insertar contenido de plantilla predefinida"
+},
+visualchars:{
+desc:"Caracteres de control ON/OFF."
+},
+spellchecker:{
+desc:"Cambiar a corrector ortogr\u00E1fico",
+menu:"Configuraci\u00F3n de corrector ortogr\u00E1fico",
+ignore_word:"Ignorar",
+ignore_words:"Ignorar todo",
+langs:"Idiomas",
+wait:"Espere...",
+sug:"Sugerencias",
+no_sug:"Sin sugerencias",
+no_mpell:"No se encontraron errores."
+},
+pagebreak:{
+desc:"Insertar fin de p\u00E1gina"
+}}});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/license.txt 12/plugins/editors/tinymce/jscripts/tiny_mce/license.txt
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/license.txt	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/license.txt	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css	2008-07-07 00:42:44.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css	2009-06-30 22:01:32.000000000 +0200
@@ -1,23 +1,5 @@
-input.radio {
-	border: 1px none #000000;
-	background-color: transparent;
-	vertical-align: middle;
-}
-
-.panel_wrapper div.current {
-	height: 80px;
-}
-
-#width {
-	width: 50px;
-	vertical-align: middle;
-}
-
-#width2 {
-	width: 50px;
-	vertical-align: middle;
-}
-
-#size {
-	width: 100px;
-}
+input.radio {border:1px none #000; background:transparent; vertical-align:middle;}
+.panel_wrapper div.current {height:80px;}
+#width {width:50px; vertical-align:middle;}
+#width2 {width:50px; vertical-align:middle;}
+#size {width:100px;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('advhr');var TinyMCE_AdvancedHRPlugin={getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"advhr":return tinyMCE.getButtonHTML(cn,'lang_insert_advhr_desc','{$pluginurl}/images/advhr.gif','mceAdvancedHr')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_advhr_delta_width',0);template['height']+=tinyMCE.getLang('lang_advhr_delta_height',0);var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.selectedElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):""}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'})}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'<hr />')}else{tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",size:size,width:width,noshade:noshade,mceDo:'insert'})}}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="HR"){tinyMCE.switchClass(editor_id+'_advhr','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advhr','mceButtonNormal');return true}};tinyMCE.addPlugin("advhr",TinyMCE_AdvancedHRPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,90 +1,54 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('advhr');
-
-var TinyMCE_AdvancedHRPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Advanced HR',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		}
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "advhr":
-				return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr');
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the mceAdvanceHr command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceAdvancedHr":
-				var template = new Array();
-
-				template['file']   = '../../plugins/advhr/rule.htm'; // Relative to theme
-				template['width']  = 250;
-				template['height'] = 160;
-
-				template['width']  += tinyMCE.getLang('lang_advhr_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0);
-
-				var size = "", width = "", noshade = "";
-				if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") {
-					tinyMCE.hrElement = tinyMCE.selectedElement;
-
-					if (tinyMCE.hrElement) {
-						size    = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";
-						width   = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";
-						noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";
-					}
-
-					tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});
-				} else {
-					if (tinyMCE.isMSIE) {
-						tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');
-					} else {
-						tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'});
-					}
-				}
-
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node == null)
-			return;
-
-		do {
-			if (node.nodeName == "HR") {
-				tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected');
-				return true;
-			}
-		} while ((node = node.parentNode));
-
-		tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal');
-
-		return true;
-	}
-};
-
-tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.AdvancedHRPlugin', {
+		init : function(ed, url) {
+			// Register commands
+			ed.addCommand('mceAdvancedHr', function() {
+				ed.windowManager.open({
+					file : url + '/rule.htm',
+					width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),
+					height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			// Register buttons
+			ed.addButton('advhr', {
+				title : 'advhr.advhr_desc',
+				cmd : 'mceAdvancedHr'
+			});
+
+			ed.onNodeChange.add(function(ed, cm, n) {
+				cm.setActive('advhr', n.nodeName == 'HR');
+			});
+
+			ed.onClick.add(function(ed, e) {
+				e = e.target;
+
+				if (e.nodeName === 'HR')
+					ed.selection.select(e);
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Advanced HR',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,43 @@
+var AdvHRDialog = {
+	init : function(ed) {
+		var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;
+
+		w = dom.getAttrib(n, 'width');
+		f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');
+		f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';
+		f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');
+		selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');
+	},
+
+	update : function() {
+		var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';
+
+		h = '<hr';
+
+		if (f.size.value) {
+			h += ' size="' + f.size.value + '"';
+			st += ' height:' + f.size.value + 'px;';
+		}
+
+		if (f.width.value) {
+			h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';
+			st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';
+		}
+
+		if (f.noshade.checked) {
+			h += ' noshade="noshade"';
+			st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';
+		}
+
+		if (ed.settings.inline_styles)
+			h += ' style="' + tinymce.trim(st) + '"';
+
+		h += ' />';
+
+		ed.execCommand("mceInsertContent", false, h);
+		tinyMCEPopup.close();
+	}
+};
+
+tinyMCEPopup.requireLangPack();
+tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,5 @@
+tinyMCE.addI18n('ca.advhr_dlg',{
+width:"Amplada",
+size:"Al\u00E7ada",
+noshade:"Sense ombra"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+tinyMCE.addI18n('en.advhr_dlg',{
+width:"Width",
+size:"Height",
+noshade:"No shadow"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,5 @@
+tinyMCE.addI18n('es.advhr_dlg',{
+width:"Ancho",
+size:"Alto",
+noshade:"Sin sombra"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es.js	2005-10-18 16:47:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
-// Last Updated : October 2005
-// TinyMCE Version : 2.0RC3
-
-tinyMCE.addToLang('',{
-insert_advhr_desc : 'Insertar/Editar Barra Horizontal',
-insert_advhr_width : 'Ancho',
-insert_advhr_size : 'Alto',
-insert_advhr_noshade : 'Sin Sombras'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,17 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_insert_advhr_desc}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/rule.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<title>{#advhr.advhr_desc}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/rule.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
 	<link href="css/advhr.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');">
-<form onsubmit="insertHR();return false;" action="#">
+<body>
+<form onsubmit="AdvHRDialog.update();return false;" action="#">
 	<div class="tabs">
 		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_advhr_desc}</a></span></li>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>
 		</ul>
 	</div>
 
@@ -19,9 +20,9 @@
 		<div id="general_panel" class="panel current">
 			<table border="0" cellpadding="4" cellspacing="0">
                     <tr>
-                        <td><label for="width">{$lang_insert_advhr_width}</label></td>
-                        <td nowrap="nowrap">
-                            <input id="width" name="width" type="text" value="" />
+                        <td><label for="width">{#advhr_dlg.width}</label></td>
+                        <td class="nowrap">
+                            <input id="width" name="width" type="text" value="" class="mceFocus" />
                             <select name="width2" id="width2">
                                 <option value="">px</option>
                                 <option value="%">%</option>
@@ -29,7 +30,7 @@
                         </td>
                     </tr>
                     <tr>
-                        <td><label for="size">{$lang_insert_advhr_size}</label></td>
+                        <td><label for="size">{#advhr_dlg.size}</label></td>
                         <td><select id="size" name="size">
                             <option value="">Normal</option>
                             <option value="1">1</option>
@@ -40,7 +41,7 @@
                         </select></td>
                     </tr>
                     <tr>
-                        <td><label for="noshade">{$lang_insert_advhr_noshade}</label></td>
+                        <td><label for="noshade">{#advhr_dlg.noshade}</label></td>
                         <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
                     </tr>
             </table>
@@ -49,11 +50,11 @@
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertHR();" />
+			<input type="submit" id="insert" name="insert" value="{#insert}" />
 		</div>
 
 		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 		</div>
 	</div>
 </form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css	2009-06-30 22:01:32.000000000 +0200
@@ -1,66 +1,13 @@
-/* CSS file for advimage plugin popup */
-
-.mceImageList {
-	width: 280px;
-}
-
-.mceActionPanel {
-	margin-top: 7px;
-}
-
-.alignPreview {
-	border: 1px solid black;
-	width: 140px;
-	height: 140px;
-	overflow: hidden;
-	padding: 5px;
-}
-
-.checkbox {
-	border: 0;
-}
-
-.panel_wrapper div.current {
-	height: 305px;
-}
-
-#prev {
-	margin: 0;
-	border: 1px
-	solid black;
-	width: 99%;
-	height: 150px;
-	overflow: auto;
-}
-
-#align, #classlist {
-	width: 150px;
-}
-
-#width, #height {
-	vertical-align: middle;
-	width: 50px;
-	text-align: center;
-}
-
-#vspace, #hspace, #border {
-	vertical-align: middle;
-	width: 30px;
-	text-align: center;
-}
-
-#classlist {
-	width: 180px;
-}
-
-input {
-	width: 280px;
-}
-
-#constrain, #onmousemovecheck {
-	width: auto;
-}
-
-#id, #dir, #lang, #usemap, #longdesc {
-	width: 200px;
-}
+#src_list, #over_list, #out_list {width:280px;}
+.mceActionPanel {margin-top:7px;}
+.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}
+.checkbox {border:0;}
+.panel_wrapper div.current {height:305px;}
+#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
+#align, #classlist {width:150px;}
+#width, #height {vertical-align:middle; width:50px; text-align:center;}
+#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}
+#class_list {width:180px;}
+input {width: 280px;}
+#constrain, #onmousemovecheck {width:auto;}
+#id, #dir, #lang, #usemap, #longdesc {width:200px;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('advimage');var TinyMCE_AdvancedImagePlugin={getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"image":return tinyMCE.getButtonHTML(cn,'lang_image_desc','{$themeurl}/images/image.gif','mceAdvImage')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvImage":var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=480;template['height']=380;template['width']+=tinyMCE.getLang('lang_advimage_delta_width',0);template['height']+=tinyMCE.getLang('lang_advimage_delta_height',0);var inst=tinyMCE.getInstanceById(editor_id);var elm=inst.getFocusElement();if(elm!=null&&tinyMCE.getAttrib(elm,'class').indexOf('mceItem')!=-1)return true;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":var imgs=content.getElementsByTagName("img"),src,i;for(i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_advimage','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advimage','mceButtonNormal');return true},_getImageSrc:function(s){var sr,p=-1;if(!s)return"";if((p=s.indexOf('this.src='))!=-1){sr=s.substring(p+10);sr=sr.substring(0,sr.indexOf('\''));return sr}return""}};tinyMCE.addPlugin("advimage",TinyMCE_AdvancedImagePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,148 +1,47 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('advimage');
-
-var TinyMCE_AdvancedImagePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Advanced image',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "image":
-				return tinyMCE.getButtonHTML(cn, 'lang_image_desc', '{$themeurl}/images/image.gif', 'mceAdvImage');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		switch (command) {
-			case "mceAdvImage":
-				var template = new Array();
-
-				template['file']   = '../../plugins/advimage/image.htm';
-				template['width']  = 480;
-				template['height'] = 380;
-
-				// Language specific width and height addons
-				template['width']  += tinyMCE.getLang('lang_advimage_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0);
-
-				var inst = tinyMCE.getInstanceById(editor_id);
-				var elm = inst.getFocusElement();
-
-				if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1)
-					return true;
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
-
-				return true;
-		}
-
-		return false;
-	},
-
-	cleanup : function(type, content) {
-		switch (type) {
-			case "insert_to_editor_dom":
-				var imgs = content.getElementsByTagName("img"), src, i;
-				for (i=0; i<imgs.length; i++) {
-					var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));
-					var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));
-
-					if ((src = this._getImageSrc(onmouseover)) != "") {
-						if (tinyMCE.getParam('convert_urls'))
-							src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
-
-						imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");
-					}
-
-					if ((src = this._getImageSrc(onmouseout)) != "") {
-						if (tinyMCE.getParam('convert_urls'))
-							src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
-
-						imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");
-					}
-				}
-				break;
-
-			case "get_from_editor_dom":
-				var imgs = content.getElementsByTagName("img");
-				for (var i=0; i<imgs.length; i++) {
-					var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));
-					var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));
-
-					if ((src = this._getImageSrc(onmouseover)) != "") {
-						if (tinyMCE.getParam('convert_urls'))
-							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
-
-						imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");
-					}
-
-					if ((src = this._getImageSrc(onmouseout)) != "") {
-						if (tinyMCE.getParam('convert_urls'))
-							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
-
-						imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");
-					}
-				}
-				break;
-		}
-
-		return content;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node == null)
-			return;
-
-		do {
-			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
-				tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonSelected');
-				return true;
-			}
-		} while ((node = node.parentNode));
-
-		tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonNormal');
-
-		return true;
-	},
-
-	/**
-	 * Returns the image src from a scripted mouse over image str.
-	 *
-	 * @param {string} s String to get real src from.
-	 * @return Image src from a scripted mouse over image str.
-	 * @type string
-	 */
-	_getImageSrc : function(s) {
-		var sr, p = -1;
-
-		if (!s)
-			return "";
-
-		if ((p = s.indexOf('this.src=')) != -1) {
-			sr = s.substring(p + 10);
-			sr = sr.substring(0, sr.indexOf('\''));
-
-			return sr;
-		}
-
-		return "";
-	}
-};
-
-tinyMCE.addPlugin("advimage", TinyMCE_AdvancedImagePlugin);
+/**
+ * $Id: editor_plugin_src.js 677 2008-03-07 13:52:41Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.AdvancedImagePlugin', {
+		init : function(ed, url) {
+			// Register commands
+			ed.addCommand('mceAdvImage', function() {
+				// Internal image object like a flash placeholder
+				if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+					return;
+
+				ed.windowManager.open({
+					file : url + '/image.htm',
+					width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),
+					height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			// Register buttons
+			ed.addButton('image', {
+				title : 'advimage.image_desc',
+				cmd : 'mceAdvImage'
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Advanced image',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm	2006-11-07 04:01:10.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,83 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_insert_image_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
+	<title>{#advimage_dlg.dialog_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="../../utils/validate.js"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script type="text/javascript" src="js/image.js"></script>
 	<link href="css/advimage.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body id="advimage" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-    <form onsubmit="insertAction();return false;" action="#"> 
+<body id="advimage" style="display: none">
+    <form onsubmit="ImageDialog.insert();return false;" action="#"> 
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advimage_tab_general}</a></span></li>
-				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_advimage_tab_appearance}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advimage_tab_advanced}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>
+				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
 				<fieldset>
-						<legend>{$lang_advimage_general}</legend>
+						<legend>{#advimage_dlg.general}</legend>
 
 						<table class="properties">
 							<tr>
-								<td class="column1"><label id="srclabel" for="src">{$lang_insert_image_src}</label></td>
+								<td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>
 								<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
 									<tr> 
-									  <td><input name="src" type="text" id="src" value="" onchange="showPreviewImage(this.value);" /></td> 
+									  <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" /></td> 
 									  <td id="srcbrowsercontainer">&nbsp;</td>
 									</tr>
 								  </table></td>
 							</tr>
-							<tr id="imagelistsrcrow">
-								<td class="column1"><label for="imagelistsrc">{$lang_image_list}</label></td>
-								<td colspan="2" id="imagelistsrccontainer">&nbsp;</td>
+							<tr>
+								<td><label for="src_list">{#advimage_dlg.image_list}</label></td>
+								<td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"><option value=""></option></select></td>
 							</tr>
 							<tr> 
-								<td class="column1"><label id="altlabel" for="alt">{$lang_insert_image_alt}</label></td> 
+								<td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td> 
 								<td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> 
 							</tr> 
 							<tr> 
-								<td class="column1"><label id="titlelabel" for="title">{$lang_advimage_title}</label></td> 
+								<td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td> 
 								<td colspan="2"><input id="title" name="title" type="text" value="" /></td> 
 							</tr>
 						</table>
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_advimage_preview}</legend>
+					<legend>{#advimage_dlg.preview}</legend>
 					<div id="prev"></div>
 				</fieldset>
 			</div>
 
 			<div id="appearance_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_advimage_tab_appearance}</legend>
+					<legend>{#advimage_dlg.tab_appearance}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr> 
-							<td class="column1"><label id="alignlabel" for="align">{$lang_insert_image_align}</label></td> 
-							<td><select id="align" name="align" onchange="changeAppearance();"> 
-									<option value="">{$lang_insert_image_align_default}</option> 
-									<option value="baseline">{$lang_insert_image_align_baseline}</option> 
-									<option value="top">{$lang_insert_image_align_top}</option> 
-									<option value="middle">{$lang_insert_image_align_middle}</option> 
-									<option value="bottom">{$lang_insert_image_align_bottom}</option> 
-									<option value="texttop">{$lang_insert_image_align_texttop}</option> 
-									<option value="absmiddle">{$lang_insert_image_align_absmiddle}</option> 
-									<option value="absbottom">{$lang_insert_image_align_absbottom}</option> 
-									<option value="left">{$lang_insert_image_align_left}</option> 
-									<option value="right">{$lang_insert_image_align_right}</option> 
+							<td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td> 
+							<td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();"> 
+									<option value="">{#not_set}</option> 
+									<option value="baseline">{#advimage_dlg.align_baseline}</option>
+									<option value="top">{#advimage_dlg.align_top}</option>
+									<option value="middle">{#advimage_dlg.align_middle}</option>
+									<option value="bottom">{#advimage_dlg.align_bottom}</option>
+									<option value="text-top">{#advimage_dlg.align_texttop}</option>
+									<option value="text-bottom">{#advimage_dlg.align_textbottom}</option>
+									<option value="left">{#advimage_dlg.align_left}</option>
+									<option value="right">{#advimage_dlg.align_right}</option>
 								</select> 
 							</td>
 							<td rowspan="6" valign="top">
 								<div class="alignPreview">
-									<img id="alignSampleImg" src="images/sample.gif" alt="{$lang_advimage_example_img}" />
+									<img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />
 									Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
 									nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
 									edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
@@ -87,10 +87,10 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="widthlabel" for="width">{$lang_insert_image_dimensions}</label></td>
-							<td nowrap="nowrap">
-								<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="changeHeight();" /> x 
-								<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="changeWidth();" /> px
+							<td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>
+							<td class="nowrap">
+								<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" /> x 
+								<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" /> px
 							</td>
 						</tr>
 
@@ -99,43 +99,39 @@
 							<td><table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
-										<td><label id="constrainlabel" for="constrain">{$lang_advimage_constrain_proportions}</label></td>
+										<td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>
 									</tr>
 								</table></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="vspacelabel" for="vspace">{$lang_insert_image_vspace}</label></td> 
-							<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" />
+							<td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td> 
+							<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />
 							</td>
 						</tr>
 
 						<tr> 
-							<td class="column1"><label id="hspacelabel" for="hspace">{$lang_insert_image_hspace}</label></td> 
-							<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td> 
+							<td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td> 
+							<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="borderlabel" for="border">{$lang_insert_image_border}</label></td> 
-							<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td> 
+							<td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td> 
+							<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td> 
 						</tr>
 
 						<tr>
-							<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
-							<td colspan="2">
-								 <select id="classlist" name="classlist">
-									<option value="" selected>{$lang_not_set}</option>
-								 </select>
-							</td>
+							<td><label for="class_list">{#class_name}</label></td>
+							<td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="stylelabel" for="style">{$lang_advimage_style}</label></td> 
-							<td colspan="2"><input id="style" name="style" type="text" value="" onchange="styleUpdated();" /></td> 
+							<td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td> 
+							<td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td> 
 						</tr>
 
 						<!-- <tr>
-							<td class="column1"><label id="classeslabel" for="classes">{$lang_advimage_classes}</label></td> 
+							<td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td> 
 							<td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> 
 						</tr> -->
 					</table>
@@ -144,14 +140,14 @@
 
 			<div id="advanced_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_advimage_swap_image}</legend>
+					<legend>{#advimage_dlg.swap_image}</legend>
 
-					<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="changeMouseMove();" />
-					<label id="onmousemovechecklabel" for="onmousemovecheck">{$lang_advimage_alt_image}</label>
+					<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" />
+					<label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>
 
 					<table border="0" cellpadding="4" cellspacing="0" width="100%">
 							<tr>
-								<td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{$lang_advimage_mouseover}</label></td> 
+								<td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td> 
 								<td><table border="0" cellspacing="0" cellpadding="0"> 
 									<tr> 
 									  <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> 
@@ -159,12 +155,12 @@
 									</tr>
 								  </table></td>
 							</tr>
-							<tr id="imagelistoverrow">
-								<td class="column1"><label for="imagelistover">{$lang_image_list}</label></td>
-								<td id="imagelistovercontainer">&nbsp;</td>
+							<tr>
+								<td><label for="over_list">{#advimage_dlg.image_list}</label></td>
+								<td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
 							</tr>
 							<tr> 
-								<td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{$lang_advimage_mouseout}</label></td> 
+								<td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td> 
 								<td class="column2"><table border="0" cellspacing="0" cellpadding="0"> 
 									<tr> 
 									  <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> 
@@ -172,49 +168,49 @@
 									</tr> 
 								  </table></td> 
 							</tr>
-							<tr id="imagelistoutrow">
-								<td class="column1"><label for="imagelistout">{$lang_image_list}</label></td>
-								<td id="imagelistoutcontainer">&nbsp;</td>
+							<tr>
+								<td><label for="out_list">{#advimage_dlg.image_list}</label></td>
+								<td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
 							</tr>
 					</table>
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_advimage_misc}</legend>
+					<legend>{#advimage_dlg.misc}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label id="idlabel" for="id">{$lang_advimage_id}</label></td> 
+							<td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td> 
 							<td><input id="id" name="id" type="text" value="" /></td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="dirlabel" for="dir">{$lang_advimage_langdir}</label></td> 
+							<td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td> 
 							<td>
-								<select id="dir" name="dir" onchange="changeAppearance();"> 
-										<option value="">{$lang_not_set}</option> 
-										<option value="ltr">{$lang_advimage_ltr}</option> 
-										<option value="rtl">{$lang_advimage_rtl}</option> 
+								<select id="dir" name="dir" onchange="ImageDialog.changeAppearance();"> 
+										<option value="">{#not_set}</option> 
+										<option value="ltr">{#advimage_dlg.ltr}</option> 
+										<option value="rtl">{#advimage_dlg.rtl}</option> 
 								</select>
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="langlabel" for="lang">{$lang_advimage_langcode}</label></td> 
+							<td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td> 
 							<td>
 								<input id="lang" name="lang" type="text" value="" />
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="usemaplabel" for="usemap">{$lang_advimage_image_map}</label></td> 
+							<td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td> 
 							<td>
 								<input id="usemap" name="usemap" type="text" value="" />
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="longdesclabel" for="longdesc">{$lang_advimage_long_desc}</label></td>
+							<td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>
 							<td><table border="0" cellspacing="0" cellpadding="0">
 									<tr>
 									  <td><input id="longdesc" name="longdesc" type="text" value="" /></td>
@@ -229,11 +225,11 @@
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
     </form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,7 @@
+GIF89a- -   ~~~}}}|||zzzxxxwwxvvvtttrrrpppmmmiiieeebbbYYY      !  ,    - -  %JPJS2GPINC6#>[b[cHU[V]O;"HVLLNQH8#ń00,,8QL88;;GC7ԃYYSS;LPQQaaXhl8TYC~!Doٸ9,A<9(Sx%5b¸QǐfXb,mXb'X(Ղ	5 qƣEX]E(3,C49"<.eIێ">n wUI($ܹ=a#I4Ӕ5bM$@0kZK4aÚ'D~1AA
+IDɐ@}5Ք-"d	Gn"umaÅτiG^JZGk'[H#CGȚ2OiFΓ	DxjPA`	.U-0Ca G=hцmE$AC.x u$}E șkD TIo7(euV`
+/`bqƓOv!DO (rQB
+1pQcdhaQ!vqp	*B	!leFiDn1,қ]TQ 
+#|a&qah d[  vE8qKn/``o葇hU(3r,nP@w1d GdtawɱVAa8 	c7ЀEjX!BA]LL!ee!-hG@	tO	&А%0DLцdyqF#İOȀ@ +@f&frj D TW]&f`S[m@lp}YaAg@o.ׁuvA1mRMuBK=4Qs j>Pቛm@Nxp,<r
+'̗G@z"H'/PDh\7 ?X<vXa0
+n1T8{C&&C6ATAlpCB9xȃddIPgH'`!/Bo02a|f0 HL@aP:d2".P³2qI  ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,443 @@
+var ImageDialog = {
+	preInit : function() {
+		var url;
+
+		tinyMCEPopup.requireLangPack();
+
+		if (url = tinyMCEPopup.getParam("external_image_list_url"))
+			document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+	},
+
+	init : function(ed) {
+		var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode();
+
+		tinyMCEPopup.resizeToInnerSize();
+		this.fillClassList('class_list');
+		this.fillFileList('src_list', 'tinyMCEImageList');
+		this.fillFileList('over_list', 'tinyMCEImageList');
+		this.fillFileList('out_list', 'tinyMCEImageList');
+		TinyMCE_EditableSelects.init();
+
+		if (n.nodeName == 'IMG') {
+			nl.src.value = dom.getAttrib(n, 'src');
+			nl.width.value = dom.getAttrib(n, 'width');
+			nl.height.value = dom.getAttrib(n, 'height');
+			nl.alt.value = dom.getAttrib(n, 'alt');
+			nl.title.value = dom.getAttrib(n, 'title');
+			nl.vspace.value = this.getAttrib(n, 'vspace');
+			nl.hspace.value = this.getAttrib(n, 'hspace');
+			nl.border.value = this.getAttrib(n, 'border');
+			selectByValue(f, 'align', this.getAttrib(n, 'align'));
+			selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);
+			nl.style.value = dom.getAttrib(n, 'style');
+			nl.id.value = dom.getAttrib(n, 'id');
+			nl.dir.value = dom.getAttrib(n, 'dir');
+			nl.lang.value = dom.getAttrib(n, 'lang');
+			nl.usemap.value = dom.getAttrib(n, 'usemap');
+			nl.longdesc.value = dom.getAttrib(n, 'longdesc');
+			nl.insert.value = ed.getLang('update');
+
+			if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))
+				nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
+
+			if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))
+				nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
+
+			if (ed.settings.inline_styles) {
+				// Move attribs to styles
+				if (dom.getAttrib(n, 'align'))
+					this.updateStyle('align');
+
+				if (dom.getAttrib(n, 'hspace'))
+					this.updateStyle('hspace');
+
+				if (dom.getAttrib(n, 'border'))
+					this.updateStyle('border');
+
+				if (dom.getAttrib(n, 'vspace'))
+					this.updateStyle('vspace');
+			}
+		}
+
+		// Setup browse button
+		document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+		if (isVisible('srcbrowser'))
+			document.getElementById('src').style.width = '260px';
+
+		// Setup browse button
+		document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');
+		if (isVisible('overbrowser'))
+			document.getElementById('onmouseoversrc').style.width = '260px';
+
+		// Setup browse button
+		document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');
+		if (isVisible('outbrowser'))
+			document.getElementById('onmouseoutsrc').style.width = '260px';
+
+		// If option enabled default contrain proportions to checked
+		if (ed.getParam("advimage_constrain_proportions", true))
+			f.constrain.checked = true;
+
+		// Check swap image if valid data
+		if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)
+			this.setSwapImage(true);
+		else
+			this.setSwapImage(false);
+
+		this.changeAppearance();
+		this.showPreviewImage(nl.src.value, 1);
+	},
+
+	insert : function(file, title) {
+		var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];
+
+		if (f.src.value === '') {
+			if (ed.selection.getNode().nodeName == 'IMG') {
+				ed.dom.remove(ed.selection.getNode());
+				ed.execCommand('mceRepaint');
+			}
+
+			tinyMCEPopup.close();
+			return;
+		}
+
+		if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {
+			if (!f.alt.value) {
+				tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {
+					if (s)
+						t.insertAndClose();
+				});
+
+				return;
+			}
+		}
+
+		t.insertAndClose();
+	},
+
+	insertAndClose : function() {
+		var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;
+
+		tinyMCEPopup.restoreSelection();
+
+		// Fixes crash in Safari
+		if (tinymce.isWebKit)
+			ed.getWin().focus();
+
+		if (!ed.settings.inline_styles) {
+			args = {
+				vspace : nl.vspace.value,
+				hspace : nl.hspace.value,
+				border : nl.border.value,
+				align : getSelectValue(f, 'align')
+			};
+		} else {
+			// Remove deprecated values
+			args = {
+				vspace : '',
+				hspace : '',
+				border : '',
+				align : ''
+			};
+		}
+
+		tinymce.extend(args, {
+			src : nl.src.value,
+			width : nl.width.value,
+			height : nl.height.value,
+			alt : nl.alt.value,
+			title : nl.title.value,
+			'class' : getSelectValue(f, 'class_list'),
+			style : nl.style.value,
+			id : nl.id.value,
+			dir : nl.dir.value,
+			lang : nl.lang.value,
+			usemap : nl.usemap.value,
+			longdesc : nl.longdesc.value
+		});
+
+		args.onmouseover = args.onmouseout = '';
+
+		if (f.onmousemovecheck.checked) {
+			if (nl.onmouseoversrc.value)
+				args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";
+
+			if (nl.onmouseoutsrc.value)
+				args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";
+		}
+
+		el = ed.selection.getNode();
+
+		if (el && el.nodeName == 'IMG') {
+			ed.dom.setAttribs(el, args);
+		} else {
+			ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
+			ed.dom.setAttribs('__mce_tmp', args);
+			ed.dom.setAttrib('__mce_tmp', 'id', '');
+			ed.undoManager.add();
+		}
+
+		tinyMCEPopup.close();
+	},
+
+	getAttrib : function(e, at) {
+		var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
+
+		if (ed.settings.inline_styles) {
+			switch (at) {
+				case 'align':
+					if (v = dom.getStyle(e, 'float'))
+						return v;
+
+					if (v = dom.getStyle(e, 'vertical-align'))
+						return v;
+
+					break;
+
+				case 'hspace':
+					v = dom.getStyle(e, 'margin-left')
+					v2 = dom.getStyle(e, 'margin-right');
+
+					if (v && v == v2)
+						return parseInt(v.replace(/[^0-9]/g, ''));
+
+					break;
+
+				case 'vspace':
+					v = dom.getStyle(e, 'margin-top')
+					v2 = dom.getStyle(e, 'margin-bottom');
+					if (v && v == v2)
+						return parseInt(v.replace(/[^0-9]/g, ''));
+
+					break;
+
+				case 'border':
+					v = 0;
+
+					tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
+						sv = dom.getStyle(e, 'border-' + sv + '-width');
+
+						// False or not the same as prev
+						if (!sv || (sv != v && v !== 0)) {
+							v = 0;
+							return false;
+						}
+
+						if (sv)
+							v = sv;
+					});
+
+					if (v)
+						return parseInt(v.replace(/[^0-9]/g, ''));
+
+					break;
+			}
+		}
+
+		if (v = dom.getAttrib(e, at))
+			return v;
+
+		return '';
+	},
+
+	setSwapImage : function(st) {
+		var f = document.forms[0];
+
+		f.onmousemovecheck.checked = st;
+		setBrowserDisabled('overbrowser', !st);
+		setBrowserDisabled('outbrowser', !st);
+
+		if (f.over_list)
+			f.over_list.disabled = !st;
+
+		if (f.out_list)
+			f.out_list.disabled = !st;
+
+		f.onmouseoversrc.disabled = !st;
+		f.onmouseoutsrc.disabled  = !st;
+	},
+
+	fillClassList : function(id) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
+			cl = [];
+
+			tinymce.each(v.split(';'), function(v) {
+				var p = v.split('=');
+
+				cl.push({'title' : p[0], 'class' : p[1]});
+			});
+		} else
+			cl = tinyMCEPopup.editor.dom.getClasses();
+
+		if (cl.length > 0) {
+			lst.options.length = 0;
+			lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+
+			tinymce.each(cl, function(o) {
+				lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
+			});
+		} else
+			dom.remove(dom.getParent(id, 'tr'));
+	},
+
+	fillFileList : function(id, l) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		l = window[l];
+		lst.options.length = 0;
+
+		if (l && l.length > 0) {
+			lst.options[lst.options.length] = new Option('', '');
+
+			tinymce.each(l, function(o) {
+				lst.options[lst.options.length] = new Option(o[0], o[1]);
+			});
+		} else
+			dom.remove(dom.getParent(id, 'tr'));
+	},
+
+	resetImageData : function() {
+		var f = document.forms[0];
+
+		f.elements.width.value = f.elements.height.value = '';
+	},
+
+	updateImageData : function(img, st) {
+		var f = document.forms[0];
+
+		if (!st) {
+			f.elements.width.value = img.width;
+			f.elements.height.value = img.height;
+		}
+
+		this.preloadImg = img;
+	},
+
+	changeAppearance : function() {
+		var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');
+
+		if (img) {
+			if (ed.getParam('inline_styles')) {
+				ed.dom.setAttrib(img, 'style', f.style.value);
+			} else {
+				img.align = f.align.value;
+				img.border = f.border.value;
+				img.hspace = f.hspace.value;
+				img.vspace = f.vspace.value;
+			}
+		}
+	},
+
+	changeHeight : function() {
+		var f = document.forms[0], tp, t = this;
+
+		if (!f.constrain.checked || !t.preloadImg) {
+			return;
+		}
+
+		if (f.width.value == "" || f.height.value == "")
+			return;
+
+		tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;
+		f.height.value = tp.toFixed(0);
+	},
+
+	changeWidth : function() {
+		var f = document.forms[0], tp, t = this;
+
+		if (!f.constrain.checked || !t.preloadImg) {
+			return;
+		}
+
+		if (f.width.value == "" || f.height.value == "")
+			return;
+
+		tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;
+		f.width.value = tp.toFixed(0);
+	},
+
+	updateStyle : function(ty) {
+		var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});
+
+		if (tinyMCEPopup.editor.settings.inline_styles) {
+			// Handle align
+			if (ty == 'align') {
+				dom.setStyle(img, 'float', '');
+				dom.setStyle(img, 'vertical-align', '');
+
+				v = getSelectValue(f, 'align');
+				if (v) {
+					if (v == 'left' || v == 'right')
+						dom.setStyle(img, 'float', v);
+					else
+						img.style.verticalAlign = v;
+				}
+			}
+
+			// Handle border
+			if (ty == 'border') {
+				dom.setStyle(img, 'border', '');
+
+				v = f.border.value;
+				if (v || v == '0') {
+					if (v == '0')
+						img.style.border = '0';
+					else
+						img.style.border = v + 'px solid black';
+				}
+			}
+
+			// Handle hspace
+			if (ty == 'hspace') {
+				dom.setStyle(img, 'marginLeft', '');
+				dom.setStyle(img, 'marginRight', '');
+
+				v = f.hspace.value;
+				if (v) {
+					img.style.marginLeft = v + 'px';
+					img.style.marginRight = v + 'px';
+				}
+			}
+
+			// Handle vspace
+			if (ty == 'vspace') {
+				dom.setStyle(img, 'marginTop', '');
+				dom.setStyle(img, 'marginBottom', '');
+
+				v = f.vspace.value;
+				if (v) {
+					img.style.marginTop = v + 'px';
+					img.style.marginBottom = v + 'px';
+				}
+			}
+
+			// Merge
+			dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText));
+		}
+	},
+
+	changeMouseMove : function() {
+	},
+
+	showPreviewImage : function(u, st) {
+		if (!u) {
+			tinyMCEPopup.dom.setHTML('prev', '');
+			return;
+		}
+
+		if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))
+			this.resetImageData();
+
+		u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);
+
+		if (!st)
+			tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');
+		else
+			tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');
+	}
+};
+
+ImageDialog.preInit();
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,43 @@
+tinyMCE.addI18n('ca.advimage_dlg',{
+tab_general:"General",
+tab_appearance:"Aparen\u00E7a",
+tab_advanced:"Avan\u00E7at",
+general:"General",
+title:"T\u00EDtol",
+preview:"Vista pr\u00E8via",
+constrain_proportions:"Constreny les proporcions",
+langdir:"Direcci\u00F3 de l'idioma",
+langcode:"Codi de l'idioma",
+long_desc:"Descripci\u00F3 llarga",
+style:"Estil",
+classes:"Classes",
+ltr:"D'esquerra a dreta",
+rtl:"De dreta a esquerra",
+id:"Id",
+map:"Mapa d'imatge",
+swap_image:"Canvi d'imatge",
+alt_image:"Imatge alternativa",
+mouseover:"amb el ratol\u00ED a sobre",
+mouseout:"amb el ratol\u00ED fora",
+misc:"Miscel\u00B7l\u00E0nia",
+example_img:"Aparen\u00E7a imatge previsualitzada",
+missing_alt:"Segur que vols continuar sense incloure cap Descripci\u00F3 d'Imatge? Sense ella, la imatge no ser\u00E0 accessible a usuaris amb discapacitats, o a aquells que utilitzin un navegador de text, o els que naveguin amb les imatges desactivades.",
+dialog_title:"Insereix/edita imatge",
+src:"URL de la imatge",
+alt:"Descripci\u00F3 de la imatge",
+list:"Llista d'imatges",
+border:"Vora",
+dimensions:"Dimensions",
+vspace:"Espaiat vertical",
+hspace:"Espaiat horitzontal",
+align:"Alineaci\u00F3",
+align_baseline:"L\u00EDnia base",
+align_top:"Dalt",
+align_middle:"Mig",
+align_bottom:"Baix",
+align_texttop:"A dalt del text",
+align_textbottom:"A baix del text",
+align_left:"Esquerra",
+align_right:"Dreta",
+image_list:"Llista d'imatges"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,43 @@
+tinyMCE.addI18n('en.advimage_dlg',{
+tab_general:"General",
+tab_appearance:"Appearance",
+tab_advanced:"Advanced",
+general:"General",
+title:"Title",
+preview:"Preview",
+constrain_proportions:"Constrain proportions",
+langdir:"Language direction",
+langcode:"Language code",
+long_desc:"Long description link",
+style:"Style",
+classes:"Classes",
+ltr:"Left to right",
+rtl:"Right to left",
+id:"Id",
+map:"Image map",
+swap_image:"Swap image",
+alt_image:"Alternative image",
+mouseover:"for mouse over",
+mouseout:"for mouse out",
+misc:"Miscellaneous",
+example_img:"Appearance preview image",
+missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",
+dialog_title:"Insert/edit image",
+src:"Image URL",
+alt:"Image description",
+list:"Image list",
+border:"Border",
+dimensions:"Dimensions",
+vspace:"Vertical space",
+hspace:"Horizontal space",
+align:"Alignment",
+align_baseline:"Baseline",
+align_top:"Top",
+align_middle:"Middle",
+align_bottom:"Bottom",
+align_texttop:"Text top",
+align_textbottom:"Text bottom",
+align_left:"Left",
+align_right:"Right",
+image_list:"Image list"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,43 @@
+tinyMCE.addI18n('es.advimage_dlg',{
+tab_general:"General",
+tab_appearance:"Apariencia",
+tab_advanced:"Avanzado",
+general:"General",
+title:"T\u00EDtulo",
+preview:"Vista previa",
+constrain_proportions:"Bloquear relaci\u00F3n de aspecto",
+langdir:"Direcci\u00F3n del lenguaje",
+langcode:"C\u00F3digo del lenguaje",
+long_desc:"V\u00EDnculo para descripci\u00F3n larga",
+style:"Estilos",
+classes:"Clases",
+ltr:"Izquierda a derecha",
+rtl:"Derecha a izquierda",
+id:"Id",
+map:"Mapa de imagen",
+swap_image:"Intercambiar imagen",
+alt_image:"Imagen alternativa",
+mouseover:"para mouseover",
+mouseout:"para mouseout",
+misc:"Miscel\u00E1neo",
+example_img:"Vista previa de la imagen",
+missing_alt:" \u00BFEsta seguro de continuar sin introducir una descripci\u00F3n a la imagen? Sin ella puede no ser accesible para usuarios con discapacidades, o para aquellos que usen navegadores de modo texto, o tengan deshabilitadas las im\u00E1genes de la p\u00E1gina.",
+dialog_title:"Insertar/editar imagen",
+src:"URL de la imagen",
+alt:"Descripci\u00F3n de la imagen",
+list:"Lista de imagen",
+border:"Bordes",
+dimensions:"Dimensiones",
+vspace:"Espacio vertical",
+hspace:"Espacio horizontal",
+align:"Alineaci\u00F3n",
+align_baseline:"L\u00EDnea base",
+align_top:"Arriba",
+align_middle:"Medio",
+align_bottom:"Debajo",
+align_texttop:"Texto arriba",
+align_textbottom:"Texto abajo",
+align_left:"Izquierda",
+align_right:"Derecha",
+image_list:"Lista de imagen"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es.js	2006-07-14 11:59:24.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('advimage',{
-tab_general : 'General',
-tab_appearance : 'Aspecto',
-tab_advanced : 'Avanzado',
-general : 'General',
-title : 'Titulo',
-preview : 'Vista previa',
-constrain_proportions : 'Bloquear relaci&oacute;n de aspecto',
-langdir : 'Direcci&oacute;n del texto',
-langcode : 'C&oacute;digo del idioma',
-long_desc : 'Descripci&oacute;n larga del link',
-style : 'Estilo',
-classes : 'Clases',
-ltr : 'De izquierda a derecha',
-rtl : 'De derecha a izquierda',
-id : 'Id',
-image_map : 'Mapa de la imagen',
-swap_image : 'Intercambio de imagen',
-alt_image : 'Imagen alternativa',
-mouseover : 'Al pasar el rat&oacute;n por encima de la imagen',
-mouseout : 'Al sacar el rat&oacute;n de la imagen',
-misc : 'Miscel&aacute;neo',
-example_img : 'Aspecto&nbsp;vista previa&nbsp;imagen',
-missing_alt : '&#191;Est&aacute;s seguro de querer continuar sin incluir una descripci&oacute;n de la imagen? Sin ella la imagen puede no ser accesible para ciertos usuarios discapacitados, o para los usuarios que usen navegadores de texto, o para los usuarios que tengan las imagenes desactivadas en su navegador.'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css	2009-06-30 22:01:32.000000000 +0200
@@ -1,35 +1,8 @@
-/* CSS file for advimage plugin popup */
-
-.mceLinkList, .mceAnchorList, #targetlist {
-	width: 280px;
-}
-
-.mceActionPanel {
-	margin-top: 7px;
-}
-
-.panel_wrapper div.current {
-	height: 320px;
-}
-
-#classlist, #title, #href {
-	width: 280px;
-}
-
-#popupurl, #popupname {
-	width: 200px;
-}
-
-#popupwidth, #popupheight, #popupleft, #popuptop {
-	width: 30px;
-	vertical-align: middle;
-	text-align: center;
-}
-
-#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {
-	width: 200px;
-}
-
-#events_panel input {
-	width: 200px;
-}
+.mceLinkList, .mceAnchorList, #targetlist {width:280px;}
+.mceActionPanel {margin-top:7px;}
+.panel_wrapper div.current {height:320px;}
+#classlist, #title, #href {width:280px;}
+#popupurl, #popupname {width:200px;}
+#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}
+#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}
+#events_panel input {width:200px;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('advlink');var TinyMCE_AdvancedLinkPlugin={getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','k','lang_advlink_desc','mceAdvLink')},getControlHTML:function(cn){switch(cn){case"link":return tinyMCE.getButtonHTML(cn,'lang_link_desc','{$themeurl}/images/link.gif','mceAdvLink')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvLink":var inst=tinyMCE.getInstanceById(editor_id),anySelection=false;var focusElm=inst.getFocusElement(),selectedText=inst.selection.getSelectedText();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(anySelection||(focusElm!=null&&focusElm.nodeName=="A")){tinyMCE.openWindow({file:'../../plugins/advlink/link.htm',width:480+tinyMCE.getLang('lang_advlink_delta_width',0),height:400+tinyMCE.getLang('lang_advlink_delta_height',0)},{editor_id:editor_id,inline:"yes"})}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="A"&&tinyMCE.getAttrib(node,'href')!=""){tinyMCE.switchClass(editor_id+'_advlink','mceButtonSelected');return true}}while((node=node.parentNode));if(any_selection){tinyMCE.switchClass(editor_id+'_advlink','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_advlink','mceButtonDisabled');return true}};tinyMCE.addPlugin("advlink",TinyMCE_AdvancedLinkPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,83 +1,58 @@
-/**
- * $Id: editor_plugin_src.js 268 2007-04-28 15:52:59Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('advlink');
-
-var TinyMCE_AdvancedLinkPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Advanced link',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink');
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "link":
-				return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		switch (command) {
-			case "mceAdvLink":
-				var inst = tinyMCE.getInstanceById(editor_id), anySelection = false;
-				var focusElm = inst.getFocusElement(), selectedText = inst.selection.getSelectedText();
-
-				if (tinyMCE.selectedElement)
-					anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);
-
-				if (anySelection || (focusElm != null && focusElm.nodeName == "A")) {
-					tinyMCE.openWindow({
-						file : '../../plugins/advlink/link.htm',
-						width : 480 + tinyMCE.getLang('lang_advlink_delta_width', 0),
-						height : 400 + tinyMCE.getLang('lang_advlink_delta_height', 0)
-					}, {
-						editor_id : editor_id,
-						inline : "yes"
-					});
-				}
-
-				return true;
-		}
-
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node == null)
-			return;
-
-		do {
-			if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") {
-				tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected');
-				return true;
-			}
-		} while ((node = node.parentNode));
-
-		if (any_selection) {
-			tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal');
-			return true;
-		}
-
-		tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled');
-
-		return true;
-	}
-};
-
-tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin);
+/**
+ * $Id: editor_plugin_src.js 539 2008-01-14 19:08:58Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
+		init : function(ed, url) {
+			this.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceAdvLink', function() {
+				var se = ed.selection;
+
+				// No selection and not in link
+				if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))
+					return;
+
+				ed.windowManager.open({
+					file : url + '/link.htm',
+					width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),
+					height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			// Register buttons
+			ed.addButton('link', {
+				title : 'advlink.link_desc',
+				cmd : 'mceAdvLink'
+			});
+
+			ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
+
+			ed.onNodeChange.add(function(ed, cm, n, co) {
+				cm.setDisabled('link', co && n.nodeName != 'A');
+				cm.setActive('link', n.nodeName == 'A' && !n.name);
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Advanced link',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,528 @@
+/* Functions for the advlink plugin popup */
+
+tinyMCEPopup.requireLangPack();
+
+var templates = {
+	"window.open" : "window.open('${url}','${target}','${options}')"
+};
+
+function preinit() {
+	var url;
+
+	if (url = tinyMCEPopup.getParam("external_link_list_url"))
+		document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+}
+
+function changeClass() {
+	var f = document.forms[0];
+
+	f.classes.value = getSelectValue(f, 'classlist');
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	var formObj = document.forms[0];
+	var inst = tinyMCEPopup.editor;
+	var elm = inst.selection.getNode();
+	var action = "insert";
+	var html;
+
+	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
+	document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
+	document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
+	document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
+	document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
+
+	// Link list
+	html = getLinkListHTML('linklisthref','href');
+	if (html == "")
+		document.getElementById("linklisthrefrow").style.display = 'none';
+	else
+		document.getElementById("linklisthrefcontainer").innerHTML = html;
+
+	// Resize some elements
+	if (isVisible('hrefbrowser'))
+		document.getElementById('href').style.width = '260px';
+
+	if (isVisible('popupurlbrowser'))
+		document.getElementById('popupurl').style.width = '180px';
+
+	elm = inst.dom.getParent(elm, "A");
+	if (elm != null && elm.nodeName == "A")
+		action = "update";
+
+	formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); 
+
+	setPopupControlsDisabled(true);
+
+	if (action == "update") {
+		var href = inst.dom.getAttrib(elm, 'href');
+		var onclick = inst.dom.getAttrib(elm, 'onclick');
+
+		// Setup form data
+		setFormValue('href', href);
+		setFormValue('title', inst.dom.getAttrib(elm, 'title'));
+		setFormValue('id', inst.dom.getAttrib(elm, 'id'));
+		setFormValue('style', inst.dom.getAttrib(elm, "style"));
+		setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));
+		setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));
+		setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));
+		setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));
+		setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));
+		setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));
+		setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
+		setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
+		setFormValue('type', inst.dom.getAttrib(elm, 'type'));
+		setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));
+		setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));
+		setFormValue('onclick', onclick);
+		setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));
+		setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));
+		setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));
+		setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));
+		setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));
+		setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));
+		setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
+		setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
+		setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
+		setFormValue('target', inst.dom.getAttrib(elm, 'target'));
+		setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
+
+		// Parse onclick data
+		if (onclick != null && onclick.indexOf('window.open') != -1)
+			parseWindowOpen(onclick);
+		else
+			parseFunction(onclick);
+
+		// Select by the values
+		selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));
+		selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));
+		selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));
+		selectByValue(formObj, 'linklisthref', href);
+
+		if (href.charAt(0) == '#')
+			selectByValue(formObj, 'anchorlist', href);
+
+		addClassesToList('classlist', 'advlink_styles');
+
+		selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
+		selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
+	} else
+		addClassesToList('classlist', 'advlink_styles');
+}
+
+function checkPrefix(n) {
+	if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))
+		n.value = 'mailto:' + n.value;
+
+	if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))
+		n.value = 'http://' + n.value;
+}
+
+function setFormValue(name, value) {
+	document.forms[0].elements[name].value = value;
+}
+
+function parseWindowOpen(onclick) {
+	var formObj = document.forms[0];
+
+	// Preprocess center code
+	if (onclick.indexOf('return false;') != -1) {
+		formObj.popupreturn.checked = true;
+		onclick = onclick.replace('return false;', '');
+	} else
+		formObj.popupreturn.checked = false;
+
+	var onClickData = parseLink(onclick);
+
+	if (onClickData != null) {
+		formObj.ispopup.checked = true;
+		setPopupControlsDisabled(false);
+
+		var onClickWindowOptions = parseOptions(onClickData['options']);
+		var url = onClickData['url'];
+
+		formObj.popupname.value = onClickData['target'];
+		formObj.popupurl.value = url;
+		formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
+		formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
+
+		formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
+		formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
+
+		if (formObj.popupleft.value.indexOf('screen') != -1)
+			formObj.popupleft.value = "c";
+
+		if (formObj.popuptop.value.indexOf('screen') != -1)
+			formObj.popuptop.value = "c";
+
+		formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
+		formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
+		formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
+		formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
+		formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
+		formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
+		formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
+
+		buildOnClick();
+	}
+}
+
+function parseFunction(onclick) {
+	var formObj = document.forms[0];
+	var onClickData = parseLink(onclick);
+
+	// TODO: Add stuff here
+}
+
+function getOption(opts, name) {
+	return typeof(opts[name]) == "undefined" ? "" : opts[name];
+}
+
+function setPopupControlsDisabled(state) {
+	var formObj = document.forms[0];
+
+	formObj.popupname.disabled = state;
+	formObj.popupurl.disabled = state;
+	formObj.popupwidth.disabled = state;
+	formObj.popupheight.disabled = state;
+	formObj.popupleft.disabled = state;
+	formObj.popuptop.disabled = state;
+	formObj.popuplocation.disabled = state;
+	formObj.popupscrollbars.disabled = state;
+	formObj.popupmenubar.disabled = state;
+	formObj.popupresizable.disabled = state;
+	formObj.popuptoolbar.disabled = state;
+	formObj.popupstatus.disabled = state;
+	formObj.popupreturn.disabled = state;
+	formObj.popupdependent.disabled = state;
+
+	setBrowserDisabled('popupurlbrowser', state);
+}
+
+function parseLink(link) {
+	link = link.replace(new RegExp('&#39;', 'g'), "'");
+
+	var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
+
+	// Is function name a template function
+	var template = templates[fnName];
+	if (template) {
+		// Build regexp
+		var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
+		var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
+		var replaceStr = "";
+		for (var i=0; i<variableNames.length; i++) {
+			// Is string value
+			if (variableNames[i].indexOf("'${") != -1)
+				regExp += "'(.*)'";
+			else // Number value
+				regExp += "([0-9]*)";
+
+			replaceStr += "$" + (i+1);
+
+			// Cleanup variable name
+			variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
+
+			if (i != variableNames.length-1) {
+				regExp += "\\s*,\\s*";
+				replaceStr += "<delim>";
+			} else
+				regExp += ".*";
+		}
+
+		regExp += "\\);?";
+
+		// Build variable array
+		var variables = [];
+		variables["_function"] = fnName;
+		var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
+		for (var i=0; i<variableNames.length; i++)
+			variables[variableNames[i]] = variableValues[i];
+
+		return variables;
+	}
+
+	return null;
+}
+
+function parseOptions(opts) {
+	if (opts == null || opts == "")
+		return [];
+
+	// Cleanup the options
+	opts = opts.toLowerCase();
+	opts = opts.replace(/;/g, ",");
+	opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+	var optionChunks = opts.split(',');
+	var options = [];
+
+	for (var i=0; i<optionChunks.length; i++) {
+		var parts = optionChunks[i].split('=');
+
+		if (parts.length == 2)
+			options[parts[0]] = parts[1];
+	}
+
+	return options;
+}
+
+function buildOnClick() {
+	var formObj = document.forms[0];
+
+	if (!formObj.ispopup.checked) {
+		formObj.onclick.value = "";
+		return;
+	}
+
+	var onclick = "window.open('";
+	var url = formObj.popupurl.value;
+
+	onclick += url + "','";
+	onclick += formObj.popupname.value + "','";
+
+	if (formObj.popuplocation.checked)
+		onclick += "location=yes,";
+
+	if (formObj.popupscrollbars.checked)
+		onclick += "scrollbars=yes,";
+
+	if (formObj.popupmenubar.checked)
+		onclick += "menubar=yes,";
+
+	if (formObj.popupresizable.checked)
+		onclick += "resizable=yes,";
+
+	if (formObj.popuptoolbar.checked)
+		onclick += "toolbar=yes,";
+
+	if (formObj.popupstatus.checked)
+		onclick += "status=yes,";
+
+	if (formObj.popupdependent.checked)
+		onclick += "dependent=yes,";
+
+	if (formObj.popupwidth.value != "")
+		onclick += "width=" + formObj.popupwidth.value + ",";
+
+	if (formObj.popupheight.value != "")
+		onclick += "height=" + formObj.popupheight.value + ",";
+
+	if (formObj.popupleft.value != "") {
+		if (formObj.popupleft.value != "c")
+			onclick += "left=" + formObj.popupleft.value + ",";
+		else
+			onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
+	}
+
+	if (formObj.popuptop.value != "") {
+		if (formObj.popuptop.value != "c")
+			onclick += "top=" + formObj.popuptop.value + ",";
+		else
+			onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
+	}
+
+	if (onclick.charAt(onclick.length-1) == ',')
+		onclick = onclick.substring(0, onclick.length-1);
+
+	onclick += "');";
+
+	if (formObj.popupreturn.checked)
+		onclick += "return false;";
+
+	// tinyMCE.debug(onclick);
+
+	formObj.onclick.value = onclick;
+
+	if (formObj.href.value == "")
+		formObj.href.value = url;
+}
+
+function setAttrib(elm, attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib.toLowerCase()];
+	var dom = tinyMCEPopup.editor.dom;
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	// Clean up the style
+	if (attrib == 'style')
+		value = dom.serializeStyle(dom.parseStyle(value));
+
+	dom.setAttrib(elm, attrib, value);
+}
+
+function getAnchorListHTML(id, target) {
+	var inst = tinyMCEPopup.editor;
+	var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i;
+	var html = "";
+
+	html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" o2nfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
+	html += 'this.options[this.selectedIndex].value;">';
+	html += '<option value="">---</option>';
+
+	for (i=0; i<nodes.length; i++) {
+		if ((name = inst.dom.getAttrib(nodes[i], "name")) != "")
+			html += '<option value="#' + name + '">' + name + '</option>';
+	}
+
+	html += '</select>';
+
+	return html;
+}
+
+function insertAction() {
+	var inst = tinyMCEPopup.editor;
+	var elm, elementArray, i;
+
+	elm = inst.selection.getNode();
+	checkPrefix(document.forms[0].href);
+
+	elm = inst.dom.getParent(elm, "A");
+
+	// Remove element if there is no href
+	if (!document.forms[0].href.value) {
+		tinyMCEPopup.execCommand("mceBeginUndoLevel");
+		i = inst.selection.getBookmark();
+		inst.dom.remove(elm, 1);
+		inst.selection.moveToBookmark(i);
+		tinyMCEPopup.execCommand("mceEndUndoLevel");
+		tinyMCEPopup.close();
+		return;
+	}
+
+	tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+	// Create new anchor elements
+	if (elm == null) {
+		inst.getDoc().execCommand("unlink", false, null);
+		tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+		elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});
+		for (i=0; i<elementArray.length; i++)
+			setAllAttribs(elm = elementArray[i]);
+	} else
+		setAllAttribs(elm);
+
+	// Don't move caret if selection was image
+	if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {
+		inst.focus();
+		inst.selection.select(elm);
+		inst.selection.collapse(0);
+		tinyMCEPopup.storeSelection();
+	}
+
+	tinyMCEPopup.execCommand("mceEndUndoLevel");
+	tinyMCEPopup.close();
+}
+
+function setAllAttribs(elm) {
+	var formObj = document.forms[0];
+	var href = formObj.href.value;
+	var target = getSelectValue(formObj, 'targetlist');
+
+	setAttrib(elm, 'href', href);
+	setAttrib(elm, 'title');
+	setAttrib(elm, 'target', target == '_self' ? '' : target);
+	setAttrib(elm, 'id');
+	setAttrib(elm, 'style');
+	setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
+	setAttrib(elm, 'rel');
+	setAttrib(elm, 'rev');
+	setAttrib(elm, 'charset');
+	setAttrib(elm, 'hreflang');
+	setAttrib(elm, 'dir');
+	setAttrib(elm, 'lang');
+	setAttrib(elm, 'tabindex');
+	setAttrib(elm, 'accesskey');
+	setAttrib(elm, 'type');
+	setAttrib(elm, 'onfocus');
+	setAttrib(elm, 'onblur');
+	setAttrib(elm, 'onclick');
+	setAttrib(elm, 'ondblclick');
+	setAttrib(elm, 'onmousedown');
+	setAttrib(elm, 'onmouseup');
+	setAttrib(elm, 'onmouseover');
+	setAttrib(elm, 'onmousemove');
+	setAttrib(elm, 'onmouseout');
+	setAttrib(elm, 'onkeypress');
+	setAttrib(elm, 'onkeydown');
+	setAttrib(elm, 'onkeyup');
+
+	// Refresh in old MSIE
+	if (tinyMCE.isMSIE5)
+		elm.outerHTML = elm.outerHTML;
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (!elm || elm.options == null || elm.selectedIndex == -1)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function getLinkListHTML(elm_id, target_form_element, onchange_func) {
+	if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
+		return "";
+
+	var html = "";
+
+	html += '<select id="' + elm_id + '" name="' + elm_id + '"';
+	html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+	html += 'this.options[this.selectedIndex].value;';
+
+	if (typeof(onchange_func) != "undefined")
+		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+	html += '"><option value="">---</option>';
+
+	for (var i=0; i<tinyMCELinkList.length; i++)
+		html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
+
+	html += '</select>';
+
+	return html;
+
+	// tinyMCE.debug('-- image list start --', html, '-- image list end --');
+}
+
+function getTargetListHTML(elm_id, target_form_element) {
+	var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
+	var html = '';
+
+	html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+	html += 'this.options[this.selectedIndex].value;">';
+	html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
+	html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
+	html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
+	html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';
+
+	for (var i=0; i<targets.length; i++) {
+		var key, value;
+
+		if (targets[i] == "")
+			continue;
+
+		key = targets[i].split('=')[0];
+		value = targets[i].split('=')[1];
+
+		html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
+	}
+
+	html += '</select>';
+
+	return html;
+}
+
+// While loading
+preinit();
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,52 @@
+tinyMCE.addI18n('ca.advlink_dlg',{
+title:"Insereix/edita enlla\u00E7",
+url:"URL de l'enlla\u00E7",
+target:"Objectiu",
+titlefield:"T\u00EDtol",
+is_email:"L'URL que has introdu\u00EFt sembla una adre\u00E7a de correu, vols afegir-hi el prefix mailto://?",
+is_external:"L'URL que has introdu\u00EFt sembla un enlla\u00E7 extern, vols afegir-hi el prefix http://?",
+list:"Llista d'enlla\u00E7os",
+general_tab:"General",
+popup_tab:"Emergent",
+events_tab:"Esdeveniments",
+advanced_tab:"Avan\u00E7at",
+general_props:"Propietats generals",
+popup_props:"Propietats de l'emergent",
+event_props:"Esdeveniments",
+advanced_props:"Propietats avan\u00E7ades",
+popup_opts:"Opcions",
+anchor_names:"\u00C0ncores",
+target_same:"Obre en aquesta finestra / marc",
+target_parent:"Obre a la finestra /marc pare",
+target_top:"Obre en el marc superior (substitueix tots els marcs)",
+target_blank:"Obre en una finestra nova",
+popup:"Emergent Javascript",
+popup_url:"URL de l'emergent",
+popup_name:"Nom de la finestra",
+popup_return:"Insereix 'return false'",
+popup_scrollbars:"Mostra les barres de despla\u00E7ament",
+popup_statusbar:"Mostra la barra d'estat",
+popup_toolbar:"Mostra les barres d'eines",
+popup_menubar:"Mostra la barra de men\u00FA",
+popup_location:"Mostra la barra d'ubicaci\u00F3",
+popup_resizable:"La finestra es pot amidar",
+popup_dependent:"Dependent (nom\u00E9s Mozilla/Firefox)",
+popup_size:"Mida",
+popup_position:"Posici\u00F3 (X/Y)",
+id:"Id",
+style:"Estil",
+classes:"Classes",
+target_name:"Nom de l'objectiu",
+langdir:"Direcci\u00F3 de l'idioma",
+target_langcode:"Idioma objectiu",
+langcode:"Codi de l'idioma",
+encoding:"Codificaci\u00F3 de car\u00E0cters de l'objectiu",
+mime:"Tipus MIME de l'objectiu",
+rel:"Relaci\u00F3 p\u00E0gina a objectiu",
+rev:"Relaci\u00F3 objectiu a p\u00E0gina",
+tabindex:"\u00CDndex de taula",
+accesskey:"Accesskey",
+ltr:"D'esquerra a dreta",
+rtl:"De dreta a esquerra",
+link_list:"Llista d'enlla\u00E7os"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,52 @@
+tinyMCE.addI18n('en.advlink_dlg',{
+title:"Insert/edit link",
+url:"Link URL",
+target:"Target",
+titlefield:"Title",
+is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
+is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
+list:"Link list",
+general_tab:"General",
+popup_tab:"Popup",
+events_tab:"Events",
+advanced_tab:"Advanced",
+general_props:"General properties",
+popup_props:"Popup properties",
+event_props:"Events",
+advanced_props:"Advanced properties",
+popup_opts:"Options",
+anchor_names:"Anchors",
+target_same:"Open in this window / frame",
+target_parent:"Open in parent window / frame",
+target_top:"Open in top frame (replaces all frames)",
+target_blank:"Open in new window",
+popup:"Javascript popup",
+popup_url:"Popup URL",
+popup_name:"Window name",
+popup_return:"Insert 'return false'",
+popup_scrollbars:"Show scrollbars",
+popup_statusbar:"Show status bar",
+popup_toolbar:"Show toolbars",
+popup_menubar:"Show menu bar",
+popup_location:"Show location bar",
+popup_resizable:"Make window resizable",
+popup_dependent:"Dependent (Mozilla/Firefox only)",
+popup_size:"Size",
+popup_position:"Position (X/Y)",
+id:"Id",
+style:"Style",
+classes:"Classes",
+target_name:"Target name",
+langdir:"Language direction",
+target_langcode:"Target language",
+langcode:"Language code",
+encoding:"Target character encoding",
+mime:"Target MIME type",
+rel:"Relationship page to target",
+rev:"Relationship target to page",
+tabindex:"Tabindex",
+accesskey:"Accesskey",
+ltr:"Left to right",
+rtl:"Right to left",
+link_list:"Link list"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,52 @@
+tinyMCE.addI18n('es.advlink_dlg',{
+title:"Insertar/editar hiperv\u00EDnculo",
+url:"URL del hiperv\u00EDnculo",
+target:"Destino",
+titlefield:"T\u00EDtulo",
+is_email:"La URL que ha introducido parece ser una direci\u00F3n de correo,  \u00BFdesea agregar el prefijo mailto: necesario?",
+is_external:"La URL que ha introducido parece ser un v\u00EDnculo externo,  \u00BFdesea agregar el prefijo http:// necesario?",
+list:"Lista de v\u00EDnculos",
+general_tab:"General",
+popup_tab:"Ventana emergente",
+events_tab:"Eventos",
+advanced_tab:"Avanzado",
+general_props:"Propiedades generales",
+popup_props:"Propiedades de ventanas emergentes",
+event_props:"Eventos",
+advanced_props:"Propiedades avanzadas",
+popup_opts:"Opciones",
+anchor_names:"Anclas",
+target_same:"Abrir en esta ventana / marco",
+target_parent:"Abrir en ventana padre / marco",
+target_top:"Abrir en el marco superior (reemplaza todos los marcos)",
+target_blank:"Abrir en ventana nueva",
+popup:"Javascript popup",
+popup_url:"URL de la ventana emergente",
+popup_name:"Nombre de la ventana",
+popup_return:"Insertar 'return false'",
+popup_scrollbars:"Barras de desplazamiento",
+popup_statusbar:"Barra de estado",
+popup_toolbar:"Barra de herramientas",
+popup_menubar:"Barra de men\u00FA",
+popup_location:"Barra de localizaci\u00F3n",
+popup_resizable:"Permitir cambiar el tama\u00F1o de la ventana",
+popup_dependent:"Dependientes (s\u00F3lo Mozilla/Firefox)",
+popup_size:"Tama\u00F1o",
+popup_position:"Posici\u00F3n (X/Y)",
+id:"Id",
+style:"Estilo",
+classes:"Clases",
+target_name:"Nombre del Target",
+langdir:"Direcci\u00F3n del lenguaje",
+target_langcode:"Lenguaje del Target",
+langcode:"C\u00F3digo del lenguaje",
+encoding:"Codificaci\u00F3n de caracteres del Target",
+mime:"Tipo MIME del Target",
+rel:"Relaci\u00F3n p\u00E1gina a target",
+rev:"Relaci\u00F3n target a p\u00E1gina",
+tabindex:"Indice de tabulaci\u00F3n",
+accesskey:"Tecla de acceso",
+ltr:"Izquierda a derecha",
+rtl:"Derecha a izquierda",
+link_list:"Lista de v\u00EDnculo"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es.js	2006-07-14 11:59:48.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('advlink',{
-general_tab : 'General',
-popup_tab : 'Popup',
-events_tab : 'Eventos',
-advanced_tab : 'Avanzado',
-general_props : 'Propiedades generales',
-popup_props : 'Propiedades de la popup',
-event_props : 'Eventos',
-advanced_props : 'Propiedades avanzadas',
-popup_opts : 'Opciones',
-anchor_names : 'Anclas',
-target_same : 'Abrir en esta ventana/frame',
-target_parent : 'Abrir en la ventana/frame padre',
-target_top : 'Abrir el frame superior (replaza todos los frames)',
-target_blank : 'Abrir en una ventana nueva',
-popup : 'Popup con JavaScript',
-popup_url : 'Direcci&oacute;n de la popup',
-popup_name : 'Nombre de la ventana',
-popup_return : 'Insertar \'return false\'',
-popup_scrollbars : 'Mostrar barras de scroll',
-popup_statusbar : 'Mostrar barra de estado',
-popup_toolbar : 'Mostrar barras de tarea',
-popup_menubar : 'Mostrar barra de menu',
-popup_location : 'Mostrar barra de direcciones',
-popup_resizable : 'La ventana puede cambiar de tama&ntilde;o',
-popup_dependent : 'Dependiente (solo Mozilla/Firefox)',
-popup_size : 'Tama&ntilde;o',
-popup_position : 'Posici&oacute;n (X/Y)',
-id : 'Id',
-style: 'Estilo',
-classes : 'Clases',
-target_name : 'Nombre del target',
-langdir : 'Direcci&oacute;n del texto',
-target_langcode : 'Idioma del target',
-langcode : 'C&oacute;digo del idioma',
-encoding : 'Codificaci&oacute;n de los car&aacute;cteres del target',
-mime : 'Tipo MIME del target',
-rel : 'Relaci&oacute;n de la p&aacute;gina con el target',
-rev : 'Relaci&oacute;n del target con la p&aacute;gina',
-tabindex : 'Indice para la tabulaci&oacute;n',
-accesskey : 'Tecla de acceso',
-ltr : 'de izquierda a derecha',
-rtl : 'de derecha a izquierda'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,61 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_insert_link_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
+	<title>{#advlink_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="../../utils/validate.js"></script>
+	<script type="text/javascript" src="js/advlink.js"></script>
 	<link href="css/advlink.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="advlink" style="display: none">
     <form onsubmit="insertAction();return false;" action="#">
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advlink_general_tab}</a></span></li>
-				<li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{$lang_advlink_popup_tab}</a></span></li>
-				<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_advlink_events_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advlink_advanced_tab}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>
+				<li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>
+				<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
 				<fieldset>
-					<legend>{$lang_advlink_general_props}</legend>
+					<legend>{#advlink_dlg.general_props}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-						  <td nowrap="nowrap"><label id="hreflabel" for="href">{$lang_insert_link_url}</label></td>
+						  <td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>
 						  <td><table border="0" cellspacing="0" cellpadding="0">
 								<tr>
-								  <td><input id="href" name="href" type="text" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>
+								  <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>
 								  <td id="hrefbrowsercontainer">&nbsp;</td>
 								</tr>
 							  </table></td>
 						</tr>
 						<tr id="linklisthrefrow">
-							<td class="column1"><label for="linklisthref">{$lang_link_list}</label></td>
-							<td colspan="2" id="linklisthrefcontainer">&nbsp;</td>
+							<td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>
+							<td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="anchorlist">{$lang_advlink_anchor_names}</label></td>
-							<td colspan="2" id="anchorlistcontainer">&nbsp;</td>
+							<td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>
+							<td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>
 						</tr>
 						<tr>
-							<td><label id="targetlistlabel" for="targetlist">{$lang_insert_link_target}</label></td>
-							<td id="targetlistcontainer">&nbsp;</td>
+							<td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>
+							<td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label id="titlelabel" for="title">{$lang_theme_insert_link_titlefield}</label></td>
+							<td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>
 							<td><input id="title" name="title" type="text" value="" /></td>
 						</tr>
 						<tr>
-							<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
+							<td><label id="classlabel" for="classlist">{#class_name}</label></td>
 							<td>
 								 <select id="classlist" name="classlist" onchange="changeClass();">
-									<option value="" selected>{$lang_not_set}</option>
+									<option value="" selected="selected">{#not_set}</option>
 								 </select>
 							</td>
 						</tr>
@@ -65,14 +65,14 @@
 
 			<div id="popup_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_advlink_popup_props}</legend>
+					<legend>{#advlink_dlg.popup_props}</legend>
 
 					<input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
-					<label id="ispopuplabel" for="ispopup">{$lang_advlink_popup}</label>
+					<label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>
 
 					<table border="0" cellpadding="0" cellspacing="4">
 						<tr>
-							<td nowrap="nowrap"><label for="popupurl">{$lang_advlink_popup_url}</label>&nbsp;</td>
+							<td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>
 							<td>
 								<table border="0" cellspacing="0" cellpadding="0">
 									<tr>
@@ -83,19 +83,19 @@
 							</td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="popupname">{$lang_advlink_popup_name}</label>&nbsp;</td>
+							<td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>
 							<td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label>{$lang_advlink_popup_size}</label>&nbsp;</td>
-							<td nowrap="nowrap">
+							<td class="nowrap"><label>{#advlink_dlg.popup_size}</label>&nbsp;</td>
+							<td class="nowrap">
 								<input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x
 								<input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px
 							</td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap" id="labelleft"><label>{$lang_advlink_popup_position}</label>&nbsp;</td>
-							<td nowrap="nowrap">
+							<td class="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label>&nbsp;</td>
+							<td class="nowrap">
 								<input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /                                
 								<input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)
 							</td>
@@ -103,32 +103,32 @@
 					</table>
 
 					<fieldset>
-						<legend>{$lang_advlink_popup_opts}</legend>
+						<legend>{#advlink_dlg.popup_opts}</legend>
 
 						<table border="0" cellpadding="0" cellspacing="4">
 							<tr>
 								<td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{$lang_advlink_popup_location}</label></td>
+								<td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>
 								<td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{$lang_advlink_popup_scrollbars}</label></td>
+								<td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>
 							</tr>
 							<tr>
 								<td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{$lang_advlink_popup_menubar}</label></td>
+								<td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>
 								<td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{$lang_advlink_popup_resizable}</label></td>
+								<td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>
 							</tr>
 							<tr>
 								<td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{$lang_advlink_popup_toolbar}</label></td>
+								<td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>
 								<td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{$lang_advlink_popup_dependent}</label></td>
+								<td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>
 							</tr>
 							<tr>
 								<td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{$lang_advlink_popup_statusbar}</label></td>
+								<td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>
 								<td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
-								<td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{$lang_advlink_popup_return}</label></td>
+								<td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>
 							</tr>
 						</table>
 					</fieldset>
@@ -137,66 +137,66 @@
 
 			<div id="advanced_panel" class="panel">
 			<fieldset>
-					<legend>{$lang_advlink_advanced_props}</legend>
+					<legend>{#advlink_dlg.advanced_props}</legend>
 
 					<table border="0" cellpadding="0" cellspacing="4">
 						<tr>
-							<td class="column1"><label id="idlabel" for="id">{$lang_advlink_id}</label></td> 
+							<td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td> 
 							<td><input id="id" name="id" type="text" value="" /></td> 
 						</tr>
 
 						<tr>
-							<td><label id="stylelabel" for="style">{$lang_advlink_style}</label></td>
+							<td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>
 							<td><input type="text" id="style" name="style" value="" /></td>
 						</tr>
 
 						<tr>
-							<td><label id="classeslabel" for="classes">{$lang_advlink_classes}</label></td>
+							<td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>
 							<td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
 						</tr>
 
 						<tr>
-							<td><label id="targetlabel" for="target">{$lang_advlink_target_name}</label></td>
+							<td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>
 							<td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="dirlabel" for="dir">{$lang_advlink_langdir}</label></td> 
+							<td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td> 
 							<td>
 								<select id="dir" name="dir"> 
-										<option value="">{$lang_not_set}</option> 
-										<option value="ltr">{$lang_advlink_ltr}</option> 
-										<option value="rtl">{$lang_advlink_rtl}</option> 
+										<option value="">{#not_set}</option> 
+										<option value="ltr">{#advlink_dlg.ltr}</option> 
+										<option value="rtl">{#advlink_dlg.rtl}</option> 
 								</select>
 							</td> 
 						</tr>
 
 						<tr>
-							<td><label id="hreflanglabel" for="hreflang">{$lang_advlink_target_langcode}</label></td>
+							<td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>
 							<td><input type="text" id="hreflang" name="hreflang" value="" /></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label id="langlabel" for="lang">{$lang_advlink_langcode}</label></td> 
+							<td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td> 
 							<td>
 								<input id="lang" name="lang" type="text" value="" />
 							</td> 
 						</tr>
 
 						<tr>
-							<td><label id="charsetlabel" for="charset">{$lang_advlink_encoding}</label></td>
+							<td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>
 							<td><input type="text" id="charset" name="charset" value="" /></td>
 						</tr>
 
 						<tr>
-							<td><label id="typelabel" for="type">{$lang_advlink_mime}</label></td>
+							<td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>
 							<td><input type="text" id="type" name="type" value="" /></td>
 						</tr>
 
 						<tr>
-							<td><label id="rellabel" for="rel">{$lang_advlink_rel}</label></td>
+							<td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>
 							<td><select id="rel" name="rel"> 
-									<option value="">{$lang_not_set}</option> 
+									<option value="">{#not_set}</option> 
 									<option value="lightbox">Lightbox</option> 
 									<option value="alternate">Alternate</option> 
 									<option value="designates">Designates</option> 
@@ -220,9 +220,9 @@
 						</tr>
 
 						<tr>
-							<td><label id="revlabel" for="rev">{$lang_advlink_rev}</label></td>
+							<td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>
 							<td><select id="rev" name="rev"> 
-									<option value="">{$lang_not_set}</option> 
+									<option value="">{#not_set}</option> 
 									<option value="alternate">Alternate</option> 
 									<option value="designates">Designates</option> 
 									<option value="stylesheet">Stylesheet</option> 
@@ -243,12 +243,12 @@
 						</tr>
 
 						<tr>
-							<td><label id="tabindexlabel" for="tabindex">{$lang_advlink_tabindex}</label></td>
+							<td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>
 							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
 						</tr>
 
 						<tr>
-							<td><label id="accesskeylabel" for="accesskey">{$lang_advlink_accesskey}</label></td>
+							<td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>
 							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
 						</tr>
 					</table>
@@ -257,7 +257,7 @@
 
 			<div id="events_panel" class="panel">
 			<fieldset>
-					<legend>{$lang_advlink_event_props}</legend>
+					<legend>{#advlink_dlg.event_props}</legend>
 
 					<table border="0" cellpadding="0" cellspacing="4">
 						<tr>
@@ -326,11 +326,11 @@
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
     </form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('autosave');var TinyMCE_AutoSavePlugin={getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},_beforeUnloadHandler:function(){var n,inst,anyDirty=false,msg=tinyMCE.getLang("lang_autosave_unload_msg");if(tinyMCE.getParam("fullscreen_is_enabled"))return;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.isDirty())return msg}return}};window.onbeforeunload=TinyMCE_AutoSavePlugin._beforeUnloadHandler;tinyMCE.addPlugin("autosave",TinyMCE_AutoSavePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.AutoSavePlugin",{init:function(a,b){var c=this;c.editor=a;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:tinymce.majorVersion+"."+tinymce.minorVersion}},"static":{_beforeUnloadHandler:function(){var a;tinymce.each(tinyMCE.editors,function(b){if(b.getParam("fullscreen_is_enabled")){return}if(b.isDirty()){a=b.getLang("autosave.unload_msg");return false}});return a}}});tinymce.PluginManager.add("autosave",tinymce.plugins.AutoSavePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,46 +1,51 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('autosave');
-
-var TinyMCE_AutoSavePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Auto save',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	// Private plugin internal methods
-
-	_beforeUnloadHandler : function() {
-		var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg");
-
-		if (tinyMCE.getParam("fullscreen_is_enabled"))
-			return;
-
-		for (n in tinyMCE.instances) {
-			inst = tinyMCE.instances[n];
-
-			if (!tinyMCE.isInstance(inst))
-				continue;
-
-			if (inst.isDirty())
-				return msg;
-		}
-
-		return;
-	}
-};
-
-window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler;
-
-tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.AutoSavePlugin', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			window.onbeforeunload = tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Auto save',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private plugin internal methods
+
+		'static' : {
+			_beforeUnloadHandler : function() {
+				var msg;
+
+				tinymce.each(tinyMCE.editors, function(ed) {
+					if (ed.getParam("fullscreen_is_enabled"))
+						return;
+
+					if (ed.isDirty()) {
+						msg = ed.getLang("autosave.unload_msg");
+						return false;
+					}
+				});
+
+				return msg;
+			}
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSavePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/langs/es.js	2006-07-14 11:59:28.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/autosave/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('',{
-autosave_unload_msg : 'Los cambios que hayas hecho pueden perderse si navegas fuera de esta p&aacute;gina.'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js	2007-02-23 06:07:06.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-var TinyMCE_BBCodePlugin={getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},cleanup:function(type,content){var dialect=tinyMCE.getParam('bbcode_dialect','punbb').toLowerCase();switch(type){case"insert_to_editor":content=this['_'+dialect+'_bbcode2html'](content);break;case"get_from_editor":content=this['_'+dialect+'_html2bbcode'](content);break}return content},_punbb_html2bbcode:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/<u>/gi,"[u]");rep(/<br \/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/&nbsp;/gi," ");rep(/&quot;/gi,"\"");rep(/&lt;/gi,"<");rep(/&gt;/gi,">");rep(/&amp;/gi,"&");rep(/&undefined;/gi,"'");return s},_punbb_bbcode2html:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/\n/gi,"<br />");rep(/\[b\]/gi,"<strong>");rep(/\[\/b\]/gi,"</strong>");rep(/\[i\]/gi,"<em>");rep(/\[\/i\]/gi,"</em>");rep(/\[u\]/gi,"<u>");rep(/\[\/u\]/gi,"</u>");rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");return s}};tinyMCE.addPlugin("bbcode",TinyMCE_BBCodePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/<font>(.*?)<\/font>/gi,"$1");b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");b(/<u>/gi,"[u]");b(/<blockquote[^>]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/<br \/>/gi,"\n");b(/<br\/>/gi,"\n");b(/<br>/gi,"\n");b(/<p>/gi,"");b(/<\/p>/gi,"\n");b(/&nbsp;/gi," ");b(/&quot;/gi,'"');b(/&lt;/gi,"<");b(/&gt;/gi,">");b(/&amp;/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"<br />");b(/\[b\]/gi,"<strong>");b(/\[\/b\]/gi,"</strong>");b(/\[i\]/gi,"<em>");b(/\[\/i\]/gi,"</em>");b(/\[u\]/gi,"<u>");b(/\[\/u\]/gi,"</u>");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>');b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,102 +1,117 @@
-var TinyMCE_BBCodePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'BBCode Plugin',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	cleanup : function(type, content) {
-		var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase();
-
-		switch (type) {
-			case "insert_to_editor":
-				content = this['_' + dialect + '_bbcode2html'](content);
-				break;
-
-			case "get_from_editor":
-				content = this['_' + dialect + '_html2bbcode'](content);
-				break;
-		}
-
-		return content;
-	},
-
-	// Private methods
-
-	// HTML -> BBCode in PunBB dialect
-	_punbb_html2bbcode : function(s) {
-		s = tinyMCE.trim(s);
-
-		function rep(re, str) {
-			s = s.replace(re, str);
-		};
-
-		// example: <strong> to [b]
-		rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");
-		rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
-		rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
-		rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
-		rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
-		rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
-		rep(/<font>(.*?)<\/font>/gi,"$1");
-		rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
-		rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
-		rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
-		rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
-		rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
-		rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
-		rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
-		rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
-		rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
-		rep(/<\/(strong|b)>/gi,"[/b]");
-		rep(/<(strong|b)>/gi,"[b]");
-		rep(/<\/(em|i)>/gi,"[/i]");
-		rep(/<(em|i)>/gi,"[i]");
-		rep(/<\/u>/gi,"[/u]");
-		rep(/<u>/gi,"[u]");
-		rep(/<br \/>/gi,"\n");
-		rep(/<br\/>/gi,"\n");
-		rep(/<br>/gi,"\n");
-		rep(/<p>/gi,"");
-		rep(/<\/p>/gi,"\n");
-		rep(/&nbsp;/gi," ");
-		rep(/&quot;/gi,"\"");
-		rep(/&lt;/gi,"<");
-		rep(/&gt;/gi,">");
-		rep(/&amp;/gi,"&");
-		rep(/&undefined;/gi,"'"); // quickfix
-
-		return s;
-	},
-
-	// BBCode -> HTML from PunBB dialect
-	_punbb_bbcode2html : function(s) {
-		s = tinyMCE.trim(s);
-
-		function rep(re, str) {
-			s = s.replace(re, str);
-		};
-
-		// example: [b] to <strong>
-		rep(/\n/gi,"<br />");
-		rep(/\[b\]/gi,"<strong>");
-		rep(/\[\/b\]/gi,"</strong>");
-		rep(/\[i\]/gi,"<em>");
-		rep(/\[\/i\]/gi,"</em>");
-		rep(/\[u\]/gi,"<u>");
-		rep(/\[\/u\]/gi,"</u>");
-		rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
-		rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
-		rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
-		rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
-		rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");
-
-		return s;
-	}
-};
-
-tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin);
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.BBCodePlugin', {
+		init : function(ed, url) {
+			var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();
+
+			ed.onBeforeSetContent.add(function(ed, o) {
+				o.content = t['_' + dialect + '_bbcode2html'](o.content);
+			});
+
+			ed.onPostProcess.add(function(ed, o) {
+				if (o.set)
+					o.content = t['_' + dialect + '_bbcode2html'](o.content);
+
+				if (o.get)
+					o.content = t['_' + dialect + '_html2bbcode'](o.content);
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'BBCode Plugin',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+
+		// HTML -> BBCode in PunBB dialect
+		_punbb_html2bbcode : function(s) {
+			s = tinymce.trim(s);
+
+			function rep(re, str) {
+				s = s.replace(re, str);
+			};
+
+			// example: <strong> to [b]
+			rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
+			rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
+			rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
+			rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
+			rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
+			rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
+			rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
+			rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
+			rep(/<font>(.*?)<\/font>/gi,"$1");
+			rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
+			rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
+			rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
+			rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
+			rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
+			rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
+			rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
+			rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
+			rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
+			rep(/<\/(strong|b)>/gi,"[/b]");
+			rep(/<(strong|b)>/gi,"[b]");
+			rep(/<\/(em|i)>/gi,"[/i]");
+			rep(/<(em|i)>/gi,"[i]");
+			rep(/<\/u>/gi,"[/u]");
+			rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
+			rep(/<u>/gi,"[u]");
+			rep(/<blockquote[^>]*>/gi,"[quote]");
+			rep(/<\/blockquote>/gi,"[/quote]");
+			rep(/<br \/>/gi,"\n");
+			rep(/<br\/>/gi,"\n");
+			rep(/<br>/gi,"\n");
+			rep(/<p>/gi,"");
+			rep(/<\/p>/gi,"\n");
+			rep(/&nbsp;/gi," ");
+			rep(/&quot;/gi,"\"");
+			rep(/&lt;/gi,"<");
+			rep(/&gt;/gi,">");
+			rep(/&amp;/gi,"&");
+
+			return s; 
+		},
+
+		// BBCode -> HTML from PunBB dialect
+		_punbb_bbcode2html : function(s) {
+			s = tinymce.trim(s);
+
+			function rep(re, str) {
+				s = s.replace(re, str);
+			};
+
+			// example: [b] to <strong>
+			rep(/\n/gi,"<br />");
+			rep(/\[b\]/gi,"<strong>");
+			rep(/\[\/b\]/gi,"</strong>");
+			rep(/\[i\]/gi,"<em>");
+			rep(/\[\/i\]/gi,"</em>");
+			rep(/\[u\]/gi,"<u>");
+			rep(/\[\/u\]/gi,"</u>");
+			rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
+			rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
+			rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
+			rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
+			rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
+			rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");
+
+			return s; 
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.is;tinymce.create("tinymce.plugins.Compat2x",{getInfo:function(){return{longname:"Compat2x",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x",version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}}});(function(){tinymce.extend(tinyMCE,{addToLang:function(f,e){d(e,function(h,g){tinyMCE.i18n[(tinyMCE.settings.language||"en")+"."+(f?f+"_":"")+g]=h})},getInstanceById:function(e){return this.get(e)}})})();(function(){var e=tinymce.EditorManager;tinyMCE.instances={};tinyMCE.plugins={};tinymce.PluginManager.onAdd.add(function(f,h,g){tinyMCE.plugins[h]=g});tinyMCE.majorVersion=tinymce.majorVersion;tinyMCE.minorVersion=tinymce.minorVersion;tinyMCE.releaseDate=tinymce.releaseDate;tinyMCE.baseURL=tinymce.baseURL;tinyMCE.isIE=tinyMCE.isMSIE=tinymce.isIE||tinymce.isOpera;tinyMCE.isMSIE5=tinymce.isIE;tinyMCE.isMSIE5_0=tinymce.isIE;tinyMCE.isMSIE7=tinymce.isIE;tinyMCE.isGecko=tinymce.isGecko;tinyMCE.isSafari=tinymce.isWebKit;tinyMCE.isOpera=tinymce.isOpera;tinyMCE.isMac=false;tinyMCE.isNS7=false;tinyMCE.isNS71=false;tinyMCE.compat=true;TinyMCE_Engine=tinyMCE;tinymce.extend(tinyMCE,{getParam:function(g,f){return this.activeEditor.getParam(g,f)},addEvent:function(i,g,h,j){tinymce.dom.Event.add(i,g,h,j||this)},getControlHTML:function(f){return e.activeEditor.controlManager.createControl(f)},loadCSS:function(f){tinymce.DOM.loadCSS(f)},importCSS:function(g,f){if(g==document){this.loadCSS(f)}else{new tinymce.dom.DOMUtils(g).loadCSS(f)}},log:function(){console.debug.apply(console,arguments)},getLang:function(h,g){var f=e.activeEditor.getLang(h.replace(/^lang_/g,""),g);if(/^[0-9\-.]+$/g.test(f)){return parseInt(f)}return f},isInstance:function(f){return f!=null&&typeof(f)=="object"&&f.execCommand},triggerNodeChange:function(){e.activeEditor.nodeChanged()},regexpReplace:function(j,f,h,i){var g;if(j==null){return j}if(typeof(i)=="undefined"){i="g"}g=new RegExp(f,i);return j.replace(g,h)},trim:function(f){return tinymce.trim(f)},xmlEncode:function(f){return tinymce.DOM.encode(f)},explode:function(f,h){var g=[];tinymce.each(f.split(h),function(i){if(i!=""){g.push(i)}});return g},switchClass:function(h,g){var f;if(/^mceButton/.test(g)){f=e.activeEditor.controlManager.get(h);if(!f){return}switch(g){case"mceButtonNormal":f.setDisabled(false);f.setActive(false);return;case"mceButtonDisabled":f.setDisabled(true);return;case"mceButtonSelected":f.setActive(true);f.setDisabled(false);return}}},addCSSClass:function(g,h,f){return tinymce.DOM.addClass(g,h,f)},hasCSSClass:function(f,g){return tinymce.DOM.hasClass(f,g)},removeCSSClass:function(f,g){return tinymce.DOM.removeClass(f,g)},getCSSClasses:function(){var f=e.activeEditor.dom.getClasses(),g=[];d(f,function(h){g.push(h["class"])});return g},setWindowArg:function(g,f){e.activeEditor.windowManager.params[g]=f},getWindowArg:function(i,g){var h=e.activeEditor.windowManager,f;f=h.getParam(i);if(f===""){return""}return f||h.getFeature(i)||g},getParentNode:function(h,g){return this._getDOM().getParent(h,g)},selectElements:function(o,k,m){var l,j=[],h,g;for(g=0,k=k.split(",");g<k.length;g++){for(l=0,h=o.getElementsByTagName(k[g]);l<h.length;l++){(!m||m(h[l]))&&j.push(h[l])}}return j},getNodeTree:function(i,f,g,h){return this.selectNodes(i,function(j){return(!g||j.nodeType==g)&&(!h||j.nodeName==h)},f?f:[])},getAttrib:function(g,h,f){return this._getDOM().getAttrib(g,h,f)},setAttrib:function(g,h,f){return this._getDOM().setAttrib(g,h,f)},getElementsByAttributeValue:function(m,k,g,h){var j,f=m.getElementsByTagName(k),l=[];for(j=0;j<f.length;j++){if(tinyMCE.getAttrib(f[j],g).indexOf(h)!=-1){l[l.length]=f[j]}}return l},selectNodes:function(k,j,g){var h;if(!g){g=[]}if(j(k)){g[g.length]=k}if(k.hasChildNodes()){for(h=0;h<k.childNodes.length;h++){tinyMCE.selectNodes(k.childNodes[h],j,g)}}return g},getContent:function(){return e.activeEditor.getContent()},getParentElement:function(i,g,h){if(g){g=new RegExp("^("+g.toUpperCase().replace(/,/g,"|")+")$","g")}return this._getDOM().getParent(i,function(f){return f.nodeType==1&&(!g||g.test(f.nodeName))&&(!h||h(f))},this.activeEditor.getBody())},importPluginLanguagePack:function(f){tinymce.PluginManager.requireLangPack(f)},getButtonHTML:function(l,j,h,k,i,g){var f=e.activeEditor;h=h.replace(/\{\$pluginurl\}/g,tinyMCE.pluginURL);h=h.replace(/\{\$themeurl\}/g,tinyMCE.themeURL);j=j.replace(/^lang_/g,"");return f.controlManager.createButton(l,{title:j,command:k,ui:i,value:g,scope:this,"class":"compat",image:h})},addSelectAccessibility:function(h,g,f){if(!g._isAccessible){g.onkeydown=tinyMCE.accessibleEventHandler;g.onblur=tinyMCE.accessibleEventHandler;g._isAccessible=true;g._win=f}return false},accessibleEventHandler:function(g){var h,f=this._win;g=tinymce.isIE?f.event:g;h=tinymce.isIE?g.srcElement:g.target;if(g.type=="blur"){if(h.oldonchange){h.onchange=h.oldonchange;h.oldonchange=null}return true}if(h.nodeName=="SELECT"&&!h.oldonchange){h.oldonchange=h.onchange;h.onchange=null}if(g.keyCode==13||g.keyCode==32){h.onchange=h.oldonchange;h.onchange();h.oldonchange=null;tinyMCE.cancelEvent(g);return false}return true},cancelEvent:function(f){return tinymce.dom.Event.cancel(f)},handleVisualAid:function(f){e.activeEditor.addVisual(f)},getAbsPosition:function(g,f){return tinymce.DOM.getPos(g,f)},cleanupEventStr:function(f){f=""+f;f=f.replace("function anonymous()\n{\n","");f=f.replace("\n}","");f=f.replace(/^return true;/gi,"");return f},getVisualAidClass:function(f){return f},parseStyle:function(f){return this._getDOM().parseStyle(f)},serializeStyle:function(f){return this._getDOM().serializeStyle(f)},openWindow:function(h,g){var f=e.activeEditor,i={},j;for(j in h){i[j]=h[j]}h=i;g=g||{};h.url=new tinymce.util.URI(tinymce.ThemeManager.themeURLs[f.settings.theme]).toAbsolute(h.file);h.inline=h.inline||g.inline;f.windowManager.open(h,g)},closeWindow:function(f){e.activeEditor.windowManager.close(f)},getOuterHTML:function(f){return tinymce.DOM.getOuterHTML(f)},setOuterHTML:function(g,f,i){return tinymce.DOM.setOuterHTML(g,f,i)},hasPlugin:function(f){return tinymce.PluginManager.get(f)!=null},_setEventsEnabled:function(){},addPlugin:function(g,i){var h=this;function j(f){tinyMCE.selectedInstance=f;f.onInit.add(function(){h.settings=f.settings;h.settings.base_href=tinyMCE.documentBasePath;tinyMCE.settings=h.settings;tinyMCE.documentBasePath=f.documentBasePath;if(i.initInstance){i.initInstance(f)}f.contentDocument=f.getDoc();f.contentWindow=f.getWin();f.undoRedo=f.undoManager;f.startContent=f.getContent({format:"raw"});tinyMCE.instances[f.id]=f;tinyMCE.loadedFiles=[]});f.onActivate.add(function(){tinyMCE.settings=f.settings;tinyMCE.selectedInstance=f});if(i.handleNodeChange){f.onNodeChange.add(function(l,k,m){i.handleNodeChange(l.id,m,0,0,false,!l.selection.isCollapsed())})}if(i.onChange){f.onChange.add(function(k,l){return i.onChange(k)})}if(i.cleanup){f.onGetContent.add(function(){})}this.getInfo=function(){return i.getInfo()};this.createControl=function(k){tinyMCE.pluginURL=tinymce.baseURL+"/plugins/"+g;tinyMCE.themeURL=tinymce.baseURL+"/themes/"+tinyMCE.activeEditor.settings.theme;if(i.getControlHTML){return i.getControlHTML(k)}return null};this.execCommand=function(l,k,m){if(i.execCommand){return i.execCommand(f.id,f.getBody(),l,k,m)}return false}}tinymce.PluginManager.add(g,j)},_getDOM:function(){return tinyMCE.activeEditor?tinyMCE.activeEditor.dom:tinymce.DOM},convertRelativeToAbsoluteURL:function(f,g){return new tinymce.util.URI(f).toAbsolute(g)},convertAbsoluteURLToRelativeURL:function(f,g){return new tinymce.util.URI(f).toRelative(g)}});tinymce.extend(tinymce.Editor.prototype,{getFocusElement:function(){return this.selection.getNode()},getData:function(f){if(!this.data){this.data=[]}if(!this.data[f]){this.data[f]=[]}return this.data[f]},hasPlugin:function(f){return this.plugins[f]!=null},getContainerWin:function(){return window},getHTML:function(f){return this.getContent({format:f?"raw":"html"})},setHTML:function(f){this.setContent(f)},getSel:function(){return this.selection.getSel()},getRng:function(){return this.selection.getRng()},isHidden:function(){var f;if(!tinymce.isGecko){return false}f=this.getSel();return(!f||!f.rangeCount||f.rangeCount==0)},translate:function(f){var h=this.settings.language,g;if(!f){return f}g=tinymce.EditorManager.i18n[h+"."+f]||f.replace(/{\#([^}]+)\}/g,function(j,i){return tinymce.EditorManager.i18n[h+"."+i]||"{#"+i+"}"});g=g.replace(/{\$lang_([^}]+)\}/g,function(j,i){return tinymce.EditorManager.i18n[h+"."+i]||"{$lang_"+i+"}"});return g},repaint:function(){this.execCommand("mceRepaint")}});tinymce.extend(tinymce.dom.Selection.prototype,{getSelectedText:function(){return this.getContent({format:"text"})},getSelectedHTML:function(){return this.getContent({format:"html"})},getFocusElement:function(){return this.getNode()},selectNode:function(i,j,g,f){var h=this;h.select(i,g||0);if(!b(j)){j=true}if(j){if(!b(f)){f=true}h.collapse(f)}}})}).call(this);tinymce.PluginManager.add("compat2x",tinymce.plugins.Compat2x)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,616 @@
+/**
+ * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
+
+	tinymce.create('tinymce.plugins.Compat2x', {
+		getInfo : function() {
+			return {
+				longname : 'Compat2x',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',
+				version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+			};
+		}
+	});
+
+	(function() {
+		// Extend tinyMCE/EditorManager
+		tinymce.extend(tinyMCE, {
+			addToLang : function(p, l) {
+				each(l, function(v, k) {
+					tinyMCE.i18n[(tinyMCE.settings.language || 'en') + '.' + (p ? p + '_' : '') + k] = v;
+				});
+			},
+
+			getInstanceById : function(n) {
+				return this.get(n);
+			}
+		});
+	})();
+
+	(function() {
+		var EditorManager = tinymce.EditorManager;
+
+		tinyMCE.instances = {};
+		tinyMCE.plugins = {};
+		tinymce.PluginManager.onAdd.add(function(pm, n, p) {
+			tinyMCE.plugins[n] = p;
+		});
+
+		tinyMCE.majorVersion = tinymce.majorVersion;
+		tinyMCE.minorVersion = tinymce.minorVersion;
+		tinyMCE.releaseDate = tinymce.releaseDate;
+		tinyMCE.baseURL = tinymce.baseURL;
+		tinyMCE.isIE = tinyMCE.isMSIE = tinymce.isIE || tinymce.isOpera;
+		tinyMCE.isMSIE5 = tinymce.isIE;
+		tinyMCE.isMSIE5_0 = tinymce.isIE;
+		tinyMCE.isMSIE7 = tinymce.isIE;
+		tinyMCE.isGecko = tinymce.isGecko;
+		tinyMCE.isSafari = tinymce.isWebKit;
+		tinyMCE.isOpera = tinymce.isOpera;
+		tinyMCE.isMac = false;
+		tinyMCE.isNS7 = false;
+		tinyMCE.isNS71 = false;
+		tinyMCE.compat = true;
+
+		// Extend tinyMCE class
+		TinyMCE_Engine = tinyMCE;
+		tinymce.extend(tinyMCE, {
+			getParam : function(n, dv) {
+				return this.activeEditor.getParam(n, dv);
+			},
+
+			addEvent : function(e, na, f, sc) {
+				tinymce.dom.Event.add(e, na, f, sc || this);
+			},
+
+			getControlHTML : function(n) {
+				return EditorManager.activeEditor.controlManager.createControl(n);
+			},
+
+			loadCSS : function(u) {
+				tinymce.DOM.loadCSS(u);
+			},
+
+			importCSS : function(doc, u) {
+				if (doc == document)
+					this.loadCSS(u);
+				else
+					new tinymce.dom.DOMUtils(doc).loadCSS(u);
+			},
+
+			log : function() {
+				console.debug.apply(console, arguments);
+			},
+
+			getLang : function(n, dv) {
+				var v = EditorManager.activeEditor.getLang(n.replace(/^lang_/g, ''), dv);
+
+				// Is number
+				if (/^[0-9\-.]+$/g.test(v))
+					return parseInt(v);
+
+				return v;
+			},
+
+			isInstance : function(o) {
+				return o != null && typeof(o) == "object" && o.execCommand;
+			},
+
+			triggerNodeChange : function() {
+				EditorManager.activeEditor.nodeChanged();
+			},
+
+			regexpReplace : function(in_str, reg_exp, replace_str, opts) {
+				var re;
+
+				if (in_str == null)
+					return in_str;
+
+				if (typeof(opts) == "undefined")
+					opts = 'g';
+
+				re = new RegExp(reg_exp, opts);
+
+				return in_str.replace(re, replace_str);
+			},
+
+			trim : function(s) {
+				return tinymce.trim(s);
+			},
+
+			xmlEncode : function(s) {
+				return tinymce.DOM.encode(s);
+			},
+
+			explode : function(s, d) {
+				var o = [];
+
+				tinymce.each(s.split(d), function(v) {
+					if (v != '')
+						o.push(v);
+				});
+
+				return o;
+			},
+
+			switchClass : function(id, cls) {
+				var b;
+
+				if (/^mceButton/.test(cls)) {
+					b = EditorManager.activeEditor.controlManager.get(id);
+
+					if (!b)
+						return;
+
+					switch (cls) {
+						case "mceButtonNormal":
+							b.setDisabled(false);
+							b.setActive(false);
+							return;
+
+						case "mceButtonDisabled":
+							b.setDisabled(true);
+							return;
+
+						case "mceButtonSelected":
+							b.setActive(true);
+							b.setDisabled(false);
+							return;
+					}
+				}
+			},
+
+			addCSSClass : function(e, n, b) {
+				return tinymce.DOM.addClass(e, n, b);
+			},
+
+			hasCSSClass : function(e, n) {
+				return tinymce.DOM.hasClass(e, n);
+			},
+
+			removeCSSClass : function(e, n) {
+				return tinymce.DOM.removeClass(e, n);
+			},
+
+			getCSSClasses : function() {
+				var cl = EditorManager.activeEditor.dom.getClasses(), o = [];
+
+				each(cl, function(c) {
+					o.push(c['class']);
+				});
+
+				return o;
+			},
+
+			setWindowArg : function(n, v) {
+				EditorManager.activeEditor.windowManager.params[n] = v;
+			},
+
+			getWindowArg : function(n, dv) {
+				var wm = EditorManager.activeEditor.windowManager, v;
+
+				v = wm.getParam(n);
+				if (v === '')
+					return '';
+
+				return v || wm.getFeature(n) || dv;
+			},
+
+			getParentNode : function(n, f) {
+				return this._getDOM().getParent(n, f);
+			},
+
+			selectElements : function(n, na, f) {
+				var i, a = [], nl, x;
+
+				for (x=0, na = na.split(','); x<na.length; x++)
+					for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)
+						(!f || f(nl[i])) && a.push(nl[i]);
+
+				return a;
+			},
+
+			getNodeTree : function(n, na, t, nn) {
+				return this.selectNodes(n, function(n) {
+					return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);
+				}, na ? na : []);
+			},
+
+			getAttrib : function(e, n, dv) {
+				return this._getDOM().getAttrib(e, n, dv);
+			},
+
+			setAttrib : function(e, n, v) {
+				return this._getDOM().setAttrib(e, n, v);
+			},
+
+			getElementsByAttributeValue : function(n, e, a, v) {
+				var i, nl = n.getElementsByTagName(e), o = [];
+
+				for (i=0; i<nl.length; i++) {
+					if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)
+						o[o.length] = nl[i];
+				}
+
+				return o;
+			},
+
+			selectNodes : function(n, f, a) {
+				var i;
+
+				if (!a)
+					a = [];
+
+				if (f(n))
+					a[a.length] = n;
+
+				if (n.hasChildNodes()) {
+					for (i=0; i<n.childNodes.length; i++)
+						tinyMCE.selectNodes(n.childNodes[i], f, a);
+				}
+
+				return a;
+			},
+
+			getContent : function() {
+				return EditorManager.activeEditor.getContent();
+			},
+
+			getParentElement : function(n, na, f) {
+				if (na)
+					na = new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$', 'g');
+
+				return this._getDOM().getParent(n, function(n) {
+					return n.nodeType == 1 && (!na || na.test(n.nodeName)) && (!f || f(n));
+				}, this.activeEditor.getBody());
+			},
+
+			importPluginLanguagePack : function(n) {
+				tinymce.PluginManager.requireLangPack(n);
+			},
+
+			getButtonHTML : function(cn, lang, img, c, u, v) {
+				var ed = EditorManager.activeEditor;
+
+				img = img.replace(/\{\$pluginurl\}/g, tinyMCE.pluginURL);
+				img = img.replace(/\{\$themeurl\}/g, tinyMCE.themeURL);
+				lang = lang.replace(/^lang_/g, '');
+
+				return ed.controlManager.createButton(cn, {
+					title : lang,
+					command : c,
+					ui : u,
+					value : v,
+					scope : this,
+					'class' : 'compat',
+					image : img
+				});
+			},
+
+			addSelectAccessibility : function(e, s, w) {
+				// Add event handlers 
+				if (!s._isAccessible) {
+					s.onkeydown = tinyMCE.accessibleEventHandler;
+					s.onblur = tinyMCE.accessibleEventHandler;
+					s._isAccessible = true;
+					s._win = w;
+				}
+
+				return false;
+			},
+
+			accessibleEventHandler : function(e) {
+				var elm, win = this._win;
+
+				e = tinymce.isIE ? win.event : e;
+				elm = tinymce.isIE ? e.srcElement : e.target;
+
+				// Unpiggyback onchange on blur
+				if (e.type == "blur") {
+					if (elm.oldonchange) {
+						elm.onchange = elm.oldonchange;
+						elm.oldonchange = null;
+					}
+
+					return true;
+				}
+
+				// Piggyback onchange
+				if (elm.nodeName == "SELECT" && !elm.oldonchange) {
+					elm.oldonchange = elm.onchange;
+					elm.onchange = null;
+				}
+
+				// Execute onchange and remove piggyback
+				if (e.keyCode == 13 || e.keyCode == 32) {
+					elm.onchange = elm.oldonchange;
+					elm.onchange();
+					elm.oldonchange = null;
+
+					tinyMCE.cancelEvent(e);
+					return false;
+				}
+
+				return true;
+			},
+
+			cancelEvent : function(e) {
+				return tinymce.dom.Event.cancel(e);
+			},
+
+			handleVisualAid : function(e) {
+				EditorManager.activeEditor.addVisual(e);
+			},
+
+			getAbsPosition : function(n, r) {
+				return tinymce.DOM.getPos(n, r);
+			},
+
+			cleanupEventStr : function(s) {
+				s = "" + s;
+				s = s.replace('function anonymous()\n{\n', '');
+				s = s.replace('\n}', '');
+				s = s.replace(/^return true;/gi, ''); // Remove event blocker
+
+				return s;
+			},
+
+			getVisualAidClass : function(s) {
+				// TODO: Implement
+				return s;
+			},
+
+			parseStyle : function(s) {
+				return this._getDOM().parseStyle(s);
+			},
+
+			serializeStyle : function(s) {
+				return this._getDOM().serializeStyle(s);
+			},
+
+			openWindow : function(tpl, args) {
+				var ed = EditorManager.activeEditor, o = {}, n;
+
+				// Convert name/value array to object
+				for (n in tpl)
+					o[n] = tpl[n];
+
+				tpl = o;
+
+				args = args || {};
+				tpl.url = new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);
+				tpl.inline = tpl.inline || args.inline;
+
+				ed.windowManager.open(tpl, args);
+			},
+
+			closeWindow : function(win) {
+				EditorManager.activeEditor.windowManager.close(win);
+			},
+
+			getOuterHTML : function(e) {
+				return tinymce.DOM.getOuterHTML(e);
+			},
+
+			setOuterHTML : function(e, h, d) {
+				return tinymce.DOM.setOuterHTML(e, h, d);
+			},
+
+			hasPlugin : function(n) {
+				return tinymce.PluginManager.get(n) != null;
+			},
+
+			_setEventsEnabled : function() {
+				// Ignore it!!
+			},
+
+			addPlugin : function(pn, f) {
+				var t = this;
+
+				function PluginWrapper(ed) {
+					tinyMCE.selectedInstance = ed;
+
+					ed.onInit.add(function() {
+						t.settings = ed.settings;
+						t.settings['base_href'] = tinyMCE.documentBasePath;
+						tinyMCE.settings = t.settings;
+						tinyMCE.documentBasePath = ed.documentBasePath;
+						//ed.formElement = DOM.get(ed.id);
+
+						if (f.initInstance)
+							f.initInstance(ed);
+
+						ed.contentDocument = ed.getDoc();
+						ed.contentWindow = ed.getWin();
+						ed.undoRedo = ed.undoManager;
+						ed.startContent = ed.getContent({format : 'raw'});
+
+						tinyMCE.instances[ed.id] = ed;
+						tinyMCE.loadedFiles = [];
+					});
+
+					ed.onActivate.add(function() {
+						tinyMCE.settings = ed.settings;
+						tinyMCE.selectedInstance = ed;
+					});
+
+				/*	if (f.removeInstance) {
+						ed.onDestroy.add(function() {
+							return f.removeInstance(ed.id);
+						});
+					}*/
+
+					if (f.handleNodeChange) {
+						ed.onNodeChange.add(function(ed, cm, n) {
+							f.handleNodeChange(ed.id, n, 0, 0, false, !ed.selection.isCollapsed());
+						});
+					}
+
+					if (f.onChange) {
+						ed.onChange.add(function(ed, n) {
+							return f.onChange(ed);
+						});
+					}
+
+					if (f.cleanup) {
+						ed.onGetContent.add(function() {
+							//f.cleanup(type, content, inst);
+						});
+					}
+
+					this.getInfo = function() {
+						return f.getInfo();
+					};
+
+					this.createControl = function(n) {
+						tinyMCE.pluginURL = tinymce.baseURL + '/plugins/' + pn;
+						tinyMCE.themeURL = tinymce.baseURL + '/themes/' + tinyMCE.activeEditor.settings.theme;
+
+						if (f.getControlHTML)
+							return f.getControlHTML(n);
+
+						return null;
+					};
+
+					this.execCommand = function(cmd, ui, val) {
+						if (f.execCommand)
+							return f.execCommand(ed.id, ed.getBody(), cmd, ui, val);
+
+						return false;
+					};
+				};
+
+				tinymce.PluginManager.add(pn, PluginWrapper);
+			},
+
+			_getDOM : function() {
+				return tinyMCE.activeEditor ? tinyMCE.activeEditor.dom : tinymce.DOM;
+			},
+
+			convertRelativeToAbsoluteURL : function(b, u) {
+				return new tinymce.util.URI(b).toAbsolute(u);
+			},
+
+			convertAbsoluteURLToRelativeURL : function(b, u) {
+				return new tinymce.util.URI(b).toRelative(u);
+			}
+		});
+
+		// Extend Editor class
+		tinymce.extend(tinymce.Editor.prototype, {
+			getFocusElement : function() {
+				return this.selection.getNode();
+			},
+
+			getData : function(n) {
+				if (!this.data)
+					this.data = [];
+
+				if (!this.data[n])
+					this.data[n] = [];
+
+				return this.data[n];
+			},
+
+			hasPlugin : function(n) {
+				return this.plugins[n] != null;
+			},
+
+			getContainerWin : function() {
+				return window;
+			},
+
+			getHTML : function(raw) {
+				return this.getContent({ format : raw ? 'raw' : 'html'});
+			},
+
+			setHTML : function(h) {
+				this.setContent(h);
+			},
+
+			getSel : function() {
+				return this.selection.getSel();
+			},
+
+			getRng : function() {
+				return this.selection.getRng();
+			},
+
+			isHidden : function() {
+				var s;
+
+				if (!tinymce.isGecko)
+					return false;
+
+				s = this.getSel();
+
+				// Weird, wheres that cursor selection?
+				return (!s || !s.rangeCount || s.rangeCount == 0);
+			},
+
+			translate : function(s) {
+				var c = this.settings.language, o;
+
+				if (!s)
+					return s;
+
+				o = tinymce.EditorManager.i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
+					return tinymce.EditorManager.i18n[c + '.' + b] || '{#' + b + '}';
+				});
+
+				o = o.replace(/{\$lang_([^}]+)\}/g, function(a, b) {
+					return tinymce.EditorManager.i18n[c + '.' + b] || '{$lang_' + b + '}';
+				});
+
+				return o;
+			},
+
+			repaint : function() {
+				this.execCommand('mceRepaint');
+			}
+		});
+
+		// Extend selection
+		tinymce.extend(tinymce.dom.Selection.prototype, {
+			getSelectedText : function() {
+				return this.getContent({format : 'text'});
+			},
+
+			getSelectedHTML : function() {
+				return this.getContent({format : 'html'});
+			},
+
+			getFocusElement : function() {
+				return this.getNode();
+			},
+
+			selectNode : function(node, collapse, select_text_node, to_start) {
+				var t = this;
+
+				t.select(node, select_text_node || 0);
+
+				if (!is(collapse))
+					collapse = true;
+
+				if (collapse) {
+					if (!is(to_start))
+						to_start = true;
+
+					t.collapse(to_start);
+				}
+			}
+		});
+	}).call(this);
+
+	// Register plugin
+	tinymce.PluginManager.add('compat2x', tinymce.plugins.Compat2x);
+})();
+
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-if(!tinyMCE.settings['contextmenu_skip_plugin_css']){tinyMCE.loadCSS(tinyMCE.baseURL+"/plugins/contextmenu/css/contextmenu.css")}var TinyMCE_ContextMenuPlugin={_contextMenu:null,getInfo:function(){return{longname:'Context menus',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE5_0&&tinyMCE.isOpera)return;TinyMCE_ContextMenuPlugin._contextMenu=new TinyMCE_ContextMenu({commandhandler:"TinyMCE_ContextMenuPlugin._commandHandler",spacer_image:tinyMCE.baseURL+"/plugins/contextmenu/images/spacer.gif"});tinyMCE.addEvent(inst.getDoc(),"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"contextmenu",function(e){TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?inst.contentWindow.event:e,inst)})}else tinyMCE.addEvent(inst.getDoc(),"contextmenu",TinyMCE_ContextMenuPlugin._onContextMenu)},_onContextMenu:function(e){var elm=tinyMCE.isMSIE?e.srcElement:e.target;var targetInst,body;if((body=tinyMCE.getParentElement(elm,"body"))!=null){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(body==inst.getBody()){targetInst=inst;break}}return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?targetInst.contentWindow.event:e,targetInst)}},_showContextMenu:function(e,inst){if(e.ctrlKey)return true;function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}var x,y,elm,contextMenu;var pos=tinyMCE.getAbsPosition(inst.iframeElement);x=tinyMCE.isMSIE?e.screenX:pos.absLeft+(e.pageX-inst.getBody().scrollLeft);y=tinyMCE.isMSIE?e.screenY:pos.absTop+(e.pageY-inst.getBody().scrollTop);elm=tinyMCE.isMSIE?e.srcElement:e.target;contextMenu=this._contextMenu;contextMenu.inst=inst;window.setTimeout(function(){var theme=tinyMCE.getParam("theme");contextMenu.clearAll();var sel=inst.selection.getSelectedText().length!=0||elm.nodeName=="IMG";contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_cut_desc","Cut","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_copy_desc","Copy","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_paste_desc","Paste","",false);if(sel||(elm?(elm.nodeName=='A'&&tinyMCE.getAttrib(elm,'name')=='')||(elm.nodeName=='IMG'):false)){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/link.gif","$lang_link_desc",inst.hasPlugin("advlink")?"mceAdvLink":"mceLink");contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/unlink.gif","$lang_unlink_desc","unlink","",(elm?(elm.nodeName!='A')&&(elm.nodeName!='IMG'):true))}elm=tinyMCE.getParentElement(elm,"img,table,td"+(inst.hasPlugin("advhr")?',hr':''));if(elm){switch(elm.nodeName){case"IMG":contextMenu.addSeparator();if(tinyMCE.hasPlugin('flash')&&tinyMCE.getAttrib(elm,'class').indexOf('mceItemFlash')!=-1)contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_flash_props","mceFlash");else if(tinyMCE.hasPlugin('media')&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm,'class')))contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_media_title","mceMedia");else contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/image.gif","$lang_image_props_desc",inst.hasPlugin("advimage")?"mceAdvImage":"mceImage");break;case"HR":contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/advhr/images/advhr.gif","$lang_insert_advhr_desc","mceAdvancedHr");break;case"TABLE":case"TD":if(inst.hasPlugin("table")){var colspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"colspan");var rowspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_table_cut_row_desc","mceTableCutRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_table_copy_row_desc","mceTableCopyRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_before_desc","mceTablePasteRowBefore","",inst.tableRowClipboard==null);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_after_desc","mceTablePasteRowAfter","",inst.tableRowClipboard==null);contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_props_desc","mceInsertTable");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_cell_props.gif","$lang_table_cell_desc","mceTableCellProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete.gif","$lang_table_del","mceTableDelete");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_row_props.gif","$lang_table_row_desc","mceTableRowProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_before.gif","$lang_table_row_before_desc","mceTableInsertRowBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_after.gif","$lang_table_row_after_desc","mceTableInsertRowAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_row.gif","$lang_table_delete_row_desc","mceTableDeleteRow");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_before.gif","$lang_table_col_before_desc","mceTableInsertColBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_after.gif","$lang_table_col_after_desc","mceTableInsertColAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_col.gif","$lang_table_delete_col_desc","mceTableDeleteCol");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_split_cells.gif","$lang_table_split_cells_desc","mceTableSplitCells","",(colspan=="1"&&rowspan=="1"));contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_merge_cells.gif","$lang_table_merge_cells_desc","mceTableMergeCells","",false)}break}}else{if(inst.hasPlugin("table")){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert")}}contextMenu.show(x,y)},10);tinyMCE.cancelEvent(e);return false},_hideContextMenu:function(){if(TinyMCE_ContextMenuPlugin._contextMenu)TinyMCE_ContextMenuPlugin._contextMenu.hide()},_commandHandler:function(command,value){var cm=TinyMCE_ContextMenuPlugin._contextMenu;cm.hide();var ui=false;if(command=="mceInsertTable"||command=="mceTableCellProps"||command=="mceTableRowProps"||command=="mceTableMergeCells")ui=true;if(command=="Paste")value=null;if(tinyMCE.getParam("dialog_type")=="modal"&&tinyMCE.isMSIE){window.setTimeout(function(){cm.inst.execCommand(command,ui,value)},100)}else cm.inst.execCommand(command,ui,value)}};tinyMCE.addPlugin("contextmenu",TinyMCE_ContextMenuPlugin);function TinyMCE_ContextMenu(settings){var doc,self=this;function defParam(key,def_val){settings[key]=typeof(settings[key])!="undefined"?settings[key]:def_val}this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.contextMenuDiv=document.createElement("div");this.contextMenuDiv.className="contextMenu";this.contextMenuDiv.setAttribute("class","contextMenu");this.contextMenuDiv.style.display="none";this.contextMenuDiv.style.position='absolute';this.contextMenuDiv.style.zindex=1000;this.contextMenuDiv.style.left='0';this.contextMenuDiv.style.top='0';this.contextMenuDiv.unselectable="on";document.body.appendChild(this.contextMenuDiv);defParam("commandhandler","");defParam("spacer_image","images/spacer.gif");this.items=new Array();this.settings=settings;this.html="";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop=window.createPopup();doc=this.pop.document;doc.open();doc.write('<html><head><link href="'+tinyMCE.baseURL+'/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');doc.close()}};TinyMCE_ContextMenu.prototype={clearAll:function(){this.html="";this.contextMenuDiv.innerHTML=""},addSeparator:function(){this.html+='<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="'+this.settings['spacer_image']+'" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="'+this.settings['spacer_image']+'" /></td></tr>'},addItem:function(icon,title,command,value,disabled){if(title.charAt(0)=='$')title=tinyMCE.getLang(title.substring(1));var onMouseDown='';var html='';if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0)onMouseDown='contextMenu.execCommand(\''+command+'\', \''+value+'\');return false;';else onMouseDown=this.settings['commandhandler']+'(\''+command+'\', \''+value+'\');return false;';if(icon=="")icon=this.settings['spacer_image'];if(!disabled)html+='<tr class="contextMenuItem">';else html+='<tr class="contextMenuItemDisabled">';html+='<td class="contextMenuIcon"><img src="'+icon+'" width="20" height="20" class="contextMenuImage" /></td>';html+='<td><div class="contextMenuText">';html+='<a href="javascript:void(0);" onclick="'+onMouseDown+'" onmousedown="return false;">&#160;';html+=title;html+='&#160;</a>';html+='</div></td>';html+='</tr>';this.html+=html},show:function(x,y){var vp,width,height,yo;if(this.html=="")return;var html='';html+='<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';html+=this.html;html+='</table>';this.contextMenuDiv.innerHTML=html;this.contextMenuDiv.style.display="block";width=this.contextMenuDiv.offsetWidth;height=this.contextMenuDiv.offsetHeight;this.contextMenuDiv.style.display="none";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop.document.body.innerHTML='<div class="contextMenu">'+html+"</div>";this.pop.document.tinyMCE=tinyMCE;this.pop.document.contextMenu=this;this.pop.show(x,y,width,height)}else{vp=this.getViewPort();yo=tinyMCE.isMSIE5_0?document.body.scrollTop:self.pageYOffset;this.contextMenuDiv.style.left=(x>vp.left+vp.width-width?vp.left+vp.width-width:x)+'px';this.contextMenuDiv.style.top=(y>vp.top+vp.height-height?vp.top+vp.height-height:y)+'px';this.contextMenuDiv.style.display="block"}},getViewPort:function(){return{left:self.pageXOffset||self.document.documentElement.scrollLeft||self.document.body.scrollLeft,top:self.pageYOffset||self.document.documentElement.scrollTop||self.document.body.scrollTop,width:document.documentElement.offsetWidth||document.body.offsetWidth,height:self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},hide:function(){if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera)this.pop.hide();else this.contextMenuDiv.style.display="none"},execCommand:function(command,value){eval(this.settings['commandhandler']+"(command, value);")}};
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(d){var f=this;f.editor=d;f.onContextMenu=new tinymce.util.Dispatcher(this);d.onContextMenu.add(function(g,h){if(!h.ctrlKey){f._getMenu(g).showMenu(h.clientX,h.clientY);a.add(g.getDoc(),"click",e);a.cancel(h)}});function e(){if(f._menu){f._menu.removeAll();f._menu.destroy();a.remove(d.getDoc(),"click",e)}}d.onMouseDown.add(e);d.onKeyDown.add(e)},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,360 +1,95 @@
-/**
- * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-if (!tinyMCE.settings['contextmenu_skip_plugin_css']) {
-	tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css");
-}
-
-var TinyMCE_ContextMenuPlugin = {
-	// Private fields
-	_contextMenu : null,
-
-	getInfo : function() {
-		return {
-			longname : 'Context menus',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		// Is not working on MSIE 5.0 or Opera no contextmenu event
-		if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera)
-			return;
-
-		TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({
-			commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler",
-			spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif"
-		});
-
-		// Add hide event handles
-		tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu);
-		tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);
-		tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);
-		tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu);
-		tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);
-		tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);
-
-		// Attach contextmenu event
-		if (tinyMCE.isGecko) {
-			tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);});
-		} else
-			tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu);
-	},
-
-	// Private plugin internal methods
-
-	_onContextMenu : function(e) {
-		var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
-		var targetInst, body;
-
-		// Find instance
-		if ((body = tinyMCE.getParentElement(elm, "body")) != null) {
-			for (var n in tinyMCE.instances) {
-				var inst = tinyMCE.instances[n];
-				if (!tinyMCE.isInstance(inst))
-					continue;
-
-				if (body == inst.getBody()) {
-					targetInst = inst;
-					break;
-				}
-			}
-
-			return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst);
-		}
-	},
-
-	_showContextMenu : function(e, inst) {
-		if (e.ctrlKey)
-			return true;
-
-		function getAttrib(elm, name) {
-			return elm.getAttribute(name) ? elm.getAttribute(name) : "";
-		}
-
-		var x, y, elm, contextMenu;
-		var pos = tinyMCE.getAbsPosition(inst.iframeElement);
-
-		x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft);
-		y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop);
-		elm = tinyMCE.isMSIE ? e.srcElement : e.target;
-
-		contextMenu = this._contextMenu;
-		contextMenu.inst = inst;
-
-		// Mozilla needs some time
-		window.setTimeout(function () {
-			var theme = tinyMCE.getParam("theme");
-
-			contextMenu.clearAll();
-			var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG";
-
-			// Default items
-			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel);
-			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel);
-			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false);
-
-			if (sel || (elm ? (elm.nodeName == 'A' && tinyMCE.getAttrib(elm, 'name') == '') || (elm.nodeName == 'IMG') : false)) {
-				contextMenu.addSeparator();
-				contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink");
-				contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true));
-			}
-
-			// Get element
-			elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : ''));
-			if (elm) {
-				switch (elm.nodeName) {
-					case "IMG":
-						contextMenu.addSeparator();
-
-						// If flash
-						if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1)
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash");
-						else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class')))
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia");
-						else
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage");
-						break;
-
-					case "HR":
-						contextMenu.addSeparator();
-						contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr");
-						break;
-
-					case "TABLE":
-					case "TD":
-						// Is table plugin loaded
-						if (inst.hasPlugin("table")) {
-							var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan");
-							var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan");
-
-							colspan = colspan == "" ? "1" : colspan;
-							rowspan = rowspan == "" ? "1" : rowspan;
-
-							contextMenu.addSeparator();
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow");
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow");
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null);
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null);
-
-	/*						contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false);
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false);
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false);
-							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/
-							contextMenu.addSeparator();
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete");
-							contextMenu.addSeparator();
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow");
-							contextMenu.addSeparator();
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter");
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol");
-							contextMenu.addSeparator();
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1"));
-							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false);
-						}
-						break;
-				}
-			}  else {
-				// Add table specific
-				if (inst.hasPlugin("table")) {
-					contextMenu.addSeparator();
-					contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");
-				}
-			}
-
-			contextMenu.show(x, y);
-		}, 10);
-
-		// Cancel default handeling
-		tinyMCE.cancelEvent(e);
-		return false;
-	},
-
-	_hideContextMenu : function() {
-		if (TinyMCE_ContextMenuPlugin._contextMenu)
-			TinyMCE_ContextMenuPlugin._contextMenu.hide();
-	},
-
-	_commandHandler : function(command, value) {
-		var cm = TinyMCE_ContextMenuPlugin._contextMenu;
-
-		cm.hide();
-
-		// UI must be true on these
-		var ui = false;
-		if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells")
-			ui = true;
-
-		if (command == "Paste")
-			value = null;
-
-		if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) {
-			// Cell properties will generate access denied error is this isn't done?!
-			window.setTimeout(function() {
-				cm.inst.execCommand(command, ui, value);
-			}, 100);
-		} else
-			cm.inst.execCommand(command, ui, value);
-	}
-};
-
-tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin);
-
-// Context menu class
-
-function TinyMCE_ContextMenu(settings) {
-	var doc, self = this;
-
-	// Default value function
-	function defParam(key, def_val) {
-		settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val;
-	}
-
-	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
-
-	// Setup contextmenu div
-	this.contextMenuDiv = document.createElement("div");
-	this.contextMenuDiv.className = "contextMenu";
-	this.contextMenuDiv.setAttribute("class", "contextMenu");
-	this.contextMenuDiv.style.display = "none";
-	this.contextMenuDiv.style.position = 'absolute';
-	this.contextMenuDiv.style.zindex = 1000;
-	this.contextMenuDiv.style.left = '0';
-	this.contextMenuDiv.style.top = '0';
-	this.contextMenuDiv.unselectable = "on";
-
-	document.body.appendChild(this.contextMenuDiv);
-
-	// Setup default values
-	defParam("commandhandler", "");
-	defParam("spacer_image", "images/spacer.gif");
-
-	this.items = new Array();
-	this.settings = settings;
-	this.html = "";
-
-	// IE Popup
-	if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {
-		this.pop = window.createPopup();
-		doc = this.pop.document;
-		doc.open();
-		doc.write('<html><head><link href="' + tinyMCE.baseURL + '/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');
-		doc.close();
-	}
-};
-
-TinyMCE_ContextMenu.prototype = {
-	clearAll : function() {
-		this.html = "";
-		this.contextMenuDiv.innerHTML = "";
-	},
-
-	addSeparator : function() {
-		this.html += '<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="' + this.settings['spacer_image'] + '" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="' + this.settings['spacer_image'] + '" /></td></tr>';
-	},
-
-	addItem : function(icon, title, command, value, disabled) {
-		if (title.charAt(0) == '$')
-			title = tinyMCE.getLang(title.substring(1));
-
-		var onMouseDown = '';
-		var html = '';
-
-		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0)
-			onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;';
-		else
-			onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;';
-
-		if (icon == "")
-			icon = this.settings['spacer_image'];
-
-		if (!disabled)
-			html += '<tr class="contextMenuItem">';
-		else
-			html += '<tr class="contextMenuItemDisabled">';
-
-		html += '<td class="contextMenuIcon"><img src="' + icon + '" width="20" height="20" class="contextMenuImage" /></td>';
-		html += '<td><div class="contextMenuText">';
-		html += '<a href="javascript:void(0);" onclick="' + onMouseDown + '" onmousedown="return false;">&#160;';
-
-		// Add text
-		html += title;
-
-		html += '&#160;</a>';
-		html += '</div></td>';
-		html += '</tr>';
-
-		// Add to main
-		this.html += html;
-	},
-
-	show : function(x, y) {
-		var vp, width, height, yo;
-
-		if (this.html == "")
-			return;
-
-		var html = '';
-
-		html += '<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';
-		html += this.html;
-		html += '</table>';
-
-		this.contextMenuDiv.innerHTML = html;
-
-		// Get dimensions
-		this.contextMenuDiv.style.display = "block";
-		width = this.contextMenuDiv.offsetWidth;
-		height = this.contextMenuDiv.offsetHeight;
-		this.contextMenuDiv.style.display = "none";
-
-		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {
-			// Setup popup and show
-			this.pop.document.body.innerHTML = '<div class="contextMenu">' + html + "</div>";
-			this.pop.document.tinyMCE = tinyMCE;
-			this.pop.document.contextMenu = this;
-			this.pop.show(x, y, width, height);
-		} else {
-			vp = this.getViewPort();
-			yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset;
-			this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px';
-			this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px';
-			this.contextMenuDiv.style.display = "block";
-		}
-	},
-
-	getViewPort : function() {
-		return {
-			left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft,
-			top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop,
-			width : document.documentElement.offsetWidth || document.body.offsetWidth,
-			height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
-		};
-	},
-
-	hide : function() {
-		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera)
-			this.pop.hide();
-		else
-			this.contextMenuDiv.style.display = "none";
-	},
-
-	execCommand : function(command, value) {
-		eval(this.settings['commandhandler'] + "(command, value);");
-	}
-};
+/**
+ * $Id: editor_plugin_src.js 848 2008-05-15 11:54:40Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;
+
+	tinymce.create('tinymce.plugins.ContextMenu', {
+		init : function(ed) {
+			var t = this;
+
+			t.editor = ed;
+			t.onContextMenu = new tinymce.util.Dispatcher(this);
+
+			ed.onContextMenu.add(function(ed, e) {
+				if (!e.ctrlKey) {
+					t._getMenu(ed).showMenu(e.clientX, e.clientY);
+					Event.add(ed.getDoc(), 'click', hide);
+					Event.cancel(e);
+				}
+			});
+
+			function hide() {
+				if (t._menu) {
+					t._menu.removeAll();
+					t._menu.destroy();
+					Event.remove(ed.getDoc(), 'click', hide);
+				}
+			};
+
+			ed.onMouseDown.add(hide);
+			ed.onKeyDown.add(hide);
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Contextmenu',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		_getMenu : function(ed) {
+			var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;
+
+			if (m) {
+				m.removeAll();
+				m.destroy();
+			}
+
+			p1 = DOM.getPos(ed.getContentAreaContainer());
+			p2 = DOM.getPos(ed.getContainer());
+
+			m = ed.controlManager.createDropMenu('contextmenu', {
+				offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),
+				offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),
+				constrain : 1
+			});
+
+			t._menu = m;
+
+			m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);
+			m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);
+			m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});
+
+			if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {
+				m.addSeparator();
+				m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
+				m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
+			}
+
+			m.addSeparator();
+			m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
+
+			m.addSeparator();
+			am = m.addMenu({title : 'contextmenu.align'});
+			am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});
+			am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});
+			am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});
+			am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});
+
+			t.onContextMenu.dispatch(t, m, el, col);
+
+			return m;
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/devkit/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/devkit/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/devkit/langs/es.js	2006-11-07 06:32:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/devkit/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,23 +0,0 @@
-// UK lang variables
-
-tinyMCE.addToLang('devkit',{
-title : 'TinyMCE Development Kit',
-info_tab : 'Info',
-settings_tab : 'Settings',
-log_tab : 'Log',
-content_tab : 'Content',
-command_states_tab : 'Commands',
-undo_redo_tab : 'Undo/Redo',
-misc_tab : 'Misc',
-filter : 'Filter:',
-clear_log : 'Clear log',
-refresh : 'Refresh',
-info_help : 'Press Refresh to view info.',
-settings_help : 'Press Refresh to display the settings array for each TinyMCE_Control instance.',
-content_help : 'Press Refresh to display the raw and cleaned HTML content for each TinyMCE_Control instance.',
-command_states_help : 'Press Refresh to display the current command states from inst.queryCommandState. This list will also mark unsupported commands.',
-undo_redo_help : 'Press Refresh to display the global and instance undo/redo levels.',
-misc_help : 'Here are various tools for debugging and development purposes.',
-debug_events : 'Debug events',
-undo_diff : 'Diff undo levels'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('directionality');var TinyMCE_DirectionalityPlugin={getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"ltr":return tinyMCE.getButtonHTML(cn,'lang_directionality_ltr_desc','{$pluginurl}/images/ltr.gif','mceDirectionLTR');case"rtl":return tinyMCE.getButtonHTML(cn,'lang_directionality_rtl_desc','{$pluginurl}/images/rtl.gif','mceDirectionRTL')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceDirectionLTR":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","ltr");tinyMCE.triggerNodeChange(false);return true;case"mceDirectionRTL":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","rtl");tinyMCE.triggerNodeChange(false);return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}if(node==null)return;var elm=tinyMCE.getParentElement(node,"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!elm){tinyMCE.switchClass(editor_id+'_ltr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_rtl','mceButtonDisabled');return true}tinyMCE.switchClass(editor_id+'_ltr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_rtl','mceButtonNormal');var dir=getAttrib(elm,"dir");if(dir=="ltr"||dir=="")tinyMCE.switchClass(editor_id+'_ltr','mceButtonSelected');else tinyMCE.switchClass(editor_id+'_rtl','mceButtonSelected');return true}};tinyMCE.addPlugin("directionality",TinyMCE_DirectionalityPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,90 +1,79 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('directionality');
-
-var TinyMCE_DirectionalityPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Directionality',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "ltr":
-				return tinyMCE.getButtonHTML(cn, 'lang_directionality_ltr_desc', '{$pluginurl}/images/ltr.gif', 'mceDirectionLTR');
-
-			case "rtl":
-				return tinyMCE.getButtonHTML(cn, 'lang_directionality_rtl_desc', '{$pluginurl}/images/rtl.gif', 'mceDirectionRTL');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceDirectionLTR":
-				var inst = tinyMCE.getInstanceById(editor_id);
-				var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
-
-				if (elm)
-					elm.setAttribute("dir", "ltr");
-
-				tinyMCE.triggerNodeChange(false);
-				return true;
-
-			case "mceDirectionRTL":
-				var inst = tinyMCE.getInstanceById(editor_id);
-				var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
-
-				if (elm)
-					elm.setAttribute("dir", "rtl");
-
-				tinyMCE.triggerNodeChange(false);
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		function getAttrib(elm, name) {
-			return elm.getAttribute(name) ? elm.getAttribute(name) : "";
-		}
-
-		if (node == null)
-			return;
-
-		var elm = tinyMCE.getParentElement(node, "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
-		if (!elm) {
-			tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonDisabled');
-			tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonDisabled');
-			return true;
-		}
-
-		tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonNormal');
-
-		var dir = getAttrib(elm, "dir");
-		if (dir == "ltr" || dir == "")
-			tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonSelected');
-		else
-			tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonSelected');
-
-		return true;
-	}
-};
-
-tinyMCE.addPlugin("directionality", TinyMCE_DirectionalityPlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.Directionality', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			ed.addCommand('mceDirectionLTR', function() {
+				var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
+
+				if (e) {
+					if (ed.dom.getAttrib(e, "dir") != "ltr")
+						ed.dom.setAttrib(e, "dir", "ltr");
+					else
+						ed.dom.setAttrib(e, "dir", "");
+				}
+
+				ed.nodeChanged();
+			});
+
+			ed.addCommand('mceDirectionRTL', function() {
+				var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
+
+				if (e) {
+					if (ed.dom.getAttrib(e, "dir") != "rtl")
+						ed.dom.setAttrib(e, "dir", "rtl");
+					else
+						ed.dom.setAttrib(e, "dir", "");
+				}
+
+				ed.nodeChanged();
+			});
+
+			ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
+			ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
+
+			ed.onNodeChange.add(t._nodeChange, t);
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Directionality',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+
+		_nodeChange : function(ed, cm, n) {
+			var dom = ed.dom, dir;
+
+			n = dom.getParent(n, dom.isBlock);
+			if (!n) {
+				cm.setDisabled('ltr', 1);
+				cm.setDisabled('rtl', 1);
+				return;
+			}
+
+			dir = dom.getAttrib(n, 'dir');
+			cm.setActive('ltr', dir == "ltr");
+			cm.setDisabled('ltr', 0);
+			cm.setActive('rtl', dir == "rtl");
+			cm.setDisabled('rtl', 0);
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/langs/es.js	2006-07-14 12:00:20.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/directionality/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('',{
-directionality_ltr_desc : 'Direcci&oacute;n de izquierda a derecha',
-directionality_rtl_desc : 'Direcci&oacute;n de derecha a izquierda'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('emotions');var TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"emotions":return tinyMCE.getButtonHTML(cn,'lang_emotions_desc','{$pluginurl}/images/emotions.gif','mceEmotion')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false}};tinyMCE.addPlugin('emotions',TinyMCE_EmotionsPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.EmotionsPlugin",{init:function(a,b){a.addCommand("mceEmotion",function(){a.windowManager.open({file:b+"/emotions.htm",width:250+parseInt(a.getLang("emotions.delta_width",0)),height:160+parseInt(a.getLang("emotions.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("emotions",tinymce.plugins.EmotionsPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,63 +1,40 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('emotions');
-
-// Plucin static class
-var TinyMCE_EmotionsPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Emotions',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	/**
-	 * Returns the HTML contents of the emotions control.
-	 */
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "emotions":
-				return tinyMCE.getButtonHTML(cn, 'lang_emotions_desc', '{$pluginurl}/images/emotions.gif', 'mceEmotion');
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the mceEmotion command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceEmotion":
-				var template = new Array();
-
-				template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
-				template['width'] = 250;
-				template['height'] = 160;
-
-				// Language specific width and height addons
-				template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0);
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
-
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	}
-};
-
-// Register plugin
-tinyMCE.addPlugin('emotions', TinyMCE_EmotionsPlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.EmotionsPlugin', {
+		init : function(ed, url) {
+			// Register commands
+			ed.addCommand('mceEmotion', function() {
+				ed.windowManager.open({
+					file : url + '/emotions.htm',
+					width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),
+					height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			// Register buttons
+			ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Emotions',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm	2006-11-07 04:01:10.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,38 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_emotions_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
-	<base target="_self" />
+	<title>{#emotions_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/emotions.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body style="display: none">
 	<div align="center">
-		<div class="title">{$lang_emotions_title}:<br /><br /></div>
+		<div class="title">{#emotions_dlg.title}:<br /><br /></div>
 
 		<table border="0" cellspacing="0" cellpadding="4">
 		  <tr>
-			<td><a href="javascript:insertEmotion('smiley-cool.gif','lang_emotions_cool');"><img src="images/smiley-cool.gif" width="18" height="18" border="0" alt="{$lang_emotions_cool}" title="{$lang_emotions_cool}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-cry.gif','lang_emotions_cry');"><img src="images/smiley-cry.gif" width="18" height="18" border="0" alt="{$lang_emotions_cry}" title="{$lang_emotions_cry}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-embarassed.gif','lang_emotions_embarassed');"><img src="images/smiley-embarassed.gif" width="18" height="18" border="0" alt="{$lang_emotions_embarassed}" title="{$lang_emotions_embarassed}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-foot-in-mouth.gif','lang_emotions_foot_in_mouth');"><img src="images/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_foot_in_mouth}" title="{$lang_emotions_foot_in_mouth}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}" title="{#emotions_dlg.cool}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}" title="{#emotions_dlg.cry}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}" title="{#emotions_dlg.embarassed}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>
 		  </tr>
 		  <tr>
-			<td><a href="javascript:insertEmotion('smiley-frown.gif','lang_emotions_frown');"><img src="images/smiley-frown.gif" width="18" height="18" border="0" alt="{$lang_emotions_frown}" title="{$lang_emotions_frown}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-innocent.gif','lang_emotions_innocent');"><img src="images/smiley-innocent.gif" width="18" height="18" border="0" alt="{$lang_emotions_innocent}" title="{$lang_emotions_innocent}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-kiss.gif','lang_emotions_kiss');"><img src="images/smiley-kiss.gif" width="18" height="18" border="0" alt="{$lang_emotions_kiss}" title="{$lang_emotions_kiss}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-laughing.gif','lang_emotions_laughing');"><img src="images/smiley-laughing.gif" width="18" height="18" border="0" alt="{$lang_emotions_laughing}" title="{$lang_emotions_laughing}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}" title="{#emotions_dlg.frown}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}" title="{#emotions_dlg.innocent}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}" title="{#emotions_dlg.kiss}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}" title="{#emotions_dlg.laughing}" /></a></td>
 		  </tr>
 		  <tr>
-			<td><a href="javascript:insertEmotion('smiley-money-mouth.gif','lang_emotions_money_mouth');"><img src="images/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_money_mouth}" title="{$lang_emotions_money_mouth}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-sealed.gif','lang_emotions_sealed');"><img src="images/smiley-sealed.gif" width="18" height="18" border="0" alt="{$lang_emotions_sealed}" title="{$lang_emotions_sealed}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-smile.gif','lang_emotions_smile');"><img src="images/smiley-smile.gif" width="18" height="18" border="0" alt="{$lang_emotions_smile}" title="{$lang_emotions_smile}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-surprised.gif','lang_emotions_surprised');"><img src="images/smiley-surprised.gif" width="18" height="18" border="0" alt="{$lang_emotions_surprised}" title="{$lang_emotions_surprised}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}" title="{#emotions_dlg.money_mouth}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}" title="{#emotions_dlg.sealed}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}" title="{#emotions_dlg.smile}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}" title="{#emotions_dlg.surprised}" /></a></td>
 		  </tr>
 		  <tr>
-			<td><a href="javascript:insertEmotion('smiley-tongue-out.gif','lang_emotions_tongue_out');"><img src="images/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{$lang_emotions_tongue-out}" title="{$lang_emotions_tongue_out}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-undecided.gif','lang_emotions_undecided');"><img src="images/smiley-undecided.gif" width="18" height="18" border="0" alt="{$lang_emotions_undecided}" title="{$lang_emotions_undecided}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-wink.gif','lang_emotions_wink');"><img src="images/smiley-wink.gif" width="18" height="18" border="0" alt="{$lang_emotions_wink}" title="{$lang_emotions_wink}" /></a></td>
-			<td><a href="javascript:insertEmotion('smiley-yell.gif','lang_emotions_yell');"><img src="images/smiley-yell.gif" width="18" height="18" border="0" alt="{$lang_emotions_yell}" title="{$lang_emotions_yell}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}" title="{#emotions_dlg.tongue_out}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}" title="{#emotions_dlg.undecided}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}" title="{#emotions_dlg.wink}" /></a></td>
+			<td><a href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}" title="{#emotions_dlg.yell}" /></a></td>
 		  </tr>
 		</table>
 	</div>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a   	z\V<N:8ѿ#[[WY#!1,//, &
+ɿbA_z`
+   !   ,       'UicJRqGBU*ѣiOt`Be]GUZCqn	P @~=@pLAx; d@~}{r}hr=		E%	4A	F	M)	DK	fP(J ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+GIF89a   ..P2!O#r簗!ϻ8rX
+{ֵưR>
+vʶjZj   !   ,       'XicJR#@a*	y!dQ®~0pAƀ<+
+fPer>zြXc|  %
+%q		%		\		{A9;=#݄5N! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a   *ļLTԿ( AT«!:l:v[wX87d$|(*=غ$W°bQ   !   ,       'RicJj&I*!8ʃtdUn	~$bcA
+ǂ@h\T@ L2AN&zxMv		
+%		Cuy  
+%
+
+]#J;sBQ*N! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a   &
+Ɩ~ʶj MR:	Zѽ1mT+HغoļO'ª60:"
+67   !   ,       'PicJFHmA*I%ITfaQ *N8#b!88"Y hAd23!1̤Hs{(s	vs
+cst
+}
+	  {E	M%Ƃ ^ƚAP)DN5} ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a   A'Ơ2ʶjNXν"7hT-qZA
+غGīļ7Z"%x`0   !   ,       'QicJJ&!E*Y08ԡAA`&
+4!x<đ0"FU$Jc&%`. .cރ1w~bp
+z
+r r
+x%	]̘AKGP)DN5! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,7 @@
+GIF89a   8*˭q˱ZU쳏 8wi٫T̵ qN*aK
+z0-VھB2u"   !   ,       'RixeHdbK,R=ɣ!Q<6Ph'0*d i;pgP:t|NRRUR}			
+
+m	_Q	w
+	%ΗQS*
+P
+8)<MV)##! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a   R=44sYʶj
+2!N*)"mqغ>9)ښļ9ֽ)Y   !   ,       'TicJVsRQ*Y!IrT3!xCp#ʂ!X׫Q*y$0.9 @8nH5q}M		a}{
+/
+H
+
+J	%	S\A	HJP)DN5! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,4 @@
+GIF89a   R=,Nr^HYҾëjSļGغq7uZӺ.ʶj2yc1¦2Z   !   ,       'SicJF4M*I\BQ	'eHx H'Fp*+8&	 `˕dx s%hI4i	yXzdw%
+%R]
+		
+AJGO)5 ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a   )¨"¬QnX6Rj1>^*
+n9$J3s VMw9ZF>2B噚6Ѿ&ӿrx$~   !   ,       'TicJn0Q*I041n~(D>tsh8" ,n0f!$lw2*ۑW]Hm%x%D%opu  %
+QY
+4
+#B
+*N! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+GIF89a   R=	ھRIͷJʶj5 (\lUNû?:o"ֶ/   !   ,       'SicJ6RL*ޡig8"ґ` #D	bDlY hAyx<3VcI3WagwYx
+|ds	/}'p
+W
+N%`A
+[P)DN5)! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a   &
+Ɩzʶj2NYнR=6hTīغqGļ.17¦2Zy`   !   ,       'PicJFFyA*I,"Iȵԡ@l&dpT#!!\.D0 EP$Jb&-l0.o
+C1w~bpz		x  %	]		AKGP)5ލ ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,4 @@
+GIF89a   (Ɲ(#ʶjNR;	Z&2,kS§غ7o7ļF>"RXĸD   !   ,       'PicJF0A*Yh6MۢԡHxx4#A14*I!(4HD3T,hf'@|$0YxY	}YYE  { %S_
+	
+i	
+AP)DN5B  ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,8 @@
+GIF89a   &
+Ɨ}ʶj#NҾXR=
+2.::nXFqغZ/'ļ71"RT   !   ,       'TicJV4QQ*Y42M
+aQ($H@(Dh4U$qQ*&5P\eptE9*-aWW
+xn		vE 
+%	
+
+\A-1N)5! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,2 @@
+GIF89a   *Ɗyʶj%NYֺdN2-GqغB/ê9ļYVC7vbο$   !   ,       'QicJJF !E*I4LA	AId#8A&@HUDh[0NT}	`r
+y	 tw%[		AKGP)DN5! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,2 @@
+GIF89a   (Ɲ	2ʶjNYǳP:,,u\Gqغļ6־2Y):   !   ,       'RicJN'1I*Y0EA9hCs4#!A&=#0$FAd:Ba̤MG $,
+Ţ!x	{{b{{e~uu%	/	rAKGP)DN5@0=uB  ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a   2e{	NYѿ(R4
+4ʶj+3͎nT<غ9sJqHļժ*lL§   !   ,       'RicJRVAI*hq]ǣ590
+q FCLZ1&h	51̢Ir:Eo (*Ku	pE	 r%R9Z	=AKGO)DM5! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,22 @@
+tinyMCEPopup.requireLangPack();
+
+var EmotionsDialog = {
+	init : function(ed) {
+		tinyMCEPopup.resizeToInnerSize();
+	},
+
+	insert : function(file, title) {
+		var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+		tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
+			src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
+			alt : ed.getLang(title),
+			title : ed.getLang(title),
+			border : 0
+		}));
+
+		tinyMCEPopup.close();
+	}
+};
+
+tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,20 @@
+tinyMCE.addI18n('ca.emotions_dlg',{
+title:"Insereix emoticona",
+desc:"Emoticones",
+cool:"Ben parit",
+cry:"Plor",
+embarassed:"Vergonya",
+foot_in_mouth:"Muts i a la g\u00E0bia",
+frown:"Indiferent",
+innocent:"Innocent",
+kiss:"Pet\u00F3",
+laughing:"Rialla",
+money_mouth:"Boca de diner",
+sealed:"Segellada",
+smile:"Somriure",
+surprised:"Sorpresa",
+tongue_out:"Treu la llengua",
+undecided:"Indecisa",
+wink:"Pica l'ullet",
+yell:"Crit"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,20 @@
+tinyMCE.addI18n('en.emotions_dlg',{
+title:"Insert emotion",
+desc:"Emotions",
+cool:"Cool",
+cry:"Cry",
+embarassed:"Embarassed",
+foot_in_mouth:"Foot in mouth",
+frown:"Frown",
+innocent:"Innocent",
+kiss:"Kiss",
+laughing:"Laughing",
+money_mouth:"Money mouth",
+sealed:"Sealed",
+smile:"Smile",
+surprised:"Surprised",
+tongue_out:"Tongue out",
+undecided:"Undecided",
+wink:"Wink",
+yell:"Yell"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,20 @@
+tinyMCE.addI18n('es.emotions_dlg',{
+title:"Insertar emoticon",
+desc:"Emoticones",
+cool:"Todo bien",
+cry:"Llora",
+embarassed:"Verg\u00FCenza",
+foot_in_mouth:"Pie en la boca",
+frown:"Triste",
+innocent:"Inocente",
+kiss:"Beso",
+laughing:"Risa",
+money_mouth:"Dinero boca",
+sealed:"Sellado",
+smile:"Sonrisa",
+surprised:"Sorprendido",
+tongue_out:"Lengua fuera",
+undecided:"Indeciso",
+wink:"Gui\u00F1o",
+yell:"Enfadado"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es.js	2007-12-22 00:20:48.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('emotions',{
-title : 'Insertar emoticono',
-desc : 'Emoticonos',
-cool : 'Chulo',
-cry : 'Llorando',
-embarassed : 'Avergonzado',
-foot_in_mouth : 'Sin palabras',
-frown : 'Triste',
-innocent : 'Inocente',
-kiss : 'Beso',
-laughing : 'Riendo',
-money_mouth : 'Forrado',
-sealed : 'Boca sellada',
-smile : 'Sonriente',
-surprised : 'Sorprendido',
-tongue_out : 'Burla',
-undecided : 'Indeciso',
-wink : 'Gui&ntilde;o',
-yell : 'Enfadado'
-});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#example_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/dialog.js"></script>
+</head>
+<body>
+
+<form onsubmit="ExampleDialog.insert();return false;" action="#">
+	<p>Here is a example dialog.</p>
+	<p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
+	<p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+</form>
+
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,81 @@
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	// Load plugin specific language pack
+	tinymce.PluginManager.requireLangPack('example');
+
+	tinymce.create('tinymce.plugins.ExamplePlugin', {
+		/**
+		 * Initializes the plugin, this will be executed after the plugin has been created.
+		 * This call is done before the editor instance has finished it's initialization so use the onInit event
+		 * of the editor instance to intercept that event.
+		 *
+		 * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+		 * @param {string} url Absolute URL to where the plugin is located.
+		 */
+		init : function(ed, url) {
+			// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
+			ed.addCommand('mceExample', function() {
+				ed.windowManager.open({
+					file : url + '/dialog.htm',
+					width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
+					height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url, // Plugin absolute URL
+					some_custom_arg : 'custom arg' // Custom argument
+				});
+			});
+
+			// Register example button
+			ed.addButton('example', {
+				title : 'example.desc',
+				cmd : 'mceExample',
+				image : url + '/img/example.gif'
+			});
+
+			// Add a node change handler, selects the button in the UI when a image is selected
+			ed.onNodeChange.add(function(ed, cm, n) {
+				cm.setActive('example', n.nodeName == 'IMG');
+			});
+		},
+
+		/**
+		 * Creates control instances based in the incomming name. This method is normally not
+		 * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
+		 * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
+		 * method can be used to create those.
+		 *
+		 * @param {String} n Name of the control to create.
+		 * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
+		 * @return {tinymce.ui.Control} New control instance or null if no control was created.
+		 */
+		createControl : function(n, cm) {
+			return null;
+		},
+
+		/**
+		 * Returns information about the plugin as a name/value array.
+		 * The current keys are longname, author, authorurl, infourl and version.
+		 *
+		 * @return {Object} Name/value array containing information about the plugin.
+		 */
+		getInfo : function() {
+			return {
+				longname : 'Example plugin',
+				author : 'Some author',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
+				version : "1.0"
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+GIF89a      !   ,       .Ok̺}qQ(̞5(`Db ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,19 @@
+tinyMCEPopup.requireLangPack();
+
+var ExampleDialog = {
+	init : function() {
+		var f = document.forms[0];
+
+		// Get the selected contents as text and place it in the input
+		f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
+		f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
+	},
+
+	insert : function() {
+		// Insert the contents from the input into the document
+		tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
+		tinyMCEPopup.close();
+	}
+};
+
+tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+tinyMCE.addI18n('en.example_dlg',{
+	title : 'This is just a example title'
+});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+tinyMCE.addI18n('en.example',{
+	desc : 'This is just a template button'
+});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/flash/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/flash/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/flash/langs/es.js	2006-07-14 12:01:24.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/flash/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('flash',{
-title : 'Insertar / editar pel&iacute;cula Flash',
-desc : 'Insert / edit Flash Movie',
-file : 'Fichero Flash (.swf)',
-size : 'Tama&ntilde;o',
-list : 'Ficheros Flash',
-props : 'Propiedades del Flash',
-general : 'General'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css	2009-06-30 22:01:32.000000000 +0200
@@ -1,176 +1,182 @@
-/* Hide the advanced tab */
-#advanced_tab {
-	display: none;
-}
-
-#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
-	width: 280px;
-}
-
-#doctype, #docencoding {
-	width: 200px;
-}
-
-#langcode {
-	width: 30px;
-}
-
-#bgimage {
-	width: 220px;	
-}
-
-#fontface {
-	width: 240px;
-}
-
-#leftmargin, #rightmargin, #topmargin, #bottommargin {
-	width: 50px;
-}
-
-.panel_wrapper div.current {
-	height: 400px;
-}
-
-#stylesheet, #style {
-	width: 240px;
-}
-
-/* Head list classes */
-
-.headlistwrapper {
-	width: 100%;
-}
-
-.addbutton, .removebutton, .moveupbutton, .movedownbutton {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: default;
-	display: block;
-	width: 20px;
-	height: 20px;
-}
-
-.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
-	border: 1px solid #0A246A;
-	background-color: #B6BDD2;
-}
-
-.addbutton {
-	background-image: url('../images/add.gif');
-	float: left;
-	margin-right: 3px;
-}
-
-.removebutton {
-	background-image: url('../images/remove.gif');
-	float: left;
-}
-
-.moveupbutton {
-	background-image: url('../images/move_up.gif');
-	float: left;
-	margin-right: 3px;
-}
-
-.movedownbutton {
-	background-image: url('../images/move_down.gif');
-	float: left;
-}
-
-.selected {
-	border: 1px solid #0A246A;
-	background-color: #B6BDD2;
-}
-
-.toolbar {
-	width: 100%;
-}
-
-#headlist {
-	width: 100%;
-	margin-top: 3px;
-	font-size: 11px;
-}
-
-#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
-	display: none;
-}
-
-#addmenu {
-	position: absolute;
-	border: 1px solid gray;
-	display: none;
-	z-index: 100;
-	background-color: white;
-}
-
-#addmenu a {
-	display: block;
-	width: 100%;
-	line-height: 20px;
-	text-decoration: none;
-	background-color: white;
-}
-
-#addmenu a:hover {
-	background-color: #B6BDD2;
-	color: black;
-}
-
-#addmenu span {
-	padding-left: 10px;
-	padding-right: 10px;
-}
-
-#updateElementPanel {
-	display: none;
-}
-
-#script_element .panel_wrapper div.current {
-	height: 108px;
-}
-
-#style_element .panel_wrapper div.current {
-	height: 108px;
-}
-
-#link_element  .panel_wrapper div.current {
-	height: 140px;
-}
-
-#element_script_value {
-	width: 100%;
-	height: 100px;
-}
-
-#element_comment_value {
-	width: 100%;
-	height: 120px;
-}
-
-#element_style_value {
-	width: 100%;
-	height: 100px;
-}
-
-#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
-	width: 250px;
-}
-
-.updateElementButton {
-	margin-top: 3px;
-}
-
-/* MSIE specific styles */
-
-* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
-	width: 22px;
-	height: 22px;
-}
-
-textarea {
-	height: 55px;
-}
\ No hay ningún carácter de nueva línea al final del fichero
+/* Hide the advanced tab */
+#advanced_tab {
+	display: none;
+}
+
+#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
+	width: 280px;
+}
+
+#doctype, #docencoding {
+	width: 200px;
+}
+
+#langcode {
+	width: 30px;
+}
+
+#bgimage {
+	width: 220px;	
+}
+
+#fontface {
+	width: 240px;
+}
+
+#leftmargin, #rightmargin, #topmargin, #bottommargin {
+	width: 50px;
+}
+
+.panel_wrapper div.current {
+	height: 400px;
+}
+
+#stylesheet, #style {
+	width: 240px;
+}
+
+/* Head list classes */
+
+.headlistwrapper {
+	width: 100%;
+}
+
+.addbutton, .removebutton, .moveupbutton, .movedownbutton {
+	border-top: 1px solid;
+	border-left: 1px solid;
+	border-bottom: 1px solid;
+	border-right: 1px solid;
+	border-color: #F0F0EE;
+	cursor: default;
+	display: block;
+	width: 20px;
+	height: 20px;
+}
+
+#doctypes {
+	width: 200px;
+}
+
+.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
+	border: 1px solid #0A246A;
+	background-color: #B6BDD2;
+}
+
+.addbutton {
+	background-image: url('../images/add.gif');
+	float: left;
+	margin-right: 3px;
+}
+
+.removebutton {
+	background-image: url('../images/remove.gif');
+	float: left;
+}
+
+.moveupbutton {
+	background-image: url('../images/move_up.gif');
+	float: left;
+	margin-right: 3px;
+}
+
+.movedownbutton {
+	background-image: url('../images/move_down.gif');
+	float: left;
+}
+
+.selected {
+	border: 1px solid #0A246A;
+	background-color: #B6BDD2;
+}
+
+.toolbar {
+	width: 100%;
+}
+
+#headlist {
+	width: 100%;
+	margin-top: 3px;
+	font-size: 11px;
+}
+
+#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
+	display: none;
+}
+
+#addmenu {
+	position: absolute;
+	border: 1px solid gray;
+	display: none;
+	z-index: 100;
+	background-color: white;
+}
+
+#addmenu a {
+	display: block;
+	width: 100%;
+	line-height: 20px;
+	text-decoration: none;
+	background-color: white;
+}
+
+#addmenu a:hover {
+	background-color: #B6BDD2;
+	color: black;
+}
+
+#addmenu span {
+	padding-left: 10px;
+	padding-right: 10px;
+}
+
+#updateElementPanel {
+	display: none;
+}
+
+#script_element .panel_wrapper div.current {
+	height: 108px;
+}
+
+#style_element .panel_wrapper div.current {
+	height: 108px;
+}
+
+#link_element  .panel_wrapper div.current {
+	height: 140px;
+}
+
+#element_script_value {
+	width: 100%;
+	height: 100px;
+}
+
+#element_comment_value {
+	width: 100%;
+	height: 120px;
+}
+
+#element_style_value {
+	width: 100%;
+	height: 100px;
+}
+
+#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
+	width: 250px;
+}
+
+.updateElementButton {
+	margin-top: 3px;
+}
+
+/* MSIE specific styles */
+
+* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
+	width: 22px;
+	height: 22px;
+}
+
+textarea {
+	height: 55px;
+}
+
+.panel_wrapper div.current {height:420px;}
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('fullpage');var TinyMCE_FullPagePlugin={getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"fullpage":return tinyMCE.getButtonHTML(cn,'lang_fullpage_desc','{$pluginurl}/images/fullpage.gif','mceFullPageProperties')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullPageProperties":var template=new Array();template['file']='../../plugins/fullpage/fullpage.htm';template['width']=430;template['height']=485+(tinyMCE.isOpera?5:0);template['width']+=tinyMCE.getLang('lang_fullpage_delta_width',0);template['height']+=tinyMCE.getLang('lang_fullpage_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceFullPageUpdate":TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));return true}return false},cleanup:function(type,content,inst){switch(type){case"insert_to_editor":var tmp=content.toLowerCase();var pos=tmp.indexOf('<body'),pos2;if(pos!=-1){pos=tmp.indexOf('>',pos);pos2=tmp.lastIndexOf('</body>');inst.fullpageTopContent=content.substring(0,pos+1);content=content.substring(pos+1,pos2);}else{if(!inst.fullpageTopContent){var docType=tinyMCE.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');var enc=tinyMCE.getParam("fullpage_default_encoding",'utf-8');var title=tinyMCE.getParam("fullpage_default_title",'Untitled document');var lang=tinyMCE.getParam("fullpage_default_langcode",'en');var pi=tinyMCE.getParam("fullpage_default_xml_pi",true);var ff=tinyMCE.getParam("fullpage_default_font_family","");var fz=tinyMCE.getParam("fullpage_default_font_size","");var ds=tinyMCE.getParam("fullpage_default_style","");var dtc=tinyMCE.getParam("fullpage_default_text_color","");title=title.replace(/&/g,'&amp;');title=title.replace(/\"/g,'&quot;');title=title.replace(/</g,'&lt;');title=title.replace(/>/g,'&gt;');tmp='';if(pi)tmp+='<?xml version="1.0" encoding="'+enc+'"?>\n';tmp+=docType+'\n';tmp+='<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="'+lang+'" xml:lang="'+lang+'">\n';tmp+='<head>\n';tmp+='\t<title>'+title+'</title>\n';tmp+='\t<meta http-equiv="Content-Type" content="text/html; charset='+enc+'" />\n';tmp+='</head>\n';tmp+='<body';if(ff!=''||fz!=''){tmp+=' style="';if(ds!='')tmp+=ds+";";if(ff!='')tmp+='font-family: '+ff+";";if(fz!='')tmp+='font-size: '+fz+";";tmp+='"'}if(dtc!='')tmp+=' text="'+dtc+'"';tmp+='>\n';inst.fullpageTopContent=tmp}}this._addToHead(inst);break;case"get_from_editor":if(inst.fullpageTopContent&&!tinyMCE.getParam("fullpage_hide_in_source_view",false)){content=content.replace(/(\s)?mce\_[a-z_]+\=[^\s>]+(\s|\>)/i,'');content=inst.fullpageTopContent+content+"\n</body>\n</html>"}break;case"submit_content":if(inst.fullpageTopContent&&tinyMCE.getParam("fullpage_hide_in_source_view",false))content=inst.fullpageTopContent+content+"\n</body>\n</html>";break}return content},_addToHead:function(inst){var doc=inst.getDoc();var head=doc.getElementsByTagName("head")[0];var body=doc.body;var h=inst.fullpageTopContent;var e=doc.createElement("body");var nl,i,le,tmp;h=h.replace(/(\r|\n)/gi,'');h=h.replace(/<\?[^\>]*\>/gi,'');h=h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi,'');h=h.replace(/<script(.*?)<\/script>/gi,'');h=h.replace(/<title(.*?)<\/title>/gi,'');h=h.replace(/<(meta|base)[^>]*>/gi,'');h=h.replace(/<link([^>]*)\/>/gi,'<pre mce_type="link" $1></pre>');h=h.replace(/<body/gi,'<div mce_type="body"');h+='</div>';e.innerHTML=h;body.vLink=body.aLink=body.link=body.text='';body.style.cssText='';nl=head.getElementsByTagName('link');for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],'mce_head')=="true")nl[i].parentNode.removeChild(nl[i])}nl=e.getElementsByTagName('pre');for(i=0;i<nl.length;i++){tmp=tinyMCE.getAttrib(nl[i],'media');if(tinyMCE.getAttrib(nl[i],'mce_type')=="link"&&(tmp==""||tmp=="screen"||tmp=="all")&&tinyMCE.getAttrib(nl[i],'rel')=="stylesheet"){le=doc.createElement("link");le.rel="stylesheet";le.href=tinyMCE.getAttrib(nl[i],'href');le.setAttribute("mce_head","true");head.appendChild(le)}}nl=e.getElementsByTagName('div');if(nl.length>0){body.style.cssText=tinyMCE.getAttrib(nl[0],'style');if((tmp=tinyMCE.getAttrib(nl[0],'leftmargin'))!=''&&body.style.marginLeft=='')body.style.marginLeft=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'rightmargin'))!=''&&body.style.marginRight=='')body.style.marginRight=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'topmargin'))!=''&&body.style.marginTop=='')body.style.marginTop=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'bottommargin'))!=''&&body.style.marginBottom=='')body.style.marginBottom=tmp+"px";body.dir=tinyMCE.getAttrib(nl[0],'dir');body.vLink=tinyMCE.getAttrib(nl[0],'vlink');body.aLink=tinyMCE.getAttrib(nl[0],'alink');body.link=tinyMCE.getAttrib(nl[0],'link');body.text=tinyMCE.getAttrib(nl[0],'text');if((tmp=tinyMCE.getAttrib(nl[0],'background'))!='')body.style.backgroundImage="url('"+tmp+"')";if((tmp=tinyMCE.getAttrib(nl[0],'bgcolor'))!='')body.style.backgroundColor=tmp}}};tinyMCE.addPlugin("fullpage",TinyMCE_FullPagePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceFullPageProperties",function(){a.windowManager.open({file:b+"/fullpage.htm",width:430+parseInt(a.getLang("fullpage.delta_width",0)),height:495+parseInt(a.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:b,head_html:c.head})});a.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});a.onBeforeSetContent.add(c._setContent,c);a.onSetContent.add(c._setBodyAttribs,c);a.onGetContent.add(c._getContent,c)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_setBodyAttribs:function(d,a){var l,c,e,g,b,h,j,f=this.head.match(/body(.*?)>/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c<e;c++){g=l[c].split("=");b=g[0].replace(/\s/,"");h=g[1];if(h){h=h.replace(/^\s+/,"").replace(/\s+$/,"");j=h.match(/^["'](.*)["']$/);if(j){h=j[1]}}else{h=b}d.dom.setAttrib(d.getBody(),"style",h)}}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true})},_setContent:function(d,b){var h=this,a,j,f=b.content,g,i="";if(b.source_view&&d.getParam("fullpage_hide_in_source_view")){return}f=f.replace(/<(\/?)BODY/gi,"<$1body");a=f.indexOf("<body");if(a!=-1){a=f.indexOf(">",a);h.head=f.substring(0,a+1);j=f.indexOf("</body",a);if(j==-1){j=f.indexOf("</body",j)}b.content=f.substring(a+1,j);h.foot=f.substring(j);function e(c){return c.replace(/<\/?[A-Z]+/g,function(k){return k.toLowerCase()})}h.head=e(h.head);h.foot=e(h.foot)}else{h.head="";if(d.getParam("fullpage_default_xml_pi")){h.head+='<?xml version="1.0" encoding="'+d.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}h.head+=d.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');h.head+="\n<html>\n<head>\n<title>"+d.getParam("fullpage_default_title","Untitled document")+"</title>\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='<meta http-equiv="Content-Type" content="'+g+'" />\n'}if(g=d.getParam("fullpage_default_font_family")){i+="font-family: "+g+";"}if(g=d.getParam("fullpage_default_font_size")){i+="font-size: "+g+";"}if(g=d.getParam("fullpage_default_text_color")){i+="color: "+g+";"}h.head+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n";h.foot="\n</body>\n</html>"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,235 +1,146 @@
-/**
- * $Id: editor_plugin_src.js 232 2007-03-05 17:00:27Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('fullpage');
-
-var TinyMCE_FullPagePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Fullpage',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "fullpage":
-				return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceFullPageProperties":
-				var template = new Array();
-
-				template['file']   = '../../plugins/fullpage/fullpage.htm';
-				template['width']  = 430;
-				template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0);
-
-				template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0);
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
-			return true;
-
-			case "mceFullPageUpdate":
-				TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));
-				return true;
-	   }
-
-	   // Pass to next handler in chain
-	   return false;
-	},
-
-	cleanup : function(type, content, inst) {
-		switch (type) {
-			case "insert_to_editor":
-				var tmp = content.toLowerCase();
-				var pos = tmp.indexOf('<body'), pos2;
-
-				// Split page in header and body chunks
-				if (pos != -1) {
-					pos = tmp.indexOf('>', pos);
-					pos2 = tmp.lastIndexOf('</body>');
-					inst.fullpageTopContent = content.substring(0, pos + 1);
-					content = content.substring(pos + 1, pos2);
-					// tinyMCE.debug(inst.fullpageTopContent, content);
-				} else {
-					if (!inst.fullpageTopContent) {
-						var docType = tinyMCE.getParam("fullpage_default_doctype", '<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
-						var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8');
-						var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document');
-						var lang = tinyMCE.getParam("fullpage_default_langcode", 'en');
-						var pi = tinyMCE.getParam("fullpage_default_xml_pi", true);
-						var ff = tinyMCE.getParam("fullpage_default_font_family", "");
-						var fz = tinyMCE.getParam("fullpage_default_font_size", "");
-						var ds = tinyMCE.getParam("fullpage_default_style", "");
-						var dtc = tinyMCE.getParam("fullpage_default_text_color", "");
-
-						// Xml encode it
-						title = title.replace(/&/g, '&amp;');
-						title = title.replace(/\"/g, '&quot;');
-						title = title.replace(/</g, '&lt;');
-						title = title.replace(/>/g, '&gt;');
-
-						tmp = '';
-
-						// Make default chunk
-						if (pi)
-							tmp += '<?xml version="1.0" encoding="' + enc + '"?>\n';
-
-						tmp += docType + '\n';
-						tmp += '<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="' + lang + '" xml:lang="' + lang + '">\n';
-						tmp += '<head>\n';
-						tmp += '\t<title>' + title + '</title>\n';
-						tmp += '\t<meta http-equiv="Content-Type" content="text/html; charset=' + enc + '" />\n';
-						tmp += '</head>\n';
-						tmp += '<body';
-
-						if (ff != '' || fz != '') {
-							tmp += ' style="';
-
-							if (ds != '')
-								tmp += ds + ";";
-
-							if (ff != '')
-								tmp += 'font-family: ' + ff + ";";
-
-							if (fz != '')
-								tmp += 'font-size: ' + fz + ";";
-
-							tmp += '"';
-						}
-
-						if (dtc != '')
-							tmp += ' text="' + dtc + '"';
-
-						tmp += '>\n';
-
-						inst.fullpageTopContent = tmp;
-					}
-				}
-
-				this._addToHead(inst);
-
-				break;
-
-			case "get_from_editor":
-				if (inst.fullpageTopContent && !tinyMCE.getParam("fullpage_hide_in_source_view", false)) {
-					content = content.replace(/(\s)?mce\_[a-z_]+\=[^\s>]+(\s|\>)/i, ''); // Remove internal stuff
-					content = inst.fullpageTopContent + content + "\n</body>\n</html>";
-				}
-
-				break;
-
-			case "submit_content":
-				if (inst.fullpageTopContent && tinyMCE.getParam("fullpage_hide_in_source_view", false))
-					content = inst.fullpageTopContent + content + "\n</body>\n</html>";
-
-				break;
-		}
-
-		// Pass through to next handler in chain
-		return content;
-	},
-
-	// Private plugin internal methods
-
-	_addToHead : function(inst) {
-		var doc = inst.getDoc();
-		var head = doc.getElementsByTagName("head")[0];
-		var body = doc.body;
-		var h = inst.fullpageTopContent;
-		var e = doc.createElement("body");
-		var nl, i, le, tmp;
-
-		// Remove stuff we don't want
-		h = h.replace(/(\r|\n)/gi, '');
-		h = h.replace(/<\?[^\>]*\>/gi, '');
-		h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, '');
-		h = h.replace(/<script(.*?)<\/script>/gi, '');
-		h = h.replace(/<title(.*?)<\/title>/gi, '');
-		h = h.replace(/<(meta|base)[^>]*>/gi, '');
-
-		// Make link and style elements into pre
-		h = h.replace(/<link([^>]*)\/>/gi, '<pre mce_type="link" $1></pre>');
-		//h = h.replace(/<style([^>]*)>(.*?)<\/style>/gi, '<pre mce_type="style" $1>$2</pre>');
-
-		// Make body a div
-		h = h.replace(/<body/gi, '<div mce_type="body"');
-		h += '</div>';
-
-		// Now crapy MSIE can parse it
-		e.innerHTML = h;
-
-		// Reset all body attributes
-		body.vLink = body.aLink = body.link = body.text = '';
-		body.style.cssText = '';
-
-		// Delete all old links
-		nl = head.getElementsByTagName('link');
-		for (i=0; i<nl.length; i++) {
-			if (tinyMCE.getAttrib(nl[i], 'mce_head') == "true")
-				nl[i].parentNode.removeChild(nl[i]);
-		}
-
-		// Add link elements
-		nl = e.getElementsByTagName('pre');
-		for (i=0; i<nl.length; i++) {
-			tmp = tinyMCE.getAttrib(nl[i], 'media');
-			if (tinyMCE.getAttrib(nl[i], 'mce_type') == "link" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(nl[i], 'rel') == "stylesheet") {
-				le = doc.createElement("link");
-
-				le.rel = "stylesheet";
-				le.href = tinyMCE.getAttrib(nl[i], 'href');
-				le.setAttribute("mce_head", "true");
-
-				head.appendChild(le);
-			}
-		}
-
-		// Add body attributes
-		nl = e.getElementsByTagName('div');
-		if (nl.length > 0) {
-			body.style.cssText = tinyMCE.getAttrib(nl[0], 'style');
-
-			if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '')
-				body.style.marginLeft = tmp + "px";
-
-			if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '')
-				body.style.marginRight = tmp + "px";
-
-			if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '')
-				body.style.marginTop = tmp + "px";
-
-			if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '')
-				body.style.marginBottom = tmp + "px";
-
-			body.dir = tinyMCE.getAttrib(nl[0], 'dir');
-			body.vLink = tinyMCE.getAttrib(nl[0], 'vlink');
-			body.aLink = tinyMCE.getAttrib(nl[0], 'alink');
-			body.link = tinyMCE.getAttrib(nl[0], 'link');
-			body.text = tinyMCE.getAttrib(nl[0], 'text');
-
-			if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '')
-				body.style.backgroundImage = "url('" + tmp + "')";
-
-			if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '')
-				body.style.backgroundColor = tmp;
-		}
-	}
-};
-
-tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin);
+/**
+ * $Id: editor_plugin_src.js 1029 2009-02-24 22:32:21Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.FullPagePlugin', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceFullPageProperties', function() {
+				ed.windowManager.open({
+					file : url + '/fullpage.htm',
+					width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
+					height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url,
+					head_html : t.head
+				});
+			});
+
+			// Register buttons
+			ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
+
+			ed.onBeforeSetContent.add(t._setContent, t);
+			ed.onSetContent.add(t._setBodyAttribs, t);
+			ed.onGetContent.add(t._getContent, t);
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Fullpage',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private plugin internal methods
+
+		_setBodyAttribs : function(ed, o) {
+			var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i);
+
+			if (attr && attr[1]) {
+				bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);
+
+				if (bdattr) {
+					for(i = 0, len = bdattr.length; i < len; i++) {
+						kv = bdattr[i].split('=');
+						k = kv[0].replace(/\s/,'');
+						v = kv[1];
+
+						if (v) {
+							v = v.replace(/^\s+/,'').replace(/\s+$/,'');
+							t = v.match(/^["'](.*)["']$/);
+
+							if (t)
+								v = t[1];
+						} else
+							v = k;
+
+						ed.dom.setAttrib(ed.getBody(), 'style', v);
+					}
+				}
+			}
+		},
+
+		_createSerializer : function() {
+			return new tinymce.dom.Serializer({
+				dom : this.editor.dom,
+				apply_source_formatting : true
+			});
+		},
+
+		_setContent : function(ed, o) {
+			var t = this, sp, ep, c = o.content, v, st = '';
+
+			if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))
+				return;
+
+			// Parse out head, body and footer
+			c = c.replace(/<(\/?)BODY/gi, '<$1body');
+			sp = c.indexOf('<body');
+
+			if (sp != -1) {
+				sp = c.indexOf('>', sp);
+				t.head = c.substring(0, sp + 1);
+
+				ep = c.indexOf('</body', sp);
+				if (ep == -1)
+					ep = c.indexOf('</body', ep);
+
+				o.content = c.substring(sp + 1, ep);
+				t.foot = c.substring(ep);
+
+				function low(s) {
+					return s.replace(/<\/?[A-Z]+/g, function(a) {
+						return a.toLowerCase();
+					})
+				};
+
+				t.head = low(t.head);
+				t.foot = low(t.foot);
+			} else {
+				t.head = '';
+				if (ed.getParam('fullpage_default_xml_pi'))
+					t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
+
+				t.head += ed.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
+				t.head += '\n<html>\n<head>\n<title>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n';
+
+				if (v = ed.getParam('fullpage_default_encoding'))
+					t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n';
+
+				if (v = ed.getParam('fullpage_default_font_family'))
+					st += 'font-family: ' + v + ';';
+
+				if (v = ed.getParam('fullpage_default_font_size'))
+					st += 'font-size: ' + v + ';';
+
+				if (v = ed.getParam('fullpage_default_text_color'))
+					st += 'color: ' + v + ';';
+
+				t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n';
+				t.foot = '\n</body>\n</html>';
+			}
+		},
+
+		_getContent : function(ed, o) {
+			var t = this;
+
+			if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))
+				o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,101 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_fullpage_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mclayer.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/fullpage.js"></script>
+	<title>{#fullpage_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="js/fullpage.js"></script>
 	<link href="css/fullpage.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="advlink" style="display: none">
     <form onsubmit="updateAction();return false;" name="fullpage" action="#">
 		<div class="tabs">
 			<ul>
-				<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{$lang_fullpage_meta_tab}</a></span></li>
-				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_fullpage_appearance_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_tab}</a></span></li>
+				<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>
+				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_tab}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="meta_panel" class="panel current">
 				<fieldset>
-					<legend>{$lang_fullpage_meta_props}</legend>
+					<legend>{#fullpage_dlg.meta_props}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td nowrap="nowrap"><label for="metatitle">{$lang_fullpage_meta_title}</label>&nbsp;</td>
-							<td><input type="text" id="metatitle" name="metatitle" value="" /></td>
+							<td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>
+							<td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="metakeywords">{$lang_fullpage_meta_keywords}</label>&nbsp;</td>
+							<td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>
 							<td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="metadescription">{$lang_fullpage_meta_description}</label>&nbsp;</td>
+							<td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>
 							<td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="metaauthor">{$lang_fullpage_author}</label>&nbsp;</td>
+							<td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>
 							<td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="metacopyright">{$lang_fullpage_copyright}</label>&nbsp;</td>
+							<td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>
 							<td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="metarobots">{$lang_fullpage_meta_robots}</label>&nbsp;</td>
+							<td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>
 							<td>
-<select id="metarobots" name="metarobots">
-			<option value="">{$lang_not_set}</option> 
-			<option value="index,follow">{$lang_fullpage_meta_index_follow}</option>
-			<option value="index,nofollow">{$lang_fullpage_meta_index_nofollow}</option>
-			<option value="noindex,follow">{$lang_fullpage_meta_noindex_follow}</option>
-			<option value="noindex,nofollow">{$lang_fullpage_meta_noindex_nofollow}</option>
-</select>
+								<select id="metarobots" name="metarobots">
+											<option value="">{#not_set}</option> 
+											<option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>
+											<option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>
+											<option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>
+											<option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>
+								</select>
 							</td>
 						</tr>
 					</table>
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_fullpage_langprops}</legend>
+					<legend>{#fullpage_dlg.langprops}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="docencoding">{$lang_fullpage_encoding}</label></td> 
+							<td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td> 
 							<td>
 								<select id="docencoding" name="docencoding"> 
-										<option value="">{$lang_not_set}</option>
+										<option value="">{#not_set}</option>
 								</select>
 							</td> 
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="doctypes">{$lang_fullpage_doctypes}</label>&nbsp;</td>
+							<td class="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label>&nbsp;</td>
 							<td>
 								<select id="doctypes" name="doctypes">
-										<option value="">{$lang_not_set}</option>
+										<option value="">{#not_set}</option>
 								</select>
 							</td>
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="langcode">{$lang_fullpage_langcode}</label>&nbsp;</td>
+							<td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>
 							<td><input type="text" id="langcode" name="langcode" value="" /></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="langdir">{$lang_fullpage_langdir}</label></td> 
+							<td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td> 
 							<td>
 								<select id="langdir" name="langdir"> 
-										<option value="">{$lang_not_set}</option> 
-										<option value="ltr">{$lang_fullpage_ltr}</option> 
-										<option value="rtl">{$lang_fullpage_rtl}</option> 
+										<option value="">{#not_set}</option> 
+										<option value="ltr">{#fullpage_dlg.ltr}</option> 
+										<option value="rtl">{#fullpage_dlg.rtl}</option> 
 								</select>
 							</td> 
 						</tr>
 						<tr>
-							<td nowrap="nowrap"><label for="xml_pi">{$lang_fullpage_xml_pi}</label>&nbsp;</td>
+							<td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>
 							<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
 						</tr>
 					</table>
@@ -104,29 +103,29 @@
 
 			<div id="appearance_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_fullpage_appearance_textprops}</legend>
+					<legend>{#fullpage_dlg.appearance_textprops}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="fontface">{$lang_fullpage_fontface}</label></td> 
+							<td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td> 
 							<td>
 								<select id="fontface" name="fontface" onchange="changedStyleField(this);">
-										<option value="">{$lang_not_set}</option>
+										<option value="">{#not_set}</option>
 								</select>
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="fontsize">{$lang_fullpage_fontsize}</label></td> 
+							<td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td> 
 							<td>
 								<select id="fontsize" name="fontsize" onchange="changedStyleField(this);">
-										<option value="">{$lang_not_set}</option>
+										<option value="">{#not_set}</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="textcolor">{$lang_fullpage_textcolor}</label></td> 
+							<td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -140,11 +139,11 @@
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_fullpage_appearance_bgprops}</legend>
+					<legend>{#fullpage_dlg.appearance_bgprops}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="bgimage">{$lang_fullpage_bgimage}</label></td> 
+							<td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -155,7 +154,7 @@
 							</td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="bgcolor">{$lang_fullpage_bgcolor}</label></td> 
+							<td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -169,30 +168,30 @@
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_fullpage_appearance_marginprops}</legend>
+					<legend>{#fullpage_dlg.appearance_marginprops}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="leftmargin">{$lang_fullpage_left_margin}</label></td> 
+							<td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td> 
 							<td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
-							<td class="column1"><label for="rightmargin">{$lang_fullpage_right_margin}</label></td> 
+							<td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td> 
 							<td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="topmargin">{$lang_fullpage_top_margin}</label></td> 
+							<td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td> 
 							<td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
-							<td class="column1"><label for="bottommargin">{$lang_fullpage_bottom_margin}</label></td> 
+							<td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td> 
 							<td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>
 						</tr>
 					</table>
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_fullpage_appearance_linkprops}</legend>
+					<legend>{#fullpage_dlg.appearance_linkprops}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="link_color">{$lang_fullpage_link_color}</label></td> 
+							<td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -202,7 +201,7 @@
 								</table>
 							</td>
 
-							<td class="column1"><label for="visited_color">{$lang_fullpage_visited_color}</label></td> 
+							<td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -214,7 +213,7 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="active_color">{$lang_fullpage_active_color}</label></td> 
+							<td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -227,7 +226,7 @@
 							<td>&nbsp;</td>
 							<td>&nbsp;</td>
 
-<!--							<td class="column1"><label for="hover_color">{$lang_fullpage_hover_color}</label></td> 
+<!--							<td class="column1"><label for="hover_color">{#fullpage_dlg.hover_color}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -241,11 +240,11 @@
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_fullpage_appearance_style}</legend>
+					<legend>{#fullpage_dlg.appearance_style}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="stylesheet">{$lang_fullpage_stylesheet}</label></td> 
+							<td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td> 
 							<td><table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
@@ -254,7 +253,7 @@
 								</table></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="style">{$lang_fullpage_style}</label></td> 
+							<td class="column1"><label for="style">{#fullpage_dlg.style}</label></td> 
 							<td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>
 						</tr>
 					</table>
@@ -264,28 +263,28 @@
 			<div id="advanced_panel" class="panel">
 				<div id="addmenu">
 					<table border="0" cellpadding="0" cellspacing="0">
-						<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{$lang_fullpage_add_title}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{$lang_fullpage_add_meta}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{$lang_fullpage_add_script}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{$lang_fullpage_add_style}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{$lang_fullpage_add_link}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{$lang_fullpage_add_base}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{$lang_fullpage_add_comment}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{#fullpage_dlg.add_title}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{#fullpage_dlg.add_meta}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{#fullpage_dlg.add_script}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{#fullpage_dlg.add_style}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{#fullpage_dlg.add_link}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{#fullpage_dlg.add_base}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{#fullpage_dlg.add_comment}</span></a></td></tr>
 					</table>
 				</div>
 
 				<fieldset>
-					<legend>{$lang_fullpage_head_elements}</legend>
+					<legend>{#fullpage_dlg.head_elements}</legend>
 
 					<div class="headlistwrapper">
 						<div class="toolbar">
 							<div style="float: left">
-								<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{$lang_fullpage_add}"></a>
-								<a href="#" onmousedown="return false;" class="removebutton" title="{$lang_fullpage_remove}"></a>
+								<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{#fullpage_dlg.add}"></a>
+								<a href="#" onmousedown="return false;" class="removebutton" title="{#fullpage_dlg.remove}"></a>
 							</div>
 							<div style="float: right">
-								<a href="#" onmousedown="return false;" class="moveupbutton" title="{$lang_fullpage_moveup}"></a>
-								<a href="#" onmousedown="return false;" class="movedownbutton" title="{$lang_fullpage_movedown}"></a>
+								<a href="#" onmousedown="return false;" class="moveupbutton" title="{#fullpage_dlg.moveup}"></a>
+								<a href="#" onmousedown="return false;" class="movedownbutton" title="{#fullpage_dlg.movedown}"></a>
 							</div>
 							<br style="clear: both" />
 						</div>
@@ -303,49 +302,49 @@
 				</fieldset>
 
 				<fieldset id="meta_element">
-					<legend>{$lang_fullpage_meta_element}</legend>
+					<legend>{#fullpage_dlg.meta_element}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="element_meta_type">{$lang_fullpage_type}</label></td> 
+							<td class="column1"><label for="element_meta_type">{#fullpage_dlg.type}</label></td> 
 							<td><select id="element_meta_type">
 										<option value="name">name</option>
 										<option value="http-equiv">http-equiv</option>
 								</select></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="element_meta_name">{$lang_fullpage_name}</label></td> 
+							<td class="column1"><label for="element_meta_name">{#fullpage_dlg.name}</label></td> 
 							<td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="element_meta_content">{$lang_fullpage_content}</label></td> 
+							<td class="column1"><label for="element_meta_content">{#fullpage_dlg.content}</label></td> 
 							<td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>
 						</tr>
 					</table>
 
-					<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 
 				<fieldset id="title_element">
-					<legend>{$lang_fullpage_title_element}</legend>
+					<legend>{#fullpage_dlg.title_element}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="element_title">{$lang_fullpage_meta_title}</label></td> 
+							<td class="column1"><label for="element_title">{#fullpage_dlg.meta_title}</label></td> 
 							<td><input id="element_title" name="element_title" type="text" value="" /></td>
 						</tr>
 					</table>
 
-					<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 
 				<fieldset id="script_element">
-					<legend>{$lang_fullpage_script_element}</legend>
+					<legend>{#fullpage_dlg.script_element}</legend>
 
 					<div class="tabs">
 						<ul>
-							<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>
-							<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>
+							<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
+							<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
 						</ul>
 					</div>
 
@@ -355,7 +354,7 @@
 						<div id="script_props_panel" class="panel current">
 							<table border="0" cellpadding="4" cellspacing="0">
 								<tr>
-									<td class="column1"><label for="element_script_type">{$lang_fullpage_type}</label></td> 
+									<td class="column1"><label for="element_script_type">{#fullpage_dlg.type}</label></td> 
 									<td><select id="element_script_type">
 										<option value="text/javascript">text/javascript</option>
 										<option value="text/jscript">text/jscript</option>
@@ -366,7 +365,7 @@
 									</select></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_script_src">{$lang_fullpage_src}</label></td> 
+									<td class="column1"><label for="element_script_src">{#fullpage_dlg.src}</label></td> 
 									<td><table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>
@@ -375,11 +374,11 @@
 								</table></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_script_charset">{$lang_fullpage_charset}</label></td> 
-									<td><select id="element_script_charset"><option value="">{$lang_not_set}</option></select></td>
+									<td class="column1"><label for="element_script_charset">{#fullpage_dlg.charset}</label></td> 
+									<td><select id="element_script_charset"><option value="">{#not_set}</option></select></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_script_defer">{$lang_fullpage_defer}</label></td> 
+									<td class="column1"><label for="element_script_defer">{#fullpage_dlg.defer}</label></td> 
 									<td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>
 								</tr>
 							</table>
@@ -390,16 +389,16 @@
 						</div>
 					</div>
 
-					<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 
 				<fieldset id="style_element">
-					<legend>{$lang_fullpage_style_element}</legend>
+					<legend>{#fullpage_dlg.style_element}</legend>
 
 					<div class="tabs">
 						<ul>
-							<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>
-							<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>
+							<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
+							<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
 						</ul>
 					</div>
 
@@ -409,13 +408,13 @@
 						<div id="style_props_panel" class="panel current">
 							<table border="0" cellpadding="4" cellspacing="0">
 								<tr>
-									<td class="column1"><label for="element_style_type">{$lang_fullpage_type}</label></td> 
+									<td class="column1"><label for="element_style_type">{#fullpage_dlg.type}</label></td> 
 									<td><select id="element_style_type">
 										<option value="text/css">text/css</option>
 									</select></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_style_media">{$lang_fullpage_media}</label></td> 
+									<td class="column1"><label for="element_style_media">{#fullpage_dlg.media}</label></td> 
 									<td><select id="element_style_media"></select></td>
 								</tr>
 							</table>
@@ -426,33 +425,33 @@
 						</div>
 					</div>
 
-					<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 
 				<fieldset id="base_element">
-					<legend>{$lang_fullpage_base_element}</legend>
+					<legend>{#fullpage_dlg.base_element}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td class="column1"><label for="element_base_href">{$lang_fullpage_href}</label></td> 
+							<td class="column1"><label for="element_base_href">{#fullpage_dlg.href}</label></td> 
 							<td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>
 						</tr>
 						<tr>
-							<td class="column1"><label for="element_base_target">{$lang_fullpage_target}</label></td> 
+							<td class="column1"><label for="element_base_target">{#fullpage_dlg.target}</label></td> 
 							<td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>
 						</tr>
 					</table>
 
-					<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 
 				<fieldset id="link_element">
-					<legend>{$lang_fullpage_link_element}</legend>
+					<legend>{#fullpage_dlg.link_element}</legend>
 
 					<div class="tabs">
 						<ul>
-							<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{$lang_fullpage_general_props}</a></span></li>
-							<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_props}</a></span></li>
+							<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{#fullpage_dlg.general_props}</a></span></li>
+							<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_props}</a></span></li>
 						</ul>
 					</div>
 
@@ -462,7 +461,7 @@
 						<div id="link_general_panel" class="panel current">
 							<table border="0" cellpadding="4" cellspacing="0">
 								<tr>
-									<td class="column1"><label for="element_link_href">{$lang_fullpage_href}</label></td> 
+									<td class="column1"><label for="element_link_href">{#fullpage_dlg.href}</label></td> 
 									<td><table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>
@@ -471,24 +470,24 @@
 								</table></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_link_title">{$lang_fullpage_meta_title}</label></td> 
+									<td class="column1"><label for="element_link_title">{#fullpage_dlg.meta_title}</label></td> 
 									<td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_link_type">{$lang_fullpage_type}</label></td> 
+									<td class="column1"><label for="element_link_type">{#fullpage_dlg.type}</label></td> 
 									<td><select id="element_link_type" name="element_link_type">
 										<option value="text/css">text/css</option>
 										<option value="text/javascript">text/javascript</option>
 									</select></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_link_media">{$lang_fullpage_media}</label></td> 
+									<td class="column1"><label for="element_link_media">{#fullpage_dlg.media}</label></td> 
 									<td><select id="element_link_media" name="element_link_media"></select></td>
 								</tr>
 								<tr>
-									<td><label for="element_style_rel">{$lang_fullpage_rel}</label></td>
+									<td><label for="element_style_rel">{#fullpage_dlg.rel}</label></td>
 									<td><select id="element_style_rel" name="element_style_rel"> 
-											<option value="">{$lang_not_set}</option> 
+											<option value="">{#not_set}</option> 
 											<option value="stylesheet">Stylesheet</option>
 											<option value="alternate">Alternate</option>
 											<option value="designates">Designates</option>
@@ -513,21 +512,21 @@
 						<div id="link_advanced_panel" class="panel">
 							<table border="0" cellpadding="4" cellspacing="0">
 								<tr>
-									<td class="column1"><label for="element_link_charset">{$lang_fullpage_charset}</label></td> 
-									<td><select id="element_link_charset"><option value="">{$lang_not_set}</option></select></td>
+									<td class="column1"><label for="element_link_charset">{#fullpage_dlg.charset}</label></td> 
+									<td><select id="element_link_charset"><option value="">{#not_set}</option></select></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_link_hreflang">{$lang_fullpage_hreflang}</label></td> 
+									<td class="column1"><label for="element_link_hreflang">{#fullpage_dlg.hreflang}</label></td> 
 									<td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>
 								</tr>
 								<tr>
-									<td class="column1"><label for="element_link_target">{$lang_fullpage_target}</label></td> 
+									<td class="column1"><label for="element_link_target">{#fullpage_dlg.target}</label></td> 
 									<td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>
 								</tr>
 								<tr>
-									<td><label for="element_style_rev">{$lang_fullpage_rev}</label></td>
+									<td><label for="element_style_rev">{#fullpage_dlg.rev}</label></td>
 									<td><select id="element_style_rev" name="element_style_rev"> 
-											<option value="">{$lang_not_set}</option> 
+											<option value="">{#not_set}</option> 
 											<option value="alternate">Alternate</option> 
 											<option value="designates">Designates</option> 
 											<option value="stylesheet">Stylesheet</option> 
@@ -550,26 +549,26 @@
 						</div>
 					</div>
 
-					<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 
 				<fieldset id="comment_element">
-					<legend>{$lang_fullpage_comment_element}</legend>
+					<legend>{#fullpage_dlg.comment_element}</legend>
 
 					<textarea id="element_comment_value"></textarea>
 
-					<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+					<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
 				</fieldset>
 			</div>
 		</div>
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="update" value="{$lang_update}" onclick="updateAction();" />
+				<input type="submit" id="insert" name="update" value="{#update}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
     </form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,461 @@
+tinyMCEPopup.requireLangPack();
+
+var doc;
+
+var defaultDocTypes = 
+	'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
+	'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
+	'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
+	'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
+	'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
+	'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
+	'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
+
+var defaultEncodings = 
+	'Western european (iso-8859-1)=iso-8859-1,' +
+	'Central European (iso-8859-2)=iso-8859-2,' +
+	'Unicode (UTF-8)=utf-8,' +
+	'Chinese traditional (Big5)=big5,' +
+	'Cyrillic (iso-8859-5)=iso-8859-5,' +
+	'Japanese (iso-2022-jp)=iso-2022-jp,' +
+	'Greek (iso-8859-7)=iso-8859-7,' +
+	'Korean (iso-2022-kr)=iso-2022-kr,' +
+	'ASCII (us-ascii)=us-ascii';
+
+var defaultMediaTypes = 
+	'all=all,' +
+	'screen=screen,' +
+	'print=print,' +
+	'tty=tty,' +
+	'tv=tv,' +
+	'projection=projection,' +
+	'handheld=handheld,' +
+	'braille=braille,' +
+	'aural=aural';
+
+var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
+var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
+
+function init() {
+	var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style;
+
+	// Setup doctype select box
+	doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(',');
+	for (i=0; i<doctypes.length; i++) {
+		p = doctypes[i].split('=');
+
+		if (p.length > 1)
+			addSelectValue(f, 'doctypes', p[0], p[1]);
+	}
+
+	// Setup fonts select box
+	fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';');
+	for (i=0; i<fonts.length; i++) {
+		p = fonts[i].split('=');
+
+		if (p.length > 1)
+			addSelectValue(f, 'fontface', p[0], p[1]);
+	}
+
+	// Setup fontsize select box
+	fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
+	for (i=0; i<fonts.length; i++)
+		addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
+
+	// Setup mediatype select boxs
+	mediaTypes = ed.getParam("fullpage_media_types", defaultMediaTypes).split(',');
+	for (i=0; i<mediaTypes.length; i++) {
+		p = mediaTypes[i].split('=');
+
+		if (p.length > 1) {
+			addSelectValue(f, 'element_style_media', p[0], p[1]);
+			addSelectValue(f, 'element_link_media', p[0], p[1]);
+		}
+	}
+
+	// Setup encodings select box
+	encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(',');
+	for (i=0; i<encodings.length; i++) {
+		p = encodings[i].split('=');
+
+		if (p.length > 1) {
+			addSelectValue(f, 'docencoding', p[0], p[1]);
+			addSelectValue(f, 'element_script_charset', p[0], p[1]);
+			addSelectValue(f, 'element_link_charset', p[0], p[1]);
+		}
+	}
+
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+	document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
+	//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
+	document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
+	document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
+	document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
+	document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
+	document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
+	document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
+	document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
+
+	// Resize some elements
+	if (isVisible('stylesheetbrowser'))
+		document.getElementById('stylesheet').style.width = '220px';
+
+	if (isVisible('link_href_browser'))
+		document.getElementById('element_link_href').style.width = '230px';
+
+	if (isVisible('bgimage_browser'))
+		document.getElementById('bgimage').style.width = '210px';
+
+	// Add iframe
+	dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}});
+	doc = dom.get('documentIframe').contentWindow.document;
+	h = tinyMCEPopup.getWindowArg('head_html');
+
+	// Preprocess the HTML disable scripts and urls
+	h = h.replace(/<script>/gi, '<script type="text/javascript">');
+	h = h.replace(/type=([\"\'])?/gi, 'type=$1-mce-');
+	h = h.replace(/(src=|href=)/g, 'mce_$1');
+
+	// Write in the content in the iframe
+	doc.write(h + '</body></html>');
+	doc.close();
+
+	// Parse xml and doctype
+	xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
+	xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
+	docType = getReItem(/<\!DOCTYPE.*?>/gi, h, 0);
+	f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1);
+
+	// Parse title
+	if (e = doc.getElementsByTagName('title')[0])
+		el.metatitle.value = e.textContent || e.text;
+
+	// Parse meta
+	tinymce.each(doc.getElementsByTagName('meta'), function(n) {
+		var na = (n.getAttribute('name', 2) || '').toLowerCase(), va = n.getAttribute('content', 2), eq = n.getAttribute('httpEquiv', 2) || '';
+
+		e = el['meta' + na];
+
+		if (na == 'robots') {
+			selectByValue(f, 'metarobots', tinymce.trim(va), true, true);
+			return;
+		}
+
+		switch (eq.toLowerCase()) {
+			case "content-type":
+				tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, va, 1);
+
+				// Override XML encoding
+				if (tmp != "")
+					xmlEnc = tmp;
+
+				return;
+		}
+
+		if (e)
+			e.value = va;
+	});
+
+	selectByValue(f, 'doctypes', docType, true, true);
+	selectByValue(f, 'docencoding', xmlEnc, true, true);
+	selectByValue(f, 'langdir', doc.body.getAttribute('dir', 2) || '', true, true);
+
+	if (xmlVer != '')
+		el.xml_pi.checked = true;
+
+	// Parse appearance
+
+	// Parse primary stylesheet
+	tinymce.each(doc.getElementsByTagName("link"), function(l) {
+		var m = l.getAttribute('media', 2) || '', t = l.getAttribute('type', 2) || '';
+
+		if (t == "-mce-text/css" && (m == "" || m == "screen" || m == "all") && (l.getAttribute('rel', 2) || '') == "stylesheet") {
+			f.stylesheet.value = l.getAttribute('mce_href', 2) || '';
+			return false;
+		}
+	});
+
+	// Get from style elements
+	tinymce.each(doc.getElementsByTagName("style"), function(st) {
+		var tmp = parseStyleElement(st);
+
+		for (x=0; x<tmp.length; x++) {
+			if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
+				f.visited_color.value = tmp[x].data['color'];
+
+			if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
+				f.link_color.value = tmp[x].data['color'];
+
+			if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
+				f.active_color.value = tmp[x].data['color'];
+		}
+	});
+
+	f.textcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "text");
+	f.active_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "alink");
+	f.link_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "link");
+	f.visited_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "vlink");
+	f.bgcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "bgcolor");
+	f.bgimage.value = tinyMCEPopup.dom.getAttrib(doc.body, "background");
+
+	// Get from style info
+	style = tinyMCEPopup.dom.parseStyle(tinyMCEPopup.dom.getAttrib(doc.body, 'style'));
+
+	if (style['font-family'])
+		selectByValue(f, 'fontface', style['font-family'], true, true);
+	else
+		selectByValue(f, 'fontface', ed.getParam("fullpage_default_fontface", ""), true, true);
+
+	if (style['font-size'])
+		selectByValue(f, 'fontsize', style['font-size'], true, true);
+	else
+		selectByValue(f, 'fontsize', ed.getParam("fullpage_default_fontsize", ""), true, true);
+
+	if (style['color'])
+		f.textcolor.value = convertRGBToHex(style['color']);
+
+	if (style['background-image'])
+		f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+	if (style['background-color'])
+		f.bgcolor.value = style['background-color'];
+
+	if (style['margin']) {
+		tmp = style['margin'].replace(/[^0-9 ]/g, '');
+		tmp = tmp.split(/ +/);
+		f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
+		f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
+		f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
+		f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
+	}
+
+	if (style['margin-left'])
+		f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
+
+	if (style['margin-right'])
+		f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
+
+	if (style['margin-top'])
+		f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
+
+	if (style['margin-bottom'])
+		f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
+
+	f.style.value = tinyMCEPopup.dom.serializeStyle(style);
+
+	// Update colors
+	updateColor('textcolor_pick', 'textcolor');
+	updateColor('bgcolor_pick', 'bgcolor');
+	updateColor('visited_color_pick', 'visited_color');
+	updateColor('active_color_pick', 'active_color');
+	updateColor('link_color_pick', 'link_color');
+}
+
+function getReItem(r, s, i) {
+	var c = r.exec(s);
+
+	if (c && c.length > i)
+		return c[i];
+
+	return '';
+}
+
+function updateAction() {
+	var f = document.forms[0], nl, i, h, v, s, head, html, l, tmp, addlink = true, ser;
+
+	head = doc.getElementsByTagName('head')[0];
+
+	// Fix scripts without a type
+	nl = doc.getElementsByTagName('script');
+	for (i=0; i<nl.length; i++) {
+		if (tinyMCEPopup.dom.getAttrib(nl[i], 'mce_type') == '')
+			nl[i].setAttribute('mce_type', 'text/javascript');
+	}
+
+	// Get primary stylesheet
+	nl = doc.getElementsByTagName("link");
+	for (i=0; i<nl.length; i++) {
+		l = nl[i];
+
+		tmp = tinyMCEPopup.dom.getAttrib(l, 'media');
+
+		if (tinyMCEPopup.dom.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCEPopup.dom.getAttrib(l, 'rel') == "stylesheet") {
+			addlink = false;
+
+			if (f.stylesheet.value == '')
+				l.parentNode.removeChild(l);
+			else
+				l.setAttribute('mce_href', f.stylesheet.value);
+
+			break;
+		}
+	}
+
+	// Add new link
+	if (f.stylesheet.value != '') {
+		l = doc.createElement('link');
+
+		l.setAttribute('type', 'text/css');
+		l.setAttribute('mce_href', f.stylesheet.value);
+		l.setAttribute('rel', 'stylesheet');
+
+		head.appendChild(l);
+	}
+
+	setMeta(head, 'keywords', f.metakeywords.value);
+	setMeta(head, 'description', f.metadescription.value);
+	setMeta(head, 'author', f.metaauthor.value);
+	setMeta(head, 'copyright', f.metacopyright.value);
+	setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
+	setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
+
+	doc.body.dir = getSelectValue(f, 'langdir');
+	doc.body.style.cssText = f.style.value;
+
+	doc.body.setAttribute('vLink', f.visited_color.value);
+	doc.body.setAttribute('link', f.link_color.value);
+	doc.body.setAttribute('text', f.textcolor.value);
+	doc.body.setAttribute('aLink', f.active_color.value);
+
+	doc.body.style.fontFamily = getSelectValue(f, 'fontface');
+	doc.body.style.fontSize = getSelectValue(f, 'fontsize');
+	doc.body.style.backgroundColor = f.bgcolor.value;
+
+	if (f.leftmargin.value != '')
+		doc.body.style.marginLeft = f.leftmargin.value + 'px';
+
+	if (f.rightmargin.value != '')
+		doc.body.style.marginRight = f.rightmargin.value + 'px';
+
+	if (f.bottommargin.value != '')
+		doc.body.style.marginBottom = f.bottommargin.value + 'px';
+
+	if (f.topmargin.value != '')
+		doc.body.style.marginTop = f.topmargin.value + 'px';
+
+	html = doc.getElementsByTagName('html')[0];
+	html.setAttribute('lang', f.langcode.value);
+	html.setAttribute('xml:lang', f.langcode.value);
+
+	if (f.bgimage.value != '')
+		doc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
+	else
+		doc.body.style.backgroundImage = '';
+
+	ser = tinyMCEPopup.editor.plugins.fullpage._createSerializer();
+	ser.setRules('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml::lang|xmlns],body[style|dir|vlink|link|text|alink],head');
+
+	h = ser.serialize(doc.documentElement);
+	h = h.substring(0, h.lastIndexOf('</body>'));
+
+	if (h.indexOf('<title>') == -1)
+		h = h.replace(/<head.*?>/, '$&\n' + '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
+	else
+		h = h.replace(/<title>(.*?)<\/title>/, '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
+
+	if ((v = getSelectValue(f, 'doctypes')) != '')
+		h = v + '\n' + h;
+
+	if (f.xml_pi.checked) {
+		s = '<?xml version="1.0"';
+
+		if ((v = getSelectValue(f, 'docencoding')) != '')
+			s += ' encoding="' + v + '"';
+
+		s += '?>\n';
+		h = s + h;
+	}
+
+	h = h.replace(/type=\"\-mce\-/gi, 'type="');
+
+	tinyMCEPopup.editor.plugins.fullpage.head = h;
+	tinyMCEPopup.editor.plugins.fullpage._setBodyAttribs(tinyMCEPopup.editor, {});
+	tinyMCEPopup.close();
+}
+
+function changedStyleField(field) {
+}
+
+function setMeta(he, k, v) {
+	var nl, i, m;
+
+	nl = he.getElementsByTagName('meta');
+	for (i=0; i<nl.length; i++) {
+		if (k == 'Content-Type' && tinyMCEPopup.dom.getAttrib(nl[i], 'http-equiv') == k) {
+			if (v == '')
+				nl[i].parentNode.removeChild(nl[i]);
+			else
+				nl[i].setAttribute('content', "text/html; charset=" + v);
+
+			return;
+		}
+
+		if (tinyMCEPopup.dom.getAttrib(nl[i], 'name') == k) {
+			if (v == '')
+				nl[i].parentNode.removeChild(nl[i]);
+			else
+				nl[i].setAttribute('content', v);
+			return;
+		}
+	}
+
+	if (v == '')
+		return;
+
+	m = doc.createElement('meta');
+
+	if (k == 'Content-Type')
+		m.httpEquiv = k;
+	else
+		m.setAttribute('name', k);
+
+	m.setAttribute('content', v);
+	he.appendChild(m);
+}
+
+function parseStyleElement(e) {
+	var v = e.innerHTML;
+	var p, i, r;
+
+	v = v.replace(/<!--/gi, '');
+	v = v.replace(/-->/gi, '');
+	v = v.replace(/[\n\r]/gi, '');
+	v = v.replace(/\s+/gi, ' ');
+
+	r = [];
+	p = v.split(/{|}/);
+
+	for (i=0; i<p.length; i+=2) {
+		if (p[i] != "")
+			r[r.length] = {rule : tinymce.trim(p[i]), data : tinyMCEPopup.dom.parseStyle(p[i+1])};
+	}
+
+	return r;
+}
+
+function serializeStyleElement(d) {
+	var i, s, st;
+
+	s = '<!--\n';
+
+	for (i=0; i<d.length; i++) {
+		s += d[i].rule + ' {\n';
+
+		st = tinyMCE.serializeStyle(d[i].data);
+
+		if (st != '')
+			st += ';';
+
+		s += st.replace(/;/g, ';\n');
+		s += '}\n';
+
+		if (i != d.length - 1)
+			s += '\n';
+	}
+
+	s += '\n-->';
+
+	return s;
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,85 @@
+tinyMCE.addI18n('ca.fullpage_dlg',{
+title:"Propietats del document",
+meta_tab:"General",
+appearance_tab:"Aparen\u00E7a",
+advanced_tab:"Avan\u00E7at",
+meta_props:"Meta informaci\u00F3",
+langprops:"Idioma i codificaci\u00F3",
+meta_title:"T\u00EDtol",
+meta_keywords:"Paraules clau",
+meta_description:"Descripci\u00F3",
+meta_robots:"Robots",
+doctypes:"Doctype",
+langcode:"Codi de l'idioma",
+langdir:"Direcci\u00F3 de l'idioma",
+ltr:"D'esquerra a dreta",
+rtl:"De dreta a esquerra",
+xml_pi:"Declaraci\u00F3 XML",
+encoding:"Codificaci\u00F3 de car\u00E0cters",
+appearance_bgprops:"Propietats del fons",
+appearance_marginprops:"Marges del cos",
+appearance_linkprops:"Colors dels enlla\u00E7os",
+appearance_textprops:"Propietats del text",
+bgcolor:"Color de fons",
+bgimage:"Imatge de fons",
+left_margin:"Marge esquerre",
+right_margin:"Marge dret",
+top_margin:"Marge superior",
+bottom_margin:"Marge inferior",
+text_color:"Color del text",
+font_size:"Mida de lletra",
+font_face:"Tipografia",
+link_color:"Color dels enlla\u00E7os",
+hover_color:"Color ressaltat",
+visited_color:"Color visitat",
+active_color:"Color actiu",
+textcolor:"Color",
+fontsize:"Mida de lletra",
+fontface:"Tipografia",
+meta_index_follow:"Indexa i segueix els enlla\u00E7os",
+meta_index_nofollow:"Indexa i no segueixis els enlla\u00E7os",
+meta_noindex_follow:"No indexis per\u00F2 segueix els enlla\u00E7os",
+meta_noindex_nofollow:"No indexis i no segueixis els enlla\u00E7os",
+appearance_style:"Propietats dels estils i fulls d'estils",
+stylesheet:"Full d'estils",
+style:"Estil",
+author:"Autor",
+copyright:"Copyright",
+add:"Afegeix element nou",
+remove:"Elimina l'element seleccionat",
+moveup:"Despla\u00E7a amunt l'element seleccionat",
+movedown:"Despla\u00E7a avall l'element seleccionat",
+head_elements:"Elements de cap\u00E7alera",
+info:"Informaci\u00F3",
+add_title:"Element Title",
+add_meta:"Element Meta",
+add_script:"Element Script",
+add_style:"Element Style",
+add_link:"Element Link",
+add_base:"Element Base",
+add_comment:"Node de comentari",
+title_element:"Element Title",
+script_element:"Element Script",
+style_element:"Element Style",
+base_element:"Element Base",
+link_element:"Element Link",
+meta_element:"Element Meta",
+comment_element:"Comentari",
+src:"Src",
+language:"Idioma",
+href:"Href",
+target:"Target",
+type:"Type",
+charset:"Charset",
+defer:"Defer",
+media:"Media",
+properties:"Propietats",
+name:"Nom",
+value:"Valor",
+content:"Content",
+rel:"Rel",
+rev:"Rev",
+hreflang:"Href lang",
+general_props:"General",
+advanced_props:"Avan\u00E7at"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,85 @@
+tinyMCE.addI18n('en.fullpage_dlg',{
+title:"Document properties",
+meta_tab:"General",
+appearance_tab:"Appearance",
+advanced_tab:"Advanced",
+meta_props:"Meta information",
+langprops:"Language and encoding",
+meta_title:"Title",
+meta_keywords:"Keywords",
+meta_description:"Description",
+meta_robots:"Robots",
+doctypes:"Doctype",
+langcode:"Language code",
+langdir:"Language direction",
+ltr:"Left to right",
+rtl:"Right to left",
+xml_pi:"XML declaration",
+encoding:"Character encoding",
+appearance_bgprops:"Background properties",
+appearance_marginprops:"Body margins",
+appearance_linkprops:"Link colors",
+appearance_textprops:"Text properties",
+bgcolor:"Background color",
+bgimage:"Background image",
+left_margin:"Left margin",
+right_margin:"Right margin",
+top_margin:"Top margin",
+bottom_margin:"Bottom margin",
+text_color:"Text color",
+font_size:"Font size",
+font_face:"Font face",
+link_color:"Link color",
+hover_color:"Hover color",
+visited_color:"Visited color",
+active_color:"Active color",
+textcolor:"Color",
+fontsize:"Font size",
+fontface:"Font family",
+meta_index_follow:"Index and follow the links",
+meta_index_nofollow:"Index and don't follow the links",
+meta_noindex_follow:"Do not index but follow the links",
+meta_noindex_nofollow:"Do not index and don\'t follow the links",
+appearance_style:"Stylesheet and style properties",
+stylesheet:"Stylesheet",
+style:"Style",
+author:"Author",
+copyright:"Copyright",
+add:"Add new element",
+remove:"Remove selected element",
+moveup:"Move selected element up",
+movedown:"Move selected element down",
+head_elements:"Head elements",
+info:"Information",
+add_title:"Title element",
+add_meta:"Meta element",
+add_script:"Script element",
+add_style:"Style element",
+add_link:"Link element",
+add_base:"Base element",
+add_comment:"Comment node",
+title_element:"Title element",
+script_element:"Script element",
+style_element:"Style element",
+base_element:"Base element",
+link_element:"Link element",
+meta_element:"Meta element",
+comment_element:"Comment",
+src:"Src",
+language:"Language",
+href:"Href",
+target:"Target",
+type:"Type",
+charset:"Charset",
+defer:"Defer",
+media:"Media",
+properties:"Properties",
+name:"Name",
+value:"Value",
+content:"Content",
+rel:"Rel",
+rev:"Rev",
+hreflang:"Href lang",
+general_props:"General",
+advanced_props:"Advanced"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,85 @@
+tinyMCE.addI18n('es.fullpage_dlg',{
+title:"Propiedades del documento",
+meta_tab:"General",
+appearance_tab:"Apariencia",
+advanced_tab:"Avanzado",
+meta_props:"Informaci\u00F3n Meta",
+langprops:"Lenguaje y codificaci\u00F3n",
+meta_title:"T\u00EDtulo",
+meta_keywords:"Palabras clave",
+meta_description:"Descripci\u00F3n",
+meta_robots:"Robots",
+doctypes:"Tipo de doc.",
+langcode:"C\u00F3digo del lenguaje",
+langdir:"Direcci\u00F3n del lenguaje",
+ltr:"Izquierda a derecha",
+rtl:"Derecha a izquierda",
+xml_pi:"Declaraci\u00F3n XML",
+encoding:"Codificaci\u00F3n de caracteres",
+appearance_bgprops:"Propiedades del fondo",
+appearance_marginprops:"M\u00E1rgenes",
+appearance_linkprops:"Colores del v\u00EDnculo",
+appearance_textprops:"Propiedades de texto",
+bgcolor:"Color de fondo",
+bgimage:"Imagen de fondo",
+left_margin:"Margen izquierdo",
+right_margin:"Margen derecho",
+top_margin:"Margen superior",
+bottom_margin:"Margen inferior",
+text_color:"Color del texto",
+font_size:"Tama\u00F1o de fuente",
+font_face:"Fuente",
+link_color:"Color de v\u00EDnculo",
+hover_color:"Color rat\u00F3n encima",
+visited_color:"Color visitado",
+active_color:"Color activo",
+textcolor:"Color",
+fontsize:"Tama\u00F1o de fuente",
+fontface:"Fuente",
+meta_index_follow:"Indexar y seguir los v\u00EDnculos",
+meta_index_nofollow:"Indexar y no seguir los v\u00EDnculos",
+meta_noindex_follow:"No indexar pero seguir v\u00EDnculos",
+meta_noindex_nofollow:"No indexar y no seguir v\u00EDnculos",
+appearance_style:"Propiedades de hoja de estilos y estilo",
+stylesheet:"Hoja de estilo",
+style:"Estilo",
+author:"Autor",
+copyright:"Copyright",
+add:"Agregar nuevo elemento",
+remove:"Eliminar elemento seleccionado",
+moveup:"Mover elemento seleccionado hacia arriba",
+movedown:"Mover elemento seleccionado hacia abajo",
+head_elements:"Elemento Head",
+info:"Informaci\u00F3n",
+add_title:"Elemento Title",
+add_meta:"Elemento Meta",
+add_script:"Elemento Script",
+add_style:"Elemento Style",
+add_link:"Elemento Link",
+add_base:"Elemento Base",
+add_comment:"Nodo Comment",
+title_element:"Elemento Title",
+script_element:"Elemento Script",
+style_element:"Elemento Style",
+base_element:"Elemento Base",
+link_element:"Elemento Link",
+meta_element:"Elemento Meta",
+comment_element:"Comentario",
+src:"Src",
+language:"Lenguaje",
+href:"Href",
+target:"Target",
+type:"Tipo",
+charset:"Charset",
+defer:"Defer",
+media:"Medio",
+properties:"Propiedades",
+name:"Nombre",
+value:"Valor",
+content:"Contenido",
+rel:"Rel",
+rev:"Rev",
+hreflang:"Href lang",
+general_props:"General",
+advanced_props:"Avanzado"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es.js	2006-07-14 12:21:48.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,98 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
- 
-tinyMCE.addToLang('fullpage',{
-	title : 'Propiedades del documento',
-	desc : 'Propiedades del documento',
-	meta_tab : 'General',
-	appearance_tab : 'Apariencia',
-	advanced_tab : 'Avanzado',
-	meta_props : 'Informaci&oacute;n Meta',
-	langprops : 'Idioma y codificaci&oacute;n',
-	meta_title : 'T&iacute;tulo',
-	meta_keywords : 'Palabras clave',
-	meta_description : 'Descripci&oacute;n',
-	meta_robots : 'Robots',
-	doctypes : 'Tipo de documento',
-	langcode : 'C&oacute;digo del idioma',
-	langdir : 'Direcci&oacute;n del idioma',
-	ltr : 'Izquierda a derecha',
-	rtl : 'Derecha a izquierda',
-	xml_pi : 'Declaraci&oacute;n XML',
-	encoding : 'Codificaci&oacute;n de caracteres',
-	appearance_bgprops : 'Propiedades de fondo',
-	appearance_marginprops : 'M&aacute;rgenes del cuerpo',
-	appearance_linkprops : 'Color de los enlaces',
-	appearance_textprops : 'Propiedades del texto',
-	bgcolor : 'Color de fondo',
-	bgimage : 'Imagen de fondo',
-	left_margin : 'Margen izquierdo',
-	right_margin : 'Margen derecho',
-	top_margin : 'Margen superior',
-	bottom_margin : 'Margen inferior',
-	text_color : 'Color del texto',
-	font_size : 'Tama&ntilde;o de la fuente',
-	font_face : 'Familia de la fuente',
-	link_color : 'Color de los enlaces',
-	hover_color : 'Color de resalte',
-	visited_color : 'Color de visitado',
-	active_color : 'Color de activo',
-	textcolor : 'Color',
-	fontsize : 'Tama&ntilde;o de la fuente',
-	fontface : 'Familia de la fuente',
-	meta_index_follow : 'Indexar y seguir enlaces',
-	meta_index_nofollow : 'Indexar y no seguir enlaces',
-	meta_noindex_follow : 'No indexar pero seguir enlaces',
-	meta_noindex_nofollow : 'No indexar ni seguir enlaces',
-	appearance_style : 'Hoja de estilos y propiedades de estilo',
-	stylesheet : 'Hoja de estilos',
-	style : 'Estilo',
-	author : 'Autor',
-	copyright : 'Copyright',
-	add : 'A&ntilde;adir nuevo elemento',
-	remove : 'Quitar elemento seleccionado',
-	moveup : 'Mover el elemento seleccionado hacia arriba',
-	movedown : 'Mover el elemento seleccionado hacia abajo',
-	head_elements : 'Elementos de cabecera',
-	info : 'Informaci&oacute;n',
-	info_text : '',
-	add_title : 'Elemento de t&iacute;tulo',
-	add_meta : 'Elemento Meta',
-	add_script : 'Elemento de script',
-	add_style : 'Elemento de estilo',
-	add_link : 'Elemento de enlace',
-	add_base : 'Elemento base',
-	add_comment : 'Nodo comentario',
-	title_element : 'Elemento de t&iacute;tulo',
-	script_element : 'Elemento de script',
-	style_element : 'Elemento de estilo',
-	base_element : 'Elemento base',
-	link_element : 'Elemento de enlace',
-	meta_element : 'Elemento Meta',
-	comment_element : 'Comentario',
-	src : 'Fuente',
-	language : 'Idioma',
-	href : 'Referencia',
-	target : 'Destino',
-	rel : 'Rel',
-	type : 'Tipo',
-	charset : 'C&oacute;digo de caracteres',
-	defer : 'Defer',
-	media : 'Media',
-	properties : 'Propiedades',
-	name : 'Nombre',
-	value : 'Valor',
-	content : 'Contenido',
-	rel : 'Rel',
-	rev : 'Rev',
-	hreflang : 'Idioma de referencia',
-	general_props : 'General',
-	advanced_props : 'Avanzado',
-	delta_width : 0,
-	delta_height : 0
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('fullscreen');var TinyMCE_FullScreenPlugin={getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['fullscreen_skip_plugin_css'])tinyMCE.importCSS(inst.getContainerWin().document,tinyMCE.baseURL+"/plugins/fullscreen/css/page.css")},getControlHTML:function(cn){switch(cn){case"fullscreen":return tinyMCE.getButtonHTML(cn,'lang_fullscreen_desc','{$pluginurl}/images/fullscreen.gif','mceFullScreen')}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst;switch(command){case"mceFullScreen":inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.getParam('fullscreen_new_window'))this._toggleFullscreenWin(inst);else this._toggleFullscreen(inst);return true}return false},_toggleFullscreenWin:function(inst){if(tinyMCE.getParam('fullscreen_is_enabled')){window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'),'mceSetContent',false,tinyMCE.getContent(inst.editorId));top.close()}else{tinyMCE.setWindowArg('editor_id',inst.editorId);var win=window.open(tinyMCE.baseURL+"/plugins/fullscreen/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight)}catch(e){}}},_toggleFullscreen:function(inst){var ds=inst.getData('fullscreen'),editorContainer,tableElm,iframe,vp,cw,cd,re,w,h,si,blo,delta=0,cell,row,fcml,bcml;cw=inst.getContainerWin();cd=cw.document;editorContainer=cd.getElementById(inst.editorId+'_parent');tableElm=editorContainer.firstChild;iframe=inst.iframeElement;re=cd.getElementById(inst.editorId+'_resize');blo=document.getElementById('mce_fullscreen_blocker');fcm=new TinyMCE_Layer(inst.editorId+'_fcMenu');fcml=new TinyMCE_Layer(inst.editorId+'_fcMenu');bcml=new TinyMCE_Layer(inst.editorId+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(inst.editorId+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(inst.editorId+'_backcolor','mceMenuButton');bcml.hide()}if(!ds.enabled){if(inst.toolbarElement){delta+=inst.toolbarElement.offsetHeight;cell=tableElm.tBodies[0].insertRow(0).insertCell(-1);cell.className='mceToolbarTop';cell.nowrap=true;ds.oldToolbarParent=inst.toolbarElement.parentNode;ds.toolbarHolder=document.createTextNode('...');cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder,inst.toolbarElement))}ds.parents=[];vp=tinyMCE.getViewPort(cw);ds.scrollX=vp.left;ds.scrollY=vp.top;if(!tinyMCE.isOpera)tinyMCE.addCSSClass(cd.body,'mceFullscreen');tinyMCE.getParentNode(tableElm.parentNode,function(n){if(n.nodeName=='BODY')return true;if(n.nodeType==1)tinyMCE.addCSSClass(n,'mceFullscreenPos');return false});if(re)re.style.display='none';vp=tinyMCE.getViewPort(cw);ds.oldWidth=iframe.style.width?iframe.style.width:iframe.offsetWidth;ds.oldHeight=iframe.style.height?iframe.style.height:iframe.offsetHeight;ds.oldTWidth=tableElm.style.width?tableElm.style.width:tableElm.offsetWidth;ds.oldTHeight=tableElm.style.height?tableElm.style.height:tableElm.offsetHeight;if(ds.oldWidth&&ds.oldWidth.indexOf)ds.oldTWidth=ds.oldWidth.indexOf('%')!=-1?ds.oldWidth:ds.oldTWidth;if(!blo&&tinyMCE.isRealIE){blo=tinyMCE.createTag(document,'iframe',{id:'mce_fullscreen_blocker',src:'about:blank',frameBorder:0,width:vp.width,height:vp.height,style:'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});document.body.appendChild(blo)}tableElm.style.position='absolute';tableElm.style.zIndex=1000;tableElm.style.left=tableElm.style.top='0';tableElm.style.width=vp.width+'px';tableElm.style.height=vp.height+'px';if(tinyMCE.isRealIE){iframe.style.width=vp.width+'px';iframe.style.height=vp.height+'px';w=iframe.parentNode.clientWidth-(tableElm.offsetWidth-vp.width);h=iframe.parentNode.clientHeight-(tableElm.offsetHeight-vp.height)}else{w=iframe.parentNode.clientWidth;h=iframe.parentNode.clientHeight}iframe.style.width=w+"px";iframe.style.height=(h+delta)+"px";tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonSelected');ds.enabled=true;inst.useCSS=false}else{if(inst.toolbarElement){row=inst.toolbarElement.parentNode.parentNode;row.parentNode.removeChild(row);ds.oldToolbarParent.replaceChild(inst.toolbarElement,ds.toolbarHolder);ds.oldToolbarParent=null;ds.toolbarHolder=null}if(blo)blo.parentNode.removeChild(blo);si=0;tinyMCE.getParentNode(tableElm.parentNode,function(n){if(n.nodeName=='BODY')return true;if(n.nodeType==1)tinyMCE.removeCSSClass(n,'mceFullscreenPos')});if(re&&tinyMCE.getParam("theme_advanced_resizing",false))re.style.display='block';tableElm.style.position='static';tableElm.style.zIndex='';tableElm.style.width='';tableElm.style.height='';tableElm.style.width=ds.oldTWidth?ds.oldTWidth:'';tableElm.style.height=ds.oldTHeight?ds.oldTHeight:'';iframe.style.width=ds.oldWidth?ds.oldWidth:'';iframe.style.height=ds.oldHeight?ds.oldHeight:'';tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonNormal');ds.enabled=false;tinyMCE.removeCSSClass(cd.body,'mceFullscreen');cw.scrollTo(ds.scrollX,ds.scrollY);inst.useCSS=false}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(tinyMCE.getParam('fullscreen_is_enabled'))tinyMCE.switchClass(editor_id+'_fullscreen','mceButtonSelected');return true}};tinyMCE.addPlugin("fullscreen",TinyMCE_FullScreenPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();tinyMCE.add(e.fullscreenEditor);e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var j=tinymce.DOM.getViewPort();e.fullscreenEditor.theme.resizeTo(j.w,j.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,230 +1,145 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('fullscreen');
-
-var TinyMCE_FullScreenPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Fullscreen',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		if (!tinyMCE.settings['fullscreen_skip_plugin_css'])
-			tinyMCE.importCSS(inst.getContainerWin().document, tinyMCE.baseURL + "/plugins/fullscreen/css/page.css");
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "fullscreen":
-				return tinyMCE.getButtonHTML(cn, 'lang_fullscreen_desc', '{$pluginurl}/images/fullscreen.gif', 'mceFullScreen');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		var inst;
-
-		// Handle commands
-		switch (command) {
-			case "mceFullScreen":
-				inst = tinyMCE.getInstanceById(editor_id);
-
-				if (tinyMCE.getParam('fullscreen_new_window'))
-					this._toggleFullscreenWin(inst);
-				else
-					this._toggleFullscreen(inst);
-
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	_toggleFullscreenWin : function(inst) {
-		if (tinyMCE.getParam('fullscreen_is_enabled')) {
-			// In fullscreen mode
-			window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'), 'mceSetContent', false, tinyMCE.getContent(inst.editorId));
-			top.close();
-		} else {
-			tinyMCE.setWindowArg('editor_id', inst.editorId);
-
-			var win = window.open(tinyMCE.baseURL + "/plugins/fullscreen/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
-			try { win.resizeTo(screen.availWidth, screen.availHeight); } catch (e) {}
-		}
-	},
-
-	_toggleFullscreen : function(inst) {
-		var ds = inst.getData('fullscreen'), editorContainer, tableElm, iframe, vp, cw, cd, re, w, h, si, blo, delta = 0, cell, row, fcml, bcml;
-
-		cw = inst.getContainerWin();
-		cd = cw.document;
-		editorContainer = cd.getElementById(inst.editorId + '_parent');
-		tableElm = editorContainer.firstChild;
-		iframe = inst.iframeElement;
-		re = cd.getElementById(inst.editorId + '_resize');
-		blo = document.getElementById('mce_fullscreen_blocker');
-		fcm = new TinyMCE_Layer(inst.editorId + '_fcMenu');
-		fcml = new TinyMCE_Layer(inst.editorId + '_fcMenu');
-		bcml = new TinyMCE_Layer(inst.editorId + '_bcMenu');
-
-		if (fcml.exists() && fcml.isVisible()) {
-			tinyMCE.switchClass(inst.editorId + '_forecolor', 'mceMenuButton');
-			fcml.hide();
-		}
-
-		if (bcml.exists() && bcml.isVisible()) {
-			tinyMCE.switchClass(inst.editorId + '_backcolor', 'mceMenuButton');
-			bcml.hide();
-		}
-
-		if (!ds.enabled) {
-			// Handle External Toolbar
-			if (inst.toolbarElement) {
-				delta += inst.toolbarElement.offsetHeight;
-
-				cell = tableElm.tBodies[0].insertRow(0).insertCell(-1);
-				cell.className = 'mceToolbarTop';
-				cell.nowrap = true;
-
-				ds.oldToolbarParent = inst.toolbarElement.parentNode;
-				ds.toolbarHolder = document.createTextNode('...');
-
-				cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder, inst.toolbarElement));
-			}
-
-			ds.parents = [];
-
-			vp = tinyMCE.getViewPort(cw);
-			ds.scrollX = vp.left;
-			ds.scrollY = vp.top;
-
-			// Opera has a bug restoring scrollbars
-			if (!tinyMCE.isOpera)
-				tinyMCE.addCSSClass(cd.body, 'mceFullscreen');
-
-			tinyMCE.getParentNode(tableElm.parentNode, function (n) {
-				if (n.nodeName == 'BODY')
-					return true;
-
-				if (n.nodeType == 1)
-					tinyMCE.addCSSClass(n, 'mceFullscreenPos');
-
-				return false;
-			});
-
-			if (re)
-				re.style.display = 'none';
-
-			vp = tinyMCE.getViewPort(cw);
-
-			ds.oldWidth = iframe.style.width ? iframe.style.width : iframe.offsetWidth;
-			ds.oldHeight = iframe.style.height ? iframe.style.height : iframe.offsetHeight;
-			ds.oldTWidth = tableElm.style.width ? tableElm.style.width : tableElm.offsetWidth;
-			ds.oldTHeight = tableElm.style.height ? tableElm.style.height : tableElm.offsetHeight;
-
-			// Handle % width
-			if (ds.oldWidth && ds.oldWidth.indexOf)
-				ds.oldTWidth = ds.oldWidth.indexOf('%') != -1 ? ds.oldWidth : ds.oldTWidth;
-
-			if (!blo && tinyMCE.isRealIE) {
-				blo = tinyMCE.createTag(document, 'iframe', {id : 'mce_fullscreen_blocker', src : 'about:blank', frameBorder : 0, width : vp.width, height : vp.height, style : 'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});
-				document.body.appendChild(blo);
-			}
-
-			tableElm.style.position = 'absolute';
-			tableElm.style.zIndex = 1000;
-			tableElm.style.left = tableElm.style.top = '0';
-
-			tableElm.style.width = vp.width + 'px';
-			tableElm.style.height = vp.height + 'px';
-
-			if (tinyMCE.isRealIE) {
-				iframe.style.width = vp.width + 'px';
-				iframe.style.height = vp.height + 'px';
-
-				// Calc new width/height based on overflow
-				w = iframe.parentNode.clientWidth - (tableElm.offsetWidth - vp.width);
-				h = iframe.parentNode.clientHeight - (tableElm.offsetHeight - vp.height);
-			} else {
-				w = iframe.parentNode.clientWidth;
-				h = iframe.parentNode.clientHeight;
-			}
-
-			iframe.style.width = w + "px";
-			iframe.style.height = (h+delta) + "px";
-
-			tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonSelected');
-			ds.enabled = true;
-
-			inst.useCSS = false;
-		} else {
-			// Handle External Toolbar
-			if (inst.toolbarElement) {
-				row = inst.toolbarElement.parentNode.parentNode;
-
-				row.parentNode.removeChild(row);
-
-				ds.oldToolbarParent.replaceChild(inst.toolbarElement, ds.toolbarHolder);
-
-				ds.oldToolbarParent = null;
-				ds.toolbarHolder = null;
-			}
-
-			if (blo)
-				blo.parentNode.removeChild(blo);
-
-			si = 0;
-			tinyMCE.getParentNode(tableElm.parentNode, function (n) {
-				if (n.nodeName == 'BODY')
-					return true;
-
-				if (n.nodeType == 1)
-					tinyMCE.removeCSSClass(n, 'mceFullscreenPos');
-			});
-
-			if (re && tinyMCE.getParam("theme_advanced_resizing", false))
-				re.style.display = 'block';
-
-			tableElm.style.position = 'static';
-			tableElm.style.zIndex = '';
-			tableElm.style.width = '';
-			tableElm.style.height = '';
-
-			tableElm.style.width = ds.oldTWidth ? ds.oldTWidth : '';
-			tableElm.style.height = ds.oldTHeight ? ds.oldTHeight : '';
-
-			iframe.style.width = ds.oldWidth ? ds.oldWidth : '';
-			iframe.style.height = ds.oldHeight ? ds.oldHeight : '';
-
-			tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonNormal');
-			ds.enabled = false;
-
-			tinyMCE.removeCSSClass(cd.body, 'mceFullscreen');
-			cw.scrollTo(ds.scrollX, ds.scrollY);
-
-			inst.useCSS = false;
-		}
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (tinyMCE.getParam('fullscreen_is_enabled'))
-			tinyMCE.switchClass(editor_id + '_fullscreen', 'mceButtonSelected');
-
-		return true;
-	}
-};
-
-tinyMCE.addPlugin("fullscreen", TinyMCE_FullScreenPlugin);
+/**
+ * $Id: editor_plugin_src.js 923 2008-09-09 16:45:29Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var DOM = tinymce.DOM;
+
+	tinymce.create('tinymce.plugins.FullScreenPlugin', {
+		init : function(ed, url) {
+			var t = this, s = {}, vp;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceFullScreen', function() {
+				var win, de = DOM.doc.documentElement;
+
+				if (ed.getParam('fullscreen_is_enabled')) {
+					if (ed.getParam('fullscreen_new_window'))
+						closeFullscreen(); // Call to close in new window
+					else {
+						DOM.win.setTimeout(function() {
+							tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
+							tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+							tinyMCE.remove(ed);
+							DOM.remove('mce_fullscreen_container');
+							de.style.overflow = ed.getParam('fullscreen_html_overflow');
+							DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
+							DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
+							tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
+						}, 10);
+					}
+
+					return;
+				}
+
+				if (ed.getParam('fullscreen_new_window')) {
+					win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
+					try {
+						win.resizeTo(screen.availWidth, screen.availHeight);
+					} catch (e) {
+						// Ignore
+					}
+				} else {
+					tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
+					s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
+					s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
+					vp = DOM.getViewPort();
+					s.fullscreen_scrollx = vp.x;
+					s.fullscreen_scrolly = vp.y;
+
+					// Fixes an Opera bug where the scrollbars doesn't reappear
+					if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
+						s.fullscreen_overflow = 'auto';
+
+					// Fixes an IE bug where horizontal scrollbars would appear
+					if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
+						s.fullscreen_overflow = 'auto';
+
+					// Fixes an IE bug where the scrollbars doesn't reappear
+					if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
+						s.fullscreen_html_overflow = 'auto'; 
+
+					if (s.fullscreen_overflow == '0px')
+						s.fullscreen_overflow = '';
+
+					DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
+					de.style.overflow = 'hidden'; //Fix for IE6/7
+					vp = DOM.getViewPort();
+					DOM.win.scrollTo(0, 0);
+
+					if (tinymce.isIE)
+						vp.h -= 1;
+
+					n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:' + (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel) ? 'absolute' : 'fixed') + ';top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
+					DOM.add(n, 'div', {id : 'mce_fullscreen'});
+
+					tinymce.each(ed.settings, function(v, n) {
+						s[n] = v;
+					});
+
+					s.id = 'mce_fullscreen';
+					s.width = n.clientWidth;
+					s.height = n.clientHeight - 15;
+					s.fullscreen_is_enabled = true;
+					s.fullscreen_editor_id = ed.id;
+					s.theme_advanced_resizing = false;
+					s.save_onsavecallback = function() {
+						ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'});
+						ed.execCommand('mceSave');
+					};
+
+					tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
+						s[k] = v;
+					});
+
+					if (s.theme_advanced_toolbar_location === 'external')
+						s.theme_advanced_toolbar_location = 'top';
+
+					t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
+					t.fullscreenEditor.onInit.add(function() {
+						t.fullscreenEditor.setContent(ed.getContent());
+						t.fullscreenEditor.focus();
+					});
+
+					t.fullscreenEditor.render();
+					tinyMCE.add(t.fullscreenEditor);
+
+					t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
+					t.fullscreenElement.update();
+					//document.body.overflow = 'hidden';
+
+					t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
+						var vp = tinymce.DOM.getViewPort();
+
+						t.fullscreenEditor.theme.resizeTo(vp.w, vp.h);
+					});
+				}
+			});
+
+			// Register buttons
+			ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
+
+			ed.onNodeChange.add(function(ed, cm) {
+				cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Fullscreen',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,23 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_fullscreen_title}</title>
+	<title></title>
 	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<script language="javascript" type="text/javascript" src="../../tiny_mce.js"></script>
-	<script language="javascript" type="text/javascript">
+	<script type="text/javascript" src="../../tiny_mce.js"></script>
+	<script type="text/javascript">
 		function patchCallback(settings, key) {
 			if (settings[key])
 				settings[key] = "window.opener." + settings[key];
 		}
 
-		var settings = new Array();
+		var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;
 
 		// Clone array
-		for (var name in window.opener.tinyMCE.settings)
-			settings[name] = window.opener.tinyMCE.settings[name];
+		for (var n in paSe)
+			settings[n] = paSe[n];
 
 		// Override options for fullscreen
-		for (var name in window.opener.tinyMCE.settings.fullscreen_settings)
-			settings[name] = window.opener.tinyMCE.settings.fullscreen_settings[name];
+		for (var n in paSe.fullscreen_settings)
+			settings[n] = paSe.fullscreen_settings[n];
 
 		// Patch callbacks, make them point to window.opener
 		patchCallback(settings, 'urlconverter_callback');
@@ -33,42 +34,35 @@
 		patchCallback(settings, 'oninit');
 
 		// Set options
+		delete settings.id;
 		settings['mode'] = 'exact';
 		settings['elements'] = 'fullscreenarea';
+		settings['add_unload_trigger'] = false;
 		settings['ask'] = false;
-		settings['setupcontent_callback'] = 'setupContent';
+		settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
 		settings['fullscreen_is_enabled'] = true;
-		settings['fullscreen_editor_id'] = window.opener.tinyMCE.getWindowArg("editor_id");
+		settings['fullscreen_editor_id'] = oeID;
 		settings['theme_advanced_resizing'] = false;
+		settings['strict_loading_mode'] = true;
 
-		// Init
-		tinyMCE.init(settings);
-		tinyMCE.documentBasePath = window.opener.tinyMCE.documentBasePath;
-
-		function setupContent(editor_id, body, doc) {
-			var inst = tinyMCE.getInstanceById(editor_id);
-			var content = window.opener.tinyMCE.getContent(tinyMCE.getParam('fullscreen_editor_id'));
-
-			// Setup title
-			var divElm = document.createElement("div");
-			divElm.innerHTML = tinyMCELang['lang_fullscreen_title'];
-			document.title = divElm.innerHTML;
-
-			// Get content
-			inst.execCommand('mceSetContent', false, content);
-		}
+		settings.save_onsavecallback = function() {
+			window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
+			window.opener.tinyMCE.get(oeID).execCommand('mceSave');
+			window.close();
+		};
 
 		function unloadHandler(e) {
 			moveContent();
 		}
 
 		function moveContent() {
-			var doc = tinyMCE.isMSIE ? window.frames['mce_editor_0'].window.document : document.getElementById('mce_editor_0').contentDocument;
-			window.opener.tinyMCE.setInnerHTML(window.opener.tinyMCE.selectedInstance.getBody(), doc.body.innerHTML);
+			window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());
 		}
 
-		// Add onunload
-		tinyMCE.addEvent(window, "beforeunload", unloadHandler);
+		function closeFullscreen() {
+			moveContent();
+			window.close();
+		}
 
 		function doParentSubmit() {
 			moveContent();
@@ -80,12 +74,37 @@
 
 			return false;
 		}
+
+		function render() {
+			var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
+
+			e.value = window.opener.tinyMCE.get(oeID).getContent();
+
+			vp = dom.getViewPort();
+			settings.width = vp.w;
+			settings.height = vp.h - 15;
+
+			tinymce.dom.Event.add(window, 'resize', function() {
+				var vp = dom.getViewPort();
+
+				tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
+			});
+
+			tinyMCE.init(settings);
+		}
+
+		// Add onunload
+		tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
 	</script>
-	<base target="_self" />
 </head>
-<body style="margin: 0; overflow: hidden; height: 100%" scrolling="no" scroll="no">
-<form onsubmit="doParentSubmit();" style="height: 100%">
-<textarea id="fullscreenarea" style="width: 100%; height: 100%"></textarea>
+<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
+<form onsubmit="doParentSubmit();">
+<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
 </form>
+
+<script type="text/javascript">
+	render();
+</script>
+
 </body>
 </html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/es.js	2005-10-18 16:47:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
-// Last Updated : October 2005
-// TinyMCE Version : 2.0RC3
-
-tinyMCE.addToLang('',{
-fullscreen_title : 'Pantalla completa',
-fullscreen_desc : 'Cambiar a pantalla completa'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('iespell');var TinyMCE_IESpellPlugin={getInfo:function(){return{longname:'IESpell (MSIE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){if(cn=="iespell"&&(tinyMCE.isMSIE&&!tinyMCE.isOpera))return tinyMCE.getButtonHTML(cn,'lang_iespell_desc','{$pluginurl}/images/iespell.gif','mceIESpell');return""},execCommand:function(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var ieSpell=new ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement)}catch(e){if(e.number==-2146827859){if(confirm(tinyMCE.getLang("lang_iespell_download","",true)))window.open('http://www.iespell.com/download.php','ieSpellDownload','')}else alert("Error Loading ieSpell: Exception "+e.number)}return true}return false}};tinyMCE.addPlugin("iespell",TinyMCE_IESpellPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,58 +1,51 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('iespell');
-
-var TinyMCE_IESpellPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'IESpell (MSIE Only)',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	/**
-	 * Returns the HTML contents of the iespell control.
-	 */
-	getControlHTML : function(cn) {
-		// Is it the iespell control and is the brower MSIE.
-		if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera))
-			return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc', '{$pluginurl}/images/iespell.gif', 'mceIESpell');
-
-		return "";
-	},
-
-	/**
-	 * Executes the mceIESpell command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle ieSpellCommand
-		if (command == "mceIESpell") {
-			try {
-				var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
-				ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);
-			} catch (e) {
-				if (e.number == -2146827859) {
-					if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
-						window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
-				} else
-					alert("Error Loading ieSpell: Exception " + e.number);
-			}
-
-			return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	}
-};
-
-tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.IESpell', {
+		init : function(ed, url) {
+			var t = this, sp;
+
+			if (!tinymce.isIE)
+				return;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceIESpell', function() {
+				try {
+					sp = new ActiveXObject("ieSpell.ieSpellExtension");
+					sp.CheckDocumentNode(ed.getDoc().documentElement);
+				} catch (e) {
+					if (e.number == -2146827859) {
+						ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {
+							if (s)
+								window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
+						});
+					} else
+						ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);
+				}
+			});
+
+			// Register buttons
+			ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'IESpell (IE Only)',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/langs/es.js	2006-07-14 12:24:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/iespell/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('',{
-iespell_desc : 'Ejecutar corrector ortogr&aacute;fico',
-iespell_download : "Corrector ortogr&aacute;fico no detectado. Pulse OK para ir a la p&aacute;gina de descarga."
-});
-
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-var TinyMCE_InlinePopupsPlugin={getInfo:function(){return{longname:'Inline Popups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}}};tinyMCE.addPlugin("inlinepopups",TinyMCE_InlinePopupsPlugin);TinyMCE_Engine.prototype.orgOpenWindow=TinyMCE_Engine.prototype.openWindow;TinyMCE_Engine.prototype.orgCloseWindow=TinyMCE_Engine.prototype.closeWindow;TinyMCE_Engine.prototype.openWindow=function(template,args){if(args['inline']!="yes"||tinyMCE.isOpera||tinyMCE.getParam("plugins").indexOf('inlinepopups')==-1){mcWindows.selectedWindow=null;args['mce_inside_iframe']=false;this.orgOpenWindow(template,args);return}var url,resizable,scrollbars;args['mce_inside_iframe']=true;tinyMCE.windowArgs=args;if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(!(minWidth=parseInt(template['minWidth'])))minWidth=100;if(!(minHeight=parseInt(template['minHeight'])))minHeight=100;resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";height+=18;for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}var elm=document.getElementById(this.selectedInstance.editorId+'_parent');if(tinyMCE.hasPlugin('fullscreen')&&this.selectedInstance.getData('fullscreen').enabled)pos={absLeft:0,absTop:0};else pos=tinyMCE.getAbsPosition(elm);pos.absLeft+=Math.round((elm.firstChild.clientWidth/ 2) - (width /2));pos.absTop+=Math.round((elm.firstChild.clientHeight/ 2) - (height /2));mcWindows.open(url,mcWindows.idCounter++,"modal=yes,width="+width+",height="+height+",resizable="+resizable+",scrollbars="+scrollbars+",statusbar="+resizable+",left="+pos.absLeft+",top="+pos.absTop+",minWidth="+minWidth+",minHeight="+minHeight)};TinyMCE_Engine.prototype.closeWindow=function(win){var gotit=false,n,w;for(n in mcWindows.windows){w=mcWindows.windows[n];if(typeof(w)=='function')continue;if(win.name==w.id+'_iframe'){w.close();gotit=true}}if(!gotit)this.orgCloseWindow(win);tinyMCE.selectedInstance.getWin().focus()};TinyMCE_Engine.prototype.setWindowTitle=function(win_ref,title){for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win_ref.name==win.id+"_iframe")window.frames[win.id+"_iframe"].document.getElementById(win.id+'_title').innerHTML=title}};function TinyMCE_Windows(){this.settings=new Array();this.windows=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.action="none";this.selectedWindow=null;this.lastSelectedWindow=null;this.zindex=1001;this.mouseDownScreenX=0;this.mouseDownScreenY=0;this.mouseDownLayerX=0;this.mouseDownLayerY=0;this.mouseDownWidth=0;this.mouseDownHeight=0;this.idCounter=0};TinyMCE_Windows.prototype.init=function(settings){this.settings=settings;if(this.isMSIE)this.addEvent(document,"mousemove",mcWindows.eventDispatcher);else this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.addEvent(window,"resize",mcWindows.eventDispatcher);this.addEvent(document,"scroll",mcWindows.eventDispatcher);this.doc=document};TinyMCE_Windows.prototype.getBounds=function(){if(!this.bounds){var vp=tinyMCE.getViewPort(window);var top,left,bottom,right,docEl=this.doc.documentElement;top=vp.top;left=vp.left;bottom=vp.height+top-2;right=vp.width+left-22;this.bounds=[left,top,right,bottom]}return this.bounds};TinyMCE_Windows.prototype.clampBoxPosition=function(x,y,w,h,minW,minH){var bounds=this.getBounds();x=Math.max(bounds[0],Math.min(bounds[2],x+w)-w);y=Math.max(bounds[1],Math.min(bounds[3],y+h)-h);return this.clampBoxSize(x,y,w,h,minW,minH)};TinyMCE_Windows.prototype.clampBoxSize=function(x,y,w,h,minW,minH){var bounds=this.getBounds();return[x,y,Math.max(minW,Math.min(bounds[2],x+w)-x),Math.max(minH,Math.min(bounds[3],y+h)-y)]};TinyMCE_Windows.prototype.getParam=function(name,default_value){var value=null;value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");return value};TinyMCE_Windows.prototype.eventDispatcher=function(e){e=typeof(e)=="undefined"?window.event:e;if(mcWindows.selectedWindow==null)return;if(mcWindows.isGecko&&e.type=="mousedown"){var elm=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(win.headElement==elm||win.resizeElement==elm){win.focus();break}}}switch(e.type){case"mousemove":mcWindows.selectedWindow.onMouseMove(e);break;case"mouseup":mcWindows.selectedWindow.onMouseUp(e);break;case"mousedown":mcWindows.selectedWindow.onMouseDown(e);break;case"focus":mcWindows.selectedWindow.onFocus(e);break;case"scroll":case"resize":if(mcWindows.clampUpdateTimeout)clearTimeout(mcWindows.clampUpdateTimeout);mcWindows.clampEventType=e.type;mcWindows.clampUpdateTimeout=setTimeout(function(){mcWindows.updateClamping()},100);break}};TinyMCE_Windows.prototype.updateClamping=function(){var clamp,oversize,etype=mcWindows.clampEventType;this.bounds=null;this.clampUpdateTimeout=null;for(var n in this.windows){win=this.windows[n];if(typeof(win)=='function'||!win.winElement)continue;clamp=mcWindows.clampBoxPosition(win.left,win.top,win.winElement.scrollWidth,win.winElement.scrollHeight,win.features.minWidth,win.features.minHeight);oversize=(clamp[2]!=win.winElement.scrollWidth||clamp[3]!=win.winElement.scrollHeight)?true:false;if(!oversize||win.features.resizable=="yes"||etype!="scroll")win.moveTo(clamp[0],clamp[1]);if(oversize&&win.features.resizable=="yes")win.resizeTo(clamp[2],clamp[3])}};TinyMCE_Windows.prototype.addEvent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+name,handler);else obj.addEventListener(name,handler,false)};TinyMCE_Windows.prototype.cancelEvent=function(e){if(this.isMSIE){e.returnValue=false;e.cancelBubble=true}else e.preventDefault()};TinyMCE_Windows.prototype.parseFeatures=function(opts){opts=opts.toLowerCase();opts=opts.replace(/;/g,",");opts=opts.replace(/[^0-9a-z=,]/g,"");var optionChunks=opts.split(',');var options=new Array();options['left']="10";options['top']="10";options['width']="300";options['height']="300";options['minwidth']="100";options['minheight']="100";options['resizable']="yes";options['minimizable']="yes";options['maximizable']="yes";options['close']="yes";options['movable']="yes";options['statusbar']="yes";options['scrollbars']="auto";options['modal']="no";if(opts=="")return options;for(var i=0;i<optionChunks.length;i++){var parts=optionChunks[i].split('=');if(parts.length==2)options[parts[0]]=parts[1]}options['left']=parseInt(options['left']);options['top']=parseInt(options['top']);options['width']=parseInt(options['width']);options['height']=parseInt(options['height']);options['minWidth']=parseInt(options['minwidth']);options['minHeight']=parseInt(options['minheight']);return options};TinyMCE_Windows.prototype.open=function(url,name,features){this.lastSelectedWindow=this.selectedWindow;var win=new TinyMCE_Window();var winDiv,html="",id;var imgPath=this.getParam("images_path");features=this.parseFeatures(features);var clamp=mcWindows.clampBoxPosition(features['left'],features['top'],features['width'],features['height'],features['minWidth'],features['minHeight']);features['left']=clamp[0];features['top']=clamp[1];if(features['resizable']=="yes"){features['width']=clamp[2];features['height']=clamp[3]}id="mcWindow_"+name;win.deltaHeight=18;if(features['statusbar']=="yes"){win.deltaHeight+=13;if(this.isMSIE)win.deltaHeight+=1}width=parseInt(features['width']);height=parseInt(features['height'])-win.deltaHeight;if(this.isMSIE)width-=2;win.id=id;win.url=url;win.name=name;win.features=features;this.windows[name]=win;iframeWidth=width;iframeHeight=height;html+='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';html+='<html>';html+='<head>';html+='<title>Wrapper iframe</title>';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';html+='<link href="'+this.getParam("css_file")+'" rel="stylesheet" type="text/css" />';html+='</head>';html+='<body onload="parent.mcWindows.onLoad(\''+name+'\');">';html+='<div id="'+id+'_container" class="mceWindow">';html+='<div id="'+id+'_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';html+='  <div id="'+id+'_title" class="mceWindowTitle"';html+='  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';html+='    <div class="mceWindowHeadTools">';html+='      <a href="javascript:parent.mcWindows.windows[\''+name+'\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="'+imgPath+'/window_close.gif" /></a>';if(features['resizable']=="yes"&&features['maximizable']=="yes")html+='      <a href="javascript:parent.mcWindows.windows[\''+name+'\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="'+imgPath+'/window_maximize.gif" /></a>';html+='    </div>';html+='</div><div id="'+id+'_body" class="mceWindowBody" style="width: '+width+'px; height: '+height+'px;">';html+='<iframe id="'+id+'_iframe" name="'+id+'_iframe" frameborder="0" width="'+iframeWidth+'" height="'+iframeHeight+'" src="'+url+'" class="mceWindowBodyIframe" scrolling="'+features['scrollbars']+'"></iframe></div>';if(features['statusbar']=="yes"){html+='<div id="'+id+'_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';if(features['resizable']=="yes"){if(this.isGecko)html+='<div id="'+id+'_resize" class="mceWindowResize"><div style="background-image: url(\''+imgPath+'/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';else html+='<div id="'+id+'_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();" border="0" src="'+imgPath+'/window_resize.gif" /></div>'}html+='</div>'}html+='</div>';html+='</body>';html+='</html>';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html)};TinyMCE_Windows.prototype.setDocumentLock=function(state){var elm=document.getElementById('mcWindowEventBlocker');if(state){if(elm==null){elm=document.createElement("div");elm.id="mcWindowEventBlocker";elm.style.position="absolute";elm.style.left="0";elm.style.top="0";document.body.appendChild(elm)}elm.style.display="none";var imgPath=this.getParam("images_path");var width=document.body.clientWidth;var height=document.body.clientHeight;elm.style.width=width;elm.style.height=height;elm.innerHTML='<img src="'+imgPath+'/spacer.gif" width="'+width+'" height="'+height+'" />';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block"}else if(elm!=null){if(mcWindows.windows.length==0)elm.parentNode.removeChild(elm);else elm.style.zIndex=mcWindows.zindex-1}};TinyMCE_Windows.prototype.onLoad=function(name){var win=mcWindows.windows[name];var id="mcWindow_"+name;var wrapperIframe=window.frames[id+"_iframe"].frames[0];var wrapperDoc=window.frames[id+"_iframe"].document;var doc=window.frames[id+"_iframe"].document;var winDiv=document.getElementById("mcWindow_"+name+"_div");var realIframe=window.frames[id+"_iframe"].frames[0];win.id="mcWindow_"+name;win.winElement=winDiv;win.bodyElement=doc.getElementById(id+'_body');win.iframeElement=doc.getElementById(id+'_iframe');win.headElement=doc.getElementById(id+'_head');win.titleElement=doc.getElementById(id+'_title');win.resizeElement=doc.getElementById(id+'_resize');win.containerElement=doc.getElementById(id+'_container');win.left=win.features['left'];win.top=win.features['top'];win.frame=window.frames[id+'_iframe'].frames[0];win.wrapperFrame=window.frames[id+'_iframe'];win.wrapperIFrameElement=document.getElementById(id+"_iframe");mcWindows.addEvent(win.headElement,"mousedown",mcWindows.eventDispatcher);if(win.resizeElement!=null)mcWindows.addEvent(win.resizeElement,"mousedown",mcWindows.eventDispatcher);if(mcWindows.isMSIE){mcWindows.addEvent(realIframe.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(realIframe,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"focus",mcWindows.eventDispatcher)}for(var i=0;i<window.frames.length;i++){if(!window.frames[i]._hasMouseHandlers){if(mcWindows.isMSIE){mcWindows.addEvent(window.frames[i].document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i].document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(window.frames[i],"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i],"mouseup",mcWindows.eventDispatcher)}window.frames[i]._hasMouseHandlers=true}}if(mcWindows.isMSIE){mcWindows.addEvent(win.frame.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(win.frame,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"focus",mcWindows.eventDispatcher)}var func=this.getParam("on_open_window","");if(func!="")eval(func+"(win);");win.focus();if(win.features['modal']=="yes")mcWindows.setDocumentLock(true)};TinyMCE_Windows.prototype.createFloatingIFrame=function(id_prefix,left,top,width,height,html){var iframe=document.createElement("iframe");var div=document.createElement("div"),doc;width=parseInt(width);height=parseInt(height)+1;div.setAttribute("id",id_prefix+"_div");div.setAttribute("width",width);div.setAttribute("height",(height));div.style.position="absolute";div.style.left=left+"px";div.style.top=top+"px";div.style.width=width+"px";div.style.height=(height)+"px";div.style.backgroundColor="white";div.style.display="none";if(this.isGecko){iframeWidth=width+2;iframeHeight=height+2}else{iframeWidth=width;iframeHeight=height+1}iframe.setAttribute("id",id_prefix+"_iframe");iframe.setAttribute("name",id_prefix+"_iframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",iframeWidth);iframe.setAttribute("height",iframeHeight);iframe.setAttribute("scrolling","no");iframe.style.width=iframeWidth+"px";iframe.style.height=iframeHeight+"px";iframe.style.backgroundColor="white";div.appendChild(iframe);document.body.appendChild(div);div.innerHTML=div.innerHTML;if(this.isSafari){window.setTimeout(function(){var doc=window.frames[id_prefix+'_iframe'].document;doc.open();doc.write(html);doc.close()},10)}else{doc=window.frames[id_prefix+'_iframe'].window.document;doc.open();doc.write(html);doc.close()}div.style.display="block";return div};function TinyMCE_Window(){};TinyMCE_Window.prototype.focus=function(){if(this!=mcWindows.selectedWindow){this.winElement.style.zIndex=++mcWindows.zindex;mcWindows.lastSelectedWindow=mcWindows.selectedWindow;mcWindows.selectedWindow=this}};TinyMCE_Window.prototype.minimize=function(){};TinyMCE_Window.prototype.maximize=function(){if(this.restoreSize){this.moveTo(this.restoreSize[0],this.restoreSize[1]);this.resizeTo(this.restoreSize[2],this.restoreSize[3]);this.updateClamping();this.restoreSize=null}else{var bounds=mcWindows.getBounds();this.restoreSize=[this.left,this.top,this.winElement.scrollWidth,this.winElement.scrollHeight];this.moveTo(bounds[0],bounds[1]);this.resizeTo(bounds[2]-bounds[0],bounds[3]-bounds[1])}};TinyMCE_Window.prototype.startResize=function(){mcWindows.action="resize"};TinyMCE_Window.prototype.startMove=function(e){mcWindows.action="move"};TinyMCE_Window.prototype.close=function(){if(this.frame&&this.frame['tinyMCEPopup'])this.frame['tinyMCEPopup'].restoreSelection();if(mcWindows.lastSelectedWindow!=null)mcWindows.lastSelectedWindow.focus();var mcWindowsNew=new Array();for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win.name!=this.name)mcWindowsNew[n]=win}mcWindows.windows=mcWindowsNew;var e=mcWindows.doc.getElementById(this.id+"_iframe");e.parentNode.removeChild(e);var e=mcWindows.doc.getElementById(this.id+"_div");e.parentNode.removeChild(e);mcWindows.setDocumentLock(false)};TinyMCE_Window.prototype.onMouseMove=function(e){var clamp;var dx=e.screenX-mcWindows.mouseDownScreenX;var dy=e.screenY-mcWindows.mouseDownScreenY;switch(mcWindows.action){case"resize":clamp=mcWindows.clampBoxSize(this.left,this.top,mcWindows.mouseDownWidth+(e.screenX-mcWindows.mouseDownScreenX),mcWindows.mouseDownHeight+(e.screenY-mcWindows.mouseDownScreenY),this.features.minWidth,this.features.minHeight);this.resizeTo(clamp[2],clamp[3]);mcWindows.cancelEvent(e);break;case"move":this.left=mcWindows.mouseDownLayerX+(e.screenX-mcWindows.mouseDownScreenX);this.top=mcWindows.mouseDownLayerY+(e.screenY-mcWindows.mouseDownScreenY);this.updateClamping();mcWindows.cancelEvent(e);break}};TinyMCE_Window.prototype.moveTo=function(x,y){this.left=x;this.top=y;this.winElement.style.left=this.left+"px";this.winElement.style.top=this.top+"px"};TinyMCE_Window.prototype.resizeTo=function(width,height){this.wrapperIFrameElement.style.width=(width+2)+'px';this.wrapperIFrameElement.style.height=(height+2)+'px';this.wrapperIFrameElement.width=width+2;this.wrapperIFrameElement.height=height+2;this.winElement.style.width=width+'px';this.winElement.style.height=height+'px';height=height-this.deltaHeight;this.containerElement.style.width=width+'px';this.iframeElement.style.width=width+'px';this.iframeElement.style.height=height+'px';this.bodyElement.style.width=width+'px';this.bodyElement.style.height=height+'px';this.headElement.style.width=width+'px';};TinyMCE_Window.prototype.updateClamping=function(){var clamp,oversize;clamp=mcWindows.clampBoxPosition(this.left,this.top,this.winElement.scrollWidth,this.winElement.scrollHeight,this.features.minWidth,this.features.minHeight);oversize=(clamp[2]!=this.winElement.scrollWidth||clamp[3]!=this.winElement.scrollHeight)?true:false;this.moveTo(clamp[0],clamp[1]);if(this.features.resizable=="yes"&&oversize)this.resizeTo(clamp[2],clamp[3])};function debug(msg){document.getElementById('debug').value+=msg+"\n"}TinyMCE_Window.prototype.onMouseUp=function(e){mcWindows.action="none"};TinyMCE_Window.prototype.onFocus=function(e){var winRef=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(winRef.name==win.id+"_iframe"){win.focus();return}}};TinyMCE_Window.prototype.onMouseDown=function(e){var elm=mcWindows.isMSIE?this.wrapperFrame.event.srcElement:e.target;mcWindows.mouseDownScreenX=e.screenX;mcWindows.mouseDownScreenY=e.screenY;mcWindows.mouseDownLayerX=this.left;mcWindows.mouseDownLayerY=this.top;mcWindows.mouseDownWidth=parseInt(this.winElement.style.width);mcWindows.mouseDownHeight=parseInt(this.winElement.style.height);if(this.resizeElement!=null&&elm==this.resizeElement.firstChild)this.startResize(e);else this.startMove(e);mcWindows.cancelEvent(e)};var mcWindows=new TinyMCE_Windows();mcWindows.init({images_path:tinyMCE.baseURL+"/plugins/inlinepopups/images",css_file:tinyMCE.baseURL+"/plugins/inlinepopups/css/inlinepopup.css"});
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(r,j){var y=this,i,k="",q=y.editor,g=0,s=0,h,m,n,o,l,v,x;r=r||{};j=j||{};if(!r.inline){return y.parent(r,j)}if(!r.type){y.bookmark=q.selection.getBookmark("simple")}i=d.uniqueId();h=d.getViewPort();r.width=parseInt(r.width||320);r.height=parseInt(r.height||240)+(tinymce.isIE?8:0);r.min_width=parseInt(r.min_width||150);r.min_height=parseInt(r.min_height||100);r.max_width=parseInt(r.max_width||2000);r.max_height=parseInt(r.max_height||2000);r.left=r.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(r.width/2)));r.top=r.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(r.height/2)));r.movable=r.resizable=true;j.mce_width=r.width;j.mce_height=r.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=r.auto_focus;y.features=r;y.params=j;y.onOpen.dispatch(y,r,j);if(r.type){k+=" mceModal";if(r.type){k+=" mce"+r.type.substring(0,1).toUpperCase()+r.type.substring(1)}r.resizable=false}if(r.statusbar){k+=" mceStatusbar"}if(r.resizable){k+=" mceResizable"}if(r.minimizable){k+=" mceMinimizable"}if(r.maximizable){k+=" mceMaximizable"}if(r.movable){k+=" mceMovable"}y._addAll(d.doc.body,["div",{id:i,"class":q.settings.inlinepopups_skin||"clearlooks2",style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},r.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!r.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;s+=d.get(i+"_top").clientHeight;s+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:r.top,left:r.left,width:r.width+g,height:r.height+s});x=r.url||r.file;if(x){if(tinymce.relaxedDomain){x+=(x.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}x=tinymce._addVer(x)}if(!r.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:r.width,height:r.height});d.setAttrib(i+"_ifr","src",x)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(r.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",r.content.replace("\n","<br />"))}n=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=y.windows[i];y.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return y._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return y._startDrag(i,t,u.className.substring(13))}}}}}});o=a.add(i,"click",function(f){var p=f.target;y.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":y.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":r.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});v=y.windows[i]={id:i,mousedown_func:n,click_func:o,element:new b(i,{blocker:1,container:q.getContainer()}),iframeElement:new b(i+"_ifr"),features:r,deltaWidth:g,deltaHeight:s};v.iframeElement.on("focus",function(){y.focus(i)});if(y.count==0&&y.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(y.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:y.zIndex-1}});d.show("mceModalBlocker")}else{d.setStyle("mceModalBlocker","z-index",y.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}y.focus(i);y._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}y.count++;return v},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(j,l){var h=this,g,k=d.doc,f=0,i,l;l=h._findId(l||j);if(!h.windows[l]){h.parent(j);return}h.count--;if(h.count==0){d.remove("mceModalBlocker")}if(g=h.windows[l]){h.onClose.dispatch(h);a.remove(k,"mousedown",g.mousedownFunc);a.remove(k,"click",g.clickFunc);a.clear(l);a.clear(l+"_ifr");d.setAttrib(l+"_ifr","src",'javascript:""');g.element.remove();delete h.windows[l];e(h.windows,function(m){if(m.zIndex>f){i=m;f=m.zIndex}});if(i){h.focus(i.id)}}},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,819 +1,632 @@
-/**
- * $Id: editor_plugin_src.js 268 2007-04-28 15:52:59Z spocke $
- *
- * Moxiecode DHTML Windows script.
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-// Patch openWindow, closeWindow TinyMCE functions
-
-var TinyMCE_InlinePopupsPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Inline Popups',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	}
-};
-
-tinyMCE.addPlugin("inlinepopups", TinyMCE_InlinePopupsPlugin);
-
-// Patch openWindow, closeWindow TinyMCE functions
-
-TinyMCE_Engine.prototype.orgOpenWindow = TinyMCE_Engine.prototype.openWindow;
-TinyMCE_Engine.prototype.orgCloseWindow = TinyMCE_Engine.prototype.closeWindow;
-
-TinyMCE_Engine.prototype.openWindow = function(template, args) {
-	// Does the caller support inline
-	if (args['inline'] != "yes" || tinyMCE.isOpera || tinyMCE.getParam("plugins").indexOf('inlinepopups') == -1) {
-		mcWindows.selectedWindow = null;
-		args['mce_inside_iframe'] = false;
-		this.orgOpenWindow(template, args);
-		return;
-	}
-
-	var url, resizable, scrollbars;
-
-	args['mce_inside_iframe'] = true;
-	tinyMCE.windowArgs = args;
-
-	if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)
-		url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
-	else
-		url = template['file'];
-
-	if (!(width = parseInt(template['width'])))
-		width = 320;
-
-	if (!(height = parseInt(template['height'])))
-		height = 200;
-
-	if (!(minWidth = parseInt(template['minWidth'])))
-		minWidth = 100;
-
-	if (!(minHeight = parseInt(template['minHeight'])))
-		minHeight = 100;
-
-	resizable = (args && args['resizable']) ? args['resizable'] : "no";
-	scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
-
-	height += 18;
-
-	// Replace all args as variables in URL
-	for (var name in args) {
-		if (typeof(args[name]) == 'function')
-			continue;
-
-		url = tinyMCE.replaceVar(url, name, escape(args[name]));
-	}
-
-	var elm = document.getElementById(this.selectedInstance.editorId + '_parent');
-
-	if (tinyMCE.hasPlugin('fullscreen') && this.selectedInstance.getData('fullscreen').enabled)
-		pos = { absLeft: 0, absTop: 0 };
-	else
-		pos = tinyMCE.getAbsPosition(elm);
-
-	// Center div in editor area
-	pos.absLeft += Math.round((elm.firstChild.clientWidth / 2) - (width / 2));
-	pos.absTop += Math.round((elm.firstChild.clientHeight / 2) - (height / 2));
-
-	mcWindows.open(url, mcWindows.idCounter++, "modal=yes,width=" + width+ ",height=" + height + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",statusbar=" + resizable + ",left=" + pos.absLeft + ",top=" + pos.absTop + ",minWidth=" + minWidth + ",minHeight=" + minHeight );
-};
-
-TinyMCE_Engine.prototype.closeWindow = function(win) {
-	var gotit = false, n, w;
-
-	for (n in mcWindows.windows) {
-		w = mcWindows.windows[n];
-
-		if (typeof(w) == 'function')
-			continue;
-
-		if (win.name == w.id + '_iframe') {
-			w.close();
-			gotit = true;
-		}
-	}
-
-	if (!gotit)
-		this.orgCloseWindow(win);
-
-	tinyMCE.selectedInstance.getWin().focus();
-};
-
-TinyMCE_Engine.prototype.setWindowTitle = function(win_ref, title) {
-	for (var n in mcWindows.windows) {
-		var win = mcWindows.windows[n];
-		if (typeof(win) == 'function')
-			continue;
-
-		if (win_ref.name == win.id + "_iframe")
-			window.frames[win.id + "_iframe"].document.getElementById(win.id + '_title').innerHTML = title;
-	}
-};
-
-// * * * * * TinyMCE_Windows classes below
-
-// Windows handler
-function TinyMCE_Windows() {
-	this.settings = new Array();
-	this.windows = new Array();
-	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
-	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
-	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
-	this.isMac = navigator.userAgent.indexOf('Mac') != -1;
-	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
-	this.action = "none";
-	this.selectedWindow = null;
-	this.lastSelectedWindow = null;
-	this.zindex = 1001;
-	this.mouseDownScreenX = 0;
-	this.mouseDownScreenY = 0;
-	this.mouseDownLayerX = 0;
-	this.mouseDownLayerY = 0;
-	this.mouseDownWidth = 0;
-	this.mouseDownHeight = 0;
-	this.idCounter = 0;
-};
-
-TinyMCE_Windows.prototype.init = function(settings) {
-	this.settings = settings;
-
-	if (this.isMSIE)
-		this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
-	else
-		this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
-
-	this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
-
-	this.addEvent(window, "resize", mcWindows.eventDispatcher);
-	this.addEvent(document, "scroll", mcWindows.eventDispatcher);
-
-	this.doc = document;
-};
-
-TinyMCE_Windows.prototype.getBounds = function() {
-	if (!this.bounds) {
-		var vp = tinyMCE.getViewPort(window);
-		var top, left, bottom, right, docEl = this.doc.documentElement;
-
-		top    = vp.top;
-		left   = vp.left;
-		bottom = vp.height + top - 2;
-		right  = vp.width  + left - 22; // TODO this number is platform dependant
-		// x1, y1, x2, y2
-		this.bounds = [left, top, right, bottom];
-	}
-	return this.bounds;
-};
-
-TinyMCE_Windows.prototype.clampBoxPosition = function(x, y, w, h, minW, minH) {
-	var bounds = this.getBounds();
-
-	x = Math.max(bounds[0], Math.min(bounds[2], x + w) - w);
-	y = Math.max(bounds[1], Math.min(bounds[3], y + h) - h);
-
-	return this.clampBoxSize(x, y, w, h, minW, minH);
-};
-
-TinyMCE_Windows.prototype.clampBoxSize = function(x, y, w, h, minW, minH) {
-	var bounds = this.getBounds();
-
-	return [
-		x, y,
-		Math.max(minW, Math.min(bounds[2], x + w) - x),
-		Math.max(minH, Math.min(bounds[3], y + h) - y)
-	];
-};
-
-TinyMCE_Windows.prototype.getParam = function(name, default_value) {
-	var value = null;
-
-	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
-	// Fix bool values
-	if (value == "true" || value == "false")
-		return (value == "true");
-
-	return value;
-};
-
-TinyMCE_Windows.prototype.eventDispatcher = function(e) {
-	e = typeof(e) == "undefined" ? window.event : e;
-
-	if (mcWindows.selectedWindow == null)
-		return;
-
-	// Switch focus
-	if (mcWindows.isGecko && e.type == "mousedown") {
-		var elm = e.currentTarget;
-
-		for (var n in mcWindows.windows) {
-			var win = mcWindows.windows[n];
-
-			if (win.headElement == elm || win.resizeElement == elm) {
-				win.focus();
-				break;
-			}
-		}
-	}
-
-	switch (e.type) {
-		case "mousemove":
-			mcWindows.selectedWindow.onMouseMove(e);
-			break;
-
-		case "mouseup":
-			mcWindows.selectedWindow.onMouseUp(e);
-			break;
-
-		case "mousedown":
-			mcWindows.selectedWindow.onMouseDown(e);
-			break;
-
-		case "focus":
-			mcWindows.selectedWindow.onFocus(e);
-			break;
-		case "scroll":
-		case "resize":
-			if (mcWindows.clampUpdateTimeout)
-				clearTimeout(mcWindows.clampUpdateTimeout);
-			mcWindows.clampEventType = e.type;
-			mcWindows.clampUpdateTimeout =
-				setTimeout(function () {mcWindows.updateClamping()}, 100);
-			break;
-	}
-};
-
-TinyMCE_Windows.prototype.updateClamping = function () {
-	var clamp, oversize, etype = mcWindows.clampEventType;
-
-	this.bounds = null; // Recalc window bounds on resize/scroll
-	this.clampUpdateTimeout = null;
-
-	for (var n in this.windows) {
-		win = this.windows[n];
-		if (typeof(win) == 'function' || ! win.winElement) continue;
-
-		clamp = mcWindows.clampBoxPosition(
-			win.left, win.top,
-			win.winElement.scrollWidth,
-			win.winElement.scrollHeight,
-			win.features.minWidth,
-			win.features.minHeight
-		);
-		oversize = (
-			clamp[2] != win.winElement.scrollWidth ||
-			clamp[3] != win.winElement.scrollHeight
-		) ? true : false;
-
-		if (!oversize || win.features.resizable == "yes" || etype != "scroll")
-			win.moveTo(clamp[0], clamp[1]);
-		if (oversize && win.features.resizable == "yes")
-			win.resizeTo(clamp[2], clamp[3]);
-	}
-};
-
-TinyMCE_Windows.prototype.addEvent = function(obj, name, handler) {
-	if (this.isMSIE)
-		obj.attachEvent("on" + name, handler);
-	else
-		obj.addEventListener(name, handler, false);
-};
-
-TinyMCE_Windows.prototype.cancelEvent = function(e) {
-	if (this.isMSIE) {
-		e.returnValue = false;
-		e.cancelBubble = true;
-	} else
-		e.preventDefault();
-};
-
-TinyMCE_Windows.prototype.parseFeatures = function(opts) {
-	// Cleanup the options
-	opts = opts.toLowerCase();
-	opts = opts.replace(/;/g, ",");
-	opts = opts.replace(/[^0-9a-z=,]/g, "");
-
-	var optionChunks = opts.split(',');
-	var options = new Array();
-
-	options['left'] = "10";
-	options['top'] = "10";
-	options['width'] = "300";
-	options['height'] = "300";
-	options['minwidth'] = "100";
-	options['minheight'] = "100";
-	options['resizable'] = "yes";
-	options['minimizable'] = "yes";
-	options['maximizable'] = "yes";
-	options['close'] = "yes";
-	options['movable'] = "yes";
-	options['statusbar'] = "yes";
-	options['scrollbars'] = "auto";
-	options['modal'] = "no";
-
-	if (opts == "")
-		return options;
-
-	for (var i=0; i<optionChunks.length; i++) {
-		var parts = optionChunks[i].split('=');
-
-		if (parts.length == 2)
-			options[parts[0]] = parts[1];
-	}
-
-	options['left'] = parseInt(options['left']);
-	options['top'] = parseInt(options['top']);
-	options['width'] = parseInt(options['width']);
-	options['height'] = parseInt(options['height']);
-	options['minWidth'] = parseInt(options['minwidth']);
-	options['minHeight'] = parseInt(options['minheight']);
-
-	return options;
-};
-
-TinyMCE_Windows.prototype.open = function(url, name, features) {
-	this.lastSelectedWindow = this.selectedWindow;
-
-	var win = new TinyMCE_Window();
-	var winDiv, html = "", id;
-	var imgPath = this.getParam("images_path");
-
-	features = this.parseFeatures(features);
-
-	// Clamp specified dimensions
-	var clamp = mcWindows.clampBoxPosition(
-		features['left'], features['top'],
-		features['width'], features['height'],
-		features['minWidth'], features['minHeight']
-	);
-
-	features['left'] = clamp[0];
-	features['top'] = clamp[1];
-
-	if (features['resizable'] == "yes") {
-		features['width'] = clamp[2];
-		features['height'] = clamp[3];
-	}
-
-	// Create div
-	id = "mcWindow_" + name;
-	win.deltaHeight = 18;
-
-	if (features['statusbar'] == "yes") {
-		win.deltaHeight += 13;
-
-		if (this.isMSIE)
-			win.deltaHeight += 1;
-	}
-
-	width = parseInt(features['width']);
-	height = parseInt(features['height'])-win.deltaHeight;
-
-	if (this.isMSIE)
-		width -= 2;
-
-	// Setup first part of window
-	win.id = id;
-	win.url = url;
-	win.name = name;
-	win.features = features;
-	this.windows[name] = win;
-
-	iframeWidth = width;
-	iframeHeight = height;
-
-	// Create inner content
-	html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
-	html += '<html>';
-	html += '<head>';
-	html += '<title>Wrapper iframe</title>';
-	html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
-	html += '<link href="' + this.getParam("css_file") + '" rel="stylesheet" type="text/css" />';
-	html += '</head>';
-	html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
-
-	html += '<div id="' + id + '_container" class="mceWindow">';
-	html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
-	html += '  <div id="' + id + '_title" class="mceWindowTitle"';
-	html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';
-	html += '    <div class="mceWindowHeadTools">';
-	html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="' + imgPath + '/window_close.gif" /></a>';
-	if (features['resizable'] == "yes" && features['maximizable'] == "yes")
-		html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="' + imgPath + '/window_maximize.gif" /></a>';
-	// html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" target="_self" onmousedown="return false;" class="mceWindowMinimize"></a>';
-	html += '    </div>';
-	html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
-	html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe" scrolling="' + features['scrollbars'] + '"></iframe></div>';
-
-	if (features['statusbar'] == "yes") {
-		html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
-
-		if (features['resizable'] == "yes") {
-			if (this.isGecko)
-				html += '<div id="' + id + '_resize" class="mceWindowResize"><div style="background-image: url(\'' + imgPath + '/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';
-			else
-				html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="' + imgPath + '/window_resize.gif" /></div>';
-		}
-
-		html += '</div>';
-	}
-
-	html += '</div>';
-
-	html += '</body>';
-	html += '</html>';
-
-	// Create iframe
-	this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
-};
-
-// Blocks the document events by placing a image over the whole document
-TinyMCE_Windows.prototype.setDocumentLock = function(state) {
-	var elm = document.getElementById('mcWindowEventBlocker');
-
-	if (state) {
-		if (elm == null) {
-			elm = document.createElement("div");
-
-			elm.id = "mcWindowEventBlocker";
-			elm.style.position = "absolute";
-			elm.style.left = "0";
-			elm.style.top = "0";
-
-			document.body.appendChild(elm);
-		}
-
-		elm.style.display = "none";
-
-		var imgPath = this.getParam("images_path");
-		var width = document.body.clientWidth;
-		var height = document.body.clientHeight;
-
-		elm.style.width = width;
-		elm.style.height = height;
-		elm.innerHTML = '<img src="' + imgPath + '/spacer.gif" width="' + width + '" height="' + height + '" />';
-
-		elm.style.zIndex = mcWindows.zindex-1;
-		elm.style.display = "block";
-	} else if (elm != null) {
-		if (mcWindows.windows.length == 0)
-			elm.parentNode.removeChild(elm);
-		else
-			elm.style.zIndex = mcWindows.zindex-1;
-	}
-};
-
-// Gets called when wrapper iframe is initialized
-TinyMCE_Windows.prototype.onLoad = function(name) {
-	var win = mcWindows.windows[name];
-	var id = "mcWindow_" + name;
-	var wrapperIframe = window.frames[id + "_iframe"].frames[0];
-	var wrapperDoc = window.frames[id + "_iframe"].document;
-	var doc = window.frames[id + "_iframe"].document;
-	var winDiv = document.getElementById("mcWindow_" + name + "_div");
-	var realIframe = window.frames[id + "_iframe"].frames[0];
-
-	// Set window data
-	win.id = "mcWindow_" + name;
-	win.winElement = winDiv;
-	win.bodyElement = doc.getElementById(id + '_body');
-	win.iframeElement = doc.getElementById(id + '_iframe');
-	win.headElement = doc.getElementById(id + '_head');
-	win.titleElement = doc.getElementById(id + '_title');
-	win.resizeElement = doc.getElementById(id + '_resize');
-	win.containerElement = doc.getElementById(id + '_container');
-	win.left = win.features['left'];
-	win.top = win.features['top'];
-	win.frame = window.frames[id + '_iframe'].frames[0];
-	win.wrapperFrame = window.frames[id + '_iframe'];
-	win.wrapperIFrameElement = document.getElementById(id + "_iframe");
-
-	// Add event handlers
-	mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
-
-	if (win.resizeElement != null)
-		mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
-
-	if (mcWindows.isMSIE) {
-		mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
-	} else {
-		mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
-		mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
-	}
-
-	for (var i=0; i<window.frames.length; i++) {
-		if (!window.frames[i]._hasMouseHandlers) {
-			if (mcWindows.isMSIE) {
-				mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
-				mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
-			} else {
-				mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
-				mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
-			}
-
-			window.frames[i]._hasMouseHandlers = true;
-		}
-	}
-
-	if (mcWindows.isMSIE) {
-		mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
-	} else {
-		mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
-		mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
-	}
-
-	// Dispatch open window event
-	var func = this.getParam("on_open_window", "");
-	if (func != "")
-		eval(func + "(win);");
-
-	win.focus();
-
-	if (win.features['modal'] == "yes")
-		mcWindows.setDocumentLock(true);
-};
-
-TinyMCE_Windows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
-	var iframe = document.createElement("iframe");
-	var div = document.createElement("div"), doc;
-
-	width = parseInt(width);
-	height = parseInt(height)+1;
-
-	// Create wrapper div
-	div.setAttribute("id", id_prefix + "_div");
-	div.setAttribute("width", width);
-	div.setAttribute("height", (height));
-	div.style.position = "absolute";
-
-	div.style.left = left + "px";
-	div.style.top = top + "px";
-	div.style.width = width + "px";
-	div.style.height = (height) + "px";
-	div.style.backgroundColor = "white";
-	div.style.display = "none";
-
-	if (this.isGecko) {
-		iframeWidth = width + 2;
-		iframeHeight = height + 2;
-	} else {
-		iframeWidth = width;
-		iframeHeight = height + 1;
-	}
-
-	// Create iframe
-	iframe.setAttribute("id", id_prefix + "_iframe");
-	iframe.setAttribute("name", id_prefix + "_iframe");
-	iframe.setAttribute("border", "0");
-	iframe.setAttribute("frameBorder", "0");
-	iframe.setAttribute("marginWidth", "0");
-	iframe.setAttribute("marginHeight", "0");
-	iframe.setAttribute("leftMargin", "0");
-	iframe.setAttribute("topMargin", "0");
-	iframe.setAttribute("width", iframeWidth);
-	iframe.setAttribute("height", iframeHeight);
-	// iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
-	// iframe.setAttribute("allowtransparency", "false");
-	iframe.setAttribute("scrolling", "no");
-	iframe.style.width = iframeWidth + "px";
-	iframe.style.height = iframeHeight + "px";
-	iframe.style.backgroundColor = "white";
-	div.appendChild(iframe);
-
-	document.body.appendChild(div);
-
-	// Fixed MSIE 5.0 issue
-	div.innerHTML = div.innerHTML;
-
-	if (this.isSafari) {
-		// Give Safari some time to setup
-		window.setTimeout(function() {
-			var doc = window.frames[id_prefix + '_iframe'].document;
-			doc.open();
-			doc.write(html);
-			doc.close();
-		}, 10);
-	} else {
-		doc = window.frames[id_prefix + '_iframe'].window.document;
-		doc.open();
-		doc.write(html);
-		doc.close();
-	}
-
-	div.style.display = "block";
-
-	return div;
-};
-
-// Window instance
-function TinyMCE_Window() {
-};
-
-TinyMCE_Window.prototype.focus = function() {
-	if (this != mcWindows.selectedWindow) {
-		this.winElement.style.zIndex = ++mcWindows.zindex;
-		mcWindows.lastSelectedWindow = mcWindows.selectedWindow;
-		mcWindows.selectedWindow = this;
-	}
-};
-
-TinyMCE_Window.prototype.minimize = function() {
-};
-
-TinyMCE_Window.prototype.maximize = function() {
-	if (this.restoreSize) {
-		this.moveTo(this.restoreSize[0], this.restoreSize[1]);
-		this.resizeTo(this.restoreSize[2], this.restoreSize[3]);
-		this.updateClamping();
-		this.restoreSize = null;
-	} else {
-		var bounds = mcWindows.getBounds();
-		this.restoreSize = [
-			this.left, this.top,
-			this.winElement.scrollWidth,
-			this.winElement.scrollHeight
-		];
-		this.moveTo(bounds[0], bounds[1]);
-		this.resizeTo(
-			bounds[2] - bounds[0],
-			bounds[3] - bounds[1]
-		);
-	}
-};
-
-TinyMCE_Window.prototype.startResize = function() {
-	mcWindows.action = "resize";
-};
-
-TinyMCE_Window.prototype.startMove = function(e) {
-	mcWindows.action = "move";
-};
-
-TinyMCE_Window.prototype.close = function() {
-	if (this.frame && this.frame['tinyMCEPopup'])
-		this.frame['tinyMCEPopup'].restoreSelection();
-
-	if (mcWindows.lastSelectedWindow != null)
-		mcWindows.lastSelectedWindow.focus();
-
-	var mcWindowsNew = new Array();
-	for (var n in mcWindows.windows) {
-		var win = mcWindows.windows[n];
-		if (typeof(win) == 'function')
-			continue;
-
-		if (win.name != this.name)
-			mcWindowsNew[n] = win;
-	}
-
-	mcWindows.windows = mcWindowsNew;
-
-	// alert(mcWindows.doc.getElementById(this.id + "_iframe"));
-
-	var e = mcWindows.doc.getElementById(this.id + "_iframe");
-	e.parentNode.removeChild(e);
-
-	var e = mcWindows.doc.getElementById(this.id + "_div");
-	e.parentNode.removeChild(e);
-
-	mcWindows.setDocumentLock(false);
-};
-
-TinyMCE_Window.prototype.onMouseMove = function(e) {
-	var clamp;
-	// Calculate real X, Y
-	var dx = e.screenX - mcWindows.mouseDownScreenX;
-	var dy = e.screenY - mcWindows.mouseDownScreenY;
-
-	switch (mcWindows.action) {
-		case "resize":
-			clamp = mcWindows.clampBoxSize(
-				this.left, this.top,
-				mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX),
-				mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY),
-				this.features.minWidth, this.features.minHeight
-			);
-
-			this.resizeTo(clamp[2], clamp[3]);
-
-			mcWindows.cancelEvent(e);
-			break;
-
-		case "move":
-			this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
-			this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
-			this.updateClamping();
-
-			mcWindows.cancelEvent(e);
-			break;
-	}
-};
-
-TinyMCE_Window.prototype.moveTo = function (x, y) {
-	this.left = x;
-	this.top = y;
-
-	this.winElement.style.left = this.left + "px";
-	this.winElement.style.top = this.top + "px";
-};
-
-TinyMCE_Window.prototype.resizeTo = function (width, height) {
-	this.wrapperIFrameElement.style.width = (width+2) + 'px';
-	this.wrapperIFrameElement.style.height = (height+2) + 'px';
-	this.wrapperIFrameElement.width = width+2;
-	this.wrapperIFrameElement.height = height+2;
-	this.winElement.style.width = width + 'px';
-	this.winElement.style.height = height + 'px';
-
-	height = height - this.deltaHeight;
-
-	this.containerElement.style.width = width + 'px';
-	this.iframeElement.style.width = width + 'px';
-	this.iframeElement.style.height = height + 'px';
-	this.bodyElement.style.width = width + 'px';
-	this.bodyElement.style.height = height + 'px';
-	this.headElement.style.width = width + 'px';
-	//this.statusElement.style.width = width + 'px';
-};
-
-TinyMCE_Window.prototype.updateClamping = function () {
-	var clamp, oversize;
-
-	clamp = mcWindows.clampBoxPosition(
-		this.left, this.top,
-		this.winElement.scrollWidth,
-		this.winElement.scrollHeight,
-		this.features.minWidth, this.features.minHeight
-	);
-	oversize = (
-		clamp[2] != this.winElement.scrollWidth ||
-		clamp[3] != this.winElement.scrollHeight
-	) ? true : false;
-
-	this.moveTo(clamp[0], clamp[1]);
-	if (this.features.resizable == "yes" && oversize)
-		this.resizeTo(clamp[2], clamp[3]);
-};
-
-function debug(msg) {
-	document.getElementById('debug').value += msg + "\n";
-}
-
-TinyMCE_Window.prototype.onMouseUp = function(e) {
-	mcWindows.action = "none";
-};
-
-TinyMCE_Window.prototype.onFocus = function(e) {
-	// Gecko only handler
-	var winRef = e.currentTarget;
-
-	for (var n in mcWindows.windows) {
-		var win = mcWindows.windows[n];
-		if (typeof(win) == 'function')
-			continue;
-
-		if (winRef.name == win.id + "_iframe") {
-			win.focus();
-			return;
-		}
-	}
-};
-
-TinyMCE_Window.prototype.onMouseDown = function(e) {
-	var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
-
-	mcWindows.mouseDownScreenX = e.screenX;
-	mcWindows.mouseDownScreenY = e.screenY;
-	mcWindows.mouseDownLayerX = this.left;
-	mcWindows.mouseDownLayerY = this.top;
-	mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
-	mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
-
-	if (this.resizeElement != null && elm == this.resizeElement.firstChild)
-		this.startResize(e);
-	else
-		this.startMove(e);
-
-	mcWindows.cancelEvent(e);
-};
-
-// Global instance
-var mcWindows = new TinyMCE_Windows();
-
-// Initialize windows
-mcWindows.init({
-	images_path : tinyMCE.baseURL + "/plugins/inlinepopups/images",
-	css_file : tinyMCE.baseURL + "/plugins/inlinepopups/css/inlinepopup.css"
-});
+/**
+ * $Id: editor_plugin_src.js 999 2009-02-10 17:42:58Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
+
+	tinymce.create('tinymce.plugins.InlinePopups', {
+		init : function(ed, url) {
+			// Replace window manager
+			ed.onBeforeRenderUI.add(function() {
+				ed.windowManager = new tinymce.InlineWindowManager(ed);
+				DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'InlinePopups',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
+		InlineWindowManager : function(ed) {
+			var t = this;
+
+			t.parent(ed);
+			t.zIndex = 300000;
+			t.count = 0;
+			t.windows = {};
+		},
+
+		open : function(f, p) {
+			var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u;
+
+			f = f || {};
+			p = p || {};
+
+			// Run native windows
+			if (!f.inline)
+				return t.parent(f, p);
+
+			// Only store selection if the type is a normal window
+			if (!f.type)
+				t.bookmark = ed.selection.getBookmark('simple');
+
+			id = DOM.uniqueId();
+			vp = DOM.getViewPort();
+			f.width = parseInt(f.width || 320);
+			f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
+			f.min_width = parseInt(f.min_width || 150);
+			f.min_height = parseInt(f.min_height || 100);
+			f.max_width = parseInt(f.max_width || 2000);
+			f.max_height = parseInt(f.max_height || 2000);
+			f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
+			f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
+			f.movable = f.resizable = true;
+			p.mce_width = f.width;
+			p.mce_height = f.height;
+			p.mce_inline = true;
+			p.mce_window_id = id;
+			p.mce_auto_focus = f.auto_focus;
+
+			// Transpose
+//			po = DOM.getPos(ed.getContainer());
+//			f.left -= po.x;
+//			f.top -= po.y;
+
+			t.features = f;
+			t.params = p;
+			t.onOpen.dispatch(t, f, p);
+
+			if (f.type) {
+				opt += ' mceModal';
+
+				if (f.type)
+					opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
+
+				f.resizable = false;
+			}
+
+			if (f.statusbar)
+				opt += ' mceStatusbar';
+
+			if (f.resizable)
+				opt += ' mceResizable';
+
+			if (f.minimizable)
+				opt += ' mceMinimizable';
+
+			if (f.maximizable)
+				opt += ' mceMaximizable';
+
+			if (f.movable)
+				opt += ' mceMovable';
+
+			// Create DOM objects
+			t._addAll(DOM.doc.body, 
+				['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, 
+					['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
+						['div', {id : id + '_top', 'class' : 'mceTop'}, 
+							['div', {'class' : 'mceLeft'}],
+							['div', {'class' : 'mceCenter'}],
+							['div', {'class' : 'mceRight'}],
+							['span', {id : id + '_title'}, f.title || '']
+						],
+
+						['div', {id : id + '_middle', 'class' : 'mceMiddle'}, 
+							['div', {id : id + '_left', 'class' : 'mceLeft'}],
+							['span', {id : id + '_content'}],
+							['div', {id : id + '_right', 'class' : 'mceRight'}]
+						],
+
+						['div', {id : id + '_bottom', 'class' : 'mceBottom'},
+							['div', {'class' : 'mceLeft'}],
+							['div', {'class' : 'mceCenter'}],
+							['div', {'class' : 'mceRight'}],
+							['span', {id : id + '_status'}, 'Content']
+						],
+
+						['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
+						['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+						['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+						['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+						['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+						['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
+						['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
+					]
+				]
+			);
+
+			DOM.setStyles(id, {top : -10000, left : -10000});
+
+			// Fix gecko rendering bug, where the editors iframe messed with window contents
+			if (tinymce.isGecko)
+				DOM.setStyle(id, 'overflow', 'auto');
+
+			// Measure borders
+			if (!f.type) {
+				dw += DOM.get(id + '_left').clientWidth;
+				dw += DOM.get(id + '_right').clientWidth;
+				dh += DOM.get(id + '_top').clientHeight;
+				dh += DOM.get(id + '_bottom').clientHeight;
+			}
+
+			// Resize window
+			DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
+
+			u = f.url || f.file;
+			if (u) {
+				if (tinymce.relaxedDomain)
+					u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
+
+				u = tinymce._addVer(u);
+			}
+
+			if (!f.type) {
+				DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
+				DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
+				DOM.setAttrib(id + '_ifr', 'src', u);
+			} else {
+				DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
+
+				if (f.type == 'confirm')
+					DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
+
+				DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
+				DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
+			}
+
+			// Register events
+			mdf = Event.add(id, 'mousedown', function(e) {
+				var n = e.target, w, vp;
+
+				w = t.windows[id];
+				t.focus(id);
+
+				if (n.nodeName == 'A' || n.nodeName == 'a') {
+					if (n.className == 'mceMax') {
+						w.oldPos = w.element.getXY();
+						w.oldSize = w.element.getSize();
+
+						vp = DOM.getViewPort();
+
+						// Reduce viewport size to avoid scrollbars
+						vp.w -= 2;
+						vp.h -= 2;
+
+						w.element.moveTo(vp.x, vp.y);
+						w.element.resizeTo(vp.w, vp.h);
+						DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
+						DOM.addClass(id + '_wrapper', 'mceMaximized');
+					} else if (n.className == 'mceMed') {
+						// Reset to old size
+						w.element.moveTo(w.oldPos.x, w.oldPos.y);
+						w.element.resizeTo(w.oldSize.w, w.oldSize.h);
+						w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
+
+						DOM.removeClass(id + '_wrapper', 'mceMaximized');
+					} else if (n.className == 'mceMove')
+						return t._startDrag(id, e, n.className);
+					else if (DOM.hasClass(n, 'mceResize'))
+						return t._startDrag(id, e, n.className.substring(13));
+				}
+			});
+
+			clf = Event.add(id, 'click', function(e) {
+				var n = e.target;
+
+				t.focus(id);
+
+				if (n.nodeName == 'A' || n.nodeName == 'a') {
+					switch (n.className) {
+						case 'mceClose':
+							t.close(null, id);
+							return Event.cancel(e);
+
+						case 'mceButton mceOk':
+						case 'mceButton mceCancel':
+							f.button_func(n.className == 'mceButton mceOk');
+							return Event.cancel(e);
+					}
+				}
+			});
+
+			// Add window
+			w = t.windows[id] = {
+				id : id,
+				mousedown_func : mdf,
+				click_func : clf,
+				element : new Element(id, {blocker : 1, container : ed.getContainer()}),
+				iframeElement : new Element(id + '_ifr'),
+				features : f,
+				deltaWidth : dw,
+				deltaHeight : dh
+			};
+
+			w.iframeElement.on('focus', function() {
+				t.focus(id);
+			});
+
+			// Setup blocker
+			if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
+				DOM.add(DOM.doc.body, 'div', {
+					id : 'mceModalBlocker',
+					'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
+					style : {zIndex : t.zIndex - 1}
+				});
+
+				DOM.show('mceModalBlocker'); // Reduces flicker in IE
+			} else
+				DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
+
+			if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
+				DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
+
+			t.focus(id);
+			t._fixIELayout(id, 1);
+
+			// Focus ok button
+			if (DOM.get(id + '_ok'))
+				DOM.get(id + '_ok').focus();
+
+			t.count++;
+
+			return w;
+		},
+
+		focus : function(id) {
+			var t = this, w;
+
+			if (w = t.windows[id]) {
+				w.zIndex = this.zIndex++;
+				w.element.setStyle('zIndex', w.zIndex);
+				w.element.update();
+
+				id = id + '_wrapper';
+				DOM.removeClass(t.lastId, 'mceFocus');
+				DOM.addClass(id, 'mceFocus');
+				t.lastId = id;
+			}
+		},
+
+		_addAll : function(te, ne) {
+			var i, n, t = this, dom = tinymce.DOM;
+
+			if (is(ne, 'string'))
+				te.appendChild(dom.doc.createTextNode(ne));
+			else if (ne.length) {
+				te = te.appendChild(dom.create(ne[0], ne[1]));
+
+				for (i=2; i<ne.length; i++)
+					t._addAll(te, ne[i]);
+			}
+		},
+
+		_startDrag : function(id, se, ac) {
+			var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
+
+			// Get positons and sizes
+//			cp = DOM.getPos(t.editor.getContainer());
+			cp = {x : 0, y : 0};
+			vp = DOM.getViewPort();
+
+			// Reduce viewport size to avoid scrollbars while dragging
+			vp.w -= 2;
+			vp.h -= 2;
+
+			sex = se.screenX;
+			sey = se.screenY;
+			dx = dy = dw = dh = 0;
+
+			// Handle mouse up
+			mu = Event.add(d, 'mouseup', function(e) {
+				Event.remove(d, 'mouseup', mu);
+				Event.remove(d, 'mousemove', mm);
+
+				if (eb)
+					eb.remove();
+
+				we.moveBy(dx, dy);
+				we.resizeBy(dw, dh);
+				sz = we.getSize();
+				DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
+				t._fixIELayout(id, 1);
+
+				return Event.cancel(e);
+			});
+
+			if (ac != 'Move')
+				startMove();
+
+			function startMove() {
+				if (eb)
+					return;
+
+				t._fixIELayout(id, 0);
+
+				// Setup event blocker
+				DOM.add(d.body, 'div', {
+					id : 'mceEventBlocker',
+					'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
+					style : {zIndex : t.zIndex + 1}
+				});
+
+				if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
+					DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
+
+				eb = new Element('mceEventBlocker');
+				eb.update();
+
+				// Setup placeholder
+				p = we.getXY();
+				sz = we.getSize();
+				sx = cp.x + p.x - vp.x;
+				sy = cp.y + p.y - vp.y;
+				DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
+				ph = new Element('mcePlaceHolder');
+			};
+
+			// Handle mouse move/drag
+			mm = Event.add(d, 'mousemove', function(e) {
+				var x, y, v;
+
+				startMove();
+
+				x = e.screenX - sex;
+				y = e.screenY - sey;
+
+				switch (ac) {
+					case 'ResizeW':
+						dx = x;
+						dw = 0 - x;
+						break;
+
+					case 'ResizeE':
+						dw = x;
+						break;
+
+					case 'ResizeN':
+					case 'ResizeNW':
+					case 'ResizeNE':
+						if (ac == "ResizeNW") {
+							dx = x;
+							dw = 0 - x;
+						} else if (ac == "ResizeNE")
+							dw = x;
+
+						dy = y;
+						dh = 0 - y;
+						break;
+
+					case 'ResizeS':
+					case 'ResizeSW':
+					case 'ResizeSE':
+						if (ac == "ResizeSW") {
+							dx = x;
+							dw = 0 - x;
+						} else if (ac == "ResizeSE")
+							dw = x;
+
+						dh = y;
+						break;
+
+					case 'mceMove':
+						dx = x;
+						dy = y;
+						break;
+				}
+
+				// Boundary check
+				if (dw < (v = w.features.min_width - sz.w)) {
+					if (dx !== 0)
+						dx += dw - v;
+
+					dw = v;
+				}
+	
+				if (dh < (v = w.features.min_height - sz.h)) {
+					if (dy !== 0)
+						dy += dh - v;
+
+					dh = v;
+				}
+
+				dw = Math.min(dw, w.features.max_width - sz.w);
+				dh = Math.min(dh, w.features.max_height - sz.h);
+				dx = Math.max(dx, vp.x - (sx + vp.x));
+				dy = Math.max(dy, vp.y - (sy + vp.y));
+				dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
+				dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
+
+				// Move if needed
+				if (dx + dy !== 0) {
+					if (sx + dx < 0)
+						dx = 0;
+	
+					if (sy + dy < 0)
+						dy = 0;
+
+					ph.moveTo(sx + dx, sy + dy);
+				}
+
+				// Resize if needed
+				if (dw + dh !== 0)
+					ph.resizeTo(sz.w + dw, sz.h + dh);
+
+				return Event.cancel(e);
+			});
+
+			return Event.cancel(se);
+		},
+
+		resizeBy : function(dw, dh, id) {
+			var w = this.windows[id];
+
+			if (w) {
+				w.element.resizeBy(dw, dh);
+				w.iframeElement.resizeBy(dw, dh);
+			}
+		},
+
+		close : function(win, id) {
+			var t = this, w, d = DOM.doc, ix = 0, fw, id;
+
+			id = t._findId(id || win);
+
+			// Probably not inline
+			if (!t.windows[id]) {
+				t.parent(win);
+				return;
+			}
+
+			t.count--;
+
+			if (t.count == 0)
+				DOM.remove('mceModalBlocker');
+
+			if (w = t.windows[id]) {
+				t.onClose.dispatch(t);
+				Event.remove(d, 'mousedown', w.mousedownFunc);
+				Event.remove(d, 'click', w.clickFunc);
+				Event.clear(id);
+				Event.clear(id + '_ifr');
+
+				DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
+				w.element.remove();
+				delete t.windows[id];
+
+				// Find front most window and focus that
+				each (t.windows, function(w) {
+					if (w.zIndex > ix) {
+						fw = w;
+						ix = w.zIndex;
+					}
+				});
+
+				if (fw)
+					t.focus(fw.id);
+			}
+		},
+
+		setTitle : function(w, ti) {
+			var e;
+
+			w = this._findId(w);
+
+			if (e = DOM.get(w + '_title'))
+				e.innerHTML = DOM.encode(ti);
+		},
+
+		alert : function(txt, cb, s) {
+			var t = this, w;
+
+			w = t.open({
+				title : t,
+				type : 'alert',
+				button_func : function(s) {
+					if (cb)
+						cb.call(s || t, s);
+
+					t.close(null, w.id);
+				},
+				content : DOM.encode(t.editor.getLang(txt, txt)),
+				inline : 1,
+				width : 400,
+				height : 130
+			});
+		},
+
+		confirm : function(txt, cb, s) {
+			var t = this, w;
+
+			w = t.open({
+				title : t,
+				type : 'confirm',
+				button_func : function(s) {
+					if (cb)
+						cb.call(s || t, s);
+
+					t.close(null, w.id);
+				},
+				content : DOM.encode(t.editor.getLang(txt, txt)),
+				inline : 1,
+				width : 400,
+				height : 130
+			});
+		},
+
+		// Internal functions
+
+		_findId : function(w) {
+			var t = this;
+
+			if (typeof(w) == 'string')
+				return w;
+
+			each(t.windows, function(wo) {
+				var ifr = DOM.get(wo.id + '_ifr');
+
+				if (ifr && w == ifr.contentWindow) {
+					w = wo.id;
+					return false;
+				}
+			});
+
+			return w;
+		},
+
+		_fixIELayout : function(id, s) {
+			var w, img;
+
+			if (!tinymce.isIE6)
+				return;
+
+			// Fixes the bug where hover flickers and does odd things in IE6
+			each(['n','s','w','e','nw','ne','sw','se'], function(v) {
+				var e = DOM.get(id + '_resize_' + v);
+
+				DOM.setStyles(e, {
+					width : s ? e.clientWidth : '',
+					height : s ? e.clientHeight : '',
+					cursor : DOM.getStyle(e, 'cursor', 1)
+				});
+
+				DOM.setStyle(id + "_bottom", 'bottom', '-1px');
+
+				e = 0;
+			});
+
+			// Fixes graphics glitch
+			if (w = this.windows[id]) {
+				// Fixes rendering bug after resize
+				w.element.hide();
+				w.element.show();
+
+				// Forced a repaint of the window
+				//DOM.get(id).style.filter = '';
+
+				// IE has a bug where images used in CSS won't get loaded
+				// sometimes when the cache in the browser is disabled
+				// This fix tries to solve it by loading the images using the image object
+				each(DOM.select('div,a', id), function(e, i) {
+					if (e.currentStyle.backgroundImage != 'none') {
+						img = new Image();
+						img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
+					}
+				});
+
+				DOM.get(id).style.filter = '';
+			}
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
+})();
+
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a      wvnn\\ܣ<<66CCJJ888CCdd--QQ33yyWWiivvkj<<llbb$$uuEE׎ڴMLpp++$$eeKKRRÌͳ==AAdd::))::JJjjWWPP((;;ħɣп%%%ƪ00ccIIϺ̱֘~ȟ^]עUU,,ڌssyy||٭QPNNđƘBB__??mm  㺺߀bb    !     ,          o2u20v7$r1U{))F 1+55=; p!}%Y!8d>x`~~	M\j_}]hE(M2x&sBW('~7
+?Wf.cKRs&(#>88܅Dpj"@:)Fn$0&saxS-*B"-Ȅ	}l9hǬ[ 8q	! 0HhACzfCˀ.a˻xtfbŃ|򗶱xXB
+B(CӨH倠6vA;!,rMܰ!üЛPf@(ν@h $ӧg@ ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+GIF89aP    ccc                        !     ,    P   PC8;dihjLm,tJxpHDH1ɜ-P@ZجvvoްxL΂贚z^6|>~ vz"w7ħ/!  ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,8 @@
+GIF89at 0  n{Q[c787k|`r~WdpZiu^n|\ky   y{x               !   ,    t 0  Fdi&l;nr-bA|c#B,< Ak6LTL9:<z<-9m߰{;ޮ{cMNy=:>z:9D;{>9u|<hmFY;Sb Ǯ#ׅ 78'Ncڹc0Du+jt@&;<p.	r	MiPn6˩Ϟ ШQFHPJJӪXBT^jʠٳhӞ[l5wܨ˷o_~xa+jǐ#Gf,Ɣ/k~yfBMtiЦStװ_n]Zh۩>ͻ߿u}Ả?5سk^}{ޱw߾u?~˟?*&{P56蠃	>@
+'>HaJ] Thpb*B/17X\60DbHN UF7ALdP"YeS2	ې[F ))iPyfd)fn&`&w	U|矀g~G(,ꨟP 餔Vj^馒f駔z
+*Q)`ꩨ*R
+
+묧J[+XfkU
+T*`&.6JK-k\n+W޺njعƞXnټλY^oڿZy\[fE-'1ʕMpƲ'2v!{{%ww)(s|57\ l2+
+b!^hv F@$T#;5,v>v5xyƪLMep')q7)fy	~>*yz(/y0~>j(Jz{+Ȯ>k뮿
+{F{l/{j ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,4 @@
+GIF89a      *Txg(Z[3ʜ[ūu=ѻnKc+؈,Meх+9CRڃL5\D~zȼ3~	%zn)E"<jT,-E΂-wIܕ@T8»aʡ_Ȯ}I:TµІ2aû{_}a݊#?׳^]ݏ1ƘPőU{79P|y 7!     ,         Q Q_J]#i#]J_Kai~aK#LG#HY̯HœɽOO 
+V
+? SSRi~ 8* mAmR85|,eп$F hp	#A}?`
+b=Pis$ `AQmph):ANQ͈T@P-NU >E2`^X5rgowxd>WqC:(SMu"C@k ,U&aIB8]1!xh$q$mZ\e8>aGXXKT$AO>Ǆew#X@Fys=@&ƂܽrÉ}Wx-P\"FčI ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+GIF89a'  I    =:8			}݂~ދ釚uù볧η̴%+ҭٴ                                                                                                                                                                  !  I ,    '   II)  ) #&&I++&&(ůG'(I'G4%گC$%4$CҎԬ# >6>6T@`>(P
+
+(B: !dn0!F_ rhةf$@xj2]/p8X 
+P)0u#@T
+;j@C+Rx. .5` {pav720ҡr 5hV`k%ج 6H-`~ ͂6 1$(b]2+ "AH7]q>]{?4޼u҉Z @ &-`=߀qH 2tA@\qd2 ""XJAٸH  ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a- P      $%'êu}~鳧ùȿǵ=:8                                                   !  . ,    - P  pH,$el:ШtJVSجvzxL.hznhN% !$" HNXȰÇ#J\@ŋ3jܨǏ CI2ɓ(S\ɲ%0cʜI8sɳ
+JѣH(]ʴӧPJJիXjׯ`Ê۠ٳhӪ]˶۷o!ȝKݻx˗LÈ'vǐ#KL˘3kyϠCMӨQ3Xͺװc@۸s޽Nȓ+_μУK>݄سkν;ËOӫ_Ͼ_˟Ͽ (h&6
+Vhfyv!x.($h(,0(. ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a
+                !     ,    
+   !( AK( 8vu)~*F	 ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,90 @@
+/* Clearlooks 2 */
+
+/* Reset */
+.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
+
+/* General */
+.clearlooks2 {position:absolute; direction:ltr}
+.clearlooks2 .mceWrapper {position:static}
+.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
+.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)}
+.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none}
+
+/* Top */
+.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
+.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
+.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
+.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
+.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
+.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
+.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
+.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
+.clearlooks2 .mceFocus .mceTop span {color:#FFF}
+
+/* Middle */
+.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
+.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
+.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
+.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
+.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
+
+/* Bottom */
+.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
+.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
+.clearlooks2 .mceBottom div {top:0}
+.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
+.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
+.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
+.clearlooks2 .mceBottom span {display:none}
+.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
+.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
+.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
+.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
+.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
+
+/* Actions */
+.clearlooks2 a {width:29px; height:16px; top:3px;}
+.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
+.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
+.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
+.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
+.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
+.clearlooks2 .mceMovable .mceMove {display:block}
+.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
+.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
+.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
+.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
+.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
+.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
+.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
+.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
+.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
+
+/* Resize */
+.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
+.clearlooks2 .mceResizable .mceResize {display:block}
+.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
+.clearlooks2 .mceMinimizable .mceMin {display:block}
+.clearlooks2 .mceMaximizable .mceMax {display:block}
+.clearlooks2 .mceMaximized .mceMed {display:block}
+.clearlooks2 .mceMaximized .mceMax {display:none}
+.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
+.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
+.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
+.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
+.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
+.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
+.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
+.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
+
+/* Alert/Confirm */
+.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
+.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
+.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
+.clearlooks2 a:hover {font-weight:bold;}
+.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
+.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
+.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
+.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
+.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
+.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)} 
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,387 @@
+<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Template for dialogs</title>
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />
+</head>
+<body>
+
+<div class="mceEditor">
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px;">
+		<div class="mceWrapper">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Blured</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px;">
+		<div class="mceWrapper mceMovable mceFocus">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Focused</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
+		<div class="mceWrapper mceMovable mceFocus mceStatusbar">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
+		<div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar, Resizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
+		<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Resizable, Maximizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
+		<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Blurred, Maximizable, Statusbar, Resizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
+		<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Maximized, Maximizable, Minimizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
+		<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Blured</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
+		<div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Alert</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+				</span>
+				<div class="mceRight"></div>
+				<div class="mceIcon"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceButton mceOk" href="#">Ok</a>
+			<a class="mceClose" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
+		<div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Confirm</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					</span>
+				<div class="mceRight"></div>
+				<div class="mceIcon"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceButton mceOk" href="#">Ok</a>
+			<a class="mceButton mceCancel" href="#">Cancel</a>
+			<a class="mceClose" href="#"></a>
+		</div>
+	</div>
+</div>
+
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('insertdatetime');var TinyMCE_InsertDateTimePlugin={getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"insertdate":return tinyMCE.getButtonHTML(cn,'lang_insertdate_desc','{$pluginurl}/images/insertdate.gif','mceInsertDate');case"inserttime":return tinyMCE.getButtonHTML(cn,'lang_inserttime_desc','{$pluginurl}/images/inserttime.gif','mceInsertTime')}return""},execCommand:function(editor_id,element,command,user_interface,value){function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value}return value}function getDateTime(d,fmt){fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt}switch(command){case"mceInsertDate":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_dateFormat",tinyMCE.getLang('lang_insertdate_def_fmt'))));return true;case"mceInsertTime":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_timeFormat",tinyMCE.getLang('lang_inserttime_def_fmt'))));return true}return false}};tinyMCE.addPlugin("insertdatetime",TinyMCE_InsertDateTimePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length<d){for(var f=0;f<(d-g.length);f++){g="0"+g}}return g}a=a.replace("%D","%m/%d/%y");a=a.replace("%r","%I:%M:%S %p");a=a.replace("%Y",""+e.getFullYear());a=a.replace("%y",""+e.getYear());a=a.replace("%m",b(e.getMonth()+1,2));a=a.replace("%d",b(e.getDate(),2));a=a.replace("%H",""+b(e.getHours(),2));a=a.replace("%M",""+b(e.getMinutes(),2));a=a.replace("%S",""+b(e.getSeconds(),2));a=a.replace("%I",""+((e.getHours()+11)%12+1));a=a.replace("%p",""+(e.getHours()<12?"AM":"PM"));a=a.replace("%B",""+c.getLang("insertdatetime.months_long").split(",")[e.getMonth()]);a=a.replace("%b",""+c.getLang("insertdatetime.months_short").split(",")[e.getMonth()]);a=a.replace("%A",""+c.getLang("insertdatetime.day_long").split(",")[e.getDay()]);a=a.replace("%a",""+c.getLang("insertdatetime.day_short").split(",")[e.getDay()]);a=a.replace("%%","%");return a}});tinymce.PluginManager.add("insertdatetime",tinymce.plugins.InsertDateTime)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,90 +1,80 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('insertdatetime');
-
-var TinyMCE_InsertDateTimePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Insert date/time',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	/**
-	 * Returns the HTML contents of the insertdate, inserttime controls.
-	 */
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "insertdate":
-				return tinyMCE.getButtonHTML(cn, 'lang_insertdate_desc', '{$pluginurl}/images/insertdate.gif', 'mceInsertDate');
-
-			case "inserttime":
-				return tinyMCE.getButtonHTML(cn, 'lang_inserttime_desc', '{$pluginurl}/images/inserttime.gif', 'mceInsertTime');
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the mceInsertDate command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		/* Adds zeros infront of value */
-		function addZeros(value, len) {
-			value = "" + value;
-
-			if (value.length < len) {
-				for (var i=0; i<(len-value.length); i++)
-					value = "0" + value;
-			}
-
-			return value;
-		}
-
-		function getDateTime(d, fmt) {
-			fmt = fmt.replace("%D", "%m/%d/%y");
-			fmt = fmt.replace("%r", "%I:%M:%S %p");
-			fmt = fmt.replace("%Y", "" + d.getFullYear());
-			fmt = fmt.replace("%y", "" + d.getYear());
-			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
-			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
-			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
-			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
-			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
-			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
-			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
-			fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);
-			fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);
-			fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);
-			fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);
-			fmt = fmt.replace("%%", "%");
-
-			return fmt;
-		}
-
-		// Handle commands
-		switch (command) {
-			case "mceInsertDate":
-				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", tinyMCE.getLang('lang_insertdate_def_fmt'))));
-				return true;
-
-			case "mceInsertTime":
-				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", tinyMCE.getLang('lang_inserttime_def_fmt'))));
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	}
-};
-
-tinyMCE.addPlugin("insertdatetime", TinyMCE_InsertDateTimePlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.InsertDateTime', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			ed.addCommand('mceInsertDate', function() {
+				var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));
+
+				ed.execCommand('mceInsertContent', false, str);
+			});
+
+			ed.addCommand('mceInsertTime', function() {
+				var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));
+
+				ed.execCommand('mceInsertContent', false, str);
+			});
+
+			ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});
+			ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Insert date/time',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+
+		_getDateTime : function(d, fmt) {
+			var ed = this.editor;
+
+			function addZeros(value, len) {
+				value = "" + value;
+
+				if (value.length < len) {
+					for (var i=0; i<(len-value.length); i++)
+						value = "0" + value;
+				}
+
+				return value;
+			};
+
+			fmt = fmt.replace("%D", "%m/%d/%y");
+			fmt = fmt.replace("%r", "%I:%M:%S %p");
+			fmt = fmt.replace("%Y", "" + d.getFullYear());
+			fmt = fmt.replace("%y", "" + d.getYear());
+			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+			fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);
+			fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);
+			fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);
+			fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);
+			fmt = fmt.replace("%%", "%");
+
+			return fmt;
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/es.js	2006-07-14 12:25:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('',{
-insertdate_def_fmt : '%d-%m-%Y',
-inserttime_def_fmt : '%H:%M:%S',
-insertdate_desc : 'Insertar fecha',
-inserttime_desc : 'Insertar hora',
-inserttime_months_long : new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"),
-inserttime_months_short : new Array("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"),
-inserttime_day_long : new Array("Domingo", "Lunes", "Martes", "Mi&eacute;rcoles", "Jueves", "Viernes", "S&aacute;bado", "Domingo"),
-inserttime_day_short : new Array("Dom", "Lun", "Mar", "Mi&eacute;", "Jue", "Vie", "S&aacute;b", "Dom")
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('layer');var TinyMCE_LayerPlugin={getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)inst.getDoc().execCommand('2D-Position')},handleEvent:function(e){var inst=tinyMCE.selectedInstance;var w=inst.getWin(),le=inst._lastStyleElm,e;if(tinyMCE.isGecko){e=this._getParentLayer(inst.getFocusElement());if(e){if(!inst._lastStyleElm){e.style.overflow='auto';inst._lastStyleElm=e}}else if(le){le=inst._lastStyleElm;le.style.width=le.scrollWidth+'px';le.style.height=le.scrollHeight+'px';le.style.overflow='';inst._lastStyleElm=null}}return true},handleVisualAid:function(el,deep,state,inst){var nl=inst.getDoc().getElementsByTagName("div"),i;for(i=0;i<nl.length;i++){if(new RegExp('absolute|relative|static','gi').test(nl[i].style.position)){if(state)tinyMCE.addCSSClass(nl[i],'mceVisualAid');else tinyMCE.removeCSSClass(nl[i],'mceVisualAid')}}},getControlHTML:function(cn){switch(cn){case"moveforward":return tinyMCE.getButtonHTML(cn,'lang_layer_forward_desc','{$pluginurl}/images/moveforward.gif','mceMoveForward',true);case"movebackward":return tinyMCE.getButtonHTML(cn,'lang_layer_backward_desc','{$pluginurl}/images/movebackward.gif','mceMoveBackward',true);case"absolute":return tinyMCE.getButtonHTML(cn,'lang_layer_absolute_desc','{$pluginurl}/images/absolute.gif','mceMakeAbsolute',true);case"insertlayer":return tinyMCE.getButtonHTML(cn,'lang_layer_insertlayer_desc','{$pluginurl}/images/insertlayer.gif','mceInsertLayer',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertLayer":this._insertLayer();return true;case"mceMoveForward":this._move(1);return true;case"mceMoveBackward":this._move(-1);return true;case"mceMakeAbsolute":this._toggleAbsolute();return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id);var le=this._getParentLayer(inst.getFocusElement());var p=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');tinyMCE.switchClass(editor_id+'_absolute','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonDisabled');if(p)tinyMCE.switchClass(editor_id+'_absolute','mceButtonNormal');if(le&&le.style.position.toLowerCase()=="absolute"){tinyMCE.switchClass(editor_id+'_absolute','mceButtonSelected');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonNormal');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonNormal')}},_move:function(d){var inst=tinyMCE.selectedInstance,i,z=new Array();var le=this._getParentLayer(inst.getFocusElement()),ci=-1,fi=-1;var nl=tinyMCE.selectNodes(inst.getBody(),function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)});for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1}}else{for(i=0;i<z.length;i++){if(z[i]>z[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else nl[ci].style.zIndex=z[ci]+1}inst.repaint()},_getParentLayer:function(n){return tinyMCE.getParentNode(n,function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)})},_insertLayer:function(){var inst=tinyMCE.selectedInstance;var e=tinyMCE.getParentElement(inst.getFocusElement());var p=tinyMCE.getAbsPosition(e);var d=inst.getDoc();var ne=d.createElement('div');var h=inst.selection.getSelectedHTML();ne.style.position='absolute';ne.style.left=p.absLeft+'px';ne.style.top=(p.absTop>20?p.absTop:20)+'px';ne.style.width='100px';ne.style.height='100px';ne.className='mceVisualAid';if(!h)h=tinyMCE.getLang('lang_layer_content');ne.innerHTML=h;d.body.appendChild(ne)},_toggleAbsolute:function(){var inst=tinyMCE.selectedInstance;var le=this._getParentLayer(inst.getFocusElement());if(le==null)le=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');if(le){if(le.style.position.toLowerCase()=="absolute"){le.style.position="";le.style.left="";le.style.top=""}else{le.style.position="absolute";if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';tinyMCE.handleVisualAid(inst.getBody(),true,inst.visualAid,inst)}inst.repaint();tinyMCE.triggerNodeChange()}}};tinyMCE.addPlugin("layer",TinyMCE_LayerPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.Layer",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertLayer",c._insertLayer,c);a.addCommand("mceMoveForward",function(){c._move(1)});a.addCommand("mceMoveBackward",function(){c._move(-1)});a.addCommand("mceMakeAbsolute",function(){c._toggleAbsolute()});a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});a.onInit.add(function(){if(tinymce.isIE){a.getDoc().execCommand("2D-Position",false,true)}});a.onNodeChange.add(c._nodeChange,c);a.onVisualAid.add(c._visualAid,c)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var c,d;c=this._getParentLayer(e);d=b.dom.getParent(e,"DIV,P,IMG");if(!d){a.setDisabled("absolute",1);a.setDisabled("moveforward",1);a.setDisabled("movebackward",1)}else{a.setDisabled("absolute",0);a.setDisabled("moveforward",!c);a.setDisabled("movebackward",!c);a.setActive("absolute",c&&c.style.position.toLowerCase()=="absolute")}},_visualAid:function(a,c,b){var d=a.dom;tinymce.each(d.select("div,p",c),function(f){if(/^(absolute|relative|static)$/i.test(f.style.position)){if(b){d.addClass(f,"mceItemVisualAid")}else{d.removeClass(f,"mceItemVisualAid")}}})},_move:function(h){var b=this.editor,f,g=[],e=this._getParentLayer(b.selection.getNode()),c=-1,j=-1,a;a=[];tinymce.walk(b.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){a.push(d)}},"childNodes");for(f=0;f<a.length;f++){g[f]=a[f].style.zIndex?parseInt(a[f].style.zIndex):0;if(c<0&&a[f]==e){c=f}}if(h<0){for(f=0;f<g.length;f++){if(g[f]<g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{if(g[c]>0){a[c].style.zIndex=g[c]-1}}}else{for(f=0;f<g.length;f++){if(g[f]>g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{a[c].style.zIndex=g[c]+1}}b.execCommand("mceRepaint")},_getParentLayer:function(a){return this.editor.dom.getParent(a,function(b){return b.nodeType==1&&/^(absolute|relative|static)$/i.test(b.style.position)})},_insertLayer:function(){var a=this.editor,b=a.dom.getPos(a.dom.getParent(a.selection.getNode(),"*"));a.dom.add(a.getBody(),"div",{style:{position:"absolute",left:b.x,top:(b.y>20?b.y:20),width:100,height:100},"class":"mceItemVisualAid"},a.selection.getContent()||a.getLang("layer.content"))},_toggleAbsolute:function(){var a=this.editor,b=this._getParentLayer(a.selection.getNode());if(!b){b=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")}if(b){if(b.style.position.toLowerCase()=="absolute"){a.dom.setStyles(b,{position:"",left:"",top:"",width:"",height:""});a.dom.removeClass(b,"mceItemVisualAid")}else{if(b.style.left==""){b.style.left=20+"px"}if(b.style.top==""){b.style.top=20+"px"}if(b.style.width==""){b.style.width=b.width?(b.width+"px"):"100px"}if(b.style.height==""){b.style.height=b.height?(b.height+"px"):"100px"}b.style.position="absolute";a.addVisual(a.getBody())}a.execCommand("mceRepaint");a.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,248 +1,209 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('layer');
-
-var TinyMCE_LayerPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Layer',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		if (tinyMCE.isMSIE && !tinyMCE.isOpera)
-			inst.getDoc().execCommand('2D-Position');
-	},
-
-	handleEvent : function(e) {
-		var inst = tinyMCE.selectedInstance;
-		var w = inst.getWin(), le = inst._lastStyleElm, e;
-
-		if (tinyMCE.isGecko) {
-			e = this._getParentLayer(inst.getFocusElement());
-
-			if (e) {
-				if (!inst._lastStyleElm) {
-					e.style.overflow = 'auto';
-					inst._lastStyleElm = e;
-				}
-			} else if (le) {
-				le = inst._lastStyleElm;
-				le.style.width = le.scrollWidth + 'px';
-				le.style.height = le.scrollHeight + 'px';
-				le.style.overflow = '';
-				inst._lastStyleElm = null;
-			}
-		}
-
-		return true;
-	},
-
-	handleVisualAid : function(el, deep, state, inst) {
-		var nl = inst.getDoc().getElementsByTagName("div"), i;
-
-		for (i=0; i<nl.length; i++) {
-			if (new RegExp('absolute|relative|static', 'gi').test(nl[i].style.position)) {
-				if (state)
-					tinyMCE.addCSSClass(nl[i], 'mceVisualAid');
-				else
-					tinyMCE.removeCSSClass(nl[i], 'mceVisualAid');
-			}
-		}
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "moveforward":
-				return tinyMCE.getButtonHTML(cn, 'lang_layer_forward_desc', '{$pluginurl}/images/moveforward.gif', 'mceMoveForward', true);
-
-			case "movebackward":
-				return tinyMCE.getButtonHTML(cn, 'lang_layer_backward_desc', '{$pluginurl}/images/movebackward.gif', 'mceMoveBackward', true);
-
-			case "absolute":
-				return tinyMCE.getButtonHTML(cn, 'lang_layer_absolute_desc', '{$pluginurl}/images/absolute.gif', 'mceMakeAbsolute', true);
-
-			case "insertlayer":
-				return tinyMCE.getButtonHTML(cn, 'lang_layer_insertlayer_desc', '{$pluginurl}/images/insertlayer.gif', 'mceInsertLayer', true);
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceInsertLayer":
-				this._insertLayer();
-				return true;
-
-			case "mceMoveForward":
-				this._move(1);
-				return true;
-
-			case "mceMoveBackward":
-				this._move(-1);
-				return true;
-
-			case "mceMakeAbsolute":
-				this._toggleAbsolute();
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		var inst = tinyMCE.getInstanceById(editor_id);
-		var le = this._getParentLayer(inst.getFocusElement());
-		var p = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
-
-		tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonDisabled');
-
-		if (p)
-			tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonNormal');
-
-		if (le && le.style.position.toLowerCase() == "absolute") {
-			tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonSelected');
-			tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonNormal');
-		}
-	},
-
-	// Private plugin specific methods
-
-	_move : function(d) {
-		var inst = tinyMCE.selectedInstance, i, z = new Array();
-		var le = this._getParentLayer(inst.getFocusElement()), ci = -1, fi = -1;
-		var nl = tinyMCE.selectNodes(inst.getBody(), function(n) {
-			return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
-		});
-
-		// Find z-indexes
-		for (i=0; i<nl.length; i++) {
-			z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
-
-			if (ci < 0 && nl[i] == le)
-				ci = i;
-		}
-
-		if (d < 0) {
-			// Move back
-
-			// Try find a lower one
-			for (i=0; i<z.length; i++) {
-				if (z[i] < z[ci]) {
-					fi = i;
-					break;
-				}
-			}
-
-			if (fi > -1) {
-				nl[ci].style.zIndex = z[fi];
-				nl[fi].style.zIndex = z[ci];
-			} else {
-				if (z[ci] > 0)
-					nl[ci].style.zIndex = z[ci] - 1;
-			}
-		} else {
-			// Move forward
-
-			// Try find a higher one
-			for (i=0; i<z.length; i++) {
-				if (z[i] > z[ci]) {
-					fi = i;
-					break;
-				}
-			}
-
-			if (fi > -1) {
-				nl[ci].style.zIndex = z[fi];
-				nl[fi].style.zIndex = z[ci];
-			} else
-				nl[ci].style.zIndex = z[ci] + 1;
-		}
-
-		inst.repaint();
-	},
-
-	_getParentLayer : function(n) {
-		return tinyMCE.getParentNode(n, function(n) {
-			return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
-		});
-	},
-
-	_insertLayer : function() {
-		var inst = tinyMCE.selectedInstance;
-		var e = tinyMCE.getParentElement(inst.getFocusElement());
-		var p = tinyMCE.getAbsPosition(e);
-		var d = inst.getDoc();
-		var ne = d.createElement('div');
-		var h = inst.selection.getSelectedHTML();
-
-		// Move div
-		ne.style.position = 'absolute';
-		ne.style.left = p.absLeft + 'px';
-		ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px';
-		ne.style.width = '100px';
-		ne.style.height = '100px';
-		ne.className = 'mceVisualAid';
-
-		if (!h)
-			h = tinyMCE.getLang('lang_layer_content');
-
-		ne.innerHTML = h;
-
-		// Add it
-		d.body.appendChild(ne);
-	},
-
-	_toggleAbsolute : function() {
-		var inst = tinyMCE.selectedInstance;
-		var le = this._getParentLayer(inst.getFocusElement());
-
-		if (le == null)
-			le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
-
-		if (le) {
-			if (le.style.position.toLowerCase() == "absolute") {
-				le.style.position = "";
-				le.style.left = "";
-				le.style.top = "";
-			} else {
-				le.style.position = "absolute";
-
-				if (le.style.left == "")
-					le.style.left = 20 + 'px';
-
-				if (le.style.top == "")
-					le.style.top = 20 + 'px';
-
-				if (le.style.width == "")
-					le.style.width = le.width ? (le.width + 'px') : '100px';
-
-				if (le.style.height == "")
-					le.style.height = le.height ? (le.height + 'px') : '100px';
-
-				tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-			}
-
-			inst.repaint();
-			tinyMCE.triggerNodeChange();
-		}
-	}
-};
-
-tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin);
+/**
+ * $Id: editor_plugin_src.js 652 2008-02-29 13:09:46Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.Layer', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceInsertLayer', t._insertLayer, t);
+
+			ed.addCommand('mceMoveForward', function() {
+				t._move(1);
+			});
+
+			ed.addCommand('mceMoveBackward', function() {
+				t._move(-1);
+			});
+
+			ed.addCommand('mceMakeAbsolute', function() {
+				t._toggleAbsolute();
+			});
+
+			// Register buttons
+			ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
+			ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
+			ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
+			ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
+
+			ed.onInit.add(function() {
+				if (tinymce.isIE)
+					ed.getDoc().execCommand('2D-Position', false, true);
+			});
+
+			ed.onNodeChange.add(t._nodeChange, t);
+			ed.onVisualAid.add(t._visualAid, t);
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Layer',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+
+		_nodeChange : function(ed, cm, n) {
+			var le, p;
+
+			le = this._getParentLayer(n);
+			p = ed.dom.getParent(n, 'DIV,P,IMG');
+
+			if (!p) {
+				cm.setDisabled('absolute', 1);
+				cm.setDisabled('moveforward', 1);
+				cm.setDisabled('movebackward', 1);
+			} else {
+				cm.setDisabled('absolute', 0);
+				cm.setDisabled('moveforward', !le);
+				cm.setDisabled('movebackward', !le);
+				cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
+			}
+		},
+
+		// Private methods
+
+		_visualAid : function(ed, e, s) {
+			var dom = ed.dom;
+
+			tinymce.each(dom.select('div,p', e), function(e) {
+				if (/^(absolute|relative|static)$/i.test(e.style.position)) {
+					if (s)
+						dom.addClass(e, 'mceItemVisualAid');
+					else
+						dom.removeClass(e, 'mceItemVisualAid');	
+				}
+			});
+		},
+
+		_move : function(d) {
+			var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
+
+			nl = [];
+			tinymce.walk(ed.getBody(), function(n) {
+				if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
+					nl.push(n); 
+			}, 'childNodes');
+
+			// Find z-indexes
+			for (i=0; i<nl.length; i++) {
+				z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
+
+				if (ci < 0 && nl[i] == le)
+					ci = i;
+			}
+
+			if (d < 0) {
+				// Move back
+
+				// Try find a lower one
+				for (i=0; i<z.length; i++) {
+					if (z[i] < z[ci]) {
+						fi = i;
+						break;
+					}
+				}
+
+				if (fi > -1) {
+					nl[ci].style.zIndex = z[fi];
+					nl[fi].style.zIndex = z[ci];
+				} else {
+					if (z[ci] > 0)
+						nl[ci].style.zIndex = z[ci] - 1;
+				}
+			} else {
+				// Move forward
+
+				// Try find a higher one
+				for (i=0; i<z.length; i++) {
+					if (z[i] > z[ci]) {
+						fi = i;
+						break;
+					}
+				}
+
+				if (fi > -1) {
+					nl[ci].style.zIndex = z[fi];
+					nl[fi].style.zIndex = z[ci];
+				} else
+					nl[ci].style.zIndex = z[ci] + 1;
+			}
+
+			ed.execCommand('mceRepaint');
+		},
+
+		_getParentLayer : function(n) {
+			return this.editor.dom.getParent(n, function(n) {
+				return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
+			});
+		},
+
+		_insertLayer : function() {
+			var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));
+
+			ed.dom.add(ed.getBody(), 'div', {
+				style : {
+					position : 'absolute',
+					left : p.x,
+					top : (p.y > 20 ? p.y : 20),
+					width : 100,
+					height : 100
+				},
+				'class' : 'mceItemVisualAid'
+			}, ed.selection.getContent() || ed.getLang('layer.content'));
+		},
+
+		_toggleAbsolute : function() {
+			var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
+
+			if (!le)
+				le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
+
+			if (le) {
+				if (le.style.position.toLowerCase() == "absolute") {
+					ed.dom.setStyles(le, {
+						position : '',
+						left : '',
+						top : '',
+						width : '',
+						height : ''
+					});
+
+					ed.dom.removeClass(le, 'mceItemVisualAid');
+				} else {
+					if (le.style.left == "")
+						le.style.left = 20 + 'px';
+
+					if (le.style.top == "")
+						le.style.top = 20 + 'px';
+
+					if (le.style.width == "")
+						le.style.width = le.width ? (le.width + 'px') : '100px';
+
+					if (le.style.height == "")
+						le.style.height = le.height ? (le.height + 'px') : '100px';
+
+					le.style.position = "absolute";
+					ed.addVisual(ed.getBody());
+				}
+
+				ed.execCommand('mceRepaint');
+				ed.nodeChanged();
+			}
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/langs/es.js	2006-07-14 12:29:52.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/layer/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('layer',{
-insertlayer_desc : 'Insertar nueva capa',
-forward_desc : 'Adelante',
-backward_desc : 'Atr&aacute;s',
-absolute_desc : 'Posicionamiento absoluto',
-content : 'Nueva capa...'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/content.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/content.css	2009-06-30 22:01:32.000000000 +0200
@@ -1,26 +1,6 @@
-.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {
-	border: 1px dotted #cc0000;
-	background-position: center;
-	background-repeat: no-repeat;
-	background-color: #ffffcc;
-}
-
-.mceItemShockWave {
-	background-image: url('../images/shockwave.gif');
-}
-
-.mceItemFlash {
-	background-image: url('../images/flash.gif');
-}
-
-.mceItemQuickTime {
-	background-image: url('../images/quicktime.gif');
-}
-
-.mceItemWindowsMedia {
-	background-image: url('../images/windowsmedia.gif');
-}
-
-.mceItemRealMedia {
-	background-image: url('../images/realmedia.gif');
-}
+.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}
+.mceItemShockWave {background-image: url(../img/shockwave.gif);}
+.mceItemFlash {background-image:url(../img/flash.gif);}
+.mceItemQuickTime {background-image:url(../img/quicktime.gif);}
+.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}
+.mceItemRealMedia {background-image:url(../img/realmedia.gif);}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/media.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/media.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/media.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/css/media.css	2009-06-30 22:01:32.000000000 +0200
@@ -1,68 +1,16 @@
-#id, #name, #hspace, #vspace, #class_name, #align {
-	width: 100px;
-}
-
-#hspace, #vspace {
-	width: 50px;
-}
-
-#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode {
-	width: 100px;
-}
-
-#flash_base, #flash_flashvars {
-	width: 240px;
-}
-
-#width, #height {
-	width: 40px;
-}
-
-#src, #media_type {
-	width: 250px;
-}
-
-#class {
-	width: 120px;
-}
-
-#prev {
-	margin: 0;
-	border: 1px solid black;
-	width: 99%;
-	height: 230px;
-	overflow: auto;
-}
-
-.panel_wrapper div.current {
-	height: 390px;
-	overflow: auto;
-}
-
-#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options {
-	display: none;
-}
-
-.mceAddSelectValue {
-	background-color: #DDDDDD;
-}
-
-#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume {
-	width: 70px;
-}
-
-#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume {
-	width: 70px;
-}
-
-#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks {
-	width: 70px;
-}
-
-#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle {
-	width: 90px;
-}
-
-#qt_qtsrc {
-	width: 200px;
-}
+#id, #name, #hspace, #vspace, #class_name, #align {	width: 100px }
+#hspace, #vspace { width: 50px }
+#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }
+#flash_base, #flash_flashvars { width: 240px }
+#width, #height { width: 40px }
+#src, #media_type { width: 250px }
+#class { width: 120px }
+#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto }
+.panel_wrapper div.current { height: 390px; overflow: auto }
+#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }
+.mceAddSelectValue { background-color: #DDDDDD }
+#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }
+#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }
+#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }
+#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }
+#qt_qtsrc { width: 200px }
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js	2007-08-28 09:57:30.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('media');var TinyMCE_MediaPlugin={getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(inst.hasPlugin('flash')&&!tinyMCE.flashWarn){alert('Flash plugin is deprecated and should not be used together with the media plugin.');tinyMCE.flashWarn=true}if(!tinyMCE.settings['media_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/media/css/content.css")},getControlHTML:function(cn){switch(cn){case"media":return tinyMCE.getButtonHTML(cn,'lang_media_desc','{$pluginurl}/images/media.gif','mceMedia')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceMedia":tinyMCE.openWindow({file:'../../plugins/media/media.htm',width:430+tinyMCE.getLang('lang_media_delta_width',0),height:470+tinyMCE.getLang('lang_media_delta_height',0)},{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content,inst){var nl,img,i,ne,d,s,ci;switch(type){case"insert_to_editor":img=tinyMCE.getParam("theme_href")+'/images/spacer.gif';content=content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,'<img class="mceItem$1" title="$2" src="'+img+'" />');content=content.replace(/<object([^>]*)>/gi,'<div class="mceItemObject" $1>');content=content.replace(/<embed([^>]*)>/gi,'<div class="mceItemObjectEmbed" $1>');content=content.replace(/<\/(object|embed)([^>]*)>/gi,'</div>');content=content.replace(/<param([^>]*)>/gi,'<div $1 class="mceItemParam"></div>');content=content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>','gi'),'class="mceItemParam"></div>');break;case"insert_to_editor_dom":d=inst.getDoc();nl=content.getElementsByTagName("img");for(i=0;i<nl.length;i++){if(/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)){nl[i].width=nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g,'$1');nl[i].height=nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g,'$1');}}nl=tinyMCE.selectElements(content,'DIV',function(n){return tinyMCE.hasCSSClass(n,'mceItemObject')});for(i=0;i<nl.length;i++){ci=tinyMCE.getAttrib(nl[i],"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash',d,nl[i]),nl[i]);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave',d,nl[i]),nl[i]);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia',d,nl[i]),nl[i]);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime',d,nl[i]),nl[i]);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia',d,nl[i]),nl[i]);break}}nl=tinyMCE.selectNodes(content,function(n){return n.className=='mceItemObjectEmbed'});for(i=0;i<nl.length;i++){switch(tinyMCE.getAttrib(nl[i],'type')){case'application/x-shockwave-flash':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemFlash');break;case'application/x-director':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemShockWave');break;case'application/x-mplayer2':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemWindowsMedia');break;case'video/quicktime':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemQuickTime');break;case'audio/x-pn-realaudio-plugin':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemRealMedia');break}}break;case"get_from_editor":var startPos=-1,endPos,attribs,chunkBefore,chunkAfter,embedHTML,at,pl,cb,mt,ex;while((startPos=content.indexOf('<img',startPos+1))!=-1){endPos=content.indexOf('/>',startPos);attribs=TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+=2;at=attribs['title'];if(at){at=at.replace(/&(#39|apos);/g,"'");at=at.replace(/&#quot;/g,'"');try{pl=eval('x={'+at+'};')}catch(ex){pl={}}}if(!tinyMCE.getParam('media_use_script',false)){switch(attribs['class']){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166B1BCA-3F9C-11CF-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=tinyMCE.getParam('media_wmp6_compatible')?'05589FA1-C356-11CE-BF01-00AA0055595A':'6BF52A52-394A-11D3-B153-00C04F79FAA6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break}pl.src=tinyMCE.convertURL(pl.src,null,true);embedHTML=TinyMCE_MediaPlugin._getEmbed(ci,cb,mt,pl,attribs)}else{switch(attribs['class']){case'mceItemFlash':s='writeFlash';break;case'mceItemShockWave':s='writeShockWave';break;case'mceItemWindowsMedia':s='writeWindowsMedia';break;case'mceItemQuickTime':s='writeQuickTime';break;case'mceItemRealMedia':s='writeRealMedia';break}if(attribs.width)at=at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g,"width:'"+attribs.width+"'");if(attribs.height)at=at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g,"height:'"+attribs.height+"'");pl.src=tinyMCE.convertURL(pl.src,null,true);at=at.replace(new RegExp("src:'[^']*'","g"),"src:'"+pl.src+"'");embedHTML='<script type="text/javascript">'+s+'({'+at+'});</script>'}chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node,'class'))){tinyMCE.switchClass(editor_id+'_media','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_media','mceButtonNormal');return true},_createImgFromEmbed:function(n,d,cl){var ne,at,i,ti='',an;ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;at=n.attributes;for(i=0;i<at.length;i++){if(at[i].specified&&at[i].nodeValue){an=at[i].nodeName.toLowerCase();if(an=='src')continue;if(an=='mce_src')an='src';if(an.indexOf('mce_')==-1&&!new RegExp('^(class|type)$').test(an))ti+=an.toLowerCase()+':\''+at[i].nodeValue+"',"}}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;n.parentNode.replaceChild(ne,n)},_createImg:function(cl,d,n){var i,nl,ti="",an,av,al=new Array();ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;al.id=tinyMCE.getAttrib(n,'id');al.name=tinyMCE.getAttrib(n,'name');al.width=tinyMCE.getAttrib(n,'width');al.height=tinyMCE.getAttrib(n,'height');al.bgcolor=tinyMCE.getAttrib(n,'bgcolor');al.align=tinyMCE.getAttrib(n,'align');al.class_name=tinyMCE.getAttrib(n,'mce_class');nl=n.getElementsByTagName('div');for(i=0;i<nl.length;i++){av=tinyMCE.getAttrib(nl[i],'value');av=av.replace(new RegExp('\\\\','g'),'\\\\');av=av.replace(new RegExp('"','g'),'\\"');av=av.replace(new RegExp("'",'g'),"\\'");an=tinyMCE.getAttrib(nl[i],'name');al[an]=av}if(al.movie){al.src=al.movie;al.movie=null}for(an in al){if(al[an]!=null&&typeof(al[an])!="function"&&al[an]!='')ti+=an.toLowerCase()+':\''+al[an]+"',"}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;return ne},_getEmbed:function(cls,cb,mt,p,at){var h='',n;p.width=at.width?at.width:p.width;p.height=at.height?at.height:p.height;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?' id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?' name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?' width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?' height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?' align="'+p.align+'"':'';h+='>';for(n in p){if(typeof(p[n])!="undefined"&&typeof(p[n])!="function"){h+='<param name="'+n+'" value="'+p[n]+'" />';if(n=='src'&&p[n].indexOf('://')!=-1&&mt=='application/x-mplayer2')h+='<param name="url" value="'+p[n]+'" />'}}h+='<embed type="'+mt+'"';for(n in p){if(typeof(p[n])=="function")continue;if(!(n=='url'&&mt=='application/x-mplayer2'))h+=' '+n+'="'+p[n]+'"'}h+='></embed></object>';return h},_parseAttributes:function(attribute_string){var attributeName="",endChr='"';var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i<attribute_string.length;i++){var chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue){withInValue=true;endChr=chr}else if(chr==endChr&&withInValue){withInValue=false;var pos=attributeName.lastIndexOf(' ');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return attributes}};tinyMCE.addPlugin("media",TinyMCE_MediaPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.MediaPlugin",{init:function(b,c){var e=this;e.editor=b;e.url=c;function f(g){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(g.className)}b.onPreInit.add(function(){b.serializer.addRules("param[name|value|_mce_value]")});b.addCommand("mceMedia",function(){b.windowManager.open({file:c+"/media.htm",width:430+parseInt(b.getLang("media.delta_width",0)),height:470+parseInt(b.getLang("media.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("media",{title:"media.desc",cmd:"mceMedia"});b.onNodeChange.add(function(h,g,i){g.setActive("media",i.nodeName=="IMG"&&f(i))});b.onInit.add(function(){var g={mceItemFlash:"flash",mceItemShockWave:"shockwave",mceItemWindowsMedia:"windowsmedia",mceItemQuickTime:"quicktime",mceItemRealMedia:"realmedia"};b.selection.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.selection.onBeforeSetContent.add(e._objectsToSpans,e);if(b.settings.content_css!==false){b.dom.loadCSS(c+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(h,i){if(i.name=="img"){a(g,function(l,j){if(b.dom.hasClass(i.node,j)){i.name=l;i.title=b.dom.getAttrib(i.node,"title");return false}})}})}if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(i,h,j){if(j.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(j.className)){h.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});b.onBeforeSetContent.add(e._objectsToSpans,e);b.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.onPreProcess.add(function(g,i){var h=g.dom;if(i.set){e._spansToImgs(i.node);a(h.select("IMG",i.node),function(k){var j;if(f(k)){j=e._parse(k.title);h.setAttrib(k,"width",h.getAttrib(k,"width",j.width||100));h.setAttrib(k,"height",h.getAttrib(k,"height",j.height||100))}})}if(i.get){a(h.select("IMG",i.node),function(m){var l,j,k;if(g.getParam("media_use_script")){if(f(m)){m.className=m.className.replace(/mceItem/g,"mceTemp")}return}switch(m.className){case"mceItemFlash":l="d27cdb6e-ae6d-11cf-96b8-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="application/x-shockwave-flash";break;case"mceItemShockWave":l="166b1bca-3f9c-11cf-8075-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0";k="application/x-director";break;case"mceItemWindowsMedia":l=g.getParam("media_wmp6_compatible")?"05589fa1-c356-11ce-bf01-00aa0055595a":"6bf52a52-394a-11d3-b153-00c04f79faa6";j="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";k="application/x-mplayer2";break;case"mceItemQuickTime":l="02bf25d5-8c17-4b23-bc80-d3488abddc6b";j="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0";k="video/quicktime";break;case"mceItemRealMedia":l="cfcdaa03-8be4-11cf-b84b-0020afbbccfa";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="audio/x-pn-realaudio-plugin";break}if(l){h.replace(e._buildObj({classid:l,codebase:j,type:k},m),m)}})}});b.onPostProcess.add(function(g,h){h.content=h.content.replace(/_mce_value=/g,"value=")});function d(g,h){h=new RegExp(h+'="([^"]+)"',"g").exec(g);return h?b.dom.decode(h[1]):""}b.onPostProcess.add(function(g,h){if(g.getParam("media_use_script")){h.content=h.content.replace(/<img[^>]+>/g,function(j){var i=d(j,"class");if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(i)){at=e._parse(d(j,"title"));at.width=d(j,"width");at.height=d(j,"height");j='<script type="text/javascript">write'+i.substring(7)+"({"+e._serialize(at)+"});<\/script>"}return j})}})},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_objectsToSpans:function(b,e){var c=this,d=e.content;d=d.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(g,f,i){var h=c._parse(i);return'<img class="mceItem'+f+'" title="'+b.dom.encode(i)+'" src="'+c.url+'/img/trans.gif" width="'+h.width+'" height="'+h.height+'" />'});d=d.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');d=d.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');d=d.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');d=d.replace(/<\/(object)([^>]*)>/gi,"</span>");d=d.replace(/<\/embed>/gi,"");d=d.replace(/<param([^>]*)>/gi,function(g,f){return"<span "+f.replace(/value=/gi,"_mce_value=")+' class="mceItemParam"></span>'});d=d.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');e.content=d},_buildObj:function(g,h){var d,c=this.editor,f=c.dom,e=this._parse(h.title),b;b=c.getParam("media_strict",true)&&g.type=="application/x-shockwave-flash";e.width=g.width=f.getAttrib(h,"width")||100;e.height=g.height=f.getAttrib(h,"height")||100;if(e.src){e.src=c.convertURL(e.src,"src",h)}if(b){d=f.create("span",{id:e.id,mce_name:"object",type:"application/x-shockwave-flash",data:e.src,style:f.getAttrib(h,"style"),width:g.width,height:g.height})}else{d=f.create("span",{id:e.id,mce_name:"object",classid:"clsid:"+g.classid,style:f.getAttrib(h,"style"),codebase:g.codebase,width:g.width,height:g.height})}a(e,function(j,i){if(!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(i)){if(g.type=="application/x-mplayer2"&&i=="src"&&!e.url){i="url"}if(j){f.add(d,"span",{mce_name:"param",name:i,_mce_value:j})}}});if(!b){f.add(d,"span",tinymce.extend({mce_name:"embed",type:g.type,style:f.getAttrib(h,"style")},e))}return d},_spansToImgs:function(e){var d=this,f=d.editor.dom,b,c;a(f.select("span",e),function(g){if(f.getAttrib(g,"class")=="mceItemObject"){c=f.getAttrib(g,"classid").toLowerCase().replace(/\s+/g,"");switch(c){case"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000":f.replace(d._createImg("mceItemFlash",g),g);break;case"clsid:166b1bca-3f9c-11cf-8075-444553540000":f.replace(d._createImg("mceItemShockWave",g),g);break;case"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6":case"clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95":case"clsid:05589fa1-c356-11ce-bf01-00aa0055595a":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}return}if(f.getAttrib(g,"class")=="mceItemEmbed"){switch(f.getAttrib(g,"type")){case"application/x-shockwave-flash":f.replace(d._createImg("mceItemFlash",g),g);break;case"application/x-director":f.replace(d._createImg("mceItemShockWave",g),g);break;case"application/x-mplayer2":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"video/quicktime":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"audio/x-pn-realaudio-plugin":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}}})},_createImg:function(c,h){var b,g=this.editor.dom,f={},e="",d;d=["id","name","width","height","bgcolor","align","flashvars","src","wmode","allowfullscreen","quality"];b=g.create("img",{src:this.url+"/img/trans.gif",width:g.getAttrib(h,"width")||100,height:g.getAttrib(h,"height")||100,style:g.getAttrib(h,"style"),"class":c});a(d,function(i){var j=g.getAttrib(h,i);if(j){f[i]=j}});a(g.select("span",h),function(i){if(g.hasClass(i,"mceItemParam")){f[g.getAttrib(i,"name")]=g.getAttrib(i,"_mce_value")}});if(f.movie){f.src=f.movie;delete f.movie}h=g.select(".mceItemEmbed",h)[0];if(h){a(d,function(i){var j=g.getAttrib(h,i);if(j&&!f[i]){f[i]=j}})}delete f.width;delete f.height;b.title=this._serialize(f);return b},_parse:function(b){return tinymce.util.JSON.parse("{"+b+"}")},_serialize:function(b){return tinymce.util.JSON.serialize(b).replace(/[{}]/g,"")}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,432 +1,405 @@
-/**
- * $Id: editor_plugin_src.js 296 2007-08-21 10:36:35Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('media');
-
-var TinyMCE_MediaPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Media',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		// Warn if user has flash plugin and media plugin at the same time
-		if (inst.hasPlugin('flash') && !tinyMCE.flashWarn) {
-			alert('Flash plugin is deprecated and should not be used together with the media plugin.');
-			tinyMCE.flashWarn = true;
-		}
-
-		if (!tinyMCE.settings['media_skip_plugin_css'])
-			tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/media/css/content.css");
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "media":
-				return tinyMCE.getButtonHTML(cn, 'lang_media_desc', '{$pluginurl}/images/media.gif', 'mceMedia');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceMedia":
-				tinyMCE.openWindow({
-						file : '../../plugins/media/media.htm',
-						width : 430 + tinyMCE.getLang('lang_media_delta_width', 0),
-						height : 470 + tinyMCE.getLang('lang_media_delta_height', 0)
-					}, {
-						editor_id : editor_id,
-						inline : "yes"
-				});
-
-				return true;
-	   }
-
-	   // Pass to next handler in chain
-	   return false;
-	},
-
-	cleanup : function(type, content, inst) {
-		var nl, img, i, ne, d, s, ci;
-
-		switch (type) {
-			case "insert_to_editor":
-				img = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
-				content = content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, '<img class="mceItem$1" title="$2" src="' + img + '" />');
-				content = content.replace(/<object([^>]*)>/gi, '<div class="mceItemObject" $1>');
-				content = content.replace(/<embed([^>]*)>/gi, '<div class="mceItemObjectEmbed" $1>');
-				content = content.replace(/<\/(object|embed)([^>]*)>/gi, '</div>');
-				content = content.replace(/<param([^>]*)>/gi, '<div $1 class="mceItemParam"></div>');
-				content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam"></div>');
-				break;
-
-			case "insert_to_editor_dom":
-				d = inst.getDoc();
-				nl = content.getElementsByTagName("img");
-				for (i=0; i<nl.length; i++) {
-					if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)) {
-						nl[i].width = nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g, '$1');
-						nl[i].height = nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g, '$1');
-						//nl[i].align = nl[i].title.replace(/.*align:([a-z]+).*/gi, '$1');
-					}
-				}
-
-				nl = tinyMCE.selectElements(content, 'DIV', function (n) {return tinyMCE.hasCSSClass(n, 'mceItemObject');});
-				for (i=0; i<nl.length; i++) {
-					ci = tinyMCE.getAttrib(nl[i], "classid").toLowerCase().replace(/\s+/g, '');
-
-					switch (ci) {
-						case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
-							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash', d, nl[i]), nl[i]);
-							break;
-
-						case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
-							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave', d, nl[i]), nl[i]);
-							break;
-
-						case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
-						case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
-						case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
-							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia', d, nl[i]), nl[i]);
-							break;
-
-						case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
-							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime', d, nl[i]), nl[i]);
-							break;
-
-						case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
-							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia', d, nl[i]), nl[i]);
-							break;
-					}
-				}
-
-				// Handle embed (if any)
-				nl = tinyMCE.selectNodes(content, function (n) {return n.className == 'mceItemObjectEmbed';});
-				for (i=0; i<nl.length; i++) {
-					switch (tinyMCE.getAttrib(nl[i], 'type')) {
-						case 'application/x-shockwave-flash':
-							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemFlash');
-							break;
-
-						case 'application/x-director':
-							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemShockWave');
-							break;
-
-						case 'application/x-mplayer2':
-							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemWindowsMedia');
-							break;
-
-						case 'video/quicktime':
-							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemQuickTime');
-							break;
-
-						case 'audio/x-pn-realaudio-plugin':
-							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemRealMedia');
-							break;
-					}
-				}
-				break;
-
-			case "get_from_editor":
-				var startPos = -1, endPos, attribs, chunkBefore, chunkAfter, embedHTML, at, pl, cb, mt, ex;
-
-				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
-					endPos = content.indexOf('/>', startPos);
-					attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos));
-
-					// Is not flash, skip it
-					if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))
-						continue;
-
-					endPos += 2;
-
-					// Parse attributes
-					at = attribs['title'];
-					if (at) {
-						at = at.replace(/&(#39|apos);/g, "'");
-						at = at.replace(/&#quot;/g, '"');
-
-						try {
-							pl = eval('x={' + at + '};');
-						} catch (ex) {
-							pl = {};
-						}
-					}
-
-					// Use object/embed
-					if (!tinyMCE.getParam('media_use_script', false)) {
-						switch (attribs['class']) {
-							case 'mceItemFlash':
-								ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
-								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
-								mt = 'application/x-shockwave-flash';
-								break;
-
-							case 'mceItemShockWave':
-								ci = '166B1BCA-3F9C-11CF-8075-444553540000';
-								cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
-								mt = 'application/x-director';
-								break;
-
-							case 'mceItemWindowsMedia':
-								ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6';
-								cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
-								mt = 'application/x-mplayer2';
-								break;
-
-							case 'mceItemQuickTime':
-								ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
-								cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
-								mt = 'video/quicktime';
-								break;
-
-							case 'mceItemRealMedia':
-								ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
-								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
-								mt = 'audio/x-pn-realaudio-plugin';
-								break;
-						}
-
-						// Convert the URL
-						pl.src = tinyMCE.convertURL(pl.src, null, true);
-
-						embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs);
-					} else {
-						// Use script version
-						switch (attribs['class']) {
-							case 'mceItemFlash':
-								s = 'writeFlash';
-								break;
-
-							case 'mceItemShockWave':
-								s = 'writeShockWave';
-								break;
-
-							case 'mceItemWindowsMedia':
-								s = 'writeWindowsMedia';
-								break;
-
-							case 'mceItemQuickTime':
-								s = 'writeQuickTime';
-								break;
-
-							case 'mceItemRealMedia':
-								s = 'writeRealMedia';
-								break;
-						}
-
-						if (attribs.width)
-							at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'");
-
-						if (attribs.height)
-							at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'");
-
-						// Force absolute URL
-						pl.src = tinyMCE.convertURL(pl.src, null, true);
-						at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'");
-
-						embedHTML = '<script type="text/javascript">' + s + '({' + at + '});</script>';
-					}
-
-					// Insert embed/object chunk
-					chunkBefore = content.substring(0, startPos);
-					chunkAfter = content.substring(endPos);
-					content = chunkBefore + embedHTML + chunkAfter;
-				}
-				break;
-		}
-
-		return content;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node == null)
-			return;
-
-		do {
-			if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) {
-				tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected');
-				return true;
-			}
-		} while ((node = node.parentNode));
-
-		tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal');
-
-		return true;
-	},
-
-	_createImgFromEmbed : function(n, d, cl) {
-		var ne, at, i, ti = '', an;
-
-		ne = d.createElement('img');
-		ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
-		ne.width = tinyMCE.getAttrib(n, 'width');
-		ne.height = tinyMCE.getAttrib(n, 'height');
-		ne.className = cl;
-
-		at = n.attributes;
-		for (i=0; i<at.length; i++) {
-			if (at[i].specified && at[i].nodeValue) {
-				an = at[i].nodeName.toLowerCase();
-
-				if (an == 'src')
-					continue;
-
-				if (an == 'mce_src')
-					an = 'src';
-
-				if (an.indexOf('mce_') == -1 && !new RegExp('^(class|type)$').test(an))
-					ti += an.toLowerCase() + ':\'' + at[i].nodeValue + "',";
-			}
-		}
-
-		ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;
-		ne.title = ti;
-
-		n.parentNode.replaceChild(ne, n);
-	},
-
-	_createImg : function(cl, d, n) {
-		var i, nl, ti = "", an, av, al = new Array();
-
-		ne = d.createElement('img');
-		ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
-		ne.width = tinyMCE.getAttrib(n, 'width');
-		ne.height = tinyMCE.getAttrib(n, 'height');
-		ne.className = cl;
-
-		al.id = tinyMCE.getAttrib(n, 'id');
-		al.name = tinyMCE.getAttrib(n, 'name');
-		al.width = tinyMCE.getAttrib(n, 'width');
-		al.height = tinyMCE.getAttrib(n, 'height');
-		al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor');
-		al.align = tinyMCE.getAttrib(n, 'align');
-		al.class_name = tinyMCE.getAttrib(n, 'mce_class');
-
-		nl = n.getElementsByTagName('div');
-		for (i=0; i<nl.length; i++) {
-			av = tinyMCE.getAttrib(nl[i], 'value');
-			av = av.replace(new RegExp('\\\\', 'g'), '\\\\');
-			av = av.replace(new RegExp('"', 'g'), '\\"');
-			av = av.replace(new RegExp("'", 'g'), "\\'");
-			an = tinyMCE.getAttrib(nl[i], 'name');
-			al[an] = av;
-		}
-
-		if (al.movie) {
-			al.src = al.movie;
-			al.movie = null;
-		}
-
-		for (an in al) {
-			if (al[an] != null && typeof(al[an]) != "function" && al[an] != '')
-				ti += an.toLowerCase() + ':\'' + al[an] + "',";
-		}
-
-		ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;
-		ne.title = ti;
-
-		return ne;
-	},
-
-	_getEmbed : function(cls, cb, mt, p, at) {
-		var h = '', n;
-
-		p.width = at.width ? at.width : p.width;
-		p.height = at.height ? at.height : p.height;
-
-		h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-		h += typeof(p.id) != "undefined" ? ' id="' + p.id + '"' : '';
-		h += typeof(p.name) != "undefined" ? ' name="' + p.name + '"' : '';
-		h += typeof(p.width) != "undefined" ? ' width="' + p.width + '"' : '';
-		h += typeof(p.height) != "undefined" ? ' height="' + p.height + '"' : '';
-		h += typeof(p.align) != "undefined" ? ' align="' + p.align + '"' : '';
-		h += '>';
-
-		for (n in p) {
-			if (typeof(p[n]) != "undefined" && typeof(p[n]) != "function") {
-				h += '<param name="' + n + '" value="' + p[n] + '" />';
-
-				// Add extra url parameter if it's an absolute URL on WMP
-				if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2')
-					h += '<param name="url" value="' + p[n] + '" />';
-			}
-		}
-
-		h += '<embed type="' + mt + '"';
-
-		for (n in p) {
-			if (typeof(p[n]) == "function")
-				continue;
-
-			// Skip url parameter for embed tag on WMP
-			if (!(n == 'url' && mt == 'application/x-mplayer2'))
-				h += ' ' + n + '="' + p[n] + '"';
-		}
-
-		h += '></embed></object>';
-
-		return h;
-	},
-
-	_parseAttributes : function(attribute_string) {
-		var attributeName = "", endChr = '"';
-		var attributeValue = "";
-		var withInName;
-		var withInValue;
-		var attributes = new Array();
-		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
-
-		if (attribute_string == null || attribute_string.length < 2)
-			return null;
-
-		withInName = withInValue = false;
-
-		for (var i=0; i<attribute_string.length; i++) {
-			var chr = attribute_string.charAt(i);
-
-			if ((chr == '"' || chr == "'") && !withInValue) {
-				withInValue = true;
-				endChr = chr;
-			} else if (chr == endChr && withInValue) {
-				withInValue = false;
-
-				var pos = attributeName.lastIndexOf(' ');
-				if (pos != -1)
-					attributeName = attributeName.substring(pos+1);
-
-				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
-
-				attributeName = "";
-				attributeValue = "";
-			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
-				withInName = true;
-
-			if (chr == '=' && withInName)
-				withInName = false;
-
-			if (withInName)
-				attributeName += chr;
-
-			if (withInValue)
-				attributeValue += chr;
-		}
-
-		return attributes;
-	}
-};
-
-tinyMCE.addPlugin("media", TinyMCE_MediaPlugin);
+/**
+ * $Id: editor_plugin_src.js 1037 2009-03-02 16:41:15Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var each = tinymce.each;
+
+	tinymce.create('tinymce.plugins.MediaPlugin', {
+		init : function(ed, url) {
+			var t = this;
+			
+			t.editor = ed;
+			t.url = url;
+
+			function isMediaElm(n) {
+				return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);
+			};
+
+			ed.onPreInit.add(function() {
+				// Force in _value parameter this extra parameter is required for older Opera versions
+				ed.serializer.addRules('param[name|value|_mce_value]');
+			});
+
+			// Register commands
+			ed.addCommand('mceMedia', function() {
+				ed.windowManager.open({
+					file : url + '/media.htm',
+					width : 430 + parseInt(ed.getLang('media.delta_width', 0)),
+					height : 470 + parseInt(ed.getLang('media.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			// Register buttons
+			ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});
+
+			ed.onNodeChange.add(function(ed, cm, n) {
+				cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n));
+			});
+
+			ed.onInit.add(function() {
+				var lo = {
+					mceItemFlash : 'flash',
+					mceItemShockWave : 'shockwave',
+					mceItemWindowsMedia : 'windowsmedia',
+					mceItemQuickTime : 'quicktime',
+					mceItemRealMedia : 'realmedia'
+				};
+
+				ed.selection.onSetContent.add(function() {
+					t._spansToImgs(ed.getBody());
+				});
+
+				ed.selection.onBeforeSetContent.add(t._objectsToSpans, t);
+
+				if (ed.settings.content_css !== false)
+					ed.dom.loadCSS(url + "/css/content.css");
+
+				if (ed.theme.onResolveName) {
+					ed.theme.onResolveName.add(function(th, o) {
+						if (o.name == 'img') {
+							each(lo, function(v, k) {
+								if (ed.dom.hasClass(o.node, k)) {
+									o.name = v;
+									o.title = ed.dom.getAttrib(o.node, 'title');
+									return false;
+								}
+							});
+						}
+					});
+				}
+
+				if (ed && ed.plugins.contextmenu) {
+					ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
+						if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) {
+							m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});
+						}
+					});
+				}
+			});
+
+			ed.onBeforeSetContent.add(t._objectsToSpans, t);
+
+			ed.onSetContent.add(function() {
+				t._spansToImgs(ed.getBody());
+			});
+
+			ed.onPreProcess.add(function(ed, o) {
+				var dom = ed.dom;
+
+				if (o.set) {
+					t._spansToImgs(o.node);
+
+					each(dom.select('IMG', o.node), function(n) {
+						var p;
+
+						if (isMediaElm(n)) {
+							p = t._parse(n.title);
+							dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100));
+							dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100));
+						}
+					});
+				}
+
+				if (o.get) {
+					each(dom.select('IMG', o.node), function(n) {
+						var ci, cb, mt;
+
+						if (ed.getParam('media_use_script')) {
+							if (isMediaElm(n))
+								n.className = n.className.replace(/mceItem/g, 'mceTemp');
+
+							return;
+						}
+
+						switch (n.className) {
+							case 'mceItemFlash':
+								ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
+								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+								mt = 'application/x-shockwave-flash';
+								break;
+
+							case 'mceItemShockWave':
+								ci = '166b1bca-3f9c-11cf-8075-444553540000';
+								cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
+								mt = 'application/x-director';
+								break;
+
+							case 'mceItemWindowsMedia':
+								ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6';
+								cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+								mt = 'application/x-mplayer2';
+								break;
+
+							case 'mceItemQuickTime':
+								ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b';
+								cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
+								mt = 'video/quicktime';
+								break;
+
+							case 'mceItemRealMedia':
+								ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa';
+								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+								mt = 'audio/x-pn-realaudio-plugin';
+								break;
+						}
+
+						if (ci) {
+							dom.replace(t._buildObj({
+								classid : ci,
+								codebase : cb,
+								type : mt
+							}, n), n);
+						}
+					});
+				}
+			});
+
+			ed.onPostProcess.add(function(ed, o) {
+				o.content = o.content.replace(/_mce_value=/g, 'value=');
+			});
+
+			function getAttr(s, n) {
+				n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
+
+				return n ? ed.dom.decode(n[1]) : '';
+			};
+
+			ed.onPostProcess.add(function(ed, o) {
+				if (ed.getParam('media_use_script')) {
+					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
+						var cl = getAttr(im, 'class');
+
+						if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {
+							at = t._parse(getAttr(im, 'title'));
+							at.width = getAttr(im, 'width');
+							at.height = getAttr(im, 'height');
+							im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';
+						}
+
+						return im;
+					});
+				}
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Media',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+		_objectsToSpans : function(ed, o) {
+			var t = this, h = o.content;
+
+			h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) {
+				var o = t._parse(c);
+
+				return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + t.url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />'
+			});
+
+			h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>');
+			h = h.replace(/<embed([^>]*)\/?>/gi, '<span class="mceItemEmbed" $1></span>');
+			h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>');
+			h = h.replace(/<\/(object)([^>]*)>/gi, '</span>');
+			h = h.replace(/<\/embed>/gi, '');
+			h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_mce_value=') + ' class="mceItemParam"></span>'});
+			h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>');
+
+			o.content = h;
+		},
+
+		_buildObj : function(o, n) {
+			var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc;
+			
+			stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash';
+
+			p.width = o.width = dom.getAttrib(n, 'width') || 100;
+			p.height = o.height = dom.getAttrib(n, 'height') || 100;
+
+			if (p.src)
+				p.src = ed.convertURL(p.src, 'src', n);
+
+			if (stc) {
+				ob = dom.create('span', {
+					id : p.id,
+					mce_name : 'object',
+					type : 'application/x-shockwave-flash',
+					data : p.src,
+					style : dom.getAttrib(n, 'style'),
+					width : o.width,
+					height : o.height
+				});
+			} else {
+				ob = dom.create('span', {
+					id : p.id,
+					mce_name : 'object',
+					classid : "clsid:" + o.classid,
+					style : dom.getAttrib(n, 'style'),
+					codebase : o.codebase,
+					width : o.width,
+					height : o.height
+				});
+			}
+
+			each (p, function(v, k) {
+				if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) {
+					// Use url instead of src in IE for Windows media
+					if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url)
+						k = 'url';
+
+					if (v)
+						dom.add(ob, 'span', {mce_name : 'param', name : k, '_mce_value' : v});
+				}
+			});
+
+			if (!stc)
+				dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p));
+
+			return ob;
+		},
+
+		_spansToImgs : function(p) {
+			var t = this, dom = t.editor.dom, im, ci;
+
+			each(dom.select('span', p), function(n) {
+				// Convert object into image
+				if (dom.getAttrib(n, 'class') == 'mceItemObject') {
+					ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, '');
+
+					switch (ci) {
+						case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
+							dom.replace(t._createImg('mceItemFlash', n), n);
+							break;
+
+						case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
+							dom.replace(t._createImg('mceItemShockWave', n), n);
+							break;
+
+						case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
+						case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
+						case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
+							dom.replace(t._createImg('mceItemWindowsMedia', n), n);
+							break;
+
+						case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
+							dom.replace(t._createImg('mceItemQuickTime', n), n);
+							break;
+
+						case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
+							dom.replace(t._createImg('mceItemRealMedia', n), n);
+							break;
+
+						default:
+							dom.replace(t._createImg('mceItemFlash', n), n);
+					}
+					
+					return;
+				}
+
+				// Convert embed into image
+				if (dom.getAttrib(n, 'class') == 'mceItemEmbed') {
+					switch (dom.getAttrib(n, 'type')) {
+						case 'application/x-shockwave-flash':
+							dom.replace(t._createImg('mceItemFlash', n), n);
+							break;
+
+						case 'application/x-director':
+							dom.replace(t._createImg('mceItemShockWave', n), n);
+							break;
+
+						case 'application/x-mplayer2':
+							dom.replace(t._createImg('mceItemWindowsMedia', n), n);
+							break;
+
+						case 'video/quicktime':
+							dom.replace(t._createImg('mceItemQuickTime', n), n);
+							break;
+
+						case 'audio/x-pn-realaudio-plugin':
+							dom.replace(t._createImg('mceItemRealMedia', n), n);
+							break;
+
+						default:
+							dom.replace(t._createImg('mceItemFlash', n), n);
+					}
+				}			
+			});
+		},
+
+		_createImg : function(cl, n) {
+			var im, dom = this.editor.dom, pa = {}, ti = '', args;
+
+			args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality'];	
+
+			// Create image
+			im = dom.create('img', {
+				src : this.url + '/img/trans.gif',
+				width : dom.getAttrib(n, 'width') || 100,
+				height : dom.getAttrib(n, 'height') || 100,
+				style : dom.getAttrib(n, 'style'),
+				'class' : cl
+			});
+
+			// Setup base parameters
+			each(args, function(na) {
+				var v = dom.getAttrib(n, na);
+
+				if (v)
+					pa[na] = v;
+			});
+
+			// Add optional parameters
+			each(dom.select('span', n), function(n) {
+				if (dom.hasClass(n, 'mceItemParam'))
+					pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value');
+			});
+
+			// Use src not movie
+			if (pa.movie) {
+				pa.src = pa.movie;
+				delete pa.movie;
+			}
+
+			// Merge with embed args
+			n = dom.select('.mceItemEmbed', n)[0];
+			if (n) {
+				each(args, function(na) {
+					var v = dom.getAttrib(n, na);
+
+					if (v && !pa[na])
+						pa[na] = v;
+				});
+			}
+
+			delete pa.width;
+			delete pa.height;
+
+			im.title = this._serialize(pa);
+
+			return im;
+		},
+
+		_parse : function(s) {
+			return tinymce.util.JSON.parse('{' + s + '}');
+		},
+
+		_serialize : function(o) {
+			return tinymce.util.JSON.serialize(o).replace(/[{}]/g, '');
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,4 @@
+GIF89a  	 (JnVjz\䂏8Zj}   !   ,       I8?Bh4NQ0ZaEǼԄ  0B@H$
+p0әpHÌ r\  ڙ^5UsNam4CQva*-s
+U
+ %a9.MO8)H ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,46 @@
+CWSa  x|	\S$pr/EO΀  ѐEUEzZj[jjjkov?xowfvvfvf`KsBj)@=%hjjJe6(
+UH|F5PT!(5y$DxLB[
+4SH
+e>aJ PBIB.&䫴>$)sIC=؇ޓ!g}o^ӣzTG)!;tQTPPƏ-Z>C=>A×迨֡幻GJ?쑱"Ӫھ{SVes¶ŋe^cKqy?	5~E^LhQD5޿ˬ<+O߅i8jοMN6,?D~#5d([T;nJ	=DAqfy 9	^)jrp@/oɰ&6ٸT+Tɠj؎A:;0)Yp<\<0Bk*ۥO2FD G0cۥB_HXޕA!A$B,D`(it
+Z[J~ЬَW+EH.,225S*H+*QZTi	(_֠RBoư(EYԐZf0贤h07JQPBcե<dXQkU(L"J02JP΀M WҖ 22>>U0BS~4H]{>Coұ~PeH`P
+R0#,ẠP~O(ӱ¥X4'ҫ*%' <ScJezAE*BqȠ0 9Rtq(**.*3y"u\!GjJ(+jCNDcK{)4<E8T֨r&PE,]R3>vI)zbҨ |:6K>K'iU*"
+ oPFQjЁ:S(eĚ_4egVm }3L+Yc@Q1`|e%^b{:
+nn|r06m>tZ*("DHa0(hO
+
+Tz@*y#[aI {+
+4VQ(׫Kq Du?aZ YP4mO~*,Jl 76F1FG✔Jbcj$HA@TUU?L@#NXDtUZFU(JB@EA=;Fuѱ[TNTKgPdfFir̅JT1(oo(Y+,UU"uŝQ~YAW	Rخ5~ZZTb-.a0 )0L@-QjthEѮ54!Ƞ*uQoH8Q&2V_*(?@o=Д)@cVAgT
+-F2iG)P%3<c3嬫nDcȁQƔ(nPεW8 HHtz0 (U:l &}WZDŊq*8Ȉ	)0ZU>j3*$ӫ2ʊ
+.2ء,+"QPyN:uhαZ QiqqªVBgV\:g~c6^0He<_b-n>QBj`^?!8sjRBjvؖ*..	AxFzP22p5
+nټ3o,V/6~J hD%v~ +
+B H)a+rZZ xXXM!pe I 9'#	@C12;d^
+#$e.H"#	Iyqv&e/\)@=	I"D|HlLZ$7|IԑCDI٦L<4Tˎe'q!5\сmvV_t/sB7,21")!ǽ	2Me-h]+""<E.!x7D#dsy<d~ZO%=6oq+|lږM_u5 dXMD4P'd쟤UiL :0PONrR_  |m@(-$@(b0Xki!. )U Q0ܧ¾(Ncz! *56P.	WrmLm$]j].j;"=,G,!SY{B	x_JI-ZbMjᐝ~ZZT,eИU9_u\c@s5(Wÿm
+9H&*.se,@,/}7	D䐎oXhvoϗ:v]'עHl$Z1A
+v{\ҁSKF*c۾5!KC,Yg<M_ _A |M5NrN$"jlXD("B	vEt`lYDE[[Dm
+
+-F;r2(*F@ -"1<dQ40_0/ð٨'a&`#dY6kTvX*LW*e0UDhFW~"~"xu1w&BvD$ w&]Qr ͇"1R\'N:;/|bg=X,V?5KbhcbGy%6ndN#(v&JٙU\ԪVЗe$ߗN^}wH҃qRitɎS(BfPwI<AZ)#0!HhM3&I$M*WZ%#-# ~hŲe24^SGBMVNYJ镍38OH&%}3MMzC ;7Ӟ2qBL8VPuH MO)K?$K_.$ <unrTup#?Qd|SS D]Nb$b؁b
+$Ϭrpx^kPZF947O'3Rn8Ǭ ѝс7jQ!Sv:`wan-Vx	VY<-y($n"cƅJJ!B3I耝)q,Ԩ5-fRGdK6uѼ:5O[UT53rb}3(Fu6yK-ػ kV]&(`3厲hl#m l.H򺩵e*u<*0?Ώ+iJYg"r>`7tycMǶ@m< W}9!FPMc46-dZa_<aZ7Yѳ#T0'<[ӏB,ZX';2I5e0DU:1 k|97L%jc!gociأ6l|`1wcۃp4ޒ5 SN8F9߃ <sC;tQk,ZࣥPa
+D mΊ\V%X4Qu0Μ$R+Px#4YfV6r1D,K$WM3-%l%R7!T|+Mmٙqm,*CB|B~CnFNpu!"!oeq@ad,S",ق 79'->j'n3 ds((LIw%㥙ԟ0@;AI9|SiEpY4W0QBr["7a%HH1B4+ΈY:2dytw;@E<S\Z0&$9z\X9ɷd\_RI3&*y%#BjjEF\NBu+"=>x:1پ}@q6c4
+8Tm}2"<<$rod/Y_">l+snAQ>>DdDwVD?"_N/|hKqH c)7aV$>#}?5y8NfDXD`Vj&T#nad!aoWP.,,K: d;dnv.H]XL=eSmk/+5LԌxC;+/֝0D_[8qZ81=5a4VihwDHz"OA)XBbm9a'>x[yZ+umH&Ҩ/)Lދ:бZM?1<;.CrOYt2ӓ>G#2\e!DjN`5[V'(XefZ4eSWji\kS
+p
+ti$D_;8 m(q|Nvc&x#\LV mZHݖ3,
+<?2)/Bq
+M8-s"ZSE{wGʪ!	R OL oځ}y'$Z|1E kG_ Hvʩ_E[(H}.7.qEir>(WS^.9ܡ2fOQ!I`R-h&nRZ;4Wk3Auo7czW0	'Li<ZV\nDK
+	!:
+?xT%;rY%>$B$MeNצɠ=tF$6f5kTBҥGmMmDdB Q[۬FīY!fRj6M&`#\	隓	Cvt*|EDPM'ɗ=Po)ePҜ/ΉM$j%dGEl@G` i\xl}k6ペJFe	9<Iث,`1[lߌE74J-@LmeNė94BCU%Jyȼ6Yk8cDUCk\`첀U|q+ʴlv`u⯎@h$̓V=r7չۦ2^7w_[!6En"aE.'Di5-ӕ{&n&ErLI<1Qe%t%?y:dWǗ>@ǥ3i;7e#0femw\7g>FlX<b:73[ KCD"#NPGr K_w#Y3<j@h&7S+mvhh\D1ƿٙ/%K[HLF|IY`fw0$ 85ag>&o| UH_!aQ)/+{:5[6<PpviLtS5'Ĵ\  [\;xI.?%G tӞd?ڇ=瑰V`|T̅⁹WR\ؓBVԒԒYj`qVc
+x2:vK3BB
+zCLKՖx.Hrdg2i4tZda8Ma}9gd̉OdIγ{3f_h^0t`Sqq\"Xk&.dq/[ee?~n!tV|HS?`t$|U/'Z6WXp5c߰`ʂ>zζ^DaLCb$s'L[8^`o*pqi\!!jvߡE35^R=59ྋ"^
+n"İ$1S*좽!hɛVUev}}=rwր?IoF	(n<p'JjѬ΅>rU<qIfOZfA?TB2FR74z:&/Wlp)}Ulό7>_:˳jNV	\t|ɪK:מ+wꮮbu0Og9rJ$}%W5-p܅T8mf4 tDW17_id3Ƣ¦5]\]uQ>kWYwhvRؑK]B {{F5c$SX}pn9E%\\r{nN96ɢu$c\.a?y5]l<$35Ҩaӂ8=8qgmD#dO*1	wY9~5@ #eHAQכkF8} [cQYKHɒ&<?U`30]GO_Hcg*жmNޜlqC#;dDdlG8θvu{\%L;6ŻKՊ!ߤYU9ߺΥJ3&':hns]Z<xc9\>Mg@cZB>kwPq B)mAScN"a;K`+dO|eT~,`3ݾ
+
+ge	?iC6@nPs^UT,$nN]+B{mn@	R-MÍJlBL@L0Y4i*.<Wh2& l˹@+#. 's=	Aghq}nCbnϨzJȺ١5od	@b8nna&]9LwЖ  B$G1\L%@,)5:pe?
+gFN/	yú6dn	d`XEĪ	"+"׃r )-`bw@JB{plhRC /vA+Ĕ~z
+UZZ?QUDnNINw(lLDy@'oĔ0CqN
+<0[	͟Q?4|^bTMƏxBP$%ŠXuEPwfq)Ʉ/cKdN`*8vl~[5g]kgfۆmJpCBKECJ0s&6Efw	(=xُncGD_ݞ%;t d.R~ߋdMm6eN2ϒG˪S/qDnOl#fL tQhV֢as:wI^ {[yGݽ3s#GGV)2  ` 0DzkGl ?wo)?(FhB@۠'-2д
+GKy4!4z
+ FbƗo	 çVfa`\?G\l0;<p☍j$9YK"|ٽiǂ^Cw>ܮrww#A0lN.q0LNkw=VŮNPs1d!,4rb>z1C1L#wPweXJD$;8
+	0;wH%*.m[x",[6խ6%㾌.ʹf>9''N{9lO}gYw]O6'V[3׺ʼ^]_YkFFM5#{O*.NPt}-r6c{_~<4Y\RTD_MCkq	[[̅9g~<xB<-,bEnKK4T7q~?uSP<ZtnjQM~v9>vz~"犤;o"@ޠ+]op"꽶ፄQ{
+v2ySڝin>]mSz|?	>~own5=須VPHW礤)W(<^޶^,^)?_=eOWZy5˥߿zUoZvw{%MGw҃KoG;g¦W=+䚝~[ώkl^9u|Q[QcRVgSV?,C[Ӻ!nG9>i?tZ25W<kfX=|>߻ρ·.KSK+ccOUXPW6sꮑ&]y;OK{XlwxɃwGflc6qBỮsyCcؑ+?y.ԨsC.!k/dйYg
+]ffjp׏7?&D"ܽq|+iN٭lnދUuOg(c6=pf_π}kԭx%]/W3		I=-r^BѰ=;< uI5R~vLWɹNwxV_k=2|ِ;w<~7.U)Vʛ+&NN[7hkNdCo<y@ũc<x.w\Sٮ\i[gvn:sc租uQE1d/[}}ۯ"_j&fަ49'0}^H3C,d A4xA^mnQ){WN(l[FN&:zƐo>9ÉCZwҸ_ȟ\l7|0j×Nd!oGݴ}y;ܚ:s{#NOoV$>&gːSxqpț{y留'ľ_1v)uG`g݉{ϡU].ȍ1qF꥞%k\n޻W~I#9~~SuMaњXg8V^Լ}cc[Ԙ0'wGFnx¸={L~÷.3{7HPgE§ILWݿ+yyٛroonK?.pOq+;n1ו%ΏJ%Ÿt96緝㤮>YY`ەR]^Qk_^w*tUmOq{ޥ?nzXz9s5p5c*8"p8b-XFGesAVŚ}s-]ZwֿtKtǠeuukJg-|KϽ	{oJLslcw:(,oh=Od'O'ްU믟ͨ>#n;uvb0<ysbGnr֣=c>˫٩Q_1~1[fV#!T5~Y~]xڔ'φ|t蓛n虻}fVNh$^_hg}ͱ7&]<)Go-Yjʸ#~#cWh?>gT;?z>om/ԍܔrxm燷%hy[k|MgVnT%2ڧႺ=WM יV_?8Wr^|/jt*kv׆fhԜGʏv4vFh$_b$tt&3xk= rX3!iAkQ4NՁiA+|k%"! 1o/-W֋1\z2+VŁʙr8$- Ä`Wxr/;e[@ GOS־~=ۓ{4z9,]lPrYl7y}na+Uf:LW2dAHΤHOwP.ш"ey׶V:|Vݩaƭ욲dk[W]F5`\t5`GtwqL1DbtC{xvi\E14xdLtafˠxBL]˴B+"#*˼h5H}<ǲ#I=շ %7<BTGb:
+"Oeī9!D! C/~!3U/Nmlص.BWR-7bTtg_
+I)%~~#go ޥIã# lIMˉA}}}0m&;kPW}߄r*HWd(RhQlAtzUq$22T0zfPTL\L4ĥgLqqkУ3B=,'/7ɩwvZ2Qrrьݧg8"F=;c·~ZWTp+V_[m*UL߫+j|_ūj??,r=s]fs_ppBԵיӶt{uiƃΝ/Դ,{kv,ߏy|[ɮ#6$#@uOc˫e}TYnV7i2]ϭqmC{t8o&⯁]/<+ȽὖZBd. <~GA]ˣwJV)+c@~SҞ_|vG/xst"tw3R={}|×}~ve^~uގ?&>gvN1|ϻGnyB<4)~[\|gӓTWW7/'է}}}c*ޞ57Bn%N{pvo}ĉr̷:ooZ{r\I8l}㌇n]sĂG?,G	}dMЍ\W[/ F\1Ž$%pC2V?3|K"#$7ؒD{;(~SQ{[1(^UA@5u@G|P̠FSh^H@^_mtf_Y\gz)0"$.r/qDЧv-DzD{H.Bw2p>ڵkESSq\ze%e9g
+xnBCL:ݹA],FϹk# DkVB8mb#<S	-^
+! uI3t׸D$ElP܀Et3=]g/;SvJ.H0x.fnՖ#
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a   7M6nXbrt|)t!   ,       'Ga1_g<[m\ E`,2  2!@ 4C Y(>iLD8ntYuD#uxz"#7S	,V
+".
+;*? 5;" <_ 		,\"	! ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+GIF89a%   RPM @kű@=;.+)c5xHVusq}$pX Jfff   !   ,    %   '<Cp,DA{NlC;h&P8c#e
+h\gPx"0X:J8 	*14H_$f pf ;1 unC "  pɑhT#Vt΍"j
+Ӄ{"ɏ[k&Pɰ*0-@`!
+9`Ⱥ )V@ 4p! F֍`
+$xCA@7PHQ#=5KP4* ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,2 @@
+GIF89a       2 -Ŝ՟lf wh|Ŝӽ;Ģ̵Y f  $$33..77ll~~꟟                                                            !  + ,       *H#!H:FI]
+i2ՠH:Ωkd:DE`:&i^E$#(G)o	#& %F)#x$*#Go#&"H**#)#{**&*+)E!*!O*))CH)TN*A ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+GIF89a          !   ,       D ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,2 @@
+GIF89a  ? uS-ѩaY0@G愅p+fҎG,LWKqxwwV&^qKNCiiimKx+tnV^K~3fp!BWuWr(a;vTHo9!  ? ,        "
+%lhhD4],G:jͤ\fఄT s5 !*$/	  ;-!&1/<'9;=7+;:78(3.2	"+%?>))'=.,?.,	B	2%3cB(	~ ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,73 @@
+/**
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
+ */
+
+function writeFlash(p) {
+	writeEmbed(
+		'D27CDB6E-AE6D-11cf-96B8-444553540000',
+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+		'application/x-shockwave-flash',
+		p
+	);
+}
+
+function writeShockWave(p) {
+	writeEmbed(
+	'166B1BCA-3F9C-11CF-8075-444553540000',
+	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+	'application/x-director',
+		p
+	);
+}
+
+function writeQuickTime(p) {
+	writeEmbed(
+		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+		'video/quicktime',
+		p
+	);
+}
+
+function writeRealMedia(p) {
+	writeEmbed(
+		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+		'audio/x-pn-realaudio-plugin',
+		p
+	);
+}
+
+function writeWindowsMedia(p) {
+	p.url = p.src;
+	writeEmbed(
+		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
+		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+		'application/x-mplayer2',
+		p
+	);
+}
+
+function writeEmbed(cls, cb, mt, p) {
+	var h = '', n;
+
+	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+	h += '>';
+
+	for (n in p)
+		h += '<param name="' + n + '" value="' + p[n] + '">';
+
+	h += '<embed type="' + mt + '"';
+
+	for (n in p)
+		h += n + '="' + p[n] + '" ';
+
+	h += '></embed></object>';
+
+	document.write(h);
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/media.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/media.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/media.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/js/media.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,630 @@
+tinyMCEPopup.requireLangPack();
+
+var oldWidth, oldHeight, ed, url;
+
+if (url = tinyMCEPopup.getParam("media_external_list_url"))
+	document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+
+function init() {
+	var pl = "", f, val;
+	var type = "flash", fe, i;
+
+	ed = tinyMCEPopup.editor;
+
+	tinyMCEPopup.resizeToInnerSize();
+	f = document.forms[0]
+
+	fe = ed.selection.getNode();
+	if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
+		pl = fe.title;
+
+		switch (ed.dom.getAttrib(fe, 'class')) {
+			case 'mceItemFlash':
+				type = 'flash';
+				break;
+
+			case 'mceItemFlashVideo':
+				type = 'flv';
+				break;
+
+			case 'mceItemShockWave':
+				type = 'shockwave';
+				break;
+
+			case 'mceItemWindowsMedia':
+				type = 'wmp';
+				break;
+
+			case 'mceItemQuickTime':
+				type = 'qt';
+				break;
+
+			case 'mceItemRealMedia':
+				type = 'rmp';
+				break;
+		}
+
+		document.forms[0].insert.value = ed.getLang('update', 'Insert', true); 
+	}
+
+	document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
+	document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+	var html = getMediaListHTML('medialist','src','media','media');
+	if (html == "")
+		document.getElementById("linklistrow").style.display = 'none';
+	else
+		document.getElementById("linklistcontainer").innerHTML = html;
+
+	// Resize some elements
+	if (isVisible('filebrowser'))
+		document.getElementById('src').style.width = '230px';
+
+	// Setup form
+	if (pl != "") {
+		pl = tinyMCEPopup.editor.plugins.media._parse(pl);
+
+		switch (type) {
+			case "flash":
+				setBool(pl, 'flash', 'play');
+				setBool(pl, 'flash', 'loop');
+				setBool(pl, 'flash', 'menu');
+				setBool(pl, 'flash', 'swliveconnect');
+				setStr(pl, 'flash', 'quality');
+				setStr(pl, 'flash', 'scale');
+				setStr(pl, 'flash', 'salign');
+				setStr(pl, 'flash', 'wmode');
+				setStr(pl, 'flash', 'base');
+				setStr(pl, 'flash', 'flashvars');
+			break;
+
+			case "qt":
+				setBool(pl, 'qt', 'loop');
+				setBool(pl, 'qt', 'autoplay');
+				setBool(pl, 'qt', 'cache');
+				setBool(pl, 'qt', 'controller');
+				setBool(pl, 'qt', 'correction');
+				setBool(pl, 'qt', 'enablejavascript');
+				setBool(pl, 'qt', 'kioskmode');
+				setBool(pl, 'qt', 'autohref');
+				setBool(pl, 'qt', 'playeveryframe');
+				setBool(pl, 'qt', 'tarsetcache');
+				setStr(pl, 'qt', 'scale');
+				setStr(pl, 'qt', 'starttime');
+				setStr(pl, 'qt', 'endtime');
+				setStr(pl, 'qt', 'tarset');
+				setStr(pl, 'qt', 'qtsrcchokespeed');
+				setStr(pl, 'qt', 'volume');
+				setStr(pl, 'qt', 'qtsrc');
+			break;
+
+			case "shockwave":
+				setBool(pl, 'shockwave', 'sound');
+				setBool(pl, 'shockwave', 'progress');
+				setBool(pl, 'shockwave', 'autostart');
+				setBool(pl, 'shockwave', 'swliveconnect');
+				setStr(pl, 'shockwave', 'swvolume');
+				setStr(pl, 'shockwave', 'swstretchstyle');
+				setStr(pl, 'shockwave', 'swstretchhalign');
+				setStr(pl, 'shockwave', 'swstretchvalign');
+			break;
+
+			case "wmp":
+				setBool(pl, 'wmp', 'autostart');
+				setBool(pl, 'wmp', 'enabled');
+				setBool(pl, 'wmp', 'enablecontextmenu');
+				setBool(pl, 'wmp', 'fullscreen');
+				setBool(pl, 'wmp', 'invokeurls');
+				setBool(pl, 'wmp', 'mute');
+				setBool(pl, 'wmp', 'stretchtofit');
+				setBool(pl, 'wmp', 'windowlessvideo');
+				setStr(pl, 'wmp', 'balance');
+				setStr(pl, 'wmp', 'baseurl');
+				setStr(pl, 'wmp', 'captioningid');
+				setStr(pl, 'wmp', 'currentmarker');
+				setStr(pl, 'wmp', 'currentposition');
+				setStr(pl, 'wmp', 'defaultframe');
+				setStr(pl, 'wmp', 'playcount');
+				setStr(pl, 'wmp', 'rate');
+				setStr(pl, 'wmp', 'uimode');
+				setStr(pl, 'wmp', 'volume');
+			break;
+
+			case "rmp":
+				setBool(pl, 'rmp', 'autostart');
+				setBool(pl, 'rmp', 'loop');
+				setBool(pl, 'rmp', 'autogotourl');
+				setBool(pl, 'rmp', 'center');
+				setBool(pl, 'rmp', 'imagestatus');
+				setBool(pl, 'rmp', 'maintainaspect');
+				setBool(pl, 'rmp', 'nojava');
+				setBool(pl, 'rmp', 'prefetch');
+				setBool(pl, 'rmp', 'shuffle');
+				setStr(pl, 'rmp', 'console');
+				setStr(pl, 'rmp', 'controls');
+				setStr(pl, 'rmp', 'numloop');
+				setStr(pl, 'rmp', 'scriptcallbacks');
+			break;
+		}
+
+		setStr(pl, null, 'src');
+		setStr(pl, null, 'id');
+		setStr(pl, null, 'name');
+		setStr(pl, null, 'vspace');
+		setStr(pl, null, 'hspace');
+		setStr(pl, null, 'bgcolor');
+		setStr(pl, null, 'align');
+		setStr(pl, null, 'width');
+		setStr(pl, null, 'height');
+
+		if ((val = ed.dom.getAttrib(fe, "width")) != "")
+			pl.width = f.width.value = val;
+
+		if ((val = ed.dom.getAttrib(fe, "height")) != "")
+			pl.height = f.height.value = val;
+
+		oldWidth = pl.width ? parseInt(pl.width) : 0;
+		oldHeight = pl.height ? parseInt(pl.height) : 0;
+	} else
+		oldWidth = oldHeight = 0;
+
+	selectByValue(f, 'media_type', type);
+	changedType(type);
+	updateColor('bgcolor_pick', 'bgcolor');
+
+	TinyMCE_EditableSelects.init();
+	generatePreview();
+}
+
+function insertMedia() {
+	var fe, f = document.forms[0], h;
+
+	tinyMCEPopup.restoreSelection();
+
+	if (!AutoValidator.validate(f)) {
+		tinyMCEPopup.alert(ed.getLang('invalid_data'));
+		return false;
+	}
+
+	f.width.value = f.width.value == "" ? 100 : f.width.value;
+	f.height.value = f.height.value == "" ? 100 : f.height.value;
+
+	fe = ed.selection.getNode();
+	if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
+		switch (f.media_type.options[f.media_type.selectedIndex].value) {
+			case "flash":
+				fe.className = "mceItemFlash";
+				break;
+
+			case "flv":
+				fe.className = "mceItemFlashVideo";
+				break;
+
+			case "shockwave":
+				fe.className = "mceItemShockWave";
+				break;
+
+			case "qt":
+				fe.className = "mceItemQuickTime";
+				break;
+
+			case "wmp":
+				fe.className = "mceItemWindowsMedia";
+				break;
+
+			case "rmp":
+				fe.className = "mceItemRealMedia";
+				break;
+		}
+
+		if (fe.width != f.width.value || fe.height != f.height.value)
+			ed.execCommand('mceRepaint');
+
+		fe.title = serializeParameters();
+		fe.width = f.width.value;
+		fe.height = f.height.value;
+		fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
+		fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
+		fe.align = f.align.options[f.align.selectedIndex].value;
+	} else {
+		h = '<img src="' + tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;
+
+		switch (f.media_type.options[f.media_type.selectedIndex].value) {
+			case "flash":
+				h += ' class="mceItemFlash"';
+				break;
+
+			case "flv":
+				h += ' class="mceItemFlashVideo"';
+				break;
+
+			case "shockwave":
+				h += ' class="mceItemShockWave"';
+				break;
+
+			case "qt":
+				h += ' class="mceItemQuickTime"';
+				break;
+
+			case "wmp":
+				h += ' class="mceItemWindowsMedia"';
+				break;
+
+			case "rmp":
+				h += ' class="mceItemRealMedia"';
+				break;
+		}
+
+		h += ' title="' + serializeParameters() + '"';
+		h += ' width="' + f.width.value + '"';
+		h += ' height="' + f.height.value + '"';
+		h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
+
+		h += ' />';
+
+		ed.execCommand('mceInsertContent', false, h);
+	}
+
+	tinyMCEPopup.close();
+}
+
+function updatePreview() {
+	var f = document.forms[0], type;
+
+	f.width.value = f.width.value || '320';
+	f.height.value = f.height.value || '240';
+
+	type = getType(f.src.value);
+	selectByValue(f, 'media_type', type);
+	changedType(type);
+	generatePreview();
+}
+
+function getMediaListHTML() {
+	if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
+		var html = "";
+
+		html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">';
+		html += '<option value="">---</option>';
+
+		for (var i=0; i<tinyMCEMediaList.length; i++)
+			html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
+
+		html += '</select>';
+
+		return html;
+	}
+
+	return "";
+}
+
+function getType(v) {
+	var fo, i, c, el, x, f = document.forms[0];
+
+	fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');
+
+	// YouTube
+	if (v.match(/watch\?v=(.+)(.*)/)) {
+		f.width.value = '425';
+		f.height.value = '350';
+		f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];
+		return 'flash';
+	}
+
+	// Google video
+	if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {
+		f.width.value = '425';
+		f.height.value = '326';
+		f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
+		return 'flash';
+	}
+
+	for (i=0; i<fo.length; i++) {
+		c = fo[i].split('=');
+
+		el = c[1].split(',');
+		for (x=0; x<el.length; x++)
+		if (v.indexOf('.' + el[x]) != -1)
+			return c[0];
+	}
+
+	return null;
+}
+
+function switchType(v) {
+	var t = getType(v), d = document, f = d.forms[0];
+
+	if (!t)
+		return;
+
+	selectByValue(d.forms[0], 'media_type', t);
+	changedType(t);
+
+	// Update qtsrc also
+	if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
+		alert(ed.getLang("media_qt_stream_warn"));
+
+		if (f.qt_qtsrc.value == '')
+			f.qt_qtsrc.value = f.src.value;
+	}
+}
+
+function changedType(t) {
+	var d = document;
+
+	d.getElementById('flash_options').style.display = 'none';
+	d.getElementById('flv_options').style.display = 'none';
+	d.getElementById('qt_options').style.display = 'none';
+	d.getElementById('shockwave_options').style.display = 'none';
+	d.getElementById('wmp_options').style.display = 'none';
+	d.getElementById('rmp_options').style.display = 'none';
+
+	if (t)
+		d.getElementById(t + '_options').style.display = 'block';
+}
+
+function serializeParameters() {
+	var d = document, f = d.forms[0], s = '';
+
+	switch (f.media_type.options[f.media_type.selectedIndex].value) {
+		case "flash":
+			s += getBool('flash', 'play', true);
+			s += getBool('flash', 'loop', true);
+			s += getBool('flash', 'menu', true);
+			s += getBool('flash', 'swliveconnect', false);
+			s += getStr('flash', 'quality');
+			s += getStr('flash', 'scale');
+			s += getStr('flash', 'salign');
+			s += getStr('flash', 'wmode');
+			s += getStr('flash', 'base');
+			s += getStr('flash', 'flashvars');
+		break;
+
+		case "qt":
+			s += getBool('qt', 'loop', false);
+			s += getBool('qt', 'autoplay', true);
+			s += getBool('qt', 'cache', false);
+			s += getBool('qt', 'controller', true);
+			s += getBool('qt', 'correction', false, 'none', 'full');
+			s += getBool('qt', 'enablejavascript', false);
+			s += getBool('qt', 'kioskmode', false);
+			s += getBool('qt', 'autohref', false);
+			s += getBool('qt', 'playeveryframe', false);
+			s += getBool('qt', 'targetcache', false);
+			s += getStr('qt', 'scale');
+			s += getStr('qt', 'starttime');
+			s += getStr('qt', 'endtime');
+			s += getStr('qt', 'target');
+			s += getStr('qt', 'qtsrcchokespeed');
+			s += getStr('qt', 'volume');
+			s += getStr('qt', 'qtsrc');
+		break;
+
+		case "shockwave":
+			s += getBool('shockwave', 'sound');
+			s += getBool('shockwave', 'progress');
+			s += getBool('shockwave', 'autostart');
+			s += getBool('shockwave', 'swliveconnect');
+			s += getStr('shockwave', 'swvolume');
+			s += getStr('shockwave', 'swstretchstyle');
+			s += getStr('shockwave', 'swstretchhalign');
+			s += getStr('shockwave', 'swstretchvalign');
+		break;
+
+		case "wmp":
+			s += getBool('wmp', 'autostart', true);
+			s += getBool('wmp', 'enabled', false);
+			s += getBool('wmp', 'enablecontextmenu', true);
+			s += getBool('wmp', 'fullscreen', false);
+			s += getBool('wmp', 'invokeurls', true);
+			s += getBool('wmp', 'mute', false);
+			s += getBool('wmp', 'stretchtofit', false);
+			s += getBool('wmp', 'windowlessvideo', false);
+			s += getStr('wmp', 'balance');
+			s += getStr('wmp', 'baseurl');
+			s += getStr('wmp', 'captioningid');
+			s += getStr('wmp', 'currentmarker');
+			s += getStr('wmp', 'currentposition');
+			s += getStr('wmp', 'defaultframe');
+			s += getStr('wmp', 'playcount');
+			s += getStr('wmp', 'rate');
+			s += getStr('wmp', 'uimode');
+			s += getStr('wmp', 'volume');
+		break;
+
+		case "rmp":
+			s += getBool('rmp', 'autostart', false);
+			s += getBool('rmp', 'loop', false);
+			s += getBool('rmp', 'autogotourl', true);
+			s += getBool('rmp', 'center', false);
+			s += getBool('rmp', 'imagestatus', true);
+			s += getBool('rmp', 'maintainaspect', false);
+			s += getBool('rmp', 'nojava', false);
+			s += getBool('rmp', 'prefetch', false);
+			s += getBool('rmp', 'shuffle', false);
+			s += getStr('rmp', 'console');
+			s += getStr('rmp', 'controls');
+			s += getStr('rmp', 'numloop');
+			s += getStr('rmp', 'scriptcallbacks');
+		break;
+	}
+
+	s += getStr(null, 'id');
+	s += getStr(null, 'name');
+	s += getStr(null, 'src');
+	s += getStr(null, 'align');
+	s += getStr(null, 'bgcolor');
+	s += getInt(null, 'vspace');
+	s += getInt(null, 'hspace');
+	s += getStr(null, 'width');
+	s += getStr(null, 'height');
+
+	s = s.length > 0 ? s.substring(0, s.length - 1) : s;
+
+	return s;
+}
+
+function setBool(pl, p, n) {
+	if (typeof(pl[n]) == "undefined")
+		return;
+
+	document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false';
+}
+
+function setStr(pl, p, n) {
+	var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
+
+	if (typeof(pl[n]) == "undefined")
+		return;
+
+	if (e.type == "text")
+		e.value = pl[n];
+	else
+		selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
+}
+
+function getBool(p, n, d, tv, fv) {
+	var v = document.forms[0].elements[p + "_" + n].checked;
+
+	tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
+	fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
+
+	return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',");
+}
+
+function getStr(p, n, d) {
+	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
+	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
+
+	if (n == 'src')
+		v = tinyMCEPopup.editor.convertURL(v, 'src', null);
+
+	return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
+}
+
+function getInt(p, n, d) {
+	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
+	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
+
+	return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
+}
+
+function jsEncode(s) {
+	s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
+	s = s.replace(new RegExp('"', 'g'), '\\"');
+	s = s.replace(new RegExp("'", 'g'), "\\'");
+
+	return s;
+}
+
+function generatePreview(c) {
+	var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
+
+	p.innerHTML = '<!-- x --->';
+
+	nw = parseInt(f.width.value);
+	nh = parseInt(f.height.value);
+
+	if (f.width.value != "" && f.height.value != "") {
+		if (f.constrain.checked) {
+			if (c == 'width' && oldWidth != 0) {
+				wp = nw / oldWidth;
+				nh = Math.round(wp * nh);
+				f.height.value = nh;
+			} else if (c == 'height' && oldHeight != 0) {
+				hp = nh / oldHeight;
+				nw = Math.round(hp * nw);
+				f.width.value = nw;
+			}
+		}
+	}
+
+	if (f.width.value != "")
+		oldWidth = nw;
+
+	if (f.height.value != "")
+		oldHeight = nh;
+
+	// After constrain
+	pl = serializeParameters();
+
+	switch (f.media_type.options[f.media_type.selectedIndex].value) {
+		case "flash":
+			cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+			type = 'application/x-shockwave-flash';
+			break;
+
+		case "shockwave":
+			cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
+			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
+			type = 'application/x-director';
+			break;
+
+		case "qt":
+			cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
+			codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
+			type = 'video/quicktime';
+			break;
+
+		case "wmp":
+			cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
+			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+			type = 'application/x-mplayer2';
+			break;
+
+		case "rmp":
+			cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
+			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+			type = 'audio/x-pn-realaudio-plugin';
+			break;
+	}
+
+	if (pl == '') {
+		p.innerHTML = '';
+		return;
+	}
+
+	pl = tinyMCEPopup.editor.plugins.media._parse(pl);
+
+	if (!pl.src) {
+		p.innerHTML = '';
+		return;
+	}
+
+	pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);
+	pl.width = !pl.width ? 100 : pl.width;
+	pl.height = !pl.height ? 100 : pl.height;
+	pl.id = !pl.id ? 'obj' : pl.id;
+	pl.name = !pl.name ? 'eobj' : pl.name;
+	pl.align = !pl.align ? '' : pl.align;
+
+	// Avoid annoying warning about insecure items
+	if (!tinymce.isIE || document.location.protocol != 'https:') {
+		h += '<object classid="' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
+
+		for (n in pl) {
+			h += '<param name="' + n + '" value="' + pl[n] + '">';
+
+			// Add extra url parameter if it's an absolute URL
+			if (n == 'src' && pl[n].indexOf('://') != -1)
+				h += '<param name="url" value="' + pl[n] + '" />';
+		}
+	}
+
+	h += '<embed type="' + type + '" ';
+
+	for (n in pl)
+		h += n + '="' + pl[n] + '" ';
+
+	h += '></embed>';
+
+	// Avoid annoying warning about insecure items
+	if (!tinymce.isIE || document.location.protocol != 'https:')
+		h += '</object>';
+
+	p.innerHTML = "<!-- x --->" + h;
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,103 @@
+tinyMCE.addI18n('ca.media_dlg',{
+title:"Insereix / edita mitj\u00E0 encastat",
+general:"General",
+advanced:"Avan\u00E7at",
+file:"Fitxer/URL",
+list:"Llista",
+size:"Dimensions",
+preview:"Vista pr\u00E8via",
+constrain_proportions:"Constreny les proporcions",
+type:"Tipus",
+id:"Id",
+name:"Nom",
+class_name:"Classe",
+vspace:"Espaiat V",
+hspace:"Espaiat H",
+play:"Auto reprodueix",
+loop:"Cicle",
+menu:"Mostra el men\u00FA",
+quality:"Qualitat",
+scale:"Escala",
+align:"Alineaci\u00F3",
+salign:"Al\u00EDniaci\u00F3",
+wmode:"Mode de finestra",
+bgcolor:"Fons",
+base:"Base",
+flashvars:"Variables Flash",
+liveconnect:"Connexi\u00F3 directa SW",
+autohref:"AutoHREF",
+cache:"Cau",
+hidden:"Ocult",
+controller:"Controlador",
+kioskmode:"Mode kiosk",
+playeveryframe:"Reprodueix cada marc",
+targetcache:"Cau objectiu",
+correction:"Sense correcci\u00F3",
+enablejavascript:"Activa JavaScript",
+starttime:"Hora inicial",
+endtime:"Hora final",
+href:"Href",
+qtsrcchokespeed:"restringeix la velocitat",
+target:"Objectiu",
+volume:"Volum",
+autostart:"Auto inici",
+enabled:"Activat",
+fullscreen:"Pantalla completa",
+invokeurls:"Invoca URLs",
+mute:"Sense so",
+stretchtofit:"Estira per encaixar",
+windowlessvideo:"V\u00EDdeo sense finestra",
+balance:"Balan\u00E7",
+baseurl:"URL base",
+captioningid:"Id del t\u00EDtol",
+currentmarker:"Marcador actual",
+currentposition:"Posici\u00F3 actual",
+defaultframe:"Marc per defecte",
+playcount:"Recompte de reproduccions",
+rate:"Ritme",
+uimode:"Mode de la UI",
+flash_options:"Opcions Flash",
+qt_options:"Opcions Quicktime",
+wmp_options:"Opcions Windows Media Player",
+rmp_options:"Opcions Real Meedia Player",
+shockwave_options:"Opcions Shockwave",
+autogotourl:"URL Auto goto",
+center:"Centrat",
+imagestatus:"Estat de la imatge",
+maintainaspect:"Matingues l'aspecte",
+nojava:"Sense java",
+prefetch:"Precerca",
+shuffle:"Barreja",
+console:"Consola",
+numloop:"N\u00BA de cicles",
+controls:"Controls",
+scriptcallbacks:"Retorns a script",
+swstretchstyle:"Estil d'estirament",
+swstretchhalign:"Estirament de l'alineaci\u00F3 H",
+swstretchvalign:"Estirament de l'alineaci\u00F3 V",
+sound:"So",
+progress:"Progr\u00E9s",
+qtsrc:"Font QT",
+qt_stream_warn:"Els recursos rtsp stream no s'han d'afegir al camp Font QT sota la pestanya Avan\u00E7ada.\nhas d'afegir tamb\u00E9 una versi\u00F3 no-stream al camp Font.",
+align_top:"Dalt",
+align_right:"Dreta",
+align_bottom:"Baix",
+align_left:"Esquerra",
+align_center:"Centrat",
+align_top_left:"Dalt esquerra",
+align_top_right:"Dalt dreta",
+align_bottom_left:"Baix esquerra",
+align_bottom_right:"Baix dreta",
+flv_options:"Opcions de v\u00EDdeo Flash",
+flv_scalemode:"Mode d'escala",
+flv_buffer:"Buffer",
+flv_startimage:"Imatge inicial",
+flv_starttime:"Hora inicial",
+flv_defaultvolume:"Volum per defecte",
+flv_hiddengui:"GUI Amagada",
+flv_autostart:"Auto inici",
+flv_loop:"Cicle",
+flv_showscalemodes:"Mostra els modes d'escala",
+flv_smoothvideo:"V\u00EDdeo suau",
+flv_jscallback:"Retorn JS"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,103 @@
+tinyMCE.addI18n('en.media_dlg',{
+title:"Insert / edit embedded media",
+general:"General",
+advanced:"Advanced",
+file:"File/URL",
+list:"List",
+size:"Dimensions",
+preview:"Preview",
+constrain_proportions:"Constrain proportions",
+type:"Type",
+id:"Id",
+name:"Name",
+class_name:"Class",
+vspace:"V-Space",
+hspace:"H-Space",
+play:"Auto play",
+loop:"Loop",
+menu:"Show menu",
+quality:"Quality",
+scale:"Scale",
+align:"Align",
+salign:"SAlign",
+wmode:"WMode",
+bgcolor:"Background",
+base:"Base",
+flashvars:"Flashvars",
+liveconnect:"SWLiveConnect",
+autohref:"AutoHREF",
+cache:"Cache",
+hidden:"Hidden",
+controller:"Controller",
+kioskmode:"Kiosk mode",
+playeveryframe:"Play every frame",
+targetcache:"Target cache",
+correction:"No correction",
+enablejavascript:"Enable JavaScript",
+starttime:"Start time",
+endtime:"End time",
+href:"Href",
+qtsrcchokespeed:"Choke speed",
+target:"Target",
+volume:"Volume",
+autostart:"Auto start",
+enabled:"Enabled",
+fullscreen:"Fullscreen",
+invokeurls:"Invoke URLs",
+mute:"Mute",
+stretchtofit:"Stretch to fit",
+windowlessvideo:"Windowless video",
+balance:"Balance",
+baseurl:"Base URL",
+captioningid:"Captioning id",
+currentmarker:"Current marker",
+currentposition:"Current position",
+defaultframe:"Default frame",
+playcount:"Play count",
+rate:"Rate",
+uimode:"UI Mode",
+flash_options:"Flash options",
+qt_options:"Quicktime options",
+wmp_options:"Windows media player options",
+rmp_options:"Real media player options",
+shockwave_options:"Shockwave options",
+autogotourl:"Auto goto URL",
+center:"Center",
+imagestatus:"Image status",
+maintainaspect:"Maintain aspect",
+nojava:"No java",
+prefetch:"Prefetch",
+shuffle:"Shuffle",
+console:"Console",
+numloop:"Num loops",
+controls:"Controls",
+scriptcallbacks:"Script callbacks",
+swstretchstyle:"Stretch style",
+swstretchhalign:"Stretch H-Align",
+swstretchvalign:"Stretch V-Align",
+sound:"Sound",
+progress:"Progress",
+qtsrc:"QT Src",
+qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",
+align_top:"Top",
+align_right:"Right",
+align_bottom:"Bottom",
+align_left:"Left",
+align_center:"Center",
+align_top_left:"Top left",
+align_top_right:"Top right",
+align_bottom_left:"Bottom left",
+align_bottom_right:"Bottom right",
+flv_options:"Flash video options",
+flv_scalemode:"Scale mode",
+flv_buffer:"Buffer",
+flv_startimage:"Start image",
+flv_starttime:"Start time",
+flv_defaultvolume:"Default volumne",
+flv_hiddengui:"Hidden GUI",
+flv_autostart:"Auto start",
+flv_loop:"Loop",
+flv_showscalemodes:"Show scale modes",
+flv_smoothvideo:"Smooth video",
+flv_jscallback:"JS Callback"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,103 @@
+tinyMCE.addI18n('es.media_dlg',{
+title:"Insertar/editar medio embebido",
+general:"General",
+advanced:"Avanzado",
+file:"Archivo/URL",
+list:"Lista",
+size:"Dimensiones",
+preview:"Vista Previa",
+constrain_proportions:"Bloquear relaci\u00F3n de aspecto",
+type:"Tipo",
+id:"Id",
+name:"Nombre",
+class_name:"Clase",
+vspace:"V-Space",
+hspace:"H-Space",
+play:"Comienzo Autom\u00E1tico",
+loop:"Repetitivo",
+menu:"Mostrar Men\u00FA",
+quality:"Calidad",
+scale:"Scale",
+align:"Alineaci\u00F3n",
+salign:"SAlign",
+wmode:"WMode",
+bgcolor:"Fondo",
+base:"Base",
+flashvars:"Flashvars",
+liveconnect:"SWLiveConnect",
+autohref:"AutoHREF",
+cache:"Cach\u00E9",
+hidden:"Hidden",
+controller:"Controller",
+kioskmode:"Kiosk mode",
+playeveryframe:"Reproducir todo los frames",
+targetcache:"Target cache",
+correction:"Sin correci\u00F3n",
+enablejavascript:"Habilitar JavaScript",
+starttime:"Inicio",
+endtime:"Fin",
+href:"Href",
+qtsrcchokespeed:"Vel. de choque",
+target:"Target",
+volume:"Volumen",
+autostart:"Comienzo Autom\u00E1tico",
+enabled:"Habilitado",
+fullscreen:"Pantalla Completa",
+invokeurls:"Invocar URLs",
+mute:"Silencio",
+stretchtofit:"Estirar para ajustar",
+windowlessvideo:"Video sin ventana",
+balance:"Balance",
+baseurl:"URL Base",
+captioningid:"Captioning id",
+currentmarker:"Marcador actual",
+currentposition:"Posici\u00F3n actual",
+defaultframe:"Frame predet.",
+playcount:"Cuantas reproducciones",
+rate:"Ratio",
+uimode:"Modo UI",
+flash_options:"Opciones Flash",
+qt_options:"Opciones Quicktime",
+wmp_options:"Opciones Windows media player",
+rmp_options:"Opciones Real media player",
+shockwave_options:"Opciones Shockwave",
+autogotourl:"Ir a URL autom\u00E1t.",
+center:"Centrado",
+imagestatus:"Estado de imagen",
+maintainaspect:"Mantener aspecto",
+nojava:"No java",
+prefetch:"Preb\u00FAsqueda",
+shuffle:"Aleatorio",
+console:"Consola",
+numloop:"N\u00FAm. repeticiones",
+controls:"Controles",
+scriptcallbacks:"Script callbacks",
+swstretchstyle:"Estilo estiramiento",
+swstretchhalign:"Alin. H. Estiramiento",
+swstretchvalign:"Alin. V. Estiramiento",
+sound:"Sonido",
+progress:"Progreso",
+qtsrc:"QT Src",
+qt_stream_warn:"Los recursos rtsp de Streaming deber\u00EDan a\u00F1adirse en el campo QT Src de la pesta\u00F1a avanzada.\nAdem\u00E1s deber\u00EDa a\u00F1adir una versi\u00F3n no Streaming en el campo Src.",
+align_top:"Arriba",
+align_right:"Derecha",
+align_bottom:"Debajo",
+align_left:"Izquierda",
+align_center:"Centrado",
+align_top_left:"Arriba Izda.",
+align_top_right:"Arriba Dcha.",
+align_bottom_left:"Debajo Izda.",
+align_bottom_right:"Debajo Dcha.",
+flv_options:"Opciones Video Flash",
+flv_scalemode:"Modo escalado",
+flv_buffer:"Buffer",
+flv_startimage:"Imagen inicio",
+flv_starttime:"Tiempo inicio",
+flv_defaultvolume:"Volumen predet.",
+flv_hiddengui:"Ocultar GUI",
+flv_autostart:"Inicio auto.",
+flv_loop:"Repetitivo",
+flv_showscalemodes:"Mostrar modos escala",
+flv_smoothvideo:"Video suave",
+flv_jscallback:"JS Callback"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es.js	2006-08-06 22:51:00.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,85 +0,0 @@
-// UK lang variables
-
-tinyMCE.addToLang('media',{
-title : 'Insert / edit embedded media',
-desc : 'Insert / edit embedded media',
-general : 'General',
-advanced : 'Advanced',
-file : 'File',
-list : 'List',
-size : 'Dimensions',
-preview : 'Preview',
-constrain_proportions : 'Constrain proportions',
-type : 'Type',
-id : 'Id',
-name : 'Name',
-class_name : 'Class',
-vspace : 'V-Space',
-hspace : 'H-Space',
-play : 'Auto play',
-loop : 'Loop',
-menu : 'Show menu',
-quality : 'Quality',
-scale : 'Scale',
-align : 'Align',
-salign : 'SAlign',
-wmode : 'WMode',
-bgcolor : 'Background',
-base : 'Base',
-flashvars : 'Flashvars',
-liveconnect : 'SWLiveConnect',
-autohref : 'AutoHREF',
-cache : 'Cache',
-hidden : 'Hidden',
-controller : 'Controller',
-kioskmode : 'Kiosk mode',
-playeveryframe : 'Play every frame',
-targetcache : 'Target cache',
-correction : 'No correction',
-enablejavascript : 'Enable JavaScript',
-starttime : 'Start time',
-endtime : 'End time',
-href : 'Href',
-qtsrcchokespeed : 'Choke speed',
-target : 'Target',
-volume : 'Volume',
-autostart : 'Auto start',
-enabled : 'Enabled',
-fullscreen : 'Fullscreen',
-invokeurls : 'Invoke URLs',
-mute : 'Mute',
-stretchtofit : 'Stretch to fit',
-windowlessvideo : 'Windowless video',
-balance : 'Balance',
-baseurl : 'Base URL',
-captioningid : 'Captioning id',
-currentmarker : 'Current marker',
-currentposition : 'Current position',
-defaultframe : 'Default frame',
-playcount : 'Play count',
-rate : 'Rate',
-uimode : 'UI Mode',
-flash_options : 'Flash options',
-qt_options : 'Quicktime options',
-wmp_options : 'Windows media player options',
-rmp_options : 'Real media player options',
-shockwave_options : 'Shockwave options',
-autogotourl : 'Auto goto URL',
-center : 'Center',
-imagestatus : 'Image status',
-maintainaspect : 'Maintain aspect',
-nojava : 'No java',
-prefetch : 'Prefetch',
-shuffle : 'Shuffle',
-console : 'Console',
-numloop : 'Num loops',
-controls : 'Controls',
-scriptcallbacks : 'Script callbacks',
-swstretchstyle : 'Stretch style',
-swstretchhalign : 'Stretch H-Align',
-swstretchvalign : 'Stretch V-Align',
-sound : 'Sound',
-progress : 'Progress',
-qtsrc : 'QT Src',
-qt_stream_warn : 'Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/media.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/media.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/media.htm	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/media/media.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,102 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_media_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/media.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<title>{#media_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/media.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/validate.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
 	<link href="css/media.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body style="display: none">
     <form onsubmit="insertMedia();return false;" action="#">
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{$lang_media_general}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_media_advanced}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
 				<fieldset>
-					<legend>{$lang_media_general}</legend>
+					<legend>{#media_dlg.general}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 							<tr>
-								<td><label for="media_type">{$lang_media_type}</label></td>
+								<td><label for="media_type">{#media_dlg.type}</label></td>
 								<td>
 									<select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">
 										<option value="flash">Flash</option>
+										<!-- <option value="flv">Flash video (FLV)</option> -->
 										<option value="qt">Quicktime</option>
-										<option value="shockwave">Shockware</option>
+										<option value="shockwave">Shockwave</option>
 										<option value="wmp">Windows Media</option>
 										<option value="rmp">Real Media</option>
 									</select>
 								</td>
 							</tr>
 							<tr>
-							<td><label for="src">{$lang_media_file}</label></td>
+							<td><label for="src">{#media_dlg.file}</label></td>
 							  <td>
 									<table border="0" cellspacing="0" cellpadding="0">
 									  <tr>
-										<td><input id="src" name="src" type="text" value="" onchange="switchType(this.value);generatePreview();" /></td>
+										<td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="switchType(this.value);generatePreview();" /></td>
 										<td id="filebrowsercontainer">&nbsp;</td>
 									  </tr>
 									</table>
 								</td>
 							</tr>
 							<tr id="linklistrow">
-								<td><label for="linklist">{$lang_media_list}</label></td>
-								<td id="linklistcontainer">&nbsp;</td>
+								<td><label for="linklist">{#media_dlg.list}</label></td>
+								<td id="linklistcontainer"><select id="linklist"><option value=""></option></select></td>
 							</tr>
 							<tr>
-								<td><label for="width">{$lang_media_size}</label></td>
+								<td><label for="width">{#media_dlg.size}</label></td>
 								<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size"  onchange="generatePreview('height');" /></td>
-										<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
-										<td><label id="constrainlabel" for="constrain">{$lang_media_constrain_proportions}</label></td>
-									</tr>
-								</table>
+									<table border="0" cellpadding="0" cellspacing="0">
+										<tr>
+											<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size"  onchange="generatePreview('height');" /></td>
+											<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
+											<td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>
+										</tr>
+									</table>
+								</td>
 							</tr>
 					</table>
 				</fieldset>
 
 				<fieldset>
-					<legend>{$lang_media_preview}</legend>
+					<legend>{#media_dlg.preview}</legend>
 					<div id="prev"></div>
 				</fieldset>
 			</div>
 
 			<div id="advanced_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_media_advanced}</legend>
+					<legend>{#media_dlg.advanced}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0" width="100%">
 						<tr>
-							<td><label for="id">{$lang_media_id}</label></td>
+							<td><label for="id">{#media_dlg.id}</label></td>
 							<td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
-							<td><label for="name">{$lang_media_name}</label></td>
+							<td><label for="name">{#media_dlg.name}</label></td>
 							<td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="align">{$lang_media_align}</label></td>
+							<td><label for="align">{#media_dlg.align}</label></td>
 							<td>
 								<select id="align" name="align" onchange="generatePreview();">
-									<option value="">{$lang_not_set}</option> 
-									<option value="top">{$lang_media_align_top}</option>
-									<option value="right">{$lang_media_align_right}</option>
-									<option value="bottom">{$lang_media_align_bottom}</option>
-									<option value="left">{$lang_media_align_left}</option>
+									<option value="">{#not_set}</option> 
+									<option value="top">{#media_dlg.align_top}</option>
+									<option value="right">{#media_dlg.align_right}</option>
+									<option value="bottom">{#media_dlg.align_bottom}</option>
+									<option value="left">{#media_dlg.align_left}</option>
 								</select>
 							</td>
 
-							<td><label for="bgcolor">{$lang_media_bgcolor}</label></td>
+							<td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -108,23 +110,23 @@
 						</tr>
 
 						<tr>
-							<td><label for="vspace">{$lang_media_vspace}</label></td>
+							<td><label for="vspace">{#media_dlg.vspace}</label></td>
 							<td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
-							<td><label for="hspace">{$lang_media_hspace}</label></td>
+							<td><label for="hspace">{#media_dlg.hspace}</label></td>
 							<td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
 						</tr>
 					</table>
 				</fieldset>
 
 				<fieldset id="flash_options">
-					<legend>{$lang_media_flash_options}</legend>
+					<legend>{#media_dlg.flash_options}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td><label for="flash_quality">{$lang_media_quality}</label></td>
+							<td><label for="flash_quality">{#media_dlg.quality}</label></td>
 							<td>
 								<select id="flash_quality" name="flash_quality" onchange="generatePreview();">
-									<option value="">{$lang_not_set}</option> 
+									<option value="">{#not_set}</option> 
 									<option value="high">high</option>
 									<option value="low">low</option>
 									<option value="autolow">autolow</option>
@@ -133,40 +135,41 @@
 								</select>
 							</td>
 
-							<td><label for="flash_scale">{$lang_media_scale}</label></td>
+							<td><label for="flash_scale">{#media_dlg.scale}</label></td>
 							<td>
 								<select id="flash_scale" name="flash_scale" onchange="generatePreview();">
-									<option value="">{$lang_not_set}</option> 
+									<option value="">{#not_set}</option> 
 									<option value="showall">showall</option>
 									<option value="noborder">noborder</option>
 									<option value="exactfit">exactfit</option>
+									<option value="noscale">noscale</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="flash_wmode">{$lang_media_wmode}</label></td>
+							<td><label for="flash_wmode">{#media_dlg.wmode}</label></td>
 							<td>
 								<select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
-									<option value="">{$lang_not_set}</option> 
+									<option value="">{#not_set}</option> 
 									<option value="window">window</option>
 									<option value="opaque">opaque</option>
 									<option value="transparent">transparent</option>
 								</select>
 							</td>
 
-							<td><label for="flash_salign">{$lang_media_salign}</label></td>
+							<td><label for="flash_salign">{#media_dlg.salign}</label></td>
 							<td>
 								<select id="flash_salign" name="flash_salign" onchange="generatePreview();">
-									<option value="">{$lang_not_set}</option> 
-									<option value="l">{$lang_media_align_left}</option>
-									<option value="t">{$lang_media_align_top}</option>
-									<option value="r">{$lang_media_align_right}</option>
-									<option value="b">{$lang_media_align_bottom}</option>
-									<option value="tl">{$lang_media_align_top_left}</option>
-									<option value="tr">{$lang_media_align_top_right}</option>
-									<option value="bl">{$lang_media_align_bottom_left}</option>
-									<option value="br">{$lang_media_align_bottom_right}</option>
+									<option value="">{#not_set}</option> 
+									<option value="l">{#media_dlg.align_left}</option>
+									<option value="t">{#media_dlg.align_top}</option>
+									<option value="r">{#media_dlg.align_right}</option>
+									<option value="b">{#media_dlg.align_bottom}</option>
+									<option value="tl">{#media_dlg.align_top_left}</option>
+									<option value="tr">{#media_dlg.align_top_right}</option>
+									<option value="bl">{#media_dlg.align_bottom_left}</option>
+									<option value="br">{#media_dlg.align_bottom_right}</option>
 								</select>
 							</td>
 						</tr>
@@ -176,7 +179,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flash_play">{$lang_media_play}</label></td>
+										<td><label for="flash_play">{#media_dlg.play}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -185,7 +188,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flash_loop">{$lang_media_loop}</label></td>
+										<td><label for="flash_loop">{#media_dlg.loop}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -196,7 +199,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flash_menu">{$lang_media_menu}</label></td>
+										<td><label for="flash_menu">{#media_dlg.menu}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -205,7 +208,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>
-										<td><label for="flash_swliveconnect">{$lang_media_liveconnect}</label></td>
+										<td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -214,19 +217,115 @@
 
 					<table>
 						<tr>
-							<td><label for="flash_base">{$lang_media_base}</label></td>
+							<td><label for="flash_base">{#media_dlg.base}</label></td>
 							<td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="flash_flashvars">{$lang_media_flashvars}</label></td>
+							<td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>
 							<td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>
 						</tr>
 					</table>
 				</fieldset>
 
+				<fieldset id="flv_options">
+					<legend>{#media_dlg.flv_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="flv_scalemode">{#media_dlg.flv_scalemode}</label></td>
+							<td>
+								<select id="flv_scalemode" name="flv_scalemode" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="none">none</option>
+									<option value="double">double</option>
+									<option value="full">full</option>
+								</select>
+							</td>
+
+							<td><label for="flv_buffer">{#media_dlg.flv_buffer}</label></td>
+							<td><input type="text" id="flv_buffer" name="flv_buffer" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="flv_startimage">{#media_dlg.flv_startimage}</label></td>
+							<td><input type="text" id="flv_startimage" name="flv_startimage" onchange="generatePreview();" /></td>
+
+							<td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>
+							<td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>
+							<td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>
+
+
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_hiddengui" name="flv_hiddengui" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_hiddengui">{#media_dlg.flv_hiddengui}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_autostart" name="flv_autostart" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_autostart">{#media_dlg.flv_autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_loop" name="flv_loop" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_loop">{#media_dlg.flv_loop}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_showscalemodes" name="flv_showscalemodes" onchange="generatePreview();" /></td>
+										<td><label for="flv_showscalemodes">{#media_dlg.flv_showscalemodes}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_smoothvideo" name="flash_flv_flv_smoothvideosmoothvideo" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_smoothvideo">{#media_dlg.flv_smoothvideo}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_jscallback" name="flv_jscallback" onchange="generatePreview();" /></td>
+										<td><label for="flv_jscallback">{#media_dlg.flv_jscallback}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+
 				<fieldset id="qt_options">
-					<legend>{$lang_media_qt_options}</legend>
+					<legend>{#media_dlg.qt_options}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
@@ -234,7 +333,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>
-										<td><label for="qt_loop">{$lang_media_loop}</label></td>
+										<td><label for="qt_loop">{#media_dlg.loop}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -243,7 +342,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="qt_autoplay">{$lang_media_play}</label></td>
+										<td><label for="qt_autoplay">{#media_dlg.play}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -254,7 +353,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>
-										<td><label for="qt_cache">{$lang_media_cache}</label></td>
+										<td><label for="qt_cache">{#media_dlg.cache}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -263,7 +362,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="qt_controller">{$lang_media_controller}</label></td>
+										<td><label for="qt_controller">{#media_dlg.controller}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -274,7 +373,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>
-										<td><label for="qt_correction">{$lang_media_correction}</label></td>
+										<td><label for="qt_correction">{#media_dlg.correction}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -283,7 +382,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>
-										<td><label for="qt_enablejavascript">{$lang_media_enablejavascript}</label></td>
+										<td><label for="qt_enablejavascript">{#media_dlg.enablejavascript}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -294,7 +393,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>
-										<td><label for="qt_kioskmode">{$lang_media_kioskmode}</label></td>
+										<td><label for="qt_kioskmode">{#media_dlg.kioskmode}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -303,7 +402,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>
-										<td><label for="qt_autohref">{$lang_media_autohref}</label></td>
+										<td><label for="qt_autohref">{#media_dlg.autohref}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -314,7 +413,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>
-										<td><label for="qt_playeveryframe">{$lang_media_playeveryframe}</label></td>
+										<td><label for="qt_playeveryframe">{#media_dlg.playeveryframe}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -323,16 +422,16 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>
-										<td><label for="qt_targetcache">{$lang_media_targetcache}</label></td>
+										<td><label for="qt_targetcache">{#media_dlg.targetcache}</label></td>
 									</tr>
 								</table>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="qt_scale">{$lang_media_scale}</label></td>
+							<td><label for="qt_scale">{#media_dlg.scale}</label></td>
 							<td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">
-									<option value="">{$lang_not_set}</option> 
+									<option value="">{#not_set}</option> 
 									<option value="tofit">tofit</option>
 									<option value="aspect">aspect</option>
 								</select>
@@ -342,31 +441,31 @@
 						</tr>
 
 						<tr>
-							<td><label for="qt_starttime">{$lang_media_starttime}</label></td>
+							<td><label for="qt_starttime">{#media_dlg.starttime}</label></td>
 							<td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
 
-							<td><label for="qt_endtime">{$lang_media_endtime}</label></td>
+							<td><label for="qt_endtime">{#media_dlg.endtime}</label></td>
 							<td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="qt_target">{$lang_media_target}</label></td>
+							<td><label for="qt_target">{#media_dlg.target}</label></td>
 							<td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
 
-							<td><label for="qt_href">{$lang_media_href}</label></td>
+							<td><label for="qt_href">{#media_dlg.href}</label></td>
 							<td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="qt_qtsrcchokespeed">{$lang_media_qtsrcchokespeed}</label></td>
+							<td><label for="qt_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>
 							<td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
 
-							<td><label for="qt_volume">{$lang_media_volume}</label></td>
+							<td><label for="qt_volume">{#media_dlg.volume}</label></td>
 							<td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="qt_qtsrc">{$lang_media_qtsrc}</label></td>
+							<td><label for="qt_qtsrc">{#media_dlg.qtsrc}</label></td>
 							<td colspan="4">
 							<table border="0" cellspacing="0" cellpadding="0">
 								  <tr>
@@ -380,7 +479,7 @@
 				</fieldset>
 
 				<fieldset id="wmp_options">
-					<legend>{$lang_media_wmp_options}</legend>
+					<legend>{#media_dlg.wmp_options}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
@@ -388,7 +487,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="wmp_autostart">{$lang_media_autostart}</label></td>
+										<td><label for="wmp_autostart">{#media_dlg.autostart}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -397,7 +496,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
-										<td><label for="wmp_enabled">{$lang_media_enabled}</label></td>
+										<td><label for="wmp_enabled">{#media_dlg.enabled}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -408,7 +507,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="wmp_enablecontextmenu">{$lang_media_menu}</label></td>
+										<td><label for="wmp_enablecontextmenu">{#media_dlg.menu}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -417,7 +516,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
-										<td><label for="wmp_fullscreen">{$lang_media_fullscreen}</label></td>
+										<td><label for="wmp_fullscreen">{#media_dlg.fullscreen}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -428,7 +527,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="wmp_invokeurls">{$lang_media_invokeurls}</label></td>
+										<td><label for="wmp_invokeurls">{#media_dlg.invokeurls}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -437,7 +536,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
-										<td><label for="wmp_mute">{$lang_media_mute}</label></td>
+										<td><label for="wmp_mute">{#media_dlg.mute}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -448,7 +547,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
-										<td><label for="wmp_stretchtofit">{$lang_media_stretchtofit}</label></td>
+										<td><label for="wmp_stretchtofit">{#media_dlg.stretchtofit}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -457,49 +556,49 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
-										<td><label for="wmp_windowlessvideo">{$lang_media_windowlessvideo}</label></td>
+										<td><label for="wmp_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>
 									</tr>
 								</table>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="wmp_balance">{$lang_media_balance}</label></td>
+							<td><label for="wmp_balance">{#media_dlg.balance}</label></td>
 							<td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
 
-							<td><label for="wmp_baseurl">{$lang_media_baseurl}</label></td>
+							<td><label for="wmp_baseurl">{#media_dlg.baseurl}</label></td>
 							<td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="wmp_captioningid">{$lang_media_captioningid}</label></td>
+							<td><label for="wmp_captioningid">{#media_dlg.captioningid}</label></td>
 							<td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
 
-							<td><label for="wmp_currentmarker">{$lang_media_currentmarker}</label></td>
+							<td><label for="wmp_currentmarker">{#media_dlg.currentmarker}</label></td>
 							<td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="wmp_currentposition">{$lang_media_currentposition}</label></td>
+							<td><label for="wmp_currentposition">{#media_dlg.currentposition}</label></td>
 							<td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
 
-							<td><label for="wmp_defaultframe">{$lang_media_defaultframe}</label></td>
+							<td><label for="wmp_defaultframe">{#media_dlg.defaultframe}</label></td>
 							<td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="wmp_playcount">{$lang_media_playcount}</label></td>
+							<td><label for="wmp_playcount">{#media_dlg.playcount}</label></td>
 							<td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
 
-							<td><label for="wmp_rate">{$lang_media_rate}</label></td>
+							<td><label for="wmp_rate">{#media_dlg.rate}</label></td>
 							<td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="wmp_uimode">{$lang_media_uimode}</label></td>
+							<td><label for="wmp_uimode">{#media_dlg.uimode}</label></td>
 							<td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
 
-							<td><label for="wmp_volume">{$lang_media_volume}</label></td>
+							<td><label for="wmp_volume">{#media_dlg.volume}</label></td>
 							<td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
 						</tr>
 
@@ -507,7 +606,7 @@
 				</fieldset>
 
 				<fieldset id="rmp_options">
-					<legend>{$lang_media_rmp_options}</legend>
+					<legend>{#media_dlg.rmp_options}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
@@ -515,7 +614,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
-										<td><label for="rmp_autostart">{$lang_media_autostart}</label></td>
+										<td><label for="rmp_autostart">{#media_dlg.autostart}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -524,7 +623,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
-										<td><label for="rmp_loop">{$lang_media_loop}</label></td>
+										<td><label for="rmp_loop">{#media_dlg.loop}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -535,7 +634,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="rmp_autogotourl">{$lang_media_autogotourl}</label></td>
+										<td><label for="rmp_autogotourl">{#media_dlg.autogotourl}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -544,7 +643,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
-										<td><label for="rmp_center">{$lang_media_center}</label></td>
+										<td><label for="rmp_center">{#media_dlg.center}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -555,7 +654,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="rmp_imagestatus">{$lang_media_imagestatus}</label></td>
+										<td><label for="rmp_imagestatus">{#media_dlg.imagestatus}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -564,7 +663,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
-										<td><label for="rmp_maintainaspect">{$lang_media_maintainaspect}</label></td>
+										<td><label for="rmp_maintainaspect">{#media_dlg.maintainaspect}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -575,7 +674,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
-										<td><label for="rmp_nojava">{$lang_media_nojava}</label></td>
+										<td><label for="rmp_nojava">{#media_dlg.nojava}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -584,7 +683,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
-										<td><label for="rmp_prefetch">{$lang_media_prefetch}</label></td>
+										<td><label for="rmp_prefetch">{#media_dlg.prefetch}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -595,7 +694,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
-										<td><label for="rmp_shuffle">{$lang_media_shuffle}</label></td>
+										<td><label for="rmp_shuffle">{#media_dlg.shuffle}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -606,57 +705,57 @@
 						</tr>
 
 						<tr>
-							<td><label for="rmp_console">{$lang_media_console}</label></td>
+							<td><label for="rmp_console">{#media_dlg.console}</label></td>
 							<td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
 
-							<td><label for="rmp_controls">{$lang_media_controls}</label></td>
+							<td><label for="rmp_controls">{#media_dlg.controls}</label></td>
 							<td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="rmp_numloop">{$lang_media_numloop}</label></td>
+							<td><label for="rmp_numloop">{#media_dlg.numloop}</label></td>
 							<td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
 
-							<td><label for="rmp_scriptcallbacks">{$lang_media_scriptcallbacks}</label></td>
+							<td><label for="rmp_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>
 							<td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
 						</tr>
 					</table>
 				</fieldset>
 
 				<fieldset id="shockwave_options">
-					<legend>{$lang_media_shockwave_options}</legend>
+					<legend>{#media_dlg.shockwave_options}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td><label for="shockwave_swstretchstyle">{$lang_media_swstretchstyle}</label></td>
+							<td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>
 							<td>
 								<select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
-									<option value="none">{$lang_not_set}</option>
+									<option value="none">{#not_set}</option>
 									<option value="meet">Meet</option>
 									<option value="fill">Fill</option>
 									<option value="stage">Stage</option>
 								</select>
 							</td>
 
-							<td><label for="shockwave_swvolume">{$lang_media_volume}</label></td>
+							<td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>
 							<td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>
 						</tr>
 
 						<tr>
-							<td><label for="shockwave_swstretchhalign">{$lang_media_swstretchhalign}</label></td>
+							<td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>
 							<td>
 								<select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">
-									<option value="none">{$lang_not_set}</option>
-									<option value="left">{$lang_media_align_left}</option>
-									<option value="center">{$lang_media_align_center}</option>
-									<option value="right">{$lang_media_align_right}</option>
+									<option value="none">{#not_set}</option>
+									<option value="left">{#media_dlg.align_left}</option>
+									<option value="center">{#media_dlg.align_center}</option>
+									<option value="right">{#media_dlg.align_right}</option>
 								</select>
 							</td>
 
-							<td><label for="shockwave_swstretchvalign">{$lang_media_swstretchvalign}</label></td>
+							<td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>
 							<td>
 								<select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">
-									<option value="none">{$lang_not_set}</option>
+									<option value="none">{#not_set}</option>
 									<option value="meet">Meet</option>
 									<option value="fill">Fill</option>
 									<option value="stage">Stage</option>
@@ -669,7 +768,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>
-										<td><label for="shockwave_autostart">{$lang_media_autostart}</label></td>
+										<td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -678,7 +777,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>
-										<td><label for="shockwave_sound">{$lang_media_sound}</label></td>
+										<td><label for="shockwave_sound">{#media_dlg.sound}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -690,7 +789,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>
-										<td><label for="shockwave_swliveconnect">{$lang_media_liveconnect}</label></td>
+										<td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -699,7 +798,7 @@
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
 										<td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>
-										<td><label for="shockwave_progress">{$lang_media_progress}</label></td>
+										<td><label for="shockwave_progress">{#media_dlg.progress}</label></td>
 									</tr>
 								</table>
 							</td>
@@ -711,11 +810,11 @@
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertMedia();" />
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
 	</form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('nonbreaking');var TinyMCE_NonBreakingPlugin={getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"nonbreaking":return tinyMCE.getButtonHTML(cn,'lang_nonbreaking_desc','{$pluginurl}/images/nonbreaking.gif','mceNonBreaking',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),h;switch(command){case"mceNonBreaking":h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;</span>':'&nbsp;';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,h);return true}return false},handleEvent:function(e){var inst,h;if(!tinyMCE.isOpera&&e.type=='keydown'&&e.keyCode==9&&tinyMCE.getParam('nonbreaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>':'&nbsp;&nbsp;&nbsp;';tinyMCE.execInstanceCommand(inst.editorId,'mceInsertContent',false,h);tinyMCE.cancelEvent(e);return false}return true}};tinyMCE.addPlugin("nonbreaking",TinyMCE_NonBreakingPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'<span class="mceItemHidden mceVisualNbsp">&middot;</span>':"&nbsp;")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,62 +1,50 @@
-/**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('nonbreaking');
-
-var TinyMCE_NonBreakingPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Nonbreaking space',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "nonbreaking":
-				return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false);
-		}
-
-		return "";
-	},
-
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		var inst = tinyMCE.getInstanceById(editor_id), h;
-
-		switch (command) {
-			case "mceNonBreaking":
-				h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;</span>' : '&nbsp;';
-				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h);
-				return true;
-		}
-
-		return false;
-	},
-
-	handleEvent : function(e) {
-		var inst, h;
-
-		if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) {
-			inst = tinyMCE.selectedInstance;
-
-			h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>' : '&nbsp;&nbsp;&nbsp;';
-			tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h);
-
-			tinyMCE.cancelEvent(e);
-			return false;
-		}
-
-		return true;
-	}
-};
-
-tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin);
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.Nonbreaking', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceNonBreaking', function() {
+				ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span class="mceItemHidden mceVisualNbsp">&middot;</span>' : '&nbsp;');
+			});
+
+			// Register buttons
+			ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});
+
+			if (ed.getParam('nonbreaking_force_tab')) {
+				ed.onKeyDown.add(function(ed, e) {
+					if (tinymce.isIE && e.keyCode == 9) {
+						ed.execCommand('mceNonBreaking');
+						ed.execCommand('mceNonBreaking');
+						ed.execCommand('mceNonBreaking');
+						tinymce.dom.Event.cancel(e);
+					}
+				});
+			}
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Nonbreaking space',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+
+		// Private methods
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable')},handleEvent:function(e){return this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){switch(type){case"insert_to_editor_dom":var nodes,i,editClass,nonEditClass,editable,elm;if(tinyMCE.isGecko)return content;nodes=tinyMCE.getNodeTree(content,[],1);editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");for(i=0;i<nodes.length;i++){elm=nodes[i];editable=tinyMCE.getAttrib(elm,"contenteditable");if(new RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isIE){if(tinyMCE.hasCSSClass(elm,editClass))elm.contentEditable=true;if(tinyMCE.hasCSSClass(elm,nonEditClass))elm.contentEditable=false}}break;case"insert_to_editor":var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");content=content.replace(/mceItemEditable/g,editClass);content=content.replace(/mceItemNonEditable/g,nonEditClass);if(tinyMCE.isIE&&(content.indexOf(editClass)!=-1||content.indexOf(nonEditClass)!=-1)){content=content.replace(new RegExp("class=\"(.+)("+editClass+")\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"("+editClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"(.+)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="false"')}break;case"get_from_editor_dom":if(tinyMCE.isGecko)return content;if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i<nodes.length;i++)nodes[i].removeAttribute("contenteditable")}break}return content},_moveSelection:function(e,inst){var s,r,sc,ec,el,c=tinyMCE.getParam('noneditable_editable_class','mceNonEditable');if(!inst)return true;if(tinyMCE.isGecko){s=inst.selection.getSel();r=s.getRangeAt(0);sc=tinyMCE.getParentNode(r.startContainer,function(n){return tinyMCE.hasCSSClass(n,c)});ec=tinyMCE.getParentNode(r.endContainer,function(n){return tinyMCE.hasCSSClass(n,c)});sc&&r.setStartBefore(sc);ec&&r.setEndAfter(ec);if(sc||ec){if(e.type=='keypress'&&e.keyCode==39){el=sc||ec;}s.removeAllRanges();s.addRange(r);return tinyMCE.cancelEvent(e)}}return true},_setEditable:function(elm,state){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+=" ";className+=state?editClass:nonEditClass;elm.setAttribute("class",className);elm.className=className}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._setDisabled(0)}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,153 +1,87 @@
-/**
- * $Id: editor_plugin_src.js 205 2007-02-12 18:58:29Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-var TinyMCE_NonEditablePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Non editable elements',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/noneditable/css/noneditable.css");
-
-		// Ugly hack
-		if (tinyMCE.isMSIE5_0)
-			tinyMCE.settings['plugins'] = tinyMCE.settings['plugins'].replace(/noneditable/gi, 'Noneditable');
-	},
-
-	handleEvent : function(e) {
-		return this._moveSelection(e, tinyMCE.selectedInstance);
-	},
-
-	cleanup : function(type, content, inst) {
-		switch (type) {
-			case "insert_to_editor_dom":
-				var nodes, i, editClass, nonEditClass, editable, elm;
-
-				// Pass through Gecko
-				if (tinyMCE.isGecko)
-					return content;
-
-				nodes = tinyMCE.getNodeTree(content, [], 1);
-
-				editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
-				nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
-
-				for (i=0; i<nodes.length; i++) {
-					elm = nodes[i];
-
-					// Convert contenteditable to classes
-					editable = tinyMCE.getAttrib(elm, "contenteditable");
-					if (new RegExp("true|false","gi").test(editable))
-						TinyMCE_NonEditablePlugin._setEditable(elm, editable == "true");
-
-					if (tinyMCE.isIE) {
-						if (tinyMCE.hasCSSClass(elm, editClass))
-							elm.contentEditable = true;
-
-						if (tinyMCE.hasCSSClass(elm, nonEditClass))
-							elm.contentEditable = false;
-					}
-				}
-
-				break;
-
-			case "insert_to_editor":
-				var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
-				var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
-
-				// Replace mceItem to new school
-				content = content.replace(/mceItemEditable/g, editClass);
-				content = content.replace(/mceItemNonEditable/g, nonEditClass);
-
-				if (tinyMCE.isIE && (content.indexOf(editClass) != -1 || content.indexOf(nonEditClass) != -1)) {
-					content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")\"", "gi"), 'class="$1$2" contenteditable="true"');
-					content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")\"", "gi"), 'class="$1$2" contenteditable="false"');
-					content = content.replace(new RegExp("class=\"(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="true"');
-					content = content.replace(new RegExp("class=\"(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="false"');
-					content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="true"');
-					content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="false"');
-				}
-
-				break;
-
-			case "get_from_editor_dom":
-				// Pass through Gecko
-				if (tinyMCE.isGecko)
-					return content;
-
-				if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) {
-					var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
-
-					for (var i=0; i<nodes.length; i++)
-						nodes[i].removeAttribute("contenteditable");
-				}
-
-				break;
-		}
-
-		return content;
-	},
-
-	_moveSelection : function(e, inst) {
-		var s, r, sc, ec, el, c = tinyMCE.getParam('noneditable_editable_class', 'mceNonEditable');
-
-		if (!inst)
-			return true;
-
-		// Always select whole element
-		if (tinyMCE.isGecko) {
-			s = inst.selection.getSel();
-			r = s.getRangeAt(0);
-			sc = tinyMCE.getParentNode(r.startContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
-			ec = tinyMCE.getParentNode(r.endContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
-
-			sc && r.setStartBefore(sc);
-			ec && r.setEndAfter(ec);
-
-			if (sc || ec) {
-				if (e.type == 'keypress' && e.keyCode == 39) {
-					el = sc || ec;
-
-					// Try!!
-				}
-
-				s.removeAllRanges();
-				s.addRange(r);
-
-				return tinyMCE.cancelEvent(e);
-			}
-		}
-
-		return true;
-	},
-
-	_setEditable : function(elm, state) {
-		var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
-		var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
-
-		var className = elm.className ? elm.className : "";
-
-		if (className.indexOf(editClass) != -1 || className.indexOf(nonEditClass) != -1)
-			return;
-
-		if ((className = tinyMCE.getAttrib(elm, "class")) != "")
-			className += " ";
-
-		className += state ? editClass : nonEditClass;
-
-		elm.setAttribute("class", className);
-		elm.className = className;
-	}
-};
-
-tinyMCE.addPlugin("noneditable", TinyMCE_NonEditablePlugin);
+/**
+ * $Id: editor_plugin_src.js 743 2008-03-23 17:47:33Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var Event = tinymce.dom.Event;
+
+	tinymce.create('tinymce.plugins.NonEditablePlugin', {
+		init : function(ed, url) {
+			var t = this, editClass, nonEditClass;
+
+			t.editor = ed;
+			editClass = ed.getParam("noneditable_editable_class", "mceEditable");
+			nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable");
+
+			ed.onNodeChange.addToTop(function(ed, cm, n) {
+				var sc, ec;
+
+				// Block if start or end is inside a non editable element
+				sc = ed.dom.getParent(ed.selection.getStart(), function(n) {
+					return ed.dom.hasClass(n, nonEditClass);
+				});
+
+				ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {
+					return ed.dom.hasClass(n, nonEditClass);
+				});
+
+				// Block or unblock
+				if (sc || ec) {
+					t._setDisabled(1);
+					return false;
+				} else
+					t._setDisabled(0);
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Non editable elements',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		_block : function(ed, e) {
+			var k = e.keyCode;
+
+			// Don't block arrow keys, pg up/down, and F1-F12
+			if ((k > 32 && k < 41) || (k > 111 && k < 124))
+				return;
+
+			return Event.cancel(e);
+		},
+
+		_setDisabled : function(s) {
+			var t = this, ed = t.editor;
+
+			tinymce.each(ed.controlManager.controls, function(c) {
+				c.setDisabled(s);
+			});
+
+			if (s !== t.disabled) {
+				if (s) {
+					ed.onKeyDown.addToTop(t._block);
+					ed.onKeyPress.addToTop(t._block);
+					ed.onKeyUp.addToTop(t._block);
+					ed.onPaste.addToTop(t._block);
+				} else {
+					ed.onKeyDown.remove(t._block);
+					ed.onKeyPress.remove(t._block);
+					ed.onKeyUp.remove(t._block);
+					ed.onPaste.remove(t._block);
+				}
+
+				t.disabled = s;
+			}
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='<img src="'+d+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',a="mcePageBreak",c=b.getParam("pagebreak_separator","<!-- pagebreak -->"),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,74 @@
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.PageBreakPlugin', {
+		init : function(ed, url) {
+			var pb = '<img src="' + url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;
+
+			pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');
+
+			// Register commands
+			ed.addCommand('mcePageBreak', function() {
+				ed.execCommand('mceInsertContent', 0, pb);
+			});
+
+			// Register buttons
+			ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});
+
+			ed.onInit.add(function() {
+				if (ed.settings.content_css !== false)
+					ed.dom.loadCSS(url + "/css/content.css");
+
+				if (ed.theme.onResolveName) {
+					ed.theme.onResolveName.add(function(th, o) {
+						if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))
+							o.name = 'pagebreak';
+					});
+				}
+			});
+
+			ed.onClick.add(function(ed, e) {
+				e = e.target;
+
+				if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))
+					ed.selection.select(e);
+			});
+
+			ed.onNodeChange.add(function(ed, cm, n) {
+				cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));
+			});
+
+			ed.onBeforeSetContent.add(function(ed, o) {
+				o.content = o.content.replace(pbRE, pb);
+			});
+
+			ed.onPostProcess.add(function(ed, o) {
+				if (o.get)
+					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
+						if (im.indexOf('class="mcePageBreak') !== -1)
+							im = sep;
+
+						return im;
+					});
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'PageBreak',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+GIF89ad   t]Othh[QB!   ,    d   I8ͻ`(d
+Y8#9.aBp8Uck<AtBU5qC
+n`U8ku-z	0Ck
+S@BNNVf7  NK_NhJk=?h	{}ʇ:dYx&sH\bRN	OO
+5 @`@siL#J ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+GIF89a          !   ,       D ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('paste');var TinyMCE_PastePlugin={getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_PastePlugin._handlePasteEvent)},handleEvent:function(e){if(!tinyMCE.isRealIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false)&&e.ctrlKey&&e.keyCode==86&&e.type=="keydown"){window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)',1);return tinyMCE.cancelEvent(e)}return true},getControlHTML:function(cn){switch(cn){case"pastetext":return tinyMCE.getButtonHTML(cn,'lang_paste_text_desc','{$pluginurl}/images/pastetext.gif','mcePasteText',true);case"pasteword":return tinyMCE.getButtonHTML(cn,'lang_paste_word_desc','{$pluginurl}/images/pasteword.gif','mcePasteWord',true);case"selectall":return tinyMCE.getButtonHTML(cn,'lang_selectall_desc','{$pluginurl}/images/selectall.gif','mceSelectAll',true)}return''},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertText(value['html'],value['linebreaks']);return true;case"mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML())}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertWordContent(value);return true;case"mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true}return false},_handlePasteEvent:function(e){switch(e.type){case"paste":var html=TinyMCE_PastePlugin._clipboardHTML();var r,inst=tinyMCE.selectedInstance;if(inst&&(r=inst.getRng())&&r.text.length>0)tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false}return true},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=tinyMCE.regexpReplace(content,"\r\n\r\n","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\r\r","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\n\n","</p><p>","gi");if((pos=content.indexOf('</p><p>'))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">"}before+="<p>";content=before+content.substring(pos+7)+after}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}}tinyMCE.execCommand("mceInsertRawHTML",false,content)}},_insertWordContent:function(content){if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);var cb;if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('before', content)");var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>')}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(tinyMCE.getParam("paste_remove_spans",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(tinyMCE.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break}content=content.replace(new RegExp('href="?'+TinyMCE_PastePlugin._reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi')}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"")}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_PastePlugin._convertMiddots(div,"--list--"));while(TinyMCE_PastePlugin._convertMiddots(div,middot,className));while(TinyMCE_PastePlugin._convertMiddots(div,bull));content=div.innerHTML}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi,'<p>&nbsp;&nbsp;</p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b>&nbsp;<\/b>/gi,'<b>&nbsp;&nbsp;</b>');content=content.replace(/^(&nbsp;)*/gi,'')}content=content.replace(/--list--/gi,"");if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('after', content)");tinyMCE.execCommand("mceInsertContent",false,content);if(tinyMCE.getParam('paste_force_cleanup_wordpaste',true))window.setTimeout('tinyMCE.execCommand("mceCleanup");',1);}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c}return o},_convertMiddots:function(div,search,class_name){var mdot=String.fromCharCode(183);var bull=String.fromCharCode(8226);var nodes=div.getElementsByTagName("p");var prevul;for(var i=0;i<nodes.length;i++){var p=nodes[i];if(p.innerHTML.indexOf(search)==0){var ul=document.createElement("ul");if(class_name)ul.className=class_name;var li=document.createElement("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');ul.appendChild(li);var np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue}if(search==mdot){if(np.nodeType==1&&new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)){if(!prevul){prevul=ul;ul=document.createElement("ul");prevul.appendChild(ul)}np.innerHTML=np.innerHTML.replace(/^o/,'')}else{if(prevul){ul=prevul;prevul=null}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}var cp=np.nextSibling;var li=document.createElement("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp}p.parentNode.replaceChild(ul,p);return true}}return false},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1}document.body.appendChild(div)}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html}};tinyMCE.addPlugin("paste",TinyMCE_PastePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.PastePlugin",{init:function(c,d){var e=this,b;e.editor=c;e.url=d;e.onPreProcess=new tinymce.util.Dispatcher(e);e.onPostProcess=new tinymce.util.Dispatcher(e);e.onPreProcess.add(e._preProcess);e.onPostProcess.add(e._postProcess);e.onPreProcess.add(function(h,i){c.execCallback("paste_preprocess",h,i)});e.onPostProcess.add(function(h,i){c.execCallback("paste_postprocess",h,i)});function g(i){var k=c.dom,j={content:i};e.onPreProcess.dispatch(e,j);j.node=k.create("div",0,j.content);e.onPostProcess.dispatch(e,j);j.content=c.serializer.serialize(j.node,{getInner:1});if(/<(p|h[1-6]|ul|ol)/.test(j.content)){e._insertBlockContent(c,k,j.content)}else{e._insert(j.content)}}c.addCommand("mceInsertClipboardContent",function(i,h){g(h)});function f(l){var p,k,i,j=c.selection,o=c.dom,h=c.getBody(),m;if(o.get("_mcePaste")){return}p=o.add(h,"div",{id:"_mcePaste"},"&nbsp;");if(h!=c.getDoc().body){m=o.getPos(c.selection.getStart(),h).y}else{m=h.scrollTop}o.setStyles(p,{position:"absolute",left:-10000,top:m,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){i=o.doc.body.createTextRange();i.moveToElementText(p);i.execCommand("Paste");o.remove(p);g(p.innerHTML);return tinymce.dom.Event.cancel(l)}else{k=c.selection.getRng();p=p.firstChild;i=c.getDoc().createRange();i.setStart(p,0);i.setEnd(p,1);j.setRng(i);window.setTimeout(function(){var r=o.get("_mcePaste"),q;r.id="_mceRemoved";o.remove(r);r=o.get("_mcePaste")||r;q=(o.select("> span.Apple-style-span div",r)[0]||o.select("> span.Apple-style-span",r)[0]||r).innerHTML;o.remove(r);if(k){j.setRng(k)}g(q)},0)}}if(c.getParam("paste_auto_cleanup_on_paste",true)){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){c.onKeyDown.add(function(h,i){if(((tinymce.isMac?i.metaKey:i.ctrlKey)&&i.keyCode==86)||(i.shiftKey&&i.keyCode==45)){f(i)}})}else{c.onPaste.addToTop(function(h,i){return f(i)})}}if(c.getParam("paste_block_drop")){c.onInit.add(function(){c.dom.bind(c.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(h){h.preventDefault();h.stopPropagation();return false})})}e._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(d,g){var b=this.editor,c=g.content,f,e;function f(h){a(h,function(i){if(i.constructor==RegExp){c=c.replace(i,"")}else{c=c.replace(i[0],i[1])}})}f([/^\s*(&nbsp;)+/g,/(&nbsp;|<br[^>]*>)+\s*$/g]);if(/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(c)){g.wordContent=true;if(b.getParam("paste_convert_middot_lists",true)){f([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+:\s*symbol[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<span[^>]+mso-list:[^>]+>)/gi,"$1__MCE_ITEM__"]])}f([/<!--[\s\S]+?-->/gi,/<\/?(img|font|meta|link|style|div|v:\w+)[^>]*>/gi,/<\\?\?xml[^>]*>/gi,/<\/?o:[^>]*>/gi,/ (id|name|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,/ (id|name|language|type|on\w+|v:\w+)=(\w+)/gi,[/<(\/?)s>/gi,"<$1strike>"],/<script[^>]+>[\s\S]*?<\/script>/gi,[/&nbsp;/g,"\u00a0"]]);if(!b.getParam("paste_retain_style_properties")){f([/<\/?(span)[^>]*>/gi])}}e=b.getParam("paste_strip_class_attributes","all");if(e!="none"){if(e=="all"){f([/ class=\"([^\"]*)\"/gi,/ class=(\w+)/gi])}else{f([/ class=\"(mso[^\"]*)\"/gi,/ class=(mso\w+)/gi])}}if(b.getParam("paste_remove_spans")){f([/<\/?(span)[^>]*>/gi])}g.content=c},_postProcess:function(e,g){var d=this,c=d.editor,f=c.dom,b;if(g.wordContent){a(f.select("a",g.node),function(h){if(!h.href||h.href.indexOf("#_Toc")!=-1){f.remove(h,1)}});if(d.editor.getParam("paste_convert_middot_lists",true)){d._convertLists(e,g)}b=c.getParam("paste_retain_style_properties");if(tinymce.is(b,"string")){b=tinymce.explode(b)}a(f.select("*",g.node),function(l){var m={},j=0,k,n,h;if(b){for(k=0;k<b.length;k++){n=b[k];h=f.getStyle(l,n);if(h){m[n]=h;j++}}}f.setAttrib(l,"style","");if(b&&j>0){f.setStyles(l,m)}else{if(l.nodeName=="SPAN"&&!l.className){f.remove(l,true)}}})}if(c.getParam("paste_remove_styles")||(c.getParam("paste_remove_styles_if_webkit")&&tinymce.isWebKit)){a(f.select("*[style]",g.node),function(h){h.removeAttribute("style");h.removeAttribute("mce_style")})}else{if(tinymce.isWebKit){a(f.select("*",g.node),function(h){h.removeAttribute("mce_style")})}}},_convertLists:function(e,c){var g=e.editor.dom,f,j,b=-1,d,k=[],i,h;a(g.select("p",c.node),function(r){var n,s="",q,o,l,m;for(n=r.firstChild;n&&n.nodeType==3;n=n.nextSibling){s+=n.nodeValue}s=r.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(s)){q="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(s)){q="ol"}if(q){d=parseFloat(r.style.marginLeft||0);if(d>b){k.push(d)}if(!f||q!=i){f=g.create(q);g.insertAfter(f,r)}else{if(d>b){f=j.appendChild(g.create(q))}else{if(d<b){l=tinymce.inArray(k,d);m=g.getParents(f.parentNode,q);f=m[m.length-1-l]||f}}}a(g.select("span",r),function(t){var p=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(q=="ul"&&/^[\u2022\u00b7\u00a7\u00d8o]/.test(p)){g.remove(t)}else{if(/^[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){g.remove(t)}}});o=r.innerHTML;if(q=="ul"){o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*(&nbsp;|\u00a0)+\s*/,"")}else{o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}j=f.appendChild(g.create("li",0,o));g.remove(r);b=d;i=q}else{f=b=0}});h=c.node.innerHTML;if(h.indexOf("__MCE_ITEM__")!=-1){c.node.innerHTML=h.replace(/__MCE_ITEM__/g,"")}},_insertBlockContent:function(h,e,i){var c,g,d=h.selection,m,j,b,k,f;function l(p){var o;if(tinymce.isIE){o=h.getDoc().body.createTextRange();o.moveToElementText(p);o.collapse(false);o.select()}else{d.select(p,1);d.collapse(false)}}this._insert('<span id="_marker">&nbsp;</span>',1);g=e.get("_marker");c=e.getParent(g,"p,h1,h2,h3,h4,h5,h6,ul,ol");if(c){g=e.split(c,g);a(e.create("div",0,i).childNodes,function(o){m=g.parentNode.insertBefore(o.cloneNode(true),g)});l(m)}else{e.setOuterHTML(g,i);d.select(h.getBody(),1);d.collapse(0)}e.remove("_marker");j=d.getStart();b=e.getViewPort(h.getWin());k=h.dom.getPos(j).y;f=j.clientHeight;if(k<b.y||k+f>b.y+b.h){h.getDoc().body.scrollTop=k<b.y?k:k-b.h+25}},_insert:function(d,b){var c=this.editor;if(!c.selection.isCollapsed()){c.getDoc().execCommand("Delete",false,null)}c.execCommand(tinymce.isGecko?"insertHTML":"mceInsertContent",false,d,{skip_undo:b})},_legacySupport:function(){var c=this,b=c.editor;a(["mcePasteText","mcePasteWord"],function(d){b.addCommand(d,function(){b.windowManager.open({file:c.url+(d=="mcePasteText"?"/pastetext.htm":"/pasteword.htm"),width:parseInt(b.getParam("paste_dialog_width","450")),height:parseInt(b.getParam("paste_dialog_height","400")),inline:1})})});b.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});b.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"});b.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,395 +1,512 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('paste');
-
-var TinyMCE_PastePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Paste text/word',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		if (tinyMCE.isMSIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false))
-			tinyMCE.addEvent(inst.getBody(), "paste", TinyMCE_PastePlugin._handlePasteEvent);
-	},
-
-	handleEvent : function(e) {
-		// Force paste dialog if non IE browser
-		if (!tinyMCE.isRealIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false) && e.ctrlKey && e.keyCode == 86 && e.type == "keydown") {
-			window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)', 1);
-			return tinyMCE.cancelEvent(e);
-		}
-
-		return true;
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "pastetext":
-				return tinyMCE.getButtonHTML(cn, 'lang_paste_text_desc', '{$pluginurl}/images/pastetext.gif', 'mcePasteText', true);
-
-			case "pasteword":
-				return tinyMCE.getButtonHTML(cn, 'lang_paste_word_desc', '{$pluginurl}/images/pasteword.gif', 'mcePasteWord', true);
-
-			case "selectall":
-				return tinyMCE.getButtonHTML(cn, 'lang_selectall_desc', '{$pluginurl}/images/selectall.gif', 'mceSelectAll', true);
-		}
-
-		return '';
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		switch (command) {
-			case "mcePasteText":
-				if (user_interface) {
-					if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false))
-						TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"), true);
-					else {
-						var template = new Array();
-						template['file']	= '../../plugins/paste/pastetext.htm'; // Relative to theme
-						template['width']  = 450;
-						template['height'] = 400;
-						var plain_text = "";
-						tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'});
-					}
-				} else
-					TinyMCE_PastePlugin._insertText(value['html'], value['linebreaks']);
-
-				return true;
-
-			case "mcePasteWord":
-				if (user_interface) {
-					if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) {
-						TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML());
-					} else {
-						var template = new Array();
-						template['file']	= '../../plugins/paste/pasteword.htm'; // Relative to theme
-						template['width']  = 450;
-						template['height'] = 400;
-						var plain_text = "";
-						tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'});
-					}
-				} else
-					TinyMCE_PastePlugin._insertWordContent(value);
-
-				return true;
-
-			case "mceSelectAll":
-				tinyMCE.execInstanceCommand(editor_id, 'selectall');
-				return true;
-
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	// Private plugin internal methods
-
-	_handlePasteEvent : function(e) {
-		switch (e.type) {
-			case "paste":
-				var html = TinyMCE_PastePlugin._clipboardHTML();
-				var r, inst = tinyMCE.selectedInstance;
-
-				// Removes italic, strong etc, the if was needed due to bug #1437114
-				if (inst && (r = inst.getRng()) && r.text.length > 0)
-					tinyMCE.execCommand('delete');
-
-				if (html && html.length > 0)
-					tinyMCE.execCommand('mcePasteWord', false, html);
-
-				tinyMCE.cancelEvent(e);
-				return false;
-		}
-
-		return true;
-	},
-
-	_insertText : function(content, bLinebreaks) {
-		if (content && content.length > 0) {
-			if (bLinebreaks) {
-				// Special paragraph treatment
-				if (tinyMCE.getParam("paste_create_paragraphs", true)) {
-					var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
-					for (var i=0; i<rl.length; i+=2)
-						content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
-
-					content = tinyMCE.regexpReplace(content, "\r\n\r\n", "</p><p>", "gi");
-					content = tinyMCE.regexpReplace(content, "\r\r", "</p><p>", "gi");
-					content = tinyMCE.regexpReplace(content, "\n\n", "</p><p>", "gi");
-
-					// Has paragraphs
-					if ((pos = content.indexOf('</p><p>')) != -1) {
-						tinyMCE.execCommand("Delete");
-
-						var node = tinyMCE.selectedInstance.getFocusElement();
-
-						// Get list of elements to break
-						var breakElms = new Array();
-
-						do {
-							if (node.nodeType == 1) {
-								// Don't break tables and break at body
-								if (node.nodeName == "TD" || node.nodeName == "BODY")
-									break;
-
-								breakElms[breakElms.length] = node;
-							}
-						} while(node = node.parentNode);
-
-						var before = "", after = "</p>";
-						before += content.substring(0, pos);
-
-						for (var i=0; i<breakElms.length; i++) {
-							before += "</" + breakElms[i].nodeName + ">";
-							after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">";
-						}
-
-						before += "<p>";
-						content = before + content.substring(pos+7) + after;
-					}
-				}
-
-				if (tinyMCE.getParam("paste_create_linebreaks", true)) {
-					content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi");
-					content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi");
-					content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi");
-				}
-			}
-
-			tinyMCE.execCommand("mceInsertRawHTML", false, content);
-		}
-	},
-
-	_insertWordContent : function(content) {
-		if (content && content.length > 0) {
-			// Cleanup Word content
-			var bull = String.fromCharCode(8226);
-			var middot = String.fromCharCode(183);
-			var cb;
-
-			if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
-				content = eval(cb + "('before', content)");
-
-			var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
-			for (var i=0; i<rl.length; i+=2)
-				content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
-
-			if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
-				content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');
-			}
-
-			content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");
-			content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");
-			content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list
-			content = content.replace(/<o:p><\/o:p>/gi, "");
-			content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks
-			content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), "");  // Word comments
-
-			if (tinyMCE.getParam("paste_remove_spans", true))
-				content = content.replace(/<\/?span[^>]*>/gi, "");
-
-			if (tinyMCE.getParam("paste_remove_styles", true))
-				content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");
-
-			content = content.replace(/<\/?font[^>]*>/gi, "");
-
-			// Strips class attributes.
-			switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) {
-				case "all":
-					content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
-					break;
-
-				case "mso":
-					content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");
-					break;
-			}
-
-			content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']);
-			content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
-			content = content.replace(/<\\?\?xml[^>]*>/gi, "");
-			content = content.replace(/<\/?\w+:[^>]*>/gi, "");
-			content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks
-			content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
-
-	//		content = content.replace(/\/?&nbsp;*/gi, ""); &nbsp;
-	//		content = content.replace(/<p>&nbsp;<\/p>/gi, '');
-
-			if (!tinyMCE.settings['force_p_newlines']) {
-				content = content.replace('', '' ,'gi');
-				content = content.replace('</p>', '<br /><br />' ,'gi');
-			}
-
-			if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) {
-				content = content.replace(/<\/?p[^>]*>/gi, "");
-			}
-
-			content = content.replace(/<\/?div[^>]*>/gi, "");
-
-			// Convert all middlot lists to UL lists
-			if (tinyMCE.getParam("paste_convert_middot_lists", true)) {
-				var div = document.createElement("div");
-				div.innerHTML = content;
-
-				// Convert all middot paragraphs to li elements
-				var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList");
-
-				while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull
-				while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot
-				while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull
-
-				content = div.innerHTML;
-			}
-
-			// Replace all headers with strong and fix some other issues
-			if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
-				content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');
-				content = content.replace(/<h[1-6]>/gi, '<p><b>');
-				content = content.replace(/<\/h[1-6]>/gi, '</b></p>');
-				content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');
-				content = content.replace(/^(&nbsp;)*/gi, '');
-			}
-
-			content = content.replace(/--list--/gi, ""); // Remove --list--
-
-			if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
-				content = eval(cb + "('after', content)");
-
-			// Insert cleaned content
-			tinyMCE.execCommand("mceInsertContent", false, content);
-
-			if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true))
-				window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread
-		}
-	},
-
-	_reEscape : function(s) {
-		var l = "?.\\*[](){}+^$:";
-		var o = "";
-
-		for (var i=0; i<s.length; i++) {
-			var c = s.charAt(i);
-
-			if (l.indexOf(c) != -1)
-				o += '\\' + c;
-			else
-				o += c;
-		}
-
-		return o;
-	},
-
-	_convertMiddots : function(div, search, class_name) {
-		var mdot = String.fromCharCode(183);
-		var bull = String.fromCharCode(8226);
-
-		var nodes = div.getElementsByTagName("p");
-		var prevul;
-		for (var i=0; i<nodes.length; i++) {
-			var p = nodes[i];
-
-			// Is middot
-			if (p.innerHTML.indexOf(search) == 0) {
-				var ul = document.createElement("ul");
-
-				if (class_name)
-					ul.className = class_name;
-
-				// Add the first one
-				var li = document.createElement("li");
-				li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
-				ul.appendChild(li);
-
-				// Add the rest
-				var np = p.nextSibling;
-				while (np) {
-			        // If the node is whitespace, then
-			        // ignore it and continue on.
-			        if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {
-			                np = np.nextSibling;
-			                continue;
-			        }
-
-					if (search == mdot) {
-					        if (np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)) {
-					                // Second level of nesting
-					                if (!prevul) {
-					                        prevul = ul;
-					                        ul = document.createElement("ul");
-					                        prevul.appendChild(ul);
-					                }
-					                np.innerHTML = np.innerHTML.replace(/^o/, '');
-					        } else {
-					                // Pop the stack if we're going back up to the first level
-					                if (prevul) {
-					                        ul = prevul;
-					                        prevul = null;
-					                }
-					                // Not element or middot paragraph
-					                if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
-					                        break;
-					        }
-					} else {
-					        // Not element or middot paragraph
-					        if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
-					                break;
-				        }
-
-					var cp = np.nextSibling;
-					var li = document.createElement("li");
-					li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
-					np.parentNode.removeChild(np);
-					ul.appendChild(li);
-					np = cp;
-				}
-
-				p.parentNode.replaceChild(ul, p);
-
-				return true;
-			}
-		}
-
-		return false;
-	},
-
-	_clipboardHTML : function() {
-		var div = document.getElementById('_TinyMCE_clipboardHTML');
-
-		if (!div) {
-			var div = document.createElement('DIV');
-			div.id = '_TinyMCE_clipboardHTML';
-
-			with (div.style) {
-				visibility = 'hidden';
-				overflow = 'hidden';
-				position = 'absolute';
-				width = 1;
-				height = 1;
-			}
-
-			document.body.appendChild(div);
-		}
-
-		div.innerHTML = '';
-		var rng = document.body.createTextRange();
-		rng.moveToElementText(div);
-		rng.execCommand('Paste');
-		var html = div.innerHTML;
-		div.innerHTML = '';
-		return html;
-	}
-};
-
-tinyMCE.addPlugin("paste", TinyMCE_PastePlugin);
+/**
+ * $Id: editor_plugin_src.js 1134 2009-05-21 12:48:25Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var each = tinymce.each;
+
+	tinymce.create('tinymce.plugins.PastePlugin', {
+		init : function(ed, url) {
+			var t = this, cb;
+
+			t.editor = ed;
+			t.url = url;
+
+			// Setup plugin events
+			t.onPreProcess = new tinymce.util.Dispatcher(t);
+			t.onPostProcess = new tinymce.util.Dispatcher(t);
+
+			// Register default handlers
+			t.onPreProcess.add(t._preProcess);
+			t.onPostProcess.add(t._postProcess);
+
+			// Register optional preprocess handler
+			t.onPreProcess.add(function(pl, o) {
+				ed.execCallback('paste_preprocess', pl, o);
+			});
+
+			// Register optional postprocess
+			t.onPostProcess.add(function(pl, o) {
+				ed.execCallback('paste_postprocess', pl, o);
+			});
+
+			// This function executes the process handlers and inserts the contents
+			function process(h) {
+				var dom = ed.dom, o = {content : h};
+
+				// Execute pre process handlers
+				t.onPreProcess.dispatch(t, o);
+
+				// Create DOM structure
+				o.node = dom.create('div', 0, o.content);
+
+				// Execute post process handlers
+				t.onPostProcess.dispatch(t, o);
+
+				// Serialize content
+				o.content = ed.serializer.serialize(o.node, {getInner : 1});
+
+				//  Insert cleaned content. We need to handle insertion of contents containing block elements separately
+				if (/<(p|h[1-6]|ul|ol)/.test(o.content))
+					t._insertBlockContent(ed, dom, o.content);
+				else
+					t._insert(o.content);
+			};
+
+			// Add command for external usage
+			ed.addCommand('mceInsertClipboardContent', function(u, v) {
+				process(v);
+			});
+
+			// This function grabs the contents from the clipboard by adding a
+			// hidden div and placing the caret inside it and after the browser paste
+			// is done it grabs that contents and processes that
+			function grabContent(e) {
+				var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY;
+
+				if (dom.get('_mcePaste'))
+					return;
+
+				// Create container to paste into
+				n = dom.add(body, 'div', {id : '_mcePaste'}, '&nbsp;');
+
+				// If contentEditable mode we need to find out the position of the closest element
+				if (body != ed.getDoc().body)
+					posY = dom.getPos(ed.selection.getStart(), body).y;
+				else
+					posY = body.scrollTop;
+
+				// Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles
+				dom.setStyles(n, {
+					position : 'absolute',
+					left : -10000,
+					top : posY,
+					width : 1,
+					height : 1,
+					overflow : 'hidden'
+				});
+
+				if (tinymce.isIE) {
+					// Select the container
+					rng = dom.doc.body.createTextRange();
+					rng.moveToElementText(n);
+					rng.execCommand('Paste');
+
+					// Remove container
+					dom.remove(n);
+
+					// Process contents
+					process(n.innerHTML);
+
+					return tinymce.dom.Event.cancel(e);
+				} else {
+					or = ed.selection.getRng();
+
+					// Move caret into hidden div
+					n = n.firstChild;
+					rng = ed.getDoc().createRange();
+					rng.setStart(n, 0);
+					rng.setEnd(n, 1);
+					sel.setRng(rng);
+
+					// Wait a while and grab the pasted contents
+					window.setTimeout(function() {
+						var n = dom.get('_mcePaste'), h;
+
+						// Webkit clones the _mcePaste div for some odd reason so this will ensure that we get the real new div not the old empty one
+						n.id = '_mceRemoved';
+						dom.remove(n);
+						n = dom.get('_mcePaste') || n;
+
+						// Grab the HTML contents
+						// We need to look for a apple style wrapper on webkit it also adds a div wrapper if you copy/paste the body of the editor
+						// It's amazing how strange the contentEditable mode works in WebKit
+						h = (dom.select('> span.Apple-style-span div', n)[0] || dom.select('> span.Apple-style-span', n)[0] || n).innerHTML;
+
+						// Remove hidden div and restore selection
+						dom.remove(n);
+
+						// Restore the old selection
+						if (or)
+							sel.setRng(or);
+
+						process(h);
+					}, 0);
+				}
+			};
+
+			// Check if we should use the new auto process method			
+			if (ed.getParam('paste_auto_cleanup_on_paste', true)) {
+				// Is it's Opera or older FF use key handler
+				if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
+					ed.onKeyDown.add(function(ed, e) {
+						if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
+							grabContent(e);
+					});
+				} else {
+					// Grab contents on paste event on Gecko and WebKit
+					ed.onPaste.addToTop(function(ed, e) {
+						return grabContent(e);
+					});
+				}
+			}
+
+			// Block all drag/drop events
+			if (ed.getParam('paste_block_drop')) {
+				ed.onInit.add(function() {
+					ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) {
+						e.preventDefault();
+						e.stopPropagation();
+
+						return false;
+					});
+				});
+			}
+
+			// Add legacy support
+			t._legacySupport();
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Paste text/word',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		_preProcess : function(pl, o) {
+			var ed = this.editor, h = o.content, process, stripClass;
+
+			//console.log('Before preprocess:' + o.content);
+
+			function process(items) {
+				each(items, function(v) {
+					// Remove or replace
+					if (v.constructor == RegExp)
+						h = h.replace(v, '');
+					else
+						h = h.replace(v[0], v[1]);
+				});
+			};
+
+			// Process away some basic content
+			process([
+				/^\s*(&nbsp;)+/g,											// nbsp entities at the start of contents
+				/(&nbsp;|<br[^>]*>)+\s*$/g									// nbsp entities at the end of contents
+			]);
+
+			// Detect Word content and process it more aggressive
+			if (/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(h)) {
+				o.wordContent = true; // Mark the pasted contents as word specific content
+				//console.log('Word contents detected.');
+
+				if (ed.getParam('paste_convert_middot_lists', true)) {
+					process([
+						[/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'],			// Convert supportLists to a list item marker
+						[/(<span[^>]+:\s*symbol[^>]+>)/gi, '$1__MCE_ITEM__'],				// Convert symbol spans to list items
+						[/(<span[^>]+mso-list:[^>]+>)/gi, '$1__MCE_ITEM__']				// Convert mso-list to item marker
+					]);
+				}
+
+				process([
+					/<!--[\s\S]+?-->/gi,												// Word comments
+					/<\/?(img|font|meta|link|style|div|v:\w+)[^>]*>/gi,					// Remove some tags including VML content
+					/<\\?\?xml[^>]*>/gi,												// XML namespace declarations
+					/<\/?o:[^>]*>/gi,													// MS namespaced elements <o:tag>
+					/ (id|name|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,				// on.., class, style and language attributes with quotes
+					/ (id|name|language|type|on\w+|v:\w+)=(\w+)/gi,						// on.., class, style and language attributes without quotes (IE)
+					[/<(\/?)s>/gi, '<$1strike>'],										// Convert <s> into <strike> for line-though
+					/<script[^>]+>[\s\S]*?<\/script>/gi,								// All scripts elements for msoShowComment for example
+					[/&nbsp;/g, '\u00a0']												// Replace nsbp entites to char since it's easier to handle
+				]);
+
+				// Remove all spans if no styles is to be retained
+				if (!ed.getParam('paste_retain_style_properties')) {
+					process([
+						/<\/?(span)[^>]*>/gi
+					]);
+				}
+			}
+
+			// Allow for class names to be retained if desired; either all, or just the ones from Word
+			// Note that the paste_strip_class_attributes: 'none, verify_css_classes: true is also a good variation.
+			stripClass = ed.getParam('paste_strip_class_attributes', 'all');
+			if (stripClass != 'none') {
+				if (stripClass == 'all') {
+					process([
+						/ class=\"([^\"]*)\"/gi,	// class attributes with quotes
+						/ class=(\w+)/gi			// class attributes without quotes (IE)
+					]);
+				} else { // Only strip the 'mso*' classes
+					process([
+						/ class=\"(mso[^\"]*)\"/gi,	// class attributes with quotes
+						/ class=(mso\w+)/gi			// class attributes without quotes (IE)
+					]);
+				}
+			}
+
+			// Remove spans option
+			if (ed.getParam('paste_remove_spans')) {
+				process([
+					/<\/?(span)[^>]*>/gi
+				]);
+			}
+
+			//console.log('After preprocess:' + h);
+
+			o.content = h;
+		},
+
+		/**
+		 * Various post process items.
+		 */
+		_postProcess : function(pl, o) {
+			var t = this, ed = t.editor, dom = ed.dom, styleProps;
+
+			if (o.wordContent) {
+				// Remove named anchors or TOC links
+				each(dom.select('a', o.node), function(a) {
+					if (!a.href || a.href.indexOf('#_Toc') != -1)
+						dom.remove(a, 1);
+				});
+
+				if (t.editor.getParam('paste_convert_middot_lists', true))
+					t._convertLists(pl, o);
+
+				// Process styles
+				styleProps = ed.getParam('paste_retain_style_properties'); // retained properties
+
+				// If string property then split it
+				if (tinymce.is(styleProps, 'string'))
+					styleProps = tinymce.explode(styleProps);
+
+				// Retains some style properties
+				each(dom.select('*', o.node), function(el) {
+					var newStyle = {}, npc = 0, i, sp, sv;
+
+					// Store a subset of the existing styles
+					if (styleProps) {
+						for (i = 0; i < styleProps.length; i++) {
+							sp = styleProps[i];
+							sv = dom.getStyle(el, sp);
+
+							if (sv) {
+								newStyle[sp] = sv;
+								npc++;
+							}
+						}
+					}
+
+					// Remove all of the existing styles
+					dom.setAttrib(el, 'style', '');
+
+					if (styleProps && npc > 0)
+						dom.setStyles(el, newStyle); // Add back the stored subset of styles
+					else // Remove empty span tags that do not have class attributes
+						if (el.nodeName == 'SPAN' && !el.className)
+							dom.remove(el, true);
+				});
+			}
+
+			// Remove all style information or only specifically on WebKit to avoid the style bug on that browser
+			if (ed.getParam("paste_remove_styles") || (ed.getParam("paste_remove_styles_if_webkit") && tinymce.isWebKit)) {
+				each(dom.select('*[style]', o.node), function(el) {
+					el.removeAttribute('style');
+					el.removeAttribute('mce_style');
+				});
+			} else {
+				if (tinymce.isWebKit) {
+					// We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />
+					// Removing the mce_style that contains the real value will force the Serializer engine to compress the styles
+					each(dom.select('*', o.node), function(el) {
+						el.removeAttribute('mce_style');
+					});
+				}
+			}
+		},
+
+		/**
+		 * Converts the most common bullet and number formats in Office into a real semantic UL/LI list.
+		 */
+		_convertLists : function(pl, o) {
+			var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html;
+
+			// Convert middot lists into real semantic lists
+			each(dom.select('p', o.node), function(p) {
+				var sib, val = '', type, html, idx, parents;
+
+				// Get text node value at beginning of paragraph
+				for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling)
+					val += sib.nodeValue;
+
+				val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/&nbsp;/g, '\u00a0');
+
+				// Detect unordered lists look for bullets
+				if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(val))
+					type = 'ul';
+
+				// Detect ordered lists 1., a. or ixv.
+				if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(val))
+					type = 'ol';
+
+				// Check if node value matches the list pattern: o&nbsp;&nbsp;
+				if (type) {
+					margin = parseFloat(p.style.marginLeft || 0);
+
+					if (margin > lastMargin)
+						levels.push(margin);
+
+					if (!listElm || type != lastType) {
+						listElm = dom.create(type);
+						dom.insertAfter(listElm, p);
+					} else {
+						// Nested list element
+						if (margin > lastMargin) {
+							listElm = li.appendChild(dom.create(type));
+						} else if (margin < lastMargin) {
+							// Find parent level based on margin value
+							idx = tinymce.inArray(levels, margin);
+							parents = dom.getParents(listElm.parentNode, type);
+							listElm = parents[parents.length - 1 - idx] || listElm;
+						}
+					}
+
+					// Remove middot or number spans if they exists
+					each(dom.select('span', p), function(span) {
+						var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, '');
+
+						// Remove span with the middot or the number
+						if (type == 'ul' && /^[\u2022\u00b7\u00a7\u00d8o]/.test(html))
+							dom.remove(span);
+						else if (/^[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(html))
+							dom.remove(span);
+					});
+
+					html = p.innerHTML;
+
+					// Remove middot/list items
+					if (type == 'ul')
+						html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*(&nbsp;|\u00a0)+\s*/, '');
+					else
+						html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/, '');
+
+					// Create li and add paragraph data into the new li
+					li = listElm.appendChild(dom.create('li', 0, html));
+					dom.remove(p);
+
+					lastMargin = margin;
+					lastType = type;
+				} else
+					listElm = lastMargin = 0; // End list element
+			});
+
+			// Remove any left over makers
+			html = o.node.innerHTML;
+			if (html.indexOf('__MCE_ITEM__') != -1)
+				o.node.innerHTML = html.replace(/__MCE_ITEM__/g, '');
+		},
+
+		/**
+		 * This method will split the current block parent and insert the contents inside the split position.
+		 * This logic can be improved so text nodes at the start/end remain in the start/end block elements
+		 */
+		_insertBlockContent : function(ed, dom, content) {
+			var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight;
+
+			function select(n) {
+				var r;
+
+				if (tinymce.isIE) {
+					r = ed.getDoc().body.createTextRange();
+					r.moveToElementText(n);
+					r.collapse(false);
+					r.select();
+				} else {
+					sel.select(n, 1);
+					sel.collapse(false);
+				}
+			};
+
+			// Insert a marker for the caret position
+			this._insert('<span id="_marker">&nbsp;</span>', 1);
+			marker = dom.get('_marker');
+			parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol');
+
+			if (parentBlock) {
+				// Split parent block
+				marker = dom.split(parentBlock, marker);
+
+				// Insert nodes before the marker
+				each(dom.create('div', 0, content).childNodes, function(n) {
+					last = marker.parentNode.insertBefore(n.cloneNode(true), marker);
+				});
+
+				// Move caret after marker
+				select(last);
+			} else {
+				dom.setOuterHTML(marker, content);
+				sel.select(ed.getBody(), 1);
+				sel.collapse(0);
+			}
+
+			dom.remove('_marker'); // Remove marker if it's left
+
+			// Get element, position and height
+			elm = sel.getStart();
+			vp = dom.getViewPort(ed.getWin());
+			y = ed.dom.getPos(elm).y;
+			elmHeight = elm.clientHeight;
+
+			// Is element within viewport if not then scroll it into view
+			if (y < vp.y || y + elmHeight > vp.y + vp.h)
+				ed.getDoc().body.scrollTop = y < vp.y ? y : y - vp.h + 25;
+		},
+
+		/**
+		 * Inserts the specified contents at the caret position.
+		 */
+		_insert : function(h, skip_undo) {
+			var ed = this.editor;
+
+			// First delete the contents seems to work better on WebKit
+			if (!ed.selection.isCollapsed())
+				ed.getDoc().execCommand('Delete', false, null);
+
+			// It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents
+			ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo});
+		},
+
+		/**
+		 * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.
+		 */
+		_legacySupport : function() {
+			var t = this, ed = t.editor;
+
+			// Register commands for backwards compatibility
+			each(['mcePasteText', 'mcePasteWord'], function(cmd) {
+				ed.addCommand(cmd, function() {
+					ed.windowManager.open({
+						file : t.url + (cmd == 'mcePasteText' ? '/pastetext.htm' : '/pasteword.htm'),
+						width : parseInt(ed.getParam("paste_dialog_width", "450")),
+						height : parseInt(ed.getParam("paste_dialog_height", "400")),
+						inline : 1
+					});
+				});
+			});
+
+			// Register buttons for backwards compatibility
+			ed.addButton('pastetext', {title : 'paste.paste_text_desc', cmd : 'mcePasteText'});
+			ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord'});
+			ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'selectall'});
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('paste', tinymce.plugins.PastePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,36 @@
+tinyMCEPopup.requireLangPack();
+
+var PasteTextDialog = {
+	init : function() {
+		this.resize();
+	},
+
+	insert : function() {
+		var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines;
+
+		// Convert linebreaks into paragraphs
+		if (document.getElementById('linebreaks').checked) {
+			lines = h.split(/\r?\n/);
+			if (lines.length > 1) {
+				h = '';
+				tinymce.each(lines, function(row) {
+					h += '<p>' + row + '</p>';
+				});
+			}
+		}
+
+		tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, h);
+		tinyMCEPopup.close();
+	},
+
+	resize : function() {
+		var vp = tinyMCEPopup.dom.getViewPort(window), el;
+
+		el = document.getElementById('content');
+
+		el.style.width  = (vp.w - 20) + 'px';
+		el.style.height = (vp.h - 90) + 'px';
+	}
+};
+
+tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,51 @@
+tinyMCEPopup.requireLangPack();
+
+var PasteWordDialog = {
+	init : function() {
+		var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = '';
+
+		// Create iframe
+		el.innerHTML = '<iframe id="iframe" src="javascript:\'\';" frameBorder="0" style="border: 1px solid gray"></iframe>';
+		ifr = document.getElementById('iframe');
+		doc = ifr.contentWindow.document;
+
+		// Force absolute CSS urls
+		css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")];
+		css = css.concat(tinymce.explode(ed.settings.content_css) || []);
+		tinymce.each(css, function(u) {
+			cssHTML += '<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />';
+		});
+
+		// Write content into iframe
+		doc.open();
+		doc.write('<html><head>' + cssHTML + '</head><body class="mceContentBody" spellcheck="false"></body></html>');
+		doc.close();
+
+		doc.designMode = 'on';
+		this.resize();
+
+		window.setTimeout(function() {
+			ifr.contentWindow.focus();
+		}, 10);
+	},
+
+	insert : function() {
+		var h = document.getElementById('iframe').contentWindow.document.body.innerHTML;
+
+		tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, h);
+		tinyMCEPopup.close();
+	},
+
+	resize : function() {
+		var vp = tinyMCEPopup.dom.getViewPort(window), el;
+
+		el = document.getElementById('iframe');
+
+		if (el) {
+			el.style.width  = (vp.w - 20) + 'px';
+			el.style.height = (vp.h - 90) + 'px';
+		}
+	}
+};
+
+tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,5 @@
+tinyMCE.addI18n('ca.paste_dlg',{
+text_title:"Utilitza CTRL+V al teclat per enganxar el text a la finestra.",
+text_linebreaks:"Mantingues els salts de l\u00EDnia",
+word_title:"Utilitza CTRL+V al teclat per enganxar el text a la finestra."
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,5 @@
+tinyMCE.addI18n('en.paste_dlg',{
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,5 @@
+tinyMCE.addI18n('es.paste_dlg',{
+text_title:"Use CTRL+V en su teclado para pegar el texto en la ventana.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V en su teclado para pegar el texto en la ventana."
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es.js	2005-10-18 16:47:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
-// Last Updated : October 2005
-// TinyMCE Version : 2.0RC3
-
-tinyMCE.addToLang('',{
-paste_text_desc : 'Pegar como texto plano',
-paste_text_title : 'Use CTRL+V para pegar el texto en la ventana.',
-paste_text_linebreaks : 'Mantener saltos de linea',
-paste_word_desc : 'Pegar desde Word',
-paste_word_title : 'Use CTRL+V para pegar el texto en la ventana.',
-selectall_desc : 'Seleccionar todo'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,34 +1,33 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_paste_text_desc}</title>
+	<title>{#paste.paste_text_desc}</title>
 	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/pastetext.js"></script>
-	<base target="_self" />
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/pastetext.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
-<form name="source" onsubmit="saveContent();">
-	<div style="float: left" class="title">{$lang_paste_text_desc}</div>
+<body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
+	<form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
+		<div style="float: left" class="title">{#paste.paste_text_desc}</div>
 
-	<div style="float: right">
-		<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{$lang_paste_text_linebreaks}</label>
-	</div>
+		<div style="float: right">
+			<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>
+		</div>
 
-	<br style="clear: both" />
+		<br style="clear: both" />
 
-	<div>{$lang_paste_text_title}</div>
+		<div>{#paste_dlg.text_title}</div>
 
-	<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>
+		<textarea id="content" name="content" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
 
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="button" name="insert" value="{$lang_insert}" onclick="saveContent();" id="insert" />
-		</div>
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="submit" name="insert" value="{#insert}" id="insert" />
+			</div>
 
-		<div style="float: right">
-			<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+			<div style="float: right">
+				<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+			</div>
 		</div>
-	</div>
-</form>
+	</form>
 </body> 
 </html>
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm	2009-06-30 22:01:32.000000000 +0200
@@ -1,27 +1,25 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<title>{$lang_paste_word_desc}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/pasteword.js"></script>
-	<link href="css/pasteword.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
+	<title>{#paste.paste_word_desc}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/pasteword.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
-	<form name="source" onsubmit="saveContent();" action="#">
-		<div class="title">{$lang_paste_word_desc}</div>
+<body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
+	<form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
+		<div class="title">{#paste.paste_word_desc}</div>
 
-		<div>{$lang_paste_word_title}</div>
+		<div>{#paste_dlg.word_title}</div>
 
 		<div id="iframecontainer"></div>
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="saveContent();" />
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
 	</form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('preview');var TinyMCE_PreviewPlugin={getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"preview":return tinyMCE.getButtonHTML(cn,'lang_preview_desc','{$pluginurl}/images/preview.gif','mcePreview')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes",inline:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")})}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="",i;var c=tinyMCE.getContent();var pos=c.indexOf('<body'),pos2,css=tinyMCE.getParam("content_css").split(',');if(pos!=-1){pos=c.indexOf('>',pos);pos2=c.lastIndexOf('</body>');c=c.substring(pos+1,pos2)}html+=tinyMCE.getParam('doctype');html+='<html xmlns="http://www.w3.org/1999/xhtml">';html+='<head>';html+='<title>'+tinyMCE.getLang('lang_preview_desc')+'</title>';html+='<base href="'+tinyMCE.settings['base_href']+'" />';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(i=0;i<css.length;i++)html+='<link href="'+css[i]+'" rel="stylesheet" type="text/css" />';html+='<script type="text/javascript">';html+='window.opener.TinyMCE_PreviewPlugin._setDoc(document);';html+='window.opener.TinyMCE_PreviewPlugin._setWin(window);';html+='writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';html+='writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';html+='writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';html+='writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';html+='writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';html+='writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';html+='</script>';html+='</head>';html+='<body dir="'+tinyMCE.getParam("directionality")+'" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';html+=c;html+='</body>';html+='</html>';win.document.write(html);win.document.close()}return true}return false},_setDoc:function(d){TinyMCE_PreviewPlugin._doc=d;d._embeds=new Array()},_setWin:function(d){TinyMCE_PreviewPlugin._win=d},_onLoad:function(){var nl,i,el=new Array(),d=TinyMCE_PreviewPlugin._doc,sv,ne;nl=d.getElementsByTagName("script");for(i=0;i<nl.length;i++){sv=tinyMCE.isMSIE?nl[i].innerHTML:nl[i].firstChild.nodeValue;if(new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*','g').test(sv))el[el.length]=nl[i]}for(i=0;i<el.length;i++){ne=d.createElement("div");ne.innerHTML=d._embeds[i];el[i].parentNode.insertBefore(ne.firstChild,el[i])}},_writeFlash:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('D27CDB6E-AE6D-11cf-96B8-444553540000','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','application/x-shockwave-flash',p)},_writeShockWave:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('166B1BCA-3F9C-11CF-8075-444553540000','http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0','application/x-director',p)},_writeQuickTime:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('02BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0','video/quicktime',p)},_writeRealMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','audio/x-pn-realaudio-plugin',p)},_writeWindowsMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);p.url=p.src;TinyMCE_PreviewPlugin._writeEmbed('6BF52A52-394A-11D3-B153-00C04F79FAA6','http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701','application/x-mplayer2',p)},_writeEmbed:function(cls,cb,mt,p){var h='',n,d=TinyMCE_PreviewPlugin._doc,ne,c;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?'height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'align="'+p.align+'"':'';h+='>';for(n in p)h+='<param name="'+n+'" value="'+p[n]+'">';h+='<embed type="'+mt+'"';for(n in p)h+=n+'="'+p[n]+'" ';h+='></embed></object>';d._embeds[d._embeds.length]=h}};tinyMCE.addPlugin("preview",TinyMCE_PreviewPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,205 +1,50 @@
 /**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ * $Id: editor_plugin_src.js 1056 2009-03-13 12:47:03Z spocke $
  *
  * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
  */
 
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('preview');
-
-var TinyMCE_PreviewPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Preview',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	/**
-	 * Returns the HTML contents of the preview control.
-	 */
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "preview":
-				return tinyMCE.getButtonHTML(cn, 'lang_preview_desc', '{$pluginurl}/images/preview.gif', 'mcePreview');
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the mcePreview command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mcePreview":
-				var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
-				var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
-				var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
-
-				// Use a custom preview page
-				if (previewPage) {
-					var template = new Array();
-
-					template['file'] = previewPage;
-					template['width'] = previewWidth;
-					template['height'] = previewHeight;
-
-					tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", inline : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
-				} else {
-					var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height="  + previewHeight);
-					var html = "", i;
-					var c = tinyMCE.getContent();
-					var pos = c.indexOf('<body'), pos2, css = tinyMCE.getParam("content_css").split(',');
-
-					if (pos != -1) {
-						pos = c.indexOf('>', pos);
-						pos2 = c.lastIndexOf('</body>');
-						c = c.substring(pos + 1, pos2);
-					}
-
-					html += tinyMCE.getParam('doctype');
-					html += '<html xmlns="http://www.w3.org/1999/xhtml">';
-					html += '<head>';
-					html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
-					html += '<base href="' + tinyMCE.settings['base_href'] + '" />';
-					html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
-
-					for (i=0; i<css.length; i++)
-						html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
-
-					html += '<script type="text/javascript">';
-					html += 'window.opener.TinyMCE_PreviewPlugin._setDoc(document);';
-					html += 'window.opener.TinyMCE_PreviewPlugin._setWin(window);';
-					html += 'writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';
-					html += 'writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';
-					html += 'writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';
-					html += 'writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';
-					html += 'writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';
-					html += 'writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';
-					html += '</script>';
-					html += '</head>';
-					html += '<body dir="' + tinyMCE.getParam("directionality") + '" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';
-					html += c;
-					html += '</body>';
-					html += '</html>';
-
-					win.document.write(html);
-					win.document.close();
-				}
-
-				return true;
-		}
-
-		return false;
-	},
-
-	_setDoc : function(d) {
-		TinyMCE_PreviewPlugin._doc = d;
-		d._embeds = new Array();
-	},
-
-	_setWin : function(d) {
-		TinyMCE_PreviewPlugin._win = d;
-	},
-
-	_onLoad : function() {
-		var nl, i, el = new Array(), d = TinyMCE_PreviewPlugin._doc, sv, ne;
-
-		nl = d.getElementsByTagName("script");
-		for (i=0; i<nl.length; i++) {
-			sv = tinyMCE.isMSIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
-
-			if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
-				el[el.length] = nl[i];
+(function() {
+	tinymce.create('tinymce.plugins.Preview', {
+		init : function(ed, url) {
+			var t = this, css = tinymce.explode(ed.settings.content_css);
+
+			t.editor = ed;
+
+			// Force absolute CSS urls	
+			tinymce.each(css, function(u, k) {
+				css[k] = ed.documentBaseURI.toAbsolute(u);
+			});
+
+			ed.addCommand('mcePreview', function() {
+				ed.windowManager.open({
+					file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"),
+					width : parseInt(ed.getParam("plugin_preview_width", "550")),
+					height : parseInt(ed.getParam("plugin_preview_height", "600")),
+					resizable : "yes",
+					scrollbars : "yes",
+					popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"),
+					inline : ed.getParam("plugin_preview_inline", 1)
+				}, {
+					base : ed.documentBaseURI.getURI()
+				});
+			});
+
+			ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Preview',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
 		}
+	});
 
-		for (i=0; i<el.length; i++) {
-			ne = d.createElement("div");
-			ne.innerHTML = d._embeds[i];
-			el[i].parentNode.insertBefore(ne.firstChild, el[i]);
-		}
-	},
-
-	_writeFlash : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'D27CDB6E-AE6D-11cf-96B8-444553540000',
-			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-			'application/x-shockwave-flash',
-			p
-		);
-	},
-
-	_writeShockWave : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'166B1BCA-3F9C-11CF-8075-444553540000',
-			'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-			'application/x-director',
-			p
-		);
-	},
-
-	_writeQuickTime : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-			'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-			'video/quicktime',
-			p
-		);
-	},
-
-	_writeRealMedia : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-			'audio/x-pn-realaudio-plugin',
-			p
-		);
-	},
-
-	_writeWindowsMedia : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		p.url = p.src;
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-			'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-			'application/x-mplayer2',
-			p
-		);
-	},
-
-	_writeEmbed : function(cls, cb, mt, p) {
-		var h = '', n, d = TinyMCE_PreviewPlugin._doc, ne, c;
-
-		h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-		h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-		h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-		h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-		h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-		h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-		h += '>';
-
-		for (n in p)
-			h += '<param name="' + n + '" value="' + p[n] + '">';
-
-		h += '<embed type="' + mt + '"';
-
-		for (n in p)
-			h += n + '="' + p[n] + '" ';
-
-		h += '></embed></object>';
-
-		d._embeds[d._embeds.length] = h;
-	}
-};
-
-tinyMCE.addPlugin("preview", TinyMCE_PreviewPlugin);
+	// Register plugin
+	tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/example.html 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/example.html
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/example.html	2006-11-07 04:01:10.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/example.html	2009-06-30 22:01:32.000000000 +0200
@@ -2,13 +2,27 @@
 <head>
 <script language="javascript" src="../../tiny_mce_popup.js"></script>
 <script type="text/javascript" src="jscripts/embed.js"></script>
+<script type="text/javascript">
+tinyMCEPopup.onInit.add(function(ed) {
+	var dom = tinyMCEPopup.dom;
+
+	// Load editor content_css
+	tinymce.each(ed.settings.content_css.split(','), function(u) {
+		dom.loadCSS(ed.documentBaseURI.toAbsolute(u));
+	});
+
+	// Place contents inside div container
+	dom.setHTML('content', ed.getContent());
+});
+</script>
 <title>Example of a custom preview page</title>
-<link href="{$content_css}" rel="stylesheet" type="text/css" />
 </head>
 <body>
 
 Editor contents: <br />
-{$content}
+<div id="content">
+<!-- Gets filled with editor contents -->
+</div>
 
 </body>
 </html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,73 +1,73 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
-
-function writeFlash(p) {
-	writeEmbed(
-		'D27CDB6E-AE6D-11cf-96B8-444553540000',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'application/x-shockwave-flash',
-		p
-	);
-}
-
-function writeShockWave(p) {
-	writeEmbed(
-	'166B1BCA-3F9C-11CF-8075-444553540000',
-	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-	'application/x-director',
-		p
-	);
-}
-
-function writeQuickTime(p) {
-	writeEmbed(
-		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-		'video/quicktime',
-		p
-	);
-}
-
-function writeRealMedia(p) {
-	writeEmbed(
-		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'audio/x-pn-realaudio-plugin',
-		p
-	);
-}
-
-function writeWindowsMedia(p) {
-	p.url = p.src;
-	writeEmbed(
-		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-		'application/x-mplayer2',
-		p
-	);
-}
-
-function writeEmbed(cls, cb, mt, p) {
-	var h = '', n;
-
-	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-	h += '>';
-
-	for (n in p)
-		h += '<param name="' + n + '" value="' + p[n] + '">';
-
-	h += '<embed type="' + mt + '"';
-
-	for (n in p)
-		h += n + '="' + p[n] + '" ';
-
-	h += '></embed></object>';
-
-	document.write(h);
-}
+/**
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
+ */
+
+function writeFlash(p) {
+	writeEmbed(
+		'D27CDB6E-AE6D-11cf-96B8-444553540000',
+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+		'application/x-shockwave-flash',
+		p
+	);
+}
+
+function writeShockWave(p) {
+	writeEmbed(
+	'166B1BCA-3F9C-11CF-8075-444553540000',
+	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+	'application/x-director',
+		p
+	);
+}
+
+function writeQuickTime(p) {
+	writeEmbed(
+		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+		'video/quicktime',
+		p
+	);
+}
+
+function writeRealMedia(p) {
+	writeEmbed(
+		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+		'audio/x-pn-realaudio-plugin',
+		p
+	);
+}
+
+function writeWindowsMedia(p) {
+	p.url = p.src;
+	writeEmbed(
+		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
+		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+		'application/x-mplayer2',
+		p
+	);
+}
+
+function writeEmbed(cls, cb, mt, p) {
+	var h = '', n;
+
+	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+	h += '>';
+
+	for (n in p)
+		h += '<param name="' + n + '" value="' + p[n] + '">';
+
+	h += '<embed type="' + mt + '"';
+
+	for (n in p)
+		h += n + '="' + p[n] + '" ';
+
+	h += '></embed></object>';
+
+	document.write(h);
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/langs/es.js	2005-10-18 16:47:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
-// Last Updated : October 2005
-// TinyMCE Version : 2.0RC3
-
-tinyMCE.addToLang('',{
-preview_desc : 'Vista previa'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/preview.html 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/preview.html
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/preview.html	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/preview/preview.html	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+<script type="text/javascript" src="jscripts/embed.js"></script>
+<script type="text/javascript"><!--
+document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');
+// -->
+</script>
+<title>{#preview.preview_desc}</title>
+</head>
+<body id="content">
+<script type="text/javascript">
+	document.write(tinyMCEPopup.editor.getContent());
+</script>
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('print');var TinyMCE_PrintPlugin={getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"print":return tinyMCE.getButtonHTML(cn,'lang_print_desc','{$pluginurl}/images/print.gif','mcePrint')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return true}return false}};tinyMCE.addPlugin("print",TinyMCE_PrintPlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,47 +1,31 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import theme	specific language pack */
-tinyMCE.importPluginLanguagePack('print');
-
-var TinyMCE_PrintPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Print',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	getControlHTML : function(cn)	{
-		switch (cn) {
-			case "print":
-				return tinyMCE.getButtonHTML(cn, 'lang_print_desc', '{$pluginurl}/images/print.gif', 'mcePrint');
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes	the	search/replace commands.
-	 */
-	execCommand : function(editor_id, element, command,	user_interface,	value) {
-		// Handle commands
-		switch (command) {
-			case "mcePrint":
-				tinyMCE.getInstanceById(editor_id).contentWindow.print();
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	}
-};
-
-tinyMCE.addPlugin("print", TinyMCE_PrintPlugin);
+/**
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.Print', {
+		init : function(ed, url) {
+			ed.addCommand('mcePrint', function() {
+				ed.getWin().print();
+			});
+
+			ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Print',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('print', tinymce.plugins.Print);
+})();
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/langs/es.js	2005-10-18 16:47:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/print/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
-// Last Updated : October 2005
-// TinyMCE Version : 2.0RC3
-
-tinyMCE.addToLang('',{
-print_desc : 'Imprimir'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+<!-- WebKit -->
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+(function(){var a=tinymce.dom.Event,c=tinymce.grep,d=tinymce.each,b=tinymce.inArray;function e(j,i,h){var g,k;g=j.createTreeWalker(i,NodeFilter.SHOW_ALL,null,false);while(k=g.nextNode()){if(h){if(!h(k)){return false}}if(k.nodeType==3&&k.nodeValue&&/[^\s\u00a0]+/.test(k.nodeValue)){return false}if(k.nodeType==1&&/^(HR|IMG|TABLE)$/.test(k.nodeName)){return false}}return true}tinymce.create("tinymce.plugins.Safari",{init:function(f){var g=this,h;if(!tinymce.isWebKit){return}g.editor=f;g.webKitFontSizes=["x-small","small","medium","large","x-large","xx-large","-webkit-xxx-large"];g.namedFontSizes=["xx-small","x-small","small","medium","large","x-large","xx-large"];f.addCommand("CreateLink",function(k,j){var m=f.selection.getNode(),l=f.dom,i;if(m&&(/^(left|right)$/i.test(l.getStyle(m,"float",1))||/^(left|right)$/i.test(l.getAttrib(m,"align")))){i=l.create("a",{href:j},m.cloneNode());m.parentNode.replaceChild(i,m);f.selection.select(i)}else{f.getDoc().execCommand("CreateLink",false,j)}});f.onKeyUp.add(function(j,o){var l,i,m,p,k;if(o.keyCode==46||o.keyCode==8){i=j.getBody();l=i.innerHTML;k=j.selection;if(i.childNodes.length==1&&!/<(img|hr)/.test(l)&&tinymce.trim(l.replace(/<[^>]+>/g,"")).length==0){j.setContent('<p><br mce_bogus="1" /></p>',{format:"raw"});p=i.firstChild;m=k.getRng();m.setStart(p,0);m.setEnd(p,0);k.setRng(m)}}});f.addCommand("FormatBlock",function(j,i){var l=f.dom,k=l.getParent(f.selection.getNode(),l.isBlock);if(k){l.replace(l.create(i),k,1)}else{f.getDoc().execCommand("FormatBlock",false,i)}});f.addCommand("mceInsertContent",function(j,i){f.getDoc().execCommand("InsertText",false,"mce_marker");f.getBody().innerHTML=f.getBody().innerHTML.replace(/mce_marker/g,f.dom.processHTML(i)+'<span id="_mce_tmp">XX</span>');f.selection.select(f.dom.get("_mce_tmp"));f.getDoc().execCommand("Delete",false," ")});f.onKeyPress.add(function(o,p){var q,v,r,l,j,k,i,u,m,t,s;if(p.keyCode==13){i=o.selection;q=i.getNode();if(p.shiftKey||o.settings.force_br_newlines&&q.nodeName!="LI"){g._insertBR(o);a.cancel(p)}if(v=h.getParent(q,"LI")){r=h.getParent(v,"OL,UL");u=o.getDoc();s=h.create("p");h.add(s,"br",{mce_bogus:"1"});if(e(u,v)){if(k=h.getParent(r.parentNode,"LI,OL,UL")){return}k=h.getParent(r,"p,h1,h2,h3,h4,h5,h6,div")||r;l=u.createRange();l.setStartBefore(k);l.setEndBefore(v);j=u.createRange();j.setStartAfter(v);j.setEndAfter(k);m=l.cloneContents();t=j.cloneContents();if(!e(u,t)){h.insertAfter(t,k)}h.insertAfter(s,k);if(!e(u,m)){h.insertAfter(m,k)}h.remove(k);k=s.firstChild;l=u.createRange();l.setStartBefore(k);l.setEndBefore(k);i.setRng(l);return a.cancel(p)}}}});f.onExecCommand.add(function(i,k){var j,m,n,l;if(k=="InsertUnorderedList"||k=="InsertOrderedList"){j=i.selection;m=i.dom;if(n=m.getParent(j.getNode(),function(o){return/^(H[1-6]|P|ADDRESS|PRE)$/.test(o.nodeName)})){l=j.getBookmark();m.remove(n,1);j.moveToBookmark(l)}}});f.onClick.add(function(i,j){j=j.target;if(j.nodeName=="IMG"){g.selElm=j;i.selection.select(j)}else{g.selElm=null}});f.onInit.add(function(){g._fixWebKitSpans()});f.onSetContent.add(function(){h=f.dom;d(["strong","b","em","u","strike","sub","sup","a"],function(i){d(c(h.select(i)).reverse(),function(l){var k=l.nodeName.toLowerCase(),j;if(k=="a"){if(l.name){h.replace(h.create("img",{mce_name:"a",name:l.name,"class":"mceItemAnchor"}),l)}return}switch(k){case"b":case"strong":if(k=="b"){k="strong"}j="font-weight: bold;";break;case"em":j="font-style: italic;";break;case"u":j="text-decoration: underline;";break;case"sub":j="vertical-align: sub;";break;case"sup":j="vertical-align: super;";break;case"strike":j="text-decoration: line-through;";break}h.replace(h.create("span",{mce_name:k,style:j,"class":"Apple-style-span"}),l,1)})})});f.onPreProcess.add(function(i,j){h=i.dom;d(c(j.node.getElementsByTagName("span")).reverse(),function(m){var k,l;if(j.get){if(h.hasClass(m,"Apple-style-span")){l=m.style.backgroundColor;switch(h.getAttrib(m,"mce_name")){case"font":if(!i.settings.convert_fonts_to_spans){h.setAttrib(m,"style","")}break;case"strong":case"em":case"sub":case"sup":h.setAttrib(m,"style","");break;case"strike":case"u":if(!i.settings.inline_styles){h.setAttrib(m,"style","")}else{h.setAttrib(m,"mce_name","")}break;default:if(!i.settings.inline_styles){h.setAttrib(m,"style","")}}if(l){m.style.backgroundColor=l}}}if(h.hasClass(m,"mceItemRemoved")){h.remove(m,1)}})});f.onPostProcess.add(function(i,j){j.content=j.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,"</$1>");j.content=j.content.replace(/ id=\"undefined\"/g,"")})},getInfo:function(){return{longname:"Safari compatibility",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_fixWebKitSpans:function(){var g=this,f=g.editor;a.add(f.getDoc(),"DOMNodeInserted",function(h){h=h.target;if(h&&h.nodeType==1){g._fixAppleSpan(h)}})},_fixAppleSpan:function(l){var g=this.editor,m=g.dom,i=this.webKitFontSizes,f=this.namedFontSizes,j=g.settings,h,k;if(m.getAttrib(l,"mce_fixed")){return}if(l.nodeName=="SPAN"&&l.className=="Apple-style-span"){h=l.style;if(!j.convert_fonts_to_spans){if(h.fontSize){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"size",b(i,h.fontSize)+1)}if(h.fontFamily){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"face",h.fontFamily)}if(h.color){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"color",m.toHex(h.color))}if(h.backgroundColor){m.setAttrib(l,"mce_name","font");m.setStyle(l,"background-color",h.backgroundColor)}}else{if(h.fontSize){m.setStyle(l,"fontSize",f[b(i,h.fontSize)])}}if(h.fontWeight=="bold"){m.setAttrib(l,"mce_name","strong")}if(h.fontStyle=="italic"){m.setAttrib(l,"mce_name","em")}if(h.textDecoration=="underline"){m.setAttrib(l,"mce_name","u")}if(h.textDecoration=="line-through"){m.setAttrib(l,"mce_name","strike")}if(h.verticalAlign=="super"){m.setAttrib(l,"mce_name","sup")}if(h.verticalAlign=="sub"){m.setAttrib(l,"mce_name","sub")}m.setAttrib(l,"mce_fixed","1")}},_insertBR:function(f){var j=f.dom,h=f.selection,i=h.getRng(),g;i.insertNode(g=j.create("br"));i.setStartAfter(g);i.setEndAfter(g);h.setRng(i);if(h.getSel().focusNode==g.previousSibling){h.select(j.insertAfter(j.doc.createTextNode("\u00a0"),g));h.collapse(1)}f.getWin().scrollTo(0,j.getPos(h.getRng().startContainer).y)}});tinymce.PluginManager.add("safari",tinymce.plugins.Safari)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,438 @@
+/**
+ * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray;
+
+	function isEmpty(d, e, f) {
+		var w, n;
+
+		w = d.createTreeWalker(e, NodeFilter.SHOW_ALL, null, false);
+		while (n = w.nextNode()) {
+			// Filter func
+			if (f) {
+				if (!f(n))
+					return false;
+			}
+
+			// Non whitespace text node
+			if (n.nodeType == 3 && n.nodeValue && /[^\s\u00a0]+/.test(n.nodeValue))
+				return false;
+
+			// Is non text element byt still content
+			if (n.nodeType == 1 && /^(HR|IMG|TABLE)$/.test(n.nodeName))
+				return false;
+		}
+
+		return true;
+	};
+
+	tinymce.create('tinymce.plugins.Safari', {
+		init : function(ed) {
+			var t = this, dom;
+
+			// Ignore on non webkit
+			if (!tinymce.isWebKit)
+				return;
+
+			t.editor = ed;
+			t.webKitFontSizes = ['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', '-webkit-xxx-large'];
+			t.namedFontSizes = ['xx-small', 'x-small','small','medium','large','x-large', 'xx-large'];
+
+			// Safari CreateLink command will not work correctly on images that is aligned
+			ed.addCommand('CreateLink', function(u, v) {
+				var n = ed.selection.getNode(), dom = ed.dom, a;
+
+				if (n && (/^(left|right)$/i.test(dom.getStyle(n, 'float', 1)) || /^(left|right)$/i.test(dom.getAttrib(n, 'align')))) {
+					a = dom.create('a', {href : v}, n.cloneNode());
+					n.parentNode.replaceChild(a, n);
+					ed.selection.select(a);
+				} else
+					ed.getDoc().execCommand("CreateLink", false, v);
+			});
+
+/*
+			// WebKit generates spans out of thin air this patch used to remove them but it will also remove styles we want so it's disabled for now
+			ed.onPaste.add(function(ed, e) {
+				function removeStyles(e) {
+					e = e.target;
+
+					if (e.nodeType == 1) {
+						e.style.cssText = '';
+
+						each(ed.dom.select('*', e), function(e) {
+							e.style.cssText = '';
+						});
+					}
+				};
+
+				Event.add(ed.getDoc(), 'DOMNodeInserted', removeStyles);
+
+				window.setTimeout(function() {
+					Event.remove(ed.getDoc(), 'DOMNodeInserted', removeStyles);
+				}, 0);
+			});
+*/
+			ed.onKeyUp.add(function(ed, e) {
+				var h, b, r, n, s;
+
+				// If backspace or delete key
+				if (e.keyCode == 46 || e.keyCode == 8) {
+					b = ed.getBody();
+					h = b.innerHTML;
+					s = ed.selection;
+
+					// If there is no text content or images or hr elements then remove everything
+					if (b.childNodes.length == 1 && !/<(img|hr)/.test(h) && tinymce.trim(h.replace(/<[^>]+>/g, '')).length == 0) {
+						// Inject paragrah and bogus br
+						ed.setContent('<p><br mce_bogus="1" /></p>', {format : 'raw'});
+
+						// Move caret before bogus br
+						n = b.firstChild;
+						r = s.getRng();
+						r.setStart(n, 0);
+						r.setEnd(n, 0);
+						s.setRng(r);
+					}
+				}
+			});
+
+			// Workaround for FormatBlock bug, http://bugs.webkit.org/show_bug.cgi?id=16004
+			ed.addCommand('FormatBlock', function(u, v) {
+				var dom = ed.dom, e = dom.getParent(ed.selection.getNode(), dom.isBlock);
+
+				if (e)
+					dom.replace(dom.create(v), e, 1);
+				else
+					ed.getDoc().execCommand("FormatBlock", false, v);
+			});
+
+			// Workaround for InsertHTML bug, http://bugs.webkit.org/show_bug.cgi?id=16382
+			ed.addCommand('mceInsertContent', function(u, v) {
+				ed.getDoc().execCommand("InsertText", false, 'mce_marker');
+				ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, ed.dom.processHTML(v) + '<span id="_mce_tmp">XX</span>');
+				ed.selection.select(ed.dom.get('_mce_tmp'));
+				ed.getDoc().execCommand("Delete", false, ' ');
+			});
+	
+	/*		ed.onKeyDown.add(function(ed, e) {
+				// Ctrl+A select all will fail on WebKit since if you paste the contents you selected it will produce a odd div wrapper
+				if ((e.ctrlKey || e.metaKey) && e.keyCode == 65) {
+					ed.selection.select(ed.getBody(), 1);
+					return Event.cancel(e);
+				}
+			});*/
+
+			ed.onKeyPress.add(function(ed, e) {
+				var se, li, lic, r1, r2, n, sel, doc, be, af, pa;
+
+				if (e.keyCode == 13) {
+					sel = ed.selection;
+					se = sel.getNode();
+
+					// Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973
+					if (e.shiftKey || ed.settings.force_br_newlines && se.nodeName != 'LI') {
+						t._insertBR(ed);
+						Event.cancel(e);
+					}
+
+					// Workaround for DIV elements produced by Safari
+					if (li = dom.getParent(se, 'LI')) {
+						lic = dom.getParent(li, 'OL,UL');
+						doc = ed.getDoc();
+
+						pa = dom.create('p');
+						dom.add(pa, 'br', {mce_bogus : "1"});
+
+						if (isEmpty(doc, li)) {
+							// If list in list then use browser default behavior
+							if (n = dom.getParent(lic.parentNode, 'LI,OL,UL'))
+								return;
+
+							n = dom.getParent(lic, 'p,h1,h2,h3,h4,h5,h6,div') || lic;
+
+							// Create range from the start of block element to the list item
+							r1 = doc.createRange();
+							r1.setStartBefore(n);
+							r1.setEndBefore(li);
+
+							// Create range after the list to the end of block element
+							r2 = doc.createRange();
+							r2.setStartAfter(li);
+							r2.setEndAfter(n);
+
+							be = r1.cloneContents();
+							af = r2.cloneContents();
+
+							if (!isEmpty(doc, af))
+								dom.insertAfter(af, n);
+
+							dom.insertAfter(pa, n);
+
+							if (!isEmpty(doc, be))
+								dom.insertAfter(be, n);
+
+							dom.remove(n);
+
+							n = pa.firstChild;
+							r1 = doc.createRange();
+							r1.setStartBefore(n);
+							r1.setEndBefore(n);
+							sel.setRng(r1);
+
+							return Event.cancel(e);
+						}
+					}
+				}
+			});
+
+			// Safari doesn't place lists outside block elements
+			ed.onExecCommand.add(function(ed, cmd) {
+				var sel, dom, bl, bm;
+
+				if (cmd == 'InsertUnorderedList' || cmd == 'InsertOrderedList') {
+					sel = ed.selection;
+					dom = ed.dom;
+
+					if (bl = dom.getParent(sel.getNode(), function(n) {return /^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName);})) {
+						bm = sel.getBookmark();
+						dom.remove(bl, 1);
+						sel.moveToBookmark(bm);
+					}
+				}
+			});
+
+			// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
+			ed.onClick.add(function(ed, e) {
+				e = e.target;
+
+				if (e.nodeName == 'IMG') {
+					t.selElm = e;
+					ed.selection.select(e);
+				} else
+					t.selElm = null;
+			});
+
+			ed.onInit.add(function() {
+				t._fixWebKitSpans();
+			});
+
+			ed.onSetContent.add(function() {
+				dom = ed.dom;
+
+				// Convert strong,b,em,u,strike to spans
+				each(['strong','b','em','u','strike','sub','sup','a'], function(v) {
+					each(grep(dom.select(v)).reverse(), function(n) {
+						var nn = n.nodeName.toLowerCase(), st;
+
+						// Convert anchors into images
+						if (nn == 'a') {
+							if (n.name)
+								dom.replace(dom.create('img', {mce_name : 'a', name : n.name, 'class' : 'mceItemAnchor'}), n);
+
+							return;
+						}
+
+						switch (nn) {
+							case 'b':
+							case 'strong':
+								if (nn == 'b')
+									nn = 'strong';
+
+								st = 'font-weight: bold;';
+								break;
+
+							case 'em':
+								st = 'font-style: italic;';
+								break;
+
+							case 'u':
+								st = 'text-decoration: underline;';
+								break;
+
+							case 'sub':
+								st = 'vertical-align: sub;';
+								break;
+
+							case 'sup':
+								st = 'vertical-align: super;';
+								break;
+
+							case 'strike':
+								st = 'text-decoration: line-through;';
+								break;
+						}
+
+						dom.replace(dom.create('span', {mce_name : nn, style : st, 'class' : 'Apple-style-span'}), n, 1);
+					});
+				});
+			});
+
+			ed.onPreProcess.add(function(ed, o) {
+				dom = ed.dom;
+
+				each(grep(o.node.getElementsByTagName('span')).reverse(), function(n) {
+					var v, bg;
+
+					if (o.get) {
+						if (dom.hasClass(n, 'Apple-style-span')) {
+							bg = n.style.backgroundColor;
+
+							switch (dom.getAttrib(n, 'mce_name')) {
+								case 'font':
+									if (!ed.settings.convert_fonts_to_spans)
+										dom.setAttrib(n, 'style', '');
+									break;
+
+								case 'strong':
+								case 'em':
+								case 'sub':
+								case 'sup':
+									dom.setAttrib(n, 'style', '');
+									break;
+
+								case 'strike':
+								case 'u':
+									if (!ed.settings.inline_styles)
+										dom.setAttrib(n, 'style', '');
+									else
+										dom.setAttrib(n, 'mce_name', '');
+
+									break;
+
+								default:
+									if (!ed.settings.inline_styles)
+										dom.setAttrib(n, 'style', '');
+							}
+
+
+							if (bg)
+								n.style.backgroundColor = bg;
+						}
+					}
+
+					if (dom.hasClass(n, 'mceItemRemoved'))
+						dom.remove(n, 1);
+				});
+			});
+
+			ed.onPostProcess.add(function(ed, o) {
+				// Safari adds BR at end of all block elements
+				o.content = o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g, '</$1>');
+
+				// Safari adds id="undefined" to HR elements
+				o.content = o.content.replace(/ id=\"undefined\"/g, '');
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Safari compatibility',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Internal methods
+
+		_fixWebKitSpans : function() {
+			var t = this, ed = t.editor;
+
+			// Use mutator events on new WebKit
+			Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {
+				e = e.target;
+
+				if (e && e.nodeType == 1)
+					t._fixAppleSpan(e);
+			});
+		},
+
+		_fixAppleSpan : function(e) {
+			var ed = this.editor, dom = ed.dom, fz = this.webKitFontSizes, fzn = this.namedFontSizes, s = ed.settings, st, p;
+
+			if (dom.getAttrib(e, 'mce_fixed'))
+				return;
+
+			// Handle Apple style spans
+			if (e.nodeName == 'SPAN' && e.className == 'Apple-style-span') {
+				st = e.style;
+
+				if (!s.convert_fonts_to_spans) {
+					if (st.fontSize) {
+						dom.setAttrib(e, 'mce_name', 'font');
+						dom.setAttrib(e, 'size', inArray(fz, st.fontSize) + 1);
+					}
+
+					if (st.fontFamily) {
+						dom.setAttrib(e, 'mce_name', 'font');
+						dom.setAttrib(e, 'face', st.fontFamily);
+					}
+
+					if (st.color) {
+						dom.setAttrib(e, 'mce_name', 'font');
+						dom.setAttrib(e, 'color', dom.toHex(st.color));
+					}
+
+					if (st.backgroundColor) {
+						dom.setAttrib(e, 'mce_name', 'font');
+						dom.setStyle(e, 'background-color', st.backgroundColor);
+					}
+				} else {
+					if (st.fontSize)
+						dom.setStyle(e, 'fontSize', fzn[inArray(fz, st.fontSize)]);
+				}
+
+				if (st.fontWeight == 'bold')
+					dom.setAttrib(e, 'mce_name', 'strong');
+
+				if (st.fontStyle == 'italic')
+					dom.setAttrib(e, 'mce_name', 'em');
+
+				if (st.textDecoration == 'underline')
+					dom.setAttrib(e, 'mce_name', 'u');
+
+				if (st.textDecoration == 'line-through')
+					dom.setAttrib(e, 'mce_name', 'strike');
+
+				if (st.verticalAlign == 'super')
+					dom.setAttrib(e, 'mce_name', 'sup');
+
+				if (st.verticalAlign == 'sub')
+					dom.setAttrib(e, 'mce_name', 'sub');
+
+				dom.setAttrib(e, 'mce_fixed', '1');
+			}
+		},
+
+		_insertBR : function(ed) {
+			var dom = ed.dom, s = ed.selection, r = s.getRng(), br;
+
+			// Insert BR element
+			r.insertNode(br = dom.create('br'));
+
+			// Place caret after BR
+			r.setStartAfter(br);
+			r.setEndAfter(br);
+			s.setRng(r);
+
+			// Could not place caret after BR then insert an nbsp entity and move the caret
+			if (s.getSel().focusNode == br.previousSibling) {
+				s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));
+				s.collapse(1);
+			}
+
+			// Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
+			ed.getWin().scrollTo(0, dom.getPos(s.getRng().startContainer).y);
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('safari', tinymce.plugins.Safari);
+})();
+
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js	2009-06-30 22:01:32.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('save');var TinyMCE_SavePlugin={getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','s','lang_save_desc','mceSave')},getControlHTML:function(cn){switch(cn){case"save":return tinyMCE.getButtonHTML(cn,'lang_save_desc','{$pluginurl}/images/save.gif','mceSave');case"cancel":return tinyMCE.getButtonHTML(cn,'lang_cancel_desc','{$pluginurl}/images/cancel.gif','mceCancel')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceSave":return this._save(editor_id,element,command,user_interface,value);case"mceCancel":return this._cancel(editor_id,element,command,user_interface,value)}return false},_save:function(editor_id,element,command,user_interface,value){var inst,formObj,os,i,elementId;if(tinyMCE.getParam("fullscreen_is_enabled"))return true;inst=tinyMCE.selectedInstance;formObj=inst.formElement.form;if(tinyMCE.getParam("save_enablewhendirty")&&!inst.isDirty())return true;if(formObj){tinyMCE.triggerSave();if((os=tinyMCE.getParam("save_onsavecallback"))){if(eval(os+'(inst);')){inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);tinyMCE.triggerNodeChange(false,true)}return true}for(i=0;i<formObj.elements.length;i++){elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true}inst.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)inst.formElement.form.submit();tinyMCE.triggerNodeChange(false,true)}else alert("Error: No form element found.");return true},_cancel:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),os,h=tinyMCE.trim(inst.startContent);if((os=tinyMCE.getParam("save_oncancelcallback"))){if(eval(os+'(inst);'))return true}inst.setHTML(h);inst.undoRedo.undoLevels=[];inst.undoRedo.add({content:h});inst.undoRedo.undoIndex=0;inst.undoRedo.typingUndoIndex=-1;tinyMCE.triggerNodeChange(false,true);return true},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst;if(tinyMCE.getParam("fullscreen_is_enabled")){tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled');return true}if(tinyMCE.getParam("save_enablewhendirty")){inst=tinyMCE.getInstanceById(editor_id);if(inst.isDirty()){tinyMCE.switchClass(editor_id+'_save','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled')}return true}};tinyMCE.addPlugin("save",TinyMCE_SavePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js	2009-06-30 22:01:32.000000000 +0200
@@ -1,152 +1,98 @@
-/**
- * $Id: editor_plugin_src.js 251 2007-04-10 20:16:15Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('save');
-
-var TinyMCE_SavePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Save',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		inst.addShortcut('ctrl', 's', 'lang_save_desc', 'mceSave');
-	},
-
-	/**
-	 * Returns the HTML contents of the save control.
-	 */
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "save":
-				return tinyMCE.getButtonHTML(cn, 'lang_save_desc', '{$pluginurl}/images/save.gif', 'mceSave');
-
-			case "cancel":
-				return tinyMCE.getButtonHTML(cn, 'lang_cancel_desc', '{$pluginurl}/images/cancel.gif', 'mceCancel');
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the save command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceSave":
-				return this._save(editor_id, element, command, user_interface, value);
-
-			case "mceCancel":
-				return this._cancel(editor_id, element, command, user_interface, value);
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	_save : function(editor_id, element, command, user_interface, value) {
-		var inst, formObj, os, i, elementId;
-
-		if (tinyMCE.getParam("fullscreen_is_enabled"))
-			return true;
-
-		inst = tinyMCE.selectedInstance;
-		formObj = inst.formElement.form;
-
-		if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())
-			return true;
-
-		if (formObj) {
-			tinyMCE.triggerSave();
-
-			// Use callback instead
-			if ((os = tinyMCE.getParam("save_onsavecallback"))) {
-				if (eval(os + '(inst);')) {
-					inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
-					/*inst.undoLevels = new Array();
-					inst.undoIndex = 0;
-					inst.typingUndoIndex = -1;
-					inst.undoRedo = true;
-					inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/
-					tinyMCE.triggerNodeChange(false, true);
-				}
-
-				return true;
-			}
-
-			// Disable all UI form elements that TinyMCE created
-			for (i=0; i<formObj.elements.length; i++) {
-				elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;
-
-				if (elementId.indexOf('mce_editor_') == 0)
-					formObj.elements[i].disabled = true;
-			}
-
-			inst.isNotDirty = true;
-
-			if (formObj.onsubmit == null || formObj.onsubmit() != false)
-				inst.formElement.form.submit();
-
-			tinyMCE.triggerNodeChange(false, true);
-		} else
-			alert("Error: No form element found.");
-
-		return true;
-	},
-
-	_cancel : function(editor_id, element, command, user_interface, value) {
-		var inst = tinyMCE.getInstanceById(editor_id), os, h = tinyMCE.trim(inst.startContent);
-
-		// Use callback instead
-		if ((os = tinyMCE.getParam("save_oncancelcallback"))) {
-			if (eval(os + '(inst);'))
-				return true;
-		}
-
-		inst.setHTML(h);
-
-		inst.undoRedo.undoLevels = [];
-		inst.undoRedo.add({ content : h });
-		inst.undoRedo.undoIndex = 0;
-		inst.undoRedo.typingUndoIndex = -1;
-
-		tinyMCE.triggerNodeChange(false, true);
-
-		return true;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		var inst;
-
-		if (tinyMCE.getParam("fullscreen_is_enabled")) {
-			tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
-			return true;
-		}
-
-		if (tinyMCE.getParam("save_enablewhendirty")) {
-			inst = tinyMCE.getInstanceById(editor_id);
-
-			if (inst.isDirty()) {
-				tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');
-				return true;
-			}
-
-			tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
-		}
-
-		return true;
-	}
-};
-
-tinyMCE.addPlugin("save", TinyMCE_SavePlugin);
+/**
+ * $Id: editor_plugin_src.js 851 2008-05-26 15:38:49Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.Save', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceSave', t._save, t);
+			ed.addCommand('mceCancel', t._cancel, t);
+
+			// Register buttons
+			ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
+			ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
+
+			ed.onNodeChange.add(t._nodeChange, t);
+			ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Save',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+
+		_nodeChange : function(ed, cm, n) {
+			var ed = this.editor;
+
+			if (ed.getParam('save_enablewhendirty')) {
+				cm.setDisabled('save', !ed.isDirty());
+				cm.setDisabled('cancel', !ed.isDirty());
+			}
+		},
+
+		// Private methods
+
+		_save : function() {
+			var ed = this.editor, formObj, os, i, elementId;
+
+			formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
+
+			if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
+				return;
+
+			tinyMCE.triggerSave();
+
+			// Use callback instead
+			if (os = ed.getParam("save_onsavecallback")) {
+				if (ed.execCallback('save_onsavecallback', ed)) {
+					ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
+					ed.nodeChanged();
+				}
+
+				return;
+			}
+
+			if (formObj) {
+				ed.isNotDirty = true;
+
+				if (formObj.onsubmit == null || formObj.onsubmit() != false)
+					formObj.submit();
+
+				ed.nodeChanged();
+			} else
+				ed.windowManager.alert("Error: No form element found.");
+		},
+
+		_cancel : function() {
+			var ed = this.editor, os, h = tinymce.trim(ed.startContent);
+
+			// Use callback instead
+			if (os = ed.getParam("save_oncancelcallback")) {
+				ed.execCallback('save_oncancelcallback', ed);
+				return;
+			}
+
+			ed.setContent(h);
+			ed.undoManager.clear();
+			ed.nodeChanged();
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('save', tinymce.plugins.Save);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/langs/es.js	2005-10-18 16:47:40.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/save/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
-// Last Updated : October 2005
-// TinyMCE Version : 2.0RC3
-
-tinyMCE.addToLang('',{
-save_desc : 'Salvar'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,20 +1,6 @@
-/* stylesheet for advsearchreplace plugin*/
-
-.panel_wrapper { height: 85px; }
-.panel_wrapper div.current { height: 85px; }
-
-/* MS IE only styles */
-* html .panel_wrapper { height: 100px; }
-* html .panel_wrapper div.current { height: 100px; }
-
-#replaceBtn, #replaceAllBtn {
-	padding-bottom: 2px;
-	font-weight: bold;
-	width: 90px;
-	height: 21px;
-	border: 0;
-	cursor: pointer;
-}
-
-#replaceBtn { background: url(../images/replace_button_bg.gif); }
-#replaceAllBtn { background: url(../images/replace_all_button_bg.gif); }
+.panel_wrapper {height:85px;}
+.panel_wrapper div.current {height:85px;}
+
+/* IE */
+* html .panel_wrapper {height:100px;}
+* html .panel_wrapper div.current {height:100px;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('searchreplace');var TinyMCE_SearchReplacePlugin={getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','f','lang_searchreplace_search_desc','mceSearch',true);},getControlHTML:function(cn){switch(cn){case"search":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_search_desc','{$pluginurl}/images/search.gif','mceSearch',true);case"replace":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_replace_desc','{$pluginurl}/images/replace.gif','mceSearchReplace',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),selectedText=inst.selection.getSelectedText(),rng;function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key]}function replaceSel(search_str,str,back){if(!inst.selection.isCollapsed()){if(tinyMCE.isRealIE)inst.selection.getRng().duplicate().pasteHTML(str);else inst.execCommand('mceInsertContent',false,str)}}if(!value)value=[];defValue("editor_id",editor_id);defValue("searchstring",selectedText);defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");defValue("resizable","no");switch(command){case"mceSearch":if(user_interface){var template=new Array();template['file']='../../plugins/searchreplace/searchreplace.htm';template['width']=380;template['height']=155+(tinyMCE.isNS7?20:0)+(tinyMCE.isMSIE?15:0);template['width']+=tinyMCE.getLang('lang_searchreplace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_delta_height',0);inst.selection.collapse(true);tinyMCE.openWindow(template,value)}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;var awin=value.win,found;if(body.innerHTML==""){awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring'],value['backwards']);value['replacemode']="none";}inst.selection.collapse(value['backwards']);if(tinyMCE.isMSIE){var rng=inst.selection.getRng();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){awin.alert('This operation is currently not supported by this browser.');return true}if(value['replacemode']=="all"){found=false;while(rng.findText(value['string'],value['backwards']?-1:1,flags)){found=true;rng.scrollIntoView();rng.select();replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select()}else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}else{if(value['replacemode']=="all"){found=false;while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false)){found=true;replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}}return true;case"mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true}return false}};tinyMCE.addPlugin("searchreplace",TinyMCE_SearchReplacePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:160+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,173 +1,54 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-tinyMCE.importPluginLanguagePack('searchreplace');
-
-var TinyMCE_SearchReplacePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Search/Replace',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function (inst) {
-		inst.addShortcut('ctrl', 'f', 'lang_searchreplace_search_desc', 'mceSearch', true);
-		// No CTRL+R for "replace" because browsers will reload page instead of executing plugin
-	},
-
-	getControlHTML : function (cn) {
-		switch (cn) {
-			case "search" :
-				return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true);
-
-			case "replace" :
-				return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true);
-		}
-
-		return "";
-	},
-
-	execCommand : function (editor_id, element, command, user_interface, value) {
-		var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng;
-
-		function defValue(key, default_value) {
-			value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
-		}
-
-		function replaceSel(search_str, str, back) {
-			if (!inst.selection.isCollapsed()) {
-				if (tinyMCE.isRealIE)
-					inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE
-				else
-					inst.execCommand('mceInsertContent', false, str);
-			}
-		}
-
-		if (!value)
-			value = [];
-
-		defValue("editor_id", editor_id);
-		defValue("searchstring", selectedText);
-		defValue("replacestring", null);
-		defValue("replacemode", "none");
-		defValue("casesensitive", false);
-		defValue("backwards", false);
-		defValue("wrap", false);
-		defValue("wholeword", false);
-		defValue("inline", "yes");
-		defValue("resizable", "no");
-
-		switch (command) {
-			case "mceSearch" :
-				if (user_interface) {
-					var template = new Array();
-
-					template['file'] = '../../plugins/searchreplace/searchreplace.htm';
-					template['width'] = 380;
-					template['height'] = 155 + (tinyMCE.isNS7 ? 20 : 0) + (tinyMCE.isMSIE ? 15 : 0);
-					template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0);
-					template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0);
-
-					inst.selection.collapse(true);
-
-					tinyMCE.openWindow(template, value);
-				} else {
-					var win = tinyMCE.getInstanceById(editor_id).contentWindow;
-					var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
-					var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
-					var awin = value.win, found;
-
-					if (body.innerHTML == "") {
-						awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
-						return true;
-					}
-
-					if (value['replacemode'] == "current") {
-						replaceSel(value['string'], value['replacestring'], value['backwards']);
-						value['replacemode'] = "none";
-						//tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value);
-						//return true;
-					}
-
-					inst.selection.collapse(value['backwards']);
-
-					if (tinyMCE.isMSIE) {
-						var rng = inst.selection.getRng();
-						var flags = 0;
-						if (value['wholeword'])
-							flags = flags | 2;
-
-						if (value['casesensitive'])
-							flags = flags | 4;
-
-						if (!rng.findText) {
-							awin.alert('This operation is currently not supported by this browser.');
-							return true;
-						}
-
-						if (value['replacemode'] == "all") {
-							found = false;
-
-							while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
-								found = true;
-								rng.scrollIntoView();
-								rng.select();
-								replaceSel(value['string'], value['replacestring'], value['backwards']);
-							}
-
-							if (found)
-								awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
-							else
-								awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
-
-							return true;
-						}
-
-						if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
-							rng.scrollIntoView();
-							rng.select();
-						} else
-							awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
-					} else {
-						if (value['replacemode'] == "all") {
-							found = false;
-
-							while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) {
-								found = true;
-								replaceSel(value['string'], value['replacestring'], value['backwards']);
-							}
-
-							if (found)
-								awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
-							else
-								awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
-
-							return true;
-						}
-
-						if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
-							awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
-					}
-				}
-
-				return true;
-
-			case "mceSearchReplace" :
-				value['replacestring'] = "";
-				tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
-				return true;
-		}
-
-		return false;
-	}
-};
-
-tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+/**
+ * $Id: editor_plugin_src.js 686 2008-03-09 18:13:49Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.SearchReplacePlugin', {
+		init : function(ed, url) {
+			function open(m) {
+				ed.windowManager.open({
+					file : url + '/searchreplace.htm',
+					width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),
+					height : 160 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
+					inline : 1,
+					auto_focus : 0
+				}, {
+					mode : m,
+					search_string : ed.selection.getContent({format : 'text'}),
+					plugin_url : url
+				});
+			};
+
+			// Register commands
+			ed.addCommand('mceSearch', function() {
+				open('search');
+			});
+
+			ed.addCommand('mceReplace', function() {
+				open('replace');
+			});
+
+			// Register buttons
+			ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});
+			ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});
+
+			ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Search/Replace',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,126 @@
+tinyMCEPopup.requireLangPack();
+
+var SearchReplaceDialog = {
+	init : function(ed) {
+		var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
+
+		this.switchMode(m);
+
+		f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
+
+		// Focus input field
+		f[m + '_panel_searchstring'].focus();
+	},
+
+	switchMode : function(m) {
+		var f, lm = this.lastMode;
+
+		if (lm != m) {
+			f = document.forms[0];
+
+			if (lm) {
+				f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
+				f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
+				f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
+				f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
+			}
+
+			mcTabs.displayTab(m + '_tab',  m + '_panel');
+			document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
+			document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
+			this.lastMode = m;
+		}
+	},
+
+	searchNext : function(a) {
+		var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
+
+		// Get input
+		f = document.forms[0];
+		s = f[m + '_panel_searchstring'].value;
+		b = f[m + '_panel_backwardsu'].checked;
+		ca = f[m + '_panel_casesensitivebox'].checked;
+		rs = f['replace_panel_replacestring'].value;
+
+		if (s == '')
+			return;
+
+		function fix() {
+			// Correct Firefox graphics glitches
+			r = se.getRng().cloneRange();
+			ed.getDoc().execCommand('SelectAll', false, null);
+			se.setRng(r);
+		};
+
+		function replace() {
+			if (tinymce.isIE)
+				ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE
+			else
+				ed.getDoc().execCommand('InsertHTML', false, rs);
+		};
+
+		// IE flags
+		if (ca)
+			fl = fl | 4;
+
+		switch (a) {
+			case 'all':
+				// Move caret to beginning of text
+				ed.execCommand('SelectAll');
+				ed.selection.collapse(true);
+
+				if (tinymce.isIE) {
+					while (r.findText(s, b ? -1 : 1, fl)) {
+						r.scrollIntoView();
+						r.select();
+						replace();
+						fo = 1;
+					}
+
+					tinyMCEPopup.storeSelection();
+				} else {
+					while (w.find(s, ca, b, false, false, false, false)) {
+						replace();
+						fo = 1;
+					}
+				}
+
+				if (fo)
+					tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
+				else
+					tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
+
+				return;
+
+			case 'current':
+				if (!ed.selection.isCollapsed())
+					replace();
+
+				break;
+		}
+
+		se.collapse(b);
+		r = se.getRng();
+
+		// Whats the point
+		if (!s)
+			return;
+
+		if (tinymce.isIE) {
+			if (r.findText(s, b ? -1 : 1, fl)) {
+				r.scrollIntoView();
+				r.select();
+			} else
+				tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
+
+			tinyMCEPopup.storeSelection();
+		} else {
+			if (!w.find(s, ca, b, false, false, false, false))
+				tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
+			else
+				fix();
+		}
+	}
+};
+
+tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,16 @@
+tinyMCE.addI18n('ca.searchreplace_dlg',{
+searchnext_desc:"Torna a buscar",
+notfound:"S'ha completat la recerca. No s'ha trobat la cadena buscada.",
+search_title:"Busca",
+replace_title:"Busca/Substitueix",
+allreplaced:"S'han substitu\u00EFt totes les ocurr\u00E8ncies de la cadena buscada.",
+findwhat:"Busca",
+replacewith:"Substitueix per",
+direction:"Direcci\u00F3",
+up:"Amunt",
+down:"Avall",
+mcase:"Distingeix maj\u00FAscules i min\u00FAscules",
+findnext:"Seg\u00FCent",
+replace:"Substitueix",
+replaceall:"Substitueix tot"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,16 @@
+tinyMCE.addI18n('en.searchreplace_dlg',{
+searchnext_desc:"Find again",
+notfound:"The search has been completed. The search string could not be found.",
+search_title:"Find",
+replace_title:"Find/Replace",
+allreplaced:"All occurrences of the search string were replaced.",
+findwhat:"Find what",
+replacewith:"Replace with",
+direction:"Direction",
+up:"Up",
+down:"Down",
+mcase:"Match case",
+findnext:"Find next",
+replace:"Replace",
+replaceall:"Replace all"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,16 @@
+tinyMCE.addI18n('es.searchreplace_dlg',{
+searchnext_desc:"Buscar de nuevo",
+notfound:"La b\u00FAsqueda se ha completado. No se encontr\u00F3 el texto introducido.",
+search_title:"Buscar",
+replace_title:"Buscar/Reemplazar",
+allreplaced:"Se ha reemplazado el texto.",
+findwhat:"Qu\u00E9 buscar",
+replacewith:"Reemplazar por",
+direction:"Direcci\u00F3n",
+up:"Arriba",
+down:"Abajo",
+mcase:"Min\u00FAs./May\u00FAs.",
+findnext:"Buscar siguiente",
+replace:"Reemplazar",
+replaceall:"Reemplazar todo"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es.js	2007-12-22 00:43:52.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * Last Updated : Diciembre 21, 2007 Joomla! Spanish
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Buscar',
-searchreplace_searchnext_desc : 'Buscar de nuevo',
-searchreplace_replace_desc : 'Buscar/Sustituir',
-searchreplace_notfound : 'La b&uacute;squeda ha terminado. No se ha encontrado el elemento buscado.',
-searchreplace_search_title : 'Buscar',
-searchreplace_replace_title : 'Buscar/Sustituir',
-searchreplace_allreplaced : 'Todas las ocurrencias del elemento buscado han sido sustituidas.',
-searchreplace_findwhat : 'Buscar',
-searchreplace_replacewith : 'Sustituir con',
-searchreplace_direction : 'Direcci&oacute;n',
-searchreplace_up : 'Arriba',
-searchreplace_down : 'Abajo',
-searchreplace_case : 'B&uacute;squeda exacta (may&uacute;sculas y min&uacute;sculas)',
-searchreplace_findnext : 'Buscar siguiente',
-searchreplace_replace : 'Sustituir',
-searchreplace_replaceall : 'Sustituirlo todo',
-searchreplace_cancel : 'Cancelar',
-searchreplace_replace_delta_width : 70
-});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,39 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_searchreplace_replace_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/searchreplace.js"></script>
+	<title>{#searchreplace_dlg.replace_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="js/searchreplace.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
-<form onsubmit="return false;" action="#">
+<body style="display:none;">
+<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">
 	<div class="tabs">
 		<ul>
-			<li id="search_tab"><span><a href="javascript:mcTabs.displayTab('search_tab','search_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_search_desc}</a></span></li>
-			<li id="replace_tab"><span><a href="javascript:mcTabs.displayTab('replace_tab','replace_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_replace}</a></span></li>
+			<li id="search_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>
+			<li id="replace_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
-
 		<div id="search_panel" class="panel">
 			<table border="0" cellspacing="0" cellpadding="2">
 				<tr>
-					<td><label for="search_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
+					<td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
 					<td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>
 				</tr>
 				<tr>
 					<td colspan="2">
 						<table border="0" cellspacing="0" cellpadding="0" class="direction">
 							<tr>
-								<td><label>{$lang_searchreplace_direction}</label></td>
+								<td><label>{#searchreplace_dlg.direction}</label></td>
 								<td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
-								<td><label for="search_panel_backwardsu">{$lang_searchreplace_up}</label></td>
-								<td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" /></td>
-								<td><label for="search_panel_backwardsd">{$lang_searchreplace_down}</label></td>
+								<td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
+								<td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>
+								<td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
 							</tr>
 						</table>
 					</td>
@@ -43,7 +42,7 @@
 						<table border="0" cellspacing="0" cellpadding="0">
 							<tr>
 								<td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
-								<td><label for="search_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
+								<td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
 							</tr>
 						</table>
 					</td>
@@ -54,22 +53,22 @@
 		<div id="replace_panel" class="panel">
 			<table border="0" cellspacing="0" cellpadding="2">
 				<tr>
-					<td><label for="replace_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
+					<td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
 					<td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>
 				</tr>
 				<tr>
-					<td><label for="replace_panel_replacestring">{$lang_searchreplace_replacewith}</label></td>
+					<td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>
 					<td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>
 				</tr>
 				<tr>
 					<td colspan="2">
 						<table border="0" cellspacing="0" cellpadding="0" class="direction">
 							<tr>
-								<td><label>{$lang_searchreplace_direction}</label></td>
+								<td><label>{#searchreplace_dlg.direction}</label></td>
 								<td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
-								<td><label for="replace_panel_backwardsu">{$lang_searchreplace_up}</label></td>
-								<td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" /></td>
-								<td><label for="replace_panel_backwardsd">{$lang_searchreplace_down}</label></td>
+								<td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
+								<td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>
+								<td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
 							</tr>
 						</table>
 					</td>
@@ -79,7 +78,7 @@
 						<table border="0" cellspacing="0" cellpadding="0">
 							<tr>
 								<td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
-								<td><label for="replace_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
+								<td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
 							</tr>
 						</table>
 					</td>
@@ -91,15 +90,13 @@
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" />
-			<span id="replace_buttons">
-				<input type="button" id="replaceBtn" name="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" />
-				<input type="button" id="replaceAllBtn" name="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');;" />
-			</span>
+			<input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
+			<input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
+			<input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
 		</div>
 
 		<div style="float: right">	
-			<input type="button" id="cancel" name="cancel" value="{$lang_searchreplace_cancel}" onclick="tinyMCEPopup.close();" />
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 		</div>
 	</div>
 </form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;e.addCommand("mceSpellCheck",function(){if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);e.windowManager.alert("spellchecker.no_mpell")}})}else{g._done()}});e.onInit.add(function(){if(e.settings.content_css!==false){e.dom.loadCSS(f+"/css/content.css")}});e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={};this._walk(e.getBody(),function(h){if(h.nodeType==3){d+=h.nodeValue+" "}});d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));c(d.split(" "),function(h){if(!f[h]){g.push(h);f[h]=1}});return g},_removeWords:function(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(o){var i,h,g,f,e,n="",k=this.editor,p=this._getSeparators(),j=k.dom,d=[];var l=k.selection,m=l.getBookmark();c(o,function(q){n+=(n?"|":"")+q});i=new RegExp("(["+p+"])("+n+")(["+p+"])","g");h=new RegExp("^("+n+")","g");g=new RegExp("("+n+")(["+p+"]?)$","g");f=new RegExp("^("+n+")(["+p+"]?)$","g");e=new RegExp("("+n+")(["+p+"])","g");this._walk(this.editor.getBody(),function(q){if(q.nodeType==3){d.push(q)}});c(d,function(r){var q;if(r.nodeType==3){q=r.nodeValue;if(i.test(q)||h.test(q)||g.test(q)||f.test(q)){q=j.encode(q);q=q.replace(e,'<span class="mceItemHiddenSpellWord">$1</span>$2');q=q.replace(g,'<span class="mceItemHiddenSpellWord">$1</span>$2');j.replace(j.create("span",{"class":"mceItemHidden"},q),r)}}});l.moveToBookmark(m)},_showMenu:function(g,i){var h=this,g=h.editor,d=h._menu,k,j=g.dom,f=j.getViewPort(g.getWin());if(!d){k=b.getPos(g.getContentAreaContainer());d=g.controlManager.createDropMenu("spellcheckermenu",{offset_x:k.x,offset_y:k.y,"class":"mceNoIcons"});h._menu=d}if(j.hasClass(i.target,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);h._sendRPC("getSuggestions",[h.selectedLang,j.decode(i.target.innerHTML)],function(e){d.removeAll();if(e.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(e,function(l){d.add({title:l,onclick:function(){j.replace(g.getDoc().createTextNode(l),i.target);h._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}d.add({title:"spellchecker.ignore_word",onclick:function(){j.remove(i.target,1);h._checkDone()}});d.add({title:"spellchecker.ignore_words",onclick:function(){h._removeWords(j.decode(i.target.innerHTML));h._checkDone()}});d.update()});g.selection.select(i.target);k=j.getPos(i.target);d.showMenu(k.x,k.y+i.target.offsetHeight-f.y);return tinymce.dom.Event.cancel(i)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,h,d){var g=this,f=g.editor.getParam("spellchecker_rpc_url","{backend}");if(f=="{backend}"){g.editor.setProgressState(0);alert("Please specify: spellchecker_rpc_url");return}a.sendRPC({url:f,method:e,params:h,success:d,error:function(j,i){g.editor.setProgressState(0);g.editor.windowManager.alert(j.errstr||("Error response: "+i.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,338 @@
+/**
+ * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
+
+	tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
+		getInfo : function() {
+			return {
+				longname : 'Spellchecker',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		init : function(ed, url) {
+			var t = this, cm;
+
+			t.url = url;
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceSpellCheck', function() {
+				if (!t.active) {
+					ed.setProgressState(1);
+					t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
+						if (r.length > 0) {
+							t.active = 1;
+							t._markWords(r);
+							ed.setProgressState(0);
+							ed.nodeChanged();
+						} else {
+							ed.setProgressState(0);
+							ed.windowManager.alert('spellchecker.no_mpell');
+						}
+					});
+				} else
+					t._done();
+			});
+
+			ed.onInit.add(function() {
+				if (ed.settings.content_css !== false)
+					ed.dom.loadCSS(url + '/css/content.css');
+			});
+
+			ed.onClick.add(t._showMenu, t);
+			ed.onContextMenu.add(t._showMenu, t);
+			ed.onBeforeGetContent.add(function() {
+				if (t.active)
+					t._removeWords();
+			});
+
+			ed.onNodeChange.add(function(ed, cm) {
+				cm.setActive('spellchecker', t.active);
+			});
+
+			ed.onSetContent.add(function() {
+				t._done();
+			});
+
+			ed.onBeforeGetContent.add(function() {
+				t._done();
+			});
+
+			ed.onBeforeExecCommand.add(function(ed, cmd) {
+				if (cmd == 'mceFullScreen')
+					t._done();
+			});
+
+			// Find selected language
+			t.languages = {};
+			each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
+				if (k.indexOf('+') === 0) {
+					k = k.substring(1);
+					t.selectedLang = v;
+				}
+
+				t.languages[k] = v;
+			});
+		},
+
+		createControl : function(n, cm) {
+			var t = this, c, ed = t.editor;
+
+			if (n == 'spellchecker') {
+				c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
+
+				c.onRenderMenu.add(function(c, m) {
+					m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+					each(t.languages, function(v, k) {
+						var o = {icon : 1}, mi;
+
+						o.onclick = function() {
+							mi.setSelected(1);
+							t.selectedItem.setSelected(0);
+							t.selectedItem = mi;
+							t.selectedLang = v;
+						};
+
+						o.title = k;
+						mi = m.add(o);
+						mi.setSelected(v == t.selectedLang);
+
+						if (v == t.selectedLang)
+							t.selectedItem = mi;
+					})
+				});
+
+				return c;
+			}
+		},
+
+		// Internal functions
+
+		_walk : function(n, f) {
+			var d = this.editor.getDoc(), w;
+
+			if (d.createTreeWalker) {
+				w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+				while ((n = w.nextNode()) != null)
+					f.call(this, n);
+			} else
+				tinymce.walk(n, f, 'childNodes');
+		},
+
+		_getSeparators : function() {
+			var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}\u201d\u201c');
+
+			// Build word separator regexp
+			for (i=0; i<str.length; i++)
+				re += '\\' + str.charAt(i);
+
+			return re;
+		},
+
+		_getWords : function() {
+			var ed = this.editor, wl = [], tx = '', lo = {};
+
+			// Get area text
+			this._walk(ed.getBody(), function(n) {
+				if (n.nodeType == 3)
+					tx += n.nodeValue + ' ';
+			});
+
+			// Split words by separator
+			tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
+			tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
+
+			// Build word array and remove duplicates
+			each(tx.split(' '), function(v) {
+				if (!lo[v]) {
+					wl.push(v);
+					lo[v] = 1;
+				}
+			});
+
+			return wl;
+		},
+
+		_removeWords : function(w) {
+			var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();
+
+			each(dom.select('span').reverse(), function(n) {
+				if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
+					if (!w || dom.decode(n.innerHTML) == w)
+						dom.remove(n, 1);
+				}
+			});
+
+			se.moveToBookmark(b);
+		},
+
+		_markWords : function(wl) {
+			var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = [];
+			var se = ed.selection, b = se.getBookmark();
+
+			each(wl, function(v) {
+				w += (w ? '|' : '') + v;
+			});
+
+			r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g');
+			r2 = new RegExp('^(' + w + ')', 'g');
+			r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g');
+			r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g');
+			r5 = new RegExp('(' + w + ')([' + re + '])', 'g');
+
+			// Collect all text nodes
+			this._walk(this.editor.getBody(), function(n) {
+				if (n.nodeType == 3) {
+					nl.push(n);
+				}
+			});
+
+			// Wrap incorrect words in spans
+			each(nl, function(n) {
+				var v;
+
+				if (n.nodeType == 3) {
+					v = n.nodeValue;
+
+					if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) {
+						v = dom.encode(v);
+						v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2');
+						v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2');
+
+						dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n);
+					}
+				}
+			});
+
+			se.moveToBookmark(b);
+		},
+
+		_showMenu : function(ed, e) {
+			var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin());
+
+			if (!m) {
+				p1 = DOM.getPos(ed.getContentAreaContainer());
+				//p2 = DOM.getPos(ed.getContainer());
+
+				m = ed.controlManager.createDropMenu('spellcheckermenu', {
+					offset_x : p1.x,
+					offset_y : p1.y,
+					'class' : 'mceNoIcons'
+				});
+
+				t._menu = m;
+			}
+
+			if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) {
+				m.removeAll();
+				m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+				t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) {
+					m.removeAll();
+
+					if (r.length > 0) {
+						m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+						each(r, function(v) {
+							m.add({title : v, onclick : function() {
+								dom.replace(ed.getDoc().createTextNode(v), e.target);
+								t._checkDone();
+							}});
+						});
+
+						m.addSeparator();
+					} else
+						m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+					m.add({
+						title : 'spellchecker.ignore_word',
+						onclick : function() {
+							dom.remove(e.target, 1);
+							t._checkDone();
+						}
+					});
+
+					m.add({
+						title : 'spellchecker.ignore_words',
+						onclick : function() {
+							t._removeWords(dom.decode(e.target.innerHTML));
+							t._checkDone();
+						}
+					});
+
+					m.update();
+				});
+
+				ed.selection.select(e.target);
+				p1 = dom.getPos(e.target);
+				m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y);
+
+				return tinymce.dom.Event.cancel(e);
+			} else
+				m.hideMenu();
+		},
+
+		_checkDone : function() {
+			var t = this, ed = t.editor, dom = ed.dom, o;
+
+			each(dom.select('span'), function(n) {
+				if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
+					o = true;
+					return false;
+				}
+			});
+
+			if (!o)
+				t._done();
+		},
+
+		_done : function() {
+			var t = this, la = t.active;
+
+			if (t.active) {
+				t.active = 0;
+				t._removeWords();
+
+				if (t._menu)
+					t._menu.hideMenu();
+
+				if (la)
+					t.editor.nodeChanged();
+			}
+		},
+
+		_sendRPC : function(m, p, cb) {
+			var t = this, url = t.editor.getParam("spellchecker_rpc_url", "{backend}");
+
+			if (url == '{backend}') {
+				t.editor.setProgressState(0);
+				alert('Please specify: spellchecker_rpc_url');
+				return;
+			}
+
+			JSONRequest.sendRPC({
+				url : url,
+				method : m,
+				params : p,
+				success : cb,
+				error : function(e, x) {
+					t.editor.setProgressState(0);
+					t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
+				}
+			});
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+GIF89a   **!   ,       Df ;
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/langs/es.js	2006-03-15 12:05:08.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-// UK lang variables
-
-tinyMCE.addToLang('spellchecker',{
-	desc : 'Toggle spellchecker',
-	menu : 'Spellchecker settings',
-	ignore_word : 'Ignore word',
-	ignore_words : 'Ignore all',
-	langs : 'Languages',
-	wait : 'Please wait...',
-	swait : 'Spellchecking, please wait...',
-	sug : 'Suggestions',
-	no_sug : 'No suggestions',
-	no_mpell : 'No misspellings found.'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/css/props.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/css/props.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/css/props.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/css/props.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,62 +1,13 @@
-#text_font {
-	width: 250px;
-}
-
-#text_size {
-	width: 70px;
-}
-
-.mceAddSelectValue {
-	background-color: #DDDDDD;
-}
-
-select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {
-	width: 70px;
-}
-
-#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {
-	width: 70px;
-}
-
-#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {
-	width: 70px;
-}
-
-#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {
-	width: 70px;
-}
-
-.panel_wrapper div.current {
-	padding-top: 10px;
-	height: 230px;
-}
-
-.delim {
-	border-left: 1px solid gray;
-}
-
-.tdelim {
-	border-bottom: 1px solid gray;	
-}
-
-#block_display {
-	width: 145px;
-}
-
-#list_type {
-	width: 115px;
-}
-
-.disabled {
-	background-color: #EEEEEE;
-}
-
-#apply {
-	font-weight: bold;
-	width: 78px;
-	height: 21px;
-	border: 0;
-	background-image: url('../images/apply_button_bg.gif');
-	cursor: pointer;
-}
-
+#text_font {width:250px;}
+#text_size {width:70px;}
+.mceAddSelectValue {background:#DDD;}
+select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}
+#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}
+#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}
+#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}
+.panel_wrapper div.current {padding-top:10px;height:230px;}
+.delim {border-left:1px solid gray;}
+.tdelim {border-bottom:1px solid gray;}
+#block_display {width:145px;}
+#list_type {width:115px;}
+.disabled {background:#EEE;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('style');var TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"styleprops":return tinyMCE.getButtonHTML(cn,'lang_style_styleinfo_desc','{$pluginurl}/images/styleprops.gif','mceStyleProps',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var e,inst;switch(command){case"mceStyleProps":TinyMCE_StylePlugin._styleProps();return true;case"mceSetElementStyle":inst=tinyMCE.getInstanceById(editor_id);e=inst.selection.getFocusElement();if(e){e.style.cssText=value;inst.repaint()}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node.nodeName=='BODY')tinyMCE.switchClass(editor_id+'_styleprops','mceButtonDisabled');else tinyMCE.switchClass(editor_id+'_styleprops','mceButtonNormal')},_styleProps:function(){var e=tinyMCE.selectedInstance.selection.getFocusElement();if(!e||e.nodeName=='BODY')return;tinyMCE.openWindow({file:'../../plugins/style/props.htm',width:480+tinyMCE.getLang('lang_style_props_delta_width',0),height:320+tinyMCE.getLang('lang_style_props_delta_height',0)},{editor_id:tinyMCE.selectedInstance.editorId,inline:"yes",style_text:e.style.cssText})}};tinyMCE.addPlugin("style",TinyMCE_StylePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,83 +1,52 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('style');
-
-var TinyMCE_StylePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Style',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "styleprops":
-				return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.gif', 'mceStyleProps', true);
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		var e, inst;
-
-		// Handle commands
-		switch (command) {
-			case "mceStyleProps":
-				TinyMCE_StylePlugin._styleProps();
-				return true;
-
-			case "mceSetElementStyle":
-				inst = tinyMCE.getInstanceById(editor_id);
-				e = inst.selection.getFocusElement();
-
-				if (e) {
-					e.style.cssText = value;
-					inst.repaint();
-				}
-
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node.nodeName == 'BODY')
-			tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonDisabled');
-		else
-			tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonNormal');
-	},
-
-	// Private plugin specific methods
-
-	_styleProps : function() {
-		var e = tinyMCE.selectedInstance.selection.getFocusElement();
-
-		if (!e || e.nodeName == 'BODY')
-			return;
-
-		tinyMCE.openWindow({
-			file : '../../plugins/style/props.htm',
-			width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0),
-			height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0)
-		}, {
-			editor_id : tinyMCE.selectedInstance.editorId,
-			inline : "yes",
-			style_text : e.style.cssText
-		});
-	}
-};
-
-tinyMCE.addPlugin("style", TinyMCE_StylePlugin);
+/**
+ * $Id: editor_plugin_src.js 787 2008-04-10 11:40:57Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	tinymce.create('tinymce.plugins.StylePlugin', {
+		init : function(ed, url) {
+			// Register commands
+			ed.addCommand('mceStyleProps', function() {
+				ed.windowManager.open({
+					file : url + '/props.htm',
+					width : 480 + parseInt(ed.getLang('style.delta_width', 0)),
+					height : 320 + parseInt(ed.getLang('style.delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url,
+					style_text : ed.selection.getNode().style.cssText
+				});
+			});
+
+			ed.addCommand('mceSetElementStyle', function(ui, v) {
+				if (e = ed.selection.getNode()) {
+					ed.dom.setAttrib(e, 'style', v);
+					ed.execCommand('mceRepaint');
+				}
+			});
+
+			ed.onNodeChange.add(function(ed, cm, n) {
+				cm.setDisabled('styleprops', n.nodeName === 'BODY');
+			});
+
+			// Register buttons
+			ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Style',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/js/props.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/js/props.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/js/props.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/js/props.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,641 @@
+tinyMCEPopup.requireLangPack();
+
+var defaultFonts = "" + 
+	"Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + 
+	"Times New Roman, Times, serif=Times New Roman, Times, serif;" + 
+	"Courier New, Courier, mono=Courier New, Courier, mono;" + 
+	"Times New Roman, Times, serif=Times New Roman, Times, serif;" + 
+	"Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + 
+	"Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + 
+	"Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
+
+var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
+var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
+var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%";
+var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
+var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
+var defaultTextStyle = "normal;italic;oblique";
+var defaultVariant = "normal;small-caps";
+var defaultLineHeight = "normal";
+var defaultAttachment = "fixed;scroll";
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
+var defaultPosH = "left;center;right";
+var defaultPosV = "top;center;bottom";
+var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
+var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
+var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
+var defaultBorderWidth = "thin;medium;thick";
+var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
+
+function init() {
+	var ce = document.getElementById('container'), h;
+
+	ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
+
+	h = getBrowserHTML('background_image_browser','background_image','image','advimage');
+	document.getElementById("background_image_browser").innerHTML = h;
+
+	document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
+	document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
+	document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
+	document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
+	document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
+	document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
+
+	fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
+	fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
+	fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
+	fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
+	fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
+	fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
+	fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
+	fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
+	fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
+
+	fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
+	fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
+
+	fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
+	fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
+	fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
+	fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
+	fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
+	fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
+	fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
+	fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
+	fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
+
+	fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
+	fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
+	fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
+	fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
+	fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
+	fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
+
+	fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
+	fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
+	fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
+	fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
+
+	fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
+	fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
+
+	fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
+	fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
+
+	fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
+
+	fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
+
+	TinyMCE_EditableSelects.init();
+	setupFormData();
+	showDisabledControls();
+}
+
+function setupFormData() {
+	var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
+
+	// Setup text fields
+
+	selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
+	selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
+	selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
+	selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
+	selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
+	selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
+	selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
+	selectByValue(f, 'text_case', ce.style.textTransform, true, true);
+	selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
+	f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);
+	updateColor('text_color_pick', 'text_color');
+	f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
+	f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
+	f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
+	f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
+
+	// Setup background fields
+
+	f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);
+	updateColor('background_color_pick', 'background_color');
+	f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
+	selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
+	selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
+	selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
+	selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
+	selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
+
+	// Setup block fields
+
+	selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
+	selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
+	selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
+	selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
+	selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
+	selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
+	f.block_text_indent.value = getNum(ce.style.textIndent);
+	selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
+	selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
+	selectByValue(f, 'block_display', ce.style.display, true, true);
+
+	// Setup box fields
+
+	f.box_width.value = getNum(ce.style.width);
+	selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
+
+	f.box_height.value = getNum(ce.style.height);
+	selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
+
+	if (tinymce.isGecko)
+		selectByValue(f, 'box_float', ce.style.cssFloat, true, true);
+	else
+		selectByValue(f, 'box_float', ce.style.styleFloat, true, true);
+
+	selectByValue(f, 'box_clear', ce.style.clear, true, true);
+
+	setupBox(f, ce, 'box_padding', 'padding', '');
+	setupBox(f, ce, 'box_margin', 'margin', '');
+
+	// Setup border fields
+
+	setupBox(f, ce, 'border_style', 'border', 'Style');
+	setupBox(f, ce, 'border_width', 'border', 'Width');
+	setupBox(f, ce, 'border_color', 'border', 'Color');
+
+	updateColor('border_color_top_pick', 'border_color_top');
+	updateColor('border_color_right_pick', 'border_color_right');
+	updateColor('border_color_bottom_pick', 'border_color_bottom');
+	updateColor('border_color_left_pick', 'border_color_left');
+
+	f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);
+	f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);
+	f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);
+	f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);
+
+	// Setup list fields
+
+	selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
+	selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
+	f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+	// Setup box fields
+
+	selectByValue(f, 'positioning_type', ce.style.position, true, true);
+	selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
+	selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
+	f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
+
+	f.positioning_width.value = getNum(ce.style.width);
+	selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
+
+	f.positioning_height.value = getNum(ce.style.height);
+	selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
+
+	setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);
+
+	s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
+	s = s.replace(/,/g, ' ');
+
+	if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {
+		f.positioning_clip_top.value = getNum(getVal(s, 0));
+		selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+		f.positioning_clip_right.value = getNum(getVal(s, 1));
+		selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
+		f.positioning_clip_bottom.value = getNum(getVal(s, 2));
+		selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
+		f.positioning_clip_left.value = getNum(getVal(s, 3));
+		selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
+	} else {
+		f.positioning_clip_top.value = getNum(getVal(s, 0));
+		selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+		f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
+	}
+
+//	setupBox(f, ce, '', 'border', 'Color');
+}
+
+function getMeasurement(s) {
+	return s.replace(/^([0-9.]+)(.*)$/, "$2");
+}
+
+function getNum(s) {
+	if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s))
+		return s.replace(/[^0-9.]/g, '');
+
+	return s;
+}
+
+function inStr(s, n) {
+	return new RegExp(n, 'gi').test(s);
+}
+
+function getVal(s, i) {
+	var a = s.split(' ');
+
+	if (a.length > 1)
+		return a[i];
+
+	return "";
+}
+
+function setValue(f, n, v) {
+	if (f.elements[n].type == "text")
+		f.elements[n].value = v;
+	else
+		selectByValue(f, n, v, true, true);
+}
+
+function setupBox(f, ce, fp, pr, sf, b) {
+	if (typeof(b) == "undefined")
+		b = ['Top', 'Right', 'Bottom', 'Left'];
+
+	if (isSame(ce, pr, sf, b)) {
+		f.elements[fp + "_same"].checked = true;
+
+		setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+		f.elements[fp + "_top"].disabled = false;
+
+		f.elements[fp + "_right"].value = "";
+		f.elements[fp + "_right"].disabled = true;
+		f.elements[fp + "_bottom"].value = "";
+		f.elements[fp + "_bottom"].disabled = true;
+		f.elements[fp + "_left"].value = "";
+		f.elements[fp + "_left"].disabled = true;
+
+		if (f.elements[fp + "_top_measurement"]) {
+			selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+			f.elements[fp + "_left_measurement"].disabled = true;
+			f.elements[fp + "_bottom_measurement"].disabled = true;
+			f.elements[fp + "_right_measurement"].disabled = true;
+		}
+	} else {
+		f.elements[fp + "_same"].checked = false;
+
+		setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+		f.elements[fp + "_top"].disabled = false;
+
+		setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
+		f.elements[fp + "_right"].disabled = false;
+
+		setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
+		f.elements[fp + "_bottom"].disabled = false;
+
+		setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
+		f.elements[fp + "_left"].disabled = false;
+
+		if (f.elements[fp + "_top_measurement"]) {
+			selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+			selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
+			selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
+			selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
+			f.elements[fp + "_left_measurement"].disabled = false;
+			f.elements[fp + "_bottom_measurement"].disabled = false;
+			f.elements[fp + "_right_measurement"].disabled = false;
+		}
+	}
+}
+
+function isSame(e, pr, sf, b) {
+	var a = [], i, x;
+
+	if (typeof(b) == "undefined")
+		b = ['Top', 'Right', 'Bottom', 'Left'];
+
+	if (typeof(sf) == "undefined" || sf == null)
+		sf = "";
+
+	a[0] = e.style[pr + b[0] + sf];
+	a[1] = e.style[pr + b[1] + sf];
+	a[2] = e.style[pr + b[2] + sf];
+	a[3] = e.style[pr + b[3] + sf];
+
+	for (i=0; i<a.length; i++) {
+		if (a[i] == null)
+			return false;
+
+		for (x=0; x<a.length; x++) {
+			if (a[x] != a[i])
+				return false;
+		}
+	}
+
+	return true;
+};
+
+function hasEqualValues(a) {
+	var i, x;
+
+	for (i=0; i<a.length; i++) {
+		if (a[i] == null)
+			return false;
+
+		for (x=0; x<a.length; x++) {
+			if (a[x] != a[i])
+				return false;
+		}
+	}
+
+	return true;
+}
+
+function applyAction() {
+	var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
+
+	generateCSS();
+
+	tinyMCEPopup.restoreSelection();
+	ed.dom.setAttrib(ed.selection.getNode(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));
+}
+
+function updateAction() {
+	applyAction();
+	tinyMCEPopup.close();
+}
+
+function generateCSS() {
+	var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
+
+	ce.style.cssText = "";
+
+	// Build text styles
+	ce.style.fontFamily = f.text_font.value;
+	ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");
+	ce.style.fontStyle = f.text_style.value;
+	ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
+	ce.style.textTransform = f.text_case.value;
+	ce.style.fontWeight = f.text_weight.value;
+	ce.style.fontVariant = f.text_variant.value;
+	ce.style.color = f.text_color.value;
+
+	s = "";
+	s += f.text_underline.checked ? " underline" : "";
+	s += f.text_overline.checked ? " overline" : "";
+	s += f.text_linethrough.checked ? " line-through" : "";
+	s += f.text_blink.checked ? " blink" : "";
+	s = s.length > 0 ? s.substring(1) : s;
+
+	if (f.text_none.checked)
+		s = "none";
+
+	ce.style.textDecoration = s;
+
+	// Build background styles
+
+	ce.style.backgroundColor = f.background_color.value;
+	ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
+	ce.style.backgroundRepeat = f.background_repeat.value;
+	ce.style.backgroundAttachment = f.background_attachment.value;
+
+	if (f.background_hpos.value != "") {
+		s = "";
+		s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
+		s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
+		ce.style.backgroundPosition = s;
+	}
+
+	// Build block styles
+
+	ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
+	ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
+	ce.style.verticalAlign = f.block_vertical_alignment.value;
+	ce.style.textAlign = f.block_text_align.value;
+	ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
+	ce.style.whiteSpace = f.block_whitespace.value;
+	ce.style.display = f.block_display.value;
+
+	// Build box styles
+
+	ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
+	ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
+	ce.style.styleFloat = f.box_float.value;
+
+	if (tinymce.isGecko)
+		ce.style.cssFloat = f.box_float.value;
+
+	ce.style.clear = f.box_clear.value;
+
+	if (!f.box_padding_same.checked) {
+		ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
+		ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
+		ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
+		ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
+	} else
+		ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");		
+
+	if (!f.box_margin_same.checked) {
+		ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
+		ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
+		ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
+		ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
+	} else
+		ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");		
+
+	// Build border styles
+
+	if (!f.border_style_same.checked) {
+		ce.style.borderTopStyle = f.border_style_top.value;
+		ce.style.borderRightStyle = f.border_style_right.value;
+		ce.style.borderBottomStyle = f.border_style_bottom.value;
+		ce.style.borderLeftStyle = f.border_style_left.value;
+	} else
+		ce.style.borderStyle = f.border_style_top.value;
+
+	if (!f.border_width_same.checked) {
+		ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
+		ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
+		ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
+		ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
+	} else
+		ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
+
+	if (!f.border_color_same.checked) {
+		ce.style.borderTopColor = f.border_color_top.value;
+		ce.style.borderRightColor = f.border_color_right.value;
+		ce.style.borderBottomColor = f.border_color_bottom.value;
+		ce.style.borderLeftColor = f.border_color_left.value;
+	} else
+		ce.style.borderColor = f.border_color_top.value;
+
+	// Build list styles
+
+	ce.style.listStyleType = f.list_type.value;
+	ce.style.listStylePosition = f.list_position.value;
+	ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
+
+	// Build positioning styles
+
+	ce.style.position = f.positioning_type.value;
+	ce.style.visibility = f.positioning_visibility.value;
+
+	if (ce.style.width == "")
+		ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
+
+	if (ce.style.height == "")
+		ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
+
+	ce.style.zIndex = f.positioning_zindex.value;
+	ce.style.overflow = f.positioning_overflow.value;
+
+	if (!f.positioning_placement_same.checked) {
+		ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+		ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
+		ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
+		ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
+	} else {
+		s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+		ce.style.top = s;
+		ce.style.right = s;
+		ce.style.bottom = s;
+		ce.style.left = s;
+	}
+
+	if (!f.positioning_clip_same.checked) {
+		s = "rect(";
+		s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
+		s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
+		s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
+		s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
+		s += ")";
+
+		if (s != "rect(auto auto auto auto)")
+			ce.style.clip = s;
+	} else {
+		s = "rect(";
+		t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
+		s += t + " ";
+		s += t + " ";
+		s += t + " ";
+		s += t + ")";
+
+		if (s != "rect(auto auto auto auto)")
+			ce.style.clip = s;
+	}
+
+	ce.style.cssText = ce.style.cssText;
+}
+
+function isNum(s) {
+	return new RegExp('[0-9]+', 'g').test(s);
+}
+
+function showDisabledControls() {
+	var f = document.forms, i, a;
+
+	for (i=0; i<f.length; i++) {
+		for (a=0; a<f[i].elements.length; a++) {
+			if (f[i].elements[a].disabled)
+				tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");
+			else
+				tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");
+		}
+	}
+}
+
+function fillSelect(f, s, param, dval, sep, em) {
+	var i, ar, p, se;
+
+	f = document.forms[f];
+	sep = typeof(sep) == "undefined" ? ";" : sep;
+
+	if (em)
+		addSelectValue(f, s, "", "");
+
+	ar = tinyMCEPopup.getParam(param, dval).split(sep);
+	for (i=0; i<ar.length; i++) {
+		se = false;
+
+		if (ar[i].charAt(0) == '+') {
+			ar[i] = ar[i].substring(1);
+			se = true;
+		}
+
+		p = ar[i].split('=');
+
+		if (p.length > 1) {
+			addSelectValue(f, s, p[0], p[1]);
+
+			if (se)
+				selectByValue(f, s, p[1]);
+		} else {
+			addSelectValue(f, s, p[0], p[0]);
+
+			if (se)
+				selectByValue(f, s, p[0]);
+		}
+	}
+}
+
+function toggleSame(ce, pre) {
+	var el = document.forms[0].elements, i;
+
+	if (ce.checked) {
+		el[pre + "_top"].disabled = false;
+		el[pre + "_right"].disabled = true;
+		el[pre + "_bottom"].disabled = true;
+		el[pre + "_left"].disabled = true;
+
+		if (el[pre + "_top_measurement"]) {
+			el[pre + "_top_measurement"].disabled = false;
+			el[pre + "_right_measurement"].disabled = true;
+			el[pre + "_bottom_measurement"].disabled = true;
+			el[pre + "_left_measurement"].disabled = true;
+		}
+	} else {
+		el[pre + "_top"].disabled = false;
+		el[pre + "_right"].disabled = false;
+		el[pre + "_bottom"].disabled = false;
+		el[pre + "_left"].disabled = false;
+
+		if (el[pre + "_top_measurement"]) {
+			el[pre + "_top_measurement"].disabled = false;
+			el[pre + "_right_measurement"].disabled = false;
+			el[pre + "_bottom_measurement"].disabled = false;
+			el[pre + "_left_measurement"].disabled = false;
+		}
+	}
+
+	showDisabledControls();
+}
+
+function synch(fr, to) {
+	var f = document.forms[0];
+
+	f.elements[to].value = f.elements[fr].value;
+
+	if (f.elements[fr + "_measurement"])
+		selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,63 @@
+tinyMCE.addI18n('ca.style_dlg',{
+title:"Edita l'Estil CSS",
+apply:"Aplica",
+text_tab:"Text",
+background_tab:"Fons",
+block_tab:"Bloc",
+box_tab:"Caixa",
+border_tab:"Vora",
+list_tab:"Llista",
+positioning_tab:"Posicionament",
+text_props:"Text",
+text_font:"Tipografia",
+text_size:"Mida",
+text_weight:"Pes",
+text_style:"Estil",
+text_variant:"Variaci\u00F3",
+text_lineheight:"Al\u00E7ada de la L\u00EDnia",
+text_case:"Caixa",
+text_color:"Color",
+text_decoration:"Decoraci\u00F3",
+text_overline:"sobreratllat",
+text_underline:"subratllat",
+text_striketrough:"tatxat",
+text_blink:"intermitent",
+text_none:"cap",
+background_color:"Color de fons",
+background_image:"Imatge de fons",
+background_repeat:"Repeteix",
+background_attachment:"Adjunci\u00F3",
+background_hpos:"Posici\u00F3 horitzontal",
+background_vpos:"Posici\u00F3 vertical",
+block_wordspacing:"Espaiat de paraules",
+block_letterspacing:"Espaiat de lletres",
+block_vertical_alignment:"Alineaci\u00F3 vertical",
+block_text_align:"Alineaci\u00F3 del text",
+block_text_indent:"Sagnat del text",
+block_whitespace:"Espai en blanc",
+block_display:"Mostra",
+box_width:"Amplada",
+box_height:"Al\u00E7ada",
+box_float:"Flota",
+box_clear:"Neteja",
+padding:"Farciment",
+same:"Igual per a tots",
+top:"Dalt",
+right:"Dreta",
+bottom:"Baix",
+left:"Esquerra",
+margin:"Marge",
+style:"Estil",
+width:"Amplada",
+height:"Al\u00E7ada",
+color:"Color",
+list_type:"Tipus",
+bullet_image:"Imatge de pic",
+position:"Posici\u00F3",
+positioning_type:"Tipus",
+visibility:"Visibilitat",
+zindex:"Z-index",
+overflow:"Sobreeiximent",
+placement:"Col\u00B7locaci\u00F3",
+clip:"Retall"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,63 @@
+tinyMCE.addI18n('en.style_dlg',{
+title:"Edit CSS Style",
+apply:"Apply",
+text_tab:"Text",
+background_tab:"Background",
+block_tab:"Block",
+box_tab:"Box",
+border_tab:"Border",
+list_tab:"List",
+positioning_tab:"Positioning",
+text_props:"Text",
+text_font:"Font",
+text_size:"Size",
+text_weight:"Weight",
+text_style:"Style",
+text_variant:"Variant",
+text_lineheight:"Line height",
+text_case:"Case",
+text_color:"Color",
+text_decoration:"Decoration",
+text_overline:"overline",
+text_underline:"underline",
+text_striketrough:"strikethrough",
+text_blink:"blink",
+text_none:"none",
+background_color:"Background color",
+background_image:"Background image",
+background_repeat:"Repeat",
+background_attachment:"Attachment",
+background_hpos:"Horizontal position",
+background_vpos:"Vertical position",
+block_wordspacing:"Word spacing",
+block_letterspacing:"Letter spacing",
+block_vertical_alignment:"Vertical alignment",
+block_text_align:"Text align",
+block_text_indent:"Text indent",
+block_whitespace:"Whitespace",
+block_display:"Display",
+box_width:"Width",
+box_height:"Height",
+box_float:"Float",
+box_clear:"Clear",
+padding:"Padding",
+same:"Same for all",
+top:"Top",
+right:"Right",
+bottom:"Bottom",
+left:"Left",
+margin:"Margin",
+style:"Style",
+width:"Width",
+height:"Height",
+color:"Color",
+list_type:"Type",
+bullet_image:"Bullet image",
+position:"Position",
+positioning_type:"Type",
+visibility:"Visibility",
+zindex:"Z-index",
+overflow:"Overflow",
+placement:"Placement",
+clip:"Clip"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,63 @@
+tinyMCE.addI18n('es.style_dlg',{
+title:"Editar Estilo CSS",
+apply:"Aplicar",
+text_tab:"Texto",
+background_tab:"Fondo",
+block_tab:"Bloque",
+box_tab:"Caja",
+border_tab:"Borde",
+list_tab:"Lista",
+positioning_tab:"Posici\u00F3n",
+text_props:"Texto",
+text_font:"Fuente",
+text_size:"Tama\u00F1o",
+text_weight:"Peso",
+text_style:"Estilo",
+text_variant:"Variante",
+text_lineheight:"Ancho de la fila",
+text_case:"Min\u00FAs./May\u00FAs.",
+text_color:"Color",
+text_decoration:"Decorativos",
+text_overline:"Subrayado superior",
+text_underline:"Subrayado",
+text_striketrough:"Tachado",
+text_blink:"Parpadeo",
+text_none:"Ninguno",
+background_color:"Color de fondo",
+background_image:"Imagen de fondo",
+background_repeat:"Repetici\u00F3n",
+background_attachment:"Adjunto",
+background_hpos:"Posici\u00F3n horizontal",
+background_vpos:"Posici\u00F3n vertical",
+block_wordspacing:"Espacio entre palabra",
+block_letterspacing:"Espacio entre letra",
+block_vertical_alignment:"Alineaci\u00F3n vertical",
+block_text_align:"Alineaci\u00F3n del texto",
+block_text_indent:"Sangr\u00EDa",
+block_whitespace:"Espacio en blanco",
+block_display:"Display",
+box_width:"Ancho",
+box_height:"Alto",
+box_float:"Float",
+box_clear:"Clear",
+padding:"Padding",
+same:"Lo mismo en todos",
+top:"Arriba",
+right:"Derecha",
+bottom:"Debajo",
+left:"Izquierda",
+margin:"Margen",
+style:"Estilo",
+width:"Ancho",
+height:"Alto",
+color:"Color",
+list_type:"Tipo",
+bullet_image:"Imagen de la vi\u00F1eta",
+position:"Posici\u00F3n",
+positioning_type:"Tipo",
+visibility:"Visibilidad",
+zindex:"Z-index",
+overflow:"Overflow",
+placement:"Placement",
+clip:"Clip"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es.js	2006-07-14 12:40:28.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,66 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('style',{
-title : 'Editar estilo CSS',
-styleinfo_desc : 'Editar estilo CSS',
-text_tab : 'Texto',
-background_tab : 'Fondo',
-block_tab : 'Bloque',
-box_tab : 'Cuadro',
-border_tab : 'Borde',
-list_tab : 'Lista',
-positioning_tab : 'Posicionamiento',
-text_props : 'Texto',
-text_font : 'Fuente',
-text_size : 'Tama&ntilde;o',
-text_weight : 'Peso',
-text_style : 'Estilo',
-text_variant : 'Variante',
-text_lineheight : 'Altura de l&iacute;nea',
-text_case : 'Caso',
-text_color : 'Color',
-text_decoration : 'Decoraci&oacute;n',
-background_color : 'Color de fondo',
-background_image : 'Imagen de fondo',
-background_repeat : 'Repetir',
-background_attachment : 'Agregado',
-background_hpos : 'Posici&oacute;n horizontal',
-background_vpos : 'Posici&oacute;n vertical',
-block_wordspacing : 'Espaciado de palabras',
-block_letterspacing : 'Espaciado de letras',
-block_vertical_alignment : 'Alineaci&oacute;n vertical',
-block_text_align : 'Alineaci&oacute;n del texto',
-block_text_indent : 'Indentaci&oacute;n del texto',
-block_whitespace : 'Espacio',
-block_display : 'Mostrar',
-box_width : 'Ancho',
-box_height : 'Alto',
-box_float : 'Flotante',
-box_clear : 'Borrar',
-padding : 'Espaciado',
-same : 'Igual para todo',
-top : 'Arriba',
-right : 'Derecha',
-bottom : 'Abajo',
-left : 'Izquierda',
-margin : 'Margen',
-style : 'Estilo',
-width : 'Ancho',
-height : 'Alto',
-color : 'Color',
-list_type : 'Tipo',
-bullet_image : 'Imagen de vi&ntilde;eta',
-position : 'Posici&oacute;n',
-positioning_type : 'Tipo',
-visibility : 'Visibilidad',
-zindex : 'Z-index',
-overflow : 'Desbordamiento',
-placement : 'Emplazamiento',
-clip : 'Recortar'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/props.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/props.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/props.htm	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/style/props.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,26 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_style_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/props.js"></script>
+	<title>{#style_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="js/props.js"></script>
 	<link href="css/props.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
 
-<body id="styleprops" onLoad="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-<form onSubmit="updateAction();return false;" action="#">
+<body id="styleprops" style="display: none">
+<form onsubmit="updateAction();return false;" action="#">
 <div class="tabs">
 	<ul>
-		<li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{$lang_style_text_tab}</a></span></li>
-		<li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{$lang_style_background_tab}</a></span></li>
-		<li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{$lang_style_block_tab}</a></span></li>
-		<li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{$lang_style_box_tab}</a></span></li>
-		<li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{$lang_style_border_tab}</a></span></li>
-		<li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{$lang_style_list_tab}</a></span></li>
-		<li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{$lang_style_positioning_tab}</a></span></li>
+		<li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li>
+		<li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li>
+		<li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li>
+		<li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li>
+		<li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li>
+		<li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li>
+		<li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li>
 	</ul>
 </div>
 
@@ -28,13 +28,13 @@
 <div id="text_panel" class="panel current">
 	<table border="0" width="100%">
 		<tr>
-			<td><label for="text_font">{$lang_style_text_font}</label></td>
+			<td><label for="text_font">{#style_dlg.text_font}</label></td>
 			<td colspan="3">
-				<select id="text_font" name="text_font" class="mceEditableSelect" onChange="alert(this.options[this.selectedIndex].value);"></select>
+				<select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_size">{$lang_style_text_size}</label></td>
+			<td><label for="text_size">{#style_dlg.text_size}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
@@ -44,23 +44,23 @@
 					</tr>
 				</table>
 			</td>
-			<td><label for="text_weight">{$lang_style_text_weight}</label></td>
+			<td><label for="text_weight">{#style_dlg.text_weight}</label></td>
 			<td>
 				<select id="text_weight" name="text_weight"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_style">{$lang_style_text_style}</label></td>
+			<td><label for="text_style">{#style_dlg.text_style}</label></td>
 			<td>
 				<select id="text_style" name="text_style" class="mceEditableSelect"></select>
 			</td>
-			<td><label for="text_variant">{$lang_style_text_variant}</label></td>
+			<td><label for="text_variant">{#style_dlg.text_variant}</label></td>
 			<td>
 				<select id="text_variant" name="text_variant"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_lineheight">{$lang_style_text_lineheight}</label></td>
+			<td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
@@ -68,17 +68,17 @@
 							<select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
 						</td>
 						<td>&nbsp;</td>
-      <td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
+						<td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
-			<td><label for="text_case">{$lang_style_text_case}</label></td>
+			<td><label for="text_case">{#style_dlg.text_case}</label></td>
 			<td>
 				<select id="text_case" name="text_case"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_color">{$lang_style_text_color}</label></td>
+			<td><label for="text_color">{#style_dlg.text_color}</label></td>
 			<td colspan="2">
 				<table border="0" cellpadding="0" cellspacing="0">
 					<tr>
@@ -89,28 +89,28 @@
 			</td>
 		</tr>
 		<tr>
-			<td valign="top" style="vertical-align: top; padding-top: 3px;">{$lang_style_text_decoration}</td>
+			<td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td>
 			<td colspan="2">
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_underline">{$lang_style_text_underline}</label></td>
+						<td><label for="text_underline">{#style_dlg.text_underline}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_overline">{$lang_style_text_overline}</label></td>
+						<td><label for="text_overline">{#style_dlg.text_overline}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_linethrough">{$lang_style_text_striketrough}</label></td>
+						<td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_blink">{$lang_style_text_blink}</label></td>
+						<td><label for="text_blink">{#style_dlg.text_blink}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_none">{$lang_style_text_none}</label></td>
+						<td><label for="text_none">{#style_dlg.text_none}</label></td>
 					</tr>
 				</table>
 			</td>
@@ -121,7 +121,7 @@
 <div id="background_panel" class="panel">
 	<table border="0">
 		<tr>
-			<td><label for="background_color">{$lang_style_background_color}</label></td>
+			<td><label for="background_color">{#style_dlg.background_color}</label></td>
 			<td>
 				<table border="0" cellpadding="0" cellspacing="0">
 					<tr>
@@ -133,7 +133,7 @@
 		</tr>
 
 		<tr>
-			<td><label for="background_image">{$lang_style_background_image}</label></td>
+			<td><label for="background_image">{#style_dlg.background_image}</label></td>
 			<td><table border="0" cellspacing="0" cellpadding="0">
 				<tr> 
 				  <td><input id="background_image" name="background_image" type="text" /></td> 
@@ -144,36 +144,36 @@
 		</tr>
 
 		<tr>
-			<td><label for="background_repeat">{$lang_style_background_repeat}</label></td>
+			<td><label for="background_repeat">{#style_dlg.background_repeat}</label></td>
 			<td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="background_attachment">{$lang_style_background_attachment}</label></td>
+			<td><label for="background_attachment">{#style_dlg.background_attachment}</label></td>
 			<td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="background_hpos">{$lang_style_background_hpos}</label></td>
+			<td><label for="background_hpos">{#style_dlg.background_hpos}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-      <td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
+						<td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
 		</tr>
 
 		<tr>
-			<td><label for="background_vpos">{$lang_style_background_vpos}</label></td>
+			<td><label for="background_vpos">{#style_dlg.background_vpos}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-      <td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
+						<td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
@@ -184,61 +184,61 @@
 <div id="block_panel" class="panel">
 	<table border="0">
 		<tr>
-			<td><label for="block_wordspacing">{$lang_style_block_wordspacing}</label></td>
+			<td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-      <td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
+						<td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
 		</tr>
 
 		<tr>
-			<td><label for="block_letterspacing">{$lang_style_block_letterspacing}</label></td>
+			<td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-      <td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
+						<td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
 		</tr>
 
 		<tr>
-			<td><label for="block_vertical_alignment">{$lang_style_block_vertical_alignment}</label></td>
+			<td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td>
 			<td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="block_text_align">{$lang_style_block_text_align}</label></td>
+			<td><label for="block_text_align">{#style_dlg.block_text_align}</label></td>
 			<td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="block_text_indent">{$lang_style_block_text_indent}</label></td>
+			<td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
 						<td>&nbsp;</td>
-      <td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
+						<td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
 		</tr>
 
 		<tr>
-			<td><label for="block_whitespace">{$lang_style_block_whitespace}</label></td>
+			<td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td>
 			<td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="block_display">{$lang_style_block_display}</label></td>
+			<td><label for="block_display">{#style_dlg.block_display}</label></td>
 			<td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
 		</tr>
 	</table>
@@ -247,88 +247,88 @@
 <div id="box_panel" class="panel">
 <table border="0">
 	<tr>
-		<td><label for="box_width">{$lang_style_box_width}</label></td>
+		<td><label for="box_width">{#style_dlg.box_width}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
 					<td>&nbsp;</td>
-     <td><select id="box_width_measurement" name="box_width_measurement"></select></td>
+					<td><select id="box_width_measurement" name="box_width_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="box_float">{$lang_style_box_float}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="box_float">{#style_dlg.box_float}</label></td>
 		<td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
 	</tr>
 
 	<tr>
-		<td><label for="box_height">{$lang_style_box_height}</label></td>
+		<td><label for="box_height">{#style_dlg.box_height}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
 					<td>&nbsp;</td>
-     <td><select id="box_height_measurement" name="box_height_measurement"></select></td>
+					<td><select id="box_height_measurement" name="box_height_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{$lang_style_box_clear}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{#style_dlg.box_clear}</label></td>
 		<td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
 	</tr>
 </table>
 <div style="float: left; width: 49%">
 	<fieldset>
-		<legend>{$lang_style_padding}</legend>
+		<legend>{#style_dlg.padding}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{$lang_style_same}</label></td>
+				<td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td>
 			</tr>
 			<tr>
-				<td><label for="box_padding_top">{$lang_style_top}</label></td>
+				<td><label for="box_padding_top">{#style_dlg.top}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
+							<td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td><label for="box_padding_right">{$lang_style_right}</label></td>
+				<td><label for="box_padding_right">{#style_dlg.right}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
+							<td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td><label for="box_padding_bottom">{$lang_style_bottom}</label></td>
+				<td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
+							<td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td><label for="box_padding_left">{$lang_style_left}</label></td>
+				<td><label for="box_padding_left">{#style_dlg.left}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
+							<td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -339,57 +339,57 @@
 
 <div style="float: right; width: 49%">
 	<fieldset>
-		<legend>{$lang_style_margin}</legend>
+		<legend>{#style_dlg.margin}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{$lang_style_same}</label></td>
+				<td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td>
 			</tr>
 			<tr>
-				<td><label for="box_margin_top">{$lang_style_top}</label></td>
+				<td><label for="box_margin_top">{#style_dlg.top}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
+							<td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td><label for="box_margin_right">{$lang_style_right}</label></td>
+				<td><label for="box_margin_right">{#style_dlg.right}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
+							<td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td><label for="box_margin_bottom">{$lang_style_bottom}</label></td>
+				<td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
+							<td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td><label for="box_margin_left">{$lang_style_left}</label></td>
+				<td><label for="box_margin_left">{#style_dlg.left}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
+							<td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -405,25 +405,25 @@
 <tr>
 	<td class="tdelim">&nbsp;</td>
 	<td class="tdelim delim">&nbsp;</td>
-	<td class="tdelim">{$lang_style_style}</td>
+	<td class="tdelim">{#style_dlg.style}</td>
 	<td class="tdelim delim">&nbsp;</td>
-	<td class="tdelim">{$lang_style_width}</td>
+	<td class="tdelim">{#style_dlg.width}</td>
 	<td class="tdelim delim">&nbsp;</td>
-	<td class="tdelim">{$lang_style_color}</td>
+	<td class="tdelim">{#style_dlg.color}</td>
 </tr>
 
 <tr>
 	<td>&nbsp;</td>
 	<td class="delim">&nbsp;</td>
-	<td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{$lang_style_same}</label></td>
+	<td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td>
 	<td class="delim">&nbsp;</td>
-	<td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{$lang_style_same}</label></td>
+	<td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td>
 	<td class="delim">&nbsp;</td>
-	<td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{$lang_style_same}</label></td>
+	<td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td>
 </tr>
 
 <tr>
-	<td>{$lang_style_top}</td>
+	<td>{#style_dlg.top}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -432,7 +432,7 @@
 			<tr>
 				<td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
 				<td>&nbsp;</td>
-    <td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
+				<td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -448,7 +448,7 @@
 </tr>
 
 <tr>
-	<td>{$lang_style_right}</td>
+	<td>{#style_dlg.right}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -457,7 +457,7 @@
 			<tr>
 				<td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
 				<td>&nbsp;</td>
-    <td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
+				<td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -473,7 +473,7 @@
 </tr>
 
 <tr>
-	<td>{$lang_style_bottom}</td>
+	<td>{#style_dlg.bottom}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -482,7 +482,7 @@
 			<tr>
 				<td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
 				<td>&nbsp;</td>
-    <td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
+				<td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -498,7 +498,7 @@
 </tr>
 
 <tr>
-	<td>{$lang_style_left}</td>
+	<td>{#style_dlg.left}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -507,7 +507,7 @@
 			<tr>
 				<td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
 				<td>&nbsp;</td>
-    <td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
+				<td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -527,17 +527,17 @@
 <div id="list_panel" class="panel">
 	<table border="0">
 		<tr>
-			<td><label for="list_type">{$lang_style_list_type}</label></td>
+			<td><label for="list_type">{#style_dlg.list_type}</label></td>
 			<td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="list_bullet_image">{$lang_style_bullet_image}</label></td>
+			<td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td>
 			<td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
 		</tr>
 
 		<tr>
-			<td><label for="list_position">{$lang_style_position}</label></td>
+			<td><label for="list_position">{#style_dlg.position}</label></td>
 			<td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
 		</tr>
 	</table>
@@ -546,96 +546,96 @@
 <div id="positioning_panel" class="panel">
 <table border="0">
 	<tr>
-		<td><label for="positioning_type">{$lang_style_positioning_type}</label></td>
+		<td><label for="positioning_type">{#style_dlg.positioning_type}</label></td>
 		<td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{$lang_style_visibility}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{#style_dlg.visibility}</label></td>
 		<td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
 	</tr>
 
 	<tr>
-		<td><label for="positioning_width">{$lang_style_width}</label></td>
+		<td><label for="positioning_width">{#style_dlg.width}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
 					<td>&nbsp;</td>
-     <td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
+					<td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{$lang_style_zindex}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{#style_dlg.zindex}</label></td>
 		<td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
 	</tr>
 
 	<tr>
-		<td><label for="positioning_height">{$lang_style_height}</label></td>
+		<td><label for="positioning_height">{#style_dlg.height}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
 					<td>&nbsp;</td>
-     <td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
+					<td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{$lang_style_overflow}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{#style_dlg.overflow}</label></td>
 		<td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
 	</tr>
 </table>
 
 <div style="float: left; width: 49%">
 	<fieldset>
-		<legend>{$lang_style_placement}</legend>
+		<legend>{#style_dlg.placement}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{$lang_style_same}</label></td>
+				<td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td>
 			</tr>
 			<tr>
-				<td>{$lang_style_top}</td>
+				<td>{#style_dlg.top}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
+							<td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td>{$lang_style_right}</td>
+				<td>{#style_dlg.right}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
+							<td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td>{$lang_style_bottom}</td>
+				<td>{#style_dlg.bottom}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
+							<td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td>{$lang_style_left}</td>
+				<td>{#style_dlg.left}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
+							<td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -646,57 +646,57 @@
 
 <div style="float: right; width: 49%">
 	<fieldset>
-		<legend>{$lang_style_clip}</legend>
+		<legend>{#style_dlg.clip}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{$lang_style_same}</label></td>
+				<td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td>
 			</tr>
 			<tr>
-				<td>{$lang_style_top}</td>
+				<td>{#style_dlg.top}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
+							<td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td>{$lang_style_right}</td>
+				<td>{#style_dlg.right}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
+							<td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td>{$lang_style_bottom}</td>
+				<td>{#style_dlg.bottom}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
+							<td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
 			</tr>
 			<tr>
-				<td>{$lang_style_left}</td>
+				<td>{#style_dlg.left}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-       <td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
+							<td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -710,14 +710,14 @@
 
 <div class="mceActionPanel">
 	<div style="float: left">
-		<div style="float: left"><input type="button" id="insert" name="insert" value="{$lang_update}" onClick="updateAction();" /></div>
+		<div style="float: left"><input type="submit" id="insert" name="insert" value="{#update}" /></div>
 
-		<div style="float: left">&nbsp;<input type="button" id="apply" name="apply" value="{$lang_style_apply}" onClick="applyAction();" class="updateButton" /></div>
+		<div style="float: left">&nbsp;<input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" /></div>
 		<br style="clear: both" />
 	</div>
 
 	<div style="float: right">
-		<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onClick="tinyMCEPopup.close();" />
+		<input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" />
 	</div>
 </div>
 </form>
@@ -725,5 +725,6 @@
 <div style="display: none">
 	<div id="container"></div>
 </div>
+
 </body>
 </html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1 @@
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m<n.length;m++){if(n[m].type!="hidden"){return n[m]}}}else{for(m=j-1;m>=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.EditorManager.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,109 @@
+/**
+ * $Id: editor_plugin_src.js 787 2008-04-10 11:40:57Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;
+
+	tinymce.create('tinymce.plugins.TabFocusPlugin', {
+		init : function(ed, url) {
+			function tabCancel(ed, e) {
+				if (e.keyCode === 9)
+					return Event.cancel(e);
+			};
+
+			function tabHandler(ed, e) {
+				var x, i, f, el, v;
+
+				function find(d) {
+					f = DOM.getParent(ed.id, 'form');
+					el = f.elements;
+
+					if (f) {
+						each(el, function(e, i) {
+							if (e.id == ed.id) {
+								x = i;
+								return false;
+							}
+						});
+
+						if (d > 0) {
+							for (i = x + 1; i < el.length; i++) {
+								if (el[i].type != 'hidden')
+									return el[i];
+							}
+						} else {
+							for (i = x - 1; i >= 0; i--) {
+								if (el[i].type != 'hidden')
+									return el[i];
+							}
+						}
+					}
+
+					return null;
+				};
+
+				if (e.keyCode === 9) {
+					v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));
+
+					if (v.length == 1) {
+						v[1] = v[0];
+						v[0] = ':prev';
+					}
+
+					// Find element to focus
+					if (e.shiftKey) {
+						if (v[0] == ':prev')
+							el = find(-1);
+						else
+							el = DOM.get(v[0]);
+					} else {
+						if (v[1] == ':next')
+							el = find(1);
+						else
+							el = DOM.get(v[1]);
+					}
+
+					if (el) {
+						if (ed = tinymce.EditorManager.get(el.id || el.name))
+							ed.focus();
+						else
+							window.setTimeout(function() {window.focus();el.focus();}, 10);
+
+						return Event.cancel(e);
+					}
+				}
+			};
+
+			ed.onKeyUp.add(tabCancel);
+
+			if (tinymce.isGecko) {
+				ed.onKeyPress.add(tabHandler);
+				ed.onKeyDown.add(tabCancel);
+			} else
+				ed.onKeyDown.add(tabHandler);
+
+			ed.onInit.add(function() {
+				each(DOM.select('a:first,a:last', ed.getContainer()), function(n) {
+					Event.add(n, 'focus', function() {ed.focus();});
+				});
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Tabfocus',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/cell.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/cell.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/cell.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/cell.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,85 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_table_cell_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/cell.js"></script>
+	<title>{#table_dlg.cell_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script type="text/javascript" src="js/cell.js"></script>
 	<link href="css/cell.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body id="tablecell" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="tablecell" style="display: none">
 	<form onsubmit="updateAction();return false;" action="#">
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
 				<fieldset>
-					<legend>{$lang_table_general_props}</legend>
+					<legend>{#table_dlg.general_props}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td><label for="align">{$lang_table_align}</label></td>
+							<td><label for="align">{#table_dlg.align}</label></td>
 							<td>
-								<select id="align" name="align">
-									<option value="">{$lang_not_set}</option>
-									<option value="center">{$lang_table_align_middle}</option>
-									<option value="left">{$lang_table_align_left}</option>
-									<option value="right">{$lang_table_align_right}</option>
+								<select id="align" name="align" class="mceFocus">
+									<option value="">{#not_set}</option>
+									<option value="center">{#table_dlg.align_middle}</option>
+									<option value="left">{#table_dlg.align_left}</option>
+									<option value="right">{#table_dlg.align_right}</option>
 								</select>
 							</td>
 		
-							<td><label for="celltype">{$lang_table_cell_type}</label></td>
+							<td><label for="celltype">{#table_dlg.cell_type}</label></td>
 							<td>
 								<select id="celltype" name="celltype">
-									<option value="td">{$lang_table_td}</option>
-									<option value="th">{$lang_table_th}</option>
+									<option value="td">{#table_dlg.td}</option>
+									<option value="th">{#table_dlg.th}</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="valign">{$lang_table_valign}</label></td>
+							<td><label for="valign">{#table_dlg.valign}</label></td>
 							<td>
 								<select id="valign" name="valign">
-									<option value="">{$lang_not_set}</option>
-									<option value="top">{$lang_table_align_top}</option>
-									<option value="middle">{$lang_table_align_middle}</option>
-									<option value="bottom">{$lang_table_align_bottom}</option>
+									<option value="">{#not_set}</option>
+									<option value="top">{#table_dlg.align_top}</option>
+									<option value="middle">{#table_dlg.align_middle}</option>
+									<option value="bottom">{#table_dlg.align_bottom}</option>
 								</select>
 							</td>
 
-							<td><label for="scope">{$lang_table_scope}</label></td>
+							<td><label for="scope">{#table_dlg.scope}</label></td>
 							<td>
 								<select id="scope" name="scope">
-									<option value="">{$lang_not_set}</option>
-									<option value="col">{$lang_table_col}</option>
-									<option value="row">{$lang_table_row}</option>
-									<option value="rowgroup">{$lang_table_rowgroup}</option>
-									<option value="colgroup">{$lang_table_colgroup}</option>
+									<option value="">{#not_set}</option>
+									<option value="col">{#table.col}</option>
+									<option value="row">{#table.row}</option>
+									<option value="rowgroup">{#table_dlg.rowgroup}</option>
+									<option value="colgroup">{#table_dlg.colgroup}</option>
 								</select>
 							</td>
 
 						</tr>
 
 						<tr>
-							<td><label for="width">{$lang_table_width}</label></td>
+							<td><label for="width">{#table_dlg.width}</label></td>
 							<td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
 
-							<td><label for="height">{$lang_table_height}</label></td>
+							<td><label for="height">{#table_dlg.height}</label></td>
 							<td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
 						</tr>
 
 						<tr id="styleSelectRow">
-							<td><label for="class">{$lang_class_name}</label></td>
+							<td><label for="class">{#class_name}</label></td>
 							<td colspan="3">
-								<select id="class" name="class">
-									<option value="" selected="selected">{$lang_not_set}</option>
+								<select id="class" name="class" class="mceEditableSelect">
+									<option value="" selected="selected">{#not_set}</option>
 								</select>
 							</td>
 						</tr>
@@ -89,39 +90,39 @@
 
 			<div id="advanced_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_table_advanced_props}</legend>
+					<legend>{#table_dlg.advanced_props}</legend>
 
 					<table border="0" cellpadding="0" cellspacing="4">
 						<tr>
-							<td class="column1"><label for="id">{$lang_table_id}</label></td> 
+							<td class="column1"><label for="id">{#table_dlg.id}</label></td> 
 							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
 						</tr>
 
 						<tr>
-							<td><label for="style">{$lang_table_style}</label></td>
+							<td><label for="style">{#table_dlg.style}</label></td>
 							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+							<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> 
 							<td>
 								<select id="dir" name="dir" style="width: 200px"> 
-										<option value="">{$lang_not_set}</option> 
-										<option value="ltr">{$lang_table_ltr}</option> 
-										<option value="rtl">{$lang_table_rtl}</option> 
+										<option value="">{#not_set}</option> 
+										<option value="ltr">{#table_dlg.ltr}</option> 
+										<option value="rtl">{#table_dlg.rtl}</option> 
 								</select>
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 
+							<td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> 
 							<td>
 								<input id="lang" name="lang" type="text" value="" style="width: 200px" />
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+							<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -133,7 +134,7 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 
+							<td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -145,7 +146,7 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+							<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -163,18 +164,18 @@
 		<div class="mceActionPanel">
 			<div>
 				<select id="action" name="action">
-					<option value="cell">{$lang_table_cell_cell}</option>
-					<option value="row">{$lang_table_cell_row}</option>
-					<option value="all">{$lang_table_cell_all}</option>
+					<option value="cell">{#table_dlg.cell_cell}</option>
+					<option value="row">{#table_dlg.cell_row}</option>
+					<option value="all">{#table_dlg.cell_all}</option>
 				</select>
 			</div>
 
 			<div style="float: left">
-				<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+				<div><input type="submit" id="insert" name="insert" value="{#update}" /></div>
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
 	</form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,17 +1,17 @@
-/* CSS file for cell dialog in the table plugin */
-
-.panel_wrapper div.current {
-	height: 200px;
-}
-
-.advfield {
-	width: 200px;
-}
-
-#action {
-	margin-bottom: 3px;
-}
-
-#class {
-	width: 150px;
+/* CSS file for cell dialog in the table plugin */
+
+.panel_wrapper div.current {
+	height: 200px;
+}
+
+.advfield {
+	width: 200px;
+}
+
+#action {
+	margin-bottom: 3px;
+}
+
+#class {
+	width: 150px;
 }
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/row.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/row.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/row.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/row.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,25 +1,25 @@
-/* CSS file for row dialog in the table plugin */
-
-.panel_wrapper div.current {
-	height: 200px;
-}
-
-.advfield {
-	width: 200px;
-}
-
-#action {
-	margin-bottom: 3px;
-}
-
-#rowtype,#align,#valign,#class,#height {
-	width: 150px;
-}
-
-#height {
-	width: 50px;	
-}
-
-.col2 {
-	padding-left: 20px;
-}
+/* CSS file for row dialog in the table plugin */
+
+.panel_wrapper div.current {
+	height: 200px;
+}
+
+.advfield {
+	width: 200px;
+}
+
+#action {
+	margin-bottom: 3px;
+}
+
+#rowtype,#align,#valign,#class,#height {
+	width: 150px;
+}
+
+#height {
+	width: 50px;	
+}
+
+.col2 {
+	padding-left: 20px;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/table.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/table.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/table.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/css/table.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,13 +1,13 @@
-/* CSS file for table dialog in the table plugin */
-
-.panel_wrapper div.current {
-	height: 220px;
-}
-
-.advfield {
-	width: 200px;
-}
-
-#class {
-	width: 150px;
-}
+/* CSS file for table dialog in the table plugin */
+
+.panel_wrapper div.current {
+	height: 245px;
+}
+
+.advfield {
+	width: 200px;
+}
+
+#class {
+	width: 150px;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('table');var TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_TablePlugin._mouseDownHandler)}inst.tableRowClipboard=null},getControlHTML:function(control_name){var controls=new Array(['table','table.gif','lang_table_desc','mceInsertTable',true],['delete_table','table_delete.gif','lang_table_del','mceTableDelete'],['delete_col','table_delete_col.gif','lang_table_delete_col_desc','mceTableDeleteCol'],['delete_row','table_delete_row.gif','lang_table_delete_row_desc','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','lang_table_col_after_desc','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','lang_table_col_before_desc','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','lang_table_row_after_desc','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','lang_table_row_before_desc','mceTableInsertRowBefore'],['row_props','table_row_props.gif','lang_table_row_desc','mceTableRowProps',true],['cell_props','table_cell_props.gif','lang_table_cell_desc','mceTableCellProps',true],['split_cells','table_split_cells.gif','lang_table_split_cells_desc','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','lang_table_merge_cells_desc','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name)return tinyMCE.getButtonHTML(control_name,but[2],'{$pluginurl}/images/'+but[1],but[3],(but.length>4?but[4]:false))}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_TablePlugin._doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1",tdElm;var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClass(editor_id+'_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_cell_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_split_cells','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonDisabled');if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClass(editor_id+'_cell_props','mceButtonSelected');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonNormal');colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClass(editor_id+'_split_cells','mceButtonNormal')}if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClass(editor_id+'_row_props','mceButtonSelected');if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClass(editor_id+'_table','mceButtonSelected');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonNormal')}},_mouseDownHandler:function(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance)},10)}},_doExecCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true}return false}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan}}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y}}}return null}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null}function getTableGrid(table){var grid=new Array(),rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td}}}return grid}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td}deleteMarked(tableElm)}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node}return null}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node}}return null}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td)}while((td=nexttd)!=null)}}while((tr=next)!=null)}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR")}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm}return newTR}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceInsertTable":if(user_interface){var template=new Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value})}return true;case"mceTableDelete":var table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint()}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}trElm.parentNode.insertBefore(newTR,trElm);grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex+1,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR)}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD)}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true}lastTDElm=tdElm}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex+1),tinyMCE.isGecko,true);break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm)}lastTDElm=tdElm}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan)}addRows(tdElm,trElm,rowspan)}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td}}if(rowCells.length>0)rows[rows.length]=rowCells}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td}}}if(rowCells.length>0)rows[rows.length]=rowCells}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y}x2=x;y2=y;grid[y][x]._selected=true}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true}lastRowSpan=sd['rowspan']}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true}lastColSpan=sd['colspan']}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.rowSpan--}}}}break}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint()}return true}return false}};tinyMCE.addPlugin("table",TinyMCE_TablePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TablePlugin",{init:function(b,c){var d=this;d.editor=b;d.url=c;a([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(e){b.addButton(e[0],{title:e[1],cmd:e[2],ui:e[3]})});if(b.getParam("inline_styles")){b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("table",g.node),function(i){var h;if(h=f.getAttrib(i,"width")){f.setStyle(i,"width",h);f.setAttrib(i,"width")}if(h=f.getAttrib(i,"height")){f.setStyle(i,"height",h);f.setAttrib(i,"height")}})})}b.onInit.add(function(){if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(h,f,j){var k,i=b.selection,g=i.getNode()||b.getBody();if(b.dom.getParent(j,"td")||b.dom.getParent(j,"th")){f.removeAll();if(g.nodeName=="A"&&!b.dom.getAttrib(g,"name")){f.add({title:"advanced.link_desc",icon:"link",cmd:b.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});f.addSeparator()}if(g.nodeName=="IMG"&&g.className.indexOf("mceItem")==-1){f.add({title:"advanced.image_desc",icon:"image",cmd:b.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator()}f.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",ui:true,value:{action:"insert"}});f.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable",ui:true});f.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete",ui:true});f.addSeparator();k=f.addMenu({title:"table.cell"});k.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps",ui:true});k.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells",ui:true});k.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells",ui:true});k=f.addMenu({title:"table.row"});k.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps",ui:true});k.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});k.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});k.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});k.addSeparator();k.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});k.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});k.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"});k.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"});k=f.addMenu({title:"table.col"});k.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});k.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});k.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{f.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",ui:true})}})}});b.onKeyDown.add(function(f,g){if(g.keyCode==9&&f.dom.getParent(f.selection.getNode(),"TABLE")){if(!tinymce.isGecko&&!tinymce.isOpera){tinyMCE.execInstanceCommand(f.editorId,"mceTableMoveToNextRow",true);return tinymce.dom.Event.cancel(g)}f.undoManager.add()}});if(!tinymce.isIE){if(b.getParam("table_selection",true)){b.onClick.add(function(f,g){g=g.target;if(g.nodeName==="TABLE"){f.selection.select(g)}})}}b.onNodeChange.add(function(f,e,h){var g=f.dom.getParent(h,"td,th,caption");e.setActive("table",h.nodeName==="TABLE"||!!g);if(g&&g.nodeName==="CAPTION"){g=null}e.setDisabled("delete_table",!g);e.setDisabled("delete_col",!g);e.setDisabled("delete_table",!g);e.setDisabled("delete_row",!g);e.setDisabled("col_after",!g);e.setDisabled("col_before",!g);e.setDisabled("row_after",!g);e.setDisabled("row_before",!g);e.setDisabled("row_props",!g);e.setDisabled("cell_props",!g);e.setDisabled("split_cells",!g||(parseInt(f.dom.getAttrib(g,"colspan","1"))<2&&parseInt(f.dom.getAttrib(g,"rowspan","1"))<2));e.setDisabled("merge_cells",!g)});if(!tinymce.isIE){b.onBeforeSetContent.add(function(e,f){if(f.initial){f.content=f.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g,tinymce.isOpera?"<$1$2>&nbsp;</$1>":'<$1$2><br mce_bogus="1" /></$1>')}})}},execCommand:function(f,e,g){var d=this.editor,c;switch(f){case"mceTableMoveToNextRow":case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":d.execCommand("mceBeginUndoLevel");this._doExecCommand(f,e,g);d.execCommand("mceEndUndoLevel");return true}return false},getInfo:function(){return{longname:"Tables",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_doExecCommand:function(r,Z,ae){var V=this.editor,au=V,g=this.url;var n=V.selection.getNode();var W=V.dom.getParent(n,"tr");var aq=V.dom.getParent(n,"td,th");var F=V.dom.getParent(n,"table");var k=V.contentWindow.document;var av=F?F.getAttribute("border"):"";if(W&&aq==null){aq=W.cells[0]}function ap(y,x){for(var ax=0;ax<y.length;ax++){if(y[ax].length>0&&ap(y[ax],x)){return true}if(y[ax]==x){return true}}return false}function aj(x,i){var y;ad=e(F);x=x||0;i=i||0;x=Math.max(o.cellindex+x,0);i=Math.max(o.rowindex+i,0);V.execCommand("mceRepaint");y=d(ad,i,x);if(y){V.selection.select(y.firstChild||y);V.selection.collapse(1)}}function ah(){var i=k.createElement("td");if(!tinymce.isIE){i.innerHTML='<br mce_bogus="1"/>'}}function j(y){var x=V.dom.getAttrib(y,"colspan");var i=V.dom.getAttrib(y,"rowspan");x=x==""?1:parseInt(x);i=i==""?1:parseInt(i);return{colspan:x,rowspan:i}}function al(ax,az){var i,ay;for(ay=0;ay<ax.length;ay++){for(i=0;i<ax[ay].length;i++){if(ax[ay][i]==az){return{cellindex:i,rowindex:ay}}}}return null}function d(x,y,i){if(x[y]&&x[y][i]){return x[y][i]}return null}function A(aC,ax){var az=[],y=0,aA,ay,ax,aB;for(aA=0;aA<aC.rows.length;aA++){for(ay=0;ay<aC.rows[aA].cells.length;ay++,y++){az[y]=aC.rows[aA].cells[ay]}}for(aA=0;aA<az.length;aA++){if(az[aA]==ax){if(aB=az[aA+1]){return aB}}}}function e(aE){var i=[],aF=aE.rows,aC,aB,ay,az,aD,ax,aA;for(aB=0;aB<aF.length;aB++){for(aC=0;aC<aF[aB].cells.length;aC++){ay=aF[aB].cells[aC];az=j(ay);for(aD=aC;i[aB]&&i[aB][aD];aD++){}for(aA=aB;aA<aB+az.rowspan;aA++){if(!i[aA]){i[aA]=[]}for(ax=aD;ax<aD+az.colspan;ax++){i[aA][ax]=ay}}}}return i}function m(aG,aD,ay,ax){var y=e(aG),aF=al(y,ay);var aH,aC;if(ax.cells.length!=aD.childNodes.length){aH=aD.childNodes;aC=null;for(var aE=0;ay=d(y,aF.rowindex,aE);aE++){var aA=true;var aB=j(ay);if(ap(aH,ay)){ax.childNodes[aE]._delete=true}else{if((aC==null||ay!=aC)&&aB.colspan>1){for(var az=aE;az<aE+ay.colSpan;az++){ax.childNodes[az]._delete=true}}}if((aC==null||ay!=aC)&&aB.rowspan>1){ay.rowSpan=aB.rowspan+1}aC=ay}B(F)}}function O(x,i){while((x=x.previousSibling)!=null){if(x.nodeName==i){return x}}return null}function af(ax,ay){var x=ay.split(",");while((ax=ax.nextSibling)!=null){for(var y=0;y<x.length;y++){if(ax.nodeName.toLowerCase()==x[y].toLowerCase()){return ax}}}return null}function B(ax){if(ax.rows==0){return}var y=ax.rows[0];do{var x=af(y,"TR");if(y._delete){y.parentNode.removeChild(y);continue}var ay=y.cells[0];if(ay.cells>1){do{var i=af(ay,"TD,TH");if(ay._delete){ay.parentNode.removeChild(ay)}}while((ay=i)!=null)}}while((y=x)!=null)}function p(ax,aA,az){ax.rowSpan=1;var x=af(aA,"TR");for(var ay=1;ay<az&&x;ay++){var y=k.createElement("td");if(!tinymce.isIE){y.innerHTML='<br mce_bogus="1"/>'}if(tinymce.isIE){x.insertBefore(y,x.cells(ax.cellIndex))}else{x.insertBefore(y,x.cells[ax.cellIndex])}x=af(x,"TR")}}function S(aF,aH,aB){var y=e(aH);var ax=aB.cloneNode(false);var aG=al(y,aB.cells[0]);var aC=null;var aA=V.dom.getAttrib(aH,"border");var az=null;for(var aE=0;az=d(y,aG.rowindex,aE);aE++){var aD=null;if(aC!=az){for(var ay=0;ay<aB.cells.length;ay++){if(az==aB.cells[ay]){aD=az.cloneNode(true);break}}}if(aD==null){aD=aF.createElement("td");if(!tinymce.isIE){aD.innerHTML='<br mce_bogus="1"/>'}}aD.colSpan=1;aD.rowSpan=1;ax.appendChild(aD);aC=az}return ax}switch(r){case"mceTableMoveToNextRow":var L=A(F,aq);if(!L){V.execCommand("mceTableInsertRowAfter",aq);L=A(F,aq)}V.selection.select(L);V.selection.collapse(true);return true;case"mceTableRowProps":if(W==null){return true}if(Z){V.windowManager.open({url:g+"/row.htm",width:400+parseInt(V.getLang("table.rowprops_delta_width",0)),height:295+parseInt(V.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:g})}return true;case"mceTableCellProps":if(aq==null){return true}if(Z){V.windowManager.open({url:g+"/cell.htm",width:400+parseInt(V.getLang("table.cellprops_delta_width",0)),height:295+parseInt(V.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:g})}return true;case"mceInsertTable":if(Z){V.windowManager.open({url:g+"/table.htm",width:400+parseInt(V.getLang("table.table_delta_width",0)),height:320+parseInt(V.getLang("table.table_delta_height",0)),inline:1},{plugin_url:g,action:ae?ae.action:0})}return true;case"mceTableDelete":var G=V.dom.getParent(V.selection.getNode(),"table");if(G){G.parentNode.removeChild(G);V.execCommand("mceRepaint")}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!F){return true}if(W&&F!=W.parentNode){F=W.parentNode}if(F&&W){switch(r){case"mceTableCutRow":if(!W||!aq){return true}V.tableRowClipboard=S(k,F,W);V.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!W||!aq){return true}V.tableRowClipboard=S(k,F,W);break;case"mceTablePasteRowBefore":if(!W||!aq){return true}var v=V.tableRowClipboard.cloneNode(true);var h=O(W,"TR");if(h!=null){m(F,h,h.cells[0],v)}W.parentNode.insertBefore(v,W);break;case"mceTablePasteRowAfter":if(!W||!aq){return true}var X=af(W,"TR");var v=V.tableRowClipboard.cloneNode(true);m(F,W,aq,v);if(X==null){W.parentNode.appendChild(v)}else{X.parentNode.insertBefore(v,X)}break;case"mceTableInsertRowBefore":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);var v=k.createElement("tr");var u=null;o.rowindex--;if(o.rowindex<0){o.rowindex=0}for(var ac=0;aq=d(ad,o.rowindex,ac);ac++){if(aq!=u){var E=j(aq);if(E.rowspan==1){var J=k.createElement("td");if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.colSpan=aq.colSpan;v.appendChild(J)}else{aq.rowSpan=E.rowspan+1}u=aq}}W.parentNode.insertBefore(v,W);aj(0,1);break;case"mceTableInsertRowAfter":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);var v=k.createElement("tr");var u=null;for(var ac=0;aq=d(ad,o.rowindex,ac);ac++){if(aq!=u){var E=j(aq);if(E.rowspan==1){var J=k.createElement("td");if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.colSpan=aq.colSpan;v.appendChild(J)}else{aq.rowSpan=E.rowspan+1}u=aq}}if(v.hasChildNodes()){var X=af(W,"TR");if(X){X.parentNode.insertBefore(v,X)}else{F.appendChild(v)}}aj(0,1);break;case"mceTableDeleteRow":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);if(ad.length==1&&F.nodeName=="TBODY"){V.dom.remove(V.dom.getParent(F,"table"));return true}var D=W.cells;var X=af(W,"TR");for(var ac=0;ac<D.length;ac++){if(D[ac].rowSpan>1){var J=D[ac].cloneNode(true);var E=j(D[ac]);J.rowSpan=E.rowspan-1;var ak=X.cells[ac];if(ak==null){X.appendChild(J)}else{X.insertBefore(J,ak)}}}var u=null;for(var ac=0;aq=d(ad,o.rowindex,ac);ac++){if(aq!=u){var E=j(aq);if(E.rowspan>1){aq.rowSpan=E.rowspan-1}else{W=aq.parentNode;if(W.parentNode){W._delete=true}}u=aq}}B(F);aj(0,-1);break;case"mceTableInsertColBefore":if(!W||!aq){return true}var ad=e(V.dom.getParent(F,"table"));var o=al(ad,aq);var u=null;for(var aa=0;aq=d(ad,aa,o.cellindex);aa++){if(aq!=u){var E=j(aq);if(E.colspan==1){var J=k.createElement(aq.nodeName);if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.rowSpan=aq.rowSpan;aq.parentNode.insertBefore(J,aq)}else{aq.colSpan++}u=aq}}aj();break;case"mceTableInsertColAfter":if(!W||!aq){return true}var ad=e(V.dom.getParent(F,"table"));var o=al(ad,aq);var u=null;for(var aa=0;aq=d(ad,aa,o.cellindex);aa++){if(aq!=u){var E=j(aq);if(E.colspan==1){var J=k.createElement(aq.nodeName);if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.rowSpan=aq.rowSpan;var ak=af(aq,"TD,TH");if(ak==null){aq.parentNode.appendChild(J)}else{ak.parentNode.insertBefore(J,ak)}}else{aq.colSpan++}u=aq}}aj(1);break;case"mceTableDeleteCol":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);var u=null;if((ad.length>1&&ad[0].length<=1)&&F.nodeName=="TBODY"){V.dom.remove(V.dom.getParent(F,"table"));return true}for(var aa=0;aq=d(ad,aa,o.cellindex);aa++){if(aq!=u){var E=j(aq);if(E.colspan>1){aq.colSpan=E.colspan-1}else{if(aq.parentNode){aq.parentNode.removeChild(aq)}}u=aq}}aj(-1);break;case"mceTableSplitCells":if(!W||!aq){return true}var l=j(aq);var C=l.colspan;var H=l.rowspan;if(C>1||H>1){aq.colSpan=1;for(var am=1;am<C;am++){var J=k.createElement("td");if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}W.insertBefore(J,af(aq,"TD,TH"));if(H>1){p(J,W,H)}}p(aq,W,H)}F=V.dom.getParent(V.selection.getNode(),"table");break;case"mceTableMergeCells":var ao=[];var R=V.selection.getSel();var ad=e(F);if(tinymce.isIE||R.rangeCount==1){if(Z){var t=j(aq);V.windowManager.open({url:g+"/merge_cells.htm",width:240+parseInt(V.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(V.getLang("table.merge_cells_delta_height",0)),inline:1},{action:"update",numcols:t.colspan,numrows:t.rowspan,plugin_url:g});return true}else{var U=parseInt(ae.numrows);var c=parseInt(ae.numcols);var o=al(ad,aq);if((""+U)=="NaN"){U=1}if((""+c)=="NaN"){c=1}var b=F.rows;for(var aa=o.rowindex;aa<ad.length;aa++){var ag=[];for(var ac=o.cellindex;ac<ad[aa].length;ac++){var f=d(ad,aa,ac);if(f&&!ap(ao,f)&&!ap(ag,f)){var N=al(ad,f);if(N.cellindex<o.cellindex+c&&N.rowindex<o.rowindex+U){ag[ag.length]=f}}}if(ag.length>0){ao[ao.length]=ag}var f=d(ad,o.rowindex,o.cellindex);a(au.dom.select("br",f),function(y,x){if(x>0&&au.dom.getAttrib("mce_bogus")){au.dom.remove(y)}})}}}else{var D=[];var R=V.selection.getSel();var Y=null;var an=null;var z=-1,aw=-1,w,at;if(R.rangeCount<2){return true}for(var am=0;am<R.rangeCount;am++){var ai=R.getRangeAt(am);var aq=ai.startContainer.childNodes[ai.startOffset];if(!aq){break}if(aq.nodeName=="TD"||aq.nodeName=="TH"){D[D.length]=aq}}var b=F.rows;for(var aa=0;aa<b.length;aa++){var ag=[];for(var ac=0;ac<b[aa].cells.length;ac++){var f=b[aa].cells[ac];for(var am=0;am<D.length;am++){if(f==D[am]){ag[ag.length]=f}}}if(ag.length>0){ao[ao.length]=ag}}var an=[];var Y=null;for(var aa=0;aa<ad.length;aa++){for(var ac=0;ac<ad[aa].length;ac++){ad[aa][ac]._selected=false;for(var am=0;am<D.length;am++){if(ad[aa][ac]==D[am]){if(z==-1){z=ac;aw=aa}w=ac;at=aa;ad[aa][ac]._selected=true}}}}for(var aa=aw;aa<=at;aa++){for(var ac=z;ac<=w;ac++){if(!ad[aa][ac]._selected){alert("Invalid selection for merge.");return true}}}}var s=1,q=1;var T=-1;for(var aa=0;aa<ao.length;aa++){var I=0;for(var ac=0;ac<ao[aa].length;ac++){var E=j(ao[aa][ac]);I+=E.colspan;if(T!=-1&&E.rowspan!=T){alert("Invalid selection for merge.");return true}T=E.rowspan}if(I>q){q=I}T=-1}var Q=-1;for(var ac=0;ac<ao[0].length;ac++){var M=0;for(var aa=0;aa<ao.length;aa++){var E=j(ao[aa][ac]);M+=E.rowspan;if(Q!=-1&&E.colspan!=Q){alert("Invalid selection for merge.");return true}Q=E.colspan}if(M>s){s=M}Q=-1}aq=ao[0][0];aq.rowSpan=s;aq.colSpan=q;for(var aa=0;aa<ao.length;aa++){for(var ac=0;ac<ao[aa].length;ac++){var P=ao[aa][ac].innerHTML;var K=P.replace(/[ \t\r\n]/g,"");if(K!="<br/>"&&K!="<br>"&&K!='<br mce_bogus="1"/>'&&(ac+aa>0)){aq.innerHTML+=P}if(ao[aa][ac]!=aq&&!ao[aa][ac]._deleted){var o=al(ad,ao[aa][ac]);var ar=ao[aa][ac].parentNode;ar.removeChild(ao[aa][ac]);ao[aa][ac]._deleted=true;if(!ar.hasChildNodes()){ar.parentNode.removeChild(ar);var ab=null;for(var ac=0;cellElm=d(ad,o.rowindex,ac);ac++){if(cellElm!=ab&&cellElm.rowSpan>1){cellElm.rowSpan--}ab=cellElm}if(aq.rowSpan>1){aq.rowSpan--}}}}}a(au.dom.select("br",aq),function(y,x){if(x>0&&au.dom.getAttrib(y,"mce_bogus")){au.dom.remove(y)}});break}F=V.dom.getParent(V.selection.getNode(),"table");V.addVisual(F);V.nodeChanged()}return true}return false}});tinymce.PluginManager.add("table",tinymce.plugins.TablePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,1073 +1,1136 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('table');
-
-var TinyMCE_TablePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Tables',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		if (tinyMCE.isGecko) {
-			var doc = inst.getDoc();
-			tinyMCE.addEvent(doc, "mouseup", TinyMCE_TablePlugin._mouseDownHandler);
-		}
-
-		inst.tableRowClipboard = null;
-	},
-
-	/**
-	 * Returns the HTML contents of the table control.
-	 */
-	getControlHTML : function(control_name) {
-		var controls = new Array(
-			['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true],
-			['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'],
-			['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'],
-			['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'],
-			['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'],
-			['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'],
-			['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'],
-			['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'],
-			['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true],
-			['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true],
-			['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true],
-			['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]);
-
-		// Render table control
-		for (var i=0; i<controls.length; i++) {
-			var but = controls[i];
-			var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\', ' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;';
-
-			if (but[0] == control_name)
-				return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false));
-		}
-
-		// Special tablecontrols
-		if (control_name == "tablecontrols") {
-			var html = "";
-
-			html += tinyMCE.getControlHTML("table");
-			html += tinyMCE.getControlHTML("separator");
-			html += tinyMCE.getControlHTML("row_props");
-			html += tinyMCE.getControlHTML("cell_props");
-			html += tinyMCE.getControlHTML("separator");
-			html += tinyMCE.getControlHTML("row_before");
-			html += tinyMCE.getControlHTML("row_after");
-			html += tinyMCE.getControlHTML("delete_row");
-			html += tinyMCE.getControlHTML("separator");
-			html += tinyMCE.getControlHTML("col_before");
-			html += tinyMCE.getControlHTML("col_after");
-			html += tinyMCE.getControlHTML("delete_col");
-			html += tinyMCE.getControlHTML("separator");
-			html += tinyMCE.getControlHTML("split_cells");
-			html += tinyMCE.getControlHTML("merge_cells");
-
-			return html;
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the table commands.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Is table command
-		switch (command) {
-			case "mceInsertTable":
-			case "mceTableRowProps":
-			case "mceTableCellProps":
-			case "mceTableSplitCells":
-			case "mceTableMergeCells":
-			case "mceTableInsertRowBefore":
-			case "mceTableInsertRowAfter":
-			case "mceTableDeleteRow":
-			case "mceTableInsertColBefore":
-			case "mceTableInsertColAfter":
-			case "mceTableDeleteCol":
-			case "mceTableCutRow":
-			case "mceTableCopyRow":
-			case "mceTablePasteRowBefore":
-			case "mceTablePasteRowAfter":
-			case "mceTableDelete":
-				var inst = tinyMCE.getInstanceById(editor_id);
-
-				inst.execCommand('mceBeginUndoLevel');
-				TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value);
-				inst.execCommand('mceEndUndoLevel');
-
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		var colspan = "1", rowspan = "1", tdElm;
-
-		var inst = tinyMCE.getInstanceById(editor_id);
-
-		// Reset table controls
-		tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled');
-
-		// Within a td element
-		if (tdElm = tinyMCE.getParentElement(node, "td,th")) {
-			tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected');
-			tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal');
-
-			colspan = tinyMCE.getAttrib(tdElm, "colspan");
-			rowspan = tinyMCE.getAttrib(tdElm, "rowspan");
-
-			colspan = colspan == "" ? "1" : colspan;
-			rowspan = rowspan == "" ? "1" : rowspan;
-
-			if (colspan != "1" || rowspan != "1")
-				tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal');
-		}
-
-		// Within a tr element
-		if (tinyMCE.getParentElement(node, "tr"))
-			tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected');
-
-		// Within table
-		if (tinyMCE.getParentElement(node, "table")) {
-			tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected');
-			tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal');
-		}
-	},
-
-	// Private plugin internal methods
-
-	_mouseDownHandler : function(e) {
-		var elm = tinyMCE.isMSIE ? event.srcElement : e.target;
-		var focusElm = tinyMCE.selectedInstance.getFocusElement();
-
-		// If press on special Mozilla create TD/TR thingie
-		if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) {
-			window.setTimeout(function() {
-				var tableElm = tinyMCE.getParentElement(focusElm, "table");
-				tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
-			}, 10);
-		}
-	},
-
-	/**
-	 * Executes the table commands.
-	 */
-	_doExecCommand : function(editor_id, element, command, user_interface, value) {
-		var inst = tinyMCE.getInstanceById(editor_id);
-		var focusElm = inst.getFocusElement();
-		var trElm = tinyMCE.getParentElement(focusElm, "tr");
-		var tdElm = tinyMCE.getParentElement(focusElm, "td,th");
-		var tableElm = tinyMCE.getParentElement(focusElm, "table");
-		var doc = inst.contentWindow.document;
-		var tableBorder = tableElm ? tableElm.getAttribute("border") : "";
-
-		// Get first TD if no TD found
-		if (trElm && tdElm == null)
-			tdElm = trElm.cells[0];
-
-		// ------- Inner functions ---------
-		function inArray(ar, v) {
-			for (var i=0; i<ar.length; i++) {
-				// Is array
-				if (ar[i].length > 0 && inArray(ar[i], v))
-					return true;
-
-				// Found value
-				if (ar[i] == v)
-					return true;
-			}
-
-			return false;
-		}
-
-		function makeTD() {
-			var newTD = doc.createElement("td");
-			newTD.innerHTML = "&nbsp;";
-		}
-
-		function getColRowSpan(td) {
-			var colspan = tinyMCE.getAttrib(td, "colspan");
-			var rowspan = tinyMCE.getAttrib(td, "rowspan");
-
-			colspan = colspan == "" ? 1 : parseInt(colspan);
-			rowspan = rowspan == "" ? 1 : parseInt(rowspan);
-
-			return {colspan : colspan, rowspan : rowspan};
-		}
-
-		function getCellPos(grid, td) {
-			var x, y;
-
-			for (y=0; y<grid.length; y++) {
-				for (x=0; x<grid[y].length; x++) {
-					if (grid[y][x] == td)
-						return {cellindex : x, rowindex : y};
-				}
-			}
-
-			return null;
-		}
-
-		function getCell(grid, row, col) {
-			if (grid[row] && grid[row][col])
-				return grid[row][col];
-
-			return null;
-		}
-
-		function getTableGrid(table) {
-			var grid = new Array(), rows = table.rows, x, y, td, sd, xstart, x2, y2;
-
-			for (y=0; y<rows.length; y++) {
-				for (x=0; x<rows[y].cells.length; x++) {
-					td = rows[y].cells[x];
-					sd = getColRowSpan(td);
-
-					// All ready filled
-					for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
-
-					// Fill box
-					for (y2=y; y2<y+sd['rowspan']; y2++) {
-						if (!grid[y2])
-							grid[y2] = new Array();
-
-						for (x2=xstart; x2<xstart+sd['colspan']; x2++)
-							grid[y2][x2] = td;
-					}
-				}
-			}
-
-			return grid;
-		}
-
-		function trimRow(table, tr, td, new_tr) {
-			var grid = getTableGrid(table), cpos = getCellPos(grid, td);
-			var cells, lastElm;
-
-			// Time to crop away some
-			if (new_tr.cells.length != tr.childNodes.length) {
-				cells = tr.childNodes;
-				lastElm = null;
-
-				for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
-					var remove = true;
-					var sd = getColRowSpan(td);
-
-					// Remove due to rowspan
-					if (inArray(cells, td)) {
-						new_tr.childNodes[x]._delete = true;
-					} else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan
-						for (var i=x; i<x+td.colSpan; i++)
-							new_tr.childNodes[i]._delete = true;
-					}
-
-					if ((lastElm == null || td != lastElm) && sd.rowspan > 1)
-						td.rowSpan = sd.rowspan + 1;
-
-					lastElm = td;
-				}
-
-				deleteMarked(tableElm);
-			}
-		}
-
-		function prevElm(node, name) {
-			while ((node = node.previousSibling) != null) {
-				if (node.nodeName == name)
-					return node;
-			}
-
-			return null;
-		}
-
-		function nextElm(node, names) {
-			var namesAr = names.split(',');
-
-			while ((node = node.nextSibling) != null) {
-				for (var i=0; i<namesAr.length; i++) {
-					if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )
-						return node;
-				}
-			}
-
-			return null;
-		}
-
-		function deleteMarked(tbl) {
-			if (tbl.rows == 0)
-				return;
-
-			var tr = tbl.rows[0];
-			do {
-				var next = nextElm(tr, "TR");
-
-				// Delete row
-				if (tr._delete) {
-					tr.parentNode.removeChild(tr);
-					continue;
-				}
-
-				// Delete cells
-				var td = tr.cells[0];
-				if (td.cells > 1) {
-					do {
-						var nexttd = nextElm(td, "TD,TH");
-
-						if (td._delete)
-							td.parentNode.removeChild(td);
-					} while ((td = nexttd) != null);
-				}
-			} while ((tr = next) != null);
-		}
-
-		function addRows(td_elm, tr_elm, rowspan) {
-			// Add rows
-			td_elm.rowSpan = 1;
-			var trNext = nextElm(tr_elm, "TR");
-			for (var i=1; i<rowspan && trNext; i++) {
-				var newTD = doc.createElement("td");
-				newTD.innerHTML = "&nbsp;";
-
-				if (tinyMCE.isMSIE)
-					trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));
-				else
-					trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);
-
-				trNext = nextElm(trNext, "TR");
-			}
-		}
-
-		function copyRow(doc, table, tr) {
-			var grid = getTableGrid(table);
-			var newTR = tr.cloneNode(false);
-			var cpos = getCellPos(grid, tr.cells[0]);
-			var lastCell = null;
-			var tableBorder = tinyMCE.getAttrib(table, "border");
-			var tdElm = null;
-
-			for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-				var newTD = null;
-
-				if (lastCell != tdElm) {
-					for (var i=0; i<tr.cells.length; i++) {
-						if (tdElm == tr.cells[i]) {
-							newTD = tdElm.cloneNode(true);
-							break;
-						}
-					}
-				}
-
-				if (newTD == null) {
-					newTD = doc.createElement("td");
-					newTD.innerHTML = "&nbsp;";
-				}
-
-				// Reset col/row span
-				newTD.colSpan = 1;
-				newTD.rowSpan = 1;
-
-				newTR.appendChild(newTD);
-
-				lastCell = tdElm;
-			}
-
-			return newTR;
-		}
-
-		// ---- Commands -----
-
-		// Handle commands
-		switch (command) {
-			case "mceTableRowProps":
-				if (trElm == null)
-					return true;
-
-				if (user_interface) {
-					// Setup template
-					var template = new Array();
-
-					template['file'] = '../../plugins/table/row.htm';
-					template['width'] = 380;
-					template['height'] = 295;
-
-					// Language specific width and height addons
-					template['width'] += tinyMCE.getLang('lang_table_rowprops_delta_width', 0);
-					template['height'] += tinyMCE.getLang('lang_table_rowprops_delta_height', 0);
-
-					// Open window
-					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});
-				}
-
-				return true;
-
-			case "mceTableCellProps":
-				if (tdElm == null)
-					return true;
-
-				if (user_interface) {
-					// Setup template
-					var template = new Array();
-
-					template['file'] = '../../plugins/table/cell.htm';
-					template['width'] = 380;
-					template['height'] = 295;
-
-					// Language specific width and height addons
-					template['width'] += tinyMCE.getLang('lang_table_cellprops_delta_width', 0);
-					template['height'] += tinyMCE.getLang('lang_table_cellprops_delta_height', 0);
-
-					// Open window
-					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});
-				}
-
-				return true;
-
-			case "mceInsertTable":
-				if (user_interface) {
-					// Setup template
-					var template = new Array();
-
-					template['file'] = '../../plugins/table/table.htm';
-					template['width'] = 380;
-					template['height'] = 295;
-
-					// Language specific width and height addons
-					template['width'] += tinyMCE.getLang('lang_table_table_delta_width', 0);
-					template['height'] += tinyMCE.getLang('lang_table_table_delta_height', 0);
-
-					// Open window
-					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : value});
-				}
-
-				return true;
-
-			case "mceTableDelete":
-				var table = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-				if (table) {
-					table.parentNode.removeChild(table);
-					inst.repaint();
-				}
-				return true;
-
-			case "mceTableSplitCells":
-			case "mceTableMergeCells":
-			case "mceTableInsertRowBefore":
-			case "mceTableInsertRowAfter":
-			case "mceTableDeleteRow":
-			case "mceTableInsertColBefore":
-			case "mceTableInsertColAfter":
-			case "mceTableDeleteCol":
-			case "mceTableCutRow":
-			case "mceTableCopyRow":
-			case "mceTablePasteRowBefore":
-			case "mceTablePasteRowAfter":
-				// No table just return (invalid command)
-				if (!tableElm)
-					return true;
-
-				// Table has a tbody use that reference
-				// Changed logic by ApTest 2005.07.12 (www.aptest.com)
-				// Now lookk at the focused element and take its parentNode.  That will be a tbody or a table.
-				if (trElm && tableElm != trElm.parentNode)
-					tableElm = trElm.parentNode;
-
-				if (tableElm && trElm) {
-					switch (command) {
-						case "mceTableCutRow":
-							if (!trElm || !tdElm)
-								return true;
-
-							inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
-							inst.execCommand("mceTableDeleteRow");
-							break;
-
-						case "mceTableCopyRow":
-							if (!trElm || !tdElm)
-								return true;
-
-							inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
-							break;
-
-						case "mceTablePasteRowBefore":
-							if (!trElm || !tdElm)
-								return true;
-
-							var newTR = inst.tableRowClipboard.cloneNode(true);
-
-							var prevTR = prevElm(trElm, "TR");
-							if (prevTR != null)
-								trimRow(tableElm, prevTR, prevTR.cells[0], newTR);
-
-							trElm.parentNode.insertBefore(newTR, trElm);
-							break;
-
-						case "mceTablePasteRowAfter":
-							if (!trElm || !tdElm)
-								return true;
-
-							var nextTR = nextElm(trElm, "TR");
-							var newTR = inst.tableRowClipboard.cloneNode(true);
-
-							trimRow(tableElm, trElm, tdElm, newTR);
-
-							if (nextTR == null)
-								trElm.parentNode.appendChild(newTR);
-							else
-								nextTR.parentNode.insertBefore(newTR, nextTR);
-
-							break;
-
-						case "mceTableInsertRowBefore":
-							if (!trElm || !tdElm)
-								return true;
-
-							var grid = getTableGrid(tableElm);
-							var cpos = getCellPos(grid, tdElm);
-							var newTR = doc.createElement("tr");
-							var lastTDElm = null;
-
-							cpos.rowindex--;
-							if (cpos.rowindex < 0)
-								cpos.rowindex = 0;
-
-							// Create cells
-							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-								if (tdElm != lastTDElm) {
-									var sd = getColRowSpan(tdElm);
-
-									if (sd['rowspan'] == 1) {
-										var newTD = doc.createElement("td");
-
-										newTD.innerHTML = "&nbsp;";
-										newTD.colSpan = tdElm.colSpan;
-
-										newTR.appendChild(newTD);
-									} else
-										tdElm.rowSpan = sd['rowspan'] + 1;
-
-									lastTDElm = tdElm;
-								}
-							}
-
-							trElm.parentNode.insertBefore(newTR, trElm);
-
-							grid = getTableGrid(tableElm);
-							inst.selection.selectNode(getCell(grid, cpos.rowindex + 1, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
-						break;
-
-						case "mceTableInsertRowAfter":
-							if (!trElm || !tdElm)
-								return true;
-
-							var grid = getTableGrid(tableElm);
-							var cpos = getCellPos(grid, tdElm);
-							var newTR = doc.createElement("tr");
-							var lastTDElm = null;
-
-							// Create cells
-							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-								if (tdElm != lastTDElm) {
-									var sd = getColRowSpan(tdElm);
-
-									if (sd['rowspan'] == 1) {
-										var newTD = doc.createElement("td");
-
-										newTD.innerHTML = "&nbsp;";
-										newTD.colSpan = tdElm.colSpan;
-
-										newTR.appendChild(newTD);
-									} else
-										tdElm.rowSpan = sd['rowspan'] + 1;
-
-									lastTDElm = tdElm;
-								}
-							}
-
-							if (newTR.hasChildNodes()) {
-								var nextTR = nextElm(trElm, "TR");
-								if (nextTR)
-									nextTR.parentNode.insertBefore(newTR, nextTR);
-								else
-									tableElm.appendChild(newTR);
-							}
-
-							grid = getTableGrid(tableElm);
-							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
-						break;
-
-						case "mceTableDeleteRow":
-							if (!trElm || !tdElm)
-								return true;
-
-							var grid = getTableGrid(tableElm);
-							var cpos = getCellPos(grid, tdElm);
-
-							// Only one row, remove whole table
-							if (grid.length == 1) {
-								tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
-								tableElm.parentNode.removeChild(tableElm);
-								return true;
-							}
-
-							// Move down row spanned cells
-							var cells = trElm.cells;
-							var nextTR = nextElm(trElm, "TR");
-							for (var x=0; x<cells.length; x++) {
-								if (cells[x].rowSpan > 1) {
-									var newTD = cells[x].cloneNode(true);
-									var sd = getColRowSpan(cells[x]);
-
-									newTD.rowSpan = sd.rowspan - 1;
-
-									var nextTD = nextTR.cells[x];
-
-									if (nextTD == null)
-										nextTR.appendChild(newTD);
-									else
-										nextTR.insertBefore(newTD, nextTD);
-								}
-							}
-
-							// Delete cells
-							var lastTDElm = null;
-							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-								if (tdElm != lastTDElm) {
-									var sd = getColRowSpan(tdElm);
-
-									if (sd.rowspan > 1) {
-										tdElm.rowSpan = sd.rowspan - 1;
-									} else {
-										trElm = tdElm.parentNode;
-
-										if (trElm.parentNode)
-											trElm._delete = true;
-									}
-
-									lastTDElm = tdElm;
-								}
-							}
-
-							deleteMarked(tableElm);
-
-							cpos.rowindex--;
-							if (cpos.rowindex < 0)
-								cpos.rowindex = 0;
-
-							// Recalculate grid and select
-							grid = getTableGrid(tableElm);
-							inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
-						break;
-
-						case "mceTableInsertColBefore":
-							if (!trElm || !tdElm)
-								return true;
-
-							var grid = getTableGrid(tableElm);
-							var cpos = getCellPos(grid, tdElm);
-							var lastTDElm = null;
-
-							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
-								if (tdElm != lastTDElm) {
-									var sd = getColRowSpan(tdElm);
-
-									if (sd['colspan'] == 1) {
-										var newTD = doc.createElement(tdElm.nodeName);
-
-										newTD.innerHTML = "&nbsp;";
-										newTD.rowSpan = tdElm.rowSpan;
-
-										tdElm.parentNode.insertBefore(newTD, tdElm);
-									} else
-										tdElm.colSpan++;
-
-									lastTDElm = tdElm;
-								}
-							}
-
-							grid = getTableGrid(tableElm);
-							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko
-						break;
-
-						case "mceTableInsertColAfter":
-							if (!trElm || !tdElm)
-								return true;
-
-							var grid = getTableGrid(tableElm);
-							var cpos = getCellPos(grid, tdElm);
-							var lastTDElm = null;
-
-							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
-								if (tdElm != lastTDElm) {
-									var sd = getColRowSpan(tdElm);
-
-									if (sd['colspan'] == 1) {
-										var newTD = doc.createElement(tdElm.nodeName);
-
-										newTD.innerHTML = "&nbsp;";
-										newTD.rowSpan = tdElm.rowSpan;
-
-										var nextTD = nextElm(tdElm, "TD,TH");
-										if (nextTD == null)
-											tdElm.parentNode.appendChild(newTD);
-										else
-											nextTD.parentNode.insertBefore(newTD, nextTD);
-									} else
-										tdElm.colSpan++;
-
-									lastTDElm = tdElm;
-								}
-							}
-
-							grid = getTableGrid(tableElm);
-							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
-						break;
-
-						case "mceTableDeleteCol":
-							if (!trElm || !tdElm)
-								return true;
-
-							var grid = getTableGrid(tableElm);
-							var cpos = getCellPos(grid, tdElm);
-							var lastTDElm = null;
-
-							// Only one col, remove whole table
-							if (grid.length > 1 && grid[0].length <= 1) {
-								tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
-								tableElm.parentNode.removeChild(tableElm);
-								return true;
-							}
-
-							// Delete cells
-							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
-								if (tdElm != lastTDElm) {
-									var sd = getColRowSpan(tdElm);
-
-									if (sd['colspan'] > 1)
-										tdElm.colSpan = sd['colspan'] - 1;
-									else {
-										if (tdElm.parentNode)
-											tdElm.parentNode.removeChild(tdElm);
-									}
-
-									lastTDElm = tdElm;
-								}
-							}
-
-							cpos.cellindex--;
-							if (cpos.cellindex < 0)
-								cpos.cellindex = 0;
-
-							// Recalculate grid and select
-							grid = getTableGrid(tableElm);
-							inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
-						break;
-
-					case "mceTableSplitCells":
-						if (!trElm || !tdElm)
-							return true;
-
-						var spandata = getColRowSpan(tdElm);
-
-						var colspan = spandata["colspan"];
-						var rowspan = spandata["rowspan"];
-
-						// Needs splitting
-						if (colspan > 1 || rowspan > 1) {
-							// Generate cols
-							tdElm.colSpan = 1;
-							for (var i=1; i<colspan; i++) {
-								var newTD = doc.createElement("td");
-
-								newTD.innerHTML = "&nbsp;";
-
-								trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));
-
-								if (rowspan > 1)
-									addRows(newTD, trElm, rowspan);
-							}
-
-							addRows(tdElm, trElm, rowspan);
-						}
-
-						// Apply visual aids
-						tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-						break;
-
-					case "mceTableMergeCells":
-						var rows = new Array();
-						var sel = inst.getSel();
-						var grid = getTableGrid(tableElm);
-
-						if (tinyMCE.isMSIE || sel.rangeCount == 1) {
-							if (user_interface) {
-								// Setup template
-								var template = new Array();
-								var sp = getColRowSpan(tdElm);
-
-								template['file'] = '../../plugins/table/merge_cells.htm';
-								template['width'] = 250;
-								template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0);
-
-								// Language specific width and height addons
-								template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0);
-								template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0);
-
-								// Open window
-								tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan});
-
-								return true;
-							} else {
-								var numRows = parseInt(value['numrows']);
-								var numCols = parseInt(value['numcols']);
-								var cpos = getCellPos(grid, tdElm);
-
-								if (("" + numRows) == "NaN")
-									numRows = 1;
-
-								if (("" + numCols) == "NaN")
-									numCols = 1;
-
-								// Get rows and cells
-								var tRows = tableElm.rows;
-								for (var y=cpos.rowindex; y<grid.length; y++) {
-									var rowCells = new Array();
-
-									for (var x=cpos.cellindex; x<grid[y].length; x++) {
-										var td = getCell(grid, y, x);
-
-										if (td && !inArray(rows, td) && !inArray(rowCells, td)) {
-											var cp = getCellPos(grid, td);
-
-											// Within range
-											if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)
-												rowCells[rowCells.length] = td;
-										}
-									}
-
-									if (rowCells.length > 0)
-										rows[rows.length] = rowCells;
-								}
-
-								//return true;
-							}
-						} else {
-							var cells = new Array();
-							var sel = inst.getSel();
-							var lastTR = null;
-							var curRow = null;
-							var x1 = -1, y1 = -1, x2, y2;
-
-							// Only one cell selected, whats the point?
-							if (sel.rangeCount < 2)
-								return true;
-
-							// Get all selected cells
-							for (var i=0; i<sel.rangeCount; i++) {
-								var rng = sel.getRangeAt(i);
-								var tdElm = rng.startContainer.childNodes[rng.startOffset];
-
-								if (!tdElm)
-									break;
-
-								if (tdElm.nodeName == "TD")
-									cells[cells.length] = tdElm;
-							}
-
-							// Get rows and cells
-							var tRows = tableElm.rows;
-							for (var y=0; y<tRows.length; y++) {
-								var rowCells = new Array();
-
-								for (var x=0; x<tRows[y].cells.length; x++) {
-									var td = tRows[y].cells[x];
-
-									for (var i=0; i<cells.length; i++) {
-										if (td == cells[i]) {
-											rowCells[rowCells.length] = td;
-										}
-									}
-								}
-
-								if (rowCells.length > 0)
-									rows[rows.length] = rowCells;
-							}
-
-							// Find selected cells in grid and box
-							var curRow = new Array();
-							var lastTR = null;
-							for (var y=0; y<grid.length; y++) {
-								for (var x=0; x<grid[y].length; x++) {
-									grid[y][x]._selected = false;
-
-									for (var i=0; i<cells.length; i++) {
-										if (grid[y][x] == cells[i]) {
-											// Get start pos
-											if (x1 == -1) {
-												x1 = x;
-												y1 = y;
-											}
-
-											// Get end pos
-											x2 = x;
-											y2 = y;
-
-											grid[y][x]._selected = true;
-										}
-									}
-								}
-							}
-
-							// Is there gaps, if so deny
-							for (var y=y1; y<=y2; y++) {
-								for (var x=x1; x<=x2; x++) {
-									if (!grid[y][x]._selected) {
-										alert("Invalid selection for merge.");
-										return true;
-									}
-								}
-							}
-						}
-
-						// Validate selection and get total rowspan and colspan
-						var rowSpan = 1, colSpan = 1;
-
-						// Validate horizontal and get total colspan
-						var lastRowSpan = -1;
-						for (var y=0; y<rows.length; y++) {
-							var rowColSpan = 0;
-
-							for (var x=0; x<rows[y].length; x++) {
-								var sd = getColRowSpan(rows[y][x]);
-
-								rowColSpan += sd['colspan'];
-
-								if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {
-									alert("Invalid selection for merge.");
-									return true;
-								}
-
-								lastRowSpan = sd['rowspan'];
-							}
-
-							if (rowColSpan > colSpan)
-								colSpan = rowColSpan;
-
-							lastRowSpan = -1;
-						}
-
-						// Validate vertical and get total rowspan
-						var lastColSpan = -1;
-						for (var x=0; x<rows[0].length; x++) {
-							var colRowSpan = 0;
-
-							for (var y=0; y<rows.length; y++) {
-								var sd = getColRowSpan(rows[y][x]);
-
-								colRowSpan += sd['rowspan'];
-
-								if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {
-									alert("Invalid selection for merge.");
-									return true;
-								}
-
-								lastColSpan = sd['colspan'];
-							}
-
-							if (colRowSpan > rowSpan)
-								rowSpan = colRowSpan;
-
-							lastColSpan = -1;
-						}
-
-						// Setup td
-						tdElm = rows[0][0];
-						tdElm.rowSpan = rowSpan;
-						tdElm.colSpan = colSpan;
-
-						// Merge cells
-						for (var y=0; y<rows.length; y++) {
-							for (var x=0; x<rows[y].length; x++) {
-								var html = rows[y][x].innerHTML;
-								var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "");
-
-								if (chk != "<br/>" && chk != "<br>" && chk != "&nbsp;" && (x+y > 0))
-									tdElm.innerHTML += html;
-
-								// Not current cell
-								if (rows[y][x] != tdElm && !rows[y][x]._deleted) {
-									var cpos = getCellPos(grid, rows[y][x]);
-									var tr = rows[y][x].parentNode;
-
-									tr.removeChild(rows[y][x]);
-									rows[y][x]._deleted = true;
-
-									// Empty TR, remove it
-									if (!tr.hasChildNodes()) {
-										tr.parentNode.removeChild(tr);
-
-										var lastCell = null;
-										for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {
-											if (cellElm != lastCell && cellElm.rowSpan > 1)
-												cellElm.rowSpan--;
-
-											lastCell = cellElm;
-										}
-
-										if (tdElm.rowSpan > 1)
-											tdElm.rowSpan--;
-									}
-								}
-							}
-						}
-
-						break;
-					}
-
-					tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-					tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
-					tinyMCE.triggerNodeChange();
-					inst.repaint();
-				}
-
-			return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	}
-};
-
-tinyMCE.addPlugin("table", TinyMCE_TablePlugin);
+/**
+ * $Id: editor_plugin_src.js 953 2008-11-04 10:16:50Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var each = tinymce.each;
+
+	tinymce.create('tinymce.plugins.TablePlugin', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+			t.url = url;
+
+			// Register buttons
+			each([
+				['table', 'table.desc', 'mceInsertTable', true],
+				['delete_table', 'table.del', 'mceTableDelete'],
+				['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],
+				['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],
+				['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],
+				['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],
+				['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],
+				['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],
+				['row_props', 'table.row_desc', 'mceTableRowProps', true],
+				['cell_props', 'table.cell_desc', 'mceTableCellProps', true],
+				['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],
+				['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]
+			], function(c) {
+				ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});
+			});
+
+			if (ed.getParam('inline_styles')) {
+				// Force move of attribs to styles in strict mode
+				ed.onPreProcess.add(function(ed, o) {
+					var dom = ed.dom;
+
+					each(dom.select('table', o.node), function(n) {
+						var v;
+
+						if (v = dom.getAttrib(n, 'width')) {
+							dom.setStyle(n, 'width', v);
+							dom.setAttrib(n, 'width');
+						}
+
+						if (v = dom.getAttrib(n, 'height')) {
+							dom.setStyle(n, 'height', v);
+							dom.setAttrib(n, 'height');
+						}
+					});
+				});
+			}
+
+			ed.onInit.add(function() {
+				if (ed && ed.plugins.contextmenu) {
+					ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
+						var sm, se = ed.selection, el = se.getNode() || ed.getBody();
+
+						if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th')) {
+							m.removeAll();
+
+							if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {
+								m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
+								m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
+								m.addSeparator();
+							}
+
+							if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {
+								m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
+								m.addSeparator();
+							}
+
+							m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true, value : {action : 'insert'}});
+							m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable', ui : true});
+							m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete', ui : true});
+							m.addSeparator();
+
+							// Cell menu
+							sm = m.addMenu({title : 'table.cell'});
+							sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps', ui : true});
+							sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells', ui : true});
+							sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells', ui : true});
+
+							// Row menu
+							sm = m.addMenu({title : 'table.row'});
+							sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps', ui : true});
+							sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});
+							sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});
+							sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});
+							sm.addSeparator();
+							sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});
+							sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});
+							sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'});
+							sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'});
+
+							// Column menu
+							sm = m.addMenu({title : 'table.col'});
+							sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});
+							sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});
+							sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});
+						} else
+							m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true});
+					});
+				}
+			});
+
+			// Add undo level when new rows are created using the tab key
+			ed.onKeyDown.add(function(ed, e) {
+				if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) {
+					if (!tinymce.isGecko && !tinymce.isOpera) {
+						tinyMCE.execInstanceCommand(ed.editorId, "mceTableMoveToNextRow", true);
+						return tinymce.dom.Event.cancel(e);
+					}
+
+					ed.undoManager.add();
+				}
+			});
+
+			// Select whole table is a table border is clicked
+			if (!tinymce.isIE) {
+				if (ed.getParam('table_selection', true)) {
+					ed.onClick.add(function(ed, e) {
+						e = e.target;
+
+						if (e.nodeName === 'TABLE')
+							ed.selection.select(e);
+					});
+				}
+			}
+
+			ed.onNodeChange.add(function(ed, cm, n) {
+				var p = ed.dom.getParent(n, 'td,th,caption');
+
+				cm.setActive('table', n.nodeName === 'TABLE' || !!p);
+				if (p && p.nodeName === 'CAPTION')
+					p = null;
+
+				cm.setDisabled('delete_table', !p);
+				cm.setDisabled('delete_col', !p);
+				cm.setDisabled('delete_table', !p);
+				cm.setDisabled('delete_row', !p);
+				cm.setDisabled('col_after', !p);
+				cm.setDisabled('col_before', !p);
+				cm.setDisabled('row_after', !p);
+				cm.setDisabled('row_before', !p);
+				cm.setDisabled('row_props', !p);
+				cm.setDisabled('cell_props', !p);
+				cm.setDisabled('split_cells', !p || (parseInt(ed.dom.getAttrib(p, 'colspan', '1')) < 2 && parseInt(ed.dom.getAttrib(p, 'rowspan', '1')) < 2));
+				cm.setDisabled('merge_cells', !p);
+			});
+
+			// Padd empty table cells
+			if (!tinymce.isIE) {
+				ed.onBeforeSetContent.add(function(ed, o) {
+					if (o.initial)
+						o.content = o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g, tinymce.isOpera ? '<$1$2>&nbsp;</$1>' : '<$1$2><br mce_bogus="1" /></$1>');
+				});
+			}
+		},
+
+		execCommand : function(cmd, ui, val) {
+			var ed = this.editor, b;
+
+			// Is table command
+			switch (cmd) {
+				case "mceTableMoveToNextRow":
+				case "mceInsertTable":
+				case "mceTableRowProps":
+				case "mceTableCellProps":
+				case "mceTableSplitCells":
+				case "mceTableMergeCells":
+				case "mceTableInsertRowBefore":
+				case "mceTableInsertRowAfter":
+				case "mceTableDeleteRow":
+				case "mceTableInsertColBefore":
+				case "mceTableInsertColAfter":
+				case "mceTableDeleteCol":
+				case "mceTableCutRow":
+				case "mceTableCopyRow":
+				case "mceTablePasteRowBefore":
+				case "mceTablePasteRowAfter":
+				case "mceTableDelete":
+					ed.execCommand('mceBeginUndoLevel');
+					this._doExecCommand(cmd, ui, val);
+					ed.execCommand('mceEndUndoLevel');
+
+					return true;
+			}
+
+			// Pass to next handler in chain
+			return false;
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Tables',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private plugin internal methods
+
+		/**
+		 * Executes the table commands.
+		 */
+		_doExecCommand : function(command, user_interface, value) {
+			var inst = this.editor, ed = inst, url = this.url;
+			var focusElm = inst.selection.getNode();
+			var trElm = inst.dom.getParent(focusElm, "tr");
+			var tdElm = inst.dom.getParent(focusElm, "td,th");
+			var tableElm = inst.dom.getParent(focusElm, "table");
+			var doc = inst.contentWindow.document;
+			var tableBorder = tableElm ? tableElm.getAttribute("border") : "";
+
+			// Get first TD if no TD found
+			if (trElm && tdElm == null)
+				tdElm = trElm.cells[0];
+
+			function inArray(ar, v) {
+				for (var i=0; i<ar.length; i++) {
+					// Is array
+					if (ar[i].length > 0 && inArray(ar[i], v))
+						return true;
+
+					// Found value
+					if (ar[i] == v)
+						return true;
+				}
+
+				return false;
+			}
+
+			function select(dx, dy) {
+				var td;
+
+				grid = getTableGrid(tableElm);
+				dx = dx || 0;
+				dy = dy || 0;
+				dx = Math.max(cpos.cellindex + dx, 0);
+				dy = Math.max(cpos.rowindex + dy, 0);
+
+				// Recalculate grid and select
+				inst.execCommand('mceRepaint');
+				td = getCell(grid, dy, dx);
+
+				if (td) {
+					inst.selection.select(td.firstChild || td);
+					inst.selection.collapse(1);
+				}
+			};
+
+			function makeTD() {
+				var newTD = doc.createElement("td");
+
+				if (!tinymce.isIE)
+					newTD.innerHTML = '<br mce_bogus="1"/>';
+			}
+
+			function getColRowSpan(td) {
+				var colspan = inst.dom.getAttrib(td, "colspan");
+				var rowspan = inst.dom.getAttrib(td, "rowspan");
+
+				colspan = colspan == "" ? 1 : parseInt(colspan);
+				rowspan = rowspan == "" ? 1 : parseInt(rowspan);
+
+				return {colspan : colspan, rowspan : rowspan};
+			}
+
+			function getCellPos(grid, td) {
+				var x, y;
+
+				for (y=0; y<grid.length; y++) {
+					for (x=0; x<grid[y].length; x++) {
+						if (grid[y][x] == td)
+							return {cellindex : x, rowindex : y};
+					}
+				}
+
+				return null;
+			}
+
+			function getCell(grid, row, col) {
+				if (grid[row] && grid[row][col])
+					return grid[row][col];
+
+				return null;
+			}
+
+			function getNextCell(table, cell) {
+				var cells = [], x = 0, i, j, cell, nextCell;
+
+				for (i = 0; i < table.rows.length; i++)
+					for (j = 0; j < table.rows[i].cells.length; j++, x++)
+						cells[x] = table.rows[i].cells[j];
+
+				for (i = 0; i < cells.length; i++)
+					if (cells[i] == cell)
+						if (nextCell = cells[i+1])
+							return nextCell;
+			}
+
+			function getTableGrid(table) {
+				var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2;
+
+				for (y=0; y<rows.length; y++) {
+					for (x=0; x<rows[y].cells.length; x++) {
+						td = rows[y].cells[x];
+						sd = getColRowSpan(td);
+
+						// All ready filled
+						for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
+
+						// Fill box
+						for (y2=y; y2<y+sd['rowspan']; y2++) {
+							if (!grid[y2])
+								grid[y2] = [];
+
+							for (x2=xstart; x2<xstart+sd['colspan']; x2++)
+								grid[y2][x2] = td;
+						}
+					}
+				}
+
+				return grid;
+			}
+
+			function trimRow(table, tr, td, new_tr) {
+				var grid = getTableGrid(table), cpos = getCellPos(grid, td);
+				var cells, lastElm;
+
+				// Time to crop away some
+				if (new_tr.cells.length != tr.childNodes.length) {
+					cells = tr.childNodes;
+					lastElm = null;
+
+					for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
+						var remove = true;
+						var sd = getColRowSpan(td);
+
+						// Remove due to rowspan
+						if (inArray(cells, td)) {
+							new_tr.childNodes[x]._delete = true;
+						} else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan
+							for (var i=x; i<x+td.colSpan; i++)
+								new_tr.childNodes[i]._delete = true;
+						}
+
+						if ((lastElm == null || td != lastElm) && sd.rowspan > 1)
+							td.rowSpan = sd.rowspan + 1;
+
+						lastElm = td;
+					}
+
+					deleteMarked(tableElm);
+				}
+			}
+
+			function prevElm(node, name) {
+				while ((node = node.previousSibling) != null) {
+					if (node.nodeName == name)
+						return node;
+				}
+
+				return null;
+			}
+
+			function nextElm(node, names) {
+				var namesAr = names.split(',');
+
+				while ((node = node.nextSibling) != null) {
+					for (var i=0; i<namesAr.length; i++) {
+						if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )
+							return node;
+					}
+				}
+
+				return null;
+			}
+
+			function deleteMarked(tbl) {
+				if (tbl.rows == 0)
+					return;
+
+				var tr = tbl.rows[0];
+				do {
+					var next = nextElm(tr, "TR");
+
+					// Delete row
+					if (tr._delete) {
+						tr.parentNode.removeChild(tr);
+						continue;
+					}
+
+					// Delete cells
+					var td = tr.cells[0];
+					if (td.cells > 1) {
+						do {
+							var nexttd = nextElm(td, "TD,TH");
+
+							if (td._delete)
+								td.parentNode.removeChild(td);
+						} while ((td = nexttd) != null);
+					}
+				} while ((tr = next) != null);
+			}
+
+			function addRows(td_elm, tr_elm, rowspan) {
+				// Add rows
+				td_elm.rowSpan = 1;
+				var trNext = nextElm(tr_elm, "TR");
+				for (var i=1; i<rowspan && trNext; i++) {
+					var newTD = doc.createElement("td");
+
+					if (!tinymce.isIE)
+						newTD.innerHTML = '<br mce_bogus="1"/>';
+
+					if (tinymce.isIE)
+						trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));
+					else
+						trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);
+
+					trNext = nextElm(trNext, "TR");
+				}
+			}
+
+			function copyRow(doc, table, tr) {
+				var grid = getTableGrid(table);
+				var newTR = tr.cloneNode(false);
+				var cpos = getCellPos(grid, tr.cells[0]);
+				var lastCell = null;
+				var tableBorder = inst.dom.getAttrib(table, "border");
+				var tdElm = null;
+
+				for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+					var newTD = null;
+
+					if (lastCell != tdElm) {
+						for (var i=0; i<tr.cells.length; i++) {
+							if (tdElm == tr.cells[i]) {
+								newTD = tdElm.cloneNode(true);
+								break;
+							}
+						}
+					}
+
+					if (newTD == null) {
+						newTD = doc.createElement("td");
+
+						if (!tinymce.isIE)
+							newTD.innerHTML = '<br mce_bogus="1"/>';
+					}
+
+					// Reset col/row span
+					newTD.colSpan = 1;
+					newTD.rowSpan = 1;
+
+					newTR.appendChild(newTD);
+
+					lastCell = tdElm;
+				}
+
+				return newTR;
+			}
+
+			// ---- Commands -----
+
+			// Handle commands
+			switch (command) {
+				case "mceTableMoveToNextRow":
+					var nextCell = getNextCell(tableElm, tdElm);
+
+					if (!nextCell) {
+						inst.execCommand("mceTableInsertRowAfter", tdElm);
+						nextCell = getNextCell(tableElm, tdElm);
+					}
+
+					inst.selection.select(nextCell);
+					inst.selection.collapse(true);
+
+					return true;
+
+				case "mceTableRowProps":
+					if (trElm == null)
+						return true;
+
+					if (user_interface) {
+						inst.windowManager.open({
+							url : url + '/row.htm',
+							width : 400 + parseInt(inst.getLang('table.rowprops_delta_width', 0)),
+							height : 295 + parseInt(inst.getLang('table.rowprops_delta_height', 0)),
+							inline : 1
+						}, {
+							plugin_url : url
+						});
+					}
+
+					return true;
+
+				case "mceTableCellProps":
+					if (tdElm == null)
+						return true;
+
+					if (user_interface) {
+						inst.windowManager.open({
+							url : url + '/cell.htm',
+							width : 400 + parseInt(inst.getLang('table.cellprops_delta_width', 0)),
+							height : 295 + parseInt(inst.getLang('table.cellprops_delta_height', 0)),
+							inline : 1
+						}, {
+							plugin_url : url
+						});
+					}
+
+					return true;
+
+				case "mceInsertTable":
+					if (user_interface) {
+						inst.windowManager.open({
+							url : url + '/table.htm',
+							width : 400 + parseInt(inst.getLang('table.table_delta_width', 0)),
+							height : 320 + parseInt(inst.getLang('table.table_delta_height', 0)),
+							inline : 1
+						}, {
+							plugin_url : url,
+							action : value ? value.action : 0
+						});
+					}
+
+					return true;
+
+				case "mceTableDelete":
+					var table = inst.dom.getParent(inst.selection.getNode(), "table");
+					if (table) {
+						table.parentNode.removeChild(table);
+						inst.execCommand('mceRepaint');
+					}
+					return true;
+
+				case "mceTableSplitCells":
+				case "mceTableMergeCells":
+				case "mceTableInsertRowBefore":
+				case "mceTableInsertRowAfter":
+				case "mceTableDeleteRow":
+				case "mceTableInsertColBefore":
+				case "mceTableInsertColAfter":
+				case "mceTableDeleteCol":
+				case "mceTableCutRow":
+				case "mceTableCopyRow":
+				case "mceTablePasteRowBefore":
+				case "mceTablePasteRowAfter":
+					// No table just return (invalid command)
+					if (!tableElm)
+						return true;
+
+					// Table has a tbody use that reference
+					// Changed logic by ApTest 2005.07.12 (www.aptest.com)
+					// Now lookk at the focused element and take its parentNode.  That will be a tbody or a table.
+					if (trElm && tableElm != trElm.parentNode)
+						tableElm = trElm.parentNode;
+
+					if (tableElm && trElm) {
+						switch (command) {
+							case "mceTableCutRow":
+								if (!trElm || !tdElm)
+									return true;
+
+								inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
+								inst.execCommand("mceTableDeleteRow");
+								break;
+
+							case "mceTableCopyRow":
+								if (!trElm || !tdElm)
+									return true;
+
+								inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
+								break;
+
+							case "mceTablePasteRowBefore":
+								if (!trElm || !tdElm)
+									return true;
+
+								var newTR = inst.tableRowClipboard.cloneNode(true);
+
+								var prevTR = prevElm(trElm, "TR");
+								if (prevTR != null)
+									trimRow(tableElm, prevTR, prevTR.cells[0], newTR);
+
+								trElm.parentNode.insertBefore(newTR, trElm);
+								break;
+
+							case "mceTablePasteRowAfter":
+								if (!trElm || !tdElm)
+									return true;
+								
+								var nextTR = nextElm(trElm, "TR");
+								var newTR = inst.tableRowClipboard.cloneNode(true);
+
+								trimRow(tableElm, trElm, tdElm, newTR);
+
+								if (nextTR == null)
+									trElm.parentNode.appendChild(newTR);
+								else
+									nextTR.parentNode.insertBefore(newTR, nextTR);
+
+								break;
+
+							case "mceTableInsertRowBefore":
+								if (!trElm || !tdElm)
+									return true;
+
+								var grid = getTableGrid(tableElm);
+								var cpos = getCellPos(grid, tdElm);
+								var newTR = doc.createElement("tr");
+								var lastTDElm = null;
+
+								cpos.rowindex--;
+								if (cpos.rowindex < 0)
+									cpos.rowindex = 0;
+
+								// Create cells
+								for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+									if (tdElm != lastTDElm) {
+										var sd = getColRowSpan(tdElm);
+
+										if (sd['rowspan'] == 1) {
+											var newTD = doc.createElement("td");
+
+											if (!tinymce.isIE)
+												newTD.innerHTML = '<br mce_bogus="1"/>';
+
+											newTD.colSpan = tdElm.colSpan;
+
+											newTR.appendChild(newTD);
+										} else
+											tdElm.rowSpan = sd['rowspan'] + 1;
+
+										lastTDElm = tdElm;
+									}
+								}
+
+								trElm.parentNode.insertBefore(newTR, trElm);
+								select(0, 1);
+							break;
+
+							case "mceTableInsertRowAfter":
+								if (!trElm || !tdElm)
+									return true;
+
+								var grid = getTableGrid(tableElm);
+								var cpos = getCellPos(grid, tdElm);
+								var newTR = doc.createElement("tr");
+								var lastTDElm = null;
+
+								// Create cells
+								for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+									if (tdElm != lastTDElm) {
+										var sd = getColRowSpan(tdElm);
+
+										if (sd['rowspan'] == 1) {
+											var newTD = doc.createElement("td");
+
+											if (!tinymce.isIE)
+												newTD.innerHTML = '<br mce_bogus="1"/>';
+
+											newTD.colSpan = tdElm.colSpan;
+
+											newTR.appendChild(newTD);
+										} else
+											tdElm.rowSpan = sd['rowspan'] + 1;
+
+										lastTDElm = tdElm;
+									}
+								}
+
+								if (newTR.hasChildNodes()) {
+									var nextTR = nextElm(trElm, "TR");
+									if (nextTR)
+										nextTR.parentNode.insertBefore(newTR, nextTR);
+									else
+										tableElm.appendChild(newTR);
+								}
+
+								select(0, 1);
+							break;
+
+							case "mceTableDeleteRow":
+								if (!trElm || !tdElm)
+									return true;
+
+								var grid = getTableGrid(tableElm);
+								var cpos = getCellPos(grid, tdElm);
+
+								// Only one row, remove whole table
+								if (grid.length == 1 && tableElm.nodeName == 'TBODY') {
+									inst.dom.remove(inst.dom.getParent(tableElm, "table"));
+									return true;
+								}
+
+								// Move down row spanned cells
+								var cells = trElm.cells;
+								var nextTR = nextElm(trElm, "TR");
+								for (var x=0; x<cells.length; x++) {
+									if (cells[x].rowSpan > 1) {
+										var newTD = cells[x].cloneNode(true);
+										var sd = getColRowSpan(cells[x]);
+
+										newTD.rowSpan = sd.rowspan - 1;
+
+										var nextTD = nextTR.cells[x];
+
+										if (nextTD == null)
+											nextTR.appendChild(newTD);
+										else
+											nextTR.insertBefore(newTD, nextTD);
+									}
+								}
+
+								// Delete cells
+								var lastTDElm = null;
+								for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+									if (tdElm != lastTDElm) {
+										var sd = getColRowSpan(tdElm);
+
+										if (sd.rowspan > 1) {
+											tdElm.rowSpan = sd.rowspan - 1;
+										} else {
+											trElm = tdElm.parentNode;
+
+											if (trElm.parentNode)
+												trElm._delete = true;
+										}
+
+										lastTDElm = tdElm;
+									}
+								}
+
+								deleteMarked(tableElm);
+
+								select(0, -1);
+							break;
+
+							case "mceTableInsertColBefore":
+								if (!trElm || !tdElm)
+									return true;
+
+								var grid = getTableGrid(inst.dom.getParent(tableElm, "table"));
+								var cpos = getCellPos(grid, tdElm);
+								var lastTDElm = null;
+
+								for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
+									if (tdElm != lastTDElm) {
+										var sd = getColRowSpan(tdElm);
+
+										if (sd['colspan'] == 1) {
+											var newTD = doc.createElement(tdElm.nodeName);
+
+											if (!tinymce.isIE)
+												newTD.innerHTML = '<br mce_bogus="1"/>';
+
+											newTD.rowSpan = tdElm.rowSpan;
+
+											tdElm.parentNode.insertBefore(newTD, tdElm);
+										} else
+											tdElm.colSpan++;
+
+										lastTDElm = tdElm;
+									}
+								}
+
+								select();
+							break;
+
+							case "mceTableInsertColAfter":
+								if (!trElm || !tdElm)
+									return true;
+
+								var grid = getTableGrid(inst.dom.getParent(tableElm, "table"));
+								var cpos = getCellPos(grid, tdElm);
+								var lastTDElm = null;
+
+								for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
+									if (tdElm != lastTDElm) {
+										var sd = getColRowSpan(tdElm);
+
+										if (sd['colspan'] == 1) {
+											var newTD = doc.createElement(tdElm.nodeName);
+
+											if (!tinymce.isIE)
+												newTD.innerHTML = '<br mce_bogus="1"/>';
+
+											newTD.rowSpan = tdElm.rowSpan;
+
+											var nextTD = nextElm(tdElm, "TD,TH");
+											if (nextTD == null)
+												tdElm.parentNode.appendChild(newTD);
+											else
+												nextTD.parentNode.insertBefore(newTD, nextTD);
+										} else
+											tdElm.colSpan++;
+
+										lastTDElm = tdElm;
+									}
+								}
+
+								select(1);
+							break;
+
+							case "mceTableDeleteCol":
+								if (!trElm || !tdElm)
+									return true;
+
+								var grid = getTableGrid(tableElm);
+								var cpos = getCellPos(grid, tdElm);
+								var lastTDElm = null;
+
+								// Only one col, remove whole table
+								if ((grid.length > 1 && grid[0].length <= 1) && tableElm.nodeName == 'TBODY') {
+									inst.dom.remove(inst.dom.getParent(tableElm, "table"));
+									return true;
+								}
+
+								// Delete cells
+								for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
+									if (tdElm != lastTDElm) {
+										var sd = getColRowSpan(tdElm);
+
+										if (sd['colspan'] > 1)
+											tdElm.colSpan = sd['colspan'] - 1;
+										else {
+											if (tdElm.parentNode)
+												tdElm.parentNode.removeChild(tdElm);
+										}
+
+										lastTDElm = tdElm;
+									}
+								}
+
+								select(-1);
+							break;
+
+						case "mceTableSplitCells":
+							if (!trElm || !tdElm)
+								return true;
+
+							var spandata = getColRowSpan(tdElm);
+
+							var colspan = spandata["colspan"];
+							var rowspan = spandata["rowspan"];
+
+							// Needs splitting
+							if (colspan > 1 || rowspan > 1) {
+								// Generate cols
+								tdElm.colSpan = 1;
+								for (var i=1; i<colspan; i++) {
+									var newTD = doc.createElement("td");
+
+									if (!tinymce.isIE)
+										newTD.innerHTML = '<br mce_bogus="1"/>';
+
+									trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));
+
+									if (rowspan > 1)
+										addRows(newTD, trElm, rowspan);
+								}
+
+								addRows(tdElm, trElm, rowspan);
+							}
+
+							// Apply visual aids
+							tableElm = inst.dom.getParent(inst.selection.getNode(), "table");
+							break;
+
+						case "mceTableMergeCells":
+							var rows = [];
+							var sel = inst.selection.getSel();
+							var grid = getTableGrid(tableElm);
+
+							if (tinymce.isIE || sel.rangeCount == 1) {
+								if (user_interface) {
+									// Setup template
+									var sp = getColRowSpan(tdElm);
+
+									inst.windowManager.open({
+										url : url + '/merge_cells.htm',
+										width : 240 + parseInt(inst.getLang('table.merge_cells_delta_width', 0)),
+										height : 110 + parseInt(inst.getLang('table.merge_cells_delta_height', 0)),
+										inline : 1
+									}, {
+										action : "update",
+										numcols : sp.colspan,
+										numrows : sp.rowspan,
+										plugin_url : url
+									});
+
+									return true;
+								} else {
+									var numRows = parseInt(value['numrows']);
+									var numCols = parseInt(value['numcols']);
+									var cpos = getCellPos(grid, tdElm);
+
+									if (("" + numRows) == "NaN")
+										numRows = 1;
+
+									if (("" + numCols) == "NaN")
+										numCols = 1;
+
+									// Get rows and cells
+									var tRows = tableElm.rows;
+									for (var y=cpos.rowindex; y<grid.length; y++) {
+										var rowCells = [];
+
+										for (var x=cpos.cellindex; x<grid[y].length; x++) {
+											var td = getCell(grid, y, x);
+
+											if (td && !inArray(rows, td) && !inArray(rowCells, td)) {
+												var cp = getCellPos(grid, td);
+
+												// Within range
+												if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)
+													rowCells[rowCells.length] = td;
+											}
+										}
+
+										if (rowCells.length > 0)
+											rows[rows.length] = rowCells;
+
+										var td = getCell(grid, cpos.rowindex, cpos.cellindex);
+										each(ed.dom.select('br', td), function(e, i) {
+											if (i > 0 && ed.dom.getAttrib('mce_bogus'))
+												ed.dom.remove(e);
+										});
+									}
+
+									//return true;
+								}
+							} else {
+								var cells = [];
+								var sel = inst.selection.getSel();
+								var lastTR = null;
+								var curRow = null;
+								var x1 = -1, y1 = -1, x2, y2;
+
+								// Only one cell selected, whats the point?
+								if (sel.rangeCount < 2)
+									return true;
+
+								// Get all selected cells
+								for (var i=0; i<sel.rangeCount; i++) {
+									var rng = sel.getRangeAt(i);
+									var tdElm = rng.startContainer.childNodes[rng.startOffset];
+
+									if (!tdElm)
+										break;
+
+									if (tdElm.nodeName == "TD" || tdElm.nodeName == "TH")
+										cells[cells.length] = tdElm;
+								}
+
+								// Get rows and cells
+								var tRows = tableElm.rows;
+								for (var y=0; y<tRows.length; y++) {
+									var rowCells = [];
+
+									for (var x=0; x<tRows[y].cells.length; x++) {
+										var td = tRows[y].cells[x];
+
+										for (var i=0; i<cells.length; i++) {
+											if (td == cells[i]) {
+												rowCells[rowCells.length] = td;
+											}
+										}
+									}
+
+									if (rowCells.length > 0)
+										rows[rows.length] = rowCells;
+								}
+
+								// Find selected cells in grid and box
+								var curRow = [];
+								var lastTR = null;
+								for (var y=0; y<grid.length; y++) {
+									for (var x=0; x<grid[y].length; x++) {
+										grid[y][x]._selected = false;
+
+										for (var i=0; i<cells.length; i++) {
+											if (grid[y][x] == cells[i]) {
+												// Get start pos
+												if (x1 == -1) {
+													x1 = x;
+													y1 = y;
+												}
+
+												// Get end pos
+												x2 = x;
+												y2 = y;
+
+												grid[y][x]._selected = true;
+											}
+										}
+									}
+								}
+
+								// Is there gaps, if so deny
+								for (var y=y1; y<=y2; y++) {
+									for (var x=x1; x<=x2; x++) {
+										if (!grid[y][x]._selected) {
+											alert("Invalid selection for merge.");
+											return true;
+										}
+									}
+								}
+							}
+
+							// Validate selection and get total rowspan and colspan
+							var rowSpan = 1, colSpan = 1;
+
+							// Validate horizontal and get total colspan
+							var lastRowSpan = -1;
+							for (var y=0; y<rows.length; y++) {
+								var rowColSpan = 0;
+
+								for (var x=0; x<rows[y].length; x++) {
+									var sd = getColRowSpan(rows[y][x]);
+
+									rowColSpan += sd['colspan'];
+
+									if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {
+										alert("Invalid selection for merge.");
+										return true;
+									}
+
+									lastRowSpan = sd['rowspan'];
+								}
+
+								if (rowColSpan > colSpan)
+									colSpan = rowColSpan;
+
+								lastRowSpan = -1;
+							}
+
+							// Validate vertical and get total rowspan
+							var lastColSpan = -1;
+							for (var x=0; x<rows[0].length; x++) {
+								var colRowSpan = 0;
+
+								for (var y=0; y<rows.length; y++) {
+									var sd = getColRowSpan(rows[y][x]);
+
+									colRowSpan += sd['rowspan'];
+
+									if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {
+										alert("Invalid selection for merge.");
+										return true;
+									}
+
+									lastColSpan = sd['colspan'];
+								}
+
+								if (colRowSpan > rowSpan)
+									rowSpan = colRowSpan;
+
+								lastColSpan = -1;
+							}
+
+							// Setup td
+							tdElm = rows[0][0];
+							tdElm.rowSpan = rowSpan;
+							tdElm.colSpan = colSpan;
+
+							// Merge cells
+							for (var y=0; y<rows.length; y++) {
+								for (var x=0; x<rows[y].length; x++) {
+									var html = rows[y][x].innerHTML;
+									var chk = html.replace(/[ \t\r\n]/g, "");
+
+									if (chk != "<br/>" && chk != "<br>" && chk != '<br mce_bogus="1"/>' && (x+y > 0))
+										tdElm.innerHTML += html;
+
+									// Not current cell
+									if (rows[y][x] != tdElm && !rows[y][x]._deleted) {
+										var cpos = getCellPos(grid, rows[y][x]);
+										var tr = rows[y][x].parentNode;
+
+										tr.removeChild(rows[y][x]);
+										rows[y][x]._deleted = true;
+
+										// Empty TR, remove it
+										if (!tr.hasChildNodes()) {
+											tr.parentNode.removeChild(tr);
+
+											var lastCell = null;
+											for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {
+												if (cellElm != lastCell && cellElm.rowSpan > 1)
+													cellElm.rowSpan--;
+
+												lastCell = cellElm;
+											}
+
+											if (tdElm.rowSpan > 1)
+												tdElm.rowSpan--;
+										}
+									}
+								}
+							}
+
+							// Remove all but one bogus br
+							each(ed.dom.select('br', tdElm), function(e, i) {
+								if (i > 0 && ed.dom.getAttrib(e, 'mce_bogus'))
+									ed.dom.remove(e);
+							});
+
+							break;
+						}
+
+						tableElm = inst.dom.getParent(inst.selection.getNode(), "table");
+						inst.addVisual(tableElm);
+						inst.nodeChanged();
+					}
+
+				return true;
+			}
+
+			// Pass to next handler in chain
+			return false;
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,269 @@
+tinyMCEPopup.requireLangPack();
+
+var ed;
+
+function init() {
+	ed = tinyMCEPopup.editor;
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
+
+	var inst = ed;
+	var tdElm = ed.dom.getParent(ed.selection.getNode(), "td,th");
+	var formObj = document.forms[0];
+	var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
+
+	// Get table cell data
+	var celltype = tdElm.nodeName.toLowerCase();
+	var align = ed.dom.getAttrib(tdElm, 'align');
+	var valign = ed.dom.getAttrib(tdElm, 'valign');
+	var width = trimSize(getStyle(tdElm, 'width', 'width'));
+	var height = trimSize(getStyle(tdElm, 'height', 'height'));
+	var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
+	var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
+	var className = ed.dom.getAttrib(tdElm, 'class');
+	var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+	var id = ed.dom.getAttrib(tdElm, 'id');
+	var lang = ed.dom.getAttrib(tdElm, 'lang');
+	var dir = ed.dom.getAttrib(tdElm, 'dir');
+	var scope = ed.dom.getAttrib(tdElm, 'scope');
+
+	// Setup form
+	addClassesToList('class', 'table_cell_styles');
+	TinyMCE_EditableSelects.init();
+
+	formObj.bordercolor.value = bordercolor;
+	formObj.bgcolor.value = bgcolor;
+	formObj.backgroundimage.value = backgroundimage;
+	formObj.width.value = width;
+	formObj.height.value = height;
+	formObj.id.value = id;
+	formObj.lang.value = lang;
+	formObj.style.value = ed.dom.serializeStyle(st);
+	selectByValue(formObj, 'align', align);
+	selectByValue(formObj, 'valign', valign);
+	selectByValue(formObj, 'class', className, true, true);
+	selectByValue(formObj, 'celltype', celltype);
+	selectByValue(formObj, 'dir', dir);
+	selectByValue(formObj, 'scope', scope);
+
+	// Resize some elements
+	if (isVisible('backgroundimagebrowser'))
+		document.getElementById('backgroundimage').style.width = '180px';
+
+	updateColor('bordercolor_pick', 'bordercolor');
+	updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+	var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
+
+	tinyMCEPopup.restoreSelection();
+	el = ed.selection.getNode();
+	tdElm = ed.dom.getParent(el, "td,th");
+	trElm = ed.dom.getParent(el, "tr");
+	tableElm = ed.dom.getParent(el, "table");
+
+	ed.execCommand('mceBeginUndoLevel');
+
+	switch (getSelectValue(formObj, 'action')) {
+		case "cell":
+			var celltype = getSelectValue(formObj, 'celltype');
+			var scope = getSelectValue(formObj, 'scope');
+
+			function doUpdate(s) {
+				if (s) {
+					updateCell(tdElm);
+
+					ed.addVisual();
+					ed.nodeChanged();
+					inst.execCommand('mceEndUndoLevel');
+					tinyMCEPopup.close();
+				}
+			};
+
+			if (ed.getParam("accessibility_warnings", 1)) {
+				if (celltype == "th" && scope == "")
+					tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
+				else
+					doUpdate(1);
+
+				return;
+			}
+
+			updateCell(tdElm);
+			break;
+
+		case "row":
+			var cell = trElm.firstChild;
+
+			if (cell.nodeName != "TD" && cell.nodeName != "TH")
+				cell = nextCell(cell);
+
+			do {
+				cell = updateCell(cell, true);
+			} while ((cell = nextCell(cell)) != null);
+
+			break;
+
+		case "all":
+			var rows = tableElm.getElementsByTagName("tr");
+
+			for (var i=0; i<rows.length; i++) {
+				var cell = rows[i].firstChild;
+
+				if (cell.nodeName != "TD" && cell.nodeName != "TH")
+					cell = nextCell(cell);
+
+				do {
+					cell = updateCell(cell, true);
+				} while ((cell = nextCell(cell)) != null);
+			}
+
+			break;
+	}
+
+	ed.addVisual();
+	ed.nodeChanged();
+	inst.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function nextCell(elm) {
+	while ((elm = elm.nextSibling) != null) {
+		if (elm.nodeName == "TD" || elm.nodeName == "TH")
+			return elm;
+	}
+
+	return null;
+}
+
+function updateCell(td, skip_id) {
+	var inst = ed;
+	var formObj = document.forms[0];
+	var curCellType = td.nodeName.toLowerCase();
+	var celltype = getSelectValue(formObj, 'celltype');
+	var doc = inst.getDoc();
+	var dom = ed.dom;
+
+	if (!skip_id)
+		td.setAttribute('id', formObj.id.value);
+
+	td.setAttribute('align', formObj.align.value);
+	td.setAttribute('vAlign', formObj.valign.value);
+	td.setAttribute('lang', formObj.lang.value);
+	td.setAttribute('dir', getSelectValue(formObj, 'dir'));
+	td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
+	td.setAttribute('scope', formObj.scope.value);
+	ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
+
+	// Clear deprecated attributes
+	ed.dom.setAttrib(td, 'width', '');
+	ed.dom.setAttrib(td, 'height', '');
+	ed.dom.setAttrib(td, 'bgColor', '');
+	ed.dom.setAttrib(td, 'borderColor', '');
+	ed.dom.setAttrib(td, 'background', '');
+
+	// Set styles
+	td.style.width = getCSSSize(formObj.width.value);
+	td.style.height = getCSSSize(formObj.height.value);
+	if (formObj.bordercolor.value != "") {
+		td.style.borderColor = formObj.bordercolor.value;
+		td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
+		td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
+	} else
+		td.style.borderColor = '';
+
+	td.style.backgroundColor = formObj.bgcolor.value;
+
+	if (formObj.backgroundimage.value != "")
+		td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+	else
+		td.style.backgroundImage = '';
+
+	if (curCellType != celltype) {
+		// changing to a different node type
+		var newCell = doc.createElement(celltype);
+
+		for (var c=0; c<td.childNodes.length; c++)
+			newCell.appendChild(td.childNodes[c].cloneNode(1));
+
+		for (var a=0; a<td.attributes.length; a++)
+			ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
+
+		td.parentNode.replaceChild(newCell, td);
+		td = newCell;
+	}
+
+	dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
+
+	return td;
+}
+
+function changedBackgroundImage() {
+	var formObj = document.forms[0];
+	var st = ed.dom.parseStyle(formObj.style.value);
+
+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+	formObj.style.value = ed.dom.serializeStyle(st);
+}
+
+function changedSize() {
+	var formObj = document.forms[0];
+	var st = ed.dom.parseStyle(formObj.style.value);
+
+	var width = formObj.width.value;
+	if (width != "")
+		st['width'] = getCSSSize(width);
+	else
+		st['width'] = "";
+
+	var height = formObj.height.value;
+	if (height != "")
+		st['height'] = getCSSSize(height);
+	else
+		st['height'] = "";
+
+	formObj.style.value = ed.dom.serializeStyle(st);
+}
+
+function changedColor() {
+	var formObj = document.forms[0];
+	var st = ed.dom.parseStyle(formObj.style.value);
+
+	st['background-color'] = formObj.bgcolor.value;
+	st['border-color'] = formObj.bordercolor.value;
+
+	formObj.style.value = ed.dom.serializeStyle(st);
+}
+
+function changedStyle() {
+	var formObj = document.forms[0];
+	var st = ed.dom.parseStyle(formObj.style.value);
+
+	if (st['background-image'])
+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	else
+		formObj.backgroundimage.value = '';
+
+	if (st['width'])
+		formObj.width.value = trimSize(st['width']);
+
+	if (st['height'])
+		formObj.height.value = trimSize(st['height']);
+
+	if (st['background-color']) {
+		formObj.bgcolor.value = st['background-color'];
+		updateColor('bgcolor_pick','bgcolor');
+	}
+
+	if (st['border-color']) {
+		formObj.bordercolor.value = st['border-color'];
+		updateColor('bordercolor_pick','bordercolor');
+	}
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,29 @@
+tinyMCEPopup.requireLangPack();
+
+function init() {
+	var f = document.forms[0], v;
+
+	tinyMCEPopup.resizeToInnerSize();
+
+	f.numcols.value = tinyMCEPopup.getWindowArg('numcols', 1);
+	f.numrows.value = tinyMCEPopup.getWindowArg('numrows', 1);
+}
+
+function mergeCells() {
+	var args = [], f = document.forms[0];
+
+	tinyMCEPopup.restoreSelection();
+
+	if (!AutoValidator.validate(f)) {
+		tinyMCEPopup.alert(tinyMCEPopup.getLang('invalid_data'));
+		return false;
+	}
+
+	args["numcols"] = f.numcols.value;
+	args["numrows"] = f.numrows.value;
+
+	tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
+	tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/row.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/row.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/row.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/row.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,212 @@
+tinyMCEPopup.requireLangPack();
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+	var inst = tinyMCEPopup.editor;
+	var dom = inst.dom;
+	var trElm = dom.getParent(inst.selection.getNode(), "tr");
+	var formObj = document.forms[0];
+	var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
+
+	// Get table row data
+	var rowtype = trElm.parentNode.nodeName.toLowerCase();
+	var align = dom.getAttrib(trElm, 'align');
+	var valign = dom.getAttrib(trElm, 'valign');
+	var height = trimSize(getStyle(trElm, 'height', 'height'));
+	var className = dom.getAttrib(trElm, 'class');
+	var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
+	var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+	var id = dom.getAttrib(trElm, 'id');
+	var lang = dom.getAttrib(trElm, 'lang');
+	var dir = dom.getAttrib(trElm, 'dir');
+
+	// Setup form
+	addClassesToList('class', 'table_row_styles');
+	TinyMCE_EditableSelects.init();
+
+	formObj.bgcolor.value = bgcolor;
+	formObj.backgroundimage.value = backgroundimage;
+	formObj.height.value = height;
+	formObj.id.value = id;
+	formObj.lang.value = lang;
+	formObj.style.value = dom.serializeStyle(st);
+	selectByValue(formObj, 'align', align);
+	selectByValue(formObj, 'valign', valign);
+	selectByValue(formObj, 'class', className, true, true);
+	selectByValue(formObj, 'rowtype', rowtype);
+	selectByValue(formObj, 'dir', dir);
+
+	// Resize some elements
+	if (isVisible('backgroundimagebrowser'))
+		document.getElementById('backgroundimage').style.width = '180px';
+
+	updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+	var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
+	var action = getSelectValue(formObj, 'action');
+
+	tinyMCEPopup.restoreSelection();
+	trElm = dom.getParent(inst.selection.getNode(), "tr");
+	tableElm = dom.getParent(inst.selection.getNode(), "table");
+
+	inst.execCommand('mceBeginUndoLevel');
+
+	switch (action) {
+		case "row":
+			updateRow(trElm);
+			break;
+
+		case "all":
+			var rows = tableElm.getElementsByTagName("tr");
+
+			for (var i=0; i<rows.length; i++)
+				updateRow(rows[i], true);
+
+			break;
+
+		case "odd":
+		case "even":
+			var rows = tableElm.getElementsByTagName("tr");
+
+			for (var i=0; i<rows.length; i++) {
+				if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
+					updateRow(rows[i], true, true);
+			}
+
+			break;
+	}
+
+	inst.addVisual();
+	inst.nodeChanged();
+	inst.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function updateRow(tr_elm, skip_id, skip_parent) {
+	var inst = tinyMCEPopup.editor;
+	var formObj = document.forms[0];
+	var dom = inst.dom;
+	var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
+	var rowtype = getSelectValue(formObj, 'rowtype');
+	var doc = inst.getDoc();
+
+	// Update row element
+	if (!skip_id)
+		tr_elm.setAttribute('id', formObj.id.value);
+
+	tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
+	tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
+	tr_elm.setAttribute('lang', formObj.lang.value);
+	tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
+	tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
+	dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
+
+	// Clear deprecated attributes
+	tr_elm.setAttribute('background', '');
+	tr_elm.setAttribute('bgColor', '');
+	tr_elm.setAttribute('height', '');
+
+	// Set styles
+	tr_elm.style.height = getCSSSize(formObj.height.value);
+	tr_elm.style.backgroundColor = formObj.bgcolor.value;
+
+	if (formObj.backgroundimage.value != "")
+		tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+	else
+		tr_elm.style.backgroundImage = '';
+
+	// Setup new rowtype
+	if (curRowType != rowtype && !skip_parent) {
+		// first, clone the node we are working on
+		var newRow = tr_elm.cloneNode(1);
+
+		// next, find the parent of its new destination (creating it if necessary)
+		var theTable = dom.getParent(tr_elm, "table");
+		var dest = rowtype;
+		var newParent = null;
+		for (var i = 0; i < theTable.childNodes.length; i++) {
+			if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
+				newParent = theTable.childNodes[i];
+		}
+
+		if (newParent == null) {
+			newParent = doc.createElement(dest);
+
+			if (dest == "thead") {
+				if (theTable.firstChild.nodeName == 'CAPTION')
+					inst.dom.insertAfter(newParent, theTable.firstChild);
+				else
+					theTable.insertBefore(newParent, theTable.firstChild);
+			} else
+				theTable.appendChild(newParent);
+		}
+
+		// append the row to the new parent
+		newParent.appendChild(newRow);
+
+		// remove the original
+		tr_elm.parentNode.removeChild(tr_elm);
+
+		// set tr_elm to the new node
+		tr_elm = newRow;
+	}
+
+	dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
+}
+
+function changedBackgroundImage() {
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
+
+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedStyle() {
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
+
+	if (st['background-image'])
+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	else
+		formObj.backgroundimage.value = '';
+
+	if (st['height'])
+		formObj.height.value = trimSize(st['height']);
+
+	if (st['background-color']) {
+		formObj.bgcolor.value = st['background-color'];
+		updateColor('bgcolor_pick','bgcolor');
+	}
+}
+
+function changedSize() {
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
+
+	var height = formObj.height.value;
+	if (height != "")
+		st['height'] = getCSSSize(height);
+	else
+		st['height'] = "";
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedColor() {
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
+
+	st['background-color'] = formObj.bgcolor.value;
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/table.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/table.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/table.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/js/table.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,440 @@
+tinyMCEPopup.requireLangPack();
+
+var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
+
+function insertTable() {
+	var formObj = document.forms[0];
+	var inst = tinyMCEPopup.editor, dom = inst.dom;
+	var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
+	var html = '', capEl, elm;
+	var cellLimit, rowLimit, colLimit;
+
+	tinyMCEPopup.restoreSelection();
+
+	if (!AutoValidator.validate(formObj)) {
+		tinyMCEPopup.alert(inst.getLang('invalid_data'));
+		return false;
+	}
+
+	elm = dom.getParent(inst.selection.getNode(), 'table');
+
+	// Get form data
+	cols = formObj.elements['cols'].value;
+	rows = formObj.elements['rows'].value;
+	border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
+	cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
+	cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
+	align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
+	frame = formObj.elements['frame'].options[formObj.elements['frame'].selectedIndex].value;
+	rules = formObj.elements['rules'].options[formObj.elements['rules'].selectedIndex].value;
+	width = formObj.elements['width'].value;
+	height = formObj.elements['height'].value;
+	bordercolor = formObj.elements['bordercolor'].value;
+	bgcolor = formObj.elements['bgcolor'].value;
+	className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
+	id = formObj.elements['id'].value;
+	summary = formObj.elements['summary'].value;
+	style = formObj.elements['style'].value;
+	dir = formObj.elements['dir'].value;
+	lang = formObj.elements['lang'].value;
+	background = formObj.elements['backgroundimage'].value;
+	caption = formObj.elements['caption'].checked;
+
+	cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
+	rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
+	colLimit = tinyMCEPopup.getParam('table_col_limit', false);
+
+	// Validate table size
+	if (colLimit && cols > colLimit) {
+		tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
+		return false;
+	} else if (rowLimit && rows > rowLimit) {
+		tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
+		return false;
+	} else if (cellLimit && cols * rows > cellLimit) {
+		tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
+		return false;
+	}
+
+	// Update table
+	if (action == "update") {
+		inst.execCommand('mceBeginUndoLevel');
+
+		dom.setAttrib(elm, 'cellPadding', cellpadding, true);
+		dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
+		dom.setAttrib(elm, 'border', border);
+		dom.setAttrib(elm, 'align', align);
+		dom.setAttrib(elm, 'frame', frame);
+		dom.setAttrib(elm, 'rules', rules);
+		dom.setAttrib(elm, 'class', className);
+		dom.setAttrib(elm, 'style', style);
+		dom.setAttrib(elm, 'id', id);
+		dom.setAttrib(elm, 'summary', summary);
+		dom.setAttrib(elm, 'dir', dir);
+		dom.setAttrib(elm, 'lang', lang);
+
+		capEl = inst.dom.select('caption', elm)[0];
+
+		if (capEl && !caption)
+			capEl.parentNode.removeChild(capEl);
+
+		if (!capEl && caption) {
+			capEl = elm.ownerDocument.createElement('caption');
+
+			if (!tinymce.isIE)
+				capEl.innerHTML = '<br mce_bogus="1"/>';
+
+			elm.insertBefore(capEl, elm.firstChild);
+		}
+
+		if (width && inst.settings.inline_styles) {
+			dom.setStyle(elm, 'width', width);
+			dom.setAttrib(elm, 'width', '');
+		} else {
+			dom.setAttrib(elm, 'width', width, true);
+			dom.setStyle(elm, 'width', '');
+		}
+
+		// Remove these since they are not valid XHTML
+		dom.setAttrib(elm, 'borderColor', '');
+		dom.setAttrib(elm, 'bgColor', '');
+		dom.setAttrib(elm, 'background', '');
+
+		if (height && inst.settings.inline_styles) {
+			dom.setStyle(elm, 'height', height);
+			dom.setAttrib(elm, 'height', '');
+		} else {
+			dom.setAttrib(elm, 'height', height, true);
+			dom.setStyle(elm, 'height', '');
+ 		}
+
+		if (background != '')
+			elm.style.backgroundImage = "url('" + background + "')";
+		else
+			elm.style.backgroundImage = '';
+
+/*		if (tinyMCEPopup.getParam("inline_styles")) {
+			if (width != '')
+				elm.style.width = getCSSSize(width);
+		}*/
+
+		if (bordercolor != "") {
+			elm.style.borderColor = bordercolor;
+			elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
+			elm.style.borderWidth = border == "" ? "1px" : border;
+		} else
+			elm.style.borderColor = '';
+
+		elm.style.backgroundColor = bgcolor;
+		elm.style.height = getCSSSize(height);
+
+		inst.addVisual();
+
+		// Fix for stange MSIE align bug
+		//elm.outerHTML = elm.outerHTML;
+
+		inst.nodeChanged();
+		inst.execCommand('mceEndUndoLevel');
+
+		// Repaint if dimensions changed
+		if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
+			inst.execCommand('mceRepaint');
+
+		tinyMCEPopup.close();
+		return true;
+	}
+
+	// Create new table
+	html += '<table';
+
+	html += makeAttrib('id', id);
+	html += makeAttrib('border', border);
+	html += makeAttrib('cellpadding', cellpadding);
+	html += makeAttrib('cellspacing', cellspacing);
+
+	if (width && inst.settings.inline_styles) {
+		if (style)
+			style += '; ';
+
+		// Force px
+		if (/^[0-9\.]+$/.test(width))
+			width += 'px';
+
+		style += 'width: ' + width;
+	} else
+		html += makeAttrib('width', width);
+
+/*	if (height) {
+		if (style)
+			style += '; ';
+
+		style += 'height: ' + height;
+	}*/
+
+	//html += makeAttrib('height', height);
+	//html += makeAttrib('bordercolor', bordercolor);
+	//html += makeAttrib('bgcolor', bgcolor);
+	html += makeAttrib('align', align);
+	html += makeAttrib('frame', frame);
+	html += makeAttrib('rules', rules);
+	html += makeAttrib('class', className);
+	html += makeAttrib('style', style);
+	html += makeAttrib('summary', summary);
+	html += makeAttrib('dir', dir);
+	html += makeAttrib('lang', lang);
+	html += '>';
+
+	if (caption) {
+		if (!tinymce.isIE)
+			html += '<caption><br mce_bogus="1"/></caption>';
+		else
+			html += '<caption></caption>';
+	}
+
+	for (var y=0; y<rows; y++) {
+		html += "<tr>";
+
+		for (var x=0; x<cols; x++) {
+			if (!tinymce.isIE)
+				html += '<td><br mce_bogus="1"/></td>';
+			else
+				html += '<td></td>';
+		}
+
+		html += "</tr>";
+	}
+
+	html += "</table>";
+
+	inst.execCommand('mceBeginUndoLevel');
+
+	// Move table
+	if (inst.settings.fix_table_elements) {
+		var bm = inst.selection.getBookmark(), patt = '';
+
+		inst.execCommand('mceInsertContent', false, '<br class="_mce_marker" />');
+
+		tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {
+			if (patt)
+				patt += ',';
+
+			patt += n + ' ._mce_marker';
+		});
+
+		tinymce.each(inst.dom.select(patt), function(n) {
+			inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);
+		});
+
+		dom.setOuterHTML(dom.select('._mce_marker')[0], html);
+
+		inst.selection.moveToBookmark(bm);
+	} else
+		inst.execCommand('mceInsertContent', false, html);
+
+	inst.addVisual();
+	inst.execCommand('mceEndUndoLevel');
+
+	tinyMCEPopup.close();
+}
+
+function makeAttrib(attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib];
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value == "")
+		return "";
+
+	// XML encode it
+	value = value.replace(/&/g, '&amp;');
+	value = value.replace(/\"/g, '&quot;');
+	value = value.replace(/</g, '&lt;');
+	value = value.replace(/>/g, '&gt;');
+
+	return ' ' + attrib + '="' + value + '"';
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+	var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
+	var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
+	var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame;
+	var inst = tinyMCEPopup.editor, dom = inst.dom;
+	var formObj = document.forms[0];
+	var elm = dom.getParent(inst.selection.getNode(), "table");
+
+	action = tinyMCEPopup.getWindowArg('action');
+
+	if (!action)
+		action = elm ? "update" : "insert";
+
+	if (elm && action != "insert") {
+		var rowsAr = elm.rows;
+		var cols = 0;
+		for (var i=0; i<rowsAr.length; i++)
+			if (rowsAr[i].cells.length > cols)
+				cols = rowsAr[i].cells.length;
+
+		cols = cols;
+		rows = rowsAr.length;
+
+		st = dom.parseStyle(dom.getAttrib(elm, "style"));
+		border = trimSize(getStyle(elm, 'border', 'borderWidth'));
+		cellpadding = dom.getAttrib(elm, 'cellpadding', "");
+		cellspacing = dom.getAttrib(elm, 'cellspacing', "");
+		width = trimSize(getStyle(elm, 'width', 'width'));
+		height = trimSize(getStyle(elm, 'height', 'height'));
+		bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
+		bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
+		align = dom.getAttrib(elm, 'align', align);
+		frame = dom.getAttrib(elm, 'frame');
+		rules = dom.getAttrib(elm, 'rules');
+		className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
+		id = dom.getAttrib(elm, 'id');
+		summary = dom.getAttrib(elm, 'summary');
+		style = dom.serializeStyle(st);
+		dir = dom.getAttrib(elm, 'dir');
+		lang = dom.getAttrib(elm, 'lang');
+		background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+		formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
+
+		orgTableWidth = width;
+		orgTableHeight = height;
+
+		action = "update";
+		formObj.insert.value = inst.getLang('update');
+	}
+
+	addClassesToList('class', "table_styles");
+	TinyMCE_EditableSelects.init();
+
+	// Update form
+	selectByValue(formObj, 'align', align);
+	selectByValue(formObj, 'frame', frame);
+	selectByValue(formObj, 'rules', rules);
+	selectByValue(formObj, 'class', className, true, true);
+	formObj.cols.value = cols;
+	formObj.rows.value = rows;
+	formObj.border.value = border;
+	formObj.cellpadding.value = cellpadding;
+	formObj.cellspacing.value = cellspacing;
+	formObj.width.value = width;
+	formObj.height.value = height;
+	formObj.bordercolor.value = bordercolor;
+	formObj.bgcolor.value = bgcolor;
+	formObj.id.value = id;
+	formObj.summary.value = summary;
+	formObj.style.value = style;
+	formObj.dir.value = dir;
+	formObj.lang.value = lang;
+	formObj.backgroundimage.value = background;
+
+	updateColor('bordercolor_pick', 'bordercolor');
+	updateColor('bgcolor_pick', 'bgcolor');
+
+	// Resize some elements
+	if (isVisible('backgroundimagebrowser'))
+		document.getElementById('backgroundimage').style.width = '180px';
+
+	// Disable some fields in update mode
+	if (action == "update") {
+		formObj.cols.disabled = true;
+		formObj.rows.disabled = true;
+	}
+}
+
+function changedSize() {
+	var formObj = document.forms[0];
+	var st = dom.parseStyle(formObj.style.value);
+
+/*	var width = formObj.width.value;
+	if (width != "")
+		st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
+	else
+		st['width'] = "";*/
+
+	var height = formObj.height.value;
+	if (height != "")
+		st['height'] = getCSSSize(height);
+	else
+		st['height'] = "";
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedBackgroundImage() {
+	var formObj = document.forms[0];
+	var st = dom.parseStyle(formObj.style.value);
+
+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedBorder() {
+	var formObj = document.forms[0];
+	var st = dom.parseStyle(formObj.style.value);
+
+	// Update border width if the element has a color
+	if (formObj.border.value != "" && formObj.bordercolor.value != "")
+		st['border-width'] = formObj.border.value + "px";
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedColor() {
+	var formObj = document.forms[0];
+	var st = dom.parseStyle(formObj.style.value);
+
+	st['background-color'] = formObj.bgcolor.value;
+
+	if (formObj.bordercolor.value != "") {
+		st['border-color'] = formObj.bordercolor.value;
+
+		// Add border-width if it's missing
+		if (!st['border-width'])
+			st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
+	}
+
+	formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedStyle() {
+	var formObj = document.forms[0];
+	var st = dom.parseStyle(formObj.style.value);
+
+	if (st['background-image'])
+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	else
+		formObj.backgroundimage.value = '';
+
+	if (st['width'])
+		formObj.width.value = trimSize(st['width']);
+
+	if (st['height'])
+		formObj.height.value = trimSize(st['height']);
+
+	if (st['background-color']) {
+		formObj.bgcolor.value = st['background-color'];
+		updateColor('bgcolor_pick','bgcolor');
+	}
+
+	if (st['border-color']) {
+		formObj.bordercolor.value = st['border-color'];
+		updateColor('bordercolor_pick','bordercolor');
+	}
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,74 @@
+tinyMCE.addI18n('ca.table_dlg',{
+general_tab:"General",
+advanced_tab:"Avan\u00E7at",
+general_props:"Propietats generals",
+advanced_props:"Propietats avan\u00E7ades",
+rowtype:"Part de la taula on \u00E9s la fila",
+title:"Insereix/Modifica taula",
+width:"Amplada",
+height:"Al\u00E7ada",
+cols:"Columnes",
+rows:"Files",
+cellspacing:"Espai de Cel.la",
+cellpadding:"Espai de marge",
+border:"Vora",
+align:"Alineaci\u00F3",
+align_default:"Per defecte",
+align_left:"Esquerra",
+align_right:"Dreta",
+align_middle:"Centrat",
+row_title:"Propietats de la fila de la taula",
+cell_title:"Propietats de la cel\u00B7la de la taula",
+cell_type:"Tipus de cel\u00B7la",
+valign:"Alineaci\u00F3 vertical",
+align_top:"Dalt",
+align_bottom:"Baix",
+bordercolor:"Color de la vora",
+bgcolor:"Color del fons",
+merge_cells_title:"Refon les cel\u00B7les de la taula",
+id:"Id",
+style:"Estil",
+langdir:"Direcci\u00F3 de l'Idioma",
+langcode:"Codi de l'idioma",
+mime:"Tipus MIME de l'objectiu",
+ltr:"D'esquerra a dreta",
+rtl:"De dreta a esquerra",
+bgimage:"Imatge de fons",
+summary:"Resum",
+td:"Dades",
+th:"Cap\u00E7alera",
+cell_cell:"Actualitza la cel\u00B7la actual",
+cell_row:"Actualitza totes les cel\u00B7les de la fila",
+cell_all:"Actualitza totes les cel\u00B7les de la taula",
+row_row:"Actualitza la fila actual",
+row_odd:"Actualitza les files senars de la taula",
+row_even:"Actualitza les files parelles de la taula",
+row_all:"Actualitza les files de la taula",
+thead:"Cap\u00E7alera de la Taula",
+tbody:"Cos de la Taula",
+tfoot:"Peu de la Taula",
+scope:"Abast",
+rowgroup:"Grup de Files",
+colgroup:"Grup de Columnes",
+col_limit:"Has excedit el nombre m\u00E0xim de columnes de {$cols}.",
+row_limit:"Has excedit el nombre m\u00E0xim de files de {$rows}.",
+cell_limit:"Has excedit el nombre m\u00E0xim de cel\u00B7les de {$cells}.",
+missing_scope:"Segur que vols continuar sense especificar un abast per a les cel\u00B7les de cap\u00E7alera d'aquesta taula? Sense aix\u00F2, alguns usuaris/es amb discapacitats tindran dificultats per entendre el contingut o les dades mostrades a la taula.",
+caption:"T\u00EDtol de la taula",
+frame:"Marc",
+frame_none:"cap",
+frame_groups:"grups",
+frame_rows:"files",
+frame_cols:"columnes",
+frame_all:"totes",
+rules:"Regles",
+rules_void:"salta regles",
+rules_above:"sobre",
+rules_below:"sota",
+rules_hsides:"banda horitzontal",
+rules_lhs:"lhs",
+rules_rhs:"rhs",
+rules_vsides:"banda vertical",
+rules_box:"caixa",
+rules_border:"vora"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,74 @@
+tinyMCE.addI18n('en.table_dlg',{
+general_tab:"General",
+advanced_tab:"Advanced",
+general_props:"General properties",
+advanced_props:"Advanced properties",
+rowtype:"Row in table part",
+title:"Insert/Modify table",
+width:"Width",
+height:"Height",
+cols:"Cols",
+rows:"Rows",
+cellspacing:"Cellspacing",
+cellpadding:"Cellpadding",
+border:"Border",
+align:"Alignment",
+align_default:"Default",
+align_left:"Left",
+align_right:"Right",
+align_middle:"Center",
+row_title:"Table row properties",
+cell_title:"Table cell properties",
+cell_type:"Cell type",
+valign:"Vertical alignment",
+align_top:"Top",
+align_bottom:"Bottom",
+bordercolor:"Border color",
+bgcolor:"Background color",
+merge_cells_title:"Merge table cells",
+id:"Id",
+style:"Style",
+langdir:"Language direction",
+langcode:"Language code",
+mime:"Target MIME type",
+ltr:"Left to right",
+rtl:"Right to left",
+bgimage:"Background image",
+summary:"Summary",
+td:"Data",
+th:"Header",
+cell_cell:"Update current cell",
+cell_row:"Update all cells in row",
+cell_all:"Update all cells in table",
+row_row:"Update current row",
+row_odd:"Update odd rows in table",
+row_even:"Update even rows in table",
+row_all:"Update all rows in table",
+thead:"Table Head",
+tbody:"Table Body",
+tfoot:"Table Foot",
+scope:"Scope",
+rowgroup:"Row Group",
+colgroup:"Col Group",
+col_limit:"You've exceeded the maximum number of columns of {$cols}.",
+row_limit:"You've exceeded the maximum number of rows of {$rows}.",
+cell_limit:"You've exceeded the maximum number of cells of {$cells}.",
+missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",
+caption:"Table caption",
+frame:"Frame",
+frame_none:"none",
+frame_groups:"groups",
+frame_rows:"rows",
+frame_cols:"cols",
+frame_all:"all",
+rules:"Rules",
+rules_void:"void",
+rules_above:"above",
+rules_below:"below",
+rules_hsides:"hsides",
+rules_lhs:"lhs",
+rules_rhs:"rhs",
+rules_vsides:"vsides",
+rules_box:"box",
+rules_border:"border"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,74 @@
+tinyMCE.addI18n('es.table_dlg',{
+general_tab:"General",
+advanced_tab:"Avanzado",
+general_props:"Propiedades generales",
+advanced_props:"Propiedades avanzadas",
+rowtype:"Tipo de fila",
+title:"Insertar/Modificar tabla",
+width:"Ancho",
+height:"Alto",
+cols:"Cols",
+rows:"Filas",
+cellspacing:"Espaciado de celda",
+cellpadding:"Relleno de celda",
+border:"Borde",
+align:"Alineaci\u00F3n",
+align_default:"Predet.",
+align_left:"Izquierda",
+align_right:"Derecha",
+align_middle:"Centrado",
+row_title:"Propiedades de la fila",
+cell_title:"Propiedades de la celda",
+cell_type:"Tipo de celda",
+valign:"Alineaci\u00F3n vertical",
+align_top:"Arriba",
+align_bottom:"Debajo",
+bordercolor:"Color del borde",
+bgcolor:"Color de fondo",
+merge_cells_title:"Vincular celdas",
+id:"Id",
+style:"Estilo",
+langdir:"Direcci\u00F3n del lenguaje",
+langcode:"C\u00F3digo del lenguaje",
+mime:"Tipo MIME",
+ltr:"Izquierda a derecha",
+rtl:"Derecha a izquierda",
+bgimage:"Imagen de fondo",
+summary:"Resumen",
+td:"Datos",
+th:"Encabezado",
+cell_cell:"Actualizar celda actual",
+cell_row:"Actualizar todas las celdas en la fila",
+cell_all:"Actualizar todas las celdas en la tabla",
+row_row:"Actualizar fila actual",
+row_odd:"Actualizar filas impares",
+row_even:"Actualizar filas pares",
+row_all:"Actualizar todas las filas",
+thead:"Encabezado de la tabla",
+tbody:"Cuerpo de la tabla",
+tfoot:"Pie de la tabla",
+scope:"Alcance",
+rowgroup:"Grupo de filas",
+colgroup:"Grupo de columnas",
+col_limit:"Ha superado el n\u00FAmero m\u00E1ximo de columnas: {$cols}.",
+row_limit:"Ha superado el n\u00FAmero m\u00E1ximo de filas: {$rows}.",
+cell_limit:"Ha superado el n\u00FAmero m\u00E1ximo de celdas: {$cells}.",
+missing_scope:" \u00BFEst\u00E1 seguro que desea continuar sin especificar el alcance del encabezado de celda? Sin \u00E9l podr\u00EDa ser dificultoso para algunos usuarios entender el contenido o los datos mostrados en la tabla.",
+caption:"Subt\u00EDtulo de la tabla",
+frame:"Recuadro",
+frame_none:"ninguno",
+frame_groups:"grupos",
+frame_rows:"filas",
+frame_cols:"cols",
+frame_all:"todos",
+rules:"Reglas",
+rules_void:"vac\u00EDo",
+rules_above:"encima",
+rules_below:"debajo",
+rules_hsides:"hsides",
+rules_lhs:"lhs",
+rules_rhs:"rhs",
+rules_vsides:"vsides",
+rules_box:"box",
+rules_border:"border"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es.js	2006-07-14 12:42:28.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,85 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('table',{
-general_tab : 'General',
-advanced_tab : 'Avanzado',
-general_props : 'Propiedades generales',
-advanced_props : 'Propiedades avanzadas',
-desc : 'Insertar/Modificar tabla',
-row_before_desc : 'Insertar una fila antes',
-row_after_desc : 'Insert una fila despu&eacute;s',
-delete_row_desc : 'Eliminar fila',
-col_before_desc : 'Insertar una columna antes',
-col_after_desc : 'Insertar una columna despu&eacute;s',
-delete_col_desc : 'Eliminar columna',
-rowtype : 'File en parte de tabla',
-title : 'Insertar/Modificar tabla',
-width : 'Ancho',
-height : 'ALto',
-cols : 'Columnas',
-rows : 'Filas',
-cellspacing : 'Espacio entre celdas',
-cellpadding : 'Borde interior de las celdas',
-border : 'Borde',
-align : 'Alineaci&oacute;n horizontal',
-align_default : 'Defecto',
-align_left : 'Izquierda',
-align_right : 'Derecha',
-align_middle : 'Centrado',
-row_title : 'Propiedades de la fila',
-cell_title : 'Propiedades de la celda',
-cell_type : 'Tipo de celda',
-row_desc : 'Propiedades de la fila',
-cell_desc : 'Propiedades de la celda',
-valign : 'Alineaci&oacute;n vertical',
-align_top : 'Arriba',
-align_bottom : 'Abajo',
-props_desc : 'Propiedades de la tabla',
-bordercolor : 'Color del borde',
-bgcolor : 'Color del fondo',
-merge_cells_title : 'Combinar celdas',
-split_cells_desc : 'Dividir celdas',
-merge_cells_desc : 'Combinar celdas',
-cut_row_desc : 'Cortar fila',
-copy_row_desc : 'Copiar fila',
-paste_row_before_desc : 'Pegar fila antes',
-paste_row_after_desc : 'Pegar fila despu&eacute;s',
-id : 'Id',
-style: 'Estilo',
-langdir : 'Direcci&oacute;n del texto',
-langcode : 'C&oacute;digo del idioma',
-mime : 'Tipo MIME del target',
-ltr : 'De izquierda a derecha',
-rtl : 'De derecha a izquierda',
-bgimage : 'Imagen de fondo',
-summary : 'Resumen',
-td : "Datos",
-th : "Cabecera",
-cell_cell : 'Actualizar la celda actual',
-cell_row : 'Actualizar todas las celdas de la fila',
-cell_all : 'Actualizar todas las celdas de la tabla',
-row_row : 'Actualizar la fila actual',
-row_odd : 'Actualizar las filas impares de la tabla',
-row_even : 'Actualizar las filas pares de la tabla',
-row_all : 'Actualizar todas las filas de la tabla',
-thead : 'Cabecera de la tabla',
-tbody : 'Cuerpo de la tabla',
-tfoot : 'Pie de la tabla',
-del : 'Eliminar tabla',
-scope : 'Alcance',
-row : 'Fila',
-col : 'Columna',
-rowgroup : 'Grupo de filas',
-colgroup : 'Grupo de columnas',
-missing_scope: '&#191;Est&aacute;s seguro que quieres continuar sin especificar el alcance para esta celda de tipo cabecera? Sin ello, puede dificultar a algunos usuarios con discapacidades el poder entender el contenido o los datos mostrados en la tabla.',
-cellprops_delta_width : 55
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm	2006-11-07 04:01:10.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,24 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_table_merge_cells_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/merge_cells.js"></script>
-	<base target="_self" />
+	<title>{#table_dlg.merge_cells_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/validate.js"></script>
+	<script type="text/javascript" src="js/merge_cells.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="margin: 8px" style="display: none">
-<form onsubmit="insertTable();return false;" action="#">
+<body style="margin: 8px">
+<form onsubmit="mergeCells();return false;" action="#">
 	<fieldset>
-		<legend>{$lang_table_merge_cells_title}</legend>
+		<legend>{#table_dlg.merge_cells_title}</legend>
 		  <table border="0" cellpadding="0" cellspacing="3" width="100%">
 			  <tr>
-				<td>{$lang_table_cols}:</td>
-				<td align="right"><input type="text" name="numcols" value="" class="number min1" style="width: 30px" /></td>
-				<td>
+				<td>{#table_dlg.cols}:</td>
+				<td align="right"><input type="text" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" /></td>
 			  </tr>
 			  <tr>
-				<td>{$lang_table_rows}:</td>
+				<td>{#table_dlg.rows}:</td>
 				<td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
 			  </tr>
 		  </table>
@@ -26,11 +25,11 @@
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="mergeCells();" />
+			<input type="submit" id="insert" name="insert" value="{#update}" />
 		</div>
 
 		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 		</div>
 	</div>
 </form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/row.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/row.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/row.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/row.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,74 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_table_row_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/row.js"></script>
+	<title>{#table_dlg.row_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script type="text/javascript" src="js/row.js"></script>
 	<link href="css/row.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body id="tablerow" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-	<form onsubmit="updateAction();return false;">
+<body id="tablerow" style="display: none">
+	<form onsubmit="updateAction();return false;" action="#">
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
 				<fieldset>
-					<legend>{$lang_table_general_props}</legend>
+					<legend>{#table_dlg.general_props}</legend>
 
 					<table border="0" cellpadding="4" cellspacing="0">
 						<tr>
-							<td><label for="rowtype">{$lang_table_rowtype}</label></td>
+							<td><label for="rowtype">{#table_dlg.rowtype}</label></td>
 							<td class="col2">
-								<select id="rowtype" name="rowtype">
-									<option value="thead">{$lang_table_thead}</option>
-									<option value="tbody">{$lang_table_tbody}</option>
-									<option value="tfoot">{$lang_table_tfoot}</option>
+								<select id="rowtype" name="rowtype" class="mceFocus">
+									<option value="thead">{#table_dlg.thead}</option>
+									<option value="tbody">{#table_dlg.tbody}</option>
+									<option value="tfoot">{#table_dlg.tfoot}</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="align">{$lang_table_align}</label></td>
+							<td><label for="align">{#table_dlg.align}</label></td>
 							<td class="col2">
 								<select id="align" name="align">
-									<option value="">{$lang_not_set}</option>
-									<option value="center">{$lang_table_align_middle}</option>
-									<option value="left">{$lang_table_align_left}</option>
-									<option value="right">{$lang_table_align_right}</option>
+									<option value="">{#not_set}</option>
+									<option value="center">{#table_dlg.align_middle}</option>
+									<option value="left">{#table_dlg.align_left}</option>
+									<option value="right">{#table_dlg.align_right}</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="valign">{$lang_table_valign}</label></td>
+							<td><label for="valign">{#table_dlg.valign}</label></td>
 							<td class="col2">
 								<select id="valign" name="valign">
-									<option value="">{$lang_not_set}</option>
-									<option value="top">{$lang_table_align_top}</option>
-									<option value="middle">{$lang_table_align_middle}</option>
-									<option value="bottom">{$lang_table_align_bottom}</option>
+									<option value="">{#not_set}</option>
+									<option value="top">{#table_dlg.align_top}</option>
+									<option value="middle">{#table_dlg.align_middle}</option>
+									<option value="bottom">{#table_dlg.align_bottom}</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr id="styleSelectRow">
-							<td><label for="class">{$lang_class_name}</label></td>
+							<td><label for="class">{#class_name}</label></td>
 							<td class="col2">
-								<select id="class" name="class">
-									<option value="" selected="selected">{$lang_not_set}</option>
+								<select id="class" name="class" class="mceEditableSelect">
+									<option value="" selected="selected">{#not_set}</option>
 								</select>
 							</td>
 						</tr>
 
 						<tr>
-							<td><label for="height">{$lang_table_height}</label></td>
+							<td><label for="height">{#table_dlg.height}</label></td>
 							<td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
 						</tr>
 					</table>
@@ -77,39 +78,39 @@
 
 			<div id="advanced_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_table_advanced_props}</legend>
+					<legend>{#table_dlg.advanced_props}</legend>
 
 					<table border="0" cellpadding="0" cellspacing="4">
 						<tr>
-							<td class="column1"><label for="id">{$lang_table_id}</label></td> 
+							<td class="column1"><label for="id">{#table_dlg.id}</label></td> 
 							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
 						</tr>
 
 						<tr>
-							<td><label for="style">{$lang_table_style}</label></td>
+							<td><label for="style">{#table_dlg.style}</label></td>
 							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+							<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> 
 							<td>
 								<select id="dir" name="dir" style="width: 200px"> 
-										<option value="">{$lang_not_set}</option> 
-										<option value="ltr">{$lang_table_ltr}</option> 
-										<option value="rtl">{$lang_table_rtl}</option> 
+										<option value="">{#not_set}</option> 
+										<option value="ltr">{#table_dlg.ltr}</option> 
+										<option value="rtl">{#table_dlg.rtl}</option> 
 								</select>
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 
+							<td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> 
 							<td>
 								<input id="lang" name="lang" type="text" value="" style="width: 200px" />
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+							<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -121,7 +122,7 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+							<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -139,19 +140,19 @@
 		<div class="mceActionPanel">
 			<div>
 				<select id="action" name="action">
-					<option value="row">{$lang_table_row_row}</option>
-					<option value="odd">{$lang_table_row_odd}</option>
-					<option value="even">{$lang_table_row_even}</option>
-					<option value="all">{$lang_table_row_all}</option>
+					<option value="row">{#table_dlg.row_row}</option>
+					<option value="odd">{#table_dlg.row_odd}</option>
+					<option value="even">{#table_dlg.row_even}</option>
+					<option value="all">{#table_dlg.row_all}</option>
 				</select>
 			</div>
 
 			<div style="float: left">
-				<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+				<div><input type="submit" id="insert" name="insert" value="{#update}" /></div>
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
 	</form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/table.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/table.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/table.htm	2007-08-28 09:57:30.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/table/table.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,67 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_table_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/table.js"></script>
+	<title>{#table_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script type="text/javascript" src="../../utils/validate.js"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script type="text/javascript" src="js/table.js"></script>
 	<link href="css/table.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body id="table" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="table" style="display: none">
 	<form onsubmit="insertTable();return false;" action="#">
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
 				<fieldset>
-					<legend>{$lang_table_general_props}</legend>
-
+					<legend>{#table_dlg.general_props}</legend>
 					  <table border="0" cellpadding="4" cellspacing="0" width="100%">
 							  <tr>
-								<td><label id="colslabel" for="cols">{$lang_table_cols}</label></td>
-								<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
-								<td><label id="rowslabel" for="rows">{$lang_table_rows}</label></td>
+								<td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>
+								<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" /></td>
+								<td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>
 								<td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
 							  </tr>
 							  <tr>
-								<td><label id="cellpaddinglabel" for="cellpadding">{$lang_table_cellpadding}</label></td>
+								<td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>
 								<td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
-								<td><label id="cellspacinglabel" for="cellspacing">{$lang_table_cellspacing}</label></td>
+								<td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>
 								<td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
 							  </tr>
 							  <tr>
-								<td><label id="alignlabel" for="align">{$lang_table_align}</label></td>
+								<td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>
 								<td><select id="align" name="align">
-									<option value="">{$lang_not_set}</option>
-									<option value="center">{$lang_table_align_middle}</option>
-									<option value="left">{$lang_table_align_left}</option>
-									<option value="right">{$lang_table_align_right}</option>
+									<option value="">{#not_set}</option>
+									<option value="center">{#table_dlg.align_middle}</option>
+									<option value="left">{#table_dlg.align_left}</option>
+									<option value="right">{#table_dlg.align_right}</option>
 								  </select></td>
-								<td><label id="borderlabel" for="border">{$lang_table_border}</label></td>
+								<td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>
 								<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
 							  </tr>
 							  <tr id="width_row">
-								<td><label id="widthlabel" for="width">{$lang_table_width}</label></td>
+								<td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>
 								<td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
-								<td><label id="heightlabel" for="height">{$lang_table_height}</label></td>
+								<td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>
 								<td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
 							  </tr>
 							  <tr id="styleSelectRow">
-								<td><label id="classlabel" for="class">{$lang_class_name}</label></td>
+								<td><label id="classlabel" for="class">{#class_name}</label></td>
 								<td colspan="3">
-								 <select id="class" name="class">
-									<option value="" selected>{$lang_not_set}</option>
+								 <select id="class" name="class" class="mceEditableSelect">
+									<option value="" selected="selected">{#not_set}</option>
 								 </select></td>
 							  </tr>
 							  <tr>
-								<td class="column1"><label for="caption">{$lang_table_caption}</label></td> 
+								<td class="column1"><label for="caption">{#table_dlg.caption}</label></td> 
 								<td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td> 
 							  </tr>
 							</table>
@@ -70,44 +70,33 @@
 
 			<div id="advanced_panel" class="panel">
 				<fieldset>
-					<legend>{$lang_table_advanced_props}</legend>
+					<legend>{#table_dlg.advanced_props}</legend>
 
 					<table border="0" cellpadding="0" cellspacing="4">
 						<tr>
-							<td class="column1"><label for="id">{$lang_table_id}</label></td> 
+							<td class="column1"><label for="id">{#table_dlg.id}</label></td> 
 							<td><input id="id" name="id" type="text" value="" class="advfield" /></td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="summary">{$lang_table_summary}</label></td> 
+							<td class="column1"><label for="summary">{#table_dlg.summary}</label></td> 
 							<td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> 
 						</tr>
 
 						<tr>
-							<td><label for="style">{$lang_table_style}</label></td>
+							<td><label for="style">{#table_dlg.style}</label></td>
 							<td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
-							<td>
-								<select id="dir" name="dir" class="advfield"> 
-										<option value="">{$lang_not_set}</option> 
-										<option value="ltr">{$lang_table_ltr}</option> 
-										<option value="rtl">{$lang_table_rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="langlabel" for="lang">{$lang_table_langcode}</label></td> 
+							<td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td> 
 							<td>
 								<input id="lang" name="lang" type="text" value="" class="advfield" />
 							</td> 
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+							<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -119,7 +108,50 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 
+							<td class="column1"><label for="frame">{#table_dlg.frame}</label></td> 
+							<td>
+								<select id="frame" name="frame" class="advfield"> 
+										<option value="">{#not_set}</option>
+										<option value="void">{#table_dlg.rules_void}</option>
+										<option value="above">{#table_dlg.rules_above}</option> 
+										<option value="below">{#table_dlg.rules_below}</option> 
+										<option value="hsides">{#table_dlg.rules_hsides}</option> 
+										<option value="lhs">{#table_dlg.rules_lhs}</option> 
+										<option value="rhs">{#table_dlg.rules_rhs}</option> 
+										<option value="vsides">{#table_dlg.rules_vsides}</option> 
+										<option value="box">{#table_dlg.rules_box}</option> 
+										<option value="border">{#table_dlg.rules_border}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="rules">{#table_dlg.rules}</label></td> 
+							<td>
+								<select id="rules" name="rules" class="advfield"> 
+										<option value="">{#not_set}</option> 
+										<option value="none">{#table_dlg.frame_none}</option>
+										<option value="groups">{#table_dlg.frame_groups}</option>
+										<option value="rows">{#table_dlg.frame_rows}</option>
+										<option value="cols">{#table_dlg.frame_cols}</option>
+										<option value="all">{#table_dlg.frame_all}</option>
+									</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> 
+							<td>
+								<select id="dir" name="dir" class="advfield"> 
+										<option value="">{#not_set}</option> 
+										<option value="ltr">{#table_dlg.ltr}</option> 
+										<option value="rtl">{#table_dlg.rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -131,7 +163,7 @@
 						</tr>
 
 						<tr>
-							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+							<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> 
 							<td>
 								<table border="0" cellpadding="0" cellspacing="0">
 									<tr>
@@ -148,11 +180,11 @@
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertTable();" />
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
 	</form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/blank.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/blank.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/blank.htm	2007-08-28 09:57:30.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/blank.htm	2009-06-30 22:01:34.000000000 +0200
@@ -3,18 +3,7 @@
 	<title>blank_page</title>
 	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 	<script type="text/javascript">
-		var tinyMCE = parent.tinyMCE, css = tinyMCE.getParam("content_css").split(','), i, u;
-
-		// Load content CSS files
-		for (i=0; i<css.length; i++) {
-			u = css[i];
-
-			// Fix relative
-			if (u.charAt(0) != '/' && u.indexOf('://') == -1)
-				u = tinyMCE.documentBasePath + "/" + u;
-
-			document.write('<link href="' + u + '" rel="stylesheet" type="text/css" />');
-		}
+		parent.TemplateDialog.loadCSSFiles(document);
 	</script>
 </head>
 <body id="mceTemplatePreview" class="mceContentBody">
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/css/template.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/css/template.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/css/template.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/css/template.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,23 +1,23 @@
-#frmbody {
-	padding: 10px;
-	background-color: #FFF;
-	border: 1px solid #CCC;
-}
-
-.frmRow {
-	margin-bottom: 10px;
-}
-
-#templatesrc {
-	border: none;
-	width: 320px;
-	height: 240px;
-}
-
-.title {
-	padding-bottom: 5px;
-}
-
-.mceActionPanel {
-	padding-top: 5px;
-}
+#frmbody {
+	padding: 10px;
+	background-color: #FFF;
+	border: 1px solid #CCC;
+}
+
+.frmRow {
+	margin-bottom: 10px;
+}
+
+#templatesrc {
+	border: none;
+	width: 320px;
+	height: 240px;
+}
+
+.title {
+	padding-bottom: 5px;
+}
+
+.mceActionPanel {
+	padding-top: 5px;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js	2007-02-23 06:07:06.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('template');var TinyMCE_TemplatePlugin={getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){var cdate,mdate,content,x=0,key,value,rvals,ds=inst.getData('template');cdate=tinyMCE.getParam("template_cdate_classes",'').split(/\s+/);mdate=tinyMCE.getParam("template_mdate_classes",'').split(/\s+/);content=tinyMCE.getParam("template_selected_content_classes",'').split(/\s+/);for(x=0;x<cdate.length;x++)TinyMCE_TemplatePlugin.functions[cdate[x]]=TinyMCE_TemplatePlugin.functions['cdate'];for(x=0;x<mdate.length;x++)TinyMCE_TemplatePlugin.functions[mdate[x]]=TinyMCE_TemplatePlugin.functions['mdate'];for(x=0;x<content.length;x++)TinyMCE_TemplatePlugin.functions[content[x]]=TinyMCE_TemplatePlugin.functions['selectedContent'];rvals=tinyMCE.getParam("template_replace_values",false);for(key in rvals){value=rvals[key];if(typeof value=="function")TinyMCE_TemplatePlugin.functions[key]=value;else TinyMCE_TemplatePlugin.functions[key]=TinyMCE_TemplatePlugin.functions['generateReplacer'](value)}rvals=tinyMCE.getParam("template_replace_values",false);ds.replace_items={};for(key in rvals)ds.replace_items[key]=rvals[key];inst.addShortcut('ctrl','t','lang_template_desc','mceTemplate');ds.currentAction="insert";ds.currentTmplNode=null},getControlHTML:function(cn){switch(cn){case"template":return tinyMCE.getButtonHTML(cn,'lang_template_desc','{$pluginurl}/images/template.gif','mceTemplate',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var nodeArray,current,newTmpl,x,inst=tinyMCE.getInstanceById(editor_id),ds=inst.getData('template'),telm;switch(command){case"mceTemplate":if(user_interface){tinyMCE.openWindow({file:'../../plugins/template/template.htm',width:tinyMCE.getParam('template_popup_width',750),height:tinyMCE.getParam('template_popup_height',600)},{editor_id:editor_id,resizable:"yes",scrollbars:"no",pluginObj:TinyMCE_TemplatePlugin})}else{telm=TinyMCE_TemplatePlugin._convertToNode(value.body);nodeArray=tinyMCE.selectElements(telm,'div',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});telm=nodeArray.length>0?nodeArray[0]:null;nodeArray=[];if(ds.currentAction=="insert"){if(telm){tinyMCE.execCommand('mceBeginUndoLevel');ds.currentAction="insert-new";TinyMCE_TemplatePlugin._insertTemplate(editor_id,telm,value.title,value.tsrc,true);ds.currentAction=="insert";tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}else tinyMCE.execCommand('mceInsertContent',false,this._replaceValues(value.body))}else{nodeArray=TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);current=[];newTmpl=[];tinyMCE.getNodeTree(telm,newTmpl);for(x=0;x<nodeArray.length;x++)tinyMCE.getNodeTree(nodeArray[x],current);var _test=function(elm){var replaced=true;if(elm.className){var names=elm.className.split(/\s+/),c,n;for(c=0;c<names.length;c++){if(names[c].match(/^mce/i))continue;for(n=0;n<newTmpl.length;n++){replaced=false;if(newTmpl[n].className&&newTmpl[n].className.match(new RegExp(names[c],"gi"))){newTmpl[n].innerHTML=elm.innerHTML;replaced=true;break}}}}return replaced};var cont=true;var asked=false;for(x=0;x<current.length;x++){if(!_test(current[x])){cont=(asked||confirm("The new template has less elements than the currently selected content.\nIf you proceed you will loose content.\nAre you sure you want to proceed?","Proceed?"));asked=true;if(!cont)break}};if(cont){tinyMCE.execCommand('mceBeginUndoLevel');TinyMCE_TemplatePlugin._replaceTemplateContent(current[0],editor_id,telm,value.title,value.tsrc);tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}}tinyMCE.triggerNodeChange(true)}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id),ds=inst.getData('template');if(tinyMCE.hasCSSClass(node,TinyMCE_TemplatePlugin.TMPL_ELEMENT)||tinyMCE.hasCSSClass(node.parentNode,TinyMCE_TemplatePlugin.TMPL_ELEMENT)){tinyMCE.switchClass(editor_id+'_template','mceButtonSelected');ds.currentAction="update";ds.currentTmplNode=node;return true}ds.currentAction="insert";ds.currentTmplNode=null;tinyMCE.switchClass(editor_id+'_template','mceButtonNormal');return false},cleanup:function(type,content,inst){var nodes=[];switch(type){case"get_from_editor":content=content.replace(new RegExp('<div class="'+TinyMCE_TemplatePlugin.TMPL+'">','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_BEGINS+' -->');content=content.replace(new RegExp('<div class="'+TinyMCE_TemplatePlugin.TMPL+'">(\s|&nbsp;|&#160;)?(<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->|\s)?</div>','gi'),'');content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->');break;case"insert_to_editor":content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_BEGINS+' -->','gi'),'<div class="'+TinyMCE_TemplatePlugin.TMPL+'">');content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>');break;case"get_from_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break;case"insert_to_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break}return content},_convertToNode:function(html){var elm=document.createElement('div');elm.innerHTML=html;return elm},_prepareTemplateContent:function(elms){var x,n,nodes=[];if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x<elms.length;x++)tinyMCE.getNodeTree(elms[x],nodes,1);for(n=0;n<nodes.length;n++){tinyMCE.addCSSClass(nodes[n],TinyMCE_TemplatePlugin.TMPL_ELEMENT);TinyMCE_TemplatePlugin._applyFunctions(nodes[n],TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)}return elms},_replaceValues:function(s){var t=this,ds=tinyMCE.selectedInstance.getData('template');return s.replace(/\{\$([^\}]+)\}/g,function(a,b){var it=ds.replace_items[b];if(it){if(typeof(it)!='function')return it}return b})},_applyFunctions:function(elms,editor_event){var x,elm,names,c,f;if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x<elms.length;x++){elm=elms[x];if(elm.className){names=elm.className.split(/\s+/);for(c=0;c<names.length;c++){if(names[c]==TinyMCE_TemplatePlugin.TMPL_ELEMENT)continue;f=(TinyMCE_TemplatePlugin.functions[names[c]]?TinyMCE_TemplatePlugin.functions[names[c]]:TinyMCE_TemplatePlugin.functions['blank']);f(elm,editor_event)}}}return elms},_collectTemplateElements:function(node){var nodeArray=[],p;p=tinyMCE.getParentElement(node,'DIV',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});if(p)tinyMCE.getNodeTree(p,nodeArray);return nodeArray},_replaceTemplateContent:function(currentNode,editor_id,newTemplate,title,tsrc){TinyMCE_TemplatePlugin._deleteTemplateContent(currentNode);TinyMCE_TemplatePlugin._insertTemplate(editor_id,newTemplate,title,tsrc,false)},_deleteTemplateContent:function(node){var p=tinyMCE.getParentElement(node,'DIV',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});if(p)p.parentNode.removeChild(p,true)},_insertTemplate:function(editor_id,elm,title,tsrc,incComments){var html;TinyMCE_TemplatePlugin._prepareTemplateContent(elm);html='<div class="'+TinyMCE_TemplatePlugin.TMPL+'">';html+=elm.innerHTML;html+='<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,html)},functions:{blank:function(elm,editor_event){},cdate:function(elm,editor_event){var d,dsrc;if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;d=new Date();dsrc=elm.innerHTML.match(new RegExp("<!-- "+TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR+":(.*)  -->","gi"));if(dsrc)d=new Date(RegExp.$1);elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_cdate_format",tinyMCE.getLang("lang_template_def_date_format")));elm.innerHTML+="<!-- "+TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR+":"+d.toUTCString()+"  -->"},mdate:function(elm,editor_event){var d=new Date();elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_mdate_format",tinyMCE.getLang("lang_template_def_date_format")))},selectedContent:function(elm,editor_event){var ds=tinyMCE.selectedInstance.getData('template');if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;if(ds.currentAction=="insert-new"&&!tinyMCE.hasCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)){elm.innerHTML=tinyMCE.selectedInstance.selection.getSelectedHTML();tinyMCE.addCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)}},generateReplacer:function(s){return function(elm,editor_event){elm.innerHTML=""+s}}},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length<len){for(i=0;i<(len-value.length);i++)value="0"+value}return value}fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_template_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_template_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_template_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_template_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt},TMPL_ELEMENT:'mceTmplElm',TMPL:'mceTmpl',TMPL_BEGINS:'mceTmplBegins',TMPL_SEL_HTML_DONE:'mceSelHTMLDone',TMPL_ENDS:'mceTmplEnds',TMPL_DATE_SRC_ATTR:'mcetmpldtesrc',TMPL_TEMPLATE_EVENT:'prepare_template'};tinyMCE.addPlugin("template",TinyMCE_TemplatePlugin);
\ No hay ningún carácter de nueva línea al final del fichero
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length<d){for(f=0;f<(d-g.length);f++){g="0"+g}}return g}b=b.replace("%D","%m/%d/%y");b=b.replace("%r","%I:%M:%S %p");b=b.replace("%Y",""+e.getFullYear());b=b.replace("%y",""+e.getYear());b=b.replace("%m",c(e.getMonth()+1,2));b=b.replace("%d",c(e.getDate(),2));b=b.replace("%H",""+c(e.getHours(),2));b=b.replace("%M",""+c(e.getMinutes(),2));b=b.replace("%S",""+c(e.getSeconds(),2));b=b.replace("%I",""+((e.getHours()+11)%12+1));b=b.replace("%p",""+(e.getHours()<12?"AM":"PM"));b=b.replace("%B",""+tinyMCE.getLang("template_months_long").split(",")[e.getMonth()]);b=b.replace("%b",""+tinyMCE.getLang("template_months_short").split(",")[e.getMonth()]);b=b.replace("%A",""+tinyMCE.getLang("template_day_long").split(",")[e.getDay()]);b=b.replace("%a",""+tinyMCE.getLang("template_day_short").split(",")[e.getDay()]);b=b.replace("%%","%");return b}});tinymce.PluginManager.add("template",tinymce.plugins.TemplatePlugin)})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,551 +1,156 @@
-/**
- * $Id: editor_plugin_src.js 162 2007-01-03 16:16:52Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright  2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-tinyMCE.importPluginLanguagePack('template');
-
-var TinyMCE_TemplatePlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Template plugin',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://www.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		var cdate, mdate, content, x = 0, key, value, rvals, ds = inst.getData('template');
-
-		// ensure the required elements and sttributes are added
-		//inst.cleanup.addRuleStr('*[' + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + '],div[title,tsrc]');
-
-		//setup template content functions
-		// creation date and modified date classes
-		cdate = tinyMCE.getParam("template_cdate_classes", '').split(/\s+/);
-		mdate = tinyMCE.getParam("template_mdate_classes", '').split(/\s+/);
-
-		// classes that specify where selected content should go
-		content = tinyMCE.getParam("template_selected_content_classes", '').split(/\s+/);
-
-		for (x = 0; x < cdate.length; x++)
-			TinyMCE_TemplatePlugin.functions[cdate[x]] = TinyMCE_TemplatePlugin.functions['cdate'];
-
-		for (x = 0; x < mdate.length; x++)
-			TinyMCE_TemplatePlugin.functions[mdate[x]] = TinyMCE_TemplatePlugin.functions['mdate'];
-
-		for (x = 0; x < content.length; x++)
-			TinyMCE_TemplatePlugin.functions[content[x]] = TinyMCE_TemplatePlugin.functions['selectedContent'];
-
-		// special template functions for replacing template content
-		rvals = tinyMCE.getParam("template_replace_values", false);
-		for (key in rvals) {
-			value = rvals[key];
-
-			if (typeof value == "function")
-				TinyMCE_TemplatePlugin.functions[key] = value;
-			else
-				TinyMCE_TemplatePlugin.functions[key] = TinyMCE_TemplatePlugin.functions['generateReplacer'](value);
-		}
-
-		// Setup replace_items
-		rvals = tinyMCE.getParam("template_replace_values", false);
-		ds.replace_items = {};
-
-		for (key in rvals)
-			ds.replace_items[key] = rvals[key];
-
-		inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate');
-
-		// Setup data storage
-		ds.currentAction = "insert";
-		ds.currentTmplNode = null;
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "template":
-				return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true);
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		var nodeArray, current, newTmpl, x, inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template'), telm;
-
-		switch (command) {
-			case "mceTemplate":
-				if (user_interface) {
-					// called from toolbar button - show the popup
-					tinyMCE.openWindow({
-						file : '../../plugins/template/template.htm', // Relative to theme
-						width : tinyMCE.getParam('template_popup_width', 750),
-						height : tinyMCE.getParam('template_popup_height', 600)
-					}, {editor_id : editor_id, resizable : "yes", scrollbars : "no", pluginObj : TinyMCE_TemplatePlugin});
-				} else {
-					// internal command do the template stuff
-
-					// get the returned HTML string from the pop-up and appened it to a DIV element
-					telm = TinyMCE_TemplatePlugin._convertToNode(value.body);
-
-					// Find template body
-					nodeArray = tinyMCE.selectElements(telm, 'div', function(n) {
-						return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);
-					});
-
-					telm = nodeArray.length > 0 ? nodeArray[0] : null;
-					nodeArray = [];
-
-					if (ds.currentAction == "insert") {
-						//insert new template after applying all the template content functions
-
-						// Is it a template or snippet
-						if (telm) {
-							tinyMCE.execCommand('mceBeginUndoLevel');
-							ds.currentAction = "insert-new";
-							TinyMCE_TemplatePlugin._insertTemplate(editor_id, telm, value.title, value.tsrc, true);
-							ds.currentAction == "insert";
-							tinyMCE.execCommand('mceEndUndoLevel');
-							tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false);
-						} else
-							tinyMCE.execCommand('mceInsertContent', false, this._replaceValues(value.body));
-					} else {
-						// First collect the selected template in the editor
-						nodeArray = TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);
-						current = [];
-						newTmpl = [];
-						tinyMCE.getNodeTree(telm, newTmpl);
-
-						for (x=0; x<nodeArray.length; x++)
-							tinyMCE.getNodeTree(nodeArray[x], current);
-
-						/**
-						 * inner function used in the loop below.
-						 * compares the supplied HTML element to the new template to:
-						 * - find a match with the new template and copy the element's content over
-						 * - find no match and indicate content will be lost
-						 */
-						var _test = function(elm) {
-							var replaced = true;
-
-							if (elm.className) {
-								var names = elm.className.split(/\s+/), c, n;
-
-								for (c = 0; c<names.length; c++) {
-									if (names[c].match(/^mce/i))
-										continue; // ignore all internal class names
-
-									for (n=0; n<newTmpl.length; n++){
-										replaced = false;
-
-										if (newTmpl[n].className && newTmpl[n].className.match(new RegExp(names[c], "gi"))) {
-											newTmpl[n].innerHTML = elm.innerHTML;
-											//if(tinyMCE.getAttrib(elm,TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR,"") != "") {
-											//	tinyMCE.setAttrib(newTmpl[n], TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR, tinyMCE.getAttrib(elm,TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR));
-											//}
-											replaced = true;
-											break;
-										}
-
-									}
-								}
-							}
-
-							return replaced;
-						};
-
-						// comparison loop - first mis-match alerts user for confirmation.
-						var cont = true;
-						var asked = false;
-
-						for (x = 0; x < current.length; x++) {
-							if(!_test(current[x])) {
-								cont = (asked || confirm("The new template has less elements than the currently selected content.\nIf you proceed you will loose content.\nAre you sure you want to proceed?", "Proceed?"));
-								asked = true;
-
-								if (!cont)
-									break;
-							}
-						};
-
-						// apply replacement if allowed to
-						if (cont) {
-							tinyMCE.execCommand('mceBeginUndoLevel');
-							TinyMCE_TemplatePlugin._replaceTemplateContent(current[0], editor_id, telm, value.title, value.tsrc);
-							tinyMCE.execCommand('mceEndUndoLevel');
-							tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false);
-						}
-					}
-
-					tinyMCE.triggerNodeChange(true);
-				}
-
-				return true;
-		}
-
-		return false;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		var inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template');
-
-		if (tinyMCE.hasCSSClass(node, TinyMCE_TemplatePlugin.TMPL_ELEMENT) || tinyMCE.hasCSSClass(node.parentNode, TinyMCE_TemplatePlugin.TMPL_ELEMENT)) {
-			tinyMCE.switchClass(editor_id + '_template', 'mceButtonSelected');
-			ds.currentAction = "update";
-			ds.currentTmplNode = node;
-
-			return true;
-		}
-
-		ds.currentAction = "insert";
-		ds.currentTmplNode = null;
-		tinyMCE.switchClass(editor_id + '_template', 'mceButtonNormal');
-
-		return false;
-	},
-
-	cleanup : function(type, content, inst) {
-		var nodes = [];
-
-		switch (type) {
-			case "get_from_editor":
-				// replace the opening wrapper div tag with a HTML comment
-				content = content.replace(
-					new RegExp('<div class="' + TinyMCE_TemplatePlugin.TMPL + '">', 'gi'),
-					'<!-- ' + TinyMCE_TemplatePlugin.TMPL_BEGINS + ' -->'
-				);
-
-				// delete any empty template wrappers
-				content = content.replace(
-					new RegExp('<div class="' + TinyMCE_TemplatePlugin.TMPL + '">(\s|&nbsp;|&#160;)?(<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->|\s)?</div>', 'gi'),
-					''
-				);
-
-				// replace the closing wrapper tag
-				content = content.replace(
-					new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>', 'gi'),
-					'<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->'
-				);
-
-				break;
-
-			case "insert_to_editor":
-				// replace HTML comment with DIV wrapper
-				content = content.replace(
-					new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_BEGINS + ' -->', 'gi'),
-					'<div class="' + TinyMCE_TemplatePlugin.TMPL + '">'
-				);
-
-				content = content.replace(
-					new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->', 'gi'),
-					'<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>'
-				);
-
-				break;
-
-			case "get_from_editor_dom":
-				// apply template content replacement functions
-				nodes = tinyMCE.selectNodes(content, function(n) {
-						return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT);
-					}
-				);
-
-				TinyMCE_TemplatePlugin._applyFunctions(nodes, type);
-
-				break;
-
-			case "insert_to_editor_dom":
-				// apply template content replacement functions
-				nodes = tinyMCE.selectNodes(content, function(n) {
-						return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT);
-					}
-				);
-
-				TinyMCE_TemplatePlugin._applyFunctions(nodes, type);
-
-				break;
-		}
-
-		return content;
-	},
-
-	// Private plugin internal methods
-
-	/**
-	 * Creates a HTML DIV element and sets the innerHTML to equal the temlate innerHTML so that the template can be manipulated as DOM nodes.
-	 *
-	 * @param {string} Template innerHTML
-	 * @return a HTML Element
-	 * @type HTMLElement
-	 */
-	_convertToNode : function(html) {
-		var elm = document.createElement('div');
-
-		elm.innerHTML = html;
-
-		return elm;
-	},
-
-	/**
-	 * pass an array of template html elements and they will have the template class name added and any template functions applied
-	 *
-	 * @param {array} template HTML elements
-	 * @return array of template HTML elements
-	 * @type array
-	 */
-	_prepareTemplateContent : function(elms) {
-		var x, n, nodes = [];
-
-		if (!elms)
-			return {};
-
-		if (!elms.length)
-			elms = [elms];
-
-		for (x = 0; x<elms.length; x++)
-			tinyMCE.getNodeTree(elms[x], nodes, 1);
-
-		for (n = 0; n<nodes.length; n++) {
-			tinyMCE.addCSSClass(nodes[n], TinyMCE_TemplatePlugin.TMPL_ELEMENT);
-			TinyMCE_TemplatePlugin._applyFunctions(nodes[n], TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT);
-		}
-
-		return elms;
-	},
-
-	_replaceValues : function(s) {
-		var t = this, ds = tinyMCE.selectedInstance.getData('template');
-
-		return s.replace(/\{\$([^\}]+)\}/g, function(a, b) {
-			var it = ds.replace_items[b];
-
-			if (it) {
-				// Only supports text for now
-				if (typeof(it) != 'function')
-					return it;
-			}
-
-			return b;
-		});
-	},
-
-	/**
-	 * Applies any special functions to the template elements
-	 *
-	 * @param {array} template HTML elements
-	 * @return array of template HTML elements
-	 * @type array
-	 */
-	_applyFunctions : function(elms, editor_event) {
-		var x, elm, names, c, f;
-
-		if (!elms)
-			return {};
-
-		if (!elms.length)
-			elms = [elms];
-
-		for(x = 0; x < elms.length; x++) {
-			elm = elms[x];
-
-			if (elm.className){
-				names = elm.className.split(/\s+/);
-
-				for (c = 0; c < names.length; c++){
-					if (names[c] == TinyMCE_TemplatePlugin.TMPL_ELEMENT)
-						continue;
-
-					f = (TinyMCE_TemplatePlugin.functions[names[c]] ? TinyMCE_TemplatePlugin.functions[names[c]] : TinyMCE_TemplatePlugin.functions['blank']);
-					f(elm, editor_event);
-				}
-			}
-		}
-
-		return elms;
-	},
-
-	/**
-	 * Given one node reference this function will collect all the nodes of the template to which it belongs.
-	 * It does this by finding the parent template wrapper DIV and returning all child nodes.
-	 *
-	 * @param {HTMLElement} a HTMLElement which is part of a template
-	 * @return array of template HTML elements
-	 * @type array
-	 */
-	_collectTemplateElements : function(node) {
-		var nodeArray = [], p;
-
-		p = tinyMCE.getParentElement(node, 'DIV', function(n) {
-			return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);
-		});
-
-		if (p)
-			tinyMCE.getNodeTree(p, nodeArray);
-
-		return nodeArray;
-	},
-
-	/**
-	 * Simply calls TinyMCE_TemplatePlugin._deleteTemplateContent and then TinyMCE_TemplatePlugin._insertTemplate
-	 *
-	 * @param {HTMLElement} currently selected template node in editor
-	 * @param {string} id of editor instance
-	 * @param {HTMLElement} template contents as a HTMLElement (the parent DIV wrapper)
-	 * @param {string} title of template (unused as yet)
-	 * @param {string} source URI of the template file (unused as yet)
-	 * @return array of template HTML elements
-	 * @type array
-	 */
-	_replaceTemplateContent : function(currentNode, editor_id, newTemplate, title, tsrc) {
-		TinyMCE_TemplatePlugin._deleteTemplateContent(currentNode);
-		TinyMCE_TemplatePlugin._insertTemplate(editor_id, newTemplate, title, tsrc, false);
-	},
-
-	/**
-	 * Deletes a template from the editor content
-	 * Finds the parent DIV wrapper and deletes it and all children
-	 * @param {HTMLElement} currently selected template node in editor
-	 */
-	_deleteTemplateContent : function(node) {
-		var p = tinyMCE.getParentElement(node, 'DIV', function(n) {
-			return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);
-		});
-
-		if (p)
-			p.parentNode.removeChild(p, true);
-	},
-
-	/**
-	 *  Inserts a template into the specified editor
-	 *
-	 * @param {string} id of editor instance
-	 * @param {HTMLElement} template contents as a HTMLElement (the parent DIV wrapper)
-	 * @param {string} title of template (unused as yet)
-	 * @param {string} source URI of the template file (unused as yet)
-	 */
-	_insertTemplate : function(editor_id, elm, title, tsrc, incComments) {
-		var html;
-
-		TinyMCE_TemplatePlugin._prepareTemplateContent(elm);
-
-		html = '<div class="' + TinyMCE_TemplatePlugin.TMPL + '">';
-		html += elm.innerHTML;
-		html += '<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>';
-
-		tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html);
-	},
-
-	/**
-	 * template functions - functions for modifying template content
-	 */
-	functions : {
-		blank : function(elm, editor_event) {},
-
-		cdate : function(elm, editor_event) {
-			var d, dsrc;
-
-			if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)
-				return;
-
-			d = new Date();
-			// find out if the creation date was previously stored
-			dsrc = elm.innerHTML.match(new RegExp("<!-- " + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + ":(.*)  -->", "gi"));
-
-			if (dsrc)
-				d = new Date(RegExp.$1);
-
-			elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_cdate_format", tinyMCE.getLang("lang_template_def_date_format")));
-			//now we have to store the date value in a format easily read again, in case a future template change changes the date format...
-			elm.innerHTML += "<!-- " + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + ":" + d.toUTCString() + "  -->";
-		},
-
-		mdate : function(elm, editor_event) {
-			var d = new Date();
-			elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_mdate_format", tinyMCE.getLang("lang_template_def_date_format")));
-		},
-
-		/**
-		 * This will insert the currently selected editor content into the template element.
-		 * It only does this if the template inserted is a new one and if the element does not have the special class.
-		 * The special class name prevents this from happening more than once.
-		 */
-		selectedContent : function(elm, editor_event) {
-			var ds = tinyMCE.selectedInstance.getData('template');
-
-			if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)
-				return;
-
-			if (ds.currentAction == "insert-new" && !tinyMCE.hasCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)) {
-				elm.innerHTML = tinyMCE.selectedInstance.selection.getSelectedHTML();
-				tinyMCE.addCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE);
-			}
-		},
-
-		/**
-		 * When the plugin is initialised this generates the functions that insert configured strings into template elements.
-		 */
-		generateReplacer : function(s) {
-			return function(elm, editor_event) {elm.innerHTML = "" + s;};
-		}
-	},
-
-	/**
-	 * formats a date according to the format string - straight from the 'insert date/time' plugin
-	 *
-	 * @param {Date} date object
-	 * @param {string} format string
-	 * @return formatted date
-	 * @type string
-	 */
-	_getDateTime : function(d,fmt) {
-			if (!fmt)
-				return "";
-
-			function addZeros(value, len) {
-				var i;
-
-				value = "" + value;
-
-				if (value.length < len) {
-					for (i=0; i<(len-value.length); i++)
-						value = "0" + value;
-				}
-
-				return value;
-			}
-
-			fmt = fmt.replace("%D", "%m/%d/%y");
-			fmt = fmt.replace("%r", "%I:%M:%S %p");
-			fmt = fmt.replace("%Y", "" + d.getFullYear());
-			fmt = fmt.replace("%y", "" + d.getYear());
-			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
-			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
-			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
-			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
-			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
-			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
-			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
-			fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_template_months_long")[d.getMonth()]);
-			fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_template_months_short")[d.getMonth()]);
-			fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_template_day_long")[d.getDay()]);
-			fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_template_day_short")[d.getDay()]);
-			fmt = fmt.replace("%%", "%");
-
-			return fmt;
-	},
-
-	TMPL_ELEMENT : 'mceTmplElm',
-	TMPL : 'mceTmpl',
-	TMPL_BEGINS : 'mceTmplBegins',
-	TMPL_SEL_HTML_DONE : 'mceSelHTMLDone',
-	TMPL_ENDS : 'mceTmplEnds',
-	TMPL_DATE_SRC_ATTR : 'mcetmpldtesrc',
-	TMPL_TEMPLATE_EVENT : 'prepare_template'
-};
-
-tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin);
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright  2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var each = tinymce.each;
+
+	tinymce.create('tinymce.plugins.TemplatePlugin', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceTemplate', function(ui) {
+				ed.windowManager.open({
+					file : url + '/template.htm',
+					width : ed.getParam('template_popup_width', 750),
+					height : ed.getParam('template_popup_height', 600),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			ed.addCommand('mceInsertTemplate', t._insertTemplate, t);
+
+			// Register buttons
+			ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});
+
+			ed.onPreProcess.add(function(ed, o) {
+				var dom = ed.dom;
+
+				each(dom.select('div', o.node), function(e) {
+					if (dom.hasClass(e, 'mceTmpl')) {
+						each(dom.select('*', e), function(e) {
+							if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
+								e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
+						});
+
+						t._replaceVals(e);
+					}
+				});
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Template plugin',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://www.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		_insertTemplate : function(ui, v) {
+			var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();
+
+			h = v.content;
+
+			each(t.editor.getParam('template_replace_values'), function(v, k) {
+				if (typeof(v) != 'function')
+					h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
+			});
+
+			el = dom.create('div', null, h);
+
+			// Find template element within div
+			n = dom.select('.mceTmpl', el);
+			if (n && n.length > 0) {
+				el = dom.create('div', null);
+				el.appendChild(n[0].cloneNode(true));
+			}
+
+			function hasClass(n, c) {
+				return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
+			};
+
+			each(dom.select('*', el), function(n) {
+				// Replace cdate
+				if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))
+					n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));
+
+				// Replace mdate
+				if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
+					n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
+
+				// Replace selection
+				if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))
+					n.innerHTML = sel;
+			});
+
+			t._replaceVals(el);
+
+			ed.execCommand('mceInsertContent', false, el.innerHTML);
+			ed.addVisual();
+		},
+
+		_replaceVals : function(e) {
+			var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');
+
+			each(dom.select('*', e), function(e) {
+				each(vl, function(v, k) {
+					if (dom.hasClass(e, k)) {
+						if (typeof(vl[k]) == 'function')
+							vl[k](e);
+					}
+				});
+			});
+		},
+
+		_getDateTime : function(d, fmt) {
+				if (!fmt)
+					return "";
+
+				function addZeros(value, len) {
+					var i;
+
+					value = "" + value;
+
+					if (value.length < len) {
+						for (i=0; i<(len-value.length); i++)
+							value = "0" + value;
+					}
+
+					return value;
+				}
+
+				fmt = fmt.replace("%D", "%m/%d/%y");
+				fmt = fmt.replace("%r", "%I:%M:%S %p");
+				fmt = fmt.replace("%Y", "" + d.getFullYear());
+				fmt = fmt.replace("%y", "" + d.getYear());
+				fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+				fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+				fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+				fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+				fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+				fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+				fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+				fmt = fmt.replace("%B", "" + tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);
+				fmt = fmt.replace("%b", "" + tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);
+				fmt = fmt.replace("%A", "" + tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);
+				fmt = fmt.replace("%a", "" + tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);
+				fmt = fmt.replace("%%", "%");
+
+				return fmt;
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);
+})();
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/js/template.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/js/template.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/js/template.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/js/template.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,106 @@
+tinyMCEPopup.requireLangPack();
+
+var TemplateDialog = {
+	preInit : function() {
+		var url = tinyMCEPopup.getParam("template_external_list_url");
+
+		if (url != null)
+			document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');
+	},
+
+	init : function() {
+		var ed = tinyMCEPopup.editor, tsrc, sel, x, u;
+
+ 		tsrc = ed.getParam("template_templates", false);
+ 		sel = document.getElementById('tpath');
+
+		// Setup external template list
+		if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
+			for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
+				tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
+		}
+
+		for (x=0; x<tsrc.length; x++)
+			sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));
+
+		this.resize();
+		this.tsrc = tsrc;
+	},
+
+	resize : function() {
+		var w, h, e;
+
+		if (!self.innerWidth) {
+			w = document.body.clientWidth - 50;
+			h = document.body.clientHeight - 160;
+		} else {
+			w = self.innerWidth - 50;
+			h = self.innerHeight - 170;
+		}
+
+		e = document.getElementById('templatesrc');
+
+		if (e) {
+			e.style.height = Math.abs(h) + 'px';
+			e.style.width  = Math.abs(w - 5) + 'px';
+		}
+	},
+
+	loadCSSFiles : function(d) {
+		var ed = tinyMCEPopup.editor;
+
+		tinymce.each(ed.getParam("content_css", '').split(','), function(u) {
+			d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');
+		});
+	},
+
+	selectTemplate : function(u, ti) {
+		var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;
+
+		if (!u)
+			return;
+
+		d.body.innerHTML = this.templateHTML = this.getFileContents(u);
+
+		for (x=0; x<tsrc.length; x++) {
+			if (tsrc[x].title == ti)
+				document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';
+		}
+	},
+
+ 	insert : function() {
+		tinyMCEPopup.execCommand('mceInsertTemplate', false, {
+			content : this.templateHTML,
+			selection : tinyMCEPopup.editor.selection.getContent()
+		});
+
+		tinyMCEPopup.close();
+	},
+
+	getFileContents : function(u) {
+		var x, d, t = 'text/plain';
+
+		function g(s) {
+			x = 0;
+
+			try {
+				x = new ActiveXObject(s);
+			} catch (s) {
+			}
+
+			return x;
+		};
+
+		x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
+
+		// Synchronous AJAX load file
+		x.overrideMimeType && x.overrideMimeType(t);
+		x.open("GET", u, false);
+		x.send(null);
+
+		return x.responseText;
+	}
+};
+
+TemplateDialog.preInit();
+tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,15 @@
+tinyMCE.addI18n('ca.template_dlg',{
+title:"Plantilles",
+label:"Plantilla",
+desc_label:"Descripci\u00F3",
+desc:"Insereix contingut predefinit de plantilla",
+select:"Selecciona una plantilla",
+preview:"Vista pr\u00E8via",
+warning:"Atenci\u00F3: Actualitzar una plantilla amb una de diferent pot provocar p\u00E8rdua de dades.",
+mdate_format:"%d-%m-%Y %H:%M:%S",
+cdate_format:"%d-%m-%Y %H:%M:%S",
+months_long:"Gener,Febrer,Mar\u00E7,Abril,Maig,Juny,Juliol,Agost,Setembre,Octubre,Novembre,Desembre",
+months_short:"Gen,Feb,Mar,Abr,Mai,Jun,Jul,Ago,Set,Oct,Nov,Des",
+day_long:"Diumenge,Dilluns,Dimarts,Dimecres,Dijous,Divendres,Dissabte,Diumenge",
+day_short:"Dmg,Dll,Dmt,Dmc,Djs,Dvs,Dss,Dmg"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,15 @@
+tinyMCE.addI18n('en.template_dlg',{
+title:"Templates",
+label:"Template",
+desc_label:"Description",
+desc:"Insert predefined template content",
+select:"Select a template",
+preview:"Preview",
+warning:"Warning: Updating a template with a different one may cause data loss.",
+mdate_format:"%Y-%m-%d %H:%M:%S",
+cdate_format:"%Y-%m-%d %H:%M:%S",
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
+months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,15 @@
+tinyMCE.addI18n('es.template_dlg',{
+title:"Plantillas",
+label:"Plantilla",
+desc_label:"Descripci\u00F3n",
+desc:"Insertar contenido de plantilla predefinida",
+select:"Seleccionar plantilla",
+preview:"Vista previa",
+warning:"Cuidado: Actualizar una plantilla con otra puede causar p\u00E9rdida de datos.",
+mdate_format:"%d-%m-%Y %H:%M:%S",
+cdate_format:"%d-%m-%Y %H:%M:%S",
+months_long:"Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre",
+months_short:"Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic",
+day_long:"Domingo,Lunes,Martes,Mi\u00E9rcoles,Jueves,Viernes,S\u00E1bado,Domingo",
+day_short:"Dom,Lun,Mar,Mie,Jue,Vie,Sab,Dom"
+});
\ No hay ningún carácter de nueva línea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/template.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/template.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/template.htm	2007-02-23 06:07:06.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/template/template.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,36 +1,37 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{$lang_template_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/template.js"></script>
+	<title>{#template_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/template.js"></script>
 	<link href="css/template.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('TPU.init();');" onresize="TPU.resizeInputs();"> 
-	<form onsubmit="insert();return false;">
+<body onresize="TemplateDialog.resize();"> 
+	<form onsubmit="TemplateDialog.insert();return false;">
 		<div id="frmbody">
-			<div class="title">{$lang_template_desc}</div>
-			<div class="frmRow"><label for="tpath" title="{$lang_template_select}">{$lang_template_label}:</label>
-			<select id="tpath" name="tpath" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="TPU.selectTemplate(this.options[this.selectedIndex]);">
-				<option value="">{$lang_template_select}...</option>
+			<div class="title">{#template_dlg.desc}</div>
+			<div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>
+			<select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">
+				<option value="">{#template_dlg.select}...</option>
 			</select>
 			<span id="warning"></span></div>
-			<div class="frmRow"><label for="tdesc">{$lang_template_desc_label}:</label>
+			<div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>
 			<span id="tmpldesc"></span></div>
 			<fieldset>
-				<legend>{$lang_template_preview}</legend>
+				<legend>{#template_dlg.preview}</legend>
 				<iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
 			</fieldset>
 		</div>
 		
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="TPU.insertTemplate();" />
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
 			</div>
+
+			<br style="clear:both" />
 		</div>
 	</form>
 </body> 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/_template/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/_template/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/_template/langs/es.js	2006-07-14 14:55:00.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/_template/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-/**
- * ES lang variables
- * 
- * Authors : Alvaro Velasco,
- *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
- *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
- *           Eneko Castresana Vara
- * Last Updated : July 14, 2006
- * TinyMCE Version : 2.0.6.1
- */
-
-tinyMCE.addToLang('',{
-template_title : 'Esto es s&oacute;lo la plantilla de un popup',
-template_desc : 'Esto es s&oacute;lo la plantilla de un bot&oacute;n'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/config_tinybrowser.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/config_tinybrowser.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/config_tinybrowser.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/config_tinybrowser.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,125 @@
+<?php
+/*
+TinyBrowser 1.41 - A TinyMCE file browser (C) 2008  Bryn Jones
+(author website - http://www.lunarvis.com)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+// switch off error handling, to use custom handler
+error_reporting(0); 
+
+// set script time out higher, to help with thumbnail generation
+set_time_limit(240);
+
+$tinybrowser = array();
+
+// Session control and security check - to enable please uncomment
+//if(isset($_GET['sessidpass'])) session_id($_GET['sessidpass']); // workaround for Flash session bug
+//session_start();
+//$tinybrowser['sessioncheck'] = 'authenticated_user'; //name of session variable to check
+
+// Random string used to secure Flash upload if session control not enabled - be sure to change!
+$tinybrowser['obfuscate'] = 's0merand0mjunk!!!111';
+
+// Set default language (ISO 639-1 code)
+//$tinybrowser['language'] = 'en';
+(isset($_COOKIE['tinybrowser_lang'])) ? $tinybrowser['language'] = $_COOKIE['tinybrowser_lang'] : $tinybrowser['language'] = 'en';
+
+// Set the integration type (TinyMCE is default)
+$tinybrowser['integration'] = 'tinymce'; // Possible values: 'tinymce', 'fckeditor'
+
+// Default is rtrim($_SERVER['DOCUMENT_ROOT'],'/') (suitable when using absolute paths, but can be set to '' if using relative paths)
+$tinybrowser['docroot'] = rtrim($_SERVER['DOCUMENT_ROOT'],'/');
+
+// Folder permissions for Unix servers only
+$tinybrowser['unixpermissions'] = 0777;
+
+// File upload paths (set to absolute by default)
+//$tinybrowser['path']['image'] = '/useruploads/images/'; // Image files location - also creates a '_thumbs' subdirectory within this path to hold the image thumbnails
+//$tinybrowser['path']['media'] = '/useruploads/media/'; // Media files location
+//$tinybrowser['path']['file']  = '/useruploads/files/'; // Other files location
+
+$tinybrowser['path']['image'] = str_replace($tinybrowser['docroot'],'', preg_replace('[\\\]', '/', realpath(dirname(__FILE__) . '/../../../../../../../images/stories'))) . '/'; // Image files location - also creates a '_thumbs' subdirectory within this path to hold the image thumbnails
+$tinybrowser['path']['media'] = str_replace($tinybrowser['docroot'],'', preg_replace('[\\\]', '/', realpath(dirname(__FILE__) . '/../../../../../../../images/stories'))) . '/'; // Media files location
+$tinybrowser['path']['file']  = str_replace($tinybrowser['docroot'],'', preg_replace('[\\\]', '/', realpath(dirname(__FILE__) . '/../../../../../../../images/stories'))) . '/'; // Other files location
+
+
+// File link paths - these are the paths that get passed back to TinyMCE or your application (set to equal the upload path by default)
+$tinybrowser['link']['image'] = $tinybrowser['path']['image']; // Image links
+$tinybrowser['link']['media'] = $tinybrowser['path']['media']; // Media links
+$tinybrowser['link']['file']  = $tinybrowser['path']['file']; // Other file links
+
+// File upload size limit (0 is unlimited)
+$tinybrowser['maxsize']['image'] = 0; // Image file maximum size
+$tinybrowser['maxsize']['media'] = 0; // Media file maximum size
+$tinybrowser['maxsize']['file']  = 0; // Other file maximum size
+
+// Image automatic resize on upload (0 is no resize)
+$tinybrowser['imageresize']['width']  = 0;
+$tinybrowser['imageresize']['height'] = 0;
+
+// Image thumbnail source (set to 'path' by default - shouldn't need changing)
+$tinybrowser['thumbsrc'] = 'path'; // Possible values: path, link
+
+// Image thumbnail size in pixels
+$tinybrowser['thumbsize'] = 80;
+
+// Image and thumbnail quality, higher is better (1 to 99)
+$tinybrowser['imagequality'] = 80; // only used when resizing or rotating
+$tinybrowser['thumbquality'] = 80;
+
+// Date format, as per php date function
+$tinybrowser['dateformat'] = 'd/m/Y H:i';
+
+// Permitted file extensions
+$tinybrowser['filetype']['image'] = '*.jpg, *.jpeg, *.gif, *.png'; // Image file types
+$tinybrowser['filetype']['media'] = '*.swf, *.dcr, *.mov, *.qt, *.mpg, *.mp3, *.mp4, *.mpeg, *.avi, *.wmv, *.wm, *.asf, *.asx, *.wmx, *.wvx, *.rm, *.ra, *.ram'; // Media file types
+$tinybrowser['filetype']['file']  = '*.*'; // Other file types
+
+// Prohibited file extensions
+$tinybrowser['prohibited'] = array('php','php3','php4','php5','phtml','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg','cgi', 'sh', 'py','asa','asax','config','com','inc');
+
+// Default file sort
+$tinybrowser['order']['by']   = 'name'; // Possible values: name, size, type, modified
+$tinybrowser['order']['type'] = 'asc'; // Possible values: asc, desc
+
+// Default image view method
+$tinybrowser['view']['image'] = 'thumb'; // Possible values: thumb, detail
+
+// File Pagination - split results into pages (0 is none)
+$tinybrowser['pagination'] = 0;
+
+// TinyMCE dialog.css file location, relative to tinybrowser.php (can be set to absolute link)
+$tinybrowser['tinymcecss'] = '../../themes/advanced/skins/default/dialog.css';
+
+// TinyBrowser pop-up window size
+$tinybrowser['window']['width']  = 770;
+$tinybrowser['window']['height'] = 480;
+
+// Assign Permissions for Upload, Edit, Delete & Folders
+$tinybrowser['allowupload']  = true;
+$tinybrowser['allowedit']    = true;
+$tinybrowser['allowdelete']  = true;
+$tinybrowser['allowfolders'] = true;
+
+// Clean filenames on upload
+$tinybrowser['cleanfilename'] = true;
+
+// Set default action for edit page
+$tinybrowser['defaultaction'] = 'delete'; // Possible values: delete, rename, move
+
+// Set delay for file process script, only required if server response is slow
+$tinybrowser['delayprocess'] = 0; // Value in seconds
+?>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/stylefull_tinybrowser.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/stylefull_tinybrowser.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/stylefull_tinybrowser.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/stylefull_tinybrowser.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,34 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(../img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(../img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(../img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(../img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(../img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/style_tinybrowser.css.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/style_tinybrowser.css.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/style_tinybrowser.css.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/css/style_tinybrowser.css.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,226 @@
+<?php
+require_once("../config_tinybrowser.php");
+
+header ("Content-type: text/css");
+?>
+html { 
+overflow: -moz-scrollbars-vertical !important; 
+}
+.panel_wrapper div.currentmod {
+display:block;
+width:100%; 
+overflow-x:hidden;
+}
+.tabs li.right {
+float:right;
+margin:0;
+}
+.tabs span {
+font-size: 10px;
+}
+fieldset {
+padding-bottom: 10px;
+}
+form {
+margin: 0;
+padding: 0;
+font-size: 11px;
+}
+form.custom select, form.custom input {
+margin: 0 7px 0 0;
+padding: 0;
+}
+form.custom input {
+height: 14px;
+padding: 2px 0 0 2px;
+}
+form.custom select {
+margin-top: 1px;
+padding: 0;
+}
+form.custom label {
+margin-right: 2px;
+}
+.del {
+margin: 0;
+padding: 0;
+border: none;
+width: 13px !important; /* for IE */ 
+height: 13px !important; /* for IE */
+vertical-align: middle;
+}
+.rad {
+margin: 0;
+padding: 0;
+margin-left: 2px !important;
+border: none;
+background: none;
+vertical-align: middle;
+}
+img {
+vertical-align: middle !important;
+}
+button {
+vertical-align: top;
+font-size: 11px;
+background-color: #d5d5d5;
+border: 1px solid #666666;
+padding: 1px 2px;
+}
+*+html button { padding: 0; } /*IE7+ */
+* html button { padding: 0; } /*IE6- */
+button:hover {
+background-color:#8cca83;
+cursor: hand;
+}
+button.edit:hover {
+background-color:#ff9999;
+}
+.tabularwrapper {
+margin: 5px;
+}
+table.browse {
+clear: both;
+width: 100%;
+border: 1px solid #b7babc;
+border-right: 0;
+border-collapse: collapse;
+overflow: hidden;
+}
+table.browse th, table.browse td {
+font-size: 10px;
+text-align: left;
+padding: 0 7px;
+color: #0b333c;
+border-right: 1px solid #b7babc;
+line-height: 22px;
+}
+table.browse th {
+background-image: url(../img/back.png);
+background-repeat: repeat-x;
+background-position: bottom left;
+border-bottom: 1px solid #b7babc;
+}
+table.browse th a {
+color: #0b333c;
+display: block;
+width: 100%;
+text-decoration: none;
+background-repeat: no-repeat;
+background-position: center right;
+background-image: none;
+}
+table.browse th a.asc {
+background-image: url(../img/asc.gif);
+}
+table.browse th a.desc {
+background-image: url(../img/desc.gif);
+}
+table.browse tr.r0 td {
+	background-color: #FFFFFF;
+}
+table.browse tr.r1 td {
+	background-color: #f5f5f5;
+}
+table.browse tr.over td, table.browse th.over {
+background-color: #b2e1ff;
+background-image: none;
+}
+.img-browser {
+margin: 5px;
+border: 1px solid #e2e2e2;
+float: left;
+clear: none;
+text-align: center;
+height: <?php echo $tinybrowser['thumbsize']+40; ?>px;
+width: <?php echo $tinybrowser['thumbsize']+25; ?>px;
+font-size: <?php echo $tinybrowser['thumbsize']; ?>px;
+}
+*+html .img-browser { width: <?php echo $tinybrowser['thumbsize']+28; ?>px; } /*IE7+ */
+* html .img-browser { width: <?php echo $tinybrowser['thumbsize']+28; ?>px; } /*IE6- */
+.img-browser img {
+border: 0;
+vertical-align: middle;
+margin-top: -20px;
+}
+*+html .img-browser img { margin-top: 0; } /*IE7+ */
+* html .img-browser img { margin-top: 0; } /*IE6- */
+.img-browser a {
+display: block;
+width: 100%;
+height: 100%;
+text-decoration: none;
+}
+.img-browser a:hover {
+background-color: #b2e1ff;
+}
+.filename {
+font-family: Tahoma,Arial,Helvetica,sans-serif;
+clear:both;
+font-size: 11px;
+line-height: 13px;
+overflow: hidden;
+width: <?php echo $tinybrowser['thumbsize']+20; ?>px;
+height: 28px;
+margin-top: -6px;
+padding-left: 3px;
+}
+a.imghover {
+padding-left: 22px;
+display: block;
+position: relative; 
+z-index: 30;
+background-image: url(../img/preview.gif);
+background-repeat: no-repeat;
+background-position: 0 4px;
+}
+a.imghover img {
+position: absolute; 
+z-index: 31;
+background-color: #fff;
+padding: 4px;
+border: 1px solid #888888;
+display: none; 
+}
+a.imghover:hover img {
+top: -5px; 
+left: 140px; 
+display: block;
+}
+.pushleft {
+padding: 4px 5px;
+float: left;
+text-align: left;
+}
+.pushright {
+padding: 4px 5px;
+float: right;
+text-align: right;
+}
+a {
+outline: none;
+border: 0;
+}
+.alertsuccess, .alertfailure, .alertinfo {
+position: relative;
+clear: both;
+margin: 0 auto;
+padding: 4px 4px 4px 4px;
+width: 98%;
+text-align: center;
+border-style: solid;
+border-width: 1px;
+}
+.alertsuccess {
+border-color: #00C000;
+background-color: #BBFFBB;
+}
+.alertfailure {
+border-color: #CC0000;
+background-color: #FFBBBB;
+}
+.alertinfo {
+border-color: #1133DD;
+background-color: #AACCFF;
+}
+
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/edit.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/edit.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/edit.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/edit.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,537 @@
+<?php
+require_once('config_tinybrowser.php');
+// Set language
+if(isset($tinybrowser['language']) && file_exists('langs/'.$tinybrowser['language'].'.php'))
+	{
+	require_once('langs/'.$tinybrowser['language'].'.php'); 
+	}
+else
+	{
+	require_once('langs/en.php'); // Falls back to English
+	}
+require_once('fns_tinybrowser.php');
+
+// Check session, if it exists
+if(session_id() != '')
+	{
+	if(!isset($_SESSION[$tinybrowser['sessioncheck']]))
+		{
+		echo TB_DENIED;
+		exit;
+		}
+	}
+	
+if(!$tinybrowser['allowedit'] && !$tinybrowser['allowdelete'])
+	{
+	echo TB_EDDENIED;
+	exit;
+	}
+
+// Assign file operation variables
+$validtypes = array('image','media','file');
+$typenow = ((isset($_GET['type']) && in_array($_GET['type'],$validtypes)) ? $_GET['type'] : 'image');
+$foldernow = str_replace(array('../','..\\','./','.\\'),'',($tinybrowser['allowfolders'] && isset($_REQUEST['folder']) ? urldecode($_REQUEST['folder']) : ''));
+$destfolder = (isset($_POST['destination']) ? $tinybrowser['path'][$typenow].urldecode($_POST['destination']) : '');
+$destfoldernow = (isset($_POST['destination']) ? urldecode($_POST['destination']) : $foldernow);
+
+// Assign edit and thumbnail path
+$editpath = $tinybrowser['path'][$typenow].$foldernow;
+$thumbpath = $tinybrowser[$tinybrowser['thumbsrc']][$typenow].$foldernow;
+
+// Assign browsing options
+$sortbynow = (isset($_REQUEST['sortby']) ? $_REQUEST['sortby'] : $tinybrowser['order']['by']);
+$sorttypenow = (isset($_REQUEST['sorttype']) ? $_REQUEST['sorttype'] : $tinybrowser['order']['type']);
+$sorttypeflip = ($sorttypenow == 'asc' ? 'desc' : 'asc');  
+$viewtypenow = 'detail';
+$findnow = (isset($_REQUEST['find']) && !empty($_REQUEST['find']) ? $_REQUEST['find'] : false);
+$actionnow = (isset($_REQUEST['action']) ? $_REQUEST['action'] : $tinybrowser['defaultaction'] );
+$showpagenow = (isset($_REQUEST['showpage']) ? $_REQUEST['showpage'] : 0);
+
+// Assign url pass variables
+$passfolder = '&folder='.urlencode($foldernow);
+$passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
+$passaction = '&action='.$actionnow;
+$passsortby = '&sortby='.$sortbynow.'&sorttype='.$sorttypenow;
+
+// Assign sort parameters for column header links
+$sortbyget = array();
+$sortbyget['name'] = '&sortby=name';
+$sortbyget['size'] = '&sortby=size'; 
+$sortbyget['type'] = '&sortby=type'; 
+$sortbyget['modified'] = '&sortby=modified';
+$sortbyget['dimensions'] = '&sortby=dimensions'; 
+$sortbyget[$sortbynow] .= '&sorttype='.$sorttypeflip;
+
+// Assign css style for current sort type column
+$thclass = array();
+$thclass['name'] = '';
+$thclass['size'] = ''; 
+$thclass['type'] = ''; 
+$thclass['modified'] = '';
+$thclass['dimensions'] = ''; 
+$thclass[$sortbynow] = ' class="'.$sorttypenow.'"';
+
+// Initalise alert array
+$notify = array(
+	'type' => array(),
+	'message' => array()
+);
+$deleteqty = 0;
+$renameqty = 0;
+$resizeqty = 0;
+$rotateqty = 0;
+$moveqty = 0;
+$errorqty = 0;
+	
+// Set when rotating images to force thumbnail refresh
+$imagerefresh ='';
+
+// Delete any checked files
+if(isset($_POST['deletefile']))
+	{
+	foreach($_POST['deletefile'] as $delthis => $val)
+		{
+		$delthisfile = $tinybrowser['docroot'].$editpath.$_POST['actionfile'][$delthis];
+		if (file_exists($delthisfile) && unlink($delthisfile)) $deleteqty++; else $errorqty++;
+		if($typenow=='image')
+			{
+			$delthisthumb = $tinybrowser['docroot'].$editpath.'_thumbs/_'.$_POST['actionfile'][$delthis];
+			if (file_exists($delthisthumb)) unlink($delthisthumb);
+			}
+		}
+	}
+	
+// Rename any files with changed name
+if(isset($_POST['renamefile']))
+	{
+	foreach($_POST['renamefile'] as $namethis => $newname)
+		{
+		if($_POST['actionfile'][$namethis] != $newname.$_POST['renameext'][$namethis])
+			{
+			$namethisfilefrom = $tinybrowser['docroot'].$editpath.$_POST['actionfile'][$namethis];
+			$namethisfileto = $tinybrowser['docroot'].$editpath.clean_filename($newname.$_POST['renameext'][$namethis]);
+			if (file_exists($namethisfilefrom) && rename($namethisfilefrom,$namethisfileto)) $renameqty++; else $errorqty++;
+			if($typenow=='image')
+			   {
+				$namethisthumbfrom = $tinybrowser['docroot'].$editpath.'_thumbs/_'.$_POST['actionfile'][$namethis];
+				$namethisthumbto = $tinybrowser['docroot'].$editpath.'_thumbs/_'.clean_filename($newname.$_POST['renameext'][$namethis]);
+				if (file_exists($namethisthumbfrom)) rename($namethisthumbfrom,$namethisthumbto);
+			   }
+			}
+		}
+	}
+	
+// Move any checked files
+if(isset($_POST['movefile']))
+	{
+	foreach($_POST['movefile'] as $movethis => $val)
+		{
+		$movethisfile = $tinybrowser['docroot'].$editpath.$_POST['actionfile'][$movethis];
+		$movefiledest = $tinybrowser['docroot'].$destfolder.$_POST['actionfile'][$movethis];
+		if (!file_exists($movefiledest) && file_exists($movethisfile) && copy($movethisfile,$movefiledest))
+         {
+         $moveqty++;
+         unlink($movethisfile);
+         if($typenow=='image')
+			   {
+			   $movethisthumb = $tinybrowser['docroot'].$editpath.'_thumbs/_'.$_POST['actionfile'][$movethis];
+			   $movethumbdest = $tinybrowser['docroot'].$destfolder.'_thumbs/_'.$_POST['actionfile'][$movethis];
+			   if (file_exists($movethisthumb) && copy($movethisthumb,$movethumbdest)) unlink($movethisthumb);
+			   }
+         }
+      else $errorqty++;
+		}
+	}
+	
+// Resize any files with new size
+if(isset($_POST['resizefile']))
+	{
+	foreach($_POST['resizefile'] as $sizethis => $newsize)
+		{
+		$newsize = intval($newsize);
+		if($newsize)
+		   {
+			// detect silly sizes
+			if($newsize > $tinybrowser['thumbsize'])
+				{
+				// do image resize
+				$targetimg = $tinybrowser['docroot'].$editpath.$_POST['actionfile'][$sizethis];
+				if (file_exists($targetimg))
+				   {
+					$mime = getimagesize($targetimg);
+					if($_POST['resizetype'][$sizethis]=='width')
+					   {
+						$rw = $newsize;
+						$rh = $mime[1];
+						}
+					else
+					   {
+						$rw = $mime[0];
+						$rh = $newsize;
+						}
+					$im = convert_image($targetimg,$mime['mime']);
+					resizeimage($im,$rw,$rh,$targetimg,$tinybrowser['imagequality'],$mime['mime']);
+					imagedestroy($im);
+					$resizeqty++;
+				   }
+				else $errorqty++;
+				}
+         else $errorqty++;
+			}
+		}
+	}
+
+// Rotate any selected files
+if(isset($_POST['rotatefile']))
+	{
+	$imagerefresh = '?refresh='.uniqid('');
+	foreach($_POST['rotatefile'] as $rotatethis => $direction)
+		{
+		if($direction != 'none')
+			{
+			$targetimg = $tinybrowser['docroot'].$editpath.$_POST['actionfile'][$rotatethis];
+			if (file_exists($targetimg))
+				{
+				// rotate image
+				if($direction == 'clock') $degree=270; else $degree=90;
+				$mime = getimagesize($targetimg);
+				$im = convert_image($targetimg,$mime['mime']);
+				
+				// additional processing for png / gif transparencies (credit to Dirk Bohl)
+				if($mime['mime'] == 'image/x-png' || $mime['mime'] == 'image/png')
+					{
+					imagealphablending($newim, false);
+					imagesavealpha($newim, true);
+					}
+				elseif($mime['mime'] == 'image/gif')
+					{
+					$originaltransparentcolor = imagecolortransparent( $im );
+					if($originaltransparentcolor >= 0 && $originaltransparentcolor < imagecolorstotal( $im ))
+						{
+						$transparentcolor = imagecolorsforindex( $im, $originaltransparentcolor );
+						$newtransparentcolor = imagecolorallocate($newim,$transparentcolor['red'],$transparentcolor['green'],$transparentcolor['blue']);
+						imagefill( $newim, 0, 0, $newtransparentcolor );
+						imagecolortransparent( $newim, $newtransparentcolor );
+						}
+					}
+				$newim = imagerotate($im, $degree, 0);
+				imagedestroy($im);
+				
+            if($mime['mime'] == 'image/pjpeg' || $mime['mime'] == 'image/jpeg')
+            	imagejpeg ($newim,$targetimg,$tinybrowser['imagequality']);
+            elseif($mime['mime'] == 'image/x-png' || $mime['mime'] == 'image/png')
+               imagepng ($newim,$targetimg,substr($tinybrowser['imagequality'],0,1));
+            elseif($mime['mime'] == 'image/gif')
+               imagegif ($newim,$targetimg);
+				imagedestroy($newim);
+				$rotateqty++;
+
+				// delete and recreate thumbnail image
+				$targetthumb = $tinybrowser['docroot'].$editpath.'_thumbs/_'.$_POST['actionfile'][$rotatethis];
+				if (file_exists($targetthumb)) unlink($targetthumb);
+				$mime = getimagesize($targetimg);
+				$im = convert_image($targetimg,$mime['mime']);
+				resizeimage($im,$tinybrowser['thumbsize'],$tinybrowser['thumbsize'],$targetthumb,$tinybrowser['thumbquality'],$mime['mime']);
+				imagedestroy($im);
+				}
+			else $errorqty++;
+			}
+		}
+	}
+
+// Read directory contents and populate $file array
+$dh = opendir($tinybrowser['docroot'].$editpath);
+$file = array();
+while (($filename = readdir($dh)) !== false)
+	{
+	// get file extension
+	$nameparts = explode('.',$filename);
+	$ext = end($nameparts);
+
+	// filter directories and prohibited file types
+	if($filename != '.' && $filename != '..' && !is_dir($tinybrowser['docroot'].$editpath.$filename) && !in_array($ext, $tinybrowser['prohibited']) && ($typenow == 'file' || strpos(strtolower($tinybrowser['filetype'][$typenow]),strtolower($ext))))
+		{
+		// search file name if search term entered
+		if($findnow) $exists = strpos(strtolower($filename),strtolower($findnow));
+
+		// assign file details to array, for all files or those that match search
+		if(!$findnow || ($findnow && $exists !== false))
+			{
+			$file['name'][] = $filename;
+			$file['sortname'][] = strtolower($filename);
+			$file['modified'][] = filemtime($tinybrowser['docroot'].$editpath.$filename);
+			$file['size'][] = filesize($tinybrowser['docroot'].$editpath.$filename);
+
+			// image specific info or general
+			if($typenow=='image' && $imginfo = getimagesize($tinybrowser['docroot'].$editpath.$filename))
+				{
+				$file['width'][] = $imginfo[0];
+				$file['height'][] = $imginfo[1];
+				$file['dimensions'][] = $imginfo[0] + $imginfo[1];
+				$file['type'][] = $imginfo['mime'];
+				}
+			else
+				{
+				$file['width'][] = 'N/A';
+				$file['height'][] = 'N/A';
+				$file['dimensions'][] = 'N/A';
+				$file['type'][] = returnMIMEType($filename);
+				}
+			}
+		}
+	}
+closedir($dh);
+
+// Assign directory structure to array
+$editdirs=array();
+dirtree($editdirs,$tinybrowser['filetype'][$typenow],$tinybrowser['docroot'],$tinybrowser['path'][$typenow]);
+
+// generate alert if files deleted
+if($deleteqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGDELETE, $deleteqty);
+	}
+// generate alert if files renamed
+elseif($renameqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGRENAME, $renameqty);
+	}
+// generate alert if files renamed
+elseif($moveqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGMOVE, $moveqty);
+	}
+// generate alert if images resized
+elseif($resizeqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGRESIZE, $resizeqty);
+	}
+// generate alert if images rotated
+elseif($rotateqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGROTATE, $rotateqty);
+	}
+	
+// generate alert if file errors encountered
+if($errorqty>0)
+   {
+	$notify['type'][]='failure';
+	$notify['message'][]=sprintf(TB_MSGEDITERR, $errorqty);
+	}
+
+// determine sort order
+$sortorder = ($sorttypenow == 'asc' ? SORT_ASC : SORT_DESC);
+$num_of_files = (isset($file['name']) ? count($file['name']) : 0);
+
+if($num_of_files>0)
+	{
+	// sort files by selected order
+	sortfileorder($sortbynow,$sortorder,$file);
+	}
+
+// determine pagination
+if($tinybrowser['pagination']>0)
+	{
+	$showpagestart = ($showpagenow ? ($_REQUEST['showpage']*$tinybrowser['pagination'])-$tinybrowser['pagination'] : 0);
+	$showpageend = $showpagestart+$tinybrowser['pagination'];
+	if($showpageend>$num_of_files) $showpageend = $num_of_files;
+	}
+else
+	{
+	$showpagestart = 0;
+	$showpageend = $num_of_files;
+	}
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>TinyBrowser :: <?php echo TB_EDIT; ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Pragma" content="no-cache" />
+<?php
+if(empty($passfeid) && $tinybrowser['integration']=='tinymce')
+	{
+	?><link rel="stylesheet" type="text/css" media="all" href="<?php echo $tinybrowser['tinymcecss']; ?>" /><?php 
+	}
+else
+	{
+	?><link rel="stylesheet" type="text/css" media="all" href="css/stylefull_tinybrowser.css" /><?php 
+	}
+?>
+<link rel="stylesheet" type="text/css" media="all" href="css/style_tinybrowser.css.php" />
+<script language="javascript" type="text/javascript" src="js/tinybrowser.js.php"></script>
+</head>
+<body onload="rowHighlight();">
+<?php
+if(count($notify['type'])>0) alert($notify);
+form_open('foldertab',false,'edit.php','?type='.$typenow.$passfeid);
+?>
+<div class="tabs">
+<ul>
+<li id="browse_tab"><span><a href="tinybrowser.php?type=<?php echo $typenow.$passfolder.$passfeid ; ?>"><?php echo TB_BROWSE; ?></a></span></li>
+<?php
+if($tinybrowser['allowupload']) 
+	{
+	?><li id="upload_tab"><span><a href="upload.php?type=<?php echo $typenow.$passfolder.$passfeid ; ?>"><?php echo TB_UPLOAD; ?></a></span></li>
+	<?php 
+	} ?>
+<li id="edit_tab" class="current"><span><a href="edit.php?type=<?php echo $typenow.$passfolder.$passfeid ; ?>"><?php echo TB_EDIT; ?></a></span></li>
+<?php
+if($tinybrowser['allowfolders'])
+	{
+	?><li id="folders_tab"><span><a href="folders.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_FOLDERS; ?></a></span></li><?php
+	}
+// Display folder select, if multiple exist
+if(count($editdirs)>1)
+	{
+	?><li id="folder_tab" class="right"><span><?php
+	form_select($editdirs,'folder',TB_FOLDERCURR,urlencode($foldernow),true);
+	form_hidden_input('sortby',$sortbynow);
+   form_hidden_input('sorttype',$sorttypenow);
+   form_hidden_input('showpage',$showpagenow);
+	form_hidden_input('action',$actionnow);
+	?></span></li><?php
+	}
+?>
+</ul>
+</div>
+</form>
+<div class="panel_wrapper">
+<div id="general_panel" class="panel currentmod">
+<fieldset>
+<legend><?php echo TB_EDITFILES; ?></legend>
+<?php
+form_open('edit','custom','edit.php','?type='.$typenow.$passfolder.$passfeid);
+?>
+<div class="pushleft">
+<?php
+
+// Assign edit actions based on file type and permissions
+$select = array();
+if($tinybrowser['allowdelete']) $select[] = array('delete',TB_DELETE);
+if($tinybrowser['allowedit']) $select[] = array('rename',TB_RENAME);
+if($tinybrowser['allowfolders']) $select[] = array('move',TB_MOVE);
+if($typenow=='image' && $tinybrowser['allowedit'])
+	{
+	$select[] = array('resize',TB_RESIZE);
+	$select[] = array('rotate',TB_ROTATE);
+	}
+form_select($select,'action',TB_ACTION,$actionnow,true);
+
+// Show page select if pagination is set
+if($tinybrowser['pagination']>0)
+	{
+	$pagelimit = ceil($num_of_files/$tinybrowser['pagination'])+1;
+	$page = array();
+	for($i=1;$i<$pagelimit;$i++)
+		{
+		$page[] = array($i,TB_PAGE.' '.$i);
+		}
+	if($i>2) form_select($page,'showpage',SHOW,$showpagenow,true);
+	}
+?></div><div class="pushright"><?php
+
+form_hidden_input('sortby',$sortbynow);
+form_hidden_input('sorttype',$sorttypenow);
+form_text_input('find',false,$findnow,25,50);
+form_submit_button('search',TB_SEARCH,'');
+?></div><?php
+
+form_open('actionform','custom','edit.php','?type='.$typenow.$passfolder.$passfeid);
+
+if($actionnow=='move')
+   { ?><div class="pushleft"><?php
+   form_select($editdirs,'destination',TB_FOLDERDEST,urlencode($destfoldernow),false);
+   ?></div><?php
+   } 
+
+if($typenow=='image')
+	{
+	$selectresize = array(
+		array('width',TB_WIDTH),
+		array('height',TB_HEIGHT)
+		);
+	}
+
+switch($actionnow) 
+	{
+	case 'delete':
+		$actionhead = TB_DELETE;
+		break;
+	case 'rename':
+		$actionhead = TB_RENAME;
+		break;
+	case 'resize':
+		$actionhead = TB_RESIZE;
+		break;
+	case 'rotate':
+		$actionhead = TB_ROTATE;
+		break;
+ 	case 'move':
+		$actionhead = TB_MOVE;
+		break;
+	default:
+		// do nothing
+	}
+?><div class="tabularwrapper"><table class="browse"><tr>
+<th><a href="?type=<?php echo $typenow.$passaction.$passfolder.$passfeid.$sortbyget['name']; ?>"<?php echo $thclass['name']; ?>><?php echo TB_FILENAME; ?></a></th>
+<th><a href="?type=<?php echo $typenow.$passaction.$passfolder.$passfeid.$sortbyget['size']; ?>"<?php echo $thclass['size']; ?>><?php echo TB_SIZE; ?></a></th>
+<th><a href="?type=<?php echo $typenow.$passaction.$passfolder.$passfeid.$sortbyget['type']; ?>"<?php echo $thclass['type']; ?>><?php echo TB_TYPE; ?></th>
+<th class="nohvr"><?php echo $actionhead; ?></th></tr>
+<?php
+
+for($i=$showpagestart;$i<$showpageend;$i++)
+	{
+	$alt = (IsOdd($i) ? 'r1' : 'r0');
+	echo '<tr class="'.$alt.'">';
+	if($typenow=='image') echo '<td><a class="imghover" href="#" onclick="return false;" title="'.$file['name'][$i].'&#13;&#10;'.TB_DIMENSIONS.': '.$file['width'][$i].' x '.$file['height'][$i].'&#13;&#10;'.TB_DATE.': '.date($tinybrowser['dateformat'],$file['modified'][$i]).'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i].$imagerefresh.'" alt="" />' .truncate_text($file['name'][$i],30).'</a></td>';
+	else echo '<td title="'.$file['name'][$i].'&#13;&#10;'.TB_DATE.': '.date($tinybrowser['dateformat'],$file['modified'][$i]).'">'.truncate_text($file['name'][$i],30).'</td>';
+	echo '<td>'.bytestostring($file['size'][$i],1).'</td><td>'.$file['type'][$i].'</td>'
+	.'<td>';
+	form_hidden_input('actionfile['.$i.']',$file['name'][$i]);
+	switch($actionnow) 
+		{
+		case 'delete':
+			echo '<input class="del" type="checkbox" name="deletefile['.$i.']" value="1" />';	
+			break;
+		case 'rename':
+			// get file extension
+			$nameparts = explode('.',$file['name'][$i]);
+			$ext = end($nameparts);
+			form_hidden_input('renameext['.$i.']',$ext);
+			form_text_input('renamefile['.$i.']',false,basename($file['name'][$i],$ext),30,120); echo $ext;
+			break;
+		case 'resize':
+			form_text_input('resizefile['.$i.']',false,'',4,4); form_select($selectresize,'resizetype['.$i.']',false,'',false);
+			break;
+		case 'rotate':
+			echo '<img src="img/rotate_c.gif" alt="'.TB_ROTATECW.'" /><input class="rad" type="radio" name="rotatefile['.$i.']" value="clock"><img src="img/rotate_ac.gif" alt="'.TB_ROTATECCW.'" /><input class="rad" type="radio" name="rotatefile['.$i.']" value="anticlock">'.TB_NONE.'<input class="rad" type="radio" name="rotatefile['.$i.']" value="none" checked>';
+			break;
+		case 'move':
+			echo '<input class="del" type="checkbox" name="movefile['.$i.']" value="1" />';
+			break;
+		default:
+			// do nothing
+		}
+	echo "</td></tr>\n";
+	}
+
+echo "</table></div>\n".'<div class="pushright">';
+if($tinybrowser['allowdelete'] || $tinybrowser['allowedit'])
+	{
+	form_hidden_input('sortby',$sortbynow);
+	form_hidden_input('sorttype',$sorttypenow);
+	form_hidden_input('find',$findnow);
+	form_hidden_input('showpage',$showpagenow);
+	form_hidden_input('action',$actionnow);
+	form_submit_button('commit',$actionhead.' '.TB_FILES,'edit');
+	}
+?>
+</div></fieldset></div></div>
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/flexupload.swf 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/flexupload.swf
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/flexupload.swf	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/flexupload.swf	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,1083 @@
+CWS	J xĽ	|TE/~޺U}u'$!,Aqt	eFl:IIg;@f3o*"ʢ,.V{{#:}^sԩԩSV3#dܧ(Rn(ʝOE&\UݽW`];RPwyĈFt
+|W_ݹK]^"uQ"tVVPT@P}:tjUZ**;Z]4Nաp/z>:,R67YusQAEU
+ada¢xymxGMOT\U5TOըJN,"o"5uB#&TSd&򃾺kKɼXZ_WF/ڥ^5SmQ0*Yk(=KW0)bg_|59BJ!_vWH_L*O\ߎ(puW\R:))gILNZI2>ԔԔ3E{P}qB?ojRFFaMhMMi/DQGgGgj2ݮ6}?5od.^$N](oϊɿ3c}{3|:{971֢q]DmΣ[=i(Q-PM:ש*Ӌg@P:<ҋa_B({BA׎zҞ5`U@ÁU2T
+MQL(M^ʆzVQȨ\&I1~QEĂ6K*+H"DS¡z8G*
+*a)9ͬ?\mD@?,efB쾡_Fӓ&#Ơ?s"Vrm!7쏄bVi=эHZ	XUa{JE}^JepcV쌐/ZUE[%pNZix"BDDN;(j1bz}5HVYEU1pc9_ Ei4e&R5=IK5&*wi,jhFCudͧ.50ojS`UjJRˌShP8R.0Q砲>e7#Qa*э` 8z|A?hR~d2ic4j<1؊s5D_
+kC21B^	YEt;3髪2ra$2Ya#Iv٢.4_ auwO^F:3Q@=g RLe0l~'*mw}#lQpRq:Pzj!ruVht2
+ە9agVy&d9o,FD<p-ILa̵d2K{bC(D&$,,p(*\z0T*|AZq#UњZ/WDB
+>b2zܚnY5o Q<
+łNEާ](=b5YV aUYE_p`~XFRX0QM<§P(n5EFF^bE?_}DMғKu\%ε#;]^RUr0Yr/F6,lԡ#R[%#D&MMP4P(]Oi
+Jl,Llos%TjNL5M
+iל,t\0~lY[bxx!o(fbQ=\k,1l{`R^{me-ȋW͊PjEL)o0]IK,M1T
+0+ۗȩ
+KU$(&0#No6
+Dʠy`'Xot#rUE2d2E],>*?)۫Ē7A2rUM!FtIq3\_uCDDXa$oPaMY%)uؕ0Y-EEѶl3&@Px5.K`mMXkZ1+5%/T7Q$lb7e)hNp6V7+c6z!Xsu5 )F;d&^O=&oI-Z$m]lIIWmv#΁)Lo.+OEN"mRٞɂ*DZpiB'#ޤzr{F4'R͞ҪҞҁ1a悑>gعEUi	<$gQYcaXfJ)HV6" 9<ՉJ9e,+R1sN`b[)k5Dm!ɾ&	Љ^APphȋ?6r˄Iɩ䯲0BH(pfu	{Jfv$=v+P?c`@pq.b&46wgQ$GUI4[?ڟa$J[M6)FQ`M3zDa3beB'a1)򒜎1Cpz4F78i0@ʪvEjB#̮8іԙ.RF $%;mULS϶pJl)4ͺ]ճtfJ''x*-lXOJ饥uNBj-bHuJ/4"#P-DՏSk$'Ɉ'HCH|0y;+$UV.%dwxjFiD9D^geĈ卷cļogDd-<g
+3+s<nSޑ&w䄴t2*|bF^|\(uѤ=|NH+{
+}(/۷~dgؖ
+*A-o-ޛK{{K]20/$i]0A5}ЧVoyiߒ,HsWgvU8ydƅ7K3!&ruW"Ufzo)#[t4'sb !+}D2%,HWKm_]Y
+_$9 j`059,赮2#UpIhMDO}2Lbi}&+\rC崄()+UzNol6w0N9ѣ,o',O8e`̞XnʹP㓥ɿE[3cf
+R#~JZfd_E%e=K]_I)!ײE|ZQSClPC1s?چ̔tY:nZ8̬?1;#-=4(4omRTIa|¦{ yJ9+A2f[$L3Pǐ[
+ohgP.W\&O𘭎מ\9uvm5d/>p qv瀾:RAitdȪEA`806P'#Yw⫵[DGߓ^kY	5vM`CtPL˒nm +Vsdݎ诲/)a>T*ު\P"[%,͜VkS5WK
+!.襆/{KTpBJ$=I8¶3qaXĝҟP_JkS/ɏRΨM87;)e-J1!~i.וq#鵉Gz5&HW}G^I_ۡpNC`[엡4qCQW*XEefL&|~
+&CPhH@+Fk(7j3̈p
+aoՔeWr72 <kF<Q|防b˻˜N"?4Wh/XyIw$DARo؏Dzbgi!3Y6	ح1"b߼h4SP[,WPmkSє#iބ6C!nFsqzc11MnSZ$bf[ZI;@?:e!] 2SL4N,'|ܞ&*[4MOE7!O-nMtRH$;&8uG0l2x֣vIpT
+VMzAudqZ!}QZNp EeWFn#۴=f¬n,<Pt
+DQ˳U'ĬvWva7VcaWͯUIR+-+Gw4kpx5"K٬)Naiz@˾{ʶo8ÕDa;IPdB{k?M^Xb3s.k"-A)	{PmK/Vɢomlfs[7JOٳJ=WԤaf5GR6u{UWwsk:f83'W$NDVj={"Kܦ
+=洄#no}|Ost?v8Xka	a~3f$ٜQ_EtD--JKωAnO7?t88uS[!uۆzft*2I)!(b^.qhmf56rz}%\(I0ө1_af,R@mE2*nVű->_[4y2tjcۗ^zqb^)DB?Qy~{Gyu>g`U$<nEWn-7|ɑ?%=ʔ)1Dlr&~KKi̤U:~l&oHOsuIS{\&XȢ뼃7K
+~%t9qy&&pޯ-+٘CBS}JJߧK K$oi򒲛a8#9=}TR6?ޭS_p*o109u{F]5ZQqU^Vo`e}={$3nK{{;OIyIZ#++f3WAyŵBZTq,loPwϲr;VqVeʇ|T> <T(..2K]ϭ43W[V2yStOm%!KiZmZ,nQ,iXү*ڻD貆e%+'=_4MtL ^^Z̭UT(tI%Յ:~;0S4`@ҞNc<Pנҷ%oUfݍHlC%ޡS(y%鉟j#8EҬ/rHosל.oOqƣ;VwJ\ϰoW(yb4ԟ>U!V@ѽbQ\{1G/UZӷh݀^z74_J|GYn}<6P]b3Jke䵧ԕUڴ@ vz_%h ڀu)2%/~'Һ׽߈2{~ͧ\P_H88+X=~}Sˁ݊7a]oɏ 9/+3++-6<5_Z9*ɲFez]]&_5B9Ւ	cQ⵪quv)\	6WqQG+gYnOPA;;
+Hҝ\@4
+DYWH45h`7kE|HM_UOOzSi]JIVZV%1u!'ϭm_E}JMrJ``h o^O$Y_74Z#[K.{Q^/S$u퓉 dsJZ'{nJϸ$M.%]a-A3nNp_PU#juQp'hB@PaE˻^?tDŶ_adHITn|.?fZ|,q?h`Wx'3:h@vI/-۟.T&ac \]դ!ͤiUV!Hy.vh]Cj{A"*0(Τ1^M.9ܶ}hlQT=CECy_+ԕtԡy'r葚@uv;%|TpKru@zW73nu4|48~=6q RKsҡqBPpX28w҉[^[ҊPJʨþi֨\0Az d_A^+,phDDr^RfrVɅ{JzݓDєv{CpmfMz+U*L[YmsD{ɹsw[ْ{)J>% X{+2vXɡ=s',sBrL,/o|d8Q*".fDFKT4]xQZ_*{}Ʉ̖`/h8^4:㯄]ŚutV[[D*
+F11s21.fA⸌#'鱈u>Jc>4aݱfzʟ*x"0Cڛ0*BÅx8$i^~fJx M4楱7:4&xGȇ8``vyů3RKyKflyÁ%UHA;^ ۛdF|qq
+ePoSVZWze_}%M8Yl5~yֶXIT8L''}aǭ6&x72BRnhl,I~A؝,
